@soroush.tech/design-system 0.1.0

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 (373) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +278 -0
  3. package/dist/AppBar.cjs +71 -0
  4. package/dist/AppBar.d.cts +23 -0
  5. package/dist/AppBar.d.mts +23 -0
  6. package/dist/AppBar.mjs +69 -0
  7. package/dist/Avatar.cjs +106 -0
  8. package/dist/Avatar.d.cts +28 -0
  9. package/dist/Avatar.d.mts +28 -0
  10. package/dist/Avatar.mjs +103 -0
  11. package/dist/Backdrop.cjs +26 -0
  12. package/dist/Backdrop.d.cts +10 -0
  13. package/dist/Backdrop.d.mts +10 -0
  14. package/dist/Backdrop.mjs +25 -0
  15. package/dist/Button.cjs +178 -0
  16. package/dist/Button.d.cts +2 -0
  17. package/dist/Button.d.mts +2 -0
  18. package/dist/Button.mjs +175 -0
  19. package/dist/ButtonGroup.cjs +110 -0
  20. package/dist/ButtonGroup.d.cts +2 -0
  21. package/dist/ButtonGroup.d.mts +2 -0
  22. package/dist/ButtonGroup.mjs +107 -0
  23. package/dist/ButtonGroupContext-DS-kl9lG.mjs +5 -0
  24. package/dist/ButtonGroupContext-NtkVeDVE.cjs +9 -0
  25. package/dist/Card.cjs +95 -0
  26. package/dist/Card.d.cts +18 -0
  27. package/dist/Card.d.mts +18 -0
  28. package/dist/Card.mjs +93 -0
  29. package/dist/Checkbox.cjs +192 -0
  30. package/dist/Checkbox.d.cts +2 -0
  31. package/dist/Checkbox.d.mts +2 -0
  32. package/dist/Checkbox.mjs +190 -0
  33. package/dist/CircularProgress.cjs +136 -0
  34. package/dist/CircularProgress.d.cts +34 -0
  35. package/dist/CircularProgress.d.mts +34 -0
  36. package/dist/CircularProgress.mjs +133 -0
  37. package/dist/CodeBlock.cjs +101 -0
  38. package/dist/CodeBlock.d.cts +2 -0
  39. package/dist/CodeBlock.d.mts +2 -0
  40. package/dist/CodeBlock.mjs +100 -0
  41. package/dist/Drawer.cjs +69 -0
  42. package/dist/Drawer.d.cts +22 -0
  43. package/dist/Drawer.d.mts +22 -0
  44. package/dist/Drawer.mjs +66 -0
  45. package/dist/Field.cjs +59 -0
  46. package/dist/Field.d.cts +36 -0
  47. package/dist/Field.d.mts +36 -0
  48. package/dist/Field.mjs +58 -0
  49. package/dist/Flex.cjs +21 -0
  50. package/dist/Flex.d.cts +2 -0
  51. package/dist/Flex.d.mts +2 -0
  52. package/dist/Flex.mjs +19 -0
  53. package/dist/FocusTrap.cjs +82 -0
  54. package/dist/FocusTrap.d.cts +24 -0
  55. package/dist/FocusTrap.d.mts +24 -0
  56. package/dist/FocusTrap.mjs +81 -0
  57. package/dist/Form.cjs +44 -0
  58. package/dist/Form.d.cts +41 -0
  59. package/dist/Form.d.mts +41 -0
  60. package/dist/Form.mjs +42 -0
  61. package/dist/FormContext-CRmRgDgu.cjs +10 -0
  62. package/dist/FormContext-_G3sxJyQ.mjs +6 -0
  63. package/dist/FormControl.cjs +84 -0
  64. package/dist/FormControl.d.cts +78 -0
  65. package/dist/FormControl.d.mts +78 -0
  66. package/dist/FormControl.mjs +81 -0
  67. package/dist/FormControlContext-CyxdOxdN.mjs +6 -0
  68. package/dist/FormControlContext-aeKTjRKY.cjs +10 -0
  69. package/dist/FormHelperText.cjs +40 -0
  70. package/dist/FormHelperText.d.cts +16 -0
  71. package/dist/FormHelperText.d.mts +16 -0
  72. package/dist/FormHelperText.mjs +39 -0
  73. package/dist/FormLabel.cjs +34 -0
  74. package/dist/FormLabel.d.cts +2 -0
  75. package/dist/FormLabel.d.mts +2 -0
  76. package/dist/FormLabel.mjs +33 -0
  77. package/dist/Grid.cjs +37 -0
  78. package/dist/Grid.d.cts +21 -0
  79. package/dist/Grid.d.mts +21 -0
  80. package/dist/Grid.mjs +32 -0
  81. package/dist/Icon-1YtNCUKo.cjs +755 -0
  82. package/dist/Icon-CAKRmFz3.mjs +742 -0
  83. package/dist/Icon.cjs +4 -0
  84. package/dist/Icon.d.cts +2 -0
  85. package/dist/Icon.d.mts +2 -0
  86. package/dist/Icon.mjs +2 -0
  87. package/dist/Image.cjs +82 -0
  88. package/dist/Image.d.cts +2 -0
  89. package/dist/Image.d.mts +2 -0
  90. package/dist/Image.mjs +80 -0
  91. package/dist/LinearProgress.cjs +217 -0
  92. package/dist/LinearProgress.d.cts +36 -0
  93. package/dist/LinearProgress.d.mts +36 -0
  94. package/dist/LinearProgress.mjs +214 -0
  95. package/dist/Link.cjs +64 -0
  96. package/dist/Link.d.cts +2 -0
  97. package/dist/Link.d.mts +2 -0
  98. package/dist/Link.mjs +62 -0
  99. package/dist/Markdown/Control.cjs +61 -0
  100. package/dist/Markdown/Control.d.cts +18 -0
  101. package/dist/Markdown/Control.d.mts +18 -0
  102. package/dist/Markdown/Control.mjs +60 -0
  103. package/dist/Markdown/Editor.cjs +130 -0
  104. package/dist/Markdown/Editor.d.cts +40 -0
  105. package/dist/Markdown/Editor.d.mts +40 -0
  106. package/dist/Markdown/Editor.mjs +128 -0
  107. package/dist/Markdown/Preview.cjs +241 -0
  108. package/dist/Markdown/Preview.d.cts +55 -0
  109. package/dist/Markdown/Preview.d.mts +55 -0
  110. package/dist/Markdown/Preview.mjs +236 -0
  111. package/dist/Markdown/Toolbar.cjs +4 -0
  112. package/dist/Markdown/Toolbar.d.cts +13 -0
  113. package/dist/Markdown/Toolbar.d.mts +13 -0
  114. package/dist/Markdown/Toolbar.mjs +2 -0
  115. package/dist/Markdown.cjs +13 -0
  116. package/dist/Markdown.d.cts +80 -0
  117. package/dist/Markdown.d.mts +80 -0
  118. package/dist/Markdown.mjs +6 -0
  119. package/dist/MarkdownContext-BN8A3W-J.mjs +11 -0
  120. package/dist/MarkdownContext-DSwjzpH8.cjs +22 -0
  121. package/dist/MenuItem.cjs +150 -0
  122. package/dist/MenuItem.d.cts +51 -0
  123. package/dist/MenuItem.d.mts +51 -0
  124. package/dist/MenuItem.mjs +147 -0
  125. package/dist/Modal-BDMPTSXv.cjs +351 -0
  126. package/dist/Modal-DR60peRg.mjs +327 -0
  127. package/dist/Modal.cjs +6 -0
  128. package/dist/Modal.d.cts +2 -0
  129. package/dist/Modal.d.mts +2 -0
  130. package/dist/Modal.mjs +2 -0
  131. package/dist/NativeSelect.cjs +189 -0
  132. package/dist/NativeSelect.d.cts +62 -0
  133. package/dist/NativeSelect.d.mts +62 -0
  134. package/dist/NativeSelect.mjs +186 -0
  135. package/dist/Pagination/PaginationItem.cjs +116 -0
  136. package/dist/Pagination/PaginationItem.d.cts +2 -0
  137. package/dist/Pagination/PaginationItem.d.mts +2 -0
  138. package/dist/Pagination/PaginationItem.mjs +114 -0
  139. package/dist/Pagination.cjs +134 -0
  140. package/dist/Pagination.d.cts +23 -0
  141. package/dist/Pagination.d.mts +23 -0
  142. package/dist/Pagination.mjs +130 -0
  143. package/dist/Paper.cjs +51 -0
  144. package/dist/Paper.d.cts +2 -0
  145. package/dist/Paper.d.mts +2 -0
  146. package/dist/Paper.mjs +48 -0
  147. package/dist/Popover-B61J7C79.mjs +252 -0
  148. package/dist/Popover-CRDLmywF.cjs +259 -0
  149. package/dist/Popover.cjs +3 -0
  150. package/dist/Popover.d.cts +84 -0
  151. package/dist/Popover.d.mts +84 -0
  152. package/dist/Popover.mjs +2 -0
  153. package/dist/Portal.cjs +20 -0
  154. package/dist/Portal.d.cts +18 -0
  155. package/dist/Portal.d.mts +18 -0
  156. package/dist/Portal.mjs +19 -0
  157. package/dist/Quote.cjs +11 -0
  158. package/dist/Quote.d.cts +2 -0
  159. package/dist/Quote.d.mts +2 -0
  160. package/dist/Quote.mjs +10 -0
  161. package/dist/Radio.cjs +143 -0
  162. package/dist/Radio.d.cts +38 -0
  163. package/dist/Radio.d.mts +38 -0
  164. package/dist/Radio.mjs +141 -0
  165. package/dist/Select.cjs +528 -0
  166. package/dist/Select.d.cts +68 -0
  167. package/dist/Select.d.mts +68 -0
  168. package/dist/Select.mjs +525 -0
  169. package/dist/Skeleton.cjs +82 -0
  170. package/dist/Skeleton.d.cts +21 -0
  171. package/dist/Skeleton.d.mts +21 -0
  172. package/dist/Skeleton.mjs +79 -0
  173. package/dist/Switch.cjs +332 -0
  174. package/dist/Switch.d.cts +40 -0
  175. package/dist/Switch.d.mts +40 -0
  176. package/dist/Switch.mjs +329 -0
  177. package/dist/Table/Table.cjs +65 -0
  178. package/dist/Table/Table.d.cts +2 -0
  179. package/dist/Table/Table.d.mts +2 -0
  180. package/dist/Table/Table.mjs +63 -0
  181. package/dist/Table/TableBody.cjs +42 -0
  182. package/dist/Table/TableBody.d.cts +2 -0
  183. package/dist/Table/TableBody.d.mts +2 -0
  184. package/dist/Table/TableBody.mjs +40 -0
  185. package/dist/Table/TableCell.cjs +93 -0
  186. package/dist/Table/TableCell.d.cts +2 -0
  187. package/dist/Table/TableCell.d.mts +2 -0
  188. package/dist/Table/TableCell.mjs +91 -0
  189. package/dist/Table/TableContainer.cjs +15 -0
  190. package/dist/Table/TableContainer.d.cts +2 -0
  191. package/dist/Table/TableContainer.d.mts +2 -0
  192. package/dist/Table/TableContainer.mjs +14 -0
  193. package/dist/Table/TableControl.cjs +42 -0
  194. package/dist/Table/TableControl.d.cts +2 -0
  195. package/dist/Table/TableControl.d.mts +2 -0
  196. package/dist/Table/TableControl.mjs +41 -0
  197. package/dist/Table/TableFooter.cjs +42 -0
  198. package/dist/Table/TableFooter.d.cts +2 -0
  199. package/dist/Table/TableFooter.d.mts +2 -0
  200. package/dist/Table/TableFooter.mjs +40 -0
  201. package/dist/Table/TableHead.cjs +42 -0
  202. package/dist/Table/TableHead.d.cts +2 -0
  203. package/dist/Table/TableHead.d.mts +2 -0
  204. package/dist/Table/TableHead.mjs +40 -0
  205. package/dist/Table/TablePagination.cjs +89 -0
  206. package/dist/Table/TablePagination.d.cts +2 -0
  207. package/dist/Table/TablePagination.d.mts +2 -0
  208. package/dist/Table/TablePagination.mjs +88 -0
  209. package/dist/Table/TablePaginationActions.cjs +65 -0
  210. package/dist/Table/TablePaginationActions.d.cts +2 -0
  211. package/dist/Table/TablePaginationActions.d.mts +2 -0
  212. package/dist/Table/TablePaginationActions.mjs +63 -0
  213. package/dist/Table/TableRow.cjs +56 -0
  214. package/dist/Table/TableRow.d.cts +2 -0
  215. package/dist/Table/TableRow.d.mts +2 -0
  216. package/dist/Table/TableRow.mjs +54 -0
  217. package/dist/Table/TableSortLabel.cjs +62 -0
  218. package/dist/Table/TableSortLabel.d.cts +2 -0
  219. package/dist/Table/TableSortLabel.d.mts +2 -0
  220. package/dist/Table/TableSortLabel.mjs +60 -0
  221. package/dist/Table/hooks.cjs +112 -0
  222. package/dist/Table/hooks.d.cts +3 -0
  223. package/dist/Table/hooks.d.mts +3 -0
  224. package/dist/Table/hooks.mjs +109 -0
  225. package/dist/Table.cjs +31 -0
  226. package/dist/Table.d.cts +16 -0
  227. package/dist/Table.d.mts +16 -0
  228. package/dist/Table.mjs +15 -0
  229. package/dist/TableContext-2qH7XYJB.d.cts +19 -0
  230. package/dist/TableContext-2qH7XYJB.d.mts +19 -0
  231. package/dist/TableContext-BRWPghAI.mjs +6 -0
  232. package/dist/TableContext-qqp35o8z.cjs +10 -0
  233. package/dist/TableSectionContext-meIG4lFZ.mjs +5 -0
  234. package/dist/TableSectionContext-pYlJ-duI.cjs +9 -0
  235. package/dist/TextInput-6o37Zddp.cjs +231 -0
  236. package/dist/TextInput-D_lHYJlL.mjs +224 -0
  237. package/dist/TextInput.cjs +3 -0
  238. package/dist/TextInput.d.cts +2 -0
  239. package/dist/TextInput.d.mts +2 -0
  240. package/dist/TextInput.mjs +2 -0
  241. package/dist/ThemeProvider.cjs +15 -0
  242. package/dist/ThemeProvider.d.cts +20 -0
  243. package/dist/ThemeProvider.d.mts +20 -0
  244. package/dist/ThemeProvider.mjs +14 -0
  245. package/dist/ToggleButton/ToggleButton.cjs +58 -0
  246. package/dist/ToggleButton/ToggleButton.d.cts +14 -0
  247. package/dist/ToggleButton/ToggleButton.d.mts +14 -0
  248. package/dist/ToggleButton/ToggleButton.mjs +56 -0
  249. package/dist/ToggleButton/ToggleButtonGroup.cjs +54 -0
  250. package/dist/ToggleButton/ToggleButtonGroup.d.cts +23 -0
  251. package/dist/ToggleButton/ToggleButtonGroup.d.mts +23 -0
  252. package/dist/ToggleButton/ToggleButtonGroup.mjs +52 -0
  253. package/dist/ToggleButton.cjs +7 -0
  254. package/dist/ToggleButton.d.cts +4 -0
  255. package/dist/ToggleButton.d.mts +4 -0
  256. package/dist/ToggleButton.mjs +4 -0
  257. package/dist/ToggleButtonGroupContext-CqD-Afho.d.cts +15 -0
  258. package/dist/ToggleButtonGroupContext-CqD-Afho.d.mts +15 -0
  259. package/dist/ToggleButtonGroupContext-DxIyy8ze.mjs +5 -0
  260. package/dist/ToggleButtonGroupContext-Ewc5Ixas.cjs +9 -0
  261. package/dist/Toolbar-B-W22Sk4.cjs +459 -0
  262. package/dist/Toolbar-KbR97iJS.mjs +448 -0
  263. package/dist/Typography.cjs +64 -0
  264. package/dist/Typography.d.cts +3 -0
  265. package/dist/Typography.d.mts +3 -0
  266. package/dist/Typography.mjs +61 -0
  267. package/dist/View.cjs +40 -0
  268. package/dist/View.d.cts +2 -0
  269. package/dist/View.d.mts +2 -0
  270. package/dist/View.mjs +38 -0
  271. package/dist/applyAction-B2B-hnP3.mjs +98 -0
  272. package/dist/applyAction-B2uVHxOE.cjs +103 -0
  273. package/dist/createTheme-Dts2F4R_.d.cts +21 -0
  274. package/dist/createTheme-Dts2F4R_.d.mts +21 -0
  275. package/dist/hooks/useCopyToClipboard.cjs +33 -0
  276. package/dist/hooks/useCopyToClipboard.d.cts +16 -0
  277. package/dist/hooks/useCopyToClipboard.d.mts +16 -0
  278. package/dist/hooks/useCopyToClipboard.mjs +31 -0
  279. package/dist/hooks.cjs +52 -0
  280. package/dist/hooks.d.cts +40 -0
  281. package/dist/hooks.d.mts +40 -0
  282. package/dist/hooks.mjs +41 -0
  283. package/dist/index-4rC2j7fR.d.cts +46 -0
  284. package/dist/index-8dzWTpFp.d.cts +24 -0
  285. package/dist/index-B1rCD6Oo.d.cts +17 -0
  286. package/dist/index-BH8jQOdF.d.mts +46 -0
  287. package/dist/index-BLRMuO_x.d.mts +24 -0
  288. package/dist/index-BLfFycfJ.d.mts +72 -0
  289. package/dist/index-BPrjvi7B.d.cts +13 -0
  290. package/dist/index-BX5-NfbX.d.cts +94 -0
  291. package/dist/index-Bihpwn75.d.cts +64 -0
  292. package/dist/index-BlfIbAMs.d.cts +45 -0
  293. package/dist/index-BnzUumAC2.d.mts +30 -0
  294. package/dist/index-BoqlPb3Z.d.mts +13 -0
  295. package/dist/index-BqVgv2B_.d.mts +42 -0
  296. package/dist/index-Bwi4kRpf.d.mts +79 -0
  297. package/dist/index-Bx24ZnOV.d.mts +43 -0
  298. package/dist/index-C-P_hipv.d.mts +21 -0
  299. package/dist/index-C0xMvDjL.d.mts +49 -0
  300. package/dist/index-C5_ciaeo.d.cts +79 -0
  301. package/dist/index-CDVnvjIE.d.cts +27 -0
  302. package/dist/index-CDcGTGR4.d.cts +21 -0
  303. package/dist/index-CEOZI-6L.d.mts +48 -0
  304. package/dist/index-CLU39rUS2.d.mts +30 -0
  305. package/dist/index-CM_KCTee.d.cts +48 -0
  306. package/dist/index-CT9uGKrs.d.cts +30 -0
  307. package/dist/index-CcYSvIJi.d.cts +21 -0
  308. package/dist/index-CdF_4ckE.d.mts +11 -0
  309. package/dist/index-CeYkEXU2.d.cts +68 -0
  310. package/dist/index-Cl_yBpzW2.d.mts +13 -0
  311. package/dist/index-Cv_UOfYx.d.mts +18 -0
  312. package/dist/index-CxSNNzBT2.d.mts +68 -0
  313. package/dist/index-CyZYXDn0.d.cts +42 -0
  314. package/dist/index-DASvoACZ.d.cts +49 -0
  315. package/dist/index-DBGE6yKw.d.mts +16 -0
  316. package/dist/index-DCQ2fsDu.d.mts +40 -0
  317. package/dist/index-DD2AVtiR.d.cts +16 -0
  318. package/dist/index-DE5PtzPn.d.mts +27 -0
  319. package/dist/index-DOPXpr2J.d.cts +43 -0
  320. package/dist/index-DSCMXFTn.d.cts +30 -0
  321. package/dist/index-DTkQSXQD.d.cts +11 -0
  322. package/dist/index-DeJWkpf9.d.cts +16 -0
  323. package/dist/index-DeiZHSwA.d.cts +12 -0
  324. package/dist/index-Des8BisQ.d.mts +12 -0
  325. package/dist/index-Dg8-CPOO.d.cts +18 -0
  326. package/dist/index-DgRS5Aqv.d.mts +16 -0
  327. package/dist/index-Dm9HfgV6.d.mts +63 -0
  328. package/dist/index-DmJIuQJj.d.mts +24 -0
  329. package/dist/index-Dp81rWM1.d.cts +72 -0
  330. package/dist/index-Dtzj8X58.d.cts +40 -0
  331. package/dist/index-DvW2eETV.d.mts +21 -0
  332. package/dist/index-Dy03o__A.d.mts +94 -0
  333. package/dist/index-FwTocqhP.d.cts +34 -0
  334. package/dist/index-GVsFY00r.d.cts +21 -0
  335. package/dist/index-Nqco3fsM.d.cts +13 -0
  336. package/dist/index-g-9DZ_KQ.d.cts +28 -0
  337. package/dist/index-g9EThkSg.d.mts +21 -0
  338. package/dist/index-kpk9e3xM2.d.mts +45 -0
  339. package/dist/index-pX7tBQdJ.d.mts +34 -0
  340. package/dist/index-u57CbuAU2.d.mts +28 -0
  341. package/dist/index-x80UG39F.d.cts +24 -0
  342. package/dist/index-z35LEYG8.d.mts +17 -0
  343. package/dist/index.cjs +68 -0
  344. package/dist/index.d.cts +4 -0
  345. package/dist/index.d.mts +4 -0
  346. package/dist/index.mjs +3 -0
  347. package/dist/inputVariantStyles-BBkkYQtE.cjs +32 -0
  348. package/dist/inputVariantStyles-CcqpGfuP.mjs +28 -0
  349. package/dist/rolldown-runtime-BBjsoOtd.mjs +27 -0
  350. package/dist/rolldown-runtime-DDXJien1.cjs +50 -0
  351. package/dist/src-BiocWFSR.cjs +60 -0
  352. package/dist/src-DcNT2aIK.mjs +49 -0
  353. package/dist/themeDefault-B-QjpGEO.cjs +16 -0
  354. package/dist/themeDefault-CjXaY3ok.mjs +11 -0
  355. package/dist/themes-D1SAp3SL.d.mts +500 -0
  356. package/dist/themes-D81JYbqm.d.cts +500 -0
  357. package/dist/themes.cjs +318 -0
  358. package/dist/themes.d.cts +3 -0
  359. package/dist/themes.d.mts +3 -0
  360. package/dist/themes.mjs +303 -0
  361. package/dist/useDefaultProps-Cb-5FNok.cjs +19 -0
  362. package/dist/useDefaultProps-CoApb4KT.mjs +14 -0
  363. package/dist/useTableSort--XMWjujs.d.cts +51 -0
  364. package/dist/useTableSort-CpDs4cGq.d.mts +51 -0
  365. package/dist/utils/styleCache.cjs +7 -0
  366. package/dist/utils/styleCache.d.cts +3 -0
  367. package/dist/utils/styleCache.d.mts +4 -0
  368. package/dist/utils/styleCache.mjs +5 -0
  369. package/dist/utils.cjs +65 -0
  370. package/dist/utils.d.cts +39 -0
  371. package/dist/utils.d.mts +39 -0
  372. package/dist/utils.mjs +58 -0
  373. package/package.json +125 -0
