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

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 (457) hide show
  1. package/README.md +66 -40
  2. package/dist/Accordion/Accordion.cjs +100 -0
  3. package/dist/Accordion/Accordion.d.cts +41 -0
  4. package/dist/Accordion/Accordion.d.mts +41 -0
  5. package/dist/Accordion/Accordion.mjs +98 -0
  6. package/dist/Accordion/AccordionActions.cjs +29 -0
  7. package/dist/Accordion/AccordionActions.d.cts +12 -0
  8. package/dist/Accordion/AccordionActions.d.mts +12 -0
  9. package/dist/Accordion/AccordionActions.mjs +27 -0
  10. package/dist/Accordion/AccordionDetails.cjs +23 -0
  11. package/dist/Accordion/AccordionDetails.d.cts +12 -0
  12. package/dist/Accordion/AccordionDetails.d.mts +12 -0
  13. package/dist/Accordion/AccordionDetails.mjs +21 -0
  14. package/dist/Accordion/AccordionGroup.cjs +79 -0
  15. package/dist/Accordion/AccordionGroup.d.cts +24 -0
  16. package/dist/Accordion/AccordionGroup.d.mts +24 -0
  17. package/dist/Accordion/AccordionGroup.mjs +77 -0
  18. package/dist/Accordion/AccordionSummary.cjs +99 -0
  19. package/dist/Accordion/AccordionSummary.d.cts +21 -0
  20. package/dist/Accordion/AccordionSummary.d.mts +21 -0
  21. package/dist/Accordion/AccordionSummary.mjs +97 -0
  22. package/dist/Accordion.cjs +11 -0
  23. package/dist/Accordion.d.cts +6 -0
  24. package/dist/Accordion.d.mts +6 -0
  25. package/dist/Accordion.mjs +6 -0
  26. package/dist/AccordionContext-B2TCl9Os.cjs +44 -0
  27. package/dist/AccordionContext-DDk_i9Dx.mjs +15 -0
  28. package/dist/Alert/Alert.cjs +154 -0
  29. package/dist/Alert/Alert.d.cts +37 -0
  30. package/dist/Alert/Alert.d.mts +37 -0
  31. package/dist/Alert/Alert.mjs +152 -0
  32. package/dist/Alert/AlertTitle.cjs +21 -0
  33. package/dist/Alert/AlertTitle.d.cts +12 -0
  34. package/dist/Alert/AlertTitle.d.mts +12 -0
  35. package/dist/Alert/AlertTitle.mjs +20 -0
  36. package/dist/Alert.cjs +5 -0
  37. package/dist/Alert.d.cts +3 -0
  38. package/dist/Alert.d.mts +3 -0
  39. package/dist/Alert.mjs +3 -0
  40. package/dist/AppBar.cjs +1 -1
  41. package/dist/AppBar.d.cts +1 -1
  42. package/dist/AppBar.d.mts +1 -1
  43. package/dist/AppBar.mjs +1 -1
  44. package/dist/Autocomplete.cjs +666 -0
  45. package/dist/Autocomplete.d.cts +97 -0
  46. package/dist/Autocomplete.d.mts +97 -0
  47. package/dist/Autocomplete.mjs +664 -0
  48. package/dist/Avatar.cjs +2 -2
  49. package/dist/Avatar.d.cts +1 -1
  50. package/dist/Avatar.d.mts +1 -1
  51. package/dist/Avatar.mjs +2 -2
  52. package/dist/Backdrop.d.cts +1 -1
  53. package/dist/Backdrop.d.mts +1 -1
  54. package/dist/Badge.cjs +130 -0
  55. package/dist/Badge.d.cts +45 -0
  56. package/dist/Badge.d.mts +45 -0
  57. package/dist/Badge.mjs +128 -0
  58. package/dist/Breadcrumbs.cjs +2 -2
  59. package/dist/Breadcrumbs.d.cts +3 -3
  60. package/dist/Breadcrumbs.d.mts +3 -3
  61. package/dist/Breadcrumbs.mjs +2 -2
  62. package/dist/Button.cjs +6 -3
  63. package/dist/Button.d.cts +1 -1
  64. package/dist/Button.d.mts +1 -1
  65. package/dist/Button.mjs +6 -3
  66. package/dist/ButtonGroup.cjs +1 -1
  67. package/dist/ButtonGroup.d.cts +1 -1
  68. package/dist/ButtonGroup.d.mts +1 -1
  69. package/dist/ButtonGroup.mjs +1 -1
  70. package/dist/Card.cjs +2 -2
  71. package/dist/Card.d.cts +4 -4
  72. package/dist/Card.d.mts +4 -4
  73. package/dist/Card.mjs +2 -2
  74. package/dist/Checkbox.cjs +13 -3
  75. package/dist/Checkbox.d.cts +4 -2
  76. package/dist/Checkbox.d.mts +4 -2
  77. package/dist/Checkbox.mjs +13 -3
  78. package/dist/Chip.cjs +194 -0
  79. package/dist/Chip.d.cts +49 -0
  80. package/dist/Chip.d.mts +49 -0
  81. package/dist/Chip.mjs +192 -0
  82. package/dist/CircularProgress.cjs +1 -1
  83. package/dist/CircularProgress.d.cts +2 -2
  84. package/dist/CircularProgress.d.mts +2 -2
  85. package/dist/CircularProgress.mjs +1 -1
  86. package/dist/Collapse.cjs +126 -0
  87. package/dist/Collapse.d.cts +2 -0
  88. package/dist/Collapse.d.mts +2 -0
  89. package/dist/Collapse.mjs +124 -0
  90. package/dist/Drawer.d.cts +3 -3
  91. package/dist/Drawer.d.mts +3 -3
  92. package/dist/Fab.cjs +114 -0
  93. package/dist/Fab.d.cts +2 -0
  94. package/dist/Fab.d.mts +2 -0
  95. package/dist/Fab.mjs +113 -0
  96. package/dist/FabMenu/FabMenu.cjs +3 -0
  97. package/dist/FabMenu/FabMenu.d.cts +53 -0
  98. package/dist/FabMenu/FabMenu.d.mts +53 -0
  99. package/dist/FabMenu/FabMenu.mjs +2 -0
  100. package/dist/FabMenu/FabMenuItem.cjs +28 -0
  101. package/dist/FabMenu/FabMenuItem.d.cts +19 -0
  102. package/dist/FabMenu/FabMenuItem.d.mts +19 -0
  103. package/dist/FabMenu/FabMenuItem.mjs +27 -0
  104. package/dist/FabMenu-BDfkT_zt.mjs +273 -0
  105. package/dist/FabMenu-RiVtzrKe.cjs +279 -0
  106. package/dist/FabMenu.cjs +5 -0
  107. package/dist/FabMenu.d.cts +3 -0
  108. package/dist/FabMenu.d.mts +3 -0
  109. package/dist/FabMenu.mjs +3 -0
  110. package/dist/FabMenuContext-BZslb0lL.cjs +22 -0
  111. package/dist/FabMenuContext-D-XlDbLl.mjs +11 -0
  112. package/dist/Fade.cjs +17 -0
  113. package/dist/Fade.d.cts +11 -0
  114. package/dist/Fade.d.mts +11 -0
  115. package/dist/Fade.mjs +16 -0
  116. package/dist/Flex.d.cts +1 -1
  117. package/dist/Flex.d.mts +1 -1
  118. package/dist/Form.d.cts +1 -1
  119. package/dist/Form.d.mts +1 -1
  120. package/dist/FormControl.cjs +14 -4
  121. package/dist/FormControl.d.cts +9 -1
  122. package/dist/FormControl.d.mts +9 -1
  123. package/dist/FormControl.mjs +14 -4
  124. package/dist/FormHelperText.cjs +1 -1
  125. package/dist/FormHelperText.d.cts +1 -1
  126. package/dist/FormHelperText.d.mts +1 -1
  127. package/dist/FormHelperText.mjs +1 -1
  128. package/dist/FormLabel.cjs +13 -2
  129. package/dist/FormLabel.d.cts +2 -2
  130. package/dist/FormLabel.d.mts +2 -2
  131. package/dist/FormLabel.mjs +14 -3
  132. package/dist/Grid.d.cts +1 -1
  133. package/dist/Grid.d.mts +1 -1
  134. package/dist/Grow.cjs +21 -0
  135. package/dist/Grow.d.cts +11 -0
  136. package/dist/Grow.d.mts +11 -0
  137. package/dist/Grow.mjs +20 -0
  138. package/dist/{Icon-DlheCTJb.mjs → Icon-0hPpk-WZ.mjs} +71 -1
  139. package/dist/{Icon-Cvuhp9ek.cjs → Icon-BE7bRsqR.cjs} +71 -1
  140. package/dist/Icon.cjs +1 -1
  141. package/dist/Icon.d.cts +1 -1
  142. package/dist/Icon.d.mts +1 -1
  143. package/dist/Icon.mjs +1 -1
  144. package/dist/Image.d.cts +1 -1
  145. package/dist/Image.d.mts +1 -1
  146. package/dist/LinearProgress.cjs +1 -1
  147. package/dist/LinearProgress.d.cts +2 -2
  148. package/dist/LinearProgress.d.mts +2 -2
  149. package/dist/LinearProgress.mjs +1 -1
  150. package/dist/Link.cjs +3 -3
  151. package/dist/Link.d.cts +1 -1
  152. package/dist/Link.d.mts +1 -1
  153. package/dist/Link.mjs +3 -3
  154. package/dist/Menu/ContextMenu.cjs +6 -4
  155. package/dist/Menu/ContextMenu.d.cts +8 -6
  156. package/dist/Menu/ContextMenu.d.mts +8 -6
  157. package/dist/Menu/ContextMenu.mjs +6 -4
  158. package/dist/Menu/Menu.cjs +1 -1
  159. package/dist/Menu/Menu.d.cts +1 -1
  160. package/dist/Menu/Menu.d.mts +1 -1
  161. package/dist/Menu/Menu.mjs +1 -1
  162. package/dist/Menu/MenuItems.cjs +1 -1
  163. package/dist/Menu/MenuItems.d.cts +1 -1
  164. package/dist/Menu/MenuItems.d.mts +1 -1
  165. package/dist/Menu/MenuItems.mjs +1 -1
  166. package/dist/Menu/MenuList.cjs +1 -1
  167. package/dist/Menu/MenuList.d.cts +2 -2
  168. package/dist/Menu/MenuList.d.mts +2 -2
  169. package/dist/Menu/MenuList.mjs +1 -1
  170. package/dist/{Menu-tECbAEFj.mjs → Menu-CnG4ikZd.mjs} +7 -4
  171. package/dist/{Menu-BkKPTOfh.cjs → Menu-DXLjR9ga.cjs} +8 -5
  172. package/dist/Menu.cjs +2 -2
  173. package/dist/Menu.d.cts +3 -3
  174. package/dist/Menu.d.mts +3 -3
  175. package/dist/Menu.mjs +2 -2
  176. package/dist/{MenuItem-BR7ingQx.mjs → MenuItem-C21eR7d6.mjs} +42 -86
  177. package/dist/{MenuItem-CfdN4axw.cjs → MenuItem-EJ4u73f0.cjs} +42 -92
  178. package/dist/MenuItem.cjs +1 -1
  179. package/dist/MenuItem.d.cts +1 -1
  180. package/dist/MenuItem.d.mts +1 -1
  181. package/dist/MenuItem.mjs +1 -1
  182. package/dist/{MenuList-D4imLXAa.cjs → MenuList-BBAYeUvD.cjs} +1 -1
  183. package/dist/{MenuList-B7msJ1IG.mjs → MenuList-Cz3cupC3.mjs} +1 -1
  184. package/dist/{MenuListContext-Dml16k0X.d.mts → MenuListContext-BWL5fM_L.d.mts} +2 -2
  185. package/dist/{MenuListContext-vujGcRk9.d.cts → MenuListContext-BrCKLgKZ.d.cts} +2 -2
  186. package/dist/{Modal-BcsyrrpH.mjs → Modal-CEHDej-v.mjs} +3 -22
  187. package/dist/{Modal-CM3osOqj.cjs → Modal-DBw4j0YA.cjs} +3 -22
  188. package/dist/Modal.cjs +1 -1
  189. package/dist/Modal.d.cts +1 -1
  190. package/dist/Modal.d.mts +1 -1
  191. package/dist/Modal.mjs +1 -1
  192. package/dist/NativeSelect.cjs +15 -18
  193. package/dist/NativeSelect.d.cts +3 -3
  194. package/dist/NativeSelect.d.mts +3 -3
  195. package/dist/NativeSelect.mjs +15 -18
  196. package/dist/NumberInput.cjs +502 -0
  197. package/dist/NumberInput.d.cts +79 -0
  198. package/dist/NumberInput.d.mts +79 -0
  199. package/dist/NumberInput.mjs +500 -0
  200. package/dist/Pagination/PaginationItem.cjs +2 -2
  201. package/dist/Pagination/PaginationItem.d.cts +1 -1
  202. package/dist/Pagination/PaginationItem.d.mts +1 -1
  203. package/dist/Pagination/PaginationItem.mjs +2 -2
  204. package/dist/Pagination.d.cts +2 -2
  205. package/dist/Pagination.d.mts +2 -2
  206. package/dist/Paper.cjs +2 -2
  207. package/dist/Paper.d.cts +2 -2
  208. package/dist/Paper.d.mts +2 -2
  209. package/dist/Paper.mjs +2 -2
  210. package/dist/{Popover-QjM5Z1CR.mjs → Popover-Neeqs_7l.mjs} +3 -3
  211. package/dist/{Popover-CiZfgiKE.cjs → Popover-xyJTSjZy.cjs} +3 -3
  212. package/dist/Popover.cjs +1 -1
  213. package/dist/Popover.d.cts +3 -3
  214. package/dist/Popover.d.mts +3 -3
  215. package/dist/Popover.mjs +1 -1
  216. package/dist/Portal.d.cts +1 -17
  217. package/dist/Portal.d.mts +1 -17
  218. package/dist/Pressable.cjs +17 -13
  219. package/dist/Pressable.d.cts +1 -1
  220. package/dist/Pressable.d.mts +1 -1
  221. package/dist/Pressable.mjs +17 -13
  222. package/dist/Quote.d.cts +2 -2
  223. package/dist/Quote.d.mts +2 -2
  224. package/dist/Radio.cjs +13 -3
  225. package/dist/Radio.d.cts +4 -2
  226. package/dist/Radio.d.mts +4 -2
  227. package/dist/Radio.mjs +13 -3
  228. package/dist/RangeInput.cjs +677 -0
  229. package/dist/RangeInput.d.cts +79 -0
  230. package/dist/RangeInput.d.mts +79 -0
  231. package/dist/RangeInput.mjs +675 -0
  232. package/dist/Rating.cjs +373 -0
  233. package/dist/Rating.d.cts +57 -0
  234. package/dist/Rating.d.mts +57 -0
  235. package/dist/Rating.mjs +371 -0
  236. package/dist/ScrollArea.cjs +268 -0
  237. package/dist/ScrollArea.d.cts +40 -0
  238. package/dist/ScrollArea.d.mts +40 -0
  239. package/dist/ScrollArea.mjs +266 -0
  240. package/dist/Select.cjs +11 -13
  241. package/dist/Select.d.cts +3 -3
  242. package/dist/Select.d.mts +3 -3
  243. package/dist/Select.mjs +13 -15
  244. package/dist/Sidebar/Sidebar.d.cts +1 -1
  245. package/dist/Sidebar/Sidebar.d.mts +1 -1
  246. package/dist/Sidebar/SidebarItem.cjs +2 -2
  247. package/dist/Sidebar/SidebarItem.d.cts +3 -3
  248. package/dist/Sidebar/SidebarItem.d.mts +3 -3
  249. package/dist/Sidebar/SidebarItem.mjs +4 -4
  250. package/dist/Skeleton.d.cts +1 -1
  251. package/dist/Skeleton.d.mts +1 -1
  252. package/dist/Slide.cjs +51 -0
  253. package/dist/Slide.d.cts +17 -0
  254. package/dist/Slide.d.mts +17 -0
  255. package/dist/Slide.mjs +50 -0
  256. package/dist/Snackbar.cjs +205 -0
  257. package/dist/Snackbar.d.cts +62 -0
  258. package/dist/Snackbar.d.mts +62 -0
  259. package/dist/Snackbar.mjs +203 -0
  260. package/dist/Switch.cjs +35 -18
  261. package/dist/Switch.d.cts +4 -2
  262. package/dist/Switch.d.mts +4 -2
  263. package/dist/Switch.mjs +37 -20
  264. package/dist/Table/Table.d.cts +2 -2
  265. package/dist/Table/Table.d.mts +2 -2
  266. package/dist/Table/TableBody.d.cts +1 -1
  267. package/dist/Table/TableBody.d.mts +1 -1
  268. package/dist/Table/TableCell.d.cts +1 -1
  269. package/dist/Table/TableCell.d.mts +1 -1
  270. package/dist/Table/TableContainer.d.cts +1 -1
  271. package/dist/Table/TableContainer.d.mts +1 -1
  272. package/dist/Table/TableControl.d.cts +1 -1
  273. package/dist/Table/TableControl.d.mts +1 -1
  274. package/dist/Table/TableControl.mjs +2 -2
  275. package/dist/Table/TableFooter.d.cts +1 -1
  276. package/dist/Table/TableFooter.d.mts +1 -1
  277. package/dist/Table/TableHead.d.cts +1 -1
  278. package/dist/Table/TableHead.d.mts +1 -1
  279. package/dist/Table/TablePagination.cjs +1 -0
  280. package/dist/Table/TablePagination.d.cts +2 -2
  281. package/dist/Table/TablePagination.d.mts +2 -2
  282. package/dist/Table/TablePagination.mjs +1 -0
  283. package/dist/Table/TablePaginationActions.cjs +1 -1
  284. package/dist/Table/TablePaginationActions.d.cts +1 -1
  285. package/dist/Table/TablePaginationActions.d.mts +1 -1
  286. package/dist/Table/TablePaginationActions.mjs +1 -1
  287. package/dist/Table/TableRow.d.cts +1 -1
  288. package/dist/Table/TableRow.d.mts +1 -1
  289. package/dist/Table/TableSortLabel.cjs +1 -1
  290. package/dist/Table/TableSortLabel.d.cts +1 -1
  291. package/dist/Table/TableSortLabel.d.mts +1 -1
  292. package/dist/Table/TableSortLabel.mjs +1 -1
  293. package/dist/Table/hooks.d.cts +1 -1
  294. package/dist/Table/hooks.d.mts +1 -1
  295. package/dist/Table.d.cts +5 -5
  296. package/dist/Table.d.mts +5 -5
  297. package/dist/{TableContext-6PgGpUzM.d.mts → TableContext-Be8tluYZ.d.cts} +1 -1
  298. package/dist/{TableContext-CBGk-Lh8.d.cts → TableContext-DUPqls5k.d.mts} +1 -1
  299. package/dist/Tabs/Tab.cjs +16 -7
  300. package/dist/Tabs/Tab.d.cts +2 -2
  301. package/dist/Tabs/Tab.d.mts +2 -2
  302. package/dist/Tabs/Tab.mjs +16 -7
  303. package/dist/Tabs/TabContext.d.cts +1 -1
  304. package/dist/Tabs/TabContext.d.mts +1 -1
  305. package/dist/Tabs/TabList.cjs +1 -1
  306. package/dist/Tabs/TabList.d.cts +1 -1
  307. package/dist/Tabs/TabList.d.mts +1 -1
  308. package/dist/Tabs/TabList.mjs +1 -1
  309. package/dist/Tabs/TabPanel.cjs +1 -1
  310. package/dist/Tabs/TabPanel.d.cts +2 -2
  311. package/dist/Tabs/TabPanel.d.mts +2 -2
  312. package/dist/Tabs/TabPanel.mjs +1 -1
  313. package/dist/Tabs/TabScrollButton.cjs +2 -2
  314. package/dist/Tabs/TabScrollButton.d.cts +1 -1
  315. package/dist/Tabs/TabScrollButton.d.mts +1 -1
  316. package/dist/Tabs/TabScrollButton.mjs +2 -2
  317. package/dist/Tabs/Tabs.cjs +1 -1
  318. package/dist/Tabs/Tabs.d.cts +2 -2
  319. package/dist/Tabs/Tabs.d.mts +2 -2
  320. package/dist/Tabs/Tabs.mjs +1 -1
  321. package/dist/{Tabs-D_wkX-Jb.cjs → Tabs-Croeq9s2.cjs} +15 -10
  322. package/dist/{Tabs-YfCUbkQV.mjs → Tabs-DMMP5aDj.mjs} +12 -7
  323. package/dist/Tabs.cjs +1 -1
  324. package/dist/Tabs.d.cts +3 -3
  325. package/dist/Tabs.d.mts +3 -3
  326. package/dist/Tabs.mjs +1 -1
  327. package/dist/{TabsContext-C2agsLBN.d.cts → TabsContext-BYeGjSZK.d.cts} +1 -1
  328. package/dist/{TabsContext-DqyxdmGW.d.mts → TabsContext-D4YumTfD.d.mts} +1 -1
  329. package/dist/TextInput.cjs +14 -14
  330. package/dist/TextInput.d.cts +2 -2
  331. package/dist/TextInput.d.mts +2 -2
  332. package/dist/TextInput.mjs +14 -14
  333. package/dist/ToggleButton/ToggleButton.cjs +2 -2
  334. package/dist/ToggleButton/ToggleButton.d.cts +1 -1
  335. package/dist/ToggleButton/ToggleButton.d.mts +1 -1
  336. package/dist/ToggleButton/ToggleButton.mjs +2 -2
  337. package/dist/ToggleButton/ToggleButtonGroup.cjs +1 -1
  338. package/dist/ToggleButton/ToggleButtonGroup.d.cts +1 -1
  339. package/dist/ToggleButton/ToggleButtonGroup.d.mts +1 -1
  340. package/dist/ToggleButton/ToggleButtonGroup.mjs +1 -1
  341. package/dist/Tooltip.cjs +270 -0
  342. package/dist/Tooltip.d.cts +78 -0
  343. package/dist/Tooltip.d.mts +78 -0
  344. package/dist/Tooltip.mjs +268 -0
  345. package/dist/TransferList.cjs +363 -0
  346. package/dist/TransferList.d.cts +69 -0
  347. package/dist/TransferList.d.mts +69 -0
  348. package/dist/TransferList.mjs +361 -0
  349. package/dist/Typography.cjs +1 -1
  350. package/dist/Typography.d.cts +2 -2
  351. package/dist/Typography.d.mts +2 -2
  352. package/dist/Typography.mjs +1 -1
  353. package/dist/View.d.cts +1 -1
  354. package/dist/View.d.mts +1 -1
  355. package/dist/Zoom.cjs +16 -0
  356. package/dist/Zoom.d.cts +10 -0
  357. package/dist/Zoom.d.mts +10 -0
  358. package/dist/Zoom.mjs +15 -0
  359. package/dist/catalog.cjs +1405 -45
  360. package/dist/catalog.d.cts +1 -1
  361. package/dist/catalog.d.mts +1 -1
  362. package/dist/catalog.mjs +1405 -45
  363. package/dist/engine.d.cts +2 -2
  364. package/dist/engine.d.mts +1 -1
  365. package/dist/getAnchorRel-CySI28HJ.mjs +8 -0
  366. package/dist/getAnchorRel-_vtAXC-4.cjs +13 -0
  367. package/dist/getShapeRadius-B9ytqDSk.d.cts +5 -0
  368. package/dist/getShapeRadius-B9ytqDSk.d.mts +5 -0
  369. package/dist/getShapeRadius-sY6-AGP4.mjs +12 -0
  370. package/dist/getShapeRadius-vXmXGV3f.cjs +17 -0
  371. package/dist/getSurfaceRadius-BTUV1E8H.cjs +11 -0
  372. package/dist/getSurfaceRadius-DTgqIzll.mjs +6 -0
  373. package/dist/getTooltipOrigins-B_7XXtQq.cjs +104 -0
  374. package/dist/getTooltipOrigins-CyyIMCF1.mjs +87 -0
  375. package/dist/{index-qlfNErNd.d.cts → index-05VGk0y_.d.cts} +30 -2
  376. package/dist/{index-CrIxI8Na.d.mts → index-2x01drCL.d.mts} +2 -2
  377. package/dist/{index-Cj5Rhh_9.d.mts → index-46mhlgP6.d.mts} +7 -3
  378. package/dist/{index-BiVvxOvj.d.cts → index-BCzI2Iqo.d.cts} +2 -2
  379. package/dist/{index-IdMqR82e.d.cts → index-BDqIc6Gx.d.cts} +1 -1
  380. package/dist/{index-BSA6SKao.d.mts → index-BPh60KDs.d.mts} +1 -1
  381. package/dist/{index-Bxd9NOWb.d.mts → index-BQge4W7L.d.cts} +3 -3
  382. package/dist/{index-DCmH5f9I.d.cts → index-BSGu9rPv.d.cts} +7 -3
  383. package/dist/{index-Bhdn4KTy.d.cts → index-BThHG5QU.d.mts} +3 -3
  384. package/dist/{index-DrVYWt-X.d.mts → index-BUeqNHjb.d.cts} +3 -3
  385. package/dist/{index-DIC7HKpP.d.mts → index-BeqpkGV-.d.mts} +1 -1
  386. package/dist/{index-DqjXDutI.d.mts → index-Bfyz3MDc.d.mts} +1 -1
  387. package/dist/{index-BlLH6rlE.d.cts → index-BgLqA52S.d.cts} +2 -2
  388. package/dist/{index-DDJuUfL5.d.cts → index-BhnLFsBv.d.cts} +1 -1
  389. package/dist/{index-gnh-Oe0n.d.cts → index-BitQk7Hx.d.cts} +1 -1
  390. package/dist/index-BvgX5eyV.d.mts +36 -0
  391. package/dist/index-CERyXFjz.d.cts +32 -0
  392. package/dist/index-CLvlNnjM.d.mts +32 -0
  393. package/dist/{index-C3KrFPCj.d.mts → index-CO-XxjiZ.d.cts} +2 -2
  394. package/dist/{index-DXhMkjQ6.d.cts → index-CR0akDlJ.d.cts} +2 -2
  395. package/dist/{index-CVNJEUwJ.d.mts → index-CRQ7XLri.d.mts} +234 -6
  396. package/dist/{index-DQcnJ5H4.d.cts → index-CRn4fWwA.d.mts} +2 -2
  397. package/dist/{index-BCnKYNlZ.d.cts → index-CWPvdEjP.d.mts} +3 -3
  398. package/dist/{index-DuVNRXP4.d.cts → index-CrQDxJ1D.d.cts} +1 -1
  399. package/dist/index-Ctx-DKV3.d.cts +18 -0
  400. package/dist/index-Ctx-DKV3.d.mts +18 -0
  401. package/dist/{index-BjPX49XA.d.mts → index-CyLhEXYB.d.mts} +1 -1
  402. package/dist/{index-DeDxYlSQ.d.mts → index-D05fSuF1.d.mts} +2 -2
  403. package/dist/{index-XxydXX8l.d.cts → index-DK3zgGPe.d.mts} +3 -3
  404. package/dist/{index-BqpS_Huq.d.mts → index-DNj5P2NH.d.mts} +30 -2
  405. package/dist/{index-BFruxTHv.d.cts → index-DOH1xY0L.d.cts} +1 -1
  406. package/dist/{index-B3LIhqHR.d.cts → index-D_-DAAE7.d.mts} +14 -6
  407. package/dist/{index-BbgFYfX_.d.mts → index-D_LT3QiH.d.mts} +2 -2
  408. package/dist/index-Db4L2hwa.d.cts +36 -0
  409. package/dist/{index-BjfPEP_5.d.cts → index-Dk4KuTPB.d.cts} +2 -2
  410. package/dist/{index-CoEqjFYn.d.mts → index-Ebjbrbsk.d.cts} +14 -6
  411. package/dist/{index-B8DNxyEw.d.mts → index-MWUGpG-Y.d.mts} +2 -2
  412. package/dist/{index-DmJ7yWWi.d.cts → index-XN4-ZqTB.d.cts} +236 -8
  413. package/dist/index-fPRELf0V.d.mts +1 -0
  414. package/dist/{index-CWnbCxgw.d.cts → index-fi-W3MOz.d.cts} +7 -5
  415. package/dist/{index-DJCpnTH3.d.mts → index-iTquH69S.d.cts} +3 -3
  416. package/dist/{index-DckSub2J.d.mts → index-lGpLM144.d.mts} +7 -5
  417. package/dist/{index-BVPrG1L0.d.mts → index-vBCN6iAz.d.mts} +1 -1
  418. package/dist/index-x3WC9ViD.d.cts +1 -0
  419. package/dist/index.d.cts +1 -1
  420. package/dist/index.d.mts +1 -1
  421. package/dist/inputVariantStyles-BUK_62Ra.cjs +61 -0
  422. package/dist/inputVariantStyles-q_cZsCJg.mjs +44 -0
  423. package/dist/isRtl-BJDtm86G.mjs +7 -0
  424. package/dist/isRtl-DTkYHRPo.cjs +12 -0
  425. package/dist/precision-B1lhxnnO.mjs +25 -0
  426. package/dist/precision-B58cTPB2.cjs +48 -0
  427. package/dist/style.cjs +1 -1
  428. package/dist/style.d.cts +2 -2
  429. package/dist/style.d.mts +2 -2
  430. package/dist/style.mjs +1 -1
  431. package/dist/{theme-BxXuXRgQ.cjs → theme-DzfwuzMZ.cjs} +1 -1
  432. package/dist/{theme-Z9_QludW.mjs → theme-oBfFhJm9.mjs} +1 -1
  433. package/dist/theme.cjs +3 -2
  434. package/dist/theme.d.cts +3 -3
  435. package/dist/theme.d.mts +3 -3
  436. package/dist/theme.mjs +3 -3
  437. package/dist/{themes-gd6tcmqS.cjs → themes--4eci3M1.cjs} +25 -2
  438. package/dist/{themes-L-dE7_ck.mjs → themes-BwEsdVox.mjs} +20 -3
  439. package/dist/useAnchoredPlacement-B1FyGoZV.cjs +111 -0
  440. package/dist/useAnchoredPlacement-Pe7sY41E.mjs +106 -0
  441. package/dist/useControlled-C666KpQ0.cjs +18 -0
  442. package/dist/useControlled-CBRLsO-H.mjs +13 -0
  443. package/dist/useMergedRefs-2zTDXgPO.cjs +27 -0
  444. package/dist/useMergedRefs-BfBckwRY.mjs +22 -0
  445. package/dist/{useTablePagination-C5VKtqDp.d.cts → useTablePagination-CFb_FYA9.d.cts} +1 -1
  446. package/dist/{useTablePagination-C6LSlt3w.d.mts → useTablePagination-_-bzuXJO.d.mts} +1 -1
  447. package/dist/useTransition-C1F7MuHO.d.mts +42 -0
  448. package/dist/useTransition-DAQd1PX3.cjs +83 -0
  449. package/dist/useTransition-DP1k0irI.mjs +78 -0
  450. package/dist/useTransition-l9dv83-Y.d.cts +42 -0
  451. package/dist/useTransitionChild-CikpU0Yh.cjs +54 -0
  452. package/dist/useTransitionChild-Dvg9hO-F.mjs +49 -0
  453. package/package.json +194 -4
  454. package/dist/index-DBteSahY.d.cts +0 -1
  455. package/dist/index-_G1osn09.d.mts +0 -1
  456. package/dist/inputVariantStyles-BBkkYQtE.cjs +0 -32
  457. package/dist/inputVariantStyles-CcqpGfuP.mjs +0 -28
@@ -0,0 +1,502 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_src = require("./src-DU81aGy9.cjs");
3
+ const require_utils = require("./utils.cjs");
4
+ const require_theme = require("./theme-DzfwuzMZ.cjs");
5
+ const require_themeDefault = require("./themeDefault-Cebi08Cv.cjs");
6
+ const require_useControlled = require("./useControlled-C666KpQ0.cjs");
7
+ const require_Icon = require("./Icon-BE7bRsqR.cjs");
8
+ const require_inputVariantStyles = require("./inputVariantStyles-BUK_62Ra.cjs");
9
+ const require_FormControlContext = require("./FormControlContext-74gvPGFk.cjs");
10
+ const require_FormControl = require("./FormControl.cjs");
11
+ const require_precision = require("./precision-B58cTPB2.cjs");
12
+ let react = require("react");
13
+ let react_jsx_runtime = require("react/jsx-runtime");
14
+ let _soroush_tech_styled_system_should_forward_prop = require("@soroush.tech/styled-system/should-forward-prop");
15
+ //#region src/NumberInput/hooks/useHoldRepeat.ts
16
+ /**
17
+ * Runs `action` at once on a press, then again and again while it is held - after a pause, so a
18
+ * tap is one step. `start` begins it, `stop` ends it, and it ends by itself when the component
19
+ * goes.
20
+ */
21
+ function useHoldRepeat(action, { delay = 400, interval = 60 } = {}) {
22
+ const actionRef = (0, react.useRef)(action);
23
+ (0, react.useEffect)(() => {
24
+ actionRef.current = action;
25
+ });
26
+ const timers = (0, react.useRef)({});
27
+ const stop = (0, react.useCallback)(() => {
28
+ window.clearTimeout(timers.current.pause);
29
+ window.clearInterval(timers.current.repeat);
30
+ timers.current = {};
31
+ }, []);
32
+ const start = (0, react.useCallback)(() => {
33
+ stop();
34
+ actionRef.current();
35
+ timers.current.pause = window.setTimeout(() => {
36
+ timers.current.repeat = window.setInterval(() => actionRef.current(), interval);
37
+ }, delay);
38
+ }, [
39
+ stop,
40
+ delay,
41
+ interval
42
+ ]);
43
+ (0, react.useEffect)(() => stop, [stop]);
44
+ return {
45
+ start,
46
+ stop
47
+ };
48
+ }
49
+ //#endregion
50
+ //#region src/NumberInput/utils/number.ts
51
+ /** What a number is shown as unless told otherwise: all its digits, ungrouped, so typing round-trips. */
52
+ const DEFAULT_FORMAT = {
53
+ useGrouping: false,
54
+ maximumFractionDigits: 20
55
+ };
56
+ /** The syntax a locale and format write a number in. */
57
+ function getNumberSyntax(locale, format) {
58
+ const probe = new Intl.NumberFormat(locale, {
59
+ useGrouping: false,
60
+ minimumFractionDigits: 1,
61
+ maximumFractionDigits: 1
62
+ });
63
+ const digitFormat = new Intl.NumberFormat(locale, { useGrouping: false });
64
+ return {
65
+ decimal: probe.formatToParts(1.1).find((part) => part.type === "decimal").value,
66
+ digits: Array.from({ length: 10 }, (_, digit) => digitFormat.format(digit)),
67
+ isPercent: format?.style === "percent"
68
+ };
69
+ }
70
+ /** The number as its locale and format write it. */
71
+ function formatNumber(value, locale, format) {
72
+ return new Intl.NumberFormat(locale, {
73
+ ...DEFAULT_FORMAT,
74
+ ...format
75
+ }).format(value);
76
+ }
77
+ const MINUS = new RegExp(`[${[
78
+ 8722,
79
+ 8210,
80
+ 8211,
81
+ 8212
82
+ ].map((code) => String.fromCodePoint(code)).join("")}]`, "g");
83
+ /**
84
+ * The number a text stands for - `null` when it stands for none: its locale's digits and decimal
85
+ * mark, a leading minus, a percent's `%` (so `50%` is `0.5`). Group marks, spaces and symbols
86
+ * round it are ignored.
87
+ */
88
+ function parseNumber(text, syntax) {
89
+ let normalized = text.replace(MINUS, "-");
90
+ syntax.digits.forEach((digit, index) => {
91
+ normalized = normalized.split(digit).join(String(index));
92
+ });
93
+ const isNegative = normalized.includes("-");
94
+ const [whole = "", ...fraction] = normalized.split(syntax.decimal);
95
+ const digits = (text) => text.replaceAll(/\D/g, "");
96
+ const wholeDigits = digits(whole);
97
+ const fractionDigits = fraction.map(digits).join("");
98
+ if (wholeDigits === "" && fractionDigits === "") return null;
99
+ const parsed = Number(`${wholeDigits || "0"}.${fractionDigits || "0"}`);
100
+ const signed = isNegative ? -parsed : parsed;
101
+ return syntax.isPercent ? Number((signed / 100).toFixed(require_precision.getDecimalPrecision(parsed) + 2)) : signed;
102
+ }
103
+ //#endregion
104
+ //#region src/NumberInput/hooks/useNumberInput.ts
105
+ const clampTo = (value, min, max) => require_utils.clamp(value, min ?? Number.NEGATIVE_INFINITY, max ?? Number.POSITIVE_INFINITY);
106
+ /**
107
+ * A number field's state: the number (controlled or not), the text the user is typing - which
108
+ * is theirs until it is committed on blur or Enter - and the steps by key and by button. A
109
+ * number typed is told at once; one outside the range is clamped when it is committed.
110
+ */
111
+ function useNumberInput({ value: valueProp, defaultValue, onChange, onChangeCommitted, min, max, step, smallStep, largeStep, format, locale, shouldSnapOnStep, isFrozen }) {
112
+ const [value, setValue] = require_useControlled.useControlled({
113
+ controlled: valueProp,
114
+ default: defaultValue ?? null
115
+ });
116
+ const [draft, setDraft] = (0, react.useState)(null);
117
+ const syntax = (0, react.useMemo)(() => getNumberSyntax(locale, format), [locale, format]);
118
+ const text = draft ?? (value === null ? "" : formatNumber(value, locale, format));
119
+ const update = (next) => {
120
+ if (next === value) return;
121
+ setValue(next);
122
+ onChange?.(next);
123
+ };
124
+ const handleChange = (event) => {
125
+ const typed = event.currentTarget.value;
126
+ setDraft(typed);
127
+ if (typed.trim() === "") return update(null);
128
+ const parsed = parseNumber(typed, syntax);
129
+ if (parsed !== null) update(parsed);
130
+ };
131
+ const settle = () => {
132
+ if (draft === null) return value;
133
+ if (draft.trim() === "") return null;
134
+ const parsed = parseNumber(draft, syntax);
135
+ return parsed === null ? value : clampTo(parsed, min, max);
136
+ };
137
+ const commit = (next) => {
138
+ setDraft(null);
139
+ update(next);
140
+ onChangeCommitted?.(next);
141
+ };
142
+ const handleBlur = () => {
143
+ if (draft !== null) commit(settle());
144
+ };
145
+ const stepBy = (direction, size = step) => {
146
+ if (isFrozen) return;
147
+ const base = settle() ?? 0;
148
+ let next = require_precision.addExact(base, direction * size);
149
+ if (shouldSnapOnStep) next = require_precision.snapToStep(next, step, min ?? 0);
150
+ commit(clampTo(next, min, max));
151
+ };
152
+ const handleKeyDown = (event) => {
153
+ if (isFrozen) return;
154
+ const { key, altKey, shiftKey } = event;
155
+ if (key === "Enter") return commit(settle());
156
+ if (key === "ArrowUp" || key === "ArrowDown") {
157
+ event.preventDefault();
158
+ let size = step;
159
+ if (altKey) size = smallStep;
160
+ if (shiftKey) size = largeStep;
161
+ return stepBy(key === "ArrowUp" ? 1 : -1, size);
162
+ }
163
+ const edge = key === "Home" ? min : max;
164
+ if ((key === "Home" || key === "End") && edge !== void 0) {
165
+ event.preventDefault();
166
+ commit(edge);
167
+ }
168
+ };
169
+ return {
170
+ text,
171
+ value,
172
+ canIncrement: !isFrozen && (max === void 0 || (value ?? Number.NEGATIVE_INFINITY) < max),
173
+ canDecrement: !isFrozen && (min === void 0 || (value ?? Number.POSITIVE_INFINITY) > min),
174
+ handleChange,
175
+ handleBlur,
176
+ handleKeyDown,
177
+ stepBy
178
+ };
179
+ }
180
+ //#endregion
181
+ //#region src/NumberInput/hooks/useWheelStep.ts
182
+ /**
183
+ * Steps a focused field by the mouse wheel - up for a wheel up. A native listener, since the
184
+ * page must not scroll as it turns, and a React one can't prevent that.
185
+ */
186
+ function useWheelStep(ref, isEnabled, onStep) {
187
+ const stepRef = (0, react.useRef)(onStep);
188
+ (0, react.useEffect)(() => {
189
+ stepRef.current = onStep;
190
+ });
191
+ (0, react.useEffect)(() => {
192
+ const element = ref.current;
193
+ if (!isEnabled || !element) return void 0;
194
+ const handleWheel = (event) => {
195
+ if (element.ownerDocument.activeElement !== element) return;
196
+ event.preventDefault();
197
+ stepRef.current(event.deltaY < 0 ? 1 : -1);
198
+ };
199
+ element.addEventListener("wheel", handleWheel, { passive: false });
200
+ return () => element.removeEventListener("wheel", handleWheel);
201
+ }, [ref, isEnabled]);
202
+ }
203
+ //#endregion
204
+ //#region src/NumberInput/NumberInput.tsx
205
+ const widthStyles = (0, require_src.src_exports.system)({
206
+ width: true,
207
+ minWidth: true,
208
+ maxWidth: true
209
+ });
210
+ const frameStyle = ({ theme, color, textColor, isError, isDisabled, isFullWidth, isInField }) => {
211
+ const main = (0, require_src.src_exports.get)(theme, `palette.${color}.main`);
212
+ const border = isError ? (0, require_src.src_exports.get)(theme, "palette.error.main") : (0, require_src.src_exports.get)(theme, `palette.${color}.light`);
213
+ const focusBorder = isError ? (0, require_src.src_exports.get)(theme, "palette.error.main") : main;
214
+ return {
215
+ display: isFullWidth || isInField ? "flex" : "inline-flex",
216
+ ...isFullWidth && { width: "100%" },
217
+ ...isInField && !isFullWidth && { width: "fit-content" },
218
+ minWidth: require_inputVariantStyles.getInputMinWidth(theme),
219
+ alignItems: "stretch",
220
+ transition: "border-color 0.15s ease",
221
+ backgroundColor: (0, require_src.src_exports.get)(theme, `background.${require_themeDefault.themeDefault(theme, "inputBg", "terminal")}`),
222
+ color: textColor ? (0, require_src.src_exports.get)(theme, `text.${textColor}`) : (0, require_src.src_exports.get)(theme, `palette.${color}.main`),
223
+ fontFamily: (0, require_src.src_exports.get)(theme, "fonts.body"),
224
+ lineHeight: (0, require_src.src_exports.get)(theme, "lineHeights.base"),
225
+ borderColor: border,
226
+ "&:focus-within": { borderColor: focusBorder },
227
+ "&:has(:focus-visible)": require_inputVariantStyles.getFocusRing(theme, color, isError),
228
+ ...isDisabled && {
229
+ opacity: .5,
230
+ cursor: "not-allowed",
231
+ pointerEvents: "none"
232
+ }
233
+ };
234
+ };
235
+ const NumberInputRoot = require_src.styled("div", {
236
+ name: "NumberInput",
237
+ label: "NumberInput",
238
+ shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)([
239
+ ..._soroush_tech_styled_system_should_forward_prop.props,
240
+ "color",
241
+ "textColor",
242
+ "variant",
243
+ "isError",
244
+ "isDisabled",
245
+ "isFullWidth",
246
+ "isInField"
247
+ ]),
248
+ systemProps: [require_src.src_exports.space, widthStyles]
249
+ })(require_inputVariantStyles.inputVariantStyles, frameStyle);
250
+ const NumberInputInput = require_src.styled("input", {
251
+ name: "NumberInput",
252
+ slot: "input",
253
+ label: "NumberInputInput",
254
+ shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)(["sizeToken", "isCentered"])
255
+ })(({ theme, sizeToken, isCentered }) => {
256
+ const s = theme.sizes[sizeToken];
257
+ return {
258
+ flex: "1 1 0",
259
+ minWidth: 0,
260
+ width: 0,
261
+ border: "none",
262
+ outline: "none",
263
+ background: "transparent",
264
+ color: "inherit",
265
+ fontFamily: "inherit",
266
+ lineHeight: "inherit",
267
+ textAlign: isCentered ? "center" : "start",
268
+ paddingTop: theme.space[s.paddingTop],
269
+ paddingBottom: theme.space[s.paddingBottom],
270
+ paddingLeft: theme.space[s.paddingLeft],
271
+ paddingRight: theme.space[s.paddingRight],
272
+ fontSize: theme.fontSizes[s.fontSize],
273
+ "&::placeholder": {
274
+ color: "inherit",
275
+ opacity: .5
276
+ },
277
+ "&:disabled": { cursor: "not-allowed" }
278
+ };
279
+ });
280
+ const NumberInputContent = require_src.styled("span", {
281
+ name: "NumberInput",
282
+ slot: "content",
283
+ label: "NumberInputContent",
284
+ shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)(["edge", "sizeToken"])
285
+ })(({ theme, edge, sizeToken }) => {
286
+ const s = theme.sizes[sizeToken];
287
+ return {
288
+ display: "inline-flex",
289
+ alignItems: "center",
290
+ flexShrink: 0,
291
+ gap: theme.space[.5],
292
+ color: "inherit",
293
+ ...edge === "start" ? { paddingInlineStart: theme.space[s.paddingLeft] } : { paddingInlineEnd: theme.space[s.paddingRight] }
294
+ };
295
+ });
296
+ const NumberInputSpinButtons = require_src.styled("span", {
297
+ name: "NumberInput",
298
+ slot: "spinButtons",
299
+ label: "NumberInputSpinButtons"
300
+ })(({ theme }) => ({
301
+ display: "flex",
302
+ flexDirection: "column",
303
+ borderInlineStart: `${theme.borderWidths.thin} solid`,
304
+ borderColor: "inherit"
305
+ }));
306
+ const spinStyle = ({ theme, color, isSide }) => {
307
+ const main = (0, require_src.src_exports.get)(theme, `palette.${color}.main`);
308
+ return {
309
+ appearance: "none",
310
+ display: "grid",
311
+ placeItems: "center",
312
+ flex: isSide ? "0 0 auto" : "1 1 0px",
313
+ ...!isSide && { minHeight: 0 },
314
+ minWidth: isSide ? theme.space[5] : theme.icon.lg,
315
+ padding: 0,
316
+ border: "none",
317
+ background: "transparent",
318
+ color: "inherit",
319
+ cursor: "pointer",
320
+ "&:hover:not(:disabled)": { backgroundColor: `${main}1F` },
321
+ "&:disabled": {
322
+ opacity: .4,
323
+ cursor: "default"
324
+ }
325
+ };
326
+ };
327
+ const spinProps = (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)(["color", "isSide"]);
328
+ const sideDivider = (edge) => {
329
+ return ({ theme, isSide }) => isSide ? {
330
+ [edge]: `${theme.borderWidths.thin} solid`,
331
+ borderColor: "inherit"
332
+ } : {};
333
+ };
334
+ const NumberInputIncrement = require_src.styled("button", {
335
+ name: "NumberInput",
336
+ slot: "increment",
337
+ label: "NumberInputIncrement",
338
+ shouldForwardProp: spinProps
339
+ })(spinStyle, sideDivider("borderInlineStart"));
340
+ const NumberInputDecrement = require_src.styled("button", {
341
+ name: "NumberInput",
342
+ slot: "decrement",
343
+ label: "NumberInputDecrement",
344
+ shouldForwardProp: spinProps
345
+ })(spinStyle, sideDivider("borderInlineEnd"));
346
+ const getSpinIcon = (direction, isSide) => {
347
+ if (isSide) return direction === 1 ? "add" : "remove";
348
+ return direction === 1 ? "expand_less" : "expand_more";
349
+ };
350
+ function SpinButton({ direction, label, isSide, isDisabled, color, size, onStep }) {
351
+ const hold = useHoldRepeat(() => onStep(direction));
352
+ const { stop } = hold;
353
+ (0, react.useEffect)(() => {
354
+ if (isDisabled) stop();
355
+ }, [isDisabled, stop]);
356
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(direction === 1 ? NumberInputIncrement : NumberInputDecrement, {
357
+ type: "button",
358
+ tabIndex: -1,
359
+ "aria-label": label,
360
+ disabled: isDisabled,
361
+ color,
362
+ isSide,
363
+ onMouseDown: (event) => event.preventDefault(),
364
+ onPointerDown: (event) => event.button === 0 && hold.start(),
365
+ onPointerUp: hold.stop,
366
+ onPointerLeave: hold.stop,
367
+ onPointerCancel: hold.stop,
368
+ onClick: (event) => event.detail === 0 && onStep(direction),
369
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
370
+ name: getSpinIcon(direction, isSide),
371
+ size,
372
+ color: "inherit"
373
+ })
374
+ });
375
+ }
376
+ /**
377
+ * @description A field for a number: a text input - so what is typed is the user's until it is
378
+ * settled - that reads and writes the number in its locale, clamps it to `min`/`max`, and steps
379
+ * by the arrow keys, Home/End, the wheel and buttons that repeat while held. A
380
+ * `role="spinbutton"`, so the number and its range are announced; a hidden input carries the raw
381
+ * number to a form. In a `FormControl` it takes the field's size, color, error, disabled and
382
+ * required state, and its `FormLabel` targets the field.
383
+ */
384
+ function NumberInput({ value, defaultValue, onChange, onChangeCommitted, min, max, step: stepProp, smallStep: smallStepProp, largeStep: largeStepProp, format, locale, shouldSnapOnStep: shouldSnapProp, shouldScrubOnWheel: shouldScrubProp, spinButtons: spinButtonsProp, incrementLabel: incrementLabelProp, decrementLabel: decrementLabelProp, variant: variantProp, size: sizeProp, color: colorProp, textColor: textColorProp, error: errorProp, disabled: disabledProp, readOnly = false, required: requiredProp, fullWidth: fullWidthProp, name, id: idProp, placeholder, autoFocus, startContent, endContent, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby, "data-testid": dataTestid, ...rest }) {
385
+ const theme = require_theme.useTheme();
386
+ const dp = require_theme.useDefaultProps("NumberInput");
387
+ const isInField = (0, react.useContext)(require_FormControlContext.FormControlContext) !== null;
388
+ const fc = require_FormControl.useFormControl({
389
+ id: idProp,
390
+ error: errorProp,
391
+ disabled: disabledProp,
392
+ required: requiredProp,
393
+ size: sizeProp ?? dp.size,
394
+ fullWidth: fullWidthProp,
395
+ color: colorProp ?? dp.color,
396
+ textColor: textColorProp
397
+ });
398
+ const color = fc.color ?? require_themeDefault.themeDefault(theme, "color", "primary");
399
+ const textColor = fc.textColor;
400
+ const variant = variantProp ?? dp.variant ?? require_themeDefault.themeDefault(theme, "inputVariant", "default");
401
+ const spinButtons = spinButtonsProp ?? dp.spinButtons ?? "stacked";
402
+ const step = stepProp ?? dp.step ?? 1;
403
+ const isFrozen = fc.disabled || readOnly;
404
+ const field = useNumberInput({
405
+ value,
406
+ defaultValue,
407
+ onChange,
408
+ onChangeCommitted,
409
+ min,
410
+ max,
411
+ step,
412
+ smallStep: smallStepProp ?? dp.smallStep ?? .1,
413
+ largeStep: largeStepProp ?? dp.largeStep ?? 10,
414
+ format,
415
+ locale,
416
+ shouldSnapOnStep: shouldSnapProp ?? dp.shouldSnapOnStep ?? false,
417
+ isFrozen
418
+ });
419
+ const inputRef = (0, react.useRef)(null);
420
+ useWheelStep(inputRef, shouldScrubProp ?? dp.shouldScrubOnWheel ?? false, field.stepBy);
421
+ const isSide = spinButtons === "sides";
422
+ const buttonProps = {
423
+ isSide,
424
+ color,
425
+ size: fc.size,
426
+ onStep: field.stepBy
427
+ };
428
+ const decrement = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SpinButton, {
429
+ direction: -1,
430
+ label: decrementLabelProp ?? dp.decrementLabel,
431
+ isDisabled: !field.canDecrement,
432
+ ...buttonProps
433
+ });
434
+ const increment = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SpinButton, {
435
+ direction: 1,
436
+ label: incrementLabelProp ?? dp.incrementLabel,
437
+ isDisabled: !field.canIncrement,
438
+ ...buttonProps
439
+ });
440
+ const inputMode = (min ?? -1) >= 0 && Number.isInteger(step) ? "numeric" : "decimal";
441
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(NumberInputRoot, {
442
+ color,
443
+ textColor,
444
+ variant,
445
+ isError: fc.error,
446
+ isDisabled: fc.disabled,
447
+ isFullWidth: fc.fullWidth,
448
+ isInField,
449
+ className,
450
+ "data-testid": dataTestid,
451
+ ...rest,
452
+ children: [
453
+ isSide && decrement,
454
+ startContent != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NumberInputContent, {
455
+ edge: "start",
456
+ sizeToken: fc.size,
457
+ children: startContent
458
+ }),
459
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NumberInputInput, {
460
+ ref: inputRef,
461
+ type: "text",
462
+ role: "spinbutton",
463
+ inputMode,
464
+ autoComplete: "off",
465
+ id: fc.id,
466
+ value: field.text,
467
+ placeholder,
468
+ autoFocus,
469
+ disabled: fc.disabled,
470
+ readOnly,
471
+ required: fc.required,
472
+ sizeToken: fc.size,
473
+ isCentered: isSide,
474
+ "aria-valuenow": field.value ?? void 0,
475
+ "aria-valuemin": min,
476
+ "aria-valuemax": max,
477
+ "aria-label": ariaLabel,
478
+ "aria-labelledby": ariaLabelledby,
479
+ "aria-describedby": ariaDescribedby ?? fc["aria-describedby"],
480
+ "aria-invalid": fc.error || void 0,
481
+ onChange: field.handleChange,
482
+ onBlur: field.handleBlur,
483
+ onKeyDown: field.handleKeyDown
484
+ }),
485
+ name !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
486
+ type: "hidden",
487
+ name,
488
+ value: field.value ?? "",
489
+ disabled: fc.disabled
490
+ }),
491
+ endContent != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NumberInputContent, {
492
+ edge: "end",
493
+ sizeToken: fc.size,
494
+ children: endContent
495
+ }),
496
+ spinButtons === "stacked" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(NumberInputSpinButtons, { children: [increment, decrement] }),
497
+ isSide && increment
498
+ ]
499
+ });
500
+ }
501
+ //#endregion
502
+ exports.NumberInput = NumberInput;
@@ -0,0 +1,79 @@
1
+ import { nt as Theme } from "./index-XN4-ZqTB.cjs";
2
+ import { ReactNode } from "react";
3
+ import { LayoutProps, SpaceProps } from "@soroush.tech/styled-system";
4
+ //#region src/NumberInput/NumberInput.d.ts
5
+ type NumberInputVariant = 'default' | 'outlined' | 'text' | 'underline';
6
+ type NumberInputSpinButtons = 'stacked' | 'sides' | 'none';
7
+ interface NumberInputProps extends SpaceProps<Theme>, Pick<LayoutProps<Theme>, 'width' | 'minWidth' | 'maxWidth'> {
8
+ /** The number - `null` for none. Controlled with `onChange`. */
9
+ value?: number | null;
10
+ /** The number at first, when uncontrolled. */
11
+ defaultValue?: number | null;
12
+ /** Fired as the number changes - as it is typed, stepped or cleared. */
13
+ onChange?: (value: number | null) => void;
14
+ /** Fired when the number is settled: on blur, Enter, a step or Home/End. */
15
+ onChangeCommitted?: (value: number | null) => void;
16
+ /** The least number - what is typed or stepped is clamped to it. */
17
+ min?: number;
18
+ /** The greatest number. */
19
+ max?: number;
20
+ /** What the arrow keys and the buttons step by. Default: `1`. */
21
+ step?: number;
22
+ /** The step with Alt held. Default: `0.1`. */
23
+ smallStep?: number;
24
+ /** The step with Shift held. Default: `10`. */
25
+ largeStep?: number;
26
+ /** How the number is shown - `Intl.NumberFormat` options. Default: every digit, ungrouped. */
27
+ format?: Intl.NumberFormatOptions;
28
+ /** How the number is written and read. Default: the document's. */
29
+ locale?: string;
30
+ /** A step lands on the grid of `step`, counted from `min` (or 0). Default: `false`. */
31
+ shouldSnapOnStep?: boolean;
32
+ /** The mouse wheel steps the number while the field is focused. Default: `false`. */
33
+ shouldScrubOnWheel?: boolean;
34
+ /** Where the step buttons are: stacked at the end, either side of the field, or none. Default: `'stacked'`. */
35
+ spinButtons?: NumberInputSpinButtons;
36
+ /** Names the increase button - no built-in text; a theme gives it through `defaultProps`. */
37
+ incrementLabel?: string;
38
+ /** Names the decrease button. */
39
+ decrementLabel?: string;
40
+ /** Content inside the frame before the number - an icon, a label. */
41
+ startContent?: ReactNode;
42
+ /** Content inside the frame after the number, before the step buttons - a unit such as `px` or `%`, a button. */
43
+ endContent?: ReactNode;
44
+ /** The frame: a box, an outline, an underline or none. Default: `theme.defaults.inputVariant`. */
45
+ variant?: NumberInputVariant;
46
+ /** Resolves against `theme.sizes`. Default: its `FormControl`'s, else `'md'`. */
47
+ size?: keyof Theme['sizes'];
48
+ /** The focus border color - resolves to `theme.palette`. Default: `'primary'`. */
49
+ color?: keyof Theme['palette'];
50
+ /** The number's color - resolves against `theme.text`. Default: `'primary'`. */
51
+ textColor?: keyof Theme['text'];
52
+ error?: boolean;
53
+ disabled?: boolean;
54
+ readOnly?: boolean;
55
+ required?: boolean;
56
+ fullWidth?: boolean;
57
+ /** What a form submits the number as. */
58
+ name?: string;
59
+ /** On the field, which a `FormLabel` targets. Default: its `FormControl`'s. */
60
+ id?: string;
61
+ placeholder?: string;
62
+ autoFocus?: boolean;
63
+ className?: string;
64
+ 'aria-label'?: string;
65
+ 'aria-labelledby'?: string;
66
+ 'aria-describedby'?: string;
67
+ 'data-testid'?: string;
68
+ }
69
+ /**
70
+ * @description A field for a number: a text input - so what is typed is the user's until it is
71
+ * settled - that reads and writes the number in its locale, clamps it to `min`/`max`, and steps
72
+ * by the arrow keys, Home/End, the wheel and buttons that repeat while held. A
73
+ * `role="spinbutton"`, so the number and its range are announced; a hidden input carries the raw
74
+ * number to a form. In a `FormControl` it takes the field's size, color, error, disabled and
75
+ * required state, and its `FormLabel` targets the field.
76
+ */
77
+ declare function NumberInput({ value, defaultValue, onChange, onChangeCommitted, min, max, step: stepProp, smallStep: smallStepProp, largeStep: largeStepProp, format, locale, shouldSnapOnStep: shouldSnapProp, shouldScrubOnWheel: shouldScrubProp, spinButtons: spinButtonsProp, incrementLabel: incrementLabelProp, decrementLabel: decrementLabelProp, variant: variantProp, size: sizeProp, color: colorProp, textColor: textColorProp, error: errorProp, disabled: disabledProp, readOnly, required: requiredProp, fullWidth: fullWidthProp, name, id: idProp, placeholder, autoFocus, startContent, endContent, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, 'aria-describedby': ariaDescribedby, 'data-testid': dataTestid, ...rest }: Readonly<NumberInputProps>): import("react").JSX.Element;
78
+ //#endregion
79
+ export { NumberInput, NumberInputProps, NumberInputSpinButtons, NumberInputVariant };
@@ -0,0 +1,79 @@
1
+ import { nt as Theme } from "./index-CRQ7XLri.mjs";
2
+ import { LayoutProps, SpaceProps } from "@soroush.tech/styled-system";
3
+ import { ReactNode } from "react";
4
+ //#region src/NumberInput/NumberInput.d.ts
5
+ type NumberInputVariant = 'default' | 'outlined' | 'text' | 'underline';
6
+ type NumberInputSpinButtons = 'stacked' | 'sides' | 'none';
7
+ interface NumberInputProps extends SpaceProps<Theme>, Pick<LayoutProps<Theme>, 'width' | 'minWidth' | 'maxWidth'> {
8
+ /** The number - `null` for none. Controlled with `onChange`. */
9
+ value?: number | null;
10
+ /** The number at first, when uncontrolled. */
11
+ defaultValue?: number | null;
12
+ /** Fired as the number changes - as it is typed, stepped or cleared. */
13
+ onChange?: (value: number | null) => void;
14
+ /** Fired when the number is settled: on blur, Enter, a step or Home/End. */
15
+ onChangeCommitted?: (value: number | null) => void;
16
+ /** The least number - what is typed or stepped is clamped to it. */
17
+ min?: number;
18
+ /** The greatest number. */
19
+ max?: number;
20
+ /** What the arrow keys and the buttons step by. Default: `1`. */
21
+ step?: number;
22
+ /** The step with Alt held. Default: `0.1`. */
23
+ smallStep?: number;
24
+ /** The step with Shift held. Default: `10`. */
25
+ largeStep?: number;
26
+ /** How the number is shown - `Intl.NumberFormat` options. Default: every digit, ungrouped. */
27
+ format?: Intl.NumberFormatOptions;
28
+ /** How the number is written and read. Default: the document's. */
29
+ locale?: string;
30
+ /** A step lands on the grid of `step`, counted from `min` (or 0). Default: `false`. */
31
+ shouldSnapOnStep?: boolean;
32
+ /** The mouse wheel steps the number while the field is focused. Default: `false`. */
33
+ shouldScrubOnWheel?: boolean;
34
+ /** Where the step buttons are: stacked at the end, either side of the field, or none. Default: `'stacked'`. */
35
+ spinButtons?: NumberInputSpinButtons;
36
+ /** Names the increase button - no built-in text; a theme gives it through `defaultProps`. */
37
+ incrementLabel?: string;
38
+ /** Names the decrease button. */
39
+ decrementLabel?: string;
40
+ /** Content inside the frame before the number - an icon, a label. */
41
+ startContent?: ReactNode;
42
+ /** Content inside the frame after the number, before the step buttons - a unit such as `px` or `%`, a button. */
43
+ endContent?: ReactNode;
44
+ /** The frame: a box, an outline, an underline or none. Default: `theme.defaults.inputVariant`. */
45
+ variant?: NumberInputVariant;
46
+ /** Resolves against `theme.sizes`. Default: its `FormControl`'s, else `'md'`. */
47
+ size?: keyof Theme['sizes'];
48
+ /** The focus border color - resolves to `theme.palette`. Default: `'primary'`. */
49
+ color?: keyof Theme['palette'];
50
+ /** The number's color - resolves against `theme.text`. Default: `'primary'`. */
51
+ textColor?: keyof Theme['text'];
52
+ error?: boolean;
53
+ disabled?: boolean;
54
+ readOnly?: boolean;
55
+ required?: boolean;
56
+ fullWidth?: boolean;
57
+ /** What a form submits the number as. */
58
+ name?: string;
59
+ /** On the field, which a `FormLabel` targets. Default: its `FormControl`'s. */
60
+ id?: string;
61
+ placeholder?: string;
62
+ autoFocus?: boolean;
63
+ className?: string;
64
+ 'aria-label'?: string;
65
+ 'aria-labelledby'?: string;
66
+ 'aria-describedby'?: string;
67
+ 'data-testid'?: string;
68
+ }
69
+ /**
70
+ * @description A field for a number: a text input - so what is typed is the user's until it is
71
+ * settled - that reads and writes the number in its locale, clamps it to `min`/`max`, and steps
72
+ * by the arrow keys, Home/End, the wheel and buttons that repeat while held. A
73
+ * `role="spinbutton"`, so the number and its range are announced; a hidden input carries the raw
74
+ * number to a form. In a `FormControl` it takes the field's size, color, error, disabled and
75
+ * required state, and its `FormLabel` targets the field.
76
+ */
77
+ declare function NumberInput({ value, defaultValue, onChange, onChangeCommitted, min, max, step: stepProp, smallStep: smallStepProp, largeStep: largeStepProp, format, locale, shouldSnapOnStep: shouldSnapProp, shouldScrubOnWheel: shouldScrubProp, spinButtons: spinButtonsProp, incrementLabel: incrementLabelProp, decrementLabel: decrementLabelProp, variant: variantProp, size: sizeProp, color: colorProp, textColor: textColorProp, error: errorProp, disabled: disabledProp, readOnly, required: requiredProp, fullWidth: fullWidthProp, name, id: idProp, placeholder, autoFocus, startContent, endContent, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, 'aria-describedby': ariaDescribedby, 'data-testid': dataTestid, ...rest }: Readonly<NumberInputProps>): import("react").JSX.Element;
78
+ //#endregion
79
+ export { NumberInput, NumberInputProps, NumberInputSpinButtons, NumberInputVariant };