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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/README.md +30 -10
  2. package/dist/AppBar.d.cts +1 -3
  3. package/dist/AppBar.d.mts +1 -3
  4. package/dist/Avatar.cjs +1 -1
  5. package/dist/Avatar.d.cts +1 -3
  6. package/dist/Avatar.d.mts +1 -3
  7. package/dist/Avatar.mjs +1 -1
  8. package/dist/Backdrop.d.cts +1 -1
  9. package/dist/Backdrop.d.mts +1 -1
  10. package/dist/Breadcrumbs.cjs +132 -0
  11. package/dist/Breadcrumbs.d.cts +40 -0
  12. package/dist/Breadcrumbs.d.mts +40 -0
  13. package/dist/Breadcrumbs.mjs +131 -0
  14. package/dist/Button.cjs +1 -1
  15. package/dist/Button.d.cts +1 -1
  16. package/dist/Button.d.mts +1 -1
  17. package/dist/Button.mjs +1 -1
  18. package/dist/ButtonGroup.d.cts +1 -1
  19. package/dist/ButtonGroup.d.mts +1 -1
  20. package/dist/Card.cjs +3 -3
  21. package/dist/Card.d.cts +4 -3
  22. package/dist/Card.d.mts +4 -3
  23. package/dist/Card.mjs +3 -3
  24. package/dist/Checkbox.d.cts +1 -2
  25. package/dist/Checkbox.d.mts +1 -2
  26. package/dist/CircularProgress.d.cts +2 -3
  27. package/dist/CircularProgress.d.mts +2 -3
  28. package/dist/Drawer.d.cts +3 -2
  29. package/dist/Drawer.d.mts +3 -2
  30. package/dist/Flex.d.cts +1 -1
  31. package/dist/Flex.d.mts +1 -1
  32. package/dist/Form.d.cts +1 -1
  33. package/dist/Form.d.mts +1 -1
  34. package/dist/FormControl.cjs +10 -2
  35. package/dist/FormControl.d.cts +9 -2
  36. package/dist/FormControl.d.mts +9 -2
  37. package/dist/FormControl.mjs +10 -2
  38. package/dist/FormHelperText.d.cts +1 -1
  39. package/dist/FormHelperText.d.mts +1 -1
  40. package/dist/FormLabel.cjs +9 -1
  41. package/dist/FormLabel.d.cts +2 -2
  42. package/dist/FormLabel.d.mts +2 -2
  43. package/dist/FormLabel.mjs +10 -2
  44. package/dist/Grid.d.cts +1 -3
  45. package/dist/Grid.d.mts +1 -3
  46. package/dist/{Icon-CH3asUJu.mjs → Icon-BihOAP4u.mjs} +52 -2
  47. package/dist/{Icon-CI6q2Eyi.cjs → Icon-D-EWsBVg.cjs} +52 -2
  48. package/dist/Icon.cjs +1 -1
  49. package/dist/Icon.d.cts +1 -1
  50. package/dist/Icon.d.mts +1 -1
  51. package/dist/Icon.mjs +1 -1
  52. package/dist/Image.d.cts +1 -2
  53. package/dist/Image.d.mts +1 -2
  54. package/dist/InputRange.cjs +675 -0
  55. package/dist/InputRange.d.cts +79 -0
  56. package/dist/InputRange.d.mts +79 -0
  57. package/dist/InputRange.mjs +673 -0
  58. package/dist/LinearProgress.d.cts +2 -3
  59. package/dist/LinearProgress.d.mts +2 -3
  60. package/dist/Link.cjs +1 -1
  61. package/dist/Link.d.cts +1 -1
  62. package/dist/Link.d.mts +1 -1
  63. package/dist/Link.mjs +1 -1
  64. package/dist/Menu/ContextMenu.cjs +146 -0
  65. package/dist/Menu/ContextMenu.d.cts +52 -0
  66. package/dist/Menu/ContextMenu.d.mts +52 -0
  67. package/dist/Menu/ContextMenu.mjs +145 -0
  68. package/dist/Menu/Menu.cjs +3 -0
  69. package/dist/Menu/Menu.d.cts +2 -0
  70. package/dist/Menu/Menu.d.mts +2 -0
  71. package/dist/Menu/Menu.mjs +2 -0
  72. package/dist/Menu/MenuDivider.cjs +29 -0
  73. package/dist/Menu/MenuDivider.d.cts +12 -0
  74. package/dist/Menu/MenuDivider.d.mts +12 -0
  75. package/dist/Menu/MenuDivider.mjs +28 -0
  76. package/dist/Menu/MenuItems.cjs +29 -0
  77. package/dist/Menu/MenuItems.d.cts +2 -0
  78. package/dist/Menu/MenuItems.d.mts +2 -0
  79. package/dist/Menu/MenuItems.mjs +28 -0
  80. package/dist/Menu/MenuList.cjs +3 -0
  81. package/dist/Menu/MenuList.d.cts +38 -0
  82. package/dist/Menu/MenuList.d.mts +38 -0
  83. package/dist/Menu/MenuList.mjs +2 -0
  84. package/dist/Menu-Cgg-sX4W.cjs +173 -0
  85. package/dist/Menu-CrzHc_cn.mjs +168 -0
  86. package/dist/Menu.cjs +13 -0
  87. package/dist/Menu.d.cts +7 -0
  88. package/dist/Menu.d.mts +7 -0
  89. package/dist/Menu.mjs +6 -0
  90. package/dist/MenuItem-BTP7Ijwi.cjs +673 -0
  91. package/dist/MenuItem-DUn4IZKK.mjs +649 -0
  92. package/dist/MenuItem.cjs +2 -148
  93. package/dist/MenuItem.d.cts +2 -52
  94. package/dist/MenuItem.d.mts +2 -52
  95. package/dist/MenuItem.mjs +1 -147
  96. package/dist/MenuList-B7msJ1IG.mjs +187 -0
  97. package/dist/MenuList-D4imLXAa.cjs +223 -0
  98. package/dist/MenuListContext-DKUOhNyw.d.cts +21 -0
  99. package/dist/MenuListContext-x-7lH4CH.d.mts +21 -0
  100. package/dist/Modal.d.cts +1 -1
  101. package/dist/Modal.d.mts +1 -1
  102. package/dist/NativeSelect.cjs +9 -8
  103. package/dist/NativeSelect.d.cts +3 -4
  104. package/dist/NativeSelect.d.mts +3 -4
  105. package/dist/NativeSelect.mjs +9 -8
  106. package/dist/NumberField.cjs +476 -0
  107. package/dist/NumberField.d.cts +74 -0
  108. package/dist/NumberField.d.mts +74 -0
  109. package/dist/NumberField.mjs +474 -0
  110. package/dist/Pagination/PaginationItem.cjs +1 -1
  111. package/dist/Pagination/PaginationItem.d.cts +1 -1
  112. package/dist/Pagination/PaginationItem.d.mts +1 -1
  113. package/dist/Pagination/PaginationItem.mjs +1 -1
  114. package/dist/Pagination.d.cts +2 -2
  115. package/dist/Pagination.d.mts +2 -2
  116. package/dist/Paper.cjs +1 -1
  117. package/dist/Paper.d.cts +2 -1
  118. package/dist/Paper.d.mts +2 -1
  119. package/dist/Paper.mjs +1 -1
  120. package/dist/{Popover-TpwRSORC.cjs → Popover-CiZfgiKE.cjs} +5 -125
  121. package/dist/Popover-QjM5Z1CR.mjs +133 -0
  122. package/dist/Popover.cjs +1 -1
  123. package/dist/Popover.d.cts +6 -7
  124. package/dist/Popover.d.mts +6 -7
  125. package/dist/Popover.mjs +1 -1
  126. package/dist/Pressable.cjs +1 -1
  127. package/dist/Pressable.d.cts +1 -1
  128. package/dist/Pressable.d.mts +1 -1
  129. package/dist/Pressable.mjs +1 -1
  130. package/dist/Quote.d.cts +2 -3
  131. package/dist/Quote.d.mts +2 -3
  132. package/dist/Radio.d.cts +1 -2
  133. package/dist/Radio.d.mts +1 -2
  134. package/dist/Rating.cjs +373 -0
  135. package/dist/Rating.d.cts +57 -0
  136. package/dist/Rating.d.mts +57 -0
  137. package/dist/Rating.mjs +371 -0
  138. package/dist/Select.cjs +5 -4
  139. package/dist/Select.d.cts +3 -4
  140. package/dist/Select.d.mts +3 -4
  141. package/dist/Select.mjs +7 -6
  142. package/dist/Sidebar/Sidebar.d.cts +1 -1
  143. package/dist/Sidebar/Sidebar.d.mts +1 -1
  144. package/dist/Sidebar/SidebarItem.cjs +1 -1
  145. package/dist/Sidebar/SidebarItem.d.cts +3 -4
  146. package/dist/Sidebar/SidebarItem.d.mts +3 -4
  147. package/dist/Sidebar/SidebarItem.mjs +3 -3
  148. package/dist/Skeleton.d.cts +1 -2
  149. package/dist/Skeleton.d.mts +1 -2
  150. package/dist/Switch.cjs +23 -16
  151. package/dist/Switch.d.cts +2 -3
  152. package/dist/Switch.d.mts +2 -3
  153. package/dist/Switch.mjs +25 -18
  154. package/dist/Table/Table.d.cts +2 -3
  155. package/dist/Table/Table.d.mts +2 -3
  156. package/dist/Table/TableBody.d.cts +1 -2
  157. package/dist/Table/TableBody.d.mts +1 -2
  158. package/dist/Table/TableCell.d.cts +1 -1
  159. package/dist/Table/TableCell.d.mts +1 -1
  160. package/dist/Table/TableContainer.d.cts +1 -3
  161. package/dist/Table/TableContainer.d.mts +1 -3
  162. package/dist/Table/TableControl.d.cts +1 -1
  163. package/dist/Table/TableControl.d.mts +1 -1
  164. package/dist/Table/TableControl.mjs +2 -2
  165. package/dist/Table/TableFooter.d.cts +1 -2
  166. package/dist/Table/TableFooter.d.mts +1 -2
  167. package/dist/Table/TableHead.d.cts +1 -2
  168. package/dist/Table/TableHead.d.mts +1 -2
  169. package/dist/Table/TablePagination.d.cts +2 -2
  170. package/dist/Table/TablePagination.d.mts +2 -2
  171. package/dist/Table/TablePaginationActions.cjs +1 -1
  172. package/dist/Table/TablePaginationActions.d.cts +1 -1
  173. package/dist/Table/TablePaginationActions.d.mts +1 -1
  174. package/dist/Table/TablePaginationActions.mjs +1 -1
  175. package/dist/Table/TableRow.d.cts +1 -2
  176. package/dist/Table/TableRow.d.mts +1 -2
  177. package/dist/Table/TableSortLabel.cjs +1 -1
  178. package/dist/Table/TableSortLabel.d.cts +1 -1
  179. package/dist/Table/TableSortLabel.d.mts +1 -1
  180. package/dist/Table/TableSortLabel.mjs +1 -1
  181. package/dist/Table/hooks.d.cts +1 -1
  182. package/dist/Table/hooks.d.mts +1 -1
  183. package/dist/Table.d.cts +5 -5
  184. package/dist/Table.d.mts +5 -5
  185. package/dist/{TableContext-BeCxbtHH.d.cts → TableContext-DhuRf6Wy.d.mts} +1 -1
  186. package/dist/{TableContext-BiRiYkVZ.d.mts → TableContext-Duj1nVG7.d.cts} +1 -1
  187. package/dist/Tabs/Tab.cjs +306 -0
  188. package/dist/Tabs/Tab.d.cts +62 -0
  189. package/dist/Tabs/Tab.d.mts +62 -0
  190. package/dist/Tabs/Tab.mjs +305 -0
  191. package/dist/Tabs/TabContext.cjs +34 -0
  192. package/dist/Tabs/TabContext.d.cts +20 -0
  193. package/dist/Tabs/TabContext.d.mts +20 -0
  194. package/dist/Tabs/TabContext.mjs +33 -0
  195. package/dist/Tabs/TabList.cjs +31 -0
  196. package/dist/Tabs/TabList.d.cts +11 -0
  197. package/dist/Tabs/TabList.d.mts +11 -0
  198. package/dist/Tabs/TabList.mjs +30 -0
  199. package/dist/Tabs/TabPanel.cjs +40 -0
  200. package/dist/Tabs/TabPanel.d.cts +27 -0
  201. package/dist/Tabs/TabPanel.d.mts +27 -0
  202. package/dist/Tabs/TabPanel.mjs +38 -0
  203. package/dist/Tabs/TabScrollButton.cjs +93 -0
  204. package/dist/Tabs/TabScrollButton.d.cts +2 -0
  205. package/dist/Tabs/TabScrollButton.d.mts +2 -0
  206. package/dist/Tabs/TabScrollButton.mjs +91 -0
  207. package/dist/Tabs/Tabs.cjs +3 -0
  208. package/dist/Tabs/Tabs.d.cts +3 -0
  209. package/dist/Tabs/Tabs.d.mts +3 -0
  210. package/dist/Tabs/Tabs.mjs +2 -0
  211. package/dist/Tabs-BTNOJx5v.mjs +634 -0
  212. package/dist/Tabs-D4tWCq78.cjs +646 -0
  213. package/dist/Tabs.cjs +13 -0
  214. package/dist/Tabs.d.cts +8 -0
  215. package/dist/Tabs.d.mts +8 -0
  216. package/dist/Tabs.mjs +7 -0
  217. package/dist/TabsContext-B_XHbjcS.d.cts +6 -0
  218. package/dist/TabsContext-Dn2kqUwr.d.mts +6 -0
  219. package/dist/TabsValueContext-D40zGCpE.cjs +19 -0
  220. package/dist/TabsValueContext-DvL3inf7.mjs +8 -0
  221. package/dist/TextInput.cjs +4 -4
  222. package/dist/TextInput.d.cts +2 -3
  223. package/dist/TextInput.d.mts +2 -3
  224. package/dist/TextInput.mjs +4 -4
  225. package/dist/ToggleButton/ToggleButton.cjs +1 -1
  226. package/dist/ToggleButton/ToggleButton.d.cts +1 -1
  227. package/dist/ToggleButton/ToggleButton.d.mts +1 -1
  228. package/dist/ToggleButton/ToggleButton.mjs +1 -1
  229. package/dist/ToggleButton/ToggleButtonGroup.cjs +1 -1
  230. package/dist/ToggleButton/ToggleButtonGroup.d.cts +1 -1
  231. package/dist/ToggleButton/ToggleButtonGroup.d.mts +1 -1
  232. package/dist/ToggleButton/ToggleButtonGroup.mjs +1 -1
  233. package/dist/TransferList.cjs +356 -0
  234. package/dist/TransferList.d.cts +67 -0
  235. package/dist/TransferList.d.mts +67 -0
  236. package/dist/TransferList.mjs +354 -0
  237. package/dist/Typography.cjs +1 -1
  238. package/dist/Typography.d.cts +2 -2
  239. package/dist/Typography.d.mts +2 -2
  240. package/dist/Typography.mjs +1 -1
  241. package/dist/View.d.cts +1 -1
  242. package/dist/View.d.mts +1 -1
  243. package/dist/catalog.cjs +4568 -0
  244. package/dist/catalog.d.cts +90 -0
  245. package/dist/catalog.d.mts +90 -0
  246. package/dist/catalog.mjs +4567 -0
  247. package/dist/computePopoverPosition-BIprs_xo.mjs +123 -0
  248. package/dist/computePopoverPosition-DiyEOHnU.cjs +128 -0
  249. package/dist/dividerLine-BNljcGlv.cjs +66 -0
  250. package/dist/dividerLine-FahY-M6_.mjs +31 -0
  251. package/dist/engine.d.cts +1 -1
  252. package/dist/engine.d.mts +1 -1
  253. package/dist/index-B1RFybA_.d.mts +72 -0
  254. package/dist/index-B4TeaB7b.d.cts +72 -0
  255. package/dist/{index-BUoVTCqX.d.mts → index-BGbTuHP9.d.mts} +1 -2
  256. package/dist/{index-Celm-8iN.d.cts → index-BHKgEOZJ.d.cts} +2 -3
  257. package/dist/{index-Chg6pSrr.d.mts → index-BQWjh4rK.d.mts} +2 -3
  258. package/dist/{index-B78VkB0-.d.cts → index-BelFIizY.d.cts} +2 -3
  259. package/dist/index-BkzZxHVj.d.mts +35 -0
  260. package/dist/{index-DbEnSf2m.d.cts → index-BrgwkY6z.d.mts} +3 -4
  261. package/dist/{index-Wnv6jCR3.d.mts → index-Bx0-6yeX.d.mts} +1 -2
  262. package/dist/index-BxVTIMnB.d.cts +1 -0
  263. package/dist/{index-BfZuh9c2.d.mts → index-ByYxVl9O.d.mts} +2 -3
  264. package/dist/index-CE5JG1us.d.mts +34 -0
  265. package/dist/{index-BhibLnZ0.d.cts → index-CG_1uPrD.d.mts} +2 -3
  266. package/dist/{themes-RX2UX5gD.d.mts → index-CJhK7JND.d.mts} +265 -8
  267. package/dist/{index-BB-dLv5V.d.mts → index-CQfJZADG.d.cts} +3 -4
  268. package/dist/{index-CxUsrlg1.d.cts → index-CUz2h5xY.d.mts} +2 -3
  269. package/dist/{index-Bid71KeF.d.cts → index-CbFaWtjK.d.mts} +2 -2
  270. package/dist/{index-DdqdSOct.d.cts → index-ChXeKJCk.d.cts} +1 -2
  271. package/dist/index-CknoXDLQ.d.cts +35 -0
  272. package/dist/{index-BSqet8aO.d.cts → index-ClZyaZrR.d.mts} +2 -3
  273. package/dist/{index-DXvQ-JVZ.d.mts → index-DAwcmIjN.d.cts} +2 -3
  274. package/dist/index-DGnXJwLj.d.mts +72 -0
  275. package/dist/{themes-Kbk9h5cN.d.cts → index-DJ0f69wh.d.cts} +262 -5
  276. package/dist/index-DWjz5ZzG.d.cts +72 -0
  277. package/dist/{index-DNwF3DUX.d.cts → index-DYF8sRE-.d.cts} +2 -3
  278. package/dist/index-DaIIo5QU.d.mts +1 -0
  279. package/dist/{index-CrN4MSUF.d.cts → index-DchHf5cF.d.cts} +1 -1
  280. package/dist/{index-S-ClM6WM.d.mts → index-DtYjdBvO.d.cts} +2 -2
  281. package/dist/{index-Ctqajtac.d.cts → index-Dv_fk1_F.d.cts} +27 -3
  282. package/dist/{index-smqjMLAZ.d.mts → index-K5exjvnX.d.cts} +2 -3
  283. package/dist/index-KnXhlKMr.d.cts +34 -0
  284. package/dist/index-WHFhjfgy.d.cts +98 -0
  285. package/dist/{index-GpnmW6vu.d.mts → index-YKrfFC_I.d.cts} +2 -3
  286. package/dist/index-bpnLB_4K.d.mts +98 -0
  287. package/dist/{index-VOsBSWEu.d.mts → index-h4dYtVrp.d.mts} +1 -1
  288. package/dist/{index-DO9J-Fla.d.mts → index-ha1WjSZ5.d.mts} +27 -3
  289. package/dist/{index-Belxmt1X.d.cts → index-nqUA_6J_.d.cts} +1 -2
  290. package/dist/{index-nc4Sxiy9.d.mts → index-pTNq3iQn.d.mts} +2 -3
  291. package/dist/index.d.cts +1 -2
  292. package/dist/index.d.mts +1 -2
  293. package/dist/isRtl-BJDtm86G.mjs +7 -0
  294. package/dist/isRtl-DTkYHRPo.cjs +12 -0
  295. package/dist/precision-B1lhxnnO.mjs +25 -0
  296. package/dist/precision-B58cTPB2.cjs +48 -0
  297. package/dist/style.cjs +1 -1
  298. package/dist/style.d.cts +2 -2
  299. package/dist/style.d.mts +2 -2
  300. package/dist/style.mjs +1 -1
  301. package/dist/surfaceSystem-BGQBoXv_.cjs +38 -0
  302. package/dist/surfaceSystem-D8TbmKy3.mjs +21 -0
  303. package/dist/theme-BxXuXRgQ.cjs +137 -0
  304. package/dist/theme-Z9_QludW.mjs +102 -0
  305. package/dist/theme.cjs +25 -24
  306. package/dist/theme.d.cts +3 -3
  307. package/dist/theme.d.mts +3 -3
  308. package/dist/theme.mjs +2 -1
  309. package/dist/{theme-CDVxig_g.mjs → themes-L-dE7_ck.mjs} +10 -110
  310. package/dist/{theme-BXlAP3xf.cjs → themes-gd6tcmqS.cjs} +0 -136
  311. package/dist/useControlled-C666KpQ0.cjs +18 -0
  312. package/dist/useControlled-CBRLsO-H.mjs +13 -0
  313. package/dist/{useTablePagination-COTiNH_8.d.mts → useTablePagination-C-u3ru4N.d.cts} +1 -1
  314. package/dist/{useTablePagination-WFkaUZu8.d.cts → useTablePagination-D-39ZmQh.d.mts} +1 -1
  315. package/package.json +83 -2
  316. package/dist/Popover-DwnSLpp1.mjs +0 -253
  317. package/dist/index-B_dKjEDR.d.mts +0 -23
  318. package/dist/index-C1WqEDtQ.d.mts +0 -69
  319. package/dist/index-CA7HnbtH.d.cts +0 -21
  320. package/dist/index-CKZaErxJ.d.mts +0 -21
  321. package/dist/index-DBUwu65Z.d.cts +0 -69
  322. package/dist/index-DzQJSYIh.d.cts +0 -23
  323. package/dist/index-cuv3o-L7.d.mts +0 -34
  324. package/dist/index-nB94D7UM.d.cts +0 -34
