@sanity/ui 3.0.0-static.1 → 3.0.0-static.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/LICENSE +1 -1
  2. package/bin/ui.js +0 -1
  3. package/dist/_chunks-cjs/_visual-editing.js +3059 -0
  4. package/dist/_chunks-cjs/_visual-editing.js.map +1 -0
  5. package/dist/_chunks-cjs/buildCommand.js +14 -3524
  6. package/dist/_chunks-cjs/buildCommand.js.map +1 -1
  7. package/dist/_chunks-cjs/refractor.js +27 -0
  8. package/dist/_chunks-cjs/refractor.js.map +1 -0
  9. package/dist/_chunks-cjs/v3_v2.js +251 -0
  10. package/dist/_chunks-cjs/v3_v2.js.map +1 -0
  11. package/dist/_chunks-es/_visual-editing.mjs +3066 -0
  12. package/dist/_chunks-es/_visual-editing.mjs.map +1 -0
  13. package/dist/_chunks-es/refractor.mjs +26 -0
  14. package/dist/_chunks-es/refractor.mjs.map +1 -0
  15. package/dist/_chunks-es/v3_v2.mjs +252 -0
  16. package/dist/_chunks-es/v3_v2.mjs.map +1 -0
  17. package/dist/_visual-editing.d.mts +806 -0
  18. package/dist/_visual-editing.d.ts +806 -0
  19. package/dist/_visual-editing.js +31 -0
  20. package/dist/_visual-editing.js.map +1 -0
  21. package/dist/_visual-editing.mjs +31 -0
  22. package/dist/_visual-editing.mjs.map +1 -0
  23. package/dist/cli.js +337 -5
  24. package/dist/cli.js.map +1 -1
  25. package/dist/css.d.mts +1446 -373
  26. package/dist/css.d.ts +1446 -373
  27. package/dist/css.js +2665 -1747
  28. package/dist/css.js.map +1 -1
  29. package/dist/css.mjs +2651 -1732
  30. package/dist/css.mjs.map +1 -1
  31. package/dist/index.d.mts +418 -520
  32. package/dist/index.d.ts +418 -520
  33. package/dist/index.js +737 -4617
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +633 -4522
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/sanity-palette.css +9 -0
  38. package/dist/sanity-theme.css +1 -25
  39. package/dist/system.css +596 -404
  40. package/dist/theme.d.mts +431 -110
  41. package/dist/theme.d.ts +431 -110
  42. package/dist/theme.js +1216 -2430
  43. package/dist/theme.js.map +1 -1
  44. package/dist/theme.mjs +1238 -2450
  45. package/dist/theme.mjs.map +1 -1
  46. package/exports/_visual-editing.ts +31 -0
  47. package/package.json +92 -81
  48. package/src/{css/cli → cli}/buildCommand.ts +21 -9
  49. package/src/{css/cli → cli}/index.ts +1 -1
  50. package/src/core/StyleTags.tsx +24 -0
  51. package/src/core/_compat/index.ts +8 -1
  52. package/src/core/_compat/styles/_responsive.ts +19 -0
  53. package/src/core/_compat/styles/index.ts +1 -5
  54. package/src/core/{theme → _compat/theme}/theme.test.tsx +2 -2
  55. package/src/core/{theme → _compat/theme}/themeColorProvider.tsx +4 -2
  56. package/src/core/{theme → _compat/theme}/themeContext.ts +1 -1
  57. package/src/core/{theme → _compat/theme}/themeProvider.tsx +10 -11
  58. package/src/core/{theme → _compat/theme}/useRootTheme.ts +1 -0
  59. package/src/core/{theme → _compat/theme}/useTheme.ts +2 -2
  60. package/src/core/_compat/types.ts +11 -11
  61. package/src/core/components/autocomplete/__mocks__/apiStore.ts +1 -1
  62. package/src/core/components/autocomplete/__workshop__/async.tsx +1 -0
  63. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +4 -2
  64. package/src/core/components/autocomplete/__workshop__/custom.tsx +3 -2
  65. package/src/core/components/autocomplete/__workshop__/example.tsx +3 -2
  66. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +1 -0
  67. package/src/core/components/autocomplete/autocomplete.tsx +54 -61
  68. package/src/core/components/autocomplete/autocompleteOption.tsx +5 -4
  69. package/src/core/components/autocomplete/types.ts +2 -2
  70. package/src/core/components/breadcrumbs/__workshop__/example.tsx +7 -0
  71. package/src/core/components/breadcrumbs/breadcrumbs.tsx +32 -16
  72. package/src/core/components/dialog/__workshop__/activate.tsx +2 -1
  73. package/src/core/components/dialog/__workshop__/nested.tsx +3 -3
  74. package/src/core/components/dialog/__workshop__/onScroll.tsx +2 -2
  75. package/src/core/components/dialog/__workshop__/panes.tsx +1 -0
  76. package/src/core/components/dialog/__workshop__/position.tsx +2 -1
  77. package/src/core/components/dialog/__workshop__/props.tsx +2 -1
  78. package/src/core/components/dialog/__workshop__/wrapped.tsx +1 -3
  79. package/src/core/components/dialog/dialog.tsx +50 -27
  80. package/src/core/components/dialog/dialogProvider.tsx +4 -3
  81. package/src/core/components/dialog/useDialog.ts +1 -0
  82. package/src/core/components/hotkeys/hotkeys.tsx +20 -14
  83. package/src/core/components/menu/__workshop__/asComponent.tsx +2 -1
  84. package/src/core/components/menu/__workshop__/avatarMenu.tsx +1 -0
  85. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +1 -0
  86. package/src/core/components/menu/__workshop__/customSelectedState.tsx +1 -0
  87. package/src/core/components/menu/__workshop__/menuButton.tsx +2 -1
  88. package/src/core/components/menu/__workshop__/shouldFocus.tsx +1 -0
  89. package/src/core/components/menu/__workshop__/tones.tsx +7 -7
  90. package/src/core/components/menu/menu.test.tsx +4 -5
  91. package/src/core/components/menu/menu.tsx +49 -22
  92. package/src/core/components/menu/menuButton.tsx +47 -61
  93. package/src/core/components/menu/menuContext.ts +6 -4
  94. package/src/core/components/menu/menuDivider.tsx +9 -3
  95. package/src/core/components/menu/menuGroup.tsx +50 -26
  96. package/src/core/components/menu/menuItem.tsx +31 -38
  97. package/src/core/components/menu/useMenu.ts +1 -0
  98. package/src/core/components/menu/useMenuController.ts +18 -7
  99. package/src/core/components/skeleton/__workshop__/delay.tsx +2 -1
  100. package/src/core/components/skeleton/__workshop__/skeleton.tsx +2 -1
  101. package/src/core/components/skeleton/skeleton.tsx +4 -3
  102. package/src/core/components/skeleton/textSkeleton.tsx +11 -25
  103. package/src/core/components/tab/tab.tsx +21 -14
  104. package/src/core/components/tab/tabList.tsx +24 -11
  105. package/src/core/components/tab/tabPanel.tsx +5 -4
  106. package/src/core/components/toast/__workshop__/hook.tsx +1 -1
  107. package/src/core/components/toast/__workshop__/toast.tsx +2 -1
  108. package/src/core/components/toast/toast.test.tsx +0 -1
  109. package/src/core/components/toast/toast.tsx +130 -40
  110. package/src/core/components/toast/toastLayer.tsx +38 -0
  111. package/src/core/components/toast/toastProvider.tsx +60 -140
  112. package/src/core/components/toast/toastState.ts +6 -0
  113. package/src/core/components/toast/types.ts +10 -2
  114. package/src/core/components/toast/useToast.ts +1 -0
  115. package/src/core/components/tree/__workshop__/basic.tsx +1 -0
  116. package/src/core/components/tree/__workshop__/tabFromElement.tsx +2 -1
  117. package/src/core/components/tree/tree.tsx +16 -13
  118. package/src/core/components/tree/treeGroup.tsx +5 -7
  119. package/src/core/components/tree/treeItem.tsx +41 -34
  120. package/src/core/components/tree/useTree.ts +1 -0
  121. package/src/core/constants.ts +45 -23
  122. package/src/core/helpers/focus.ts +3 -3
  123. package/src/core/helpers/index.ts +1 -0
  124. package/src/core/helpers/props.ts +10 -0
  125. package/src/core/hooks/useArrayProp.ts +19 -15
  126. package/src/core/hooks/useClickOutside.test.tsx +3 -4
  127. package/src/core/hooks/useClickOutside.ts +1 -0
  128. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -1
  129. package/src/core/hooks/useClickOutsideEvent.ts +2 -1
  130. package/src/core/hooks/useDelayed.test.ts +2 -1
  131. package/src/core/hooks/useDelayedState.ts +2 -3
  132. package/src/core/hooks/useElementRect/__workshop__/example.tsx +3 -2
  133. package/src/core/hooks/useElementSize.ts +2 -1
  134. package/src/core/hooks/useForwardedRef.ts +2 -2
  135. package/src/core/hooks/useGlobalKeyDown.ts +9 -4
  136. package/src/core/hooks/useMatchMedia.ts +1 -1
  137. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +3 -2
  138. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +2 -1
  139. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -1
  140. package/src/core/hooks/usePrefersDark.test.tsx +2 -1
  141. package/src/core/hooks/usePrefersDark.ts +1 -1
  142. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -1
  143. package/src/core/hooks/usePrefersReducedMotion.test.tsx +2 -1
  144. package/src/core/hooks/usePrefersReducedMotion.ts +1 -1
  145. package/src/core/index.ts +2 -3
  146. package/src/core/lib/createGlobalScopedContext.ts +2 -1
  147. package/src/core/lib/globalScope.ts +0 -1
  148. package/src/core/primitives/_selectable/selectable.tsx +9 -5
  149. package/src/core/primitives/avatar/__workshop__/asButton.tsx +2 -1
  150. package/src/core/primitives/avatar/__workshop__/stack.tsx +2 -1
  151. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +4 -3
  152. package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +26 -23
  153. package/src/core/primitives/avatar/avatar.tsx +42 -80
  154. package/src/core/primitives/avatar/avatarCounter.tsx +26 -57
  155. package/src/core/primitives/avatar/avatarStack.tsx +37 -55
  156. package/src/core/primitives/avatar/types.ts +1 -0
  157. package/src/core/primitives/badge/__workshop__/props.tsx +2 -1
  158. package/src/core/primitives/badge/__workshop__/tones.tsx +2 -1
  159. package/src/core/primitives/badge/badge.test.tsx +1 -0
  160. package/src/core/primitives/badge/badge.tsx +10 -5
  161. package/src/core/primitives/box/__workshop__/props.tsx +2 -1
  162. package/src/core/primitives/box/box.tsx +45 -12
  163. package/src/core/primitives/button/__workshop__/custom.tsx +7 -4
  164. package/src/core/primitives/button/__workshop__/disabled.tsx +1 -0
  165. package/src/core/primitives/button/__workshop__/props.tsx +7 -2
  166. package/src/core/primitives/button/__workshop__/stacked.tsx +2 -1
  167. package/src/core/primitives/button/button.test.tsx +1 -0
  168. package/src/core/primitives/button/button.tsx +137 -113
  169. package/src/core/primitives/card/__workshop__/allTones.tsx +21 -21
  170. package/src/core/primitives/card/__workshop__/asButton.tsx +44 -25
  171. package/src/core/primitives/card/__workshop__/asComponent.tsx +2 -2
  172. package/src/core/primitives/card/__workshop__/checkered.tsx +17 -7
  173. package/src/core/primitives/card/__workshop__/interactive.tsx +10 -3
  174. package/src/core/primitives/card/__workshop__/listNavigation.tsx +6 -3
  175. package/src/core/primitives/card/__workshop__/props.tsx +13 -7
  176. package/src/core/primitives/card/__workshop__/selected.tsx +11 -9
  177. package/src/core/primitives/card/card.tsx +47 -55
  178. package/src/core/primitives/card/types.ts +1 -0
  179. package/src/core/primitives/checkbox/__workshop__/tones.tsx +6 -0
  180. package/src/core/primitives/checkbox/checkbox.tsx +9 -5
  181. package/src/core/primitives/code/__workshop__/props.tsx +3 -2
  182. package/src/core/primitives/code/code.tsx +11 -11
  183. package/src/core/primitives/code/refractor.tsx +20 -0
  184. package/src/core/primitives/container/__workshop__/example.tsx +3 -2
  185. package/src/core/primitives/container/container.tsx +7 -4
  186. package/src/core/primitives/flex/__workshop__/example.tsx +5 -4
  187. package/src/core/primitives/flex/__workshop__/gap.tsx +6 -6
  188. package/src/core/primitives/flex/flex.tsx +9 -12
  189. package/src/core/primitives/grid/__workshop__/responsive.tsx +12 -12
  190. package/src/core/primitives/grid/grid.tsx +7 -11
  191. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +13 -25
  192. package/src/core/primitives/heading/__workshop__/plain.tsx +3 -2
  193. package/src/core/primitives/heading/heading.tsx +19 -39
  194. package/src/core/primitives/inline/__workshop__/plain.tsx +5 -4
  195. package/src/core/primitives/inline/inline.tsx +10 -7
  196. package/src/core/primitives/kbd/kbd.tsx +8 -6
  197. package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +13 -7
  198. package/src/core/primitives/label/__workshop__/plain.tsx +22 -8
  199. package/src/core/primitives/label/label.tsx +26 -50
  200. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +3 -2
  201. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +5 -4
  202. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +1 -1
  203. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +3 -2
  204. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +5 -2
  205. package/src/core/primitives/popover/__workshop__/TestStory.tsx +5 -4
  206. package/src/core/primitives/popover/floating-ui/size.ts +2 -1
  207. package/src/core/primitives/popover/helpers.ts +4 -3
  208. package/src/core/primitives/popover/popover.tsx +51 -44
  209. package/src/core/primitives/popover/popoverCard.tsx +22 -27
  210. package/src/core/primitives/radio/__workshop__/plain.tsx +2 -2
  211. package/src/core/primitives/radio/radio.tsx +10 -11
  212. package/src/core/primitives/select/__workshop__/plain.tsx +5 -2
  213. package/src/core/primitives/select/__workshop__/readOnly.tsx +1 -1
  214. package/src/core/primitives/select/select.tsx +40 -41
  215. package/src/core/primitives/spinner/__workshop__/Props.tsx +2 -1
  216. package/src/core/primitives/spinner/spinner.tsx +5 -3
  217. package/src/core/primitives/stack/__workshop__/plain.tsx +2 -1
  218. package/src/core/primitives/stack/stack.tsx +10 -11
  219. package/src/core/primitives/switch/switch.tsx +22 -13
  220. package/src/core/primitives/text/__workshop__/colored.tsx +8 -14
  221. package/src/core/primitives/text/__workshop__/example.tsx +8 -7
  222. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +11 -21
  223. package/src/core/primitives/text/text.tsx +20 -38
  224. package/src/core/primitives/textArea/__workshop__/plain.tsx +4 -3
  225. package/src/core/primitives/textArea/textArea.tsx +28 -75
  226. package/src/core/primitives/textInput/__workshop__/index.ts +0 -5
  227. package/src/core/primitives/textInput/__workshop__/plain.tsx +8 -3
  228. package/src/core/primitives/textInput/__workshop__/readOnly.tsx +6 -2
  229. package/src/core/primitives/textInput/__workshop__/tones.tsx +38 -0
  230. package/src/core/primitives/textInput/__workshop__/typed.tsx +2 -1
  231. package/src/core/primitives/textInput/textInput.tsx +133 -220
  232. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +2 -1
  233. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +2 -1
  234. package/src/core/primitives/tooltip/__workshop__/props.tsx +8 -3
  235. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +2 -1
  236. package/src/core/primitives/tooltip/tooltip.test.tsx +4 -2
  237. package/src/core/primitives/tooltip/tooltip.tsx +64 -61
  238. package/src/core/primitives/tooltip/tooltipCard.tsx +31 -26
  239. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +1 -1
  240. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +4 -6
  241. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -1
  242. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +1 -0
  243. package/src/core/primitives/types.ts +5 -5
  244. package/src/core/types/box.ts +0 -3
  245. package/src/core/types/button.ts +2 -0
  246. package/src/core/types/flex.ts +0 -4
  247. package/src/core/types/grid.ts +5 -7
  248. package/src/core/types/gridItem.ts +4 -9
  249. package/src/core/types/index.ts +1 -0
  250. package/src/core/types/props.ts +18 -0
  251. package/src/core/types/selectable.ts +1 -0
  252. package/src/core/utils/arrow/arrow.tsx +34 -97
  253. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -1
  254. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +4 -3
  255. package/src/core/utils/boundaryElement/index.ts +1 -1
  256. package/src/core/utils/boundaryElement/useBoundaryElement.ts +1 -0
  257. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +5 -3
  258. package/src/core/utils/elementQuery/elementQuery.tsx +21 -21
  259. package/src/core/utils/errorBoundary.tsx +5 -4
  260. package/src/core/utils/getElementRef.ts +26 -0
  261. package/src/core/utils/layer/__workshop__/multipleRoots.tsx +1 -0
  262. package/src/core/utils/layer/__workshop__/nested.tsx +1 -0
  263. package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +1 -0
  264. package/src/core/utils/layer/index.ts +1 -1
  265. package/src/core/utils/layer/layer.test.tsx +0 -1
  266. package/src/core/utils/layer/layer.tsx +15 -11
  267. package/src/core/utils/layer/layerProvider.tsx +6 -5
  268. package/src/core/utils/layer/useLayer.ts +1 -0
  269. package/src/core/utils/portal/portal.test.tsx +0 -1
  270. package/src/core/utils/portal/portal.ts +4 -2
  271. package/src/core/utils/portal/portalProvider.tsx +4 -3
  272. package/src/core/utils/portal/usePortal.ts +1 -0
  273. package/src/core/utils/spanWithTextOverflow.tsx +10 -0
  274. package/src/core/utils/srOnly/srOnly.tsx +17 -18
  275. package/src/core/utils/virtualList/virtualList.tsx +55 -37
  276. package/src/css/_resp.ts +4 -1
  277. package/src/css/compile/compilePalette.ts +60 -0
  278. package/src/css/compile/compileRule.ts +45 -13
  279. package/src/css/compile/compileRules.test.ts +35 -0
  280. package/src/css/compile/compileRules.ts +14 -30
  281. package/src/css/compile/compileTheme.ts +8 -505
  282. package/src/css/compile/compileTheme_v3.ts +410 -0
  283. package/src/css/compile/types.ts +6 -0
  284. package/src/css/components/breadcrumbs/breadcrumbs.ts +1 -1
  285. package/src/css/components/dialog/{classes.ts → dialog.ts} +7 -7
  286. package/src/css/components/dialog/index.ts +1 -1
  287. package/src/css/components/dialog/rules.ts +2 -1
  288. package/src/css/components/menu/menu.ts +5 -1
  289. package/src/css/components/menu/rules.ts +6 -1
  290. package/src/css/components/skeleton/rules.ts +28 -22
  291. package/src/css/components/skeleton/skeleton.ts +5 -5
  292. package/src/css/components/skeleton/types.ts +2 -0
  293. package/src/css/components/toast/index.ts +1 -0
  294. package/src/css/components/toast/rules.ts +17 -68
  295. package/src/css/components/toast/toast.ts +21 -0
  296. package/src/css/components/tree/rules.ts +3 -2
  297. package/src/css/components/tree/tree.ts +1 -1
  298. package/src/css/composeClassNames.ts +12 -2
  299. package/src/css/index.ts +12 -23
  300. package/src/css/primitives/_arrow/_arrow.ts +14 -0
  301. package/src/css/primitives/_arrow/index.ts +1 -0
  302. package/src/css/primitives/_arrow/rules.ts +71 -0
  303. package/src/css/primitives/_input/index.ts +2 -0
  304. package/src/css/primitives/_input/input.ts +25 -0
  305. package/src/css/primitives/_input/rules.ts +163 -0
  306. package/src/css/primitives/_input/types.ts +12 -0
  307. package/src/css/primitives/{selectable → _selectable}/__style.ts +1 -1
  308. package/src/css/primitives/_selectable/_contants.ts +11 -0
  309. package/src/css/primitives/_selectable/rules.ts +129 -0
  310. package/src/css/primitives/_selectable/selectable.ts +9 -0
  311. package/src/css/primitives/_selectable/types.ts +8 -0
  312. package/src/css/primitives/avatar/avatar.ts +10 -15
  313. package/src/css/primitives/avatar/rules.ts +85 -99
  314. package/src/css/primitives/avatar/types.ts +1 -2
  315. package/src/css/primitives/badge/badge.ts +2 -2
  316. package/src/css/primitives/badge/rules.ts +13 -16
  317. package/src/css/primitives/badge/types.ts +2 -2
  318. package/src/css/primitives/box/box.ts +24 -14
  319. package/src/css/primitives/box/rules.ts +5 -2
  320. package/src/css/primitives/box/types.ts +24 -19
  321. package/src/css/primitives/button/_constants.ts +17 -0
  322. package/src/css/primitives/button/button.ts +27 -12
  323. package/src/css/primitives/button/rules.ts +275 -40
  324. package/src/css/primitives/card/_constants.ts +13 -0
  325. package/src/css/primitives/card/card.ts +8 -13
  326. package/src/css/primitives/card/index.ts +1 -0
  327. package/src/css/primitives/card/rules.ts +353 -123
  328. package/src/css/primitives/card/types.ts +11 -0
  329. package/src/css/primitives/checkbox/checkbox.ts +2 -2
  330. package/src/css/primitives/checkbox/rules.ts +31 -15
  331. package/src/css/primitives/code/code.ts +2 -2
  332. package/src/css/primitives/code/rules.ts +27 -2
  333. package/src/css/primitives/code/types.ts +1 -1
  334. package/src/css/primitives/container/container.ts +2 -2
  335. package/src/css/primitives/container/types.ts +1 -0
  336. package/src/css/primitives/heading/heading.ts +3 -2
  337. package/src/css/primitives/heading/rules.ts +77 -6
  338. package/src/css/primitives/heading/types.ts +2 -2
  339. package/src/css/primitives/kbd/kbd.ts +2 -2
  340. package/src/css/primitives/kbd/rules.ts +5 -5
  341. package/src/css/primitives/kbd/types.ts +3 -1
  342. package/src/css/primitives/label/label.ts +2 -2
  343. package/src/css/primitives/label/rules.ts +54 -2
  344. package/src/css/primitives/label/types.ts +1 -1
  345. package/src/css/primitives/popover/popover.ts +1 -1
  346. package/src/css/primitives/radio/radio.ts +1 -1
  347. package/src/css/primitives/radio/rules.ts +117 -1
  348. package/src/css/primitives/select/index.ts +1 -0
  349. package/src/css/primitives/select/rules.ts +18 -1
  350. package/src/css/primitives/select/select.ts +8 -2
  351. package/src/css/primitives/select/types.ts +5 -0
  352. package/src/css/primitives/spinner/spinner.ts +2 -2
  353. package/src/css/primitives/switch/rules.ts +264 -56
  354. package/src/css/primitives/switch/switch.ts +17 -1
  355. package/src/css/primitives/text/rules.ts +93 -4
  356. package/src/css/primitives/text/text.ts +3 -2
  357. package/src/css/primitives/text/types.ts +2 -2
  358. package/src/css/primitives/textArea/index.ts +1 -0
  359. package/src/css/primitives/textArea/rules.ts +3 -1
  360. package/src/css/primitives/textArea/textArea.ts +4 -2
  361. package/src/css/primitives/textArea/types.ts +5 -0
  362. package/src/css/primitives/textInput/rules.ts +33 -130
  363. package/src/css/primitives/textInput/textInput.ts +4 -11
  364. package/src/css/primitives/textInput/types.ts +8 -5
  365. package/src/css/primitives/token/rules.ts +37 -37
  366. package/src/css/primitives/tooltip/rules.ts +2 -0
  367. package/src/css/primitives/tooltip/tooltip.ts +2 -2
  368. package/src/css/rules.ts +16 -2
  369. package/src/css/styles/border/border.ts +1 -1
  370. package/src/css/styles/display/display.ts +7 -0
  371. package/src/css/styles/display/index.ts +2 -0
  372. package/src/css/styles/display/rules.ts +2 -2
  373. package/src/css/styles/display/types.ts +17 -0
  374. package/src/css/styles/flex/flex.ts +1 -1
  375. package/src/css/styles/flexItem/flexItem.ts +1 -1
  376. package/src/css/styles/flexItem/rules.ts +1 -0
  377. package/src/css/styles/font/font.ts +1 -1
  378. package/src/css/styles/font/rules.ts +4 -4
  379. package/src/css/styles/gap/gap.ts +1 -1
  380. package/src/css/styles/gap/rules.ts +1 -0
  381. package/src/css/styles/gap/types.ts +1 -0
  382. package/src/css/styles/grid/grid.ts +1 -1
  383. package/src/css/styles/gridItem/gridItem.ts +1 -1
  384. package/src/css/styles/index.ts +19 -0
  385. package/src/css/styles/inset/index.ts +2 -0
  386. package/src/css/styles/inset/inset.ts +13 -0
  387. package/src/css/styles/inset/rules.ts +16 -0
  388. package/src/css/styles/inset/types.ts +13 -0
  389. package/src/css/styles/margin/margin.ts +1 -1
  390. package/src/css/styles/margin/rules.ts +1 -0
  391. package/src/css/styles/maxWidth/rules.ts +8 -31
  392. package/src/css/styles/maxWidth/types.ts +2 -1
  393. package/src/css/styles/overflow/overflow.ts +1 -1
  394. package/src/css/styles/padding/padding.ts +1 -1
  395. package/src/css/styles/padding/rules.ts +1 -0
  396. package/src/css/styles/padding/types.ts +9 -7
  397. package/src/css/styles/pointerEvents/pointerEvents.ts +1 -1
  398. package/src/css/styles/position/position.ts +2 -2
  399. package/src/css/styles/position/rules.ts +0 -7
  400. package/src/css/styles/position/types.ts +0 -4
  401. package/src/css/styles/radius/radius.ts +1 -1
  402. package/src/css/styles/radius/rules.ts +1 -1
  403. package/src/css/styles/radius/types.ts +1 -0
  404. package/src/css/styles/shadow/index.ts +2 -0
  405. package/src/css/styles/shadow/rules.ts +5 -5
  406. package/src/css/styles/shadow/shadow.ts +7 -0
  407. package/src/css/styles/shadow/types.ts +8 -0
  408. package/src/css/styles/textOverflow/index.ts +2 -0
  409. package/src/css/styles/textOverflow/rules.ts +17 -0
  410. package/src/css/styles/textOverflow/textOverflow.ts +6 -0
  411. package/src/css/styles/textOverflow/types.ts +8 -0
  412. package/src/css/styles/width/index.ts +1 -1
  413. package/src/css/styles/width/types.ts +3 -2
  414. package/src/css/types.ts +457 -289
  415. package/src/css/util.ts +27 -0
  416. package/src/css/utils/srOnly/index.ts +1 -0
  417. package/src/css/utils/srOnly/rules.ts +11 -0
  418. package/src/css/utils/srOnly/srOnly.ts +5 -0
  419. package/src/css/varNames.ts +352 -260
  420. package/src/css/vars.ts +330 -286
  421. package/src/theme/{system/_constants.ts → _constants.ts} +5 -4
  422. package/src/theme/{system/_types.ts → _types.ts} +1 -1
  423. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +1 -1
  424. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +1 -1
  425. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +1 -6
  426. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +2 -2
  427. package/src/theme/build/_deprecated/color/card/createCardStates.ts +2 -2
  428. package/src/theme/build/_deprecated/color/factory.ts +8 -9
  429. package/src/theme/build/_deprecated/color/input/createInputModes.ts +1 -1
  430. package/src/theme/build/_deprecated/color/muted/createMuted.ts +2 -2
  431. package/src/theme/build/_deprecated/color/spot/createSpot.ts +1 -1
  432. package/src/theme/build/buildColorTheme.ts +62 -52
  433. package/src/theme/build/buildTheme.ts +8 -32
  434. package/src/theme/build/colorToken/colorToken.ts +1 -1
  435. package/src/theme/build/lib/color-fns/rgba.ts +4 -0
  436. package/src/theme/build/merge.ts +0 -2
  437. package/src/theme/build/mixThemeColor.ts +1 -1
  438. package/src/theme/build/renderColorTheme.ts +34 -37
  439. package/src/theme/build/renderColorValue.ts +4 -3
  440. package/src/theme/build/resolveColorTokens.ts +57 -120
  441. package/src/theme/config/helpers.ts +2 -2
  442. package/src/theme/config/system.ts +3 -2
  443. package/src/theme/config/tokens/color/types.ts +5 -18
  444. package/src/theme/config/tokens/parseTokenKey.ts +1 -1
  445. package/src/theme/config/tokens/parseTokenValue.ts +1 -1
  446. package/src/theme/config/tokens/types.ts +3 -2
  447. package/src/theme/config/types.ts +4 -4
  448. package/src/theme/defaults/colorTokens.ts +6 -4
  449. package/src/theme/defaults/config.ts +2 -2
  450. package/src/theme/defaults/fonts.ts +18 -17
  451. package/src/theme/getScopedTheme.ts +10 -4
  452. package/src/theme/index.ts +7 -1
  453. package/src/theme/palette/constants.ts +15 -0
  454. package/src/theme/palette/index.ts +2 -0
  455. package/src/theme/palette/types.ts +16 -0
  456. package/src/theme/types.ts +32 -0
  457. package/src/theme/{system/v0 → v0}/color/_generic.ts +1 -1
  458. package/src/theme/v0/color/_system.ts +17 -0
  459. package/src/theme/{system/v0 → v0}/color/color.ts +3 -2
  460. package/src/theme/{system/v0 → v0}/color/input.ts +1 -1
  461. package/src/theme/{system/v0 → v0}/color/spot.ts +1 -1
  462. package/src/theme/{system → v0}/css.ts +1 -2
  463. package/src/theme/{system → v0}/font.ts +1 -0
  464. package/src/theme/{system → v0}/index.ts +0 -4
  465. package/src/theme/v0/theme.ts +72 -0
  466. package/src/theme/{system → v2}/avatar.ts +1 -1
  467. package/src/theme/{system → v2}/color/_constants.ts +6 -2
  468. package/src/theme/{system → v2}/color/_helpers.ts +1 -0
  469. package/src/theme/v2/color/badge.ts +16 -0
  470. package/src/theme/{system → v2}/color/color.ts +1 -1
  471. package/src/theme/{system/v0 → v2}/index.ts +2 -1
  472. package/src/theme/{system → v2}/input.ts +1 -1
  473. package/src/theme/v2/theme.ts +49 -0
  474. package/src/theme/v3/buildTheme_v3.test.ts +40 -0
  475. package/src/theme/v3/buildTheme_v3.ts +30 -0
  476. package/src/theme/v3/color/buildColor_v3.ts +193 -0
  477. package/src/theme/v3/color/card.ts +116 -0
  478. package/src/theme/v3/color/color.ts +94 -0
  479. package/src/theme/v3/color/element.ts +19 -0
  480. package/src/theme/v3/color/index.ts +7 -0
  481. package/src/theme/v3/color/parseColor.test.ts +79 -0
  482. package/src/theme/v3/color/parseColor.ts +167 -0
  483. package/src/theme/v3/color/renderColor.test.ts +19 -0
  484. package/src/theme/v3/color/renderColor.ts +33 -0
  485. package/src/theme/v3/color/token.ts +17 -0
  486. package/src/theme/v3/color/tokens.ts +5 -0
  487. package/src/theme/v3/defaults.ts +205 -0
  488. package/src/theme/v3/index.ts +6 -0
  489. package/src/theme/v3/merge.ts +22 -0
  490. package/src/theme/v3/resolveTokens.ts +199 -0
  491. package/src/theme/v3/tokens.ts +16 -0
  492. package/src/theme/v3/types.ts +48 -0
  493. package/src/theme/versioning/getTheme_v2.ts +2 -1
  494. package/src/theme/versioning/index.ts +0 -4
  495. package/src/theme/versioning/is_v0.ts +2 -1
  496. package/src/theme/versioning/is_v2.ts +2 -1
  497. package/src/theme/versioning/themeColor_v0_v2.ts +33 -5
  498. package/src/theme/versioning/themeColor_v2_v2_9.ts +49 -0
  499. package/src/theme/versioning/themeColor_v3_v2.ts +206 -0
  500. package/src/theme/versioning/v0_v2.ts +6 -1
  501. package/src/theme/versioning/v2_v0.ts +6 -6
  502. package/src/theme/versioning/v3_v2.ts +108 -0
  503. package/dist/css.esm.js +0 -3794
  504. package/dist/css.esm.js.map +0 -1
  505. package/dist/index.esm.js +0 -5431
  506. package/dist/index.esm.js.map +0 -1
  507. package/dist/theme.esm.js +0 -4201
  508. package/dist/theme.esm.js.map +0 -1
  509. package/src/core/__workshop__/constants.ts +0 -305
  510. package/src/core/__workshop__/fontsPlugin.tsx +0 -76
  511. package/src/core/_compat/styles/border/borderStyle.ts +0 -61
  512. package/src/core/_compat/styles/border/index.ts +0 -2
  513. package/src/core/_compat/styles/border/types.ts +0 -11
  514. package/src/core/_compat/styles/box/boxStyle.ts +0 -74
  515. package/src/core/_compat/styles/box/index.ts +0 -2
  516. package/src/core/_compat/styles/box/types.ts +0 -11
  517. package/src/core/_compat/styles/card/_cardColorStyle.ts +0 -101
  518. package/src/core/_compat/styles/card/index.ts +0 -1
  519. package/src/core/_compat/styles/flex/flexItemStyle.ts +0 -26
  520. package/src/core/_compat/styles/flex/flexStyle.ts +0 -69
  521. package/src/core/_compat/styles/flex/index.ts +0 -3
  522. package/src/core/_compat/styles/flex/types.ts +0 -24
  523. package/src/core/_compat/styles/focusRing/index.ts +0 -25
  524. package/src/core/_compat/styles/font/codeFontStyle.ts +0 -12
  525. package/src/core/_compat/styles/font/headingFontStyle.ts +0 -12
  526. package/src/core/_compat/styles/font/index.ts +0 -6
  527. package/src/core/_compat/styles/font/labelFontStyle.ts +0 -12
  528. package/src/core/_compat/styles/font/responsiveFont.ts +0 -101
  529. package/src/core/_compat/styles/font/textAlignStyle.ts +0 -18
  530. package/src/core/_compat/styles/font/textFontStyle.ts +0 -12
  531. package/src/core/_compat/styles/font/types.ts +0 -34
  532. package/src/core/_compat/styles/grid/gridItemStyle.ts +0 -81
  533. package/src/core/_compat/styles/grid/gridStyle.ts +0 -97
  534. package/src/core/_compat/styles/grid/index.ts +0 -3
  535. package/src/core/_compat/styles/grid/types.ts +0 -37
  536. package/src/core/_compat/styles/helpers.ts +0 -81
  537. package/src/core/_compat/styles/input/index.ts +0 -2
  538. package/src/core/_compat/styles/input/responsiveInputPaddingStyle.ts +0 -77
  539. package/src/core/_compat/styles/input/textInputStyle.ts +0 -263
  540. package/src/core/_compat/styles/internal.ts +0 -12
  541. package/src/core/_compat/styles/margin/index.ts +0 -2
  542. package/src/core/_compat/styles/margin/marginStyle.ts +0 -20
  543. package/src/core/_compat/styles/margin/marginsStyle.test.ts +0 -32
  544. package/src/core/_compat/styles/margin/types.ts +0 -9
  545. package/src/core/_compat/styles/padding/index.ts +0 -2
  546. package/src/core/_compat/styles/padding/paddingStyle.test.ts +0 -32
  547. package/src/core/_compat/styles/padding/paddingStyle.ts +0 -20
  548. package/src/core/_compat/styles/padding/types.ts +0 -12
  549. package/src/core/_compat/styles/radius/index.ts +0 -2
  550. package/src/core/_compat/styles/radius/radiusStyle.ts +0 -22
  551. package/src/core/_compat/styles/radius/types.ts +0 -8
  552. package/src/core/_compat/styles/shadow/index.ts +0 -2
  553. package/src/core/_compat/styles/shadow/shadowStyle.ts +0 -29
  554. package/src/core/_compat/styles/shadow/types.ts +0 -6
  555. package/src/core/_compat/styles/types.ts +0 -8
  556. package/src/core/components/autocomplete/__workshop__/.eslintrc +0 -5
  557. package/src/core/components/breadcrumbs/__workshop__/.eslintrc +0 -5
  558. package/src/core/components/dialog/__workshop__/.eslintrc +0 -5
  559. package/src/core/components/hotkeys/__workshop__/.eslintrc +0 -5
  560. package/src/core/components/menu/__workshop__/.eslintrc +0 -5
  561. package/src/core/components/skeleton/__workshop__/.eslintrc +0 -5
  562. package/src/core/components/tab/__workshop__/.eslintrc +0 -5
  563. package/src/core/components/toast/__workshop__/.eslintrc +0 -5
  564. package/src/core/components/tree/__workshop__/.eslintrc +0 -5
  565. package/src/core/hooks/useElementRect/__workshop__/.eslintrc +0 -5
  566. package/src/core/hooks/useMediaIndex/__workshop__/.eslintrc +0 -5
  567. package/src/core/lib/styled/elements.ts +0 -135
  568. package/src/core/lib/styled/index.ts +0 -2
  569. package/src/core/lib/styled/members.ts +0 -15
  570. package/src/core/lib/styled/styled.ts +0 -79
  571. package/src/core/primitives/avatar/__workshop__/.eslintrc +0 -5
  572. package/src/core/primitives/avatar/styles.ts +0 -166
  573. package/src/core/primitives/badge/__workshop__/.eslintrc +0 -5
  574. package/src/core/primitives/badge/styles.ts +0 -19
  575. package/src/core/primitives/box/__workshop__/.eslintrc +0 -5
  576. package/src/core/primitives/button/__workshop__/.eslintrc +0 -5
  577. package/src/core/primitives/button/styles.ts +0 -116
  578. package/src/core/primitives/card/RootCardContext.ts +0 -3
  579. package/src/core/primitives/card/__workshop__/.eslintrc +0 -5
  580. package/src/core/primitives/checkbox/__workshop__/.eslintrc +0 -5
  581. package/src/core/primitives/code/__workshop__/.eslintrc +0 -5
  582. package/src/core/primitives/code/styles.ts +0 -77
  583. package/src/core/primitives/container/__workshop__/.eslintrc +0 -5
  584. package/src/core/primitives/container/styles.ts +0 -22
  585. package/src/core/primitives/flex/__workshop__/.eslintrc +0 -5
  586. package/src/core/primitives/grid/__workshop__/.eslintrc +0 -5
  587. package/src/core/primitives/heading/__workshop__/.eslintrc +0 -5
  588. package/src/core/primitives/heading/styles.ts +0 -63
  589. package/src/core/primitives/heading/types.ts +0 -7
  590. package/src/core/primitives/inline/__workshop__/.eslintrc +0 -5
  591. package/src/core/primitives/inline/styles.ts +0 -31
  592. package/src/core/primitives/kbd/__workshop__/.eslintrc +0 -5
  593. package/src/core/primitives/label/__workshop__/.eslintrc +0 -5
  594. package/src/core/primitives/label/styles.ts +0 -44
  595. package/src/core/primitives/popover/__workshop__/.eslintrc +0 -5
  596. package/src/core/primitives/radio/__workshop__/.eslintrc +0 -5
  597. package/src/core/primitives/radio/styles.ts +0 -116
  598. package/src/core/primitives/select/__workshop__/.eslintrc +0 -5
  599. package/src/core/primitives/select/styles.ts +0 -166
  600. package/src/core/primitives/spinner/__workshop__/.eslintrc +0 -5
  601. package/src/core/primitives/stack/__workshop__/.eslintrc +0 -5
  602. package/src/core/primitives/stack/styles.ts +0 -31
  603. package/src/core/primitives/switch/__workshop__/.eslintrc +0 -5
  604. package/src/core/primitives/switch/styles.ts +0 -172
  605. package/src/core/primitives/text/__workshop__/.eslintrc +0 -5
  606. package/src/core/primitives/text/styles.ts +0 -73
  607. package/src/core/primitives/textArea/__workshop__/.eslintrc +0 -5
  608. package/src/core/primitives/textInput/__workshop__/.eslintrc +0 -5
  609. package/src/core/primitives/textInput/__workshop__/multipleTones.tsx +0 -20
  610. package/src/core/primitives/tooltip/__workshop__/.eslintrc +0 -5
  611. package/src/core/theme/__workshop__/.eslintrc +0 -5
  612. package/src/core/theme/__workshop__/build/Root.tsx +0 -367
  613. package/src/core/theme/__workshop__/build/helpers.ts +0 -46
  614. package/src/core/theme/__workshop__/build/story.tsx +0 -457
  615. package/src/core/theme/__workshop__/canvas.tsx +0 -350
  616. package/src/core/theme/__workshop__/color.tsx +0 -62
  617. package/src/core/theme/__workshop__/debug/story.tsx +0 -401
  618. package/src/core/theme/__workshop__/index.ts +0 -39
  619. package/src/core/theme/__workshop__/layer.tsx +0 -78
  620. package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
  621. package/src/core/utils/boundaryElement/__workshop__/.eslintrc +0 -5
  622. package/src/core/utils/elementQuery/__workshop__/.eslintrc +0 -5
  623. package/src/core/utils/layer/__workshop__/.eslintrc +0 -5
  624. package/src/core/utils/portal/__workshop__/.eslintrc +0 -5
  625. package/src/core/utils/virtualList/__workshop__/.eslintrc +0 -5
  626. package/src/css/primitives/selectable/rules.ts +0 -27
  627. package/src/css/primitives/selectable/selectable.ts +0 -9
  628. package/src/css/primitives/selectable/types.ts +0 -6
  629. package/src/theme/system/color/badge.ts +0 -20
  630. package/src/theme/system/theme.ts +0 -138
  631. package/src/theme/system/v0/color/_system.ts +0 -13
  632. package/theme.js +0 -2
  633. package/src/core/{theme → _compat/theme}/index.ts +1 -1
  634. package/src/core/{theme → _compat/theme}/types.ts +0 -0
  635. package/src/core/components/autocomplete/{__fixtures__ → __mocks__}/countries.ts +0 -0
  636. package/src/core/primitives/kbd/{index.tsx → index.ts} +0 -0
  637. package/src/css/primitives/{selectable → _selectable}/index.ts +0 -0
  638. package/src/theme/{system/v0 → v0}/avatar.ts +0 -0
  639. package/src/theme/{system/v0 → v0}/color/base.ts +0 -0
  640. package/src/theme/{system/v0 → v0}/color/button.ts +0 -0
  641. package/src/theme/{system/v0 → v0}/color/card.ts +0 -0
  642. package/src/theme/{system/v0 → v0}/color/index.ts +1 -1
  643. package/src/theme/{system/v0 → v0}/color/muted.ts +0 -0
  644. package/src/theme/{system/v0 → v0}/color/selectable.ts +0 -0
  645. package/src/theme/{system/v0 → v0}/color/solid.ts +0 -0
  646. package/src/theme/{system → v0}/focusRing.ts +0 -0
  647. package/src/theme/{system/v0 → v0}/input.ts +0 -0
  648. package/src/theme/{system → v0}/layer.ts +0 -0
  649. package/src/theme/{system → v0}/shadow.ts +0 -0
  650. package/src/theme/{system → v0}/styles.ts +0 -0
  651. package/src/theme/{system → v2}/color/_system.ts +1 -1
  652. /package/src/theme/{system → v2}/color/avatar.ts +0 -0
  653. /package/src/theme/{system → v2}/color/button.ts +0 -0
  654. /package/src/theme/{system → v2}/color/index.ts +0 -0
  655. /package/src/theme/{system → v2}/color/input.ts +0 -0
  656. /package/src/theme/{system → v2}/color/kbd.ts +0 -0
  657. /package/src/theme/{system → v2}/color/selectable.ts +0 -0
  658. /package/src/theme/{system → v2}/color/shadow.ts +0 -0
  659. /package/src/theme/{system → v2}/color/state.ts +0 -0
  660. /package/src/theme/{system → v2}/color/syntax.ts +0 -0
