@sanity/ui 3.3.2 → 3.3.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 (423) hide show
  1. package/package.json +6 -11
  2. package/exports/_visual-editing.ts +0 -32
  3. package/exports/index.ts +0 -1
  4. package/exports/theme.ts +0 -1
  5. package/src/core/_compat.ts +0 -294
  6. package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
  7. package/src/core/components/autocomplete/autocomplete.tsx +0 -775
  8. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -46
  9. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  10. package/src/core/components/autocomplete/constants.ts +0 -28
  11. package/src/core/components/autocomplete/index.ts +0 -2
  12. package/src/core/components/autocomplete/types.ts +0 -108
  13. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
  14. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -54
  15. package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -136
  16. package/src/core/components/breadcrumbs/index.ts +0 -1
  17. package/src/core/components/dialog/dialog.tsx +0 -433
  18. package/src/core/components/dialog/dialogContext.ts +0 -20
  19. package/src/core/components/dialog/dialogProvider.tsx +0 -35
  20. package/src/core/components/dialog/index.ts +0 -4
  21. package/src/core/components/dialog/styles.ts +0 -77
  22. package/src/core/components/dialog/useDialog.ts +0 -11
  23. package/src/core/components/hotkeys/hotkeys.test.tsx +0 -47
  24. package/src/core/components/hotkeys/hotkeys.tsx +0 -68
  25. package/src/core/components/hotkeys/index.ts +0 -1
  26. package/src/core/components/index.ts +0 -9
  27. package/src/core/components/menu/helpers.ts +0 -82
  28. package/src/core/components/menu/index.ts +0 -5
  29. package/src/core/components/menu/menu.spacing.test.tsx +0 -68
  30. package/src/core/components/menu/menu.test.tsx +0 -128
  31. package/src/core/components/menu/menu.tsx +0 -180
  32. package/src/core/components/menu/menuButton.tsx +0 -276
  33. package/src/core/components/menu/menuContext.ts +0 -18
  34. package/src/core/components/menu/menuDivider.ts +0 -24
  35. package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -66
  36. package/src/core/components/menu/menuGroup.tsx +0 -237
  37. package/src/core/components/menu/menuItem.spacing.test.tsx +0 -62
  38. package/src/core/components/menu/menuItem.tsx +0 -201
  39. package/src/core/components/menu/useMenu.ts +0 -21
  40. package/src/core/components/menu/useMenuController.ts +0 -233
  41. package/src/core/components/skeleton/index.ts +0 -2
  42. package/src/core/components/skeleton/skeleton.tsx +0 -58
  43. package/src/core/components/skeleton/styles.ts +0 -50
  44. package/src/core/components/skeleton/textSkeleton.tsx +0 -122
  45. package/src/core/components/tab/index.ts +0 -3
  46. package/src/core/components/tab/tab.tsx +0 -102
  47. package/src/core/components/tab/tabList.test.tsx +0 -50
  48. package/src/core/components/tab/tabList.tsx +0 -71
  49. package/src/core/components/tab/tabPanel.tsx +0 -39
  50. package/src/core/components/toast/index.ts +0 -4
  51. package/src/core/components/toast/styles.ts +0 -77
  52. package/src/core/components/toast/toast.test.tsx +0 -106
  53. package/src/core/components/toast/toast.tsx +0 -199
  54. package/src/core/components/toast/toastContext.ts +0 -7
  55. package/src/core/components/toast/toastLayer.tsx +0 -52
  56. package/src/core/components/toast/toastProvider.tsx +0 -113
  57. package/src/core/components/toast/toastState.ts +0 -6
  58. package/src/core/components/toast/types.ts +0 -26
  59. package/src/core/components/toast/useToast.ts +0 -25
  60. package/src/core/components/tree/helpers.ts +0 -105
  61. package/src/core/components/tree/index.ts +0 -4
  62. package/src/core/components/tree/style.ts +0 -105
  63. package/src/core/components/tree/tree.test.tsx +0 -60
  64. package/src/core/components/tree/tree.tsx +0 -242
  65. package/src/core/components/tree/treeContext.ts +0 -10
  66. package/src/core/components/tree/treeGroup.tsx +0 -29
  67. package/src/core/components/tree/treeItem.test.tsx +0 -70
  68. package/src/core/components/tree/treeItem.tsx +0 -225
  69. package/src/core/components/tree/types.ts +0 -25
  70. package/src/core/components/tree/useTree.ts +0 -17
  71. package/src/core/constants.ts +0 -79
  72. package/src/core/helpers/animation.ts +0 -27
  73. package/src/core/helpers/element.ts +0 -55
  74. package/src/core/helpers/focus.ts +0 -100
  75. package/src/core/helpers/index.ts +0 -4
  76. package/src/core/helpers/scroll.ts +0 -15
  77. package/src/core/hooks/index.ts +0 -13
  78. package/src/core/hooks/useArrayProp.ts +0 -17
  79. package/src/core/hooks/useClickOutside.test.tsx +0 -510
  80. package/src/core/hooks/useClickOutside.ts +0 -118
  81. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -119
  82. package/src/core/hooks/useClickOutsideEvent.ts +0 -73
  83. package/src/core/hooks/useCustomValidity.ts +0 -13
  84. package/src/core/hooks/useDelayed.test.ts +0 -89
  85. package/src/core/hooks/useDelayedState.ts +0 -36
  86. package/src/core/hooks/useElementRect/index.ts +0 -1
  87. package/src/core/hooks/useElementRect/useElementRect.ts +0 -14
  88. package/src/core/hooks/useElementSize.ts +0 -19
  89. package/src/core/hooks/useForwardedRef.ts +0 -20
  90. package/src/core/hooks/useGlobalKeyDown.ts +0 -24
  91. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  92. package/src/core/hooks/useMatchMedia.ts +0 -28
  93. package/src/core/hooks/useMediaIndex/index.ts +0 -1
  94. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -37
  95. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
  96. package/src/core/hooks/useMounted.ts +0 -15
  97. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -58
  98. package/src/core/hooks/usePrefersDark.test.tsx +0 -21
  99. package/src/core/hooks/usePrefersDark.ts +0 -16
  100. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -58
  101. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -21
  102. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  103. package/src/core/index.ts +0 -10
  104. package/src/core/lib/createGlobalScopedContext.ts +0 -37
  105. package/src/core/lib/globalScope.ts +0 -20
  106. package/src/core/lib/isRecord.ts +0 -3
  107. package/src/core/middleware/origin.ts +0 -47
  108. package/src/core/observers/elementSizeObserver.ts +0 -117
  109. package/src/core/observers/index.ts +0 -2
  110. package/src/core/observers/resizeObserver.ts +0 -9
  111. package/src/core/primitives/_selectable/index.ts +0 -1
  112. package/src/core/primitives/_selectable/selectable.tsx +0 -15
  113. package/src/core/primitives/_selectable/style.ts +0 -115
  114. package/src/core/primitives/avatar/avatar.tsx +0 -200
  115. package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
  116. package/src/core/primitives/avatar/avatarStack.tsx +0 -101
  117. package/src/core/primitives/avatar/index.ts +0 -4
  118. package/src/core/primitives/avatar/styles.ts +0 -167
  119. package/src/core/primitives/avatar/types.ts +0 -17
  120. package/src/core/primitives/badge/badge.test.tsx +0 -17
  121. package/src/core/primitives/badge/badge.tsx +0 -72
  122. package/src/core/primitives/badge/index.ts +0 -1
  123. package/src/core/primitives/badge/styles.ts +0 -20
  124. package/src/core/primitives/badge/types.ts +0 -8
  125. package/src/core/primitives/box/box.test.tsx +0 -155
  126. package/src/core/primitives/box/box.tsx +0 -162
  127. package/src/core/primitives/box/index.ts +0 -1
  128. package/src/core/primitives/button/button.test.tsx +0 -86
  129. package/src/core/primitives/button/button.tsx +0 -214
  130. package/src/core/primitives/button/index.ts +0 -1
  131. package/src/core/primitives/button/styles.ts +0 -118
  132. package/src/core/primitives/card/card.tsx +0 -125
  133. package/src/core/primitives/card/index.ts +0 -2
  134. package/src/core/primitives/card/styles.ts +0 -147
  135. package/src/core/primitives/card/types.ts +0 -12
  136. package/src/core/primitives/checkbox/checkbox.tsx +0 -73
  137. package/src/core/primitives/checkbox/index.ts +0 -1
  138. package/src/core/primitives/checkbox/styles.ts +0 -128
  139. package/src/core/primitives/code/code.tsx +0 -56
  140. package/src/core/primitives/code/index.ts +0 -1
  141. package/src/core/primitives/code/refractor.tsx +0 -22
  142. package/src/core/primitives/code/styles.ts +0 -77
  143. package/src/core/primitives/container/container.tsx +0 -55
  144. package/src/core/primitives/container/index.ts +0 -2
  145. package/src/core/primitives/container/styles.ts +0 -23
  146. package/src/core/primitives/container/types.ts +0 -6
  147. package/src/core/primitives/flex/flex.tsx +0 -63
  148. package/src/core/primitives/flex/index.ts +0 -1
  149. package/src/core/primitives/grid/grid.test.tsx +0 -86
  150. package/src/core/primitives/grid/grid.tsx +0 -77
  151. package/src/core/primitives/grid/index.ts +0 -1
  152. package/src/core/primitives/heading/heading.tsx +0 -89
  153. package/src/core/primitives/heading/index.ts +0 -1
  154. package/src/core/primitives/heading/styles.ts +0 -64
  155. package/src/core/primitives/heading/types.ts +0 -7
  156. package/src/core/primitives/index.ts +0 -27
  157. package/src/core/primitives/inline/index.ts +0 -1
  158. package/src/core/primitives/inline/inline.test.tsx +0 -55
  159. package/src/core/primitives/inline/inline.tsx +0 -66
  160. package/src/core/primitives/inline/styles.ts +0 -32
  161. package/src/core/primitives/inline/types.ts +0 -6
  162. package/src/core/primitives/kbd/index.ts +0 -1
  163. package/src/core/primitives/kbd/kbd.tsx +0 -73
  164. package/src/core/primitives/label/index.ts +0 -1
  165. package/src/core/primitives/label/label.tsx +0 -88
  166. package/src/core/primitives/label/styles.ts +0 -45
  167. package/src/core/primitives/popover/constants.ts +0 -22
  168. package/src/core/primitives/popover/floating-ui/size.ts +0 -99
  169. package/src/core/primitives/popover/helpers.ts +0 -31
  170. package/src/core/primitives/popover/index.ts +0 -2
  171. package/src/core/primitives/popover/popover.tsx +0 -512
  172. package/src/core/primitives/popover/popoverCard.tsx +0 -167
  173. package/src/core/primitives/popover/types.ts +0 -6
  174. package/src/core/primitives/radio/index.ts +0 -1
  175. package/src/core/primitives/radio/radio.tsx +0 -51
  176. package/src/core/primitives/radio/styles.ts +0 -117
  177. package/src/core/primitives/select/index.ts +0 -1
  178. package/src/core/primitives/select/select.test.tsx +0 -56
  179. package/src/core/primitives/select/select.tsx +0 -95
  180. package/src/core/primitives/select/styles.ts +0 -166
  181. package/src/core/primitives/spinner/index.ts +0 -1
  182. package/src/core/primitives/spinner/spinner.tsx +0 -46
  183. package/src/core/primitives/stack/index.ts +0 -1
  184. package/src/core/primitives/stack/stack.test.tsx +0 -61
  185. package/src/core/primitives/stack/stack.tsx +0 -59
  186. package/src/core/primitives/stack/styles.ts +0 -33
  187. package/src/core/primitives/switch/index.ts +0 -1
  188. package/src/core/primitives/switch/styles.ts +0 -173
  189. package/src/core/primitives/switch/switch.tsx +0 -68
  190. package/src/core/primitives/text/index.ts +0 -1
  191. package/src/core/primitives/text/styles.ts +0 -74
  192. package/src/core/primitives/text/text.tsx +0 -90
  193. package/src/core/primitives/textArea/index.ts +0 -1
  194. package/src/core/primitives/textArea/textArea.tsx +0 -120
  195. package/src/core/primitives/textInput/index.ts +0 -1
  196. package/src/core/primitives/textInput/textInput.test.tsx +0 -52
  197. package/src/core/primitives/textInput/textInput.tsx +0 -398
  198. package/src/core/primitives/tooltip/constants.ts +0 -23
  199. package/src/core/primitives/tooltip/index.ts +0 -2
  200. package/src/core/primitives/tooltip/tooltip.test.tsx +0 -485
  201. package/src/core/primitives/tooltip/tooltip.tsx +0 -497
  202. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -110
  203. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  204. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
  205. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
  206. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -12
  207. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  208. package/src/core/primitives/types.ts +0 -179
  209. package/src/core/styles/border/borderStyle.ts +0 -56
  210. package/src/core/styles/border/index.ts +0 -2
  211. package/src/core/styles/border/types.ts +0 -10
  212. package/src/core/styles/box/boxStyle.ts +0 -69
  213. package/src/core/styles/box/index.ts +0 -2
  214. package/src/core/styles/box/types.ts +0 -11
  215. package/src/core/styles/card/_cardColorStyle.ts +0 -108
  216. package/src/core/styles/card/index.ts +0 -1
  217. package/src/core/styles/flex/flexItemStyle.ts +0 -27
  218. package/src/core/styles/flex/flexStyle.ts +0 -70
  219. package/src/core/styles/flex/index.ts +0 -3
  220. package/src/core/styles/flex/types.ts +0 -24
  221. package/src/core/styles/focusRing/index.ts +0 -25
  222. package/src/core/styles/font/codeFontStyle.ts +0 -13
  223. package/src/core/styles/font/headingFontStyle.ts +0 -13
  224. package/src/core/styles/font/index.ts +0 -6
  225. package/src/core/styles/font/labelFontStyle.ts +0 -13
  226. package/src/core/styles/font/responsiveFont.ts +0 -100
  227. package/src/core/styles/font/textAlignStyle.ts +0 -19
  228. package/src/core/styles/font/textFontStyle.ts +0 -13
  229. package/src/core/styles/font/types.ts +0 -33
  230. package/src/core/styles/grid/gridItemStyle.ts +0 -82
  231. package/src/core/styles/grid/gridStyle.ts +0 -109
  232. package/src/core/styles/grid/index.ts +0 -3
  233. package/src/core/styles/grid/types.ts +0 -37
  234. package/src/core/styles/helpers.ts +0 -72
  235. package/src/core/styles/index.ts +0 -5
  236. package/src/core/styles/input/index.ts +0 -2
  237. package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
  238. package/src/core/styles/input/textInputStyle.ts +0 -263
  239. package/src/core/styles/internal.ts +0 -12
  240. package/src/core/styles/margin/index.ts +0 -2
  241. package/src/core/styles/margin/marginStyle.ts +0 -22
  242. package/src/core/styles/margin/marginsStyle.test.ts +0 -34
  243. package/src/core/styles/margin/types.ts +0 -9
  244. package/src/core/styles/padding/index.ts +0 -2
  245. package/src/core/styles/padding/paddingStyle.test.ts +0 -34
  246. package/src/core/styles/padding/paddingStyle.ts +0 -22
  247. package/src/core/styles/padding/types.ts +0 -12
  248. package/src/core/styles/radius/index.ts +0 -2
  249. package/src/core/styles/radius/radiusStyle.ts +0 -23
  250. package/src/core/styles/radius/types.ts +0 -8
  251. package/src/core/styles/shadow/index.ts +0 -2
  252. package/src/core/styles/shadow/shadowStyle.ts +0 -29
  253. package/src/core/styles/shadow/types.ts +0 -6
  254. package/src/core/styles/types.ts +0 -8
  255. package/src/core/theme/index.ts +0 -5
  256. package/src/core/theme/theme.test.tsx +0 -77
  257. package/src/core/theme/themeColorProvider.tsx +0 -29
  258. package/src/core/theme/themeContext.ts +0 -10
  259. package/src/core/theme/themeProvider.tsx +0 -62
  260. package/src/core/theme/types.ts +0 -12
  261. package/src/core/theme/useRootTheme.ts +0 -18
  262. package/src/core/theme/useTheme.ts +0 -18
  263. package/src/core/types/avatar.ts +0 -14
  264. package/src/core/types/badge.ts +0 -12
  265. package/src/core/types/box.ts +0 -19
  266. package/src/core/types/button.ts +0 -21
  267. package/src/core/types/card.ts +0 -6
  268. package/src/core/types/component.ts +0 -32
  269. package/src/core/types/dialog.ts +0 -4
  270. package/src/core/types/flex.ts +0 -30
  271. package/src/core/types/grid.ts +0 -14
  272. package/src/core/types/gridItem.ts +0 -29
  273. package/src/core/types/index.ts +0 -15
  274. package/src/core/types/placement.ts +0 -18
  275. package/src/core/types/popover.ts +0 -4
  276. package/src/core/types/radius.ts +0 -4
  277. package/src/core/types/selectable.ts +0 -6
  278. package/src/core/types/text.ts +0 -4
  279. package/src/core/utils/arrow/arrow.tsx +0 -124
  280. package/src/core/utils/arrow/cmds.ts +0 -91
  281. package/src/core/utils/arrow/index.ts +0 -1
  282. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -105
  283. package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
  284. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
  285. package/src/core/utils/boundaryElement/index.ts +0 -3
  286. package/src/core/utils/boundaryElement/types.ts +0 -7
  287. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
  288. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -22
  289. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  290. package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
  291. package/src/core/utils/elementQuery/helpers.ts +0 -27
  292. package/src/core/utils/elementQuery/index.ts +0 -1
  293. package/src/core/utils/errorBoundary.tsx +0 -48
  294. package/src/core/utils/getElementRef.ts +0 -31
  295. package/src/core/utils/index.ts +0 -9
  296. package/src/core/utils/layer/getLayerContext.test.ts +0 -32
  297. package/src/core/utils/layer/getLayerContext.ts +0 -21
  298. package/src/core/utils/layer/index.ts +0 -4
  299. package/src/core/utils/layer/layer.test.tsx +0 -113
  300. package/src/core/utils/layer/layer.tsx +0 -99
  301. package/src/core/utils/layer/layerContext.ts +0 -7
  302. package/src/core/utils/layer/layerProvider.tsx +0 -111
  303. package/src/core/utils/layer/types.ts +0 -9
  304. package/src/core/utils/layer/useLayer.ts +0 -28
  305. package/src/core/utils/portal/index.ts +0 -4
  306. package/src/core/utils/portal/portal.test.tsx +0 -108
  307. package/src/core/utils/portal/portal.ts +0 -32
  308. package/src/core/utils/portal/portalContext.ts +0 -31
  309. package/src/core/utils/portal/portalProvider.tsx +0 -48
  310. package/src/core/utils/portal/types.ts +0 -9
  311. package/src/core/utils/portal/usePortal.ts +0 -25
  312. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  313. package/src/core/utils/srOnly/index.ts +0 -1
  314. package/src/core/utils/srOnly/srOnly.tsx +0 -36
  315. package/src/core/utils/virtualList/index.ts +0 -1
  316. package/src/core/utils/virtualList/virtualList.tsx +0 -201
  317. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -86
  318. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -58
  319. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -27
  320. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -60
  321. package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -66
  322. package/src/theme/build/_deprecated/color/color.test.ts +0 -67
  323. package/src/theme/build/_deprecated/color/defaults.ts +0 -391
  324. package/src/theme/build/_deprecated/color/factory.ts +0 -178
  325. package/src/theme/build/_deprecated/color/index.ts +0 -1
  326. package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -86
  327. package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -58
  328. package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -23
  329. package/src/theme/build/buildColorTheme.test.ts +0 -185
  330. package/src/theme/build/buildColorTheme.ts +0 -507
  331. package/src/theme/build/buildTheme.test.ts +0 -89
  332. package/src/theme/build/buildTheme.ts +0 -36
  333. package/src/theme/build/colorToken/colorToken.ts +0 -19
  334. package/src/theme/build/colorToken/compileColorToken.ts +0 -21
  335. package/src/theme/build/colorToken/index.ts +0 -2
  336. package/src/theme/build/colorToken/types.ts +0 -6
  337. package/src/theme/build/index.ts +0 -3
  338. package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
  339. package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
  340. package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
  341. package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
  342. package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -70
  343. package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
  344. package/src/theme/build/lib/color-fns/convert.ts +0 -150
  345. package/src/theme/build/lib/color-fns/index.ts +0 -6
  346. package/src/theme/build/lib/color-fns/parse.ts +0 -60
  347. package/src/theme/build/lib/color-fns/rgba.ts +0 -10
  348. package/src/theme/build/lib/color-fns/types.ts +0 -28
  349. package/src/theme/build/lib/isRecord.ts +0 -3
  350. package/src/theme/build/lib/lazy.ts +0 -30
  351. package/src/theme/build/lib/utils.ts +0 -19
  352. package/src/theme/build/merge.ts +0 -31
  353. package/src/theme/build/mixThemeColor.test.ts +0 -23
  354. package/src/theme/build/mixThemeColor.ts +0 -53
  355. package/src/theme/build/renderColorTheme.ts +0 -538
  356. package/src/theme/build/renderColorValue.ts +0 -83
  357. package/src/theme/build/resolveColorTokens.ts +0 -274
  358. package/src/theme/build/theme.test.ts +0 -29
  359. package/src/theme/config/helpers.ts +0 -60
  360. package/src/theme/config/index.ts +0 -4
  361. package/src/theme/config/system.ts +0 -117
  362. package/src/theme/config/tokens/color/index.ts +0 -1
  363. package/src/theme/config/tokens/color/types.ts +0 -135
  364. package/src/theme/config/tokens/index.ts +0 -4
  365. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -66
  366. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  367. package/src/theme/config/tokens/parseTokenValue.test.ts +0 -44
  368. package/src/theme/config/tokens/parseTokenValue.ts +0 -134
  369. package/src/theme/config/tokens/types.ts +0 -53
  370. package/src/theme/config/types.ts +0 -46
  371. package/src/theme/defaults/colorPalette.ts +0 -5
  372. package/src/theme/defaults/colorTokens.ts +0 -648
  373. package/src/theme/defaults/config.ts +0 -84
  374. package/src/theme/defaults/fonts.ts +0 -227
  375. package/src/theme/getScopedTheme.ts +0 -103
  376. package/src/theme/index.ts +0 -5
  377. package/src/theme/system/avatar.ts +0 -14
  378. package/src/theme/system/color/_constants.ts +0 -45
  379. package/src/theme/system/color/_helpers.ts +0 -28
  380. package/src/theme/system/color/_system.ts +0 -40
  381. package/src/theme/system/color/avatar.ts +0 -15
  382. package/src/theme/system/color/badge.ts +0 -16
  383. package/src/theme/system/color/button.ts +0 -17
  384. package/src/theme/system/color/color.ts +0 -34
  385. package/src/theme/system/color/index.ts +0 -13
  386. package/src/theme/system/color/input.ts +0 -25
  387. package/src/theme/system/color/kbd.ts +0 -8
  388. package/src/theme/system/color/selectable.ts +0 -12
  389. package/src/theme/system/color/shadow.ts +0 -7
  390. package/src/theme/system/color/state.ts +0 -43
  391. package/src/theme/system/color/syntax.ts +0 -41
  392. package/src/theme/system/css.ts +0 -14
  393. package/src/theme/system/focusRing.ts +0 -7
  394. package/src/theme/system/font.ts +0 -52
  395. package/src/theme/system/index.ts +0 -11
  396. package/src/theme/system/input.ts +0 -33
  397. package/src/theme/system/layer.ts +0 -8
  398. package/src/theme/system/shadow.ts +0 -19
  399. package/src/theme/system/styles.ts +0 -13
  400. package/src/theme/system/theme.ts +0 -142
  401. package/src/theme/system/v0/avatar.ts +0 -10
  402. package/src/theme/system/v0/color/_generic.ts +0 -35
  403. package/src/theme/system/v0/color/_system.ts +0 -18
  404. package/src/theme/system/v0/color/base.ts +0 -21
  405. package/src/theme/system/v0/color/button.ts +0 -56
  406. package/src/theme/system/v0/color/card.ts +0 -25
  407. package/src/theme/system/v0/color/color.ts +0 -51
  408. package/src/theme/system/v0/color/index.ts +0 -11
  409. package/src/theme/system/v0/color/input.ts +0 -40
  410. package/src/theme/system/v0/color/muted.ts +0 -37
  411. package/src/theme/system/v0/color/selectable.ts +0 -42
  412. package/src/theme/system/v0/color/solid.ts +0 -37
  413. package/src/theme/system/v0/color/spot.ts +0 -14
  414. package/src/theme/system/v0/index.ts +0 -3
  415. package/src/theme/system/v0/input.ts +0 -23
  416. package/src/theme/versioning/getTheme_v2.ts +0 -72
  417. package/src/theme/versioning/index.ts +0 -5
  418. package/src/theme/versioning/is_v0.ts +0 -6
  419. package/src/theme/versioning/is_v2.ts +0 -6
  420. package/src/theme/versioning/themeColor_v0_v2.ts +0 -250
  421. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -50
  422. package/src/theme/versioning/v0_v2.ts +0 -106
  423. 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
- }