@@ -0,0 +1,98 @@
1
+ import { U as TabsVariants, W as Theme } from "./index-DJ0f69wh.cjs";
2
+ import "./index-DchHf5cF.cjs";
3
+ import { t as TabValue } from "./TabsContext-B_XHbjcS.cjs";
4
+ import { n as TabScrollButtonProps } from "./index-KnXhlKMr.cjs";
5
+ import { ComponentType, ReactNode, Ref } from "react";
6
+ import { SpaceProps } from "@soroush.tech/styled-system";
7
+ //#region src/Tabs/Tabs/Tabs.d.ts
8
+ type TabsVariant = keyof TabsVariants;
9
+ type TabsOrientation = 'horizontal' | 'vertical';
10
+ /** What the row does when its tabs don't fit: scroll, list the rest in a menu, or nothing. */
11
+ type TabsOverflowBehavior = 'scroll' | 'menu' | 'none';
12
+ /** When a scrolling row shows its scroll buttons. */
13
+ type TabsScrollButtons = 'auto' | 'always' | 'never';
14
+ /** What `action` exposes. */
15
+ interface TabsActions {
16
+ /** Re-measures the selected tab for the indicator - after a font loads or a label changes. */
17
+ updateIndicator: () => void;
18
+ /** Re-reads whether the tabs overflow - for the scroll buttons, or which tabs go to the menu. */
19
+ updateOverflow: () => void;
20
+ }
21
+ interface TabsProps extends SpaceProps<Theme> {
22
+ /** `Tab`s. */
23
+ children?: ReactNode;
24
+ /** The selected tab's value - `null` for none. Controlled with `onChange`. */
25
+ value?: TabValue | null;
26
+ /** The selected tab's value at first, when uncontrolled. */
27
+ defaultValue?: TabValue | null;
28
+ /** Fired with a tab's value when it is chosen. */
29
+ onChange?: (value: TabValue) => void;
30
+ /** Fired with a closable tab's value when its close button, a middle click or Delete closes it. Removing the tab, and picking the next selection, are the app's. */
31
+ onTabClose?: (value: TabValue) => void;
32
+ /** `'nav'` makes it a navigation of links or buttons (`aria-current="page"`) rather than a `tablist`. Default: `'div'`. */
33
+ as?: 'div' | 'nav';
34
+ /** Default: `'horizontal'`. */
35
+ orientation?: TabsOrientation;
36
+ /** The look: an indicator under the selected tab, or the selected tab boxed. Default: `'underline'`, overridable via `theme.components.Tabs.defaultProps`. */
37
+ variant?: TabsVariant;
38
+ /** The indicator's or outline's color - resolves to `theme.palette[color]`. Default: `'primary'`. */
39
+ color?: keyof Theme['palette'];
40
+ /** The labels' color - resolves against `theme.text`. Default: `'primary'`. */
41
+ textColor?: keyof Theme['text'];
42
+ /** Density token - resolves against `theme.sizes`. Default: `'md'`. */
43
+ size?: keyof Theme['sizes'];
44
+ /** The tabs share the row's width equally. Default: `false`. */
45
+ fullWidth?: boolean;
46
+ /** The tabs sit in the middle of the row. Default: `false`. */
47
+ isCentered?: boolean;
48
+ /** Moving focus with the arrow keys selects as it goes. Default: `false` - Enter or Space selects. */
49
+ shouldSelectOnFocus?: boolean;
50
+ /** What the row does when its tabs don't fit: `'scroll'` - it scrolls, with scroll buttons; `'menu'` - it shows the tabs that fit whole and lists the rest in a menu. Default: `'none'`. */
51
+ overflowBehavior?: TabsOverflowBehavior;
52
+ /** With `overflowBehavior="menu"`: names the button that opens the menu of the tabs that don't fit ("More tabs"). */
53
+ overflowLabel?: string;
54
+ /** With `overflowBehavior="scroll"`: `'auto'` shows them while the tabs overflow, each only while tabs are out of view its way; `'always'` keeps both, disabled at an end; `'never'` hides them. Default: `'auto'`. */
55
+ scrollButtons?: TabsScrollButtons;
56
+ /** Show the scroll buttons on narrow screens too, where swiping does the job. Default: `false`. */
57
+ shouldShowScrollButtonsOnMobile?: boolean;
58
+ /** Show the list's scrollbar. Default: `false`. */
59
+ hasVisibleScrollbar?: boolean;
60
+ /**
61
+ * A line along the row's foot (a column's end side), under its own content too. In the
62
+ * enclosed look it runs round the selected tab. Default: `true`, but `false` in the boxed look.
63
+ */
64
+ hasDivider?: boolean;
65
+ /** The tab strip's ground - resolves against `theme.background`. */
66
+ bg?: keyof Theme['background'];
67
+ /**
68
+ * The selected tab's ground - resolves against `theme.background`. Give its `TabPanel` the same
69
+ * `bg` and the two read as one. Default: `'paper'` in the boxed look, and in the enclosed look
70
+ * without a divider; none otherwise.
71
+ */
72
+ selectedBg?: keyof Theme['background'];
73
+ /** Components in place of its own: `scrollButton` - a button that takes `TabScrollButton`'s props. */
74
+ slots?: {
75
+ scrollButton?: ComponentType<TabScrollButtonProps>;
76
+ };
77
+ /** Before the tabs - an icon, a button, any component. The arrow keys don't reach it. */
78
+ startContent?: ReactNode;
79
+ /** After the tabs - a toolbar, a "+" button, any component. The arrow keys don't reach it. */
80
+ endContent?: ReactNode;
81
+ /** Imperative handle - see `TabsActions`. */
82
+ action?: Ref<TabsActions>;
83
+ 'aria-label'?: string;
84
+ 'aria-labelledby'?: string;
85
+ id?: string;
86
+ className?: string;
87
+ 'data-testid'?: string;
88
+ }
89
+ /**
90
+ * @description A row of tabs. By default a `tablist`: one tab in the page's tab order, the
91
+ * arrow keys of its orientation moving between tabs, Enter or Space selecting (or moving
92
+ * focus selecting, with `shouldSelectOnFocus`). With `as="nav"`, the same look as a
93
+ * navigation, its current tab marked `aria-current="page"`. Content of the row's own sits
94
+ * before and after the tabs.
95
+ */
96
+ declare function Tabs({ children, value: valueProp, defaultValue, onChange, onTabClose, as, orientation, variant: variantProp, color: colorProp, textColor, size: sizeProp, fullWidth, isCentered, shouldSelectOnFocus, overflowBehavior, overflowLabel, scrollButtons, shouldShowScrollButtonsOnMobile, hasVisibleScrollbar, hasDivider: hasDividerProp, bg, selectedBg: selectedBgProp, slots, startContent, endContent, action, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, id, className, 'data-testid': dataTestid, ...spaceProps }: Readonly<TabsProps>): import("react").JSX.Element;
97
+ //#endregion
98
+ export { TabsProps as a, TabsOverflowBehavior as i, TabsActions as n, TabsScrollButtons as o, TabsOrientation as r, TabsVariant as s, Tabs as t };
@@ -1,7 +1,6 @@
1
- import { T as Theme, x as PaletteColor } from "./themes-RX2UX5gD.mjs";
2
- import "./index-C1WqEDtQ.mjs";
3
- import { BorderProps, LayoutProps, SpaceProps, TypographyProps } from "@soroush.tech/styled-system";
1
+ import { P as PaletteColor, W as Theme } from "./index-DJ0f69wh.cjs";
4
2
  import { ButtonHTMLAttributes, ElementType } from "react";