@@ -1,36 +1,40 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
1
  import {
3
2
  arrow,
4
3
  autoUpdate,
5
4
  flip,
5
+ type Middleware,
6
6
  offset,
7
+ type RootBoundary,
7
8
  shift,
8
9
  useFloating,
9
- type Middleware,
10
- type RootBoundary,
11
10
  } from '@floating-ui/react-dom'
12
- import {composeClassNames, RadiusStyleProps, tooltip} from '@sanity/ui/css'
13
- import type {ThemeColorSchemeKey} from '@sanity/ui/theme'
11
+ import {composeClassNames, RadiusStyleProps, ShadowStyleProps, tooltip} from '@sanity/ui/css'
12
+ import type {ThemeColorCardToneKey, ThemeColorSchemeKey} from '@sanity/ui/theme'
14
13
  import {AnimatePresence} from 'framer-motion'
15
14
  import {
16
15
  cloneElement,
16
+ ForwardedRef,
17
17
  forwardRef,
18
+ ReactElement,
19
+ ReactNode,
18
20
  useCallback,
19
21
  useEffect,
20
- useMemo,
21
- useRef,
22
- useState,
23
22
  useId,
24
23
  useImperativeHandle,
25
24
  useLayoutEffect,
25
+ useMemo,
26
+ useRef,
27
+ useState,
26
28
  } from 'react'
