@soroush.tech/design-system 2.1.0-alpha.0 → 2.1.0-alpha.2

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 (277) hide show
  1. package/dist/Accordion/Accordion.d.cts +2 -2
  2. package/dist/Accordion/Accordion.d.mts +2 -2
  3. package/dist/Accordion/AccordionGroup.d.cts +1 -1
  4. package/dist/Accordion/AccordionGroup.d.mts +1 -1
  5. package/dist/Alert/Alert.d.cts +1 -1
  6. package/dist/Alert/Alert.d.mts +1 -1
  7. package/dist/AppBar.d.cts +1 -1
  8. package/dist/AppBar.d.mts +1 -1
  9. package/dist/Autocomplete.d.cts +1 -1
  10. package/dist/Autocomplete.d.mts +1 -1
  11. package/dist/Avatar.d.cts +1 -1
  12. package/dist/Avatar.d.mts +1 -1
  13. package/dist/Backdrop.d.cts +1 -1
  14. package/dist/Backdrop.d.mts +1 -1
  15. package/dist/Badge.d.cts +1 -1
  16. package/dist/Badge.d.mts +1 -1
  17. package/dist/Breadcrumbs.d.cts +3 -3
  18. package/dist/Breadcrumbs.d.mts +3 -3
  19. package/dist/Button.d.cts +1 -1
  20. package/dist/Button.d.mts +1 -1
  21. package/dist/ButtonGroup.d.cts +1 -1
  22. package/dist/ButtonGroup.d.mts +1 -1
  23. package/dist/Card.d.cts +4 -4
  24. package/dist/Card.d.mts +4 -4
  25. package/dist/Checkbox.d.cts +1 -1
  26. package/dist/Checkbox.d.mts +1 -1
  27. package/dist/Chip.d.cts +1 -1
  28. package/dist/Chip.d.mts +1 -1
  29. package/dist/CircularProgress.d.cts +2 -2
  30. package/dist/CircularProgress.d.mts +2 -2
  31. package/dist/Collapse.d.cts +1 -1
  32. package/dist/Collapse.d.mts +1 -1
  33. package/dist/Drawer.d.cts +3 -3
  34. package/dist/Drawer.d.mts +3 -3
  35. package/dist/Fab.d.cts +1 -1
  36. package/dist/Fab.d.mts +1 -1
  37. package/dist/FabMenu/FabMenu.d.cts +1 -1
  38. package/dist/FabMenu/FabMenu.d.mts +1 -1
  39. package/dist/FabMenu/FabMenuItem.d.cts +1 -1
  40. package/dist/FabMenu/FabMenuItem.d.mts +1 -1
  41. package/dist/Fade.d.cts +1 -1
  42. package/dist/Fade.d.mts +1 -1
  43. package/dist/Flex.d.cts +1 -1
  44. package/dist/Flex.d.mts +1 -1
  45. package/dist/Form.d.cts +1 -1
  46. package/dist/Form.d.mts +1 -1
  47. package/dist/FormControl.d.cts +1 -1
  48. package/dist/FormControl.d.mts +1 -1
  49. package/dist/FormHelperText.d.cts +1 -1
  50. package/dist/FormHelperText.d.mts +1 -1
  51. package/dist/FormLabel.d.cts +1 -1
  52. package/dist/FormLabel.d.mts +1 -1
  53. package/dist/Grid.d.cts +1 -1
  54. package/dist/Grid.d.mts +1 -1
  55. package/dist/Grow.d.cts +1 -1
  56. package/dist/Grow.d.mts +1 -1
  57. package/dist/Icon.d.cts +1 -1
  58. package/dist/Icon.d.mts +1 -1
  59. package/dist/Image.d.cts +1 -1
  60. package/dist/Image.d.mts +1 -1
  61. package/dist/LinearProgress.d.cts +2 -2
  62. package/dist/LinearProgress.d.mts +2 -2
  63. package/dist/Link.d.cts +1 -1
  64. package/dist/Link.d.mts +1 -1
  65. package/dist/Menu/ContextMenu.cjs +23 -14
  66. package/dist/Menu/ContextMenu.d.cts +18 -8
  67. package/dist/Menu/ContextMenu.d.mts +18 -8
  68. package/dist/Menu/ContextMenu.mjs +24 -15
  69. package/dist/Menu/Menu.cjs +1 -1
  70. package/dist/Menu/Menu.d.cts +1 -1
  71. package/dist/Menu/Menu.d.mts +1 -1
  72. package/dist/Menu/Menu.mjs +1 -1
  73. package/dist/Menu/MenuItems.cjs +1 -1
  74. package/dist/Menu/MenuItems.d.cts +1 -1
  75. package/dist/Menu/MenuItems.d.mts +1 -1
  76. package/dist/Menu/MenuItems.mjs +1 -1
  77. package/dist/Menu/MenuList.cjs +1 -1
  78. package/dist/Menu/MenuList.d.cts +3 -36
  79. package/dist/Menu/MenuList.d.mts +3 -36
  80. package/dist/Menu/MenuList.mjs +1 -1
  81. package/dist/{Menu-CX9V2DAu.mjs → Menu-Cv887y7O.mjs} +8 -5
  82. package/dist/{Menu-BfJF32J2.cjs → Menu-DOOK_gM9.cjs} +8 -5
  83. package/dist/Menu.cjs +2 -2
  84. package/dist/Menu.d.cts +5 -5
  85. package/dist/Menu.d.mts +5 -5
  86. package/dist/Menu.mjs +2 -2
  87. package/dist/{MenuItem-CvCMGXuL.cjs → MenuItem-BWm8DC-S.cjs} +28 -25
  88. package/dist/{MenuItem-DdPzSWZY.mjs → MenuItem-hJeCsQZX.mjs} +28 -25
  89. package/dist/MenuItem.cjs +1 -1
  90. package/dist/MenuItem.d.cts +1 -1
  91. package/dist/MenuItem.d.mts +1 -1
  92. package/dist/MenuItem.mjs +1 -1
  93. package/dist/{MenuList-DsJmxNPu.cjs → MenuList-CSaaR3jt.cjs} +2 -1
  94. package/dist/{MenuList-CGZgfBno.mjs → MenuList-D7Pvpn_K.mjs} +2 -1
  95. package/dist/{MenuListContext-DJ_qJ1Uo.d.cts → MenuListContext-BN1VV12-.d.mts} +2 -2
  96. package/dist/{MenuListContext-DiZAVDCb.d.mts → MenuListContext-BkQzp2DA.d.cts} +2 -2
  97. package/dist/Modal.d.cts +1 -1
  98. package/dist/Modal.d.mts +1 -1
  99. package/dist/NativeSelect.d.cts +2 -2
  100. package/dist/NativeSelect.d.mts +2 -2
  101. package/dist/NavTree/NavLink.d.cts +1 -1
  102. package/dist/NavTree/NavLink.d.mts +1 -1
  103. package/dist/NavTree/NavTree.d.cts +1 -1
  104. package/dist/NavTree/NavTree.d.mts +1 -1
  105. package/dist/NumberInput.d.cts +1 -1
  106. package/dist/NumberInput.d.mts +1 -1
  107. package/dist/Pagination/PaginationItem.d.cts +1 -1
  108. package/dist/Pagination/PaginationItem.d.mts +1 -1
  109. package/dist/Pagination.d.cts +2 -2
  110. package/dist/Pagination.d.mts +2 -2
  111. package/dist/Paper.d.cts +2 -2
  112. package/dist/Paper.d.mts +2 -2
  113. package/dist/Popover.d.cts +3 -3
  114. package/dist/Popover.d.mts +3 -3
  115. package/dist/Pressable.d.cts +1 -1
  116. package/dist/Pressable.d.mts +1 -1
  117. package/dist/Quote.d.cts +2 -2
  118. package/dist/Quote.d.mts +2 -2
  119. package/dist/Radio.d.cts +1 -1
  120. package/dist/Radio.d.mts +1 -1
  121. package/dist/RangeInput.d.cts +1 -1
  122. package/dist/RangeInput.d.mts +1 -1
  123. package/dist/Rating.d.cts +1 -1
  124. package/dist/Rating.d.mts +1 -1
  125. package/dist/ScrollArea.d.cts +1 -1
  126. package/dist/ScrollArea.d.mts +1 -1
  127. package/dist/Select.d.cts +2 -2
  128. package/dist/Select.d.mts +2 -2
  129. package/dist/Sidebar/Sidebar.d.cts +1 -1
  130. package/dist/Sidebar/Sidebar.d.mts +1 -1
  131. package/dist/Sidebar/SidebarItem.d.cts +3 -3
  132. package/dist/Sidebar/SidebarItem.d.mts +3 -3
  133. package/dist/Skeleton.d.cts +1 -1
  134. package/dist/Skeleton.d.mts +1 -1
  135. package/dist/Slide.d.cts +1 -1
  136. package/dist/Slide.d.mts +1 -1
  137. package/dist/Snackbar.d.cts +2 -2
  138. package/dist/Snackbar.d.mts +2 -2
  139. package/dist/Switch.d.cts +1 -1
  140. package/dist/Switch.d.mts +1 -1
  141. package/dist/Table/Table.d.cts +2 -2
  142. package/dist/Table/Table.d.mts +2 -2
  143. package/dist/Table/TableBody.d.cts +1 -1
  144. package/dist/Table/TableBody.d.mts +1 -1
  145. package/dist/Table/TableCell.d.cts +1 -1
  146. package/dist/Table/TableCell.d.mts +1 -1
  147. package/dist/Table/TableContainer.d.cts +1 -1
  148. package/dist/Table/TableContainer.d.mts +1 -1
  149. package/dist/Table/TableControl.d.cts +1 -1
  150. package/dist/Table/TableControl.d.mts +1 -1
  151. package/dist/Table/TableFooter.d.cts +1 -1
  152. package/dist/Table/TableFooter.d.mts +1 -1
  153. package/dist/Table/TableHead.d.cts +1 -1
  154. package/dist/Table/TableHead.d.mts +1 -1
  155. package/dist/Table/TablePagination.d.cts +2 -2
  156. package/dist/Table/TablePagination.d.mts +2 -2
  157. package/dist/Table/TablePaginationActions.d.cts +1 -1
  158. package/dist/Table/TablePaginationActions.d.mts +1 -1
  159. package/dist/Table/TableRow.d.cts +1 -1
  160. package/dist/Table/TableRow.d.mts +1 -1
  161. package/dist/Table/TableSortLabel.d.cts +1 -1
  162. package/dist/Table/TableSortLabel.d.mts +1 -1
  163. package/dist/Table/hooks.d.cts +1 -1
  164. package/dist/Table/hooks.d.mts +1 -1
  165. package/dist/Table.d.cts +5 -5
  166. package/dist/Table.d.mts +5 -5
  167. package/dist/{TableContext-4sJdk84N.d.cts → TableContext-BNwokJ3f.d.cts} +1 -1
  168. package/dist/{TableContext-BCW5av9c.d.mts → TableContext-jOlk5jxs.d.mts} +1 -1
  169. package/dist/Tabs/Tab.cjs +18 -14
  170. package/dist/Tabs/Tab.d.cts +2 -2
  171. package/dist/Tabs/Tab.d.mts +2 -2
  172. package/dist/Tabs/Tab.mjs +18 -14
  173. package/dist/Tabs/TabContext.d.cts +1 -1
  174. package/dist/Tabs/TabContext.d.mts +1 -1
  175. package/dist/Tabs/TabList.cjs +1 -1
  176. package/dist/Tabs/TabList.d.cts +1 -1
  177. package/dist/Tabs/TabList.d.mts +1 -1
  178. package/dist/Tabs/TabList.mjs +1 -1
  179. package/dist/Tabs/TabPanel.d.cts +2 -2
  180. package/dist/Tabs/TabPanel.d.mts +2 -2
  181. package/dist/Tabs/TabScrollButton.d.cts +1 -1
  182. package/dist/Tabs/TabScrollButton.d.mts +1 -1
  183. package/dist/Tabs/Tabs.cjs +1 -1
  184. package/dist/Tabs/Tabs.d.cts +2 -2
  185. package/dist/Tabs/Tabs.d.mts +2 -2
  186. package/dist/Tabs/Tabs.mjs +1 -1
  187. package/dist/{Tabs-CPH0H6yp.cjs → Tabs-BTa2myRe.cjs} +28 -21
  188. package/dist/{Tabs-CG-hRs9L.mjs → Tabs-CE8iDr0D.mjs} +28 -21
  189. package/dist/Tabs.cjs +1 -1
  190. package/dist/Tabs.d.cts +3 -3
  191. package/dist/Tabs.d.mts +3 -3
  192. package/dist/Tabs.mjs +1 -1
  193. package/dist/{TabsContext-CsiW5MOp.d.mts → TabsContext-D5E7s9i5.d.mts} +1 -1
  194. package/dist/{TabsContext-DrmDtBqA.d.cts → TabsContext-i57cha5W.d.cts} +1 -1
  195. package/dist/TextInput.d.cts +1 -1
  196. package/dist/TextInput.d.mts +1 -1
  197. package/dist/ToggleButton/ToggleButton.d.cts +1 -1
  198. package/dist/ToggleButton/ToggleButton.d.mts +1 -1
  199. package/dist/ToggleButton/ToggleButtonGroup.d.cts +1 -1
  200. package/dist/ToggleButton/ToggleButtonGroup.d.mts +1 -1
  201. package/dist/Tooltip-Cx4ez9vY.mjs +405 -0
  202. package/dist/Tooltip-rkGm1HnP.cjs +417 -0
  203. package/dist/Tooltip.cjs +3 -311
  204. package/dist/Tooltip.d.cts +36 -5
  205. package/dist/Tooltip.d.mts +36 -5
  206. package/dist/Tooltip.mjs +1 -310
  207. package/dist/TransferList.d.cts +1 -1
  208. package/dist/TransferList.d.mts +1 -1
  209. package/dist/Typography.d.cts +2 -2
  210. package/dist/Typography.d.mts +2 -2
  211. package/dist/View.d.cts +1 -1
  212. package/dist/View.d.mts +1 -1
  213. package/dist/Zoom.d.cts +1 -1
  214. package/dist/Zoom.d.mts +1 -1
  215. package/dist/catalog.cjs +4 -0
  216. package/dist/catalog.d.cts +1 -1
  217. package/dist/catalog.d.mts +1 -1
  218. package/dist/catalog.mjs +4 -0
  219. package/dist/engine.d.cts +1 -1
  220. package/dist/engine.d.mts +1 -1
  221. package/dist/{index-D24iFgwR.d.cts → index-3-LXZL7g.d.mts} +3 -3
  222. package/dist/{index-BWiDilH8.d.mts → index-B-1sp9oV.d.mts} +7 -0
  223. package/dist/{index-C3TrdOpQ.d.cts → index-BDVi1DNs.d.mts} +3 -3
  224. package/dist/{index-5TAVgzbU.d.mts → index-BJIqJbF4.d.mts} +2 -2
  225. package/dist/{index-Bx-4KmJU.d.mts → index-BMeqk34D.d.mts} +1 -1
  226. package/dist/{index-DQYhGgbl.d.cts → index-BYg-l1_n.d.cts} +2 -2
  227. package/dist/{index-Biqn5xUs.d.mts → index-BbWQZ2Wj.d.mts} +4 -4
  228. package/dist/{index-DKNvADeE.d.mts → index-BhWBXIkH.d.cts} +3 -3
  229. package/dist/{index-DWon54cO.d.cts → index-BwFPSXSw.d.mts} +1 -1
  230. package/dist/{index-Bo8Og0oC.d.cts → index-Bwry7fNj.d.mts} +3 -3
  231. package/dist/{index-CeFExef3.d.cts → index-C3D70-3U.d.mts} +2 -2
  232. package/dist/{index-HLDMvfb2.d.cts → index-C6uLwNRF.d.cts} +4 -4
  233. package/dist/{index-BgmEVOSj.d.mts → index-C9jnQ-mQ.d.mts} +1 -1
  234. package/dist/{index-D--R4_5H.d.mts → index-CGlDeiGk.d.cts} +2 -2
  235. package/dist/{index-DvVQLBZc.d.cts → index-CK-uaK5U.d.cts} +7 -0
  236. package/dist/{index-DjmWIzXF.d.mts → index-CLTH0nFB.d.cts} +3 -3
  237. package/dist/{index-Dt-ZNTnC.d.cts → index-COGZ6LV4.d.mts} +1 -1
  238. package/dist/{index-DhzjNAzv.d.mts → index-CPmemva9.d.mts} +10 -5
  239. package/dist/{index-CW0DW6Aq.d.mts → index-CRbfhyQ6.d.mts} +2 -2
  240. package/dist/{index-m1RGSQlP.d.mts → index-CZofj6vc.d.cts} +3 -3
  241. package/dist/{index-Buu5MtRG.d.mts → index-C_K0hsEr.d.mts} +1 -1
  242. package/dist/index-C_n4ZPpQ.d.mts +1 -0
  243. package/dist/{index-fRyMPKtY.d.cts → index-Cc7Yhn7-.d.cts} +1 -1
  244. package/dist/{index-DgLjcrkG.d.cts → index-Cf2D7Y1b.d.cts} +1 -1
  245. package/dist/{index-YKXzINGk.d.mts → index-ClTo3BEJ.d.mts} +2 -2
  246. package/dist/{index-DR76LcSz.d.mts → index-CoHM1HQY.d.cts} +1 -1
  247. package/dist/{index-DtVrZFJI.d.mts → index-Cp96BUYc.d.cts} +2 -2
  248. package/dist/{index-CAICXdTA.d.cts → index-CvV0TCBK.d.cts} +1 -1
  249. package/dist/{index-DhTzn0mf.d.cts → index-CwWM6Xfz.d.cts} +1 -1
  250. package/dist/{index-BlHFb150.d.cts → index-CykbbqeN.d.cts} +2 -2
  251. package/dist/{index-Ba39mhDf.d.cts → index-DA3M2w5w.d.cts} +10 -5
  252. package/dist/index-DOimZ1Wo.d.mts +44 -0
  253. package/dist/{index-HAVWK7RM.d.cts → index-DOnYRzqY.d.cts} +2 -2
  254. package/dist/{index-BYAtunSZ.d.cts → index-DPCh-ols.d.mts} +2 -2
  255. package/dist/{index-CBOtkDdX.d.cts → index-DXUVsHux.d.mts} +1 -1
  256. package/dist/{index-DrfJt7W6.d.cts → index-Dh_9qMhj.d.mts} +2 -2
  257. package/dist/index-DiQHPHUv.d.cts +44 -0
  258. package/dist/{index-CyOSmefH.d.cts → index-F81TdZtB.d.mts} +2 -2
  259. package/dist/{index-DM7HHa4V.d.mts → index-YxsjfTkO.d.cts} +2 -2
  260. package/dist/{index-Bp9ECTzr.d.mts → index-d5jm3kxO.d.cts} +2 -2
  261. package/dist/index-fwRQcB91.d.cts +1 -0
  262. package/dist/{index-D_azfqsX.d.mts → index-qgFJF8n2.d.cts} +1 -1
  263. package/dist/{index-DtK3SaKA.d.mts → index-vls8Jhdl.d.cts} +1 -1
  264. package/dist/{index-Dudkopvi.d.mts → index-xhbtDtsc.d.mts} +1 -1
  265. package/dist/index.d.cts +1 -1
  266. package/dist/index.d.mts +1 -1
  267. package/dist/style.d.cts +2 -2
  268. package/dist/style.d.mts +2 -2
  269. package/dist/theme.d.cts +2 -2
  270. package/dist/theme.d.mts +2 -2
  271. package/dist/{useTablePagination-BOzuKUnF.d.mts → useTablePagination-DOLl6Ba7.d.cts} +1 -1
  272. package/dist/{useTablePagination-CraL2Mux.d.cts → useTablePagination-bZTeweJ_.d.mts} +1 -1
  273. package/dist/{useTransition-B-hzi7Sm.d.mts → useTransition-Dk84FQFT.d.mts} +1 -1
  274. package/dist/{useTransition-CF_Zy_tM.d.cts → useTransition-DnOAXNav.d.cts} +1 -1
  275. package/package.json +1 -1
  276. package/dist/index-6zQ2VUlM.d.cts +0 -1
  277. package/dist/index-B1qv6yGM.d.mts +0 -1