3
+ import { BorderProps, LayoutProps, SpaceProps, TypographyProps } from "@soroush.tech/styled-system";
5
4
  //#region src/Pressable/Pressable.d.ts
6
5
  /**
7
6
  * Press feedback: `none` leaves the wrapped content untouched, `opacity` dims it
@@ -0,0 +1,98 @@
1
+ import { U as TabsVariants, W as Theme } from "./index-CJhK7JND.mjs";
2
+ import "./index-h4dYtVrp.mjs";
3
+ import { t as TabValue } from "./TabsContext-Dn2kqUwr.mjs";
4
+ import { n as TabScrollButtonProps } from "./index-CE5JG1us.mjs";
5
+ import { SpaceProps } from "@soroush.tech/styled-system";
6
+ import { ComponentType, ReactNode, Ref } from "react";
7
+ //#region src/Tabs/Tabs/Tabs.d.ts
8
+ type TabsVariant = keyof TabsVariants;
9
+ type TabsOrientation = 'horizontal' | 'vertical';
10
+ /** What the row does when its tabs don't fit: scroll, list the rest in a menu, or nothing. */
11
+ type TabsOverflowBehavior = 'scroll' | 'menu' | 'none';
12
+ /** When a scrolling row shows its scroll buttons. */
13
+ type TabsScrollButtons = 'auto' | 'always' | 'never';
14
+ /** What `action` exposes. */
15
+ interface TabsActions {
16
+ /** Re-measures the selected tab for the indicator - after a font loads or a label changes. */
17
+ updateIndicator: () => void;
18
+ /** Re-reads whether the tabs overflow - for the scroll buttons, or which tabs go to the menu. */
19
+ updateOverflow: () => void;
20
+ }
21
+ interface TabsProps extends SpaceProps<Theme> {
22
+ /** `Tab`s. */
23
+ children?: ReactNode;
24
+ /** The selected tab's value - `null` for none. Controlled with `onChange`. */
25
+ value?: TabValue | null;
26
+ /** The selected tab's value at first, when uncontrolled. */
27
+ defaultValue?: TabValue | null;
28
+ /** Fired with a tab's value when it is chosen. */
29
+ onChange?: (value: TabValue) => void;
30
+ /** Fired with a closable tab's value when its close button, a middle click or Delete closes it. Removing the tab, and picking the next selection, are the app's. */
31
+ onTabClose?: (value: TabValue) => void;
32
+ /** `'nav'` makes it a navigation of links or buttons (`aria-current="page"`) rather than a `tablist`. Default: `'div'`. */
33
+ as?: 'div' | 'nav';
34
+ /** Default: `'horizontal'`. */
35
+ orientation?: TabsOrientation;
36
+ /** The look: an indicator under the selected tab, or the selected tab boxed. Default: `'underline'`, overridable via `theme.components.Tabs.defaultProps`. */
37
+ variant?: TabsVariant;
38
+ /** The indicator's or outline's color - resolves to `theme.palette[color]`. Default: `'primary'`. */
39
+ color?: keyof Theme['palette'];
40
+ /** The labels' color - resolves against `theme.text`. Default: `'primary'`. */
41
+ textColor?: keyof Theme['text'];
42
+ /** Density token - resolves against `theme.sizes`. Default: `'md'`. */
43
+ size?: keyof Theme['sizes'];
44
+ /** The tabs share the row's width equally. Default: `false`. */
45
+ fullWidth?: boolean;
46
+ /** The tabs sit in the middle of the row. Default: `false`. */
47
+ isCentered?: boolean;
48
+ /** Moving focus with the arrow keys selects as it goes. Default: `false` - Enter or Space selects. */
49
+ shouldSelectOnFocus?: boolean;
50
+ /** What the row does when its tabs don't fit: `'scroll'` - it scrolls, with scroll buttons; `'menu'` - it shows the tabs that fit whole and lists the rest in a menu. Default: `'none'`. */
51
+ overflowBehavior?: TabsOverflowBehavior;
52
+ /** With `overflowBehavior="menu"`: names the button that opens the menu of the tabs that don't fit ("More tabs"). */
53
+ overflowLabel?: string;
54
+ /** With `overflowBehavior="scroll"`: `'auto'` shows them while the tabs overflow, each only while tabs are out of view its way; `'always'` keeps both, disabled at an end; `'never'` hides them. Default: `'auto'`. */
55
+ scrollButtons?: TabsScrollButtons;
56
+ /** Show the scroll buttons on narrow screens too, where swiping does the job. Default: `false`. */
57
+ shouldShowScrollButtonsOnMobile?: boolean;
58
+ /** Show the list's scrollbar. Default: `false`. */
59
+ hasVisibleScrollbar?: boolean;
60
+ /**
61
+ * A line along the row's foot (a column's end side), under its own content too. In the
62
+ * enclosed look it runs round the selected tab. Default: `true`, but `false` in the boxed look.
63
+ */
64
+ hasDivider?: boolean;
65
+ /** The tab strip's ground - resolves against `theme.background`. */
66
+ bg?: keyof Theme['background'];
67
+ /**
68
+ * The selected tab's ground - resolves against `theme.background`. Give its `TabPanel` the same
69
+ * `bg` and the two read as one. Default: `'paper'` in the boxed look, and in the enclosed look
70
+ * without a divider; none otherwise.
71
+ */
72
+ selectedBg?: keyof Theme['background'];
73
+ /** Components in place of its own: `scrollButton` - a button that takes `TabScrollButton`'s props. */
74
+ slots?: {
75
+ scrollButton?: ComponentType<TabScrollButtonProps>;
76
+ };
77
+ /** Before the tabs - an icon, a button, any component. The arrow keys don't reach it. */
78
+ startContent?: ReactNode;
79
+ /** After the tabs - a toolbar, a "+" button, any component. The arrow keys don't reach it. */
80
+ endContent?: ReactNode;
81
+ /** Imperative handle - see `TabsActions`. */
82
+ action?: Ref<TabsActions>;
83
+ 'aria-label'?: string;
84
+ 'aria-labelledby'?: string;
85
+ id?: string;
86
+ className?: string;
87
+ 'data-testid'?: string;
88
+ }
89
+ /**
90
+ * @description A row of tabs. By default a `tablist`: one tab in the page's tab order, the
91
+ * arrow keys of its orientation moving between tabs, Enter or Space selecting (or moving
92
+ * focus selecting, with `shouldSelectOnFocus`). With `as="nav"`, the same look as a
93
+ * navigation, its current tab marked `aria-current="page"`. Content of the row's own sits
94
+ * before and after the tabs.
95
+ */
96
+ declare function Tabs({ children, value: valueProp, defaultValue, onChange, onTabClose, as, orientation, variant: variantProp, color: colorProp, textColor, size: sizeProp, fullWidth, isCentered, shouldSelectOnFocus, overflowBehavior, overflowLabel, scrollButtons, shouldShowScrollButtonsOnMobile, hasVisibleScrollbar, hasDivider: hasDividerProp, bg, selectedBg: selectedBgProp, slots, startContent, endContent, action, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, id, className, 'data-testid': dataTestid, ...spaceProps }: Readonly<TabsProps>): import("react").JSX.Element;
97
+ //#endregion
98
+ export { TabsProps as a, TabsOverflowBehavior as i, TabsActions as n, TabsScrollButtons as o, TabsOrientation as r, TabsVariant as s, Tabs as t };
@@ -1,4 +1,4 @@
1
- import { I as ThemeLayout, M as ThemeDefaults, T as Theme, j as ThemeComponents } from "./themes-RX2UX5gD.mjs";
1
+ import { W as Theme, X as ThemeComponents, Z as ThemeDefaults, tt as ThemeLayout } from "./index-CJhK7JND.mjs";
2
2
  import { ComponentType, ReactNode } from "react";
3
3
  //#region src/theme/ThemeProvider.d.ts
4
4
  interface ThemeProviderProps {
@@ -1,9 +1,13 @@
1
- import { n as TextColorToken } from "./index-smqjMLAZ.mjs";
1
+ import { et as ThemeIconSizes } from "./index-CJhK7JND.mjs";
2
+ import { n as TextColorToken } from "./index-ClZyaZrR.mjs";
2
3
  import { LayoutProps, SpaceProps } from "@soroush.tech/styled-system";
3
4
  import { SVGProps } from "react";
4
5
  //#region src/Icon/icons/AccountTree.d.ts
5
6
  declare const SvgAccountTree: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
6
7
  //#endregion
8
+ //#region src/Icon/icons/Add.d.ts
9
+ declare const SvgAdd: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
10
+ //#endregion
7
11
  //#region src/Icon/icons/AdsClick.d.ts
8
12
  declare const SvgAdsClick: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
9
13
  //#endregion
@@ -118,6 +122,9 @@ declare const SvgLock: (props: SVGProps<SVGSVGElement>) => import("react").JSX.E
118
122
  //#region src/Icon/icons/Menu.d.ts
119
123
  declare const SvgMenu: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
120
124
  //#endregion
125
+ //#region src/Icon/icons/MoreHoriz.d.ts
126
+ declare const SvgMoreHoriz: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
127
+ //#endregion
121
128
  //#region src/Icon/icons/Neurology.d.ts
122
129
  declare const SvgNeurology: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
123
130
  //#endregion
@@ -130,6 +137,9 @@ declare const SvgRebaseEdit: (props: SVGProps<SVGSVGElement>) => import("react")
130
137
  //#region src/Icon/icons/Refresh.d.ts
131
138
  declare const SvgRefresh: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
132
139
  //#endregion
140
+ //#region src/Icon/icons/Remove.d.ts
141
+ declare const SvgRemove: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
142
+ //#endregion
133
143
  //#region src/Icon/icons/Schema.d.ts
134
144
  declare const SvgSchema: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
135
145
  //#endregion
@@ -151,6 +161,12 @@ declare const SvgSpeed: (props: SVGProps<SVGSVGElement>) => import("react").JSX.
151
161
  //#region src/Icon/icons/Stacks.d.ts
152
162
  declare const SvgStacks: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
153
163
  //#endregion
164
+ //#region src/Icon/icons/Star.d.ts
165
+ declare const SvgStar: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
166
+ //#endregion
167
+ //#region src/Icon/icons/StarBorder.d.ts
168
+ declare const SvgStarBorder: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
169
+ //#endregion
154
170
  //#region src/Icon/icons/Table.d.ts
155
171
  declare const SvgTable: (props: SVGProps<SVGSVGElement>) => import("react").JSX.Element;
156
172
  //#endregion
@@ -176,6 +192,7 @@ declare const SvgZoomOut: (props: SVGProps<SVGSVGElement>) => import("react").JS
176
192
  /** Registry of available icons, keyed by their asset file name. */
177
193
  declare const icons: {
178
194
  readonly account_tree: typeof SvgAccountTree;
195
+ readonly add: typeof SvgAdd;
179
196
  readonly ads_click: typeof SvgAdsClick;
180
197
  readonly analytics: typeof SvgAnalytics;
181
198
  readonly architecture: typeof SvgArchitecture;
@@ -214,10 +231,12 @@ declare const icons: {
214
231
  readonly link: typeof SvgLink;
215
232
  readonly lock: typeof SvgLock;
216
233
  readonly menu: typeof SvgMenu;
234
+ readonly more_horiz: typeof SvgMoreHoriz;
217
235
  readonly neurology: typeof SvgNeurology;
218
236
  readonly psychology: typeof SvgPsychology;
219
237
  readonly rebase_edit: typeof SvgRebaseEdit;
220
238
  readonly refresh: typeof SvgRefresh;
239
+ readonly remove: typeof SvgRemove;
221
240
  readonly schema: typeof SvgSchema;
222
241
  readonly security: typeof SvgSecurity;
223
242
  readonly settings_input_component: typeof SvgSettingsInputComponent;
@@ -225,6 +244,8 @@ declare const icons: {
225
244
  readonly smartphone: typeof SvgSmartphone;
226
245
  readonly speed: typeof SvgSpeed;
227
246
  readonly stacks: typeof SvgStacks;
247
+ readonly star: typeof SvgStar;
248
+ readonly star_border: typeof SvgStarBorder;
228
249
  readonly table: typeof SvgTable;
229
250
  readonly terminal: typeof SvgTerminal;
230
251
  readonly visibility: typeof SvgVisibility;
@@ -242,8 +263,11 @@ interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'color' | 'ref' | 'wid
242
263
  name: IconName;
243
264
  /** Resolves against theme.text - applied as `color`, which the SVG inherits via `currentColor`. */
244
265
  color?: TextColorToken;
245
- /** Sets both width and height (icons are square). */
246
- size?: string | number;
266
+ /**
267
+ * Sets both width and height (icons are square): one of the theme's icon sizes (`'sm'`, `'md'`,
268
+ * `'lg'`), or any CSS length. Default: the theme's `iconSize`, else `'lg'`.
269
+ */
270
+ size?: keyof ThemeIconSizes | (string & {}) | number;
247
271
  }
248
272
  declare function Icon({ name, color, size, ...rest }: Readonly<IconProps>): import("react").JSX.Element;
249
273
  //#endregion
@@ -1,5 +1,4 @@
1
- import { T as Theme } from "./themes-Kbk9h5cN.cjs";
2
- import "./index-DBUwu65Z.cjs";
1
+ import { W as Theme } from "./index-DJ0f69wh.cjs";
3
2
  import { KeyboardEvent, MouseEvent, ReactNode, Ref, RefCallback, SyntheticEvent } from "react";
4
3
  //#region src/Modal/useModal.d.ts
5
4
  type ModalCloseReason = 'escapeKey' | 'backdropClick';
@@ -1,6 +1,5 @@
1
- import { T as Theme } from "./themes-RX2UX5gD.mjs";
2
- import "./index-C1WqEDtQ.mjs";
3
- import { n as IconProps, r as IconName } from "./index-DO9J-Fla.mjs";
1
+ import { W as Theme } from "./index-CJhK7JND.mjs";
2
+ import { n as IconProps, r as IconName } from "./index-ha1WjSZ5.mjs";
4
3
  import { SpaceProps } from "@soroush.tech/styled-system";
5
4
  import { ButtonHTMLAttributes } from "react";
6
5
  //#region src/Table/TableSortLabel/TableSortLabel.d.ts
package/dist/index.d.cts CHANGED
@@ -1,4 +1,3 @@
1
- import { T as Theme, a as CSSObject, x as PaletteColor } from "./themes-Kbk9h5cN.cjs";
2
- import { a as ThemeCustomizationOptions, i as props, n as css, o as styled, r as keyframes, t as createShouldForwardProp } from "./index-DBUwu65Z.cjs";
1
+ import { P as PaletteColor, W as Theme, a as ThemeCustomizationOptions, f as CSSObject, i as props, n as css, o as styled, r as keyframes, t as createShouldForwardProp } from "./index-DJ0f69wh.cjs";
3
2
  export * from "@soroush.tech/styled-system";
4
3
  export { type CSSObject, type PaletteColor, type Theme, type ThemeCustomizationOptions, createShouldForwardProp, css, keyframes, props, styled };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,3 @@
1
- import { T as Theme, a as CSSObject, x as PaletteColor } from "./themes-RX2UX5gD.mjs";
2
- import { a as ThemeCustomizationOptions, i as props, n as css, o as styled, r as keyframes, t as createShouldForwardProp } from "./index-C1WqEDtQ.mjs";
1
+ import { P as PaletteColor, W as Theme, a as ThemeCustomizationOptions, f as CSSObject, i as props, n as css, o as styled, r as keyframes, t as createShouldForwardProp } from "./index-CJhK7JND.mjs";
3
2
  export * from "@soroush.tech/styled-system";
4
3
  export { type CSSObject, type PaletteColor, type Theme, type ThemeCustomizationOptions, createShouldForwardProp, css, keyframes, props, styled };
@@ -0,0 +1,7 @@
1
+ //#region src/utils/isRtl.ts
2
+ /** Whether an element sits in a right-to-left context - its nearest `dir` says so. */
3
+ function isRtl(element) {
4
+ return element.closest("[dir]")?.getAttribute("dir") === "rtl";
5
+ }
6
+ //#endregion
7
+ export { isRtl as t };
@@ -0,0 +1,12 @@
1
+ //#region src/utils/isRtl.ts
2
+ /** Whether an element sits in a right-to-left context - its nearest `dir` says so. */
3
+ function isRtl(element) {
4
+ return element.closest("[dir]")?.getAttribute("dir") === "rtl";
5
+ }
6
+ //#endregion
7
+ Object.defineProperty(exports, "isRtl", {
8
+ enumerable: true,
9
+ get: function() {
10
+ return isRtl;
11
+ }
12
+ });
@@ -0,0 +1,25 @@
1
+ //#region src/utils/precision.ts
2
+ /** How many decimals a step has - `1e-8` has eight, `0.5` one, `1` none. */
3
+ function getDecimalPrecision(step) {
4
+ const [mantissa, exponent] = step.toExponential().split("e");
5
+ const decimals = (mantissa.split(".")[1] ?? "").length;
6
+ return Math.max(0, decimals - Number(exponent));
7
+ }
8
+ /** The value rounded to the nearest step of `precision` - `null` stays `null`. */
9
+ function roundToPrecision(value, precision) {
10
+ if (value === null) return null;
11
+ const nearest = Math.round(value / precision) * precision;
12
+ return Number(nearest.toFixed(getDecimalPrecision(precision)));
13
+ }
14
+ /** The number moved by `delta`, with no float noise - `0.1 + 0.2` is `0.3`. */
15
+ function addExact(value, delta) {
16
+ const decimals = Math.max(getDecimalPrecision(value), getDecimalPrecision(delta));
17
+ return Number((value + delta).toFixed(decimals));
18
+ }
19
+ /** The nearest number on the grid of `step`, counted from `origin`. */
20
+ function snapToStep(value, step, origin) {
21
+ const decimals = Math.max(getDecimalPrecision(step), getDecimalPrecision(origin));
22
+ return Number((Math.round((value - origin) / step) * step + origin).toFixed(decimals));
23
+ }
24
+ //#endregion
25
+ export { snapToStep as i, getDecimalPrecision as n, roundToPrecision as r, addExact as t };
@@ -0,0 +1,48 @@
1
+ //#region src/utils/precision.ts
2
+ /** How many decimals a step has - `1e-8` has eight, `0.5` one, `1` none. */
3
+ function getDecimalPrecision(step) {
4
+ const [mantissa, exponent] = step.toExponential().split("e");
5
+ const decimals = (mantissa.split(".")[1] ?? "").length;
6
+ return Math.max(0, decimals - Number(exponent));
7
+ }
8
+ /** The value rounded to the nearest step of `precision` - `null` stays `null`. */
9
+ function roundToPrecision(value, precision) {
10
+ if (value === null) return null;
11
+ const nearest = Math.round(value / precision) * precision;
12
+ return Number(nearest.toFixed(getDecimalPrecision(precision)));
13
+ }
14
+ /** The number moved by `delta`, with no float noise - `0.1 + 0.2` is `0.3`. */
15
+ function addExact(value, delta) {
16
+ const decimals = Math.max(getDecimalPrecision(value), getDecimalPrecision(delta));
17
+ return Number((value + delta).toFixed(decimals));
18
+ }
19
+ /** The nearest number on the grid of `step`, counted from `origin`. */
20
+ function snapToStep(value, step, origin) {
21
+ const decimals = Math.max(getDecimalPrecision(step), getDecimalPrecision(origin));
22
+ return Number((Math.round((value - origin) / step) * step + origin).toFixed(decimals));
23
+ }
24
+ //#endregion
25
+ Object.defineProperty(exports, "addExact", {
26
+ enumerable: true,
27
+ get: function() {
28
+ return addExact;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "getDecimalPrecision", {
32
+ enumerable: true,
33
+ get: function() {
34
+ return getDecimalPrecision;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "roundToPrecision", {
38
+ enumerable: true,
39
+ get: function() {
40
+ return roundToPrecision;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "snapToStep", {
44
+ enumerable: true,
45
+ get: function() {
46
+ return snapToStep;
47
+ }
48
+ });
package/dist/style.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_theme = require("./theme-BXlAP3xf.cjs");
2
+ const require_theme = require("./theme-BxXuXRgQ.cjs");
3
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
4
  let _emotion_react = require("@emotion/react");
5
5
  //#region src/style/hooks/useStyle.ts
package/dist/style.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as Theme, a as CSSObject } from "./themes-Kbk9h5cN.cjs";
2
- import "./index-CrN4MSUF.cjs";
1
+ import { W as Theme, f as CSSObject } from "./index-DJ0f69wh.cjs";
2
+ import "./index-DchHf5cF.cjs";
3
3
  import { ComponentType, ReactNode } from "react";
4
4
  //#region src/style/hooks/useStyle.d.ts
5
5
  type StyleFactory = {
package/dist/style.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as Theme, a as CSSObject } from "./themes-RX2UX5gD.mjs";
2
- import "./index-VOsBSWEu.mjs";
1
+ import { W as Theme, f as CSSObject } from "./index-CJhK7JND.mjs";
2
+ import "./index-h4dYtVrp.mjs";
3
3
  import { ComponentType, ReactNode } from "react";
4
4
  //#region src/style/hooks/useStyle.d.ts
5
5
  type StyleFactory = {
package/dist/style.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { r as useTheme } from "./theme-CDVxig_g.mjs";
1
+ import { r as useTheme } from "./theme-Z9_QludW.mjs";
2
2
  import { n as EmotionThemeContext } from "./emotion-BAyqVw0c.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/style/hooks/useStyle.ts
@@ -0,0 +1,38 @@
1
+ const require_src = require("./src-DU81aGy9.cjs");
2
+ //#region src/Tabs/utils/tabIds.ts
3
+ /** A tab's DOM id - what its panel's `aria-labelledby` names. */
4
+ const getTabId = (baseId, value) => `${baseId}-tab-${value}`;
5
+ /** A panel's DOM id - what its tab's `aria-controls` names. */
6
+ const getPanelId = (baseId, value) => `${baseId}-panel-${value}`;
7
+ //#endregion
8
+ //#region src/Tabs/utils/surfaceSystem.ts
9
+ /** `bg` → `theme.background`, `borderRadius` → `theme.radii`: a tab strip's or a panel's surface. */
10
+ const surfaceSystem = (0, require_src.src_exports.system)({
11
+ bg: {
12
+ property: "backgroundColor",
13
+ scale: "background"
14
+ },
15
+ borderRadius: {
16
+ property: "borderRadius",
17
+ scale: "radii"
18
+ }
19
+ });
20
+ //#endregion
21
+ Object.defineProperty(exports, "getPanelId", {
22
+ enumerable: true,
23
+ get: function() {
24
+ return getPanelId;
25
+ }
26
+ });
27
+ Object.defineProperty(exports, "getTabId", {
28
+ enumerable: true,
29
+ get: function() {
30
+ return getTabId;
31
+ }
32
+ });
33
+ Object.defineProperty(exports, "surfaceSystem", {
34
+ enumerable: true,
35
+ get: function() {
36
+ return surfaceSystem;
37
+ }
38
+ });
@@ -0,0 +1,21 @@
1
+ import { a as src_exports } from "./src-DLGYOJMh.mjs";
2
+ //#region src/Tabs/utils/tabIds.ts
3
+ /** A tab's DOM id - what its panel's `aria-labelledby` names. */
4
+ const getTabId = (baseId, value) => `${baseId}-tab-${value}`;
5
+ /** A panel's DOM id - what its tab's `aria-controls` names. */
6
+ const getPanelId = (baseId, value) => `${baseId}-panel-${value}`;
7
+ //#endregion
8
+ //#region src/Tabs/utils/surfaceSystem.ts
9
+ /** `bg` → `theme.background`, `borderRadius` → `theme.radii`: a tab strip's or a panel's surface. */
10
+ const surfaceSystem = (0, src_exports.system)({
11
+ bg: {
12
+ property: "backgroundColor",
13
+ scale: "background"
14
+ },
15
+ borderRadius: {
16
+ property: "borderRadius",
17
+ scale: "radii"
18
+ }
19
+ });
20
+ //#endregion
21
+ export { getPanelId as n, getTabId as r, surfaceSystem as t };