27
29
  import {useEffectEvent} from 'use-effect-event'
30
+
31
+ import {useTheme_v2} from '../../_compat'
28
32
  import {useArrayProp, usePrefersReducedMotion} from '../../hooks'
29
33
  import {useDelayedState} from '../../hooks/useDelayedState'
30
34
  import {origin} from '../../middleware/origin'
31
- import {useTheme_v2} from '../../theme'
32
- import type {Placement} from '../../types'
35
+ import type {Placement, Props} from '../../types'
33
36
  import {Layer, type LayerProps, Portal, useBoundaryElement, usePortal} from '../../utils'
37
+ import {getElementRef} from '../../utils/getElementRef'
34
38
  import type {Delay} from '../types'
35
39
  import {
36
40
  DEFAULT_FALLBACK_PLACEMENTS,
@@ -43,22 +47,20 @@ import {useTooltipDelayGroup} from './tooltipDelayGroup'
43
47
  /**
44
48
  * @public
45
49
  */
46
- export interface TooltipProps extends Omit<LayerProps, 'as'>, RadiusStyleProps {
50
+ export interface TooltipProps extends Omit<LayerProps, 'as'>, RadiusStyleProps, ShadowStyleProps {
47
51
  /** @deprecated Use `fallbackPlacements` instead. */
48
52
  allowedAutoPlacements?: Placement[]
53
+ /**
54
+ * Whether the tooltip should animate in and out.
55
+ *
56
+ * @beta
57
+ * @defaultValue false
58
+ */
59
+ animate?: boolean
49
60
  arrow?: boolean
50
61
  boundaryElement?: HTMLElement | null
51
- children?: React.ReactElement
52
- content?: React.ReactNode
53
- disabled?: boolean
54
- fallbackPlacements?: Placement[]
55
- padding?: number | number[]
56
- placement?: Placement
57
- /** Whether or not to render the tooltip in a portal element. */
58
- portal?: boolean | string
59
- // radius?: number | number[]
60
- scheme?: ThemeColorSchemeKey
61
- shadow?: number | number[]
62
+ children?: ReactElement<Props>
63
+ content?: ReactNode
62
64
  /**
63
65
  * Adds a delay to open or close the tooltip.
64
66
  *
@@ -70,13 +72,13 @@ export interface TooltipProps extends Omit<LayerProps, 'as'>, RadiusStyleProps {
70
72
  * @defaultValue 0
71
73
  */
72
74
  delay?: Delay
73
- /**
74
- * Whether the tooltip should animate in and out.
75
- *
76
- * @beta
77
- * @defaultValue false
78
- */
79
- animate?: boolean
75
+ disabled?: boolean
76
+ fallbackPlacements?: Placement[]
77
+ placement?: Placement
78
+ /** Whether or not to render the tooltip in a portal element. */
79
+ portal?: boolean | string
80
+ scheme?: ThemeColorSchemeKey
81
+ tone?: ThemeColorCardToneKey
80
82
  }
81
83
 
82
84
  /**
@@ -85,9 +87,8 @@ export interface TooltipProps extends Omit<LayerProps, 'as'>, RadiusStyleProps {
85
87
  * @public
86
88
  */
87
89
  export const Tooltip = forwardRef(function Tooltip(
88
- props: TooltipProps &
89
- Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'width' | 'wrap'>,
90
- forwardedRef: React.ForwardedRef<HTMLDivElement>,
90
+ props: Props<TooltipProps, 'div'>,
91
+ forwardedRef: ForwardedRef<HTMLDivElement>,
91
92
  ) {
92
93
  const boundaryElementContext = useBoundaryElement()
93
94
  const {layer} = useTheme_v2()
@@ -98,17 +99,18 @@ export const Tooltip = forwardRef(function Tooltip(
98
99
  children: childProp,
99
100
  className,
100
101
  content,
102
+ delay,
101
103
  disabled,
102
104
  fallbackPlacements: fallbackPlacementsProp = props.fallbackPlacements ??
103
105
  DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? 'bottom'],
104
106
  padding = 2,
105
107
  placement: placementProp = 'bottom',
106
108
  portal: portalProp,
107
- radius = 2,
109
+ radius = 3,
108
110
  scheme,
109
111
  shadow = 2,
110
112
  zOffset = layer.tooltip.zOffset,
111
- delay,
113
+ tone,
112
114
  ...restProps
113
115
  } = props
114
116
  const prefersReducedMotion = usePrefersReducedMotion()
@@ -169,6 +171,7 @@ export const Tooltip = forwardRef(function Tooltip(
169
171
  middleware,
170
172
  placement: placementProp,
171
173
  whileElementsMounted: autoUpdate,
174
+ elements: {reference: referenceElement},
172
175
  })
173
176
 
174
177
  const arrowX = middlewareData.arrow?.x
@@ -180,6 +183,7 @@ export const Tooltip = forwardRef(function Tooltip(
180
183
  const tooltipId = useId()
181
184
  const [isOpen, setIsOpen] = useDelayedState(false)
182
185
  const delayGroupContext = useTooltipDelayGroup()
186
+ const {setIsGroupActive, setOpenTooltipId} = delayGroupContext || {}
183
187
  const showTooltip = isOpen || delayGroupContext?.openTooltipId === tooltipId
184
188
 
185
189
  const isInsideGroup = delayGroupContext !== null
@@ -196,15 +200,15 @@ export const Tooltip = forwardRef(function Tooltip(
196
200
  if (open) {
197
201
  const groupedOpenDelay = immediate ? 0 : openDelay
198
202
 
199
- delayGroupContext.setIsGroupActive(open, groupedOpenDelay)
200
- delayGroupContext.setOpenTooltipId(tooltipId, groupedOpenDelay)
203
+ setIsGroupActive?.(open, groupedOpenDelay)
204
+ setOpenTooltipId?.(tooltipId, groupedOpenDelay)
201
205
  } else {
202
206
  const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.
203
207
  const groupDeactivateDelay =
204
208
  closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay
205
209
 
206
- delayGroupContext.setIsGroupActive(open, groupDeactivateDelay)
207
- delayGroupContext.setOpenTooltipId(null, immediate ? 0 : closeDelay)
210
+ setIsGroupActive?.(open, groupDeactivateDelay)
211
+ setOpenTooltipId?.(null, immediate ? 0 : closeDelay)
208
212
  }
209
213
  } else {
210
214
  const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay
@@ -213,7 +217,15 @@ export const Tooltip = forwardRef(function Tooltip(
213
217
  setIsOpen(open, standaloneDelay)
214
218
  }
215
219
  },
216
- [isInsideGroup, delayGroupContext, openDelay, tooltipId, closeDelay, setIsOpen],
220
+ [
221
+ isInsideGroup,
222
+ openDelay,
223
+ setIsGroupActive,
224
+ setOpenTooltipId,
225
+ tooltipId,
226
+ closeDelay,
227
+ setIsOpen,
228
+ ],
217
229
  )
218
230
 
219
231
  const handleBlur = useCallback(
@@ -260,7 +272,7 @@ export const Tooltip = forwardRef(function Tooltip(
260
272
  )
261
273
 
262
274
  // Handle closing the tooltip when the mouse leaves the referenceElement
263
- useCloseOnMouseLeave({handleIsOpenChange, referenceElement, showTooltip})
275
+ useCloseOnMouseLeave({handleIsOpenChange, referenceElement, showTooltip, isInsideGroup})
264
276
 
265
277
  // Close when `disabled` changes to `true`
266
278
  useEffect(() => {
@@ -272,9 +284,6 @@ export const Tooltip = forwardRef(function Tooltip(
272
284
  if (!content && showTooltip) handleIsOpenChange(false)
273
285
  }, [content, handleIsOpenChange, showTooltip])
274
286
 
275
- // Update reference
276
- useEffect(() => refs.setReference(referenceElement), [referenceElement, refs])
277
-
278
287
  useEffect(() => {
279
288
  // If the user clicks on escape key, close the tooltip.
280
289
  if (!showTooltip) return
@@ -321,11 +330,6 @@ export const Tooltip = forwardRef(function Tooltip(
321
330
  [refs],
322
331
  )
323
332
 
324
- const childRef = useRef<HTMLElement | null>(null)
325
-
326
- // Merge refs so that any ref we are overriding is called as well
327
- useImperativeHandle((childProp as any)?.ref, () => childRef.current)
328
-
329
333
  const child = useMemo(() => {
330
334
  if (!childProp) return null
331
335
 
@@ -336,7 +340,7 @@ export const Tooltip = forwardRef(function Tooltip(
336
340
  onMouseLeave: handleMouseLeave,
337
341
  onClick: handleClick,
338
342
  onContextMenu: handleContextMenu,
339
- ref: childRef,
343
+ ref: setReferenceElement,
340
344
  })
341
345
  }, [
342
346
  childProp,
@@ -350,13 +354,9 @@ export const Tooltip = forwardRef(function Tooltip(
350
354
 
351
355
  // If there's a child then we need to set the reference element to the cloned child ref
352
356
  // and if child changes we make sure to update or remove the reference element.
353
- useEffect(() => {
354
- if (!child) return undefined
355
-
356
- setReferenceElement(childRef.current)
357
-
358
- return () => setReferenceElement(null)
359
- }, [child])
357
+ useImperativeHandle(childProp ? getElementRef(childProp) : null, () => referenceElement, [
358
+ referenceElement,
359
+ ])
360
360
 
361
361
  if (!child) return <></>
362
362
 
@@ -365,7 +365,7 @@ export const Tooltip = forwardRef(function Tooltip(
365
365
  const node = (
366
366
  <Layer
367
367
  data-ui="Tooltip"
368
- {...restProps}
368
+ // {...restProps}
369
369
  className={composeClassNames(className, tooltip())}
370
370
  ref={setFloating}
371
371
  style={{
@@ -389,6 +389,7 @@ export const Tooltip = forwardRef(function Tooltip(
389
389
  ref={setFloating}
390
390
  scheme={scheme}
391
391
  shadow={shadow}
392
+ tone={tone}
392
393
  >
393
394
  {content}
394
395
  </TooltipCard>
@@ -420,19 +421,21 @@ Tooltip.displayName = 'ForwardRef(Tooltip)'
420
421
 
421
422
  /**
422
423
  * As `useEffectEvent` should never be passed to other components or hooks, this custom hook groups together the `useEffectEvent` and the `useEffect` hook using it.
423
- * @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
424
+ * @see https://19.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events:~:text=Never%20pass%20them%20to%20other%20components%20or%20Hooks
424
425
  */
425
426
  function useCloseOnMouseLeave({
426
427
  handleIsOpenChange,
427
428
  referenceElement,
428
429
  showTooltip,
430
+ isInsideGroup,
429
431
  }: {
430
432
  handleIsOpenChange: (open: boolean, immediate?: boolean) => void
431
433
  referenceElement: HTMLElement | null
432
434
  showTooltip: boolean
435
+ isInsideGroup: boolean
433
436
  }) {
434
437
  // Since we don't want the `mouseevent` events to be attached and removed if the `referenceElement` is changed
435
- // we use a "effect event" (https://19.react.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)
438
+ // we use a "effect event" (https://19.dev/learn/separating-events-from-effects#reading-latest-props-and-state-with-effect-events)
436
439
  // in order to always see the latest `referenceElement` value inside the event handler itself.
437
440
  const onMouseMove = useEffectEvent((target: EventTarget | null, teardown: () => void) => {
438
441
  if (!referenceElement) return
@@ -451,7 +454,7 @@ function useCloseOnMouseLeave({
451
454
  // necessary, because the tooltip might not always close as it should (e.g. when clicking
452
455
  // the reference element triggers a CPU-heavy operation.)
453
456
  useEffect(() => {
454
- if (!showTooltip) return
457
+ if (!showTooltip || isInsideGroup) return
455
458
 
456
459
  const handleMouseMove = (event: MouseEvent) => {
457
460
  onMouseMove(event.target, () => window.removeEventListener('mousemove', handleMouseMove))
@@ -460,5 +463,5 @@ function useCloseOnMouseLeave({
460
463
  window.addEventListener('mousemove', handleMouseMove)
461
464
 
462
465
  return () => window.removeEventListener('mousemove', handleMouseMove)
463
- }, [onMouseMove, showTooltip])
466
+ }, [isInsideGroup, showTooltip])
464
467
  }
@@ -1,42 +1,41 @@
1
- import {RadiusStyleProps, tooltipCard} from '@sanity/ui/css'
2
- import {ThemeColorSchemeKey} from '@sanity/ui/theme'
1
+ import {tooltipCard} from '@sanity/ui/css'
3
2
  import {motion} from 'framer-motion'
4
- import React, {CSSProperties, forwardRef, memo, useMemo} from 'react'
5
- import {
6
- // POPOVER_MOTION_CONTENT_OPACITY_PROPERTY,
7
- POPOVER_MOTION_PROPS,
8
- } from '../../constants'
9
- import {Placement} from '../../types'
3
+ import {CSSProperties, ForwardedRef, forwardRef, memo, useMemo} from 'react'
4
+
5
+ import {POPOVER_MOTION_PROPS} from '../../constants'
6
+ import {Placement, Props} from '../../types'
10
7
  import {Arrow} from '../../utils'
11
- import {Card} from '../card'
8
+ import {Card, CardProps} from '../card'
12
9
  import {
13
10
  DEFAULT_TOOLTIP_ARROW_HEIGHT,
14
11
  DEFAULT_TOOLTIP_ARROW_RADIUS,
15
12
  DEFAULT_TOOLTIP_ARROW_WIDTH,
16
13
  } from './constants'
17
14
 
18
- const MotionCard = motion(Card) as typeof Card
15
+ const MotionCard = motion.create(Card)
16
+
17
+ /* @internal */
18
+ export interface TooltipCardProps extends CardProps {
19
+ animate?: boolean
20
+ arrow: boolean
21
+ arrowRef: ForwardedRef<HTMLDivElement>
22
+ arrowX?: number
23
+ arrowY?: number
24
+ originX?: number
25
+ originY?: number
26
+ placement?: Placement
27
+ }
19
28
 
20
29
  /**
21
30
  * @internal
22
31
  */
23
32
  export const TooltipCard = memo(
24
33
  forwardRef(function TooltipCard(
25
- props: {
26
- animate?: boolean
27
- arrow: boolean
28
- arrowRef: React.Ref<HTMLDivElement>
29
- arrowX?: number
30
- arrowY?: number
31
- originX?: number
32
- originY?: number
33
- padding?: number | number[]
34
- placement?: Placement
35
- scheme?: ThemeColorSchemeKey
36
- shadow?: number | number[]
37
- } & RadiusStyleProps &
38
- Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'rows' | 'width' | 'wrap'>,
39
- ref: React.ForwardedRef<HTMLDivElement>,
34
+ props: Omit<
35
+ Props<TooltipCardProps, 'div'>,
36
+ 'onDrag' | 'onDragEnd' | 'onDragStart' | 'onAnimationStart'
37
+ >,
38
+ ref: ForwardedRef<HTMLDivElement>,
40
39
  ) {
41
40
  const {
42
41
  animate,
@@ -53,6 +52,7 @@ export const TooltipCard = memo(
53
52
  scheme,
54
53
  shadow,
55
54
  style,
55
+ tone,
56
56
  ...restProps
57
57
  } = props
58
58
 
@@ -89,7 +89,12 @@ export const TooltipCard = memo(
89
89
  scheme={scheme}
90
90
  shadow={shadow}
91
91
  style={rootStyle}
92
- {...(animate ? POPOVER_MOTION_PROPS : {})}
92
+ variants={POPOVER_MOTION_PROPS.card}
93
+ transition={POPOVER_MOTION_PROPS.transition}
94
+ initial={animate ? ['hidden', 'initial'] : undefined}
95
+ animate={animate ? ['visible', 'scaleIn'] : undefined}
96
+ exit={animate ? ['hidden', 'scaleOut'] : undefined}
97
+ tone={tone}
93
98
  >
94
99
  {children}
95
100
 
@@ -1,4 +1,4 @@
1
- export * from './useTooltipDelayGroup'
2
1
  export * from './tooltipDelayGroupContext'
3
2
  export * from './tooltipDelayGroupProvider'
4
3
  export * from './types'
4
+ export * from './useTooltipDelayGroup'
@@ -1,4 +1,5 @@
1
- import {useMemo} from 'react'
1
+ import {ReactElement, ReactNode, useMemo} from 'react'
2
+
2
3
  import {useDelayedState} from '../../../hooks/useDelayedState'
3
4
  import {Delay} from '../../types'
4
5
  import {TooltipDelayGroupContext} from './tooltipDelayGroupContext'
@@ -8,7 +9,7 @@ import {TooltipDelayGroupContextValue} from './types'
8
9
  * @public
9
10
  * */
10
11
  export interface TooltipDelayGroupProviderProps {
11
- children?: React.ReactNode
12
+ children?: ReactNode
12
13
  /**
13
14
  * Handles the delays to open or close a tooltip inside a group
14
15
  *
@@ -26,9 +27,7 @@ export interface TooltipDelayGroupProviderProps {
26
27
  * Provides context for a group of tooltip elements that should share a delay
27
28
  * which temporarily becomes 1 ms after the first floating element of the group opens.
28
29
  */
29
- export function TooltipDelayGroupProvider(
30
- props: TooltipDelayGroupProviderProps,
31
- ): React.ReactElement {
30
+ export function TooltipDelayGroupProvider(props: TooltipDelayGroupProviderProps): ReactElement {
32
31
  const {children, delay} = props
33
32
  const [isGroupActive, setIsGroupActive] = useDelayedState(false)
34
33
  const [openTooltipId, setOpenTooltipId] = useDelayedState<string | null>(null)
@@ -38,7 +37,6 @@ export function TooltipDelayGroupProvider(
38
37
 
39
38
  const value: TooltipDelayGroupContextValue = useMemo(
40
39
  () => ({
41
- isGroupActive: isGroupActive,
42
40
  setIsGroupActive: setIsGroupActive,
43
41
  openTooltipId: openTooltipId,
44
42
  setOpenTooltipId: setOpenTooltipId,
@@ -2,7 +2,6 @@
2
2
  * @beta
3
3
  */
4
4
  export interface TooltipDelayGroupContextValue {
5
- isGroupActive: boolean
6
5
  setIsGroupActive: (nextState: React.SetStateAction<boolean>, delay?: number | undefined) => void
7
6
  setOpenTooltipId: (nextId: string | null, delay?: number | undefined) => void
8
7
  openDelay: number
@@ -1,4 +1,5 @@
1
1
  import {useContext} from 'react'
2
+
2
3
  import {TooltipDelayGroupContext} from './tooltipDelayGroupContext'
3
4
  import {TooltipDelayGroupContextValue} from './types'
4
5
 
@@ -1,15 +1,15 @@
1
1
  import {
2
+ type FlexAlign,
3
+ type FlexDirection,
4
+ type FlexJustify,
5
+ type FlexValue,
6
+ type FlexWrap,
2
7
  GridItemColumn,
3
8
  GridItemColumnEnd,
4
9
  GridItemColumnStart,
5
10
  GridItemRow,
6
11
  GridItemRowEnd,
7
12
  GridItemRowStart,
8
- type FlexAlign,
9
- type FlexDirection,
10
- type FlexJustify,
11
- type FlexValue,
12
- type FlexWrap,
13
13
  } from '@sanity/ui/css'
14
14
 
15
15
  import {
@@ -4,19 +4,16 @@ export {
4
4
  * @deprecated use `Display` from `@sanity/ui/css` instead.
5
5
  */
6
6
  type Display as BoxDisplay,
7
-
8
7
  /**
9
8
  * @public
10
9
  * @deprecated use `BoxHeight` from `@sanity/ui/css` instead.
11
10
  */
12
11
  type BoxHeight,
13
-
14
12
  /**
15
13
  * @public
16
14
  * @deprecated use `Overflow` from `@sanity/ui/css` instead.
17
15
  */
18
16
  type BoxOverflow,
19
-
20
17
  /**
21
18
  * @public
22
19
  * @deprecated use `BoxSizing` from `@sanity/ui/css` instead.
@@ -2,6 +2,7 @@ import {ThemeColorButtonModeKey, ThemeColorStateToneKey} from '@sanity/ui/theme'
2
2
 
3
3
  /**
4
4
  * @public
5
+ * @deprecated Use `ThemeColorButtonModeKey` instead
5
6
  */
6
7
  export type ButtonMode = ThemeColorButtonModeKey
7
8
 
@@ -12,6 +13,7 @@ export type ButtonTextAlign = 'left' | 'right' | 'center'
12
13
 
13
14
  /**
14
15
  * @public
16
+ * @deprecated Use `ThemeColorStateToneKey` instead
15
17
  */
16
18
  export type ButtonTone = ThemeColorStateToneKey
17
19
 
@@ -4,25 +4,21 @@ export {
4
4
  * @deprecated
5
5
  */
6
6
  type FlexAlign,
7
-
8
7
  /**
9
8
  * @public
10
9
  * @deprecated
11
10
  */
12
11
  type FlexDirection,
13
-
14
12
  /**
15
13
  * @public
16
14
  * @deprecated
17
15
  */
18
16
  type FlexJustify,
19
-
20
17
  /**
21
18
  * @public
22
19
  * @deprecated
23
20
  */
24
21
  type FlexValue,
25
-
26
22
  /**
27
23
  * @public
28
24
  * @deprecated
@@ -1,19 +1,17 @@
1
1
  export {
2
- /**
3
- * @public
4
- * @deprecated Use `GridAutoRows` from `@sanity/ui/css` instead.
5
- */
6
- type GridAutoRows,
7
-
8
2
  /**
9
3
  * @public
10
4
  * @deprecated Use `GridAutoCols` from `@sanity/ui/css` instead.
11
5
  */
12
6
  type GridAutoCols,
13
-
14
7
  /**
15
8
  * @public
16
9
  * @deprecated Use `GridAutoFlow` from `@sanity/ui/css` instead.
17
10
  */
18
11
  type GridAutoFlow,
12
+ /**
13
+ * @public
14
+ * @deprecated Use `GridAutoRows` from `@sanity/ui/css` instead.
15
+ */
16
+ type GridAutoRows,
19
17
  } from '@sanity/ui/css'
@@ -4,34 +4,29 @@ export {
4
4
  * @deprecated
5
5
  */
6
6
  type GridItemColumn,
7
-
8
7
  /**
9
8
  * @public
10
9
  * @deprecated
11
10
  */
12
- type GridItemColumnStart,
13
-
11
+ type GridItemColumnEnd,
14
12
  /**
15
13
  * @public
16
14
  * @deprecated
17
15
  */
18
- type GridItemColumnEnd,
19
-
16
+ type GridItemColumnStart,
20
17
  /**
21
18
  * @public
22
19
  * @deprecated
23
20
  */
24
21
  type GridItemRow,
25
-
26
22
  /**
27
23
  * @public
28
24
  * @deprecated
29
25
  */
30
- type GridItemRowStart,
31
-
26
+ type GridItemRowEnd,
32
27
  /**
33
28
  * @public
34
29
  * @deprecated
35
30
  */
36
- type GridItemRowEnd,
31
+ type GridItemRowStart,
37
32
  } from '@sanity/ui/css'
@@ -9,6 +9,7 @@ export * from './grid'
9
9
  export * from './gridItem'
10
10
  export * from './placement'
11
11
  export * from './popover'
12
+ export * from './props'
12
13
  export * from './radius'
13
14
  export * from './selectable'
14
15
  export * from './text'
@@ -0,0 +1,18 @@
1
+ import type {ComponentProps, ElementType} from 'react'
2
+
3
+ export interface PolymorphicProps {
4
+ as?: ElementType
5
+ }
6
+
7
+ /** @public */
8
+ export type ElementProps<E extends ElementType> = Omit<ComponentProps<E>, 'as' | 'ref'>
9
+
10
+ /** @public */
11
+ export type Assign<T, U> = Omit<T, keyof U> & U
12
+
13
+ /** @public */
14
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
15
+ export type Props<P extends {} = {}, E extends ElementType = ElementType> = Assign<
16
+ ElementProps<E> & PolymorphicProps,
17
+ P
18
+ >
@@ -2,5 +2,6 @@ import {ThemeColorStateToneKey} from '@sanity/ui/theme'
2
2
 
3
3
  /**
4
4
  * @public
5
+ * @deprecated Use `ThemeColorStateToneKey` instead
5
6
  */
6
7
  export type SelectableTone = ThemeColorStateToneKey