package/dist/Tooltip.cjs CHANGED
@@ -1,312 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_src = require("./src-yC1f5WR2.cjs");
3
- const require_theme = require("./theme-XJvMdOnY.cjs");
4
- const require_themeDefault = require("./themeDefault-DbPHBbNO.cjs");
5
- const require_getSurfaceRadius = require("./getSurfaceRadius-DwOn3ALC.cjs");
6
- const require_useControlled = require("./useControlled-CzCxM4J3.cjs");
7
- const require_Portal = require("./Portal.cjs");
8
- const require_useAnchoredPlacement = require("./useAnchoredPlacement-BSfjNMut.cjs");
9
- const require_useMergedRefs = require("./useMergedRefs-BtctsnmX.cjs");
10
- const require_getTooltipOrigins = require("./getTooltipOrigins-8b5zQafY.cjs");
11
- let react = require("react");
12
- let react_jsx_runtime = require("react/jsx-runtime");
13
- let _soroush_tech_styled_system_should_forward_prop = require("@soroush.tech/styled-system/should-forward-prop");
14
- // src/Tooltip/hooks/useTooltip.ts
15
- const isKeyboardFocus = (event) => {
16
- try {
17
- return event.target.matches(":focus-visible");
18
- } catch {
19
- return true;
20
- }
21
- };
22
- /**
23
- * The state of a tooltip: whether it is open (its own, or its owner's), the timers that open and
24
- * close it, and the handlers its child and the tooltip itself take. Opening and closing are
25
- * delayed; moving from the child onto the tooltip does not close it, so its text can be read and
26
- * selected (WCAG 1.4.13); Escape closes it at once.
27
- */
28
- function useTooltip({ isOpen: isOpenProp, defaultOpen, isAtPoint = false, onOpen, onClose, enterDelay, leaveDelay, enterTouchDelay, leaveTouchDelay, shouldOpenOnHover, shouldOpenOnFocus, shouldOpenOnTouch }) {
29
- const [isOpen, setIsOpen] = require_useControlled.useControlled({
30
- controlled: isOpenProp,
31
- default: defaultOpen
32
- });
33
- const timer = (0, react.useRef)(void 0);
34
- const latest = (0, react.useRef)({
35
- isOpen,
36
- isOpenProp,
37
- isAtPoint,
38
- onOpen,
39
- onClose
40
- });
41
- (0, react.useEffect)(() => {
42
- latest.current = {
43
- isOpen,
44
- isOpenProp,
45
- isAtPoint,
46
- onOpen,
47
- onClose
48
- };
49
- });
50
- const clear = (0, react.useCallback)(() => window.clearTimeout(timer.current), []);
51
- const ask = (0, react.useCallback)((next, event, delay) => {
52
- clear();
53
- timer.current = window.setTimeout(() => {
54
- const current = latest.current;
55
- if (current.isOpen === next) return;
56
- if (next && current.isAtPoint) return;
57
- if (current.isOpenProp === void 0) setIsOpen(next);
58
- (next ? current.onOpen : current.onClose)?.(event);
59
- }, delay);
60
- }, [clear, setIsOpen]);
61
- (0, react.useEffect)(() => clear, [clear]);
62
- (0, react.useEffect)(() => {
63
- if (!isOpen) return void 0;
64
- const handleKeyDown = (event) => {
65
- if (event.key === "Escape") ask(false, event, 0);
66
- };
67
- document.addEventListener("keydown", handleKeyDown);
68
- return () => document.removeEventListener("keydown", handleKeyDown);
69
- }, [isOpen, ask]);
70
- return {
71
- isOpen,
72
- childHandlers: {
73
- onMouseEnter: (event) => {
74
- if (shouldOpenOnHover) ask(true, event, enterDelay);
75
- },
76
- onMouseLeave: (event) => {
77
- if (shouldOpenOnHover) ask(false, event, leaveDelay);
78
- },
79
- onFocus: (event) => {
80
- if (shouldOpenOnFocus && isKeyboardFocus(event)) ask(true, event, enterDelay);
81
- },
82
- onBlur: (event) => {
83
- if (shouldOpenOnFocus) ask(false, event, leaveDelay);
84
- },
85
- onTouchStart: (event) => {
86
- if (shouldOpenOnTouch) ask(true, event, enterTouchDelay);
87
- },
88
- onTouchEnd: (event) => {
89
- if (shouldOpenOnTouch) ask(false, event, leaveTouchDelay);
90
- },
91
- onTouchCancel: (event) => {
92
- if (shouldOpenOnTouch) ask(false, event, leaveTouchDelay);
93
- },
94
- onPointerDown: (event) => {
95
- if (event.pointerType !== "touch") ask(false, event, 0);
96
- }
97
- },
98
- surfaceHandlers: {
99
- onMouseEnter: () => {
100
- if (shouldOpenOnHover) clear();
101
- },
102
- onMouseLeave: (event) => {
103
- if (shouldOpenOnHover) ask(false, event, leaveDelay);
104
- }
105
- }
106
- };
107
- }
108
- // src/Tooltip/Tooltip.tsx
109
- const MARGIN = 8;
110
- const GAP = 8;
111
- const ARROW = 8;
112
- const TooltipSurface = require_src.styled("div", {
113
- name: "Tooltip",
114
- label: "Tooltip",
115
- shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)([
116
- "layer",
117
- "isInteractive",
118
- "borderRadius",
119
- "bg",
120
- "textColor"
121
- ])
122
- })(({ theme, layer, isInteractive, borderRadius, bg, textColor }) => ({
123
- position: "fixed",
124
- ...!isInteractive && { pointerEvents: "none" },
125
- top: 0,
126
- left: 0,
127
- visibility: "hidden",
128
- zIndex: theme.zOrder[layer],
129
- boxSizing: "border-box",
130
- maxWidth: "20rem",
131
- padding: `${theme.space[.5]} ${theme.space[1]}`,
132
- borderRadius: require_getSurfaceRadius.getSurfaceRadius(theme, borderRadius),
133
- boxShadow: theme.shadows[4],
134
- backgroundColor: (0, require_src.src_exports.get)(theme, `background.${bg ?? "modal"}`),
135
- color: (0, require_src.src_exports.get)(theme, `text.${textColor ?? require_themeDefault.themeDefault(theme, "textColor", "initial")}`),
136
- fontFamily: (0, require_src.src_exports.get)(theme, "fonts.body"),
137
- fontSize: theme.fontSizes[0],
138
- lineHeight: (0, require_src.src_exports.get)(theme, "lineHeights.base"),
139
- overflowWrap: "break-word"
140
- }));
141
- const TooltipDescription = require_src.styled("span", { label: "TooltipDescription" })({
142
- position: "absolute",
143
- width: 1,
144
- height: 1,
145
- margin: -1,
146
- padding: 0,
147
- border: 0,
148
- overflow: "hidden",
149
- clip: "rect(0 0 0 0)",
150
- whiteSpace: "nowrap"
151
- });
152
- const TooltipTarget = require_src.styled("span", { label: "TooltipTarget" })({ display: "inline-grid" });
153
- const TooltipArrow = require_src.styled("span", {
154
- name: "Tooltip",
155
- slot: "arrow",
156
- label: "TooltipArrow"
157
- })({
158
- position: "absolute",
159
- width: ARROW,
160
- height: ARROW,
161
- backgroundColor: "inherit",
162
- transform: "rotate(45deg)",
163
- pointerEvents: "none"
164
- });
165
- const getArrow = ({ anchorRect, surfaceSize, top, left }) => {
166
- const { width, height } = surfaceSize;
167
- if (top + height <= anchorRect.top + 1 || top >= anchorRect.bottom - 1) {
168
- const side = top + height <= anchorRect.top + 1 ? "top" : "bottom";
169
- const middle = anchorRect.left + anchorRect.width / 2 - left;
170
- return {
171
- side,
172
- offset: Math.min(Math.max(middle, ARROW), width - ARROW)
173
- };
174
- }
175
- const side = left + width <= anchorRect.left + 1 ? "left" : "right";
176
- const middle = anchorRect.top + anchorRect.height / 2 - top;
177
- return {
178
- side,
179
- offset: Math.min(Math.max(middle, ARROW), height - ARROW)
180
- };
181
- };
182
- const isSameArrow = (a, b) => a !== null && a.side === b.side && a.offset === b.offset;
183
- const getArrowStyle = ({ side, offset }) => {
184
- const half = ARROW / 2;
185
- if (side === "top") return {
186
- bottom: -4,
187
- left: offset - half
188
- };
189
- if (side === "bottom") return {
190
- top: -4,
191
- left: offset - half
192
- };
193
- if (side === "left") return {
194
- right: -4,
195
- top: offset - half
196
- };
197
- return {
198
- left: -4,
199
- top: offset - half
200
- };
201
- };
202
- /**
203
- * @description A short description of one child, shown on hover, keyboard focus and a long touch -
204
- * a `role="tooltip"` in a `Portal`, placed beside its child and flipped for want of room. The
205
- * child is named by it (`aria-label`) or described by it (`aria-describedby`, with
206
- * `shouldDescribeChild`). It opens and closes after their delays, stays open while the pointer is
207
- * on the tooltip itself, closes on Escape, and never takes or traps the focus.
208
- */
209
- function Tooltip({ children, anchorPosition, title, placement: placementProp, hasArrow: hasArrowProp, enterDelay: enterDelayProp, leaveDelay: leaveDelayProp, enterTouchDelay: enterTouchDelayProp, leaveTouchDelay: leaveTouchDelayProp, shouldDescribeChild: shouldDescribeChildProp, isDescriptionPersistent: isDescriptionPersistentProp, isOpen: isOpenProp, defaultOpen = false, onOpen, onClose, isInteractive: isInteractiveProp, shouldOpenOnHover: shouldOpenOnHoverProp, shouldOpenOnFocus: shouldOpenOnFocusProp, shouldOpenOnTouch: shouldOpenOnTouchProp, slots, slotProps, layer: layerProp, borderRadius: borderRadiusProp, bg: bgProp, textColor: textColorProp, className, "data-testid": dataTestid }) {
210
- const dp = require_theme.useDefaultProps("Tooltip");
211
- const placement = placementProp ?? dp.placement ?? "top";
212
- const hasArrow = hasArrowProp ?? dp.hasArrow ?? false;
213
- const shouldDescribeChild = shouldDescribeChildProp ?? dp.shouldDescribeChild ?? false;
214
- const isDescriptionPersistent = isDescriptionPersistentProp ?? dp.isDescriptionPersistent ?? false;
215
- const isInteractive = isInteractiveProp ?? dp.isInteractive ?? true;
216
- const layer = layerProp ?? dp.layer ?? "tooltip";
217
- const borderRadius = borderRadiusProp ?? dp.borderRadius;
218
- const bg = bgProp ?? dp.bg;
219
- const textColor = textColorProp ?? dp.textColor;
220
- const id = (0, react.useId)();
221
- const isAtPoint = anchorPosition !== void 0;
222
- const { isOpen, childHandlers, surfaceHandlers } = useTooltip({
223
- isOpen: isOpenProp,
224
- defaultOpen,
225
- isAtPoint,
226
- onOpen,
227
- onClose,
228
- enterDelay: enterDelayProp ?? dp.enterDelay ?? 100,
229
- leaveDelay: leaveDelayProp ?? dp.leaveDelay ?? 0,
230
- enterTouchDelay: enterTouchDelayProp ?? dp.enterTouchDelay ?? 700,
231
- leaveTouchDelay: leaveTouchDelayProp ?? dp.leaveTouchDelay ?? 1500,
232
- shouldOpenOnHover: shouldOpenOnHoverProp ?? dp.shouldOpenOnHover ?? true,
233
- shouldOpenOnFocus: shouldOpenOnFocusProp ?? dp.shouldOpenOnFocus ?? true,
234
- shouldOpenOnTouch: shouldOpenOnTouchProp ?? dp.shouldOpenOnTouch ?? true
235
- });
236
- const hasTitle = title !== void 0 && title !== null && title !== "";
237
- const isShown = isOpen && hasTitle;
238
- const anchorRef = (0, react.useRef)(null);
239
- const noAnchorRef = (0, react.useRef)(null);
240
- const surfaceRef = (0, react.useRef)(null);
241
- const own = children?.props ?? {};
242
- const isChildDisabled = own.disabled === true;
243
- const ref = require_useMergedRefs.useMergedRefs(isChildDisabled ? void 0 : anchorRef, own.ref);
244
- const [arrow, setArrow] = (0, react.useState)(null);
245
- const getOrigins = (0, react.useCallback)((context) => require_getTooltipOrigins.getTooltipOrigins(require_getTooltipOrigins.resolveTooltipPlacement(placement, context), context.isRtl), [placement]);
246
- const onPlaced = (0, react.useCallback)((placed) => {
247
- if (!hasArrow) return;
248
- const next = getArrow(placed);
249
- setArrow((current) => isSameArrow(current, next) ? current : next);
250
- }, [hasArrow]);
251
- require_useAnchoredPlacement.useAnchoredPlacement({
252
- isOpen: isShown,
253
- anchorRef: anchorPosition ? noAnchorRef : anchorRef,
254
- anchorPosition,
255
- surfaceRef,
256
- getOrigins,
257
- margin: MARGIN,
258
- gap: GAP,
259
- onPlaced
260
- });
261
- const handlers = Object.fromEntries(Object.entries(childHandlers).map(([name, handler]) => [name, (event) => {
262
- own[name]?.(event);
263
- handler(event);
264
- }]));
265
- const ownDescription = own["aria-describedby"];
266
- const names = typeof title === "string" && own["aria-label"] === void 0 && own["aria-labelledby"] === void 0 ? { "aria-label": title } : {};
267
- const descriptionId = `${id}-description`;
268
- const hasPersistentDescription = children !== void 0 && shouldDescribeChild && isDescriptionPersistent && hasTitle;
269
- const describedBy = (shown) => hasPersistentDescription ? [ownDescription, descriptionId].filter(Boolean).join(" ") : [ownDescription, shown ? id : void 0].filter(Boolean).join(" ") || void 0;
270
- const ariaProps = shouldDescribeChild ? { "aria-describedby": describedBy(isShown) } : names;
271
- const child = children ? (0, react.cloneElement)(children, {
272
- ...isChildDisabled || isAtPoint ? {} : handlers,
273
- ...ariaProps,
274
- ref
275
- }) : null;
276
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
277
- isChildDisabled && !isAtPoint ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TooltipTarget, {
278
- ref: anchorRef,
279
- ...handlers,
280
- children: child
281
- }) : child,
282
- hasPersistentDescription && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TooltipDescription, {
283
- id: descriptionId,
284
- children: title
285
- }),
286
- isShown && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Portal.Portal, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TooltipSurface, {
287
- ...slotProps?.root,
288
- as: slots?.root,
289
- ref: surfaceRef,
290
- id,
291
- role: "tooltip",
292
- layer,
293
- isInteractive,
294
- borderRadius,
295
- bg,
296
- textColor,
297
- className: [slotProps?.root?.className, className].filter(Boolean).join(" ") || void 0,
298
- "data-testid": dataTestid ?? slotProps?.root?.["data-testid"],
299
- ...isAtPoint || !isInteractive ? {} : surfaceHandlers,
300
- children: [title, hasArrow && arrow ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TooltipArrow, {
301
- ...slotProps?.arrow,
302
- as: slots?.arrow,
303
- style: {
304
- ...slotProps?.arrow?.style,
305
- ...getArrowStyle(arrow)
306
- },
307
- "aria-hidden": "true"
308
- }) : null]
309
- }) })
310
- ] });
311
- }
312
- exports.Tooltip = Tooltip;
2
+ const require_Tooltip = require("./Tooltip-rkGm1HnP.cjs");
3
+ exports.Tooltip = require_Tooltip.Tooltip;
4
+ exports.TooltipGroup = require_Tooltip.TooltipGroup;
@@ -1,6 +1,6 @@
1
- import { nt as Theme } from "./index-DvVQLBZc.cjs";
1
+ import { nt as Theme } from "./index-CK-uaK5U.cjs";
2
2
  import { n as PopoverPosition } from "./computePopoverPosition-JgOwCM7k.cjs";
