@sanity/ui 3.3.2 → 3.3.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 (437) hide show
  1. package/dist/index.d.mts +8 -8
  2. package/dist/index.d.mts.map +1 -1
  3. package/dist/index.d.ts +8 -8
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +16 -16
  6. package/dist/index.mjs +16 -16
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/tabList.js +2 -2
  9. package/dist/tabList.mjs +2 -2
  10. package/dist/tabList.mjs.map +1 -1
  11. package/dist/useTheme.d.mts +3 -3
  12. package/dist/useTheme.d.mts.map +1 -1
  13. package/dist/useTheme.d.ts +3 -3
  14. package/dist/useTheme.d.ts.map +1 -1
  15. package/package.json +8 -13
  16. package/exports/_visual-editing.ts +0 -32
  17. package/exports/index.ts +0 -1
  18. package/exports/theme.ts +0 -1
  19. package/src/core/_compat.ts +0 -294
  20. package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
  21. package/src/core/components/autocomplete/autocomplete.tsx +0 -775
  22. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -46
  23. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  24. package/src/core/components/autocomplete/constants.ts +0 -28
  25. package/src/core/components/autocomplete/index.ts +0 -2
  26. package/src/core/components/autocomplete/types.ts +0 -108
  27. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
  28. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -54
  29. package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -136
  30. package/src/core/components/breadcrumbs/index.ts +0 -1
  31. package/src/core/components/dialog/dialog.tsx +0 -433
  32. package/src/core/components/dialog/dialogContext.ts +0 -20
  33. package/src/core/components/dialog/dialogProvider.tsx +0 -35
  34. package/src/core/components/dialog/index.ts +0 -4
  35. package/src/core/components/dialog/styles.ts +0 -77
  36. package/src/core/components/dialog/useDialog.ts +0 -11
  37. package/src/core/components/hotkeys/hotkeys.test.tsx +0 -47
  38. package/src/core/components/hotkeys/hotkeys.tsx +0 -68
  39. package/src/core/components/hotkeys/index.ts +0 -1
  40. package/src/core/components/index.ts +0 -9
  41. package/src/core/components/menu/helpers.ts +0 -82
  42. package/src/core/components/menu/index.ts +0 -5
  43. package/src/core/components/menu/menu.spacing.test.tsx +0 -68
  44. package/src/core/components/menu/menu.test.tsx +0 -128
  45. package/src/core/components/menu/menu.tsx +0 -180
  46. package/src/core/components/menu/menuButton.tsx +0 -276
  47. package/src/core/components/menu/menuContext.ts +0 -18
  48. package/src/core/components/menu/menuDivider.ts +0 -24
  49. package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -66
  50. package/src/core/components/menu/menuGroup.tsx +0 -237
  51. package/src/core/components/menu/menuItem.spacing.test.tsx +0 -62
  52. package/src/core/components/menu/menuItem.tsx +0 -201
  53. package/src/core/components/menu/useMenu.ts +0 -21
  54. package/src/core/components/menu/useMenuController.ts +0 -233
  55. package/src/core/components/skeleton/index.ts +0 -2
  56. package/src/core/components/skeleton/skeleton.tsx +0 -58
  57. package/src/core/components/skeleton/styles.ts +0 -50
  58. package/src/core/components/skeleton/textSkeleton.tsx +0 -122
  59. package/src/core/components/tab/index.ts +0 -3
  60. package/src/core/components/tab/tab.tsx +0 -102
  61. package/src/core/components/tab/tabList.test.tsx +0 -50
  62. package/src/core/components/tab/tabList.tsx +0 -71
  63. package/src/core/components/tab/tabPanel.tsx +0 -39
  64. package/src/core/components/toast/index.ts +0 -4
  65. package/src/core/components/toast/styles.ts +0 -77
  66. package/src/core/components/toast/toast.test.tsx +0 -106
  67. package/src/core/components/toast/toast.tsx +0 -199
  68. package/src/core/components/toast/toastContext.ts +0 -7
  69. package/src/core/components/toast/toastLayer.tsx +0 -52
  70. package/src/core/components/toast/toastProvider.tsx +0 -113
  71. package/src/core/components/toast/toastState.ts +0 -6
  72. package/src/core/components/toast/types.ts +0 -26
  73. package/src/core/components/toast/useToast.ts +0 -25
  74. package/src/core/components/tree/helpers.ts +0 -105
  75. package/src/core/components/tree/index.ts +0 -4
  76. package/src/core/components/tree/style.ts +0 -105
  77. package/src/core/components/tree/tree.test.tsx +0 -60
  78. package/src/core/components/tree/tree.tsx +0 -242
  79. package/src/core/components/tree/treeContext.ts +0 -10
  80. package/src/core/components/tree/treeGroup.tsx +0 -29
  81. package/src/core/components/tree/treeItem.test.tsx +0 -70
  82. package/src/core/components/tree/treeItem.tsx +0 -225
  83. package/src/core/components/tree/types.ts +0 -25
  84. package/src/core/components/tree/useTree.ts +0 -17
  85. package/src/core/constants.ts +0 -79
  86. package/src/core/helpers/animation.ts +0 -27
  87. package/src/core/helpers/element.ts +0 -55
  88. package/src/core/helpers/focus.ts +0 -100
  89. package/src/core/helpers/index.ts +0 -4
  90. package/src/core/helpers/scroll.ts +0 -15
  91. package/src/core/hooks/index.ts +0 -13
  92. package/src/core/hooks/useArrayProp.ts +0 -17
  93. package/src/core/hooks/useClickOutside.test.tsx +0 -510
  94. package/src/core/hooks/useClickOutside.ts +0 -118
  95. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -119
  96. package/src/core/hooks/useClickOutsideEvent.ts +0 -73
  97. package/src/core/hooks/useCustomValidity.ts +0 -13
  98. package/src/core/hooks/useDelayed.test.ts +0 -89
  99. package/src/core/hooks/useDelayedState.ts +0 -36
  100. package/src/core/hooks/useElementRect/index.ts +0 -1
  101. package/src/core/hooks/useElementRect/useElementRect.ts +0 -14
  102. package/src/core/hooks/useElementSize.ts +0 -19
  103. package/src/core/hooks/useForwardedRef.ts +0 -20
  104. package/src/core/hooks/useGlobalKeyDown.ts +0 -24
  105. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  106. package/src/core/hooks/useMatchMedia.ts +0 -28
  107. package/src/core/hooks/useMediaIndex/index.ts +0 -1
  108. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -37
  109. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
  110. package/src/core/hooks/useMounted.ts +0 -15
  111. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -58
  112. package/src/core/hooks/usePrefersDark.test.tsx +0 -21
  113. package/src/core/hooks/usePrefersDark.ts +0 -16
  114. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -58
  115. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -21
  116. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  117. package/src/core/index.ts +0 -10
  118. package/src/core/lib/createGlobalScopedContext.ts +0 -37
  119. package/src/core/lib/globalScope.ts +0 -20
  120. package/src/core/lib/isRecord.ts +0 -3
  121. package/src/core/middleware/origin.ts +0 -47
  122. package/src/core/observers/elementSizeObserver.ts +0 -117
  123. package/src/core/observers/index.ts +0 -2
  124. package/src/core/observers/resizeObserver.ts +0 -9
  125. package/src/core/primitives/_selectable/index.ts +0 -1
  126. package/src/core/primitives/_selectable/selectable.tsx +0 -15
  127. package/src/core/primitives/_selectable/style.ts +0 -115
  128. package/src/core/primitives/avatar/avatar.tsx +0 -200
  129. package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
  130. package/src/core/primitives/avatar/avatarStack.tsx +0 -101
  131. package/src/core/primitives/avatar/index.ts +0 -4
  132. package/src/core/primitives/avatar/styles.ts +0 -167
  133. package/src/core/primitives/avatar/types.ts +0 -17
  134. package/src/core/primitives/badge/badge.test.tsx +0 -17
  135. package/src/core/primitives/badge/badge.tsx +0 -72
  136. package/src/core/primitives/badge/index.ts +0 -1
  137. package/src/core/primitives/badge/styles.ts +0 -20
  138. package/src/core/primitives/badge/types.ts +0 -8
  139. package/src/core/primitives/box/box.test.tsx +0 -155
  140. package/src/core/primitives/box/box.tsx +0 -162
  141. package/src/core/primitives/box/index.ts +0 -1
  142. package/src/core/primitives/button/button.test.tsx +0 -86
  143. package/src/core/primitives/button/button.tsx +0 -214
  144. package/src/core/primitives/button/index.ts +0 -1
  145. package/src/core/primitives/button/styles.ts +0 -118
  146. package/src/core/primitives/card/card.tsx +0 -125
  147. package/src/core/primitives/card/index.ts +0 -2
  148. package/src/core/primitives/card/styles.ts +0 -147
  149. package/src/core/primitives/card/types.ts +0 -12
  150. package/src/core/primitives/checkbox/checkbox.tsx +0 -73
  151. package/src/core/primitives/checkbox/index.ts +0 -1
  152. package/src/core/primitives/checkbox/styles.ts +0 -128
  153. package/src/core/primitives/code/code.tsx +0 -56
  154. package/src/core/primitives/code/index.ts +0 -1
  155. package/src/core/primitives/code/refractor.tsx +0 -22
  156. package/src/core/primitives/code/styles.ts +0 -77
  157. package/src/core/primitives/container/container.tsx +0 -55
  158. package/src/core/primitives/container/index.ts +0 -2
  159. package/src/core/primitives/container/styles.ts +0 -23
  160. package/src/core/primitives/container/types.ts +0 -6
  161. package/src/core/primitives/flex/flex.tsx +0 -63
  162. package/src/core/primitives/flex/index.ts +0 -1
  163. package/src/core/primitives/grid/grid.test.tsx +0 -86
  164. package/src/core/primitives/grid/grid.tsx +0 -77
  165. package/src/core/primitives/grid/index.ts +0 -1
  166. package/src/core/primitives/heading/heading.tsx +0 -89
  167. package/src/core/primitives/heading/index.ts +0 -1
  168. package/src/core/primitives/heading/styles.ts +0 -64
  169. package/src/core/primitives/heading/types.ts +0 -7
  170. package/src/core/primitives/index.ts +0 -27
  171. package/src/core/primitives/inline/index.ts +0 -1
  172. package/src/core/primitives/inline/inline.test.tsx +0 -55
  173. package/src/core/primitives/inline/inline.tsx +0 -66
  174. package/src/core/primitives/inline/styles.ts +0 -32
  175. package/src/core/primitives/inline/types.ts +0 -6
  176. package/src/core/primitives/kbd/index.ts +0 -1
  177. package/src/core/primitives/kbd/kbd.tsx +0 -73
  178. package/src/core/primitives/label/index.ts +0 -1
  179. package/src/core/primitives/label/label.tsx +0 -88
  180. package/src/core/primitives/label/styles.ts +0 -45
  181. package/src/core/primitives/popover/constants.ts +0 -22
  182. package/src/core/primitives/popover/floating-ui/size.ts +0 -99
  183. package/src/core/primitives/popover/helpers.ts +0 -31
  184. package/src/core/primitives/popover/index.ts +0 -2
  185. package/src/core/primitives/popover/popover.tsx +0 -512
  186. package/src/core/primitives/popover/popoverCard.tsx +0 -167
  187. package/src/core/primitives/popover/types.ts +0 -6
  188. package/src/core/primitives/radio/index.ts +0 -1
  189. package/src/core/primitives/radio/radio.tsx +0 -51
  190. package/src/core/primitives/radio/styles.ts +0 -117
  191. package/src/core/primitives/select/index.ts +0 -1
  192. package/src/core/primitives/select/select.test.tsx +0 -56
  193. package/src/core/primitives/select/select.tsx +0 -95
  194. package/src/core/primitives/select/styles.ts +0 -166
  195. package/src/core/primitives/spinner/index.ts +0 -1
  196. package/src/core/primitives/spinner/spinner.tsx +0 -46
  197. package/src/core/primitives/stack/index.ts +0 -1
  198. package/src/core/primitives/stack/stack.test.tsx +0 -61
  199. package/src/core/primitives/stack/stack.tsx +0 -59
  200. package/src/core/primitives/stack/styles.ts +0 -33
  201. package/src/core/primitives/switch/index.ts +0 -1
  202. package/src/core/primitives/switch/styles.ts +0 -173
  203. package/src/core/primitives/switch/switch.tsx +0 -68
  204. package/src/core/primitives/text/index.ts +0 -1
  205. package/src/core/primitives/text/styles.ts +0 -74
  206. package/src/core/primitives/text/text.tsx +0 -90
  207. package/src/core/primitives/textArea/index.ts +0 -1
  208. package/src/core/primitives/textArea/textArea.tsx +0 -120
  209. package/src/core/primitives/textInput/index.ts +0 -1
  210. package/src/core/primitives/textInput/textInput.test.tsx +0 -52
  211. package/src/core/primitives/textInput/textInput.tsx +0 -398
  212. package/src/core/primitives/tooltip/constants.ts +0 -23
  213. package/src/core/primitives/tooltip/index.ts +0 -2
  214. package/src/core/primitives/tooltip/tooltip.test.tsx +0 -485
  215. package/src/core/primitives/tooltip/tooltip.tsx +0 -497
  216. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -110
  217. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  218. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
  219. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
  220. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -12
  221. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  222. package/src/core/primitives/types.ts +0 -179
  223. package/src/core/styles/border/borderStyle.ts +0 -56
  224. package/src/core/styles/border/index.ts +0 -2
  225. package/src/core/styles/border/types.ts +0 -10
  226. package/src/core/styles/box/boxStyle.ts +0 -69
  227. package/src/core/styles/box/index.ts +0 -2
  228. package/src/core/styles/box/types.ts +0 -11
  229. package/src/core/styles/card/_cardColorStyle.ts +0 -108
  230. package/src/core/styles/card/index.ts +0 -1
  231. package/src/core/styles/flex/flexItemStyle.ts +0 -27
  232. package/src/core/styles/flex/flexStyle.ts +0 -70
  233. package/src/core/styles/flex/index.ts +0 -3
  234. package/src/core/styles/flex/types.ts +0 -24
  235. package/src/core/styles/focusRing/index.ts +0 -25
  236. package/src/core/styles/font/codeFontStyle.ts +0 -13
  237. package/src/core/styles/font/headingFontStyle.ts +0 -13
  238. package/src/core/styles/font/index.ts +0 -6
  239. package/src/core/styles/font/labelFontStyle.ts +0 -13
  240. package/src/core/styles/font/responsiveFont.ts +0 -100
  241. package/src/core/styles/font/textAlignStyle.ts +0 -19
  242. package/src/core/styles/font/textFontStyle.ts +0 -13
  243. package/src/core/styles/font/types.ts +0 -33
  244. package/src/core/styles/grid/gridItemStyle.ts +0 -82
  245. package/src/core/styles/grid/gridStyle.ts +0 -109
  246. package/src/core/styles/grid/index.ts +0 -3
  247. package/src/core/styles/grid/types.ts +0 -37
  248. package/src/core/styles/helpers.ts +0 -72
  249. package/src/core/styles/index.ts +0 -5
  250. package/src/core/styles/input/index.ts +0 -2
  251. package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
  252. package/src/core/styles/input/textInputStyle.ts +0 -263
  253. package/src/core/styles/internal.ts +0 -12
  254. package/src/core/styles/margin/index.ts +0 -2
  255. package/src/core/styles/margin/marginStyle.ts +0 -22
  256. package/src/core/styles/margin/marginsStyle.test.ts +0 -34
  257. package/src/core/styles/margin/types.ts +0 -9
  258. package/src/core/styles/padding/index.ts +0 -2
  259. package/src/core/styles/padding/paddingStyle.test.ts +0 -34
  260. package/src/core/styles/padding/paddingStyle.ts +0 -22
  261. package/src/core/styles/padding/types.ts +0 -12
  262. package/src/core/styles/radius/index.ts +0 -2
  263. package/src/core/styles/radius/radiusStyle.ts +0 -23
  264. package/src/core/styles/radius/types.ts +0 -8
  265. package/src/core/styles/shadow/index.ts +0 -2
  266. package/src/core/styles/shadow/shadowStyle.ts +0 -29
  267. package/src/core/styles/shadow/types.ts +0 -6
  268. package/src/core/styles/types.ts +0 -8
  269. package/src/core/theme/index.ts +0 -5
  270. package/src/core/theme/theme.test.tsx +0 -77
  271. package/src/core/theme/themeColorProvider.tsx +0 -29
  272. package/src/core/theme/themeContext.ts +0 -10
  273. package/src/core/theme/themeProvider.tsx +0 -62
  274. package/src/core/theme/types.ts +0 -12
  275. package/src/core/theme/useRootTheme.ts +0 -18
  276. package/src/core/theme/useTheme.ts +0 -18
  277. package/src/core/types/avatar.ts +0 -14
  278. package/src/core/types/badge.ts +0 -12
  279. package/src/core/types/box.ts +0 -19
  280. package/src/core/types/button.ts +0 -21
  281. package/src/core/types/card.ts +0 -6
  282. package/src/core/types/component.ts +0 -32
  283. package/src/core/types/dialog.ts +0 -4
  284. package/src/core/types/flex.ts +0 -30
  285. package/src/core/types/grid.ts +0 -14
  286. package/src/core/types/gridItem.ts +0 -29
  287. package/src/core/types/index.ts +0 -15
  288. package/src/core/types/placement.ts +0 -18
  289. package/src/core/types/popover.ts +0 -4
  290. package/src/core/types/radius.ts +0 -4
  291. package/src/core/types/selectable.ts +0 -6
  292. package/src/core/types/text.ts +0 -4
  293. package/src/core/utils/arrow/arrow.tsx +0 -124
  294. package/src/core/utils/arrow/cmds.ts +0 -91
  295. package/src/core/utils/arrow/index.ts +0 -1
  296. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -105
  297. package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
  298. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
  299. package/src/core/utils/boundaryElement/index.ts +0 -3
  300. package/src/core/utils/boundaryElement/types.ts +0 -7
  301. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
  302. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -22
  303. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  304. package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
  305. package/src/core/utils/elementQuery/helpers.ts +0 -27
  306. package/src/core/utils/elementQuery/index.ts +0 -1
  307. package/src/core/utils/errorBoundary.tsx +0 -48
  308. package/src/core/utils/getElementRef.ts +0 -31
  309. package/src/core/utils/index.ts +0 -9
  310. package/src/core/utils/layer/getLayerContext.test.ts +0 -32
  311. package/src/core/utils/layer/getLayerContext.ts +0 -21
  312. package/src/core/utils/layer/index.ts +0 -4
  313. package/src/core/utils/layer/layer.test.tsx +0 -113
  314. package/src/core/utils/layer/layer.tsx +0 -99
  315. package/src/core/utils/layer/layerContext.ts +0 -7
  316. package/src/core/utils/layer/layerProvider.tsx +0 -111
  317. package/src/core/utils/layer/types.ts +0 -9
  318. package/src/core/utils/layer/useLayer.ts +0 -28
  319. package/src/core/utils/portal/index.ts +0 -4
  320. package/src/core/utils/portal/portal.test.tsx +0 -108
  321. package/src/core/utils/portal/portal.ts +0 -32
  322. package/src/core/utils/portal/portalContext.ts +0 -31
  323. package/src/core/utils/portal/portalProvider.tsx +0 -48
  324. package/src/core/utils/portal/types.ts +0 -9
  325. package/src/core/utils/portal/usePortal.ts +0 -25
  326. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  327. package/src/core/utils/srOnly/index.ts +0 -1
  328. package/src/core/utils/srOnly/srOnly.tsx +0 -36
  329. package/src/core/utils/virtualList/index.ts +0 -1
  330. package/src/core/utils/virtualList/virtualList.tsx +0 -201
  331. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -86
  332. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -58
  333. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -27
  334. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -60
  335. package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -66
  336. package/src/theme/build/_deprecated/color/color.test.ts +0 -67
  337. package/src/theme/build/_deprecated/color/defaults.ts +0 -391
  338. package/src/theme/build/_deprecated/color/factory.ts +0 -178
  339. package/src/theme/build/_deprecated/color/index.ts +0 -1
  340. package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -86
  341. package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -58
  342. package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -23
  343. package/src/theme/build/buildColorTheme.test.ts +0 -185
  344. package/src/theme/build/buildColorTheme.ts +0 -507
  345. package/src/theme/build/buildTheme.test.ts +0 -89
  346. package/src/theme/build/buildTheme.ts +0 -36
  347. package/src/theme/build/colorToken/colorToken.ts +0 -19
  348. package/src/theme/build/colorToken/compileColorToken.ts +0 -21
  349. package/src/theme/build/colorToken/index.ts +0 -2
  350. package/src/theme/build/colorToken/types.ts +0 -6
  351. package/src/theme/build/index.ts +0 -3
  352. package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
  353. package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
  354. package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
  355. package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
  356. package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -70
  357. package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
  358. package/src/theme/build/lib/color-fns/convert.ts +0 -150
  359. package/src/theme/build/lib/color-fns/index.ts +0 -6
  360. package/src/theme/build/lib/color-fns/parse.ts +0 -60
  361. package/src/theme/build/lib/color-fns/rgba.ts +0 -10
  362. package/src/theme/build/lib/color-fns/types.ts +0 -28
  363. package/src/theme/build/lib/isRecord.ts +0 -3
  364. package/src/theme/build/lib/lazy.ts +0 -30
  365. package/src/theme/build/lib/utils.ts +0 -19
  366. package/src/theme/build/merge.ts +0 -31
  367. package/src/theme/build/mixThemeColor.test.ts +0 -23
  368. package/src/theme/build/mixThemeColor.ts +0 -53
  369. package/src/theme/build/renderColorTheme.ts +0 -538
  370. package/src/theme/build/renderColorValue.ts +0 -83
  371. package/src/theme/build/resolveColorTokens.ts +0 -274
  372. package/src/theme/build/theme.test.ts +0 -29
  373. package/src/theme/config/helpers.ts +0 -60
  374. package/src/theme/config/index.ts +0 -4
  375. package/src/theme/config/system.ts +0 -117
  376. package/src/theme/config/tokens/color/index.ts +0 -1
  377. package/src/theme/config/tokens/color/types.ts +0 -135
  378. package/src/theme/config/tokens/index.ts +0 -4
  379. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -66
  380. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  381. package/src/theme/config/tokens/parseTokenValue.test.ts +0 -44
  382. package/src/theme/config/tokens/parseTokenValue.ts +0 -134
  383. package/src/theme/config/tokens/types.ts +0 -53
  384. package/src/theme/config/types.ts +0 -46
  385. package/src/theme/defaults/colorPalette.ts +0 -5
  386. package/src/theme/defaults/colorTokens.ts +0 -648
  387. package/src/theme/defaults/config.ts +0 -84
  388. package/src/theme/defaults/fonts.ts +0 -227
  389. package/src/theme/getScopedTheme.ts +0 -103
  390. package/src/theme/index.ts +0 -5
  391. package/src/theme/system/avatar.ts +0 -14
  392. package/src/theme/system/color/_constants.ts +0 -45
  393. package/src/theme/system/color/_helpers.ts +0 -28
  394. package/src/theme/system/color/_system.ts +0 -40
  395. package/src/theme/system/color/avatar.ts +0 -15
  396. package/src/theme/system/color/badge.ts +0 -16
  397. package/src/theme/system/color/button.ts +0 -17
  398. package/src/theme/system/color/color.ts +0 -34
  399. package/src/theme/system/color/index.ts +0 -13
  400. package/src/theme/system/color/input.ts +0 -25
  401. package/src/theme/system/color/kbd.ts +0 -8
  402. package/src/theme/system/color/selectable.ts +0 -12
  403. package/src/theme/system/color/shadow.ts +0 -7
  404. package/src/theme/system/color/state.ts +0 -43
  405. package/src/theme/system/color/syntax.ts +0 -41
  406. package/src/theme/system/css.ts +0 -14
  407. package/src/theme/system/focusRing.ts +0 -7
  408. package/src/theme/system/font.ts +0 -52
  409. package/src/theme/system/index.ts +0 -11
  410. package/src/theme/system/input.ts +0 -33
  411. package/src/theme/system/layer.ts +0 -8
  412. package/src/theme/system/shadow.ts +0 -19
  413. package/src/theme/system/styles.ts +0 -13
  414. package/src/theme/system/theme.ts +0 -142
  415. package/src/theme/system/v0/avatar.ts +0 -10
  416. package/src/theme/system/v0/color/_generic.ts +0 -35
  417. package/src/theme/system/v0/color/_system.ts +0 -18
  418. package/src/theme/system/v0/color/base.ts +0 -21
  419. package/src/theme/system/v0/color/button.ts +0 -56
  420. package/src/theme/system/v0/color/card.ts +0 -25
  421. package/src/theme/system/v0/color/color.ts +0 -51
  422. package/src/theme/system/v0/color/index.ts +0 -11
  423. package/src/theme/system/v0/color/input.ts +0 -40
  424. package/src/theme/system/v0/color/muted.ts +0 -37
  425. package/src/theme/system/v0/color/selectable.ts +0 -42
  426. package/src/theme/system/v0/color/solid.ts +0 -37
  427. package/src/theme/system/v0/color/spot.ts +0 -14
  428. package/src/theme/system/v0/index.ts +0 -3
  429. package/src/theme/system/v0/input.ts +0 -23
  430. package/src/theme/versioning/getTheme_v2.ts +0 -72
  431. package/src/theme/versioning/index.ts +0 -5
  432. package/src/theme/versioning/is_v0.ts +0 -6
  433. package/src/theme/versioning/is_v2.ts +0 -6
  434. package/src/theme/versioning/themeColor_v0_v2.ts +0 -250
  435. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -50
  436. package/src/theme/versioning/v0_v2.ts +0 -106
  437. package/src/theme/versioning/v2_v0.ts +0 -153