@@ -0,0 +1,528 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_src = require("./src-BiocWFSR.cjs");
3
+ const require_themeDefault = require("./themeDefault-B-QjpGEO.cjs");
4
+ const require_Icon = require("./Icon-1YtNCUKo.cjs");
5
+ const require_FormControl = require("./FormControl.cjs");
6
+ const require_NativeSelect = require("./NativeSelect.cjs");
7
+ const require_Popover = require("./Popover-CRDLmywF.cjs");
8
+ let react = require("react");
9
+ let react_jsx_runtime = require("react/jsx-runtime");
10
+ let _soroush_tech_styled_system_should_forward_prop = require("@soroush.tech/styled-system/should-forward-prop");
11
+ let _emotion_react = require("@emotion/react");
12
+ //#region src/Select/hooks/useSelectPopover.ts
13
+ /**
14
+ * Owns `Select`'s open state (controlled or uncontrolled) and fires the open/close
15
+ * callbacks. Positioning is delegated to `Popover`.
16
+ */
17
+ function useSelectPopover({ open: openProp, defaultOpen = false, onOpen, onClose }) {
18
+ const isControlled = openProp !== void 0;
19
+ const [uncontrolledOpen, setUncontrolledOpen] = (0, react.useState)(defaultOpen);
20
+ return {
21
+ open: isControlled ? openProp : uncontrolledOpen,
22
+ openMenu: (0, react.useCallback)(() => {
23
+ if (!isControlled) setUncontrolledOpen(true);
24
+ onOpen?.();
25
+ }, [isControlled, onOpen]),
26
+ closeMenu: (0, react.useCallback)(() => {
27
+ if (!isControlled) setUncontrolledOpen(false);
28
+ onClose?.();
29
+ }, [isControlled, onClose])
30
+ };
31
+ }
32
+ //#endregion
33
+ //#region src/Select/utils/getOptionsFromChildren.ts
34
+ /**
35
+ * Flattens `Select`'s `MenuItem` children into a plain option list. Any child that
36
+ * is not a valid element carrying a `value` prop (e.g. whitespace, `null`) is skipped,
37
+ * so the returned indices line up with the rendered, selectable rows.
38
+ */
39
+ function getOptionsFromChildren(children) {
40
+ return react.Children.toArray(children).flatMap((child) => {
41
+ if (!(0, react.isValidElement)(child)) return [];
42
+ const props = child.props;
43
+ if (props.value === void 0) return [];
44
+ return [{
45
+ value: props.value,
46
+ label: props.children,
47
+ disabled: props.disabled ?? false
48
+ }];
49
+ });
50
+ }
51
+ //#endregion
52
+ //#region src/Select/utils/getNextEnabledIndex.ts
53
+ /**
54
+ * Walks `options` from `from` by `step` (+1 / -1), skipping disabled rows, and
55
+ * returns the first enabled index reached. Stops at the edges (no wrap-around);
56
+ * returns `from` when no enabled option lies in that direction.
57
+ */
58
+ function getNextEnabledIndex(options, from, step) {
59
+ for (let next = from + step; next >= 0 && next < options.length; next += step) if (!options[next].disabled) return next;
60
+ return from;
61
+ }
62
+ /** First (`'first'`) or last (`'last'`) enabled index, or `-1` when every option is disabled. */
63
+ function getEdgeEnabledIndex(options, edge) {
64
+ if (edge === "first") return options.findIndex((option) => !option.disabled);
65
+ for (let index = options.length - 1; index >= 0; index -= 1) if (!options[index].disabled) return index;
66
+ return -1;
67
+ }
68
+ //#endregion
69
+ //#region src/Select/utils/isOptionSelected.ts
70
+ /** True when `optionValue` is the current single value, or is contained in the multiple-mode array. */
71
+ function isOptionSelected(value, optionValue) {
72
+ return Array.isArray(value) ? value.includes(optionValue) : value === optionValue;
73
+ }
74
+ //#endregion
75
+ //#region src/Select/utils/computeNextValue.ts
76
+ /**
77
+ * The value that results from choosing `optionValue`.
78
+ * - Multiple mode: toggles `optionValue` in/out of the array, preserving order.
79
+ * - Single mode: replaces the value outright.
80
+ */
81
+ function computeNextValue(value, optionValue) {
82
+ if (!Array.isArray(value)) return optionValue;
83
+ return value.includes(optionValue) ? value.filter((item) => item !== optionValue) : [...value, optionValue];
84
+ }
85
+ //#endregion
86
+ //#region src/Select/utils/resolveDisplayLabel.ts
87
+ /**
88
+ * The label(s) to show in the trigger for the current `value`, or `null` when nothing
89
+ * is selected (the caller then falls back to the placeholder). Multiple-mode selections
90
+ * are joined in option order with `, `.
91
+ */
92
+ function resolveDisplayLabel(options, value) {
93
+ if (Array.isArray(value)) {
94
+ const selected = options.filter((option) => value.includes(option.value));
95
+ if (selected.length === 0) return null;
96
+ return selected.map((option) => option.label).reduce((acc, label, index) => {
97
+ if (index > 0) acc.push(", ");
98
+ acc.push(label);
99
+ return acc;
100
+ }, []);
101
+ }
102
+ const match = options.find((option) => option.value === value);
103
+ return match ? match.label : null;
104
+ }
105
+ //#endregion
106
+ //#region src/Select/Select.tsx
107
+ const shouldForwardProp = (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)([
108
+ ..._soroush_tech_styled_system_should_forward_prop.props,
109
+ "variant",
110
+ "sizeToken",
111
+ "color",
112
+ "textColor",
113
+ "bg",
114
+ "error",
115
+ "disabled",
116
+ "fullWidth",
117
+ "borderRadius",
118
+ "open"
119
+ ]);
120
+ const baseStyle = ({ theme }) => ({
121
+ position: "relative",
122
+ boxSizing: "border-box",
123
+ display: "inline-flex",
124
+ alignItems: "center",
125
+ justifyContent: "space-between",
126
+ gap: theme.space[1],
127
+ cursor: "pointer",
128
+ outline: "none",
129
+ textAlign: "left",
130
+ transition: "border-color 0.15s ease"
131
+ });
132
+ const variantStyles = (0, require_src.src_exports.variant)({
133
+ prop: "variant",
134
+ variants: {
135
+ outlined: {
136
+ borderRadius: "sq",
137
+ borderWidth: "thin",
138
+ borderStyle: "solid"
139
+ },
140
+ default: {
141
+ borderRadius: "sq",
142
+ borderStyle: "none"
143
+ },
144
+ underline: {
145
+ borderRadius: "sq",
146
+ borderStyle: "none",
147
+ borderBottomWidth: "thin",
148
+ borderBottomStyle: "solid"
149
+ },
150
+ text: {
151
+ borderRadius: "sq",
152
+ borderStyle: "none"
153
+ }
154
+ }
155
+ });
156
+ const borderRadiusStyle = ({ variant: v, borderRadius, theme }) => {
157
+ if (v === "underline" || v === "text" || !borderRadius) return {};
158
+ return { borderRadius: (0, require_src.src_exports.get)(theme, `radii.${borderRadius}`) };
159
+ };
160
+ const colorBorder = ({ color, error, theme }) => ({ borderColor: error ? (0, require_src.src_exports.get)(theme, "palette.error.main") : (0, require_src.src_exports.get)(theme, `palette.${color}.light`) });
161
+ const activeBorder = ({ color, error, open, theme }) => {
162
+ const activeColor = error ? (0, require_src.src_exports.get)(theme, "palette.error.main") : (0, require_src.src_exports.get)(theme, `palette.${color}.main`);
163
+ return {
164
+ ...open ? { borderColor: activeColor } : {},
165
+ "&:focus": { borderColor: activeColor },
166
+ "&:focus-visible": {
167
+ outline: `2px solid ${(0, require_src.src_exports.get)(theme, `palette.${require_themeDefault.themeDefault(theme, "color", "primary")}.main`)}`,
168
+ outlineOffset: "2px"
169
+ }
170
+ };
171
+ };
172
+ const backgroundStyle = ({ color, textColor, bg, variant: v, theme }) => ({
173
+ backgroundColor: v === "text" ? "transparent" : (0, require_src.src_exports.get)(theme, `background.${bg}`),
174
+ color: textColor ? (0, require_src.src_exports.get)(theme, `text.${textColor}`) : (0, require_src.src_exports.get)(theme, `palette.${color}.main`),
175
+ fontFamily: (0, require_src.src_exports.get)(theme, "fonts.body"),
176
+ fontSize: (0, require_src.src_exports.get)(theme, "fontSizes.1"),
177
+ lineHeight: (0, require_src.src_exports.get)(theme, "lineHeights.base")
178
+ });
179
+ const sizeVariants = ({ theme, sizeToken }) => {
180
+ const s = theme.sizes[sizeToken];
181
+ return {
182
+ paddingTop: theme.space[s.paddingTop],
183
+ paddingBottom: theme.space[s.paddingBottom],
184
+ paddingLeft: theme.space[s.paddingLeft],
185
+ paddingRight: theme.space[s.paddingRight],
186
+ fontSize: theme.fontSizes[s.fontSize]
187
+ };
188
+ };
189
+ const layoutStyles = ({ fullWidth, disabled }) => ({
190
+ ...fullWidth ? {
191
+ display: "flex",
192
+ width: "100%"
193
+ } : { alignSelf: "flex-start" },
194
+ ...disabled ? {
195
+ opacity: .5,
196
+ cursor: "not-allowed"
197
+ } : {}
198
+ });
199
+ const Trigger = require_src.styled("div", {
200
+ name: "Select",
201
+ label: "Select",
202
+ shouldForwardProp,
203
+ systemProps: [require_src.src_exports.space, (0, require_src.src_exports.system)({
204
+ width: true,
205
+ minWidth: true,
206
+ maxWidth: true
207
+ })]
208
+ })(baseStyle, variantStyles, borderRadiusStyle, colorBorder, activeBorder, backgroundStyle, sizeVariants, layoutStyles);
209
+ const ValueArea = require_src.styled("span", {
210
+ name: "Select",
211
+ slot: "valueArea",
212
+ label: "SelectValueArea",
213
+ shouldForwardProp: (prop) => prop !== "autoWidth"
214
+ })(({ autoWidth }) => ({
215
+ flex: 1,
216
+ minWidth: 0,
217
+ display: autoWidth ? "block" : "inline-grid",
218
+ "& > *": { gridArea: "1 / 1" }
219
+ }));
220
+ const ValueGhost = require_src.styled("span", {
221
+ name: "Select",
222
+ slot: "valueGhost",
223
+ label: "SelectValueGhost"
224
+ })({
225
+ height: 0,
226
+ overflow: "hidden",
227
+ visibility: "hidden",
228
+ display: "flex",
229
+ flexDirection: "column",
230
+ "& > span": { whiteSpace: "nowrap" }
231
+ });
232
+ const TriggerValue = require_src.styled("span", {
233
+ name: "Select",
234
+ slot: "value",
235
+ label: "SelectValue"
236
+ })({
237
+ minWidth: 0,
238
+ overflow: "hidden",
239
+ textOverflow: "ellipsis",
240
+ whiteSpace: "nowrap"
241
+ });
242
+ const ListBox = require_src.styled("ul", {
243
+ name: "Select",
244
+ slot: "listbox",
245
+ label: "SelectListbox"
246
+ })(({ theme }) => ({
247
+ margin: 0,
248
+ padding: `${theme.space[1]} 0`,
249
+ width: "100%",
250
+ maxHeight: "16rem",
251
+ overflowY: "auto",
252
+ listStyle: "none"
253
+ }));
254
+ function Select({ children, native = false, multiple = false, autoWidth = false, value: valueProp, defaultValue, onChange, open: openProp, defaultOpen, onOpen, onClose, placeholder, renderValue, borderRadius, color: colorProp, textColor: textColorProp, bg: bgProp, disabled: disabledProp, error: errorProp, fullWidth: fullWidthProp, required: requiredProp, size: sizeProp, variant: variantProp, iconName, iconProps, id: idProp, name, labelId, "aria-label": ariaLabel, className, "data-testid": dataTestid, ...spaceProps }) {
255
+ const fc = require_FormControl.useFormControl({
256
+ id: idProp,
257
+ error: errorProp,
258
+ disabled: disabledProp,
259
+ required: requiredProp,
260
+ size: sizeProp,
261
+ fullWidth: fullWidthProp,
262
+ color: colorProp,
263
+ textColor: textColorProp
264
+ });
265
+ const { id, error, disabled, required, size, fullWidth } = fc;
266
+ const theme = (0, _emotion_react.useTheme)();
267
+ const color = fc.color ?? require_themeDefault.themeDefault(theme, "color", "primary");
268
+ const bg = bgProp ?? require_themeDefault.themeDefault(theme, "inputBg", "terminal");
269
+ const variant = variantProp ?? require_themeDefault.themeDefault(theme, "inputVariant", "default");
270
+ const textColor = fc.textColor;
271
+ const options = getOptionsFromChildren(children);
272
+ const isControlledValue = valueProp !== void 0;
273
+ const [internalValue, setInternalValue] = (0, react.useState)(defaultValue ?? (multiple ? [] : ""));
274
+ const rawValue = isControlledValue ? valueProp : internalValue;
275
+ const value = multiple ? Array.isArray(rawValue) ? rawValue : [] : Array.isArray(rawValue) ? "" : rawValue;
276
+ if (native) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_NativeSelect.NativeSelect, {
277
+ options: options.map((option) => ({
278
+ value: option.value,
279
+ label: typeof option.label === "string" ? option.label : String(option.label)
280
+ })),
281
+ value: Array.isArray(valueProp) ? void 0 : valueProp,
282
+ defaultValue: Array.isArray(defaultValue) ? void 0 : defaultValue,
283
+ onChange,
284
+ placeholder,
285
+ borderRadius,
286
+ color: colorProp,
287
+ textColor: textColorProp,
288
+ bg,
289
+ disabled: disabledProp,
290
+ error: errorProp,
291
+ fullWidth: fullWidthProp,
292
+ required: requiredProp,
293
+ size: sizeProp,
294
+ variant,
295
+ iconName,
296
+ iconProps,
297
+ id: idProp,
298
+ name,
299
+ className,
300
+ "data-testid": dataTestid,
301
+ ...spaceProps
302
+ });
303
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NonNativeSelect, {
304
+ options,
305
+ value,
306
+ onChangeValue: (next) => {
307
+ if (!isControlledValue) setInternalValue(next);
308
+ onChange?.(next);
309
+ },
310
+ multiple,
311
+ autoWidth,
312
+ openProp,
313
+ defaultOpen,
314
+ onOpen,
315
+ onClose,
316
+ placeholder,
317
+ renderValue,
318
+ borderRadius,
319
+ color,
320
+ textColor,
321
+ bg,
322
+ error,
323
+ disabled,
324
+ required,
325
+ fullWidth,
326
+ size,
327
+ variant,
328
+ iconName,
329
+ iconProps,
330
+ id,
331
+ name,
332
+ labelId,
333
+ ariaLabel,
334
+ ariaDescribedby: fc["aria-describedby"],
335
+ className,
336
+ dataTestid,
337
+ spaceProps,
338
+ children
339
+ });
340
+ }
341
+ function NonNativeSelect({ children, options, value, autoWidth, onChangeValue, multiple, openProp, defaultOpen, onOpen, onClose, placeholder, renderValue, borderRadius, color, textColor, bg, error, disabled, required, fullWidth, size, variant: variantProp, iconName, iconProps, id, name, labelId, ariaLabel, ariaDescribedby, className, dataTestid, spaceProps }) {
342
+ const [anchorEl, setAnchorEl] = (0, react.useState)(null);
343
+ const listboxId = `${(0, react.useId)()}-listbox`;
344
+ const { open, openMenu, closeMenu } = useSelectPopover({
345
+ open: openProp,
346
+ defaultOpen,
347
+ onOpen,
348
+ onClose
349
+ });
350
+ const [highlightedIndex, setHighlightedIndex] = (0, react.useState)(-1);
351
+ const getInitialHighlight = () => {
352
+ if (!Array.isArray(value)) {
353
+ const current = options.findIndex((option) => option.value === value && !option.disabled);
354
+ if (current !== -1) return current;
355
+ }
356
+ return getEdgeEnabledIndex(options, "first");
357
+ };
358
+ const openWithHighlight = () => {
359
+ setHighlightedIndex(getInitialHighlight());
360
+ openMenu();
361
+ };
362
+ const selectValue = (optionValue) => {
363
+ onChangeValue(computeNextValue(value, optionValue));
364
+ setHighlightedIndex(options.findIndex((option) => option.value === optionValue));
365
+ if (!multiple) closeMenu();
366
+ };
367
+ const selectHighlighted = () => {
368
+ const option = options[highlightedIndex];
369
+ if (option && !option.disabled) selectValue(option.value);
370
+ };
371
+ const moveHighlight = (step) => {
372
+ if (open) setHighlightedIndex((index) => getNextEnabledIndex(options, index, step));
373
+ else openWithHighlight();
374
+ };
375
+ const handleKeyDown = (event) => {
376
+ if (disabled) return;
377
+ switch (event.key) {
378
+ case "ArrowDown":
379
+ event.preventDefault();
380
+ moveHighlight(1);
381
+ break;
382
+ case "ArrowUp":
383
+ event.preventDefault();
384
+ moveHighlight(-1);
385
+ break;
386
+ case "Home":
387
+ if (open) {
388
+ event.preventDefault();
389
+ setHighlightedIndex(getEdgeEnabledIndex(options, "first"));
390
+ }
391
+ break;
392
+ case "End":
393
+ if (open) {
394
+ event.preventDefault();
395
+ setHighlightedIndex(getEdgeEnabledIndex(options, "last"));
396
+ }
397
+ break;
398
+ case "Enter":
399
+ case " ":
400
+ event.preventDefault();
401
+ if (open) selectHighlighted();
402
+ else openWithHighlight();
403
+ break;
404
+ case "Escape":
405
+ if (open) {
406
+ event.preventDefault();
407
+ closeMenu();
408
+ }
409
+ break;
410
+ default: break;
411
+ }
412
+ };
413
+ const handleTriggerClick = () => {
414
+ if (disabled) return;
415
+ if (open) closeMenu();
416
+ else openWithHighlight();
417
+ };
418
+ const handleBlur = () => {
419
+ if (open) closeMenu();
420
+ };
421
+ const display = renderValue ? renderValue(value) : resolveDisplayLabel(options, value);
422
+ const showPlaceholder = !renderValue && resolveDisplayLabel(options, value) === null;
423
+ const activeDescendant = open && highlightedIndex >= 0 ? `${listboxId}-option-${highlightedIndex}` : void 0;
424
+ const childArray = react.Children.toArray(children);
425
+ const isOptionChild = (child) => (0, react.isValidElement)(child) && child.props.value !== void 0;
426
+ const renderedItems = childArray.map((child, position) => {
427
+ if (!isOptionChild(child)) return child;
428
+ const index = childArray.slice(0, position).filter(isOptionChild).length;
429
+ const option = options[index];
430
+ const childProps = child.props;
431
+ return (0, react.cloneElement)(child, {
432
+ id: `${listboxId}-option-${index}`,
433
+ selected: isOptionSelected(value, option.value),
434
+ highlighted: index === highlightedIndex,
435
+ multiple,
436
+ size,
437
+ color: childProps.color ?? color,
438
+ textColor: childProps.textColor ?? textColor,
439
+ onSelect: selectValue
440
+ });
441
+ });
442
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
443
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Trigger, {
444
+ ref: setAnchorEl,
445
+ role: "combobox",
446
+ tabIndex: disabled ? -1 : 0,
447
+ "aria-haspopup": "listbox",
448
+ "aria-expanded": open,
449
+ "aria-controls": open ? listboxId : void 0,
450
+ "aria-activedescendant": activeDescendant,
451
+ "aria-labelledby": labelId,
452
+ "aria-label": ariaLabel,
453
+ "aria-describedby": ariaDescribedby,
454
+ "aria-invalid": error || void 0,
455
+ "aria-required": required || void 0,
456
+ "aria-disabled": disabled || void 0,
457
+ variant: variantProp,
458
+ sizeToken: size,
459
+ color,
460
+ textColor,
461
+ bg,
462
+ error,
463
+ disabled,
464
+ fullWidth,
465
+ borderRadius,
466
+ open,
467
+ id,
468
+ className,
469
+ "data-testid": dataTestid,
470
+ onClick: handleTriggerClick,
471
+ onKeyDown: handleKeyDown,
472
+ onBlur: handleBlur,
473
+ ...spaceProps,
474
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ValueArea, {
475
+ autoWidth,
476
+ children: [!autoWidth && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ValueGhost, {
477
+ "aria-hidden": true,
478
+ children: [options.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: option.label }, String(option.value))), placeholder !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: placeholder })]
479
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TriggerValue, { children: showPlaceholder ? placeholder ?? "​" : display })]
480
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
481
+ name: iconName ?? (open ? "expand_less" : "expand_more"),
482
+ size: "1.25rem",
483
+ color: "secondary",
484
+ ...iconProps
485
+ })]
486
+ }),
487
+ name !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
488
+ type: "hidden",
489
+ name,
490
+ value: Array.isArray(value) ? value.join(",") : String(value)
491
+ }),
492
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Popover.Popover, {
493
+ open,
494
+ anchorEl,
495
+ anchorOrigin: {
496
+ vertical: "bottom",
497
+ horizontal: "left"
498
+ },
499
+ transformOrigin: {
500
+ vertical: "top",
501
+ horizontal: "left"
502
+ },
503
+ onClose: closeMenu,
504
+ disableScrollLock: true,
505
+ disableAriaHidden: true,
506
+ shouldAutoFocus: false,
507
+ shouldTrapFocus: false,
508
+ shouldEnforceFocus: false,
509
+ shouldRestoreFocus: false,
510
+ slotProps: { paper: {
511
+ p: 0,
512
+ bg,
513
+ borderRadius,
514
+ style: { minWidth: anchorEl?.offsetWidth }
515
+ } },
516
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ListBox, {
517
+ role: "listbox",
518
+ id: listboxId,
519
+ "aria-multiselectable": multiple || void 0,
520
+ "aria-labelledby": labelId,
521
+ onMouseDown: (event) => event.preventDefault(),
522
+ children: renderedItems
523
+ })
524
+ })
525
+ ] });
526
+ }
527
+ //#endregion
528
+ exports.Select = Select;
@@ -0,0 +1,68 @@
1
+ import { l as index_d_exports, o as Theme } from "./index-Bihpwn75.cjs";
2
+ import { n as IconProps, r as IconName } from "./index-Dp81rWM1.cjs";
3
+ import { ReactNode } from "react";
4
+ //#region src/Select/utils/isOptionSelected.d.ts
5
+ /** The union of value shapes `Select` holds: a single value, or an array in multiple mode. */
6
+ type SelectValue = string | number | Array<string | number>;
7
+ //#endregion
8
+ //#region src/Select/Select.d.ts
9
+ type SelectColor = keyof Theme['palette'];
10
+ type SelectTextColor = keyof Theme['text'];
11
+ type SelectBackgroundToken = keyof Theme['background'];
12
+ type SelectVariant = 'default' | 'outlined' | 'text' | 'underline';
13
+ type SelectSize = keyof Theme['sizes'];
14
+ interface SelectProps extends index_d_exports.SpaceProps<Theme>, Pick<index_d_exports.LayoutProps<Theme>, 'width' | 'minWidth' | 'maxWidth'> {
15
+ /** `MenuItem` children — one per option. */
16
+ children: ReactNode;
17
+ /** Render a native `<select>` (delegates to `NativeSelect`, single-select) instead of the custom listbox. */
18
+ native?: boolean;
19
+ /** Allow selecting several options — `value` becomes an array. Ignored on the native path. */
20
+ multiple?: boolean;
21
+ /** Size the trigger to the current selection instead of reserving the widest option's width. When `false` (default) the trigger keeps a stable width, avoiding layout shift on selection. */
22
+ autoWidth?: boolean;
23
+ /** Controlled value — a single option value, or an array when `multiple`. */
24
+ value?: SelectValue;
25
+ /** Uncontrolled initial value. */
26
+ defaultValue?: SelectValue;
27
+ /** Fired with the next value whenever the selection changes. */
28
+ onChange?: (value: SelectValue) => void;
29
+ /** Controlled open state of the listbox. */
30
+ open?: boolean;
31
+ /** Uncontrolled initial open state. */
32
+ defaultOpen?: boolean;
33
+ onOpen?: () => void;
34
+ onClose?: () => void;
35
+ /** Empty-state label shown in the trigger while nothing is selected. */
36
+ placeholder?: string;
37
+ /** Override the trigger's rendered content for the current value. */
38
+ renderValue?: (value: SelectValue) => ReactNode;
39
+ /** Corner radius — applies only to `default` and `outlined` variants. */
40
+ borderRadius?: keyof Theme['radii'];
41
+ /** Focus/active border color — resolves to `theme.palette[color].main`. Default: 'primary', overridable via `theme.defaults.color`. */
42
+ color?: SelectColor;
43
+ /** Text color of the trigger value — resolves against `theme.text`. Default: 'primary', overridable via `theme.defaults.accentTextColor`. */
44
+ textColor?: SelectTextColor;
45
+ /** Background color — resolves against `theme.background`. Default: `'terminal'`. */
46
+ bg?: SelectBackgroundToken;
47
+ disabled?: boolean;
48
+ error?: boolean;
49
+ fullWidth?: boolean;
50
+ required?: boolean;
51
+ /** Controls padding and font size. Default: 'md', overridable via `theme.defaults.size`. */
52
+ size?: SelectSize;
53
+ /** Visual style — mirrors `TextInput`/`NativeSelect`. Default: `'default'`. */
54
+ variant?: SelectVariant;
55
+ /** Dropdown affordance icon. Default: `'expand_more'` / `'expand_less'` when open. */
56
+ iconName?: IconName;
57
+ iconProps?: Omit<IconProps, 'name'>;
58
+ id?: string;
59
+ name?: string;
60
+ /** Labels the trigger for assistive tech (id of a visible label element). */
61
+ labelId?: string;
62
+ 'aria-label'?: string;
63
+ className?: string;
64
+ 'data-testid'?: string;
65
+ }
66
+ declare function Select({ children, native, multiple, autoWidth, value: valueProp, defaultValue, onChange, open: openProp, defaultOpen, onOpen, onClose, placeholder, renderValue, borderRadius, color: colorProp, textColor: textColorProp, bg: bgProp, disabled: disabledProp, error: errorProp, fullWidth: fullWidthProp, required: requiredProp, size: sizeProp, variant: variantProp, iconName, iconProps, id: idProp, name, labelId, 'aria-label': ariaLabel, className, 'data-testid': dataTestid, ...spaceProps }: Readonly<SelectProps>): import("react").JSX.Element;
67
+ //#endregion
68
+ export { Select, SelectBackgroundToken, SelectColor, SelectProps, SelectSize, SelectTextColor, type SelectValue, SelectVariant };
@@ -0,0 +1,68 @@
1
+ import { l as index_d_exports, o as Theme } from "./index-Dm9HfgV6.mjs";
2
+ import { n as IconProps, r as IconName } from "./index-BLfFycfJ.mjs";
3
+ import { ReactNode } from "react";
4
+ //#region src/Select/utils/isOptionSelected.d.ts
5
+ /** The union of value shapes `Select` holds: a single value, or an array in multiple mode. */
6
+ type SelectValue = string | number | Array<string | number>;
7
+ //#endregion
8
+ //#region src/Select/Select.d.ts
9
+ type SelectColor = keyof Theme['palette'];
10
+ type SelectTextColor = keyof Theme['text'];
11
+ type SelectBackgroundToken = keyof Theme['background'];
12
+ type SelectVariant = 'default' | 'outlined' | 'text' | 'underline';
13
+ type SelectSize = keyof Theme['sizes'];
14
+ interface SelectProps extends index_d_exports.SpaceProps<Theme>, Pick<index_d_exports.LayoutProps<Theme>, 'width' | 'minWidth' | 'maxWidth'> {
15
+ /** `MenuItem` children — one per option. */
16
+ children: ReactNode;
17
+ /** Render a native `<select>` (delegates to `NativeSelect`, single-select) instead of the custom listbox. */
18
+ native?: boolean;
19
+ /** Allow selecting several options — `value` becomes an array. Ignored on the native path. */
20
+ multiple?: boolean;
21
+ /** Size the trigger to the current selection instead of reserving the widest option's width. When `false` (default) the trigger keeps a stable width, avoiding layout shift on selection. */
22
+ autoWidth?: boolean;
23
+ /** Controlled value — a single option value, or an array when `multiple`. */
24
+ value?: SelectValue;
25
+ /** Uncontrolled initial value. */
26
+ defaultValue?: SelectValue;
27
+ /** Fired with the next value whenever the selection changes. */
28
+ onChange?: (value: SelectValue) => void;
29
+ /** Controlled open state of the listbox. */
30
+ open?: boolean;
31
+ /** Uncontrolled initial open state. */
32
+ defaultOpen?: boolean;
33
+ onOpen?: () => void;
34
+ onClose?: () => void;
35
+ /** Empty-state label shown in the trigger while nothing is selected. */
36
+ placeholder?: string;
37
+ /** Override the trigger's rendered content for the current value. */
38
+ renderValue?: (value: SelectValue) => ReactNode;
39
+ /** Corner radius — applies only to `default` and `outlined` variants. */
40
+ borderRadius?: keyof Theme['radii'];
41
+ /** Focus/active border color — resolves to `theme.palette[color].main`. Default: 'primary', overridable via `theme.defaults.color`. */
42
+ color?: SelectColor;
43
+ /** Text color of the trigger value — resolves against `theme.text`. Default: 'primary', overridable via `theme.defaults.accentTextColor`. */
44
+ textColor?: SelectTextColor;
45
+ /** Background color — resolves against `theme.background`. Default: `'terminal'`. */
46
+ bg?: SelectBackgroundToken;
47
+ disabled?: boolean;
48
+ error?: boolean;
49
+ fullWidth?: boolean;
50
+ required?: boolean;
51
+ /** Controls padding and font size. Default: 'md', overridable via `theme.defaults.size`. */
52
+ size?: SelectSize;
53
+ /** Visual style — mirrors `TextInput`/`NativeSelect`. Default: `'default'`. */
54
+ variant?: SelectVariant;
55
+ /** Dropdown affordance icon. Default: `'expand_more'` / `'expand_less'` when open. */
56
+ iconName?: IconName;
57
+ iconProps?: Omit<IconProps, 'name'>;
58
+ id?: string;
59
+ name?: string;
60
+ /** Labels the trigger for assistive tech (id of a visible label element). */
61
+ labelId?: string;
62
+ 'aria-label'?: string;
63
+ className?: string;
64
+ 'data-testid'?: string;
65
+ }
66
+ declare function Select({ children, native, multiple, autoWidth, value: valueProp, defaultValue, onChange, open: openProp, defaultOpen, onOpen, onClose, placeholder, renderValue, borderRadius, color: colorProp, textColor: textColorProp, bg: bgProp, disabled: disabledProp, error: errorProp, fullWidth: fullWidthProp, required: requiredProp, size: sizeProp, variant: variantProp, iconName, iconProps, id: idProp, name, labelId, 'aria-label': ariaLabel, className, 'data-testid': dataTestid, ...spaceProps }: Readonly<SelectProps>): import("react").JSX.Element;
67
+ //#endregion
68
+ export { Select, SelectBackgroundToken, SelectColor, SelectProps, SelectSize, SelectTextColor, type SelectValue, SelectVariant };