3
- import { ElementType, HTMLAttributes, ReactElement, ReactNode, SyntheticEvent } from "react";
3
+ import { ElementType, HTMLAttributes, ReactElement, ReactNode, Ref, SyntheticEvent } from "react";
4
4
  /** A side of its child a tooltip sits on - and, after the dash, which end of that side it lines up with. */
5
5
  type FixedTooltipPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
6
6
  /** A fixed placement, or `auto` - the side with the most room, chosen as it is placed. */
@@ -16,7 +16,14 @@ interface TooltipSlotProps {
16
16
  root?: SlotProps;
17
17
  arrow?: SlotProps;
18
18
  }
19
- interface TooltipProps {
19
+ /**
20
+ * What a parent that clones its child (a `Menu` with a `Tooltip` for a trigger) hands the tooltip
21
+ * instead: it is not the tooltip's, so it goes on to the child. The tooltip's own props are left out.
22
+ */
23
+ type TooltipForwardedProps = Omit<HTMLAttributes<HTMLElement>, 'title' | 'children' | 'className' | 'color'> & {
24
+ ref?: Ref<HTMLElement>;
25
+ };
26
+ interface TooltipProps extends TooltipForwardedProps {
20
27
  /**
21
28
  * The one element the tooltip is about - it holds a `ref` and takes the handlers. Without it, the
22
29
  * tooltip is at `anchorPosition`, and open when `isOpen` says so.
@@ -62,6 +69,12 @@ interface TooltipProps {
62
69
  onOpen?: (event: Event | SyntheticEvent) => void;
63
70
  /** Fired when it asks to close. */
64
71
  onClose?: (event: Event | SyntheticEvent) => void;
72
+ /**
73
+ * Whether a disabled child (`disabled`) is wrapped in an element of its own, which takes the pointer
74
+ * handlers and the placement, since a disabled control sends no pointer events. Left out for a child
75
+ * that is only marked disabled and still takes them - a menu row. Default: `true`.
76
+ */
77
+ shouldWrapDisabledChild?: boolean;
65
78
  /**
66
79
  * Whether the pointer can be moved onto the tooltip, which then stays open (WCAG 1.4.13). With
67
80
  * `false` it takes no pointer events - a click goes to what is under it - and closes as the
@@ -92,5 +105,23 @@ interface TooltipProps {
92
105
  * `shouldDescribeChild`). It opens and closes after their delays, stays open while the pointer is
93
106
  * on the tooltip itself, closes on Escape, and never takes or traps the focus.
94
107
  */
95
- declare function Tooltip({ children, anchorPosition, title, placement: placementProp, hasArrow: hasArrowProp, enterDelay: enterDelayProp, leaveDelay: leaveDelayProp, enterTouchDelay: enterTouchDelayProp, leaveTouchDelay: leaveTouchDelayProp, shouldDescribeChild: shouldDescribeChildProp, isDescriptionPersistent: isDescriptionPersistentProp, isOpen: isOpenProp, defaultOpen, onOpen, onClose, isInteractive: isInteractiveProp, shouldOpenOnHover: shouldOpenOnHoverProp, shouldOpenOnFocus: shouldOpenOnFocusProp, shouldOpenOnTouch: shouldOpenOnTouchProp, slots, slotProps, layer: layerProp, borderRadius: borderRadiusProp, bg: bgProp, textColor: textColorProp, className, 'data-testid': dataTestid }: Readonly<TooltipProps>): import("react").JSX.Element;
96
- export { Tooltip, type TooltipPlacement, TooltipProps, TooltipSlotProps, TooltipSlots };
108
+ declare function Tooltip({ children, anchorPosition, title, placement: placementProp, hasArrow: hasArrowProp, enterDelay: enterDelayProp, leaveDelay: leaveDelayProp, enterTouchDelay: enterTouchDelayProp, leaveTouchDelay: leaveTouchDelayProp, shouldDescribeChild: shouldDescribeChildProp, isDescriptionPersistent: isDescriptionPersistentProp, isOpen: isOpenProp, defaultOpen, onOpen, onClose, isInteractive: isInteractiveProp, shouldWrapDisabledChild: shouldWrapDisabledChildProp, shouldOpenOnHover: shouldOpenOnHoverProp, shouldOpenOnFocus: shouldOpenOnFocusProp, shouldOpenOnTouch: shouldOpenOnTouchProp, slots, slotProps, layer: layerProp, borderRadius: borderRadiusProp, bg: bgProp, textColor: textColorProp, className, 'data-testid': dataTestid, ref: forwardedRef, ...forwarded }: Readonly<TooltipProps>): import("react").JSX.Element;
109
+ interface TooltipGroupProps {
110
+ children?: ReactNode;
111
+ /**
112
+ * How long after a tooltip of the group closes the next one opens with no enter delay, in
113
+ * milliseconds - and for as long as one is open. After it, the tooltip's own `enterDelay`
114
+ * applies again. A tooltip that opens closes the one still showing, at once. It wins over
115
+ * `skipDelayDuration` in `theme.components.Tooltip.defaultProps`.
116
+ */
117
+ skipDelayDuration?: number;
118
+ }
119
+ /**
120
+ * Lets the tooltips inside it open at once, with no enter delay, when the pointer or the focus
121
+ * moves to the next one just after another closed - a toolbar or a rail read from one icon to the
122
+ * next. It renders nothing of its own. Tooltips outside a group are unchanged, a touch keeps its
123
+ * own delay, and a tooltip whose `isOpen` the app controls is left alone: the group neither opens
124
+ * nor closes it, and it does not start the window.
125
+ */
126
+ declare function TooltipGroup({ children, skipDelayDuration }: Readonly<TooltipGroupProps>): import("react").JSX.Element;
127
+ export { Tooltip, TooltipForwardedProps, TooltipGroup, TooltipGroupProps, type TooltipPlacement, TooltipProps, TooltipSlotProps, TooltipSlots };
@@ -1,6 +1,6 @@
1
- import { nt as Theme } from "./index-BWiDilH8.mjs";
1
+ import { nt as Theme } from "./index-B-1sp9oV.mjs";
2
2
  import { n as PopoverPosition } from "./computePopoverPosition-JgOwCM7k.mjs";
3
- import { ElementType, HTMLAttributes, ReactElement, ReactNode, SyntheticEvent } from "react";
3
+ import { ElementType, HTMLAttributes, ReactElement, ReactNode, Ref, SyntheticEvent } from "react";
4
4
  /** A side of its child a tooltip sits on - and, after the dash, which end of that side it lines up with. */
5
5
  type FixedTooltipPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
6
6
  /** A fixed placement, or `auto` - the side with the most room, chosen as it is placed. */
@@ -16,7 +16,14 @@ interface TooltipSlotProps {
16
16
  root?: SlotProps;
17
17
  arrow?: SlotProps;
18
18
  }
19
- interface TooltipProps {
19
+ /**
20
+ * What a parent that clones its child (a `Menu` with a `Tooltip` for a trigger) hands the tooltip
21
+ * instead: it is not the tooltip's, so it goes on to the child. The tooltip's own props are left out.
22
+ */
23
+ type TooltipForwardedProps = Omit<HTMLAttributes<HTMLElement>, 'title' | 'children' | 'className' | 'color'> & {
24
+ ref?: Ref<HTMLElement>;
25
+ };
26
+ interface TooltipProps extends TooltipForwardedProps {
20
27
  /**
21
28
  * The one element the tooltip is about - it holds a `ref` and takes the handlers. Without it, the
22
29
  * tooltip is at `anchorPosition`, and open when `isOpen` says so.
@@ -62,6 +69,12 @@ interface TooltipProps {
62
69
  onOpen?: (event: Event | SyntheticEvent) => void;
63
70
  /** Fired when it asks to close. */
64
71
  onClose?: (event: Event | SyntheticEvent) => void;
72
+ /**
73
+ * Whether a disabled child (`disabled`) is wrapped in an element of its own, which takes the pointer
74
+ * handlers and the placement, since a disabled control sends no pointer events. Left out for a child
75
+ * that is only marked disabled and still takes them - a menu row. Default: `true`.
76
+ */
77
+ shouldWrapDisabledChild?: boolean;
65
78
  /**
66
79
  * Whether the pointer can be moved onto the tooltip, which then stays open (WCAG 1.4.13). With
67
80
  * `false` it takes no pointer events - a click goes to what is under it - and closes as the
@@ -92,5 +105,23 @@ interface TooltipProps {
92
105
  * `shouldDescribeChild`). It opens and closes after their delays, stays open while the pointer is
93
106
  * on the tooltip itself, closes on Escape, and never takes or traps the focus.
94
107
  */
95
- declare function Tooltip({ children, anchorPosition, title, placement: placementProp, hasArrow: hasArrowProp, enterDelay: enterDelayProp, leaveDelay: leaveDelayProp, enterTouchDelay: enterTouchDelayProp, leaveTouchDelay: leaveTouchDelayProp, shouldDescribeChild: shouldDescribeChildProp, isDescriptionPersistent: isDescriptionPersistentProp, isOpen: isOpenProp, defaultOpen, onOpen, onClose, isInteractive: isInteractiveProp, shouldOpenOnHover: shouldOpenOnHoverProp, shouldOpenOnFocus: shouldOpenOnFocusProp, shouldOpenOnTouch: shouldOpenOnTouchProp, slots, slotProps, layer: layerProp, borderRadius: borderRadiusProp, bg: bgProp, textColor: textColorProp, className, 'data-testid': dataTestid }: Readonly<TooltipProps>): import("react").JSX.Element;
96
- export { Tooltip, type TooltipPlacement, TooltipProps, TooltipSlotProps, TooltipSlots };
108
+ declare function Tooltip({ children, anchorPosition, title, placement: placementProp, hasArrow: hasArrowProp, enterDelay: enterDelayProp, leaveDelay: leaveDelayProp, enterTouchDelay: enterTouchDelayProp, leaveTouchDelay: leaveTouchDelayProp, shouldDescribeChild: shouldDescribeChildProp, isDescriptionPersistent: isDescriptionPersistentProp, isOpen: isOpenProp, defaultOpen, onOpen, onClose, isInteractive: isInteractiveProp, shouldWrapDisabledChild: shouldWrapDisabledChildProp, shouldOpenOnHover: shouldOpenOnHoverProp, shouldOpenOnFocus: shouldOpenOnFocusProp, shouldOpenOnTouch: shouldOpenOnTouchProp, slots, slotProps, layer: layerProp, borderRadius: borderRadiusProp, bg: bgProp, textColor: textColorProp, className, 'data-testid': dataTestid, ref: forwardedRef, ...forwarded }: Readonly<TooltipProps>): import("react").JSX.Element;
109
+ interface TooltipGroupProps {
110
+ children?: ReactNode;
111
+ /**
112
+ * How long after a tooltip of the group closes the next one opens with no enter delay, in
113
+ * milliseconds - and for as long as one is open. After it, the tooltip's own `enterDelay`
114
+ * applies again. A tooltip that opens closes the one still showing, at once. It wins over
115
+ * `skipDelayDuration` in `theme.components.Tooltip.defaultProps`.
116
+ */
117
+ skipDelayDuration?: number;
118
+ }
119
+ /**
120
+ * Lets the tooltips inside it open at once, with no enter delay, when the pointer or the focus
121
+ * moves to the next one just after another closed - a toolbar or a rail read from one icon to the
122
+ * next. It renders nothing of its own. Tooltips outside a group are unchanged, a touch keeps its
123
+ * own delay, and a tooltip whose `isOpen` the app controls is left alone: the group neither opens
124
+ * nor closes it, and it does not start the window.
125
+ */
126
+ declare function TooltipGroup({ children, skipDelayDuration }: Readonly<TooltipGroupProps>): import("react").JSX.Element;
127
+ export { Tooltip, TooltipForwardedProps, TooltipGroup, TooltipGroupProps, type TooltipPlacement, TooltipProps, TooltipSlotProps, TooltipSlots };