@@ -1,497 +0,0 @@
1
- import {
2
- arrow,
3
- autoUpdate,
4
- flip,
5
- type Middleware,
6
- offset,
7
- type RootBoundary,
8
- shift,
9
- useFloating,
10
- } from '@floating-ui/react-dom'
11
- import type {ThemeColorSchemeKey} from '@sanity/ui/theme'
12
- import {AnimatePresence} from 'motion/react'
13
- import {
14
- cloneElement,
15
- forwardRef,
16
- useCallback,
17
- useEffect,
18
- useId,
19
- useImperativeHandle,
20
- useLayoutEffect,
21
- useMemo,
22
- useRef,
23
- useState,
24
- } from 'react'
25
- import {styled} from 'styled-components'
26
- import {useEffectEvent} from 'use-effect-event'
27
-
28
- import {usePrefersReducedMotion} from '../../hooks'
29
- import {useDelayedState} from '../../hooks/useDelayedState'
30
- import {origin} from '../../middleware/origin'
31
- import {_getArrayProp} from '../../styles'
32
- import {useTheme_v2} from '../../theme'
33
- import type {Placement} from '../../types'
34
- import {Layer, type LayerProps, Portal, useBoundaryElement, usePortal} from '../../utils'
35
- import {getElementRef} from '../../utils/getElementRef'
36
- import type {Delay} from '../types'
37
- import {
38
- DEFAULT_FALLBACK_PLACEMENTS,
39
- DEFAULT_TOOLTIP_DISTANCE,
40
- DEFAULT_TOOLTIP_PADDING,
41
- } from './constants'
42
- import {TooltipCard} from './tooltipCard'
43
- import {useTooltipDelayGroup} from './tooltipDelayGroup'
44
-
45
- /**
46
- * @public
47
- */
48
- export interface TooltipProps extends Omit<LayerProps, 'as'> {
49
- /** @deprecated Use `fallbackPlacements` instead. */
50
- allowedAutoPlacements?: Placement[]
51
- arrow?: boolean
52
- boundaryElement?: HTMLElement | null
53
- children?: React.JSX.Element
54
- content?: React.ReactNode
55
- disabled?: boolean
56
- fallbackPlacements?: Placement[]
57
- padding?: number | number[]
58
- placement?: Placement
59
- /** Whether or not to render the tooltip in a portal element. */
60
- portal?: boolean | string
61
- radius?: number | number[]
62
- scheme?: ThemeColorSchemeKey
63
- shadow?: number | number[]
64
- /**
65
- * Adds a delay to open or close the tooltip.
66
- *
67
- * If only a `number` is passed, it will be used for both opening and closing.
68
- *
69
- * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.
70
- *
71
- * @public
72
- * @defaultValue 0
73
- */
74
- delay?: Delay
75
- /**
76
- * Whether the tooltip should animate in and out.
77
- *
78
- * @beta
79
- * @defaultValue false
80
- */
81
- animate?: boolean
82
- }
83
-
84
- const StyledTooltip = styled(Layer)`
85
- pointer-events: none;
86
- `
87
-
88
- /**
89
- * Tooltips display information when hovering, focusing or tapping.
90
- *
91
- * @public
92
- */
93
- export const Tooltip = forwardRef(function Tooltip(
94
- props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,
95
- forwardedRef: React.ForwardedRef<HTMLDivElement>,
96
- ) {
97
- const boundaryElementContext = useBoundaryElement()
98
- const {layer} = useTheme_v2()
99
- const {
100
- animate: _animate = false,
101
- arrow: arrowProp = false,
102
- boundaryElement: _boundaryElement,
103
- children: childProp,
104
- content,
105
- disabled,
106
- fallbackPlacements: _fallbackPlacementsProp,
107
- padding = 2,
108
- placement: placementProp = 'bottom',
109
- portal: portalProp,
110
- radius = 2,
111
- scheme,
112
- shadow = 2,
113
- zOffset: _zOffset,
114
- delay,
115
- ...restProps
116
- } = props
117
- const boundaryElement = _boundaryElement ?? boundaryElementContext?.element
118
- const fallbackPlacementsProp =
119
- _fallbackPlacementsProp ?? DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? 'bottom']
120
- const zOffset = _zOffset ?? layer.tooltip.zOffset
121
- const prefersReducedMotion = usePrefersReducedMotion()
122
- const animate = prefersReducedMotion ? false : _animate
123
- const fallbackPlacements = _getArrayProp(fallbackPlacementsProp)
124
- const ref = useRef<HTMLDivElement | null>(null)
125
- const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)
126
- const arrowRef = useRef<HTMLDivElement | null>(null)
127
- const rootBoundary: RootBoundary = 'viewport'
128
- const [tooltipMaxWidth, setTooltipMaxWidth] = useState(0)
129
-
130
- useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)
131
-
132
- const portal = usePortal()
133
- const portalElement =
134
- typeof portalProp === 'string' ? portal.elements?.[portalProp] || null : portal.element
135
-
136
- const middleware = useMiddleware({
137
- animate,
138
- arrowProp,
139
- arrowRef,
140
- boundaryElement,
141
- fallbackPlacements,
142
- rootBoundary,
143
- })
144
-
145
- const {floatingStyles, placement, middlewareData, refs, update} = useFloating({
146
- middleware,
147
- placement: placementProp,
148
- whileElementsMounted: autoUpdate,
149
- elements: {reference: referenceElement},
150
- })
151
-
152
- const arrowX = middlewareData.arrow?.x
153
- const arrowY = middlewareData.arrow?.y
154
-
155
- const originX = middlewareData['@sanity/ui/origin']?.originX
156
- const originY = middlewareData['@sanity/ui/origin']?.originY
157
-
158
- const tooltipId = useId()
159
- const [isOpen, setIsOpen] = useDelayedState(false)
160
- const delayGroupContext = useTooltipDelayGroup()
161
- const {setIsGroupActive, setOpenTooltipId} = delayGroupContext || {}
162
- const showTooltip = isOpen || delayGroupContext?.openTooltipId === tooltipId
163
-
164
- const isInsideGroup = delayGroupContext !== null
165
- const openDelayProp = typeof delay === 'number' ? delay : delay?.open || 0
166
- const closeDelayProp = typeof delay === 'number' ? delay : delay?.close || 0
167
-
168
- const openDelay = isInsideGroup ? delayGroupContext.openDelay : openDelayProp
169
- const closeDelay = isInsideGroup ? delayGroupContext.closeDelay : closeDelayProp
170
-
171
- const handleIsOpenChange = useCallback(
172
- (open: boolean, immediate?: boolean) => {
173
- if (isInsideGroup) {
174
- // When it's inside a group, the open or close status will be handled by the group.
175
- if (open) {
176
- const groupedOpenDelay = immediate ? 0 : openDelay
177
-
178
- setIsGroupActive?.(open, groupedOpenDelay)
179
- setOpenTooltipId?.(tooltipId, groupedOpenDelay)
180
- } else {
181
- const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.
182
- const groupDeactivateDelay =
183
- closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay
184
-
185
- setIsGroupActive?.(open, groupDeactivateDelay)
186
- setOpenTooltipId?.(null, immediate ? 0 : closeDelay)
187
- }
188
- } else {
189
- const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay
190
-
191
- // When it's not inside a group, the open or close status will be handled by the tooltip itself.
192
- setIsOpen(open, standaloneDelay)
193
- }
194
- },
195
- [
196
- isInsideGroup,
197
- openDelay,
198
- setIsGroupActive,
199
- setOpenTooltipId,
200
- tooltipId,
201
- closeDelay,
202
- setIsOpen,
203
- ],
204
- )
205
-
206
- const handleBlur = useCallback(
207
- (e: FocusEvent) => {
208
- handleIsOpenChange(false)
209
- childProp?.props?.onBlur?.(e)
210
- },
211
- [childProp?.props, handleIsOpenChange],
212
- )
213
- const handleClick = useCallback(
214
- (e: MouseEvent) => {
215
- handleIsOpenChange(false, true)
216
- childProp?.props.onClick?.(e)
217
- },
218
- [childProp?.props, handleIsOpenChange],
219
- )
220
- const handleContextMenu = useCallback(
221
- (e: MouseEvent) => {
222
- handleIsOpenChange(false, true)
223
- childProp?.props.onContextMenu?.(e)
224
- },
225
- [childProp?.props, handleIsOpenChange],
226
- )
227
- const handleFocus = useCallback(
228
- (e: FocusEvent) => {
229
- handleIsOpenChange(true)
230
- childProp?.props?.onFocus?.(e)
231
- },
232
- [childProp?.props, handleIsOpenChange],
233
- )
234
- const handleMouseEnter = useCallback(
235
- (e: MouseEvent) => {
236
- handleIsOpenChange(true)
237
- childProp?.props?.onMouseEnter?.(e)
238
- },
239
- [childProp?.props, handleIsOpenChange],
240
- )
241
- const handleMouseLeave = useCallback(
242
- (e: MouseEvent) => {
243
- handleIsOpenChange(false)
244
- childProp?.props?.onMouseLeave?.(e)
245
- },
246
- [childProp?.props, handleIsOpenChange],
247
- )
248
-
249
- // Handle closing the tooltip when the mouse leaves the referenceElement
250
- useCloseOnMouseLeave({handleIsOpenChange, referenceElement, showTooltip, isInsideGroup})
251
-
252
- // Close when `disabled` changes to `true`
253
- useEffect(() => {
254
- if (disabled && showTooltip) handleIsOpenChange(false)
255
- }, [disabled, handleIsOpenChange, showTooltip])
256
-
257
- // Close when `content` changes to falsy
258
- useEffect(() => {
259
- if (!content && showTooltip) handleIsOpenChange(false)
260
- }, [content, handleIsOpenChange, showTooltip])
261
-
262
- useEffect(() => {
263
- // If the user clicks on escape key, close the tooltip.
264
- if (!showTooltip) return
265
-
266
- function handleWindowKeyDown(event: KeyboardEvent) {
267
- if (event.key === 'Escape') {
268
- handleIsOpenChange(false, true)
269
- }
270
- }
271
-
272
- window.addEventListener('keydown', handleWindowKeyDown)
273
-
274
- // oxlint-disable-next-line consistent-return
275
- return () => {
276
- window.removeEventListener('keydown', handleWindowKeyDown)
277
- }
278
- }, [handleIsOpenChange, showTooltip])
279
-
280
- // // Set the max width of the tooltip based on boundaries and portals
281
- useLayoutEffect(() => {
282
- // Get the maximum tooltip width (sans tooltip padding)
283
- // Tooltip width should never exceed the width of either any supplied boundary or portal element.
284
- // If both portal and boundary elements are provided, use the smaller width of the two.
285
- const availableWidths = [
286
- ...(boundaryElement ? [boundaryElement.offsetWidth] : []),
287
- portalElement?.offsetWidth || document.body.offsetWidth,
288
- ]
289
-
290
- // oxlint-disable-next-line react-compiler
291
- setTooltipMaxWidth(Math.min(...availableWidths) - DEFAULT_TOOLTIP_PADDING * 2)
292
- }, [boundaryElement, portalElement])
293
-
294
- const setArrow = useCallback(
295
- (arrowEl: HTMLDivElement | null) => {
296
- arrowRef.current = arrowEl
297
- update()
298
- },
299
- [update],
300
- )
301
-
302
- const setFloating = useCallback(
303
- (node: HTMLDivElement | null) => {
304
- ref.current = node
305
- refs.setFloating(node)
306
- },
307
- [refs],
308
- )
309
-
310
- const child = useMemo(() => {
311
- if (!childProp) return null
312
-
313
- return cloneElement(childProp, {
314
- onBlur: handleBlur,
315
- onFocus: handleFocus,
316
- onMouseEnter: handleMouseEnter,
317
- onMouseLeave: handleMouseLeave,
318
- onClick: handleClick,
319
- onContextMenu: handleContextMenu,
320
- ref: setReferenceElement,
321
- })
322
- }, [
323
- childProp,
324
- handleBlur,
325
- handleClick,
326
- handleContextMenu,
327
- handleFocus,
328
- handleMouseEnter,
329
- handleMouseLeave,
330
- ])
331
-
332
- // If there's a child then we need to set the reference element to the cloned child ref
333
- // and if child changes we make sure to update or remove the reference element.
334
- useImperativeHandle(childProp ? getElementRef(childProp) : null, () => referenceElement, [
335
- referenceElement,
336
- ])
337
-
338
- if (!child) return <></>
339
-
340
- if (disabled) return child
341
-
342
- const tooltip = (
343
- <StyledTooltip
344
- data-ui="Tooltip"
345
- {...restProps}
346
- ref={setFloating}
347
- style={{
348
- ...floatingStyles,
349
- maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,
350
- }}
351
- zOffset={zOffset}
352
- >
353
- <TooltipCard
354
- {...restProps}
355
- animate={animate}
356
- arrow={arrowProp}
357
- arrowRef={setArrow}
358
- arrowX={arrowX}
359
- arrowY={arrowY}
360
- originX={originX}
361
- originY={originY}
362
- padding={padding}
363
- placement={placement}
364
- radius={radius}
365
- ref={setFloating}
366
- scheme={scheme}
367
- shadow={shadow}
368
- >
369
- {content}
370
- </TooltipCard>
371
- </StyledTooltip>
372
- )
373
-
374
- const children =
375
- showTooltip &&
376
- (portalProp ? (
377
- <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>
378
- {tooltip}
379
- </Portal>
380
- ) : (
381
- tooltip
382
- ))
383
-
384
- return (
385
- <>
386
- {/* the tooltip */}
387
- {animate ? <AnimatePresence>{children}</AnimatePresence> : children}
388
-
389
- {/* the referred element */}
390
- {child}
391
- </>
392
- )
393
- })
394
- Tooltip.displayName = 'ForwardRef(Tooltip)'
395
-
396
- function useMiddleware({
397
- animate,
398
- arrowProp,
399
- arrowRef,
400
- boundaryElement,
401
- fallbackPlacements,
402
- rootBoundary,
403
- }: {
404
- animate: boolean
405
- arrowProp: boolean
406
- arrowRef: React.RefObject<HTMLDivElement | null>
407
- boundaryElement: HTMLElement | null
408
- fallbackPlacements: Placement[]
409
- rootBoundary: RootBoundary
410
- }) {
411
- return useMemo(() => {
412
- const ret: Middleware[] = []
413
-
414
- // Flip the floating element when leaving the boundary box
415
- ret.push(
416
- flip({
417
- boundary: boundaryElement || undefined,
418
- fallbackPlacements,
419
- padding: DEFAULT_TOOLTIP_PADDING,
420
- rootBoundary,
421
- }),
422
- )
423
-
424
- // Define distance between reference and floating element
425
- ret.push(offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE}))
426
-
427
- // Shift the tooltip so its sits with the boundary element
428
- ret.push(
429
- shift({
430
- boundary: boundaryElement || undefined,
431
- rootBoundary,
432
- padding: DEFAULT_TOOLTIP_PADDING,
433
- }),
434
- )
435
-
436
- // Place arrow
437
- if (arrowProp) {
438
- ret.push(arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING}))
439
- }
440
-
441
- // Determine the origin to scale from.
442
- // Must be placed after `@sanity/ui/size` and `shift` middleware.
443
- if (animate) {
444
- ret.push(origin)
445
- }
446
-
447
- return ret
448
- }, [animate, arrowProp, arrowRef, boundaryElement, fallbackPlacements, rootBoundary])
449
- }
450
-
451
- /**
452
- * As `useEffectEvent` should never be passed to other components or hooks, this custom hook groups together the `useEffectEvent` and the `useEffect` hook using it.
453
- * @see https://19.react.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events:~:text=Never%20pass%20them%20to%20other%20components%20or%20Hooks
454
- */
455
- function useCloseOnMouseLeave({
456
- handleIsOpenChange,
457
- referenceElement,
458
- showTooltip,
459
- isInsideGroup,
460
- }: {
461
- handleIsOpenChange: (open: boolean, immediate?: boolean) => void
462
- referenceElement: HTMLElement | null
463
- showTooltip: boolean
464
- isInsideGroup: boolean
465
- }) {
466
- // Since we don't want the `mouseevent` events to be attached and removed if the `referenceElement` is changed
467
- // we use a "effect event" (https://19.react.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)
468
- // in order to always see the latest `referenceElement` value inside the event handler itself.
469
- const onMouseMove = useEffectEvent((target: EventTarget | null, teardown: () => void) => {
470
- if (!referenceElement) return
471
-
472
- const isHoveringReference =
473
- referenceElement === target || (target instanceof Node && referenceElement.contains(target))
474
-
475
- if (!isHoveringReference) {
476
- handleIsOpenChange(false)
477
- // Allow removing the event listener eagerly, to avoid race conditions
478
- teardown()
479
- }
480
- })
481
-
482
- // Detect whether the mouse is moving outside of the reference element. This is sometimes
483
- // necessary, because the tooltip might not always close as it should (e.g. when clicking
484
- // the reference element triggers a CPU-heavy operation.)
485
- useEffect(() => {
486
- if (!showTooltip || isInsideGroup) return
487
-
488
- const handleMouseMove = (event: MouseEvent) => {
489
- onMouseMove(event.target, () => window.removeEventListener('mousemove', handleMouseMove))
490
- }
491
-
492
- window.addEventListener('mousemove', handleMouseMove)
493
-
494
- // oxlint-disable-next-line consistent-return
495
- return () => window.removeEventListener('mousemove', handleMouseMove)
496
- }, [isInsideGroup, showTooltip])
497
- }
@@ -1,110 +0,0 @@
1
- import {ThemeColorSchemeKey} from '@sanity/ui/theme'
2
- import {motion, type MotionProps} from 'motion/react'
3
- import React, {CSSProperties, forwardRef, useMemo} from 'react'
4
- import {styled} from 'styled-components'
5
-
6
- import {POPOVER_MOTION_PROPS} from '../../constants'
7
- import {Placement, Radius} from '../../types'
8
- import {Arrow} from '../../utils'
9
- import {Card, CardProps} from '../card'
10
- import {
11
- DEFAULT_TOOLTIP_ARROW_HEIGHT,
12
- DEFAULT_TOOLTIP_ARROW_RADIUS,
13
- DEFAULT_TOOLTIP_ARROW_WIDTH,
14
- } from './constants'
15
-
16
- const MotionCard = styled(motion.create(Card))`
17
- will-change: transform;
18
- `
19
-
20
- /**
21
- * @internal
22
- */
23
- export const TooltipCard = forwardRef(function TooltipCard(
24
- props: {
25
- animate?: boolean
26
- arrow: boolean
27
- arrowRef: React.Ref<HTMLDivElement>
28
- arrowX?: number
29
- arrowY?: number
30
- originX?: number
31
- originY?: number
32
- padding?: number | number[]
33
- placement?: Placement
34
- radius?: Radius | Radius[]
35
- scheme?: ThemeColorSchemeKey
36
- shadow?: number | number[]
37
- } & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,
38
- ref: React.ForwardedRef<HTMLDivElement>,
39
- ) {
40
- const {
41
- animate,
42
- arrow,
43
- arrowRef,
44
- arrowX,
45
- arrowY,
46
- children,
47
- originX,
48
- originY,
49
- padding,
50
- placement,
51
- radius,
52
- scheme,
53
- shadow,
54
- style,
55
- ...restProps
56
- } = props
57
-
58
- const rootStyle: CSSProperties = useMemo(
59
- () => ({
60
- originX,
61
- originY,
62
- willChange: animate ? 'transform' : undefined,
63
- ...style,
64
- }),
65
- [animate, originX, originY, style],
66
- )
67
-
68
- const arrowStyle: CSSProperties = useMemo(
69
- () => ({
70
- left: arrowX !== null ? arrowX : undefined,
71
- top: arrowY !== null ? arrowY : undefined,
72
- right: undefined,
73
- bottom: undefined,
74
- }),
75
- [arrowX, arrowY],
76
- )
77
-
78
- return (
79
- <MotionCard
80
- data-ui="Tooltip__card"
81
- // oxlint-disable-next-line no-unsafe-type-assertion
82
- {...(restProps as CardProps & MotionProps)}
83
- data-placement={placement}
84
- padding={padding}
85
- radius={radius}
86
- ref={ref}
87
- scheme={scheme}
88
- shadow={shadow}
89
- style={rootStyle}
90
- variants={POPOVER_MOTION_PROPS.card}
91
- transition={POPOVER_MOTION_PROPS.transition}
92
- initial={animate ? ['hidden', 'initial'] : undefined}
93
- animate={animate ? ['visible', 'scaleIn'] : undefined}
94
- exit={animate ? ['hidden', 'scaleOut'] : undefined}
95
- >
96
- {children}
97
-
98
- {arrow && (
99
- <Arrow
100
- ref={arrowRef}
101
- style={arrowStyle}
102
- width={DEFAULT_TOOLTIP_ARROW_WIDTH}
103
- height={DEFAULT_TOOLTIP_ARROW_HEIGHT}
104
- radius={DEFAULT_TOOLTIP_ARROW_RADIUS}
105
- />
106
- )}
107
- </MotionCard>
108
- )
109
- })
110
- TooltipCard.displayName = 'ForwardRef(TooltipCard)'
@@ -1,4 +0,0 @@
1
- export * from './tooltipDelayGroupContext'
2
- export * from './tooltipDelayGroupProvider'
3
- export * from './types'
4
- export * from './useTooltipDelayGroup'
@@ -1,11 +0,0 @@
1
- import {createGlobalScopedContext} from '../../../lib/createGlobalScopedContext'
2
- import {TooltipDelayGroupContextValue} from './types'
3
-
4
- /**
5
- * @beta
6
- */
7
- export const TooltipDelayGroupContext =
8
- createGlobalScopedContext<TooltipDelayGroupContextValue | null>(
9
- '@sanity/ui/context/tooltipDelayGroup',
10
- null,
11
- )
@@ -1,57 +0,0 @@
1
- import {useMemo} from 'react'
2
-
3
- import {useDelayedState} from '../../../hooks/useDelayedState'
4
- import {Delay} from '../../types'
5
- import {TooltipDelayGroupContext} from './tooltipDelayGroupContext'
6
- import {TooltipDelayGroupContextValue} from './types'
7
-
8
- /**
9
- * @public
10
- * */
11
- export interface TooltipDelayGroupProviderProps {
12
- children?: React.ReactNode
13
- /**
14
- * Handles the delays to open or close a tooltip inside a group
15
- *
16
- * If only a `number` is passed, it will be used for both opening and closing.
17
- *
18
- * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.
19
- *
20
- * @public
21
- */
22
- delay: Delay
23
- }
24
-
25
- /**
26
- * @public
27
- * Provides context for a group of tooltip elements that should share a delay
28
- * which temporarily becomes 1 ms after the first floating element of the group opens.
29
- */
30
- export function TooltipDelayGroupProvider(
31
- props: TooltipDelayGroupProviderProps,
32
- ): React.JSX.Element {
33
- const {children, delay} = props
34
- const [isGroupActive, setIsGroupActive] = useDelayedState(false)
35
- const [openTooltipId, setOpenTooltipId] = useDelayedState<string | null>(null)
36
-
37
- const openDelay = typeof delay === 'number' ? delay : delay?.open || 0
38
- const closeDelay = typeof delay === 'number' ? delay : delay?.close || 0
39
-
40
- const value: TooltipDelayGroupContextValue = useMemo(
41
- () => ({
42
- setIsGroupActive: setIsGroupActive,
43
- openTooltipId: openTooltipId,
44
- setOpenTooltipId: setOpenTooltipId,
45
- // When the group is active, we want the next tooltip to open immediately.
46
- openDelay: isGroupActive ? 1 : openDelay,
47
- closeDelay: closeDelay,
48
- }),
49
- [closeDelay, isGroupActive, openDelay, openTooltipId, setIsGroupActive, setOpenTooltipId],
50
- )
51
-
52
- return (
53
- <TooltipDelayGroupContext.Provider value={value}>{children}</TooltipDelayGroupContext.Provider>
54
- )
55
- }
56
-
57
- TooltipDelayGroupProvider.displayName = 'TooltipDelayGroupProvider'
@@ -1,12 +0,0 @@
1
- /**
2
- * @beta
3
- */
4
- export interface TooltipDelayGroupContextValue {
5
- // oxlint-disable-next-line no-duplicate-type-constituents
6
- setIsGroupActive: (nextState: React.SetStateAction<boolean>, delay?: number | undefined) => void
7
- // oxlint-disable-next-line no-duplicate-type-constituents
8
- setOpenTooltipId: (nextId: string | null, delay?: number | undefined) => void
9
- openDelay: number
10
- closeDelay: number
11
- openTooltipId: string | null
12
- }
@@ -1,13 +0,0 @@
1
- import {useContext} from 'react'
2
-
3
- import {TooltipDelayGroupContext} from './tooltipDelayGroupContext'
4
- import {TooltipDelayGroupContextValue} from './types'
5
-
6
- /**
7
- * @beta
8
- */
9
- export function useTooltipDelayGroup(): TooltipDelayGroupContextValue | null {
10
- const value = useContext(TooltipDelayGroupContext)
11
-
12
- return value
13
- }