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

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 (770) hide show
  1. package/README.md +6 -6
  2. package/bin/{ui.js → sanity-ui.cjs} +1 -1
  3. package/dist/_chunks-cjs/_visual-editing.cjs +3152 -0
  4. package/dist/_chunks-cjs/_visual-editing.cjs.map +1 -0
  5. package/dist/_chunks-cjs/buildCommand.cjs +71 -0
  6. package/dist/_chunks-cjs/buildCommand.cjs.map +1 -0
  7. package/dist/_chunks-cjs/{refractor.js → refractor.cjs} +1 -1
  8. package/dist/_chunks-cjs/refractor.cjs.map +1 -0
  9. package/dist/_chunks-es/_visual-editing.js +3163 -0
  10. package/dist/_chunks-es/_visual-editing.js.map +1 -0
  11. package/dist/_chunks-es/{refractor.mjs → refractor.js} +1 -1
  12. package/dist/_chunks-es/refractor.js.map +1 -0
  13. package/dist/_visual-editing.cjs +30 -0
  14. package/dist/_visual-editing.cjs.map +1 -0
  15. package/dist/_visual-editing.d.cts +959 -0
  16. package/dist/_visual-editing.d.ts +545 -392
  17. package/dist/_visual-editing.js +29 -30
  18. package/dist/_visual-editing.js.map +1 -1
  19. package/dist/{cli.js → cli.cjs} +4 -4
  20. package/dist/cli.cjs.map +1 -0
  21. package/dist/css.cjs +4353 -0
  22. package/dist/css.cjs.map +1 -0
  23. package/dist/css.d.cts +10251 -0
  24. package/dist/css.d.ts +9714 -1598
  25. package/dist/css.js +3460 -3818
  26. package/dist/css.js.map +1 -1
  27. package/dist/index.cjs +1594 -0
  28. package/dist/index.cjs.map +1 -0
  29. package/dist/{index.d.mts → index.d.cts} +1435 -918
  30. package/dist/index.d.ts +1435 -918
  31. package/dist/index.js +622 -572
  32. package/dist/index.js.map +1 -1
  33. package/dist/{theme.mjs → theme.cjs} +2821 -2570
  34. package/dist/theme.cjs.map +1 -0
  35. package/dist/{theme.d.mts → theme.d.cts} +330 -310
  36. package/dist/theme.d.ts +330 -310
  37. package/dist/theme.js +2822 -2569
  38. package/dist/theme.js.map +1 -1
  39. package/dist/ui-system.css +24528 -0
  40. package/dist/ui-system.min.css +1 -0
  41. package/dist/ui-theme.css +1184 -0
  42. package/dist/ui-theme.min.css +1 -0
  43. package/dist/ui.css +25715 -0
  44. package/dist/ui.min.css +1 -0
  45. package/exports/_visual-editing.ts +0 -1
  46. package/package.json +78 -78
  47. package/src/cli/buildCommand.ts +77 -25
  48. package/src/cli/index.ts +2 -14
  49. package/src/core/StyleTags.tsx +8 -14
  50. package/src/core/_compat/helpers.ts +72 -0
  51. package/src/core/_compat/index.ts +1 -6
  52. package/src/core/_compat/styles/_responsive.ts +1 -1
  53. package/src/core/_compat/theme/theme.test.tsx +4 -5
  54. package/src/core/_compat/theme/themeColorProvider.tsx +4 -8
  55. package/src/core/_compat/theme/themeContext.ts +5 -5
  56. package/src/core/_compat/theme/themeProvider.tsx +19 -11
  57. package/src/core/_compat/theme/types.ts +2 -4
  58. package/src/core/_compat/theme/useRootTheme.ts +2 -4
  59. package/src/core/_compat/theme/useTheme.ts +3 -7
  60. package/src/core/_compat/types.ts +0 -73
  61. package/src/core/components/autocomplete/__workshop__/async.tsx +6 -6
  62. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +11 -18
  63. package/src/core/components/autocomplete/__workshop__/custom.tsx +21 -20
  64. package/src/core/components/autocomplete/__workshop__/example.tsx +17 -17
  65. package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +5 -5
  66. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +57 -59
  67. package/src/core/components/autocomplete/autocomplete.tsx +92 -126
  68. package/src/core/components/autocomplete/autocompleteOption.tsx +3 -1
  69. package/src/core/components/autocomplete/autocompleteReducer.ts +1 -1
  70. package/src/core/components/autocomplete/constants.ts +1 -1
  71. package/src/core/components/autocomplete/types.ts +4 -9
  72. package/src/core/components/breadcrumbs/__workshop__/example.tsx +2 -3
  73. package/src/core/components/breadcrumbs/breadcrumbs.tsx +34 -28
  74. package/src/core/components/dialog/__workshop__/activate.tsx +4 -4
  75. package/src/core/components/dialog/__workshop__/autoFocus.tsx +2 -2
  76. package/src/core/components/dialog/__workshop__/onScroll.tsx +16 -4
  77. package/src/core/components/dialog/__workshop__/position.tsx +4 -4
  78. package/src/core/components/dialog/__workshop__/props.tsx +7 -7
  79. package/src/core/components/dialog/__workshop__/wrapped.tsx +2 -2
  80. package/src/core/components/dialog/dialog.tsx +104 -300
  81. package/src/core/components/dialog/dialogCard.tsx +198 -0
  82. package/src/core/components/dialog/dialogContext.ts +1 -1
  83. package/src/core/components/dialog/dialogProvider.tsx +3 -3
  84. package/src/core/components/dialog/isTargetWithinScope.ts +14 -0
  85. package/src/core/components/dialog/useDialog.ts +1 -1
  86. package/src/core/components/hotkeys/hotkeys.tsx +42 -26
  87. package/src/core/components/menu/__workshop__/asComponent.tsx +6 -6
  88. package/src/core/components/menu/__workshop__/closableMenuButton.tsx +5 -4
  89. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +2 -2
  90. package/src/core/components/menu/__workshop__/customMenuItem.tsx +3 -3
  91. package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +1 -1
  92. package/src/core/components/menu/__workshop__/groups.tsx +2 -2
  93. package/src/core/components/menu/__workshop__/menuButton.tsx +4 -4
  94. package/src/core/components/menu/__workshop__/menuGroupRight.tsx +1 -1
  95. package/src/core/components/menu/__workshop__/nestedMenu.tsx +1 -1
  96. package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +13 -4
  97. package/src/core/components/menu/__workshop__/selectedItem.tsx +2 -2
  98. package/src/core/components/menu/__workshop__/tones.tsx +3 -3
  99. package/src/core/components/menu/__workshop__/withoutArrow.tsx +1 -1
  100. package/src/core/components/menu/menu.test.tsx +6 -7
  101. package/src/core/components/menu/menu.tsx +28 -34
  102. package/src/core/components/menu/menuButton.tsx +19 -23
  103. package/src/core/components/menu/menuContext.ts +1 -1
  104. package/src/core/components/menu/menuDivider.tsx +26 -14
  105. package/src/core/components/menu/menuGroup.tsx +39 -31
  106. package/src/core/components/menu/menuItem.tsx +59 -45
  107. package/src/core/components/menu/useMenu.ts +1 -1
  108. package/src/core/components/menu/useMenuController.ts +4 -4
  109. package/src/core/components/skeleton/__workshop__/delay.tsx +3 -3
  110. package/src/core/components/skeleton/__workshop__/skeleton.tsx +4 -4
  111. package/src/core/components/skeleton/codeSkeleton.tsx +53 -0
  112. package/src/core/components/skeleton/headingSkeleton.tsx +52 -0
  113. package/src/core/components/skeleton/index.ts +3 -0
  114. package/src/core/components/skeleton/labelSkeleton.tsx +51 -0
  115. package/src/core/components/skeleton/skeleton.tsx +40 -17
  116. package/src/core/components/skeleton/textSkeleton.tsx +32 -111
  117. package/src/core/components/tab/__workshop__/example.tsx +2 -2
  118. package/src/core/components/tab/tab.tsx +29 -25
  119. package/src/core/components/tab/tabList.tsx +51 -28
  120. package/src/core/components/tab/tabPanel.tsx +30 -21
  121. package/src/core/components/toast/__workshop__/hook.tsx +1 -1
  122. package/src/core/components/toast/__workshop__/toast.tsx +5 -5
  123. package/src/core/components/toast/toast.test.tsx +5 -5
  124. package/src/core/components/toast/toast.tsx +25 -22
  125. package/src/core/components/toast/toastContext.ts +1 -1
  126. package/src/core/components/toast/toastLayer.tsx +29 -11
  127. package/src/core/components/toast/toastProvider.tsx +3 -7
  128. package/src/core/components/toast/types.ts +3 -7
  129. package/src/core/components/toast/useToast.ts +2 -4
  130. package/src/core/components/tree/__workshop__/basic.perf.ts +1 -1
  131. package/src/core/components/tree/__workshop__/basic.tsx +1 -1
  132. package/src/core/components/tree/__workshop__/tabFromElement.tsx +1 -1
  133. package/src/core/components/tree/helpers.ts +1 -1
  134. package/src/core/components/tree/tree.tsx +198 -191
  135. package/src/core/components/tree/treeContext.ts +1 -1
  136. package/src/core/components/tree/treeGroup.tsx +26 -6
  137. package/src/core/components/tree/treeItem.tsx +45 -33
  138. package/src/core/components/tree/types.ts +2 -2
  139. package/src/core/components/tree/useTree.ts +1 -1
  140. package/src/core/constants.ts +6 -0
  141. package/src/core/hooks/useClickOutside.test.tsx +15 -16
  142. package/src/core/hooks/useClickOutside.ts +2 -6
  143. package/src/core/hooks/useClickOutsideEvent.test.tsx +4 -5
  144. package/src/core/hooks/useClickOutsideEvent.ts +3 -9
  145. package/src/core/hooks/useDelayed.test.ts +6 -7
  146. package/src/core/hooks/useDelayedState.ts +1 -1
  147. package/src/core/hooks/useElementRect/__workshop__/example.tsx +1 -1
  148. package/src/core/hooks/useElementSize.ts +1 -1
  149. package/src/core/hooks/useForwardedRef.ts +1 -1
  150. package/src/core/hooks/useMatchMedia.ts +13 -31
  151. package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +1 -1
  152. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +3 -18
  153. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +12 -12
  154. package/src/core/hooks/usePrefersDark.hydration.test.tsx +4 -4
  155. package/src/core/hooks/usePrefersDark.test.tsx +1 -0
  156. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +4 -4
  157. package/src/core/hooks/usePrefersReducedMotion.test.tsx +1 -0
  158. package/src/core/middleware/origin.ts +1 -1
  159. package/src/core/primitives/_selectable/selectable.tsx +34 -21
  160. package/src/core/primitives/avatar/__workshop__/asButton.tsx +2 -2
  161. package/src/core/primitives/avatar/__workshop__/stack.tsx +2 -2
  162. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +2 -2
  163. package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +1 -1
  164. package/src/core/primitives/avatar/avatar.tsx +33 -36
  165. package/src/core/primitives/avatar/avatarCounter.tsx +35 -27
  166. package/src/core/primitives/avatar/avatarStack.tsx +35 -28
  167. package/src/core/primitives/avatar/types.ts +3 -3
  168. package/src/core/primitives/badge/__workshop__/props.tsx +6 -17
  169. package/src/core/primitives/badge/__workshop__/tones.tsx +1 -6
  170. package/src/core/primitives/badge/badge.test.tsx +2 -3
  171. package/src/core/primitives/badge/badge.tsx +34 -33
  172. package/src/core/primitives/badge/types.ts +2 -1
  173. package/src/core/primitives/box/__workshop__/props.tsx +2 -2
  174. package/src/core/primitives/box/__workshop__/responsive.tsx +2 -1
  175. package/src/core/primitives/box/box.tsx +76 -31
  176. package/src/core/primitives/button/__workshop__/custom.tsx +19 -42
  177. package/src/core/primitives/button/__workshop__/customIcons.tsx +3 -3
  178. package/src/core/primitives/button/__workshop__/disabled.tsx +9 -9
  179. package/src/core/primitives/button/__workshop__/props.tsx +19 -22
  180. package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +3 -3
  181. package/src/core/primitives/button/__workshop__/stacked.tsx +15 -16
  182. package/src/core/primitives/button/__workshop__/uploadButton.tsx +2 -1
  183. package/src/core/primitives/button/button.test.tsx +3 -18
  184. package/src/core/primitives/button/button.tsx +75 -73
  185. package/src/core/primitives/card/__workshop__/asButton.tsx +14 -14
  186. package/src/core/primitives/card/__workshop__/asComponent.tsx +3 -3
  187. package/src/core/primitives/card/__workshop__/checkered.tsx +1 -1
  188. package/src/core/primitives/card/__workshop__/index.ts +1 -1
  189. package/src/core/primitives/card/__workshop__/interactive.tsx +3 -4
  190. package/src/core/primitives/card/__workshop__/listNavigation.tsx +3 -3
  191. package/src/core/primitives/card/__workshop__/props.tsx +14 -17
  192. package/src/core/primitives/card/__workshop__/selected.tsx +10 -41
  193. package/src/core/primitives/card/__workshop__/{allTones.tsx → tones.tsx} +3 -3
  194. package/src/core/primitives/card/card.tsx +53 -43
  195. package/src/core/primitives/card/cardContext.ts +10 -0
  196. package/src/core/primitives/card/cardProvider.tsx +27 -0
  197. package/src/core/primitives/card/index.ts +2 -0
  198. package/src/core/primitives/card/types.ts +19 -3
  199. package/src/core/primitives/card/useCard.ts +8 -0
  200. package/src/core/primitives/checkbox/__workshop__/props.tsx +6 -4
  201. package/src/core/primitives/checkbox/__workshop__/tones.tsx +11 -20
  202. package/src/core/primitives/checkbox/checkbox.tsx +30 -21
  203. package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +1 -1
  204. package/src/core/primitives/code/__workshop__/props.tsx +4 -7
  205. package/src/core/primitives/code/code.tsx +28 -26
  206. package/src/core/primitives/container/__workshop__/example.tsx +2 -2
  207. package/src/core/primitives/container/container.tsx +29 -18
  208. package/src/core/primitives/flex/__workshop__/example.tsx +2 -2
  209. package/src/core/primitives/flex/flex.tsx +21 -19
  210. package/src/core/primitives/grid/grid.tsx +21 -16
  211. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +2 -2
  212. package/src/core/primitives/heading/__workshop__/plain.tsx +12 -15
  213. package/src/core/primitives/heading/heading.tsx +46 -23
  214. package/src/core/primitives/inline/__workshop__/plain.tsx +2 -5
  215. package/src/core/primitives/inline/inline.tsx +27 -24
  216. package/src/core/primitives/inline/types.ts +1 -0
  217. package/src/core/primitives/kbd/kbd.tsx +29 -27
  218. package/src/core/primitives/label/__workshop__/plain.tsx +8 -17
  219. package/src/core/primitives/label/label.tsx +45 -30
  220. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +6 -6
  221. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +3 -3
  222. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +1 -1
  223. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +3 -3
  224. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +3 -4
  225. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +10 -6
  226. package/src/core/primitives/popover/__workshop__/TestStory.tsx +5 -4
  227. package/src/core/primitives/popover/constants.ts +1 -1
  228. package/src/core/primitives/popover/floating-ui/size.ts +2 -2
  229. package/src/core/primitives/popover/helpers.ts +1 -1
  230. package/src/core/primitives/popover/popover.tsx +296 -334
  231. package/src/core/primitives/popover/popoverLayer.tsx +149 -0
  232. package/src/core/primitives/popover/types.ts +3 -2
  233. package/src/core/primitives/radio/__workshop__/example.tsx +3 -3
  234. package/src/core/primitives/radio/__workshop__/plain.tsx +3 -3
  235. package/src/core/primitives/radio/radio.tsx +33 -17
  236. package/src/core/primitives/select/__workshop__/plain.tsx +15 -6
  237. package/src/core/primitives/select/__workshop__/readOnly.tsx +1 -1
  238. package/src/core/primitives/select/select.tsx +29 -27
  239. package/src/core/primitives/spinner/__workshop__/Props.tsx +4 -5
  240. package/src/core/primitives/spinner/animatedSpinnerIcon.tsx +7 -5
  241. package/src/core/primitives/spinner/spinner.tsx +26 -14
  242. package/src/core/primitives/stack/__workshop__/plain.tsx +2 -2
  243. package/src/core/primitives/stack/stack.tsx +33 -19
  244. package/src/core/primitives/switch/switch.tsx +33 -16
  245. package/src/core/primitives/text/__workshop__/colored.tsx +6 -6
  246. package/src/core/primitives/text/__workshop__/example.tsx +9 -20
  247. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +1 -1
  248. package/src/core/primitives/text/text.tsx +48 -30
  249. package/src/core/primitives/textArea/__workshop__/plain.tsx +44 -33
  250. package/src/core/primitives/textArea/textArea.tsx +48 -21
  251. package/src/core/primitives/textInput/__workshop__/customValidity.tsx +2 -2
  252. package/src/core/primitives/textInput/__workshop__/plain.tsx +36 -30
  253. package/src/core/primitives/textInput/__workshop__/states.tsx +5 -5
  254. package/src/core/primitives/textInput/__workshop__/tones.tsx +2 -2
  255. package/src/core/primitives/textInput/__workshop__/typed.tsx +2 -2
  256. package/src/core/primitives/textInput/textInput.tsx +52 -71
  257. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +5 -5
  258. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +2 -2
  259. package/src/core/primitives/tooltip/__workshop__/props.tsx +9 -8
  260. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +1 -1
  261. package/src/core/primitives/tooltip/constants.ts +1 -1
  262. package/src/core/primitives/tooltip/tooltip.test.tsx +61 -60
  263. package/src/core/primitives/tooltip/tooltip.tsx +112 -87
  264. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +1 -1
  265. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +3 -3
  266. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +1 -1
  267. package/src/core/primitives/tooltip/tooltipLayer.tsx +107 -0
  268. package/src/core/primitives/types.ts +16 -27
  269. package/src/core/types/avatar.ts +3 -6
  270. package/src/core/types/badge.ts +2 -4
  271. package/src/core/types/button.ts +2 -4
  272. package/src/core/types/card.ts +2 -4
  273. package/src/core/types/dialog.ts +1 -3
  274. package/src/core/types/props.ts +20 -10
  275. package/src/core/types/selectable.ts +1 -1
  276. package/src/core/utils/arrow/arrow.tsx +37 -28
  277. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +5 -5
  278. package/src/core/utils/boundaryElement/boundaryElementContext.ts +1 -1
  279. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +4 -8
  280. package/src/core/utils/boundaryElement/types.ts +1 -3
  281. package/src/core/utils/boundaryElement/useBoundaryElement.ts +2 -4
  282. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +15 -8
  283. package/src/core/utils/elementQuery/elementQuery.tsx +43 -19
  284. package/src/core/utils/errorBoundary.tsx +6 -4
  285. package/src/core/utils/index.ts +0 -1
  286. package/src/core/utils/layer/__workshop__/multipleRoots.tsx +5 -5
  287. package/src/core/utils/layer/__workshop__/nested.tsx +3 -3
  288. package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +9 -5
  289. package/src/core/utils/layer/getLayerContext.test.ts +3 -1
  290. package/src/core/utils/layer/getLayerContext.ts +1 -1
  291. package/src/core/utils/layer/layer.test.tsx +5 -5
  292. package/src/core/utils/layer/layer.tsx +24 -94
  293. package/src/core/utils/layer/layerCard.tsx +92 -0
  294. package/src/core/utils/layer/layerContext.ts +1 -1
  295. package/src/core/utils/layer/layerProvider.tsx +13 -9
  296. package/src/core/utils/layer/useLayer.ts +2 -4
  297. package/src/core/utils/portal/__workshop__/named.tsx +3 -3
  298. package/src/core/utils/portal/portal.test.tsx +5 -5
  299. package/src/core/utils/portal/{portal.ts → portal.tsx} +17 -9
  300. package/src/core/utils/portal/portalContext.ts +1 -1
  301. package/src/core/utils/portal/portalProvider.tsx +4 -8
  302. package/src/core/utils/portal/types.ts +1 -3
  303. package/src/core/utils/portal/usePortal.ts +2 -4
  304. package/src/core/utils/srOnly/srOnly.tsx +27 -22
  305. package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +1 -1
  306. package/src/core/utils/virtualList/virtualList.tsx +72 -54
  307. package/src/css/_assign.ts +3 -0
  308. package/src/css/_compileStyle.ts +156 -0
  309. package/src/css/_compileSystem.ts +7 -0
  310. package/src/css/_compileTheme.ts +13 -0
  311. package/src/css/_composeClassNames.ts +12 -0
  312. package/src/css/_fromEntries.ts +3 -0
  313. package/src/css/_getClassNames.ts +9 -0
  314. package/src/css/_hash.ts +9 -0
  315. package/src/css/_mergeStyles.ts +24 -0
  316. package/src/css/_resp.ts +2 -2
  317. package/src/css/_responsiveRule.ts +38 -0
  318. package/src/css/_scopeClassName.ts +9 -0
  319. package/src/css/_scopeClassNames.ts +12 -0
  320. package/src/css/_system.style.ts +166 -0
  321. package/src/css/aspects/border/border.style.ts +13 -0
  322. package/src/css/aspects/border/border.ts +14 -0
  323. package/src/css/{styles → aspects}/border/types.ts +1 -1
  324. package/src/css/aspects/boxSizing/boxSizing.style.ts +10 -0
  325. package/src/css/aspects/boxSizing/boxSizing.ts +8 -0
  326. package/src/css/aspects/boxSizing/index.ts +2 -0
  327. package/src/css/aspects/boxSizing/types.ts +9 -0
  328. package/src/css/aspects/display/display.style.ts +34 -0
  329. package/src/css/aspects/display/display.ts +8 -0
  330. package/src/css/{styles → aspects}/display/types.ts +3 -4
  331. package/src/css/aspects/flex/flex.ts +13 -0
  332. package/src/css/aspects/flex/flexAlign.style.ts +12 -0
  333. package/src/css/aspects/flex/flexDirection.style.ts +11 -0
  334. package/src/css/aspects/flex/flexJustify.style.ts +13 -0
  335. package/src/css/aspects/flex/flexWrap.style.ts +10 -0
  336. package/src/css/{styles → aspects}/flex/types.ts +5 -13
  337. package/src/css/aspects/flexItem/flex.style.ts +22 -0
  338. package/src/css/aspects/flexItem/flexItem.ts +8 -0
  339. package/src/css/aspects/flexItem/types.ts +25 -0
  340. package/src/css/aspects/font/font.style.ts +83 -0
  341. package/src/css/aspects/font/font.ts +7 -0
  342. package/src/css/aspects/font/types.ts +6 -0
  343. package/src/css/aspects/gap/gap.style.ts +21 -0
  344. package/src/css/aspects/gap/gap.ts +8 -0
  345. package/src/css/{styles → aspects}/gap/types.ts +2 -2
  346. package/src/css/{styles → aspects}/grid/grid.ts +6 -5
  347. package/src/css/aspects/grid/gridAutoColumns.style.ts +11 -0
  348. package/src/css/aspects/grid/gridAutoFlow.style.ts +11 -0
  349. package/src/css/aspects/grid/gridAutoRows.style.ts +11 -0
  350. package/src/css/aspects/grid/gridColumns.style.ts +18 -0
  351. package/src/css/aspects/grid/gridRows.style.ts +18 -0
  352. package/src/css/{styles → aspects}/grid/types.ts +8 -12
  353. package/src/css/aspects/gridItem/gridColumn.style.ts +20 -0
  354. package/src/css/aspects/gridItem/gridColumnEnd.style.ts +20 -0
  355. package/src/css/aspects/gridItem/gridColumnStart.style.ts +20 -0
  356. package/src/css/{styles → aspects}/gridItem/gridItem.ts +4 -4
  357. package/src/css/aspects/gridItem/gridRow.style.ts +20 -0
  358. package/src/css/aspects/gridItem/gridRowEnd.style.ts +20 -0
  359. package/src/css/aspects/gridItem/gridRowStart.style.ts +20 -0
  360. package/src/css/{styles → aspects}/gridItem/types.ts +8 -19
  361. package/src/css/aspects/height/height.style.ts +9 -0
  362. package/src/css/aspects/height/height.ts +16 -0
  363. package/src/css/aspects/height/index.ts +1 -0
  364. package/src/css/{styles → aspects}/index.ts +5 -0
  365. package/src/css/aspects/inset/inset.style.ts +12 -0
  366. package/src/css/{styles → aspects}/inset/inset.ts +4 -3
  367. package/src/css/{styles → aspects}/inset/types.ts +1 -1
  368. package/src/css/aspects/margin/margin.style.ts +56 -0
  369. package/src/css/{styles → aspects}/margin/margin.ts +4 -3
  370. package/src/css/aspects/margin/types.ts +17 -0
  371. package/src/css/aspects/maxWidth/maxWidth.style.ts +16 -0
  372. package/src/css/aspects/maxWidth/maxWidth.ts +8 -0
  373. package/src/css/aspects/maxWidth/types.ts +8 -0
  374. package/src/css/aspects/minHeight/index.ts +2 -0
  375. package/src/css/aspects/minHeight/minHeight.style.ts +9 -0
  376. package/src/css/aspects/minHeight/minHeight.ts +8 -0
  377. package/src/css/aspects/minHeight/types.ts +9 -0
  378. package/src/css/aspects/minWidth/index.ts +2 -0
  379. package/src/css/aspects/minWidth/minWidth.style.ts +13 -0
  380. package/src/css/aspects/minWidth/minWidth.ts +8 -0
  381. package/src/css/aspects/minWidth/types.ts +9 -0
  382. package/src/css/aspects/outline/outline.style.ts +9 -0
  383. package/src/css/aspects/overflow/overflow.style.ts +11 -0
  384. package/src/css/{styles → aspects}/overflow/overflow.ts +4 -3
  385. package/src/css/{styles → aspects}/overflow/types.ts +1 -1
  386. package/src/css/aspects/padding/padding.style.ts +43 -0
  387. package/src/css/{styles → aspects}/padding/padding.ts +4 -3
  388. package/src/css/{styles → aspects}/padding/types.ts +2 -2
  389. package/src/css/aspects/pointerEvents/pointerEvents.style.ts +13 -0
  390. package/src/css/aspects/pointerEvents/pointerEvents.ts +7 -0
  391. package/src/css/aspects/position/position.style.ts +12 -0
  392. package/src/css/aspects/position/position.ts +8 -0
  393. package/src/css/{styles → aspects}/position/types.ts +1 -1
  394. package/src/css/aspects/radius/radius.style.ts +16 -0
  395. package/src/css/aspects/radius/radius.ts +8 -0
  396. package/src/css/aspects/radius/types.ts +8 -0
  397. package/src/css/aspects/shadow/shadow.style.ts +24 -0
  398. package/src/css/aspects/shadow/shadow.ts +8 -0
  399. package/src/css/aspects/shadow/types.ts +8 -0
  400. package/src/css/aspects/textAlign/index.ts +2 -0
  401. package/src/css/aspects/textAlign/textAlign.style.ts +26 -0
  402. package/src/css/aspects/textAlign/textAlign.ts +8 -0
  403. package/src/css/aspects/textAlign/types.ts +7 -0
  404. package/src/css/aspects/textOverflow/textOverflow.style.ts +21 -0
  405. package/src/css/aspects/textOverflow/textOverflow.ts +7 -0
  406. package/src/css/{styles → aspects}/textOverflow/types.ts +1 -0
  407. package/src/css/aspects/width/types.ts +11 -0
  408. package/src/css/aspects/width/width.style.ts +11 -0
  409. package/src/css/aspects/width/width.ts +8 -0
  410. package/src/css/components/breadcrumbs/breadcrumbs.style.ts +9 -0
  411. package/src/css/components/breadcrumbs/breadcrumbs.ts +3 -2
  412. package/src/css/components/dialog/dialog.style.ts +77 -0
  413. package/src/css/components/dialog/dialog.ts +17 -8
  414. package/src/css/components/menu/menu.style.ts +17 -0
  415. package/src/css/components/menu/menu.ts +5 -3
  416. package/src/css/components/skeleton/skeleton.style.ts +104 -0
  417. package/src/css/components/skeleton/skeleton.ts +13 -8
  418. package/src/css/components/skeleton/types.ts +8 -6
  419. package/src/css/components/toast/toast.style.ts +20 -0
  420. package/src/css/components/toast/toast.ts +11 -6
  421. package/src/css/components/tree/tree.style.ts +39 -0
  422. package/src/css/components/tree/tree.ts +3 -2
  423. package/src/css/constants.ts +10 -0
  424. package/src/css/index.ts +8 -8
  425. package/src/css/prefix/constants.ts +6 -0
  426. package/src/css/prefix/types.ts +1 -0
  427. package/src/css/primitives/_arrow/{rules.ts → _arrow.style.ts} +23 -25
  428. package/src/css/primitives/_arrow/_arrow.ts +13 -6
  429. package/src/css/primitives/_input/_input.style.ts +235 -0
  430. package/src/css/primitives/_input/input.ts +18 -13
  431. package/src/css/primitives/_input/types.ts +3 -3
  432. package/src/css/primitives/_selectable/{rules.ts → _selectable.style.ts} +36 -36
  433. package/src/css/primitives/_selectable/selectable.ts +5 -5
  434. package/src/css/primitives/_selectable/types.ts +2 -2
  435. package/src/css/primitives/avatar/{rules.ts → avatar.style.ts} +62 -67
  436. package/src/css/primitives/avatar/avatar.ts +14 -8
  437. package/src/css/primitives/avatar/types.ts +4 -3
  438. package/src/css/primitives/badge/badge.style.ts +21 -0
  439. package/src/css/primitives/badge/badge.ts +8 -4
  440. package/src/css/primitives/badge/types.ts +2 -2
  441. package/src/css/primitives/box/box.style.ts +22 -0
  442. package/src/css/primitives/box/box.ts +16 -10
  443. package/src/css/primitives/box/types.ts +12 -15
  444. package/src/css/primitives/button/button.style.ts +275 -0
  445. package/src/css/primitives/button/button.ts +9 -30
  446. package/src/css/primitives/button/index.ts +1 -0
  447. package/src/css/primitives/button/types.ts +13 -0
  448. package/src/css/primitives/card/card.style.ts +295 -0
  449. package/src/css/primitives/card/card.ts +7 -11
  450. package/src/css/primitives/card/types.ts +4 -5
  451. package/src/css/primitives/checkbox/checkbox.style.ts +178 -0
  452. package/src/css/primitives/checkbox/checkbox.ts +5 -3
  453. package/src/css/primitives/code/code.style.ts +61 -0
  454. package/src/css/primitives/code/code.ts +8 -4
  455. package/src/css/primitives/code/types.ts +2 -2
  456. package/src/css/primitives/container/container.style.ts +10 -0
  457. package/src/css/primitives/container/container.ts +6 -4
  458. package/src/css/primitives/container/types.ts +3 -2
  459. package/src/css/primitives/heading/heading.style.ts +56 -0
  460. package/src/css/primitives/heading/heading.ts +13 -10
  461. package/src/css/primitives/heading/types.ts +4 -2
  462. package/src/css/primitives/kbd/kbd.style.ts +19 -0
  463. package/src/css/primitives/kbd/kbd.ts +6 -4
  464. package/src/css/primitives/kbd/types.ts +1 -1
  465. package/src/css/primitives/label/label.style.ts +52 -0
  466. package/src/css/primitives/label/label.ts +7 -9
  467. package/src/css/primitives/label/types.ts +11 -4
  468. package/src/css/primitives/popover/popover.style.ts +9 -0
  469. package/src/css/primitives/popover/popover.ts +8 -2
  470. package/src/css/primitives/radio/radio.style.ts +84 -0
  471. package/src/css/primitives/radio/radio.ts +3 -2
  472. package/src/css/primitives/select/{rules.ts → select.style.ts} +8 -6
  473. package/src/css/primitives/select/select.ts +7 -4
  474. package/src/css/primitives/select/types.ts +1 -1
  475. package/src/css/primitives/spinner/spinner.style.ts +22 -0
  476. package/src/css/primitives/spinner/spinner.ts +5 -3
  477. package/src/css/primitives/stack/index.ts +1 -0
  478. package/src/css/primitives/stack/stack.style.ts +13 -0
  479. package/src/css/primitives/stack/stack.ts +6 -0
  480. package/src/css/primitives/switch/switch.style.ts +102 -0
  481. package/src/css/primitives/switch/switch.ts +11 -6
  482. package/src/css/primitives/text/text.style.ts +65 -0
  483. package/src/css/primitives/text/text.ts +7 -9
  484. package/src/css/primitives/text/types.ts +7 -2
  485. package/src/css/primitives/textArea/textArea.style.ts +11 -0
  486. package/src/css/primitives/textArea/textArea.ts +5 -3
  487. package/src/css/primitives/textArea/types.ts +1 -1
  488. package/src/css/primitives/textInput/textInput.style.ts +46 -0
  489. package/src/css/primitives/textInput/textInput.ts +20 -4
  490. package/src/css/primitives/textInput/types.ts +2 -8
  491. package/src/css/primitives/token/token.style.ts +50 -0
  492. package/src/css/primitives/tooltip/tooltip.style.ts +9 -0
  493. package/src/css/primitives/tooltip/tooltip.ts +3 -6
  494. package/src/css/renderColor.ts +31 -0
  495. package/src/css/responsiveRules.ts +12 -19
  496. package/src/css/theme/index.ts +14 -0
  497. package/src/css/theme/lib/contract/buildVarContract.ts +76 -0
  498. package/src/css/theme/lib/contract/index.ts +2 -0
  499. package/src/css/theme/lib/contract/types.ts +15 -0
  500. package/src/css/theme/resolveTheme.ts +863 -0
  501. package/src/css/types.ts +29 -755
  502. package/src/css/util.ts +5 -0
  503. package/src/css/utils/srOnly/srOnly.style.ts +14 -0
  504. package/src/css/utils/srOnly/srOnly.ts +4 -2
  505. package/src/theme/getScopedTheme.ts +4 -4
  506. package/src/theme/index.ts +0 -5
  507. package/src/theme/types.ts +6 -10
  508. package/src/theme/v0/color/_generic.ts +1 -1
  509. package/src/theme/v0/color/button.ts +1 -1
  510. package/src/theme/v0/color/card.ts +1 -1
  511. package/src/theme/v0/color/color.ts +11 -11
  512. package/src/theme/v0/color/input.ts +1 -1
  513. package/src/theme/v0/color/muted.ts +1 -1
  514. package/src/theme/v0/color/selectable.ts +1 -1
  515. package/src/theme/v0/color/solid.ts +1 -1
  516. package/src/theme/v0/color/spot.ts +1 -1
  517. package/src/theme/v0/focusRing.ts +1 -3
  518. package/src/theme/v0/font.ts +6 -19
  519. package/src/theme/v0/layer.ts +1 -3
  520. package/src/theme/v0/shadow.ts +2 -6
  521. package/src/theme/v0/styles.ts +1 -1
  522. package/src/theme/v0/theme.ts +7 -7
  523. package/src/theme/v2/avatar.ts +2 -4
  524. package/src/theme/{build → v2/build}/_deprecated/color/_selectable/createSelectableTones.ts +3 -3
  525. package/src/theme/{build → v2/build}/_deprecated/color/_solid/createSolidTones.ts +2 -2
  526. package/src/theme/{build → v2/build}/_deprecated/color/button/createButtonModes.ts +7 -2
  527. package/src/theme/{build → v2/build}/_deprecated/color/button/createButtonTones.ts +4 -4
  528. package/src/theme/{build → v2/build}/_deprecated/color/card/createCardStates.ts +3 -3
  529. package/src/theme/{build → v2/build}/_deprecated/color/color.test.ts +1 -1
  530. package/src/theme/{build → v2/build}/_deprecated/color/defaults.ts +1 -1
  531. package/src/theme/{build → v2/build}/_deprecated/color/factory.ts +3 -3
  532. package/src/theme/{build → v2/build}/_deprecated/color/input/createInputModes.ts +7 -2
  533. package/src/theme/{build → v2/build}/_deprecated/color/muted/createMuted.ts +2 -2
  534. package/src/theme/{build → v2/build}/_deprecated/color/spot/createSpot.ts +2 -2
  535. package/src/theme/{build → v2/build}/buildColorTheme.test.ts +3 -1
  536. package/src/theme/{build → v2/build}/buildColorTheme.ts +24 -24
  537. package/src/theme/{build → v2/build}/buildTheme.test.ts +10 -8
  538. package/src/theme/v2/build/buildTheme.ts +12 -0
  539. package/src/theme/{build → v2/build}/colorToken/colorToken.ts +2 -2
  540. package/src/theme/{build → v2/build}/colorToken/compileColorToken.ts +1 -1
  541. package/src/theme/{build → v2/build}/colorToken/types.ts +2 -2
  542. package/src/theme/{build → v2/build}/lib/color-fns/blend/mix.ts +1 -1
  543. package/src/theme/{build → v2/build}/lib/color-fns/blend/multiply.ts +1 -1
  544. package/src/theme/{build → v2/build}/lib/color-fns/blend/screen.ts +1 -1
  545. package/src/theme/{build → v2/build}/lib/color-fns/color-fns.test.ts +1 -1
  546. package/src/theme/{build → v2/build}/lib/color-fns/contrastRatio.ts +5 -2
  547. package/src/theme/{build → v2/build}/lib/color-fns/convert.ts +1 -1
  548. package/src/theme/{build → v2/build}/lib/color-fns/parse.ts +1 -1
  549. package/src/theme/{build → v2/build}/mixThemeColor.test.ts +2 -0
  550. package/src/theme/{build → v2/build}/mixThemeColor.ts +1 -1
  551. package/src/theme/{build → v2/build}/renderColorTheme.ts +27 -27
  552. package/src/theme/{build → v2/build}/renderColorValue.ts +3 -3
  553. package/src/theme/{build → v2/build}/resolveColorTokens.ts +13 -13
  554. package/src/theme/v2/color/_helpers.ts +2 -2
  555. package/src/theme/v2/color/_system.ts +2 -4
  556. package/src/theme/v2/color/avatar.ts +3 -7
  557. package/src/theme/v2/color/badge.ts +3 -7
  558. package/src/theme/v2/color/button.ts +5 -11
  559. package/src/theme/v2/color/color.ts +10 -16
  560. package/src/theme/v2/color/input.ts +8 -10
  561. package/src/theme/v2/color/kbd.ts +1 -3
  562. package/src/theme/v2/color/selectable.ts +4 -8
  563. package/src/theme/v2/color/state.ts +5 -7
  564. package/src/theme/v2/color/syntax.ts +1 -3
  565. package/src/theme/{config → v2/config}/helpers.ts +6 -13
  566. package/src/theme/{config → v2/config}/system.ts +11 -12
  567. package/src/theme/{config → v2/config}/tokens/color/types.ts +14 -10
  568. package/src/theme/{config → v2/config}/tokens/index.ts +0 -1
  569. package/src/theme/{config → v2/config}/tokens/parseTokenValue.test.ts +2 -0
  570. package/src/theme/{config → v2/config}/tokens/parseTokenValue.ts +2 -2
  571. package/src/theme/{config → v2/config}/tokens/types.ts +3 -3
  572. package/src/theme/{config → v2/config}/types.ts +8 -6
  573. package/src/theme/{defaults → v2/defaults}/colorPalette.ts +1 -1
  574. package/src/theme/{defaults → v2/defaults}/colorTokens.ts +3 -3
  575. package/src/theme/{defaults → v2/defaults}/config.ts +2 -2
  576. package/src/theme/{defaults → v2/defaults}/fonts.ts +5 -6
  577. package/src/theme/v2/index.ts +2 -0
  578. package/src/theme/v2/input.ts +2 -4
  579. package/src/theme/v2/theme.ts +10 -14
  580. package/src/theme/{_constants.ts → v3/_constants.ts} +6 -3
  581. package/src/theme/v3/{color/parseColor.ts → _parseColorToken.ts} +59 -46
  582. package/src/theme/v3/buildTheme_v3.ts +14 -10
  583. package/src/theme/v3/color/_constants.ts +15 -0
  584. package/src/theme/v3/color/avatar.ts +14 -0
  585. package/src/theme/v3/color/card.ts +58 -95
  586. package/src/theme/v3/color/color.ts +75 -71
  587. package/src/theme/v3/color/element.ts +8 -8
  588. package/src/theme/v3/color/index.ts +2 -2
  589. package/src/theme/v3/color/token.ts +19 -4
  590. package/src/theme/v3/color/tokens.ts +2 -2
  591. package/src/theme/v3/defaultFonts.ts +250 -0
  592. package/src/theme/v3/defaultTokens.ts +199 -0
  593. package/src/theme/v3/index.ts +4 -1
  594. package/src/theme/{palette → v3/palette}/constants.ts +3 -3
  595. package/src/theme/v3/palette/index.ts +2 -0
  596. package/src/theme/v3/palette/types.ts +7 -0
  597. package/src/theme/v3/resolveTokens.ts +70 -65
  598. package/src/theme/v3/tokens.ts +2 -2
  599. package/src/theme/v3/types.ts +95 -11
  600. package/src/theme/versioning/getTheme_v2.ts +3 -3
  601. package/src/theme/versioning/is_v0.ts +2 -2
  602. package/src/theme/versioning/is_v2.ts +2 -2
  603. package/src/theme/versioning/themeColor_v0_v2.ts +2 -2
  604. package/src/theme/versioning/themeColor_v2_v2_9.ts +1 -1
  605. package/src/theme/versioning/themeColor_v3_v2.ts +229 -52
  606. package/src/theme/versioning/v0_v2.ts +3 -3
  607. package/src/theme/versioning/v2_v0.ts +4 -4
  608. package/src/theme/versioning/v3_v2.ts +39 -38
  609. package/dist/_chunks-cjs/_visual-editing.js +0 -3059
  610. package/dist/_chunks-cjs/_visual-editing.js.map +0 -1
  611. package/dist/_chunks-cjs/buildCommand.js +0 -32
  612. package/dist/_chunks-cjs/buildCommand.js.map +0 -1
  613. package/dist/_chunks-cjs/refractor.js.map +0 -1
  614. package/dist/_chunks-cjs/v3_v2.js +0 -251
  615. package/dist/_chunks-cjs/v3_v2.js.map +0 -1
  616. package/dist/_chunks-es/_visual-editing.mjs +0 -3066
  617. package/dist/_chunks-es/_visual-editing.mjs.map +0 -1
  618. package/dist/_chunks-es/refractor.mjs.map +0 -1
  619. package/dist/_chunks-es/v3_v2.mjs +0 -252
  620. package/dist/_chunks-es/v3_v2.mjs.map +0 -1
  621. package/dist/_visual-editing.d.mts +0 -806
  622. package/dist/_visual-editing.mjs +0 -31
  623. package/dist/_visual-editing.mjs.map +0 -1
  624. package/dist/cli.js.map +0 -1
  625. package/dist/css.d.mts +0 -2135
  626. package/dist/css.mjs +0 -4713
  627. package/dist/css.mjs.map +0 -1
  628. package/dist/index.mjs +0 -1542
  629. package/dist/index.mjs.map +0 -1
  630. package/dist/sanity-palette.css +0 -9
  631. package/dist/sanity-theme.css +0 -1
  632. package/dist/system.css +0 -3577
  633. package/dist/theme.mjs.map +0 -1
  634. package/src/core/primitives/popover/popoverCard.tsx +0 -148
  635. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -115
  636. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -23
  637. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  638. package/src/css/compile/compilePalette.ts +0 -60
  639. package/src/css/compile/compileRule.ts +0 -90
  640. package/src/css/compile/compileRules.test.ts +0 -35
  641. package/src/css/compile/compileRules.ts +0 -40
  642. package/src/css/compile/compileSystem.ts +0 -7
  643. package/src/css/compile/compileTheme.ts +0 -15
  644. package/src/css/compile/compileTheme_v3.ts +0 -410
  645. package/src/css/compile/types.ts +0 -6
  646. package/src/css/components/breadcrumbs/rules.ts +0 -25
  647. package/src/css/components/dialog/rules.ts +0 -76
  648. package/src/css/components/menu/rules.ts +0 -15
  649. package/src/css/components/skeleton/rules.ts +0 -112
  650. package/src/css/components/toast/rules.ts +0 -17
  651. package/src/css/components/tree/rules.ts +0 -168
  652. package/src/css/composeClassNames.ts +0 -13
  653. package/src/css/primitives/_input/rules.ts +0 -163
  654. package/src/css/primitives/_selectable/__style.ts +0 -117
  655. package/src/css/primitives/_selectable/_contants.ts +0 -11
  656. package/src/css/primitives/badge/rules.ts +0 -22
  657. package/src/css/primitives/box/rules.ts +0 -28
  658. package/src/css/primitives/button/_constants.ts +0 -17
  659. package/src/css/primitives/button/rules.ts +0 -293
  660. package/src/css/primitives/card/_constants.ts +0 -13
  661. package/src/css/primitives/card/rules.ts +0 -471
  662. package/src/css/primitives/checkbox/__styles.ts +0 -129
  663. package/src/css/primitives/checkbox/rules.ts +0 -152
  664. package/src/css/primitives/code/rules.ts +0 -96
  665. package/src/css/primitives/container/rules.ts +0 -8
  666. package/src/css/primitives/heading/rules.ts +0 -155
  667. package/src/css/primitives/kbd/rules.ts +0 -20
  668. package/src/css/primitives/label/rules.ts +0 -137
  669. package/src/css/primitives/popover/rules.ts +0 -5
  670. package/src/css/primitives/radio/rules.ts +0 -121
  671. package/src/css/primitives/spinner/rules.ts +0 -20
  672. package/src/css/primitives/switch/rules.ts +0 -340
  673. package/src/css/primitives/text/rules.ts +0 -164
  674. package/src/css/primitives/textArea/rules.ts +0 -7
  675. package/src/css/primitives/textInput/rules.ts +0 -224
  676. package/src/css/primitives/token/rules.ts +0 -45
  677. package/src/css/primitives/tooltip/rules.ts +0 -19
  678. package/src/css/rules.ts +0 -113
  679. package/src/css/styles/border/border.ts +0 -22
  680. package/src/css/styles/border/rules.ts +0 -24
  681. package/src/css/styles/display/display.ts +0 -7
  682. package/src/css/styles/display/rules.ts +0 -62
  683. package/src/css/styles/flex/flex.ts +0 -20
  684. package/src/css/styles/flex/rules.ts +0 -28
  685. package/src/css/styles/flexItem/flexItem.ts +0 -8
  686. package/src/css/styles/flexItem/rules.ts +0 -12
  687. package/src/css/styles/flexItem/types.ts +0 -11
  688. package/src/css/styles/font/font.ts +0 -17
  689. package/src/css/styles/font/rules.ts +0 -148
  690. package/src/css/styles/font/types.ts +0 -12
  691. package/src/css/styles/gap/gap.ts +0 -8
  692. package/src/css/styles/gap/rules.ts +0 -34
  693. package/src/css/styles/grid/rules.ts +0 -146
  694. package/src/css/styles/gridItem/rules.ts +0 -96
  695. package/src/css/styles/height/rules.ts +0 -7
  696. package/src/css/styles/inset/rules.ts +0 -16
  697. package/src/css/styles/margin/rules.ts +0 -64
  698. package/src/css/styles/margin/types.ts +0 -11
  699. package/src/css/styles/maxWidth/maxWidth.ts +0 -6
  700. package/src/css/styles/maxWidth/rules.ts +0 -13
  701. package/src/css/styles/maxWidth/types.ts +0 -7
  702. package/src/css/styles/outline/rules.ts +0 -7
  703. package/src/css/styles/overflow/rules.ts +0 -9
  704. package/src/css/styles/padding/rules.ts +0 -62
  705. package/src/css/styles/pointerEvents/pointerEvents.ts +0 -6
  706. package/src/css/styles/pointerEvents/rules.ts +0 -11
  707. package/src/css/styles/position/position.ts +0 -7
  708. package/src/css/styles/position/rules.ts +0 -24
  709. package/src/css/styles/radius/radius.ts +0 -8
  710. package/src/css/styles/radius/rules.ts +0 -13
  711. package/src/css/styles/radius/types.ts +0 -8
  712. package/src/css/styles/shadow/rules.ts +0 -53
  713. package/src/css/styles/shadow/shadow.ts +0 -7
  714. package/src/css/styles/shadow/types.ts +0 -8
  715. package/src/css/styles/textOverflow/rules.ts +0 -17
  716. package/src/css/styles/textOverflow/textOverflow.ts +0 -6
  717. package/src/css/styles/width/rules.ts +0 -7
  718. package/src/css/styles/width/types.ts +0 -9
  719. package/src/css/styles/width/width.ts +0 -6
  720. package/src/css/utils/srOnly/rules.ts +0 -11
  721. package/src/css/varNames.ts +0 -473
  722. package/src/css/vars.ts +0 -443
  723. package/src/theme/_types.ts +0 -41
  724. package/src/theme/build/buildTheme.ts +0 -12
  725. package/src/theme/build/theme.test.ts +0 -27
  726. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
  727. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  728. package/src/theme/palette/types.ts +0 -16
  729. package/src/theme/v3/buildTheme_v3.test.ts +0 -40
  730. package/src/theme/v3/color/buildColor_v3.ts +0 -193
  731. package/src/theme/v3/color/parseColor.test.ts +0 -79
  732. package/src/theme/v3/color/renderColor.test.ts +0 -19
  733. package/src/theme/v3/color/renderColor.ts +0 -33
  734. package/src/theme/v3/defaults.ts +0 -205
  735. /package/dist/{cli.d.ts → cli.d.cts} +0 -0
  736. /package/src/core/components/autocomplete/{__mocks__ → __workshop__/mock}/apiStore.ts +0 -0
  737. /package/src/core/components/autocomplete/{__mocks__ → __workshop__/mock}/countries.ts +0 -0
  738. /package/src/css/{styles → aspects}/border/index.ts +0 -0
  739. /package/src/css/{styles → aspects}/display/index.ts +0 -0
  740. /package/src/css/{styles → aspects}/flex/index.ts +0 -0
  741. /package/src/css/{styles → aspects}/flexItem/index.ts +0 -0
  742. /package/src/css/{styles → aspects}/font/index.ts +0 -0
  743. /package/src/css/{styles → aspects}/gap/index.ts +0 -0
  744. /package/src/css/{styles → aspects}/grid/index.ts +0 -0
  745. /package/src/css/{styles → aspects}/gridItem/index.ts +0 -0
  746. /package/src/css/{styles → aspects}/inset/index.ts +0 -0
  747. /package/src/css/{styles → aspects}/margin/index.ts +0 -0
  748. /package/src/css/{styles → aspects}/maxWidth/index.ts +0 -0
  749. /package/src/css/{styles → aspects}/overflow/index.ts +0 -0
  750. /package/src/css/{styles → aspects}/padding/index.ts +0 -0
  751. /package/src/css/{styles → aspects}/pointerEvents/index.ts +0 -0
  752. /package/src/css/{styles → aspects}/pointerEvents/types.ts +0 -0
  753. /package/src/css/{styles → aspects}/position/index.ts +0 -0
  754. /package/src/css/{styles → aspects}/radius/index.ts +0 -0
  755. /package/src/css/{styles → aspects}/shadow/index.ts +0 -0
  756. /package/src/css/{styles → aspects}/textOverflow/index.ts +0 -0
  757. /package/src/css/{styles → aspects}/width/index.ts +0 -0
  758. /package/src/{theme/palette → css/prefix}/index.ts +0 -0
  759. /package/src/theme/{build → v2/build}/_deprecated/color/index.ts +0 -0
  760. /package/src/theme/{build → v2/build}/colorToken/index.ts +0 -0
  761. /package/src/theme/{build → v2/build}/index.ts +0 -0
  762. /package/src/theme/{build → v2/build}/lib/color-fns/blend/index.ts +0 -0
  763. /package/src/theme/{build → v2/build}/lib/color-fns/index.ts +0 -0
  764. /package/src/theme/{build → v2/build}/lib/color-fns/rgba.ts +0 -0
  765. /package/src/theme/{build → v2/build}/lib/color-fns/types.ts +0 -0
  766. /package/src/theme/{build → v2/build}/lib/isRecord.ts +0 -0
  767. /package/src/theme/{build → v2/build}/lib/utils.ts +0 -0
  768. /package/src/theme/{build → v2/build}/merge.ts +0 -0
  769. /package/src/theme/{config → v2/config}/index.ts +0 -0
  770. /package/src/theme/{config → v2/config}/tokens/color/index.ts +0 -0
@@ -1,23 +1,24 @@
1
- /** @jest-environment jsdom */
2
-
3
1
  import '../../../../test/mocks/resizeObserver.mock'
4
2
  import '../../../../test/mocks/matchMedia.mock'
5
3
 
6
4
  import {act, fireEvent, screen} from '@testing-library/react'
5
+ import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'
7
6
 
8
7
  import {render} from '../../../../test'
9
- import {Button, Text} from '../../primitives'
10
- import {Tooltip, TooltipDelayGroupProvider} from '../tooltip'
8
+ import {Button} from '../button'
9
+ import {Text} from '../text'
10
+ import {Tooltip} from './tooltip'
11
+ import {TooltipDelayGroupProvider} from './tooltipDelayGroup'
11
12
 
12
- // Fake timers using Jest
13
+ // Fake timers
13
14
  beforeEach(() => {
14
- jest.useFakeTimers()
15
+ vi.useFakeTimers()
15
16
  })
16
17
 
17
- // Running all pending timers and switching to real timers using Jest
18
+ // Running all pending timers and switching to real timers
18
19
  afterEach(() => {
19
- jest.runOnlyPendingTimers()
20
- jest.useRealTimers()
20
+ vi.runOnlyPendingTimers()
21
+ vi.useRealTimers()
21
22
  })
22
23
 
23
24
  describe('Tooltip', () => {
@@ -44,7 +45,7 @@ describe('Tooltip', () => {
44
45
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
45
46
  })
46
47
  it('should support delays to show and hide the tooltip.', () => {
47
- jest.useFakeTimers()
48
+ vi.useFakeTimers()
48
49
  const delay = 200
49
50
 
50
51
  render(
@@ -64,10 +65,10 @@ describe('Tooltip', () => {
64
65
 
65
66
  fireEvent.mouseEnter(button)
66
67
 
67
- act(() => jest.advanceTimersByTime(delay / 2))
68
+ act(() => vi.advanceTimersByTime(delay / 2))
68
69
  // Content should not be rendered yet
69
70
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
70
- act(() => jest.advanceTimersByTime(delay / 2))
71
+ act(() => vi.advanceTimersByTime(delay / 2))
71
72
 
72
73
  // Validate tooltip content is rendered
73
74
  screen.getByText('Tooltip content')
@@ -75,12 +76,12 @@ describe('Tooltip', () => {
75
76
  fireEvent.mouseOut(button)
76
77
  // Validate tooltip content is still showing.
77
78
  screen.getByText('Tooltip content')
78
- act(() => jest.advanceTimersByTime(delay))
79
+ act(() => vi.advanceTimersByTime(delay))
79
80
  // Validate tooltip content is not rendered anymore
80
81
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
81
82
  })
82
83
  it('should support different open and close delays to show and hide the tooltip.', () => {
83
- jest.useFakeTimers()
84
+ vi.useFakeTimers()
84
85
  const openDelay = 200
85
86
  const closeDelay = 150
86
87
 
@@ -104,10 +105,10 @@ describe('Tooltip', () => {
104
105
 
105
106
  fireEvent.mouseEnter(button)
106
107
 
107
- act(() => jest.advanceTimersByTime(openDelay / 2))
108
+ act(() => vi.advanceTimersByTime(openDelay / 2))
108
109
  // Content should not be rendered yet
109
110
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
110
- act(() => jest.advanceTimersByTime(openDelay / 2))
111
+ act(() => vi.advanceTimersByTime(openDelay / 2))
111
112
 
112
113
  // Validate tooltip content is rendered
113
114
  screen.getByText('Tooltip content')
@@ -115,7 +116,7 @@ describe('Tooltip', () => {
115
116
  fireEvent.mouseOut(button)
116
117
  // Validate tooltip content is still showing.
117
118
  screen.getByText('Tooltip content')
118
- act(() => jest.advanceTimersByTime(closeDelay))
119
+ act(() => vi.advanceTimersByTime(closeDelay))
119
120
  // Validate tooltip content is not rendered anymore
120
121
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
121
122
  })
@@ -125,7 +126,7 @@ describe('Tooltip', () => {
125
126
  it('should support groups with the same delay to open and close.', () => {
126
127
  const delay = 150
127
128
 
128
- jest.useFakeTimers()
129
+ vi.useFakeTimers()
129
130
  render(
130
131
  <TooltipDelayGroupProvider delay={delay}>
131
132
  <Tooltip content={<Text size={1}>{'Tooltip 1'}</Text>} placement={'top'} delay={400}>
@@ -150,11 +151,11 @@ describe('Tooltip', () => {
150
151
 
151
152
  // Hovers on first button, it should show first tooltip only
152
153
  fireEvent.mouseEnter(button1)
153
- act(() => jest.advanceTimersByTime(delay / 2))
154
+ act(() => vi.advanceTimersByTime(delay / 2))
154
155
  // Content should not be rendered yet, we have a delay of 150ms
155
156
  expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
156
157
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
157
- act(() => jest.advanceTimersByTime(delay / 2))
158
+ act(() => vi.advanceTimersByTime(delay / 2))
158
159
 
159
160
  // Validate Tooltip 1 is rendered
160
161
  screen.getByText('Tooltip 1')
@@ -165,38 +166,38 @@ describe('Tooltip', () => {
165
166
  fireEvent.mouseEnter(button2)
166
167
 
167
168
  // Validate Tooltip 1 is not rendered, now tooltip 2 is open.
168
- act(() => jest.advanceTimersByTime(1))
169
+ act(() => vi.advanceTimersByTime(1))
169
170
  expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
170
171
  screen.getByText('Tooltip 2')
171
172
 
172
173
  // Validate tooltip content is not rendered anymore
173
174
  fireEvent.mouseOut(button2)
174
- act(() => jest.advanceTimersByTime(delay + 1))
175
+ act(() => vi.advanceTimersByTime(delay + 1))
175
176
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
176
177
 
177
178
  // Hovering again, should trigger the tooltip to show immediately, as the group is not deactivated yet
178
179
  fireEvent.mouseEnter(button2)
179
- act(() => jest.advanceTimersByTime(1))
180
+ act(() => vi.advanceTimersByTime(1))
180
181
  screen.getByText('Tooltip 2')
181
182
 
182
183
  // Validate tooltip content is not rendered anymore
183
184
  fireEvent.mouseOut(button2)
184
- act(() => jest.advanceTimersByTime(delay + 1))
185
+ act(() => vi.advanceTimersByTime(delay + 1))
185
186
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
186
187
 
187
188
  // Wait 200ms, the group is deactivated, hovering again should trigger the delay
188
- act(() => jest.advanceTimersByTime(200))
189
+ act(() => vi.advanceTimersByTime(200))
189
190
  fireEvent.mouseEnter(button2)
190
- act(() => jest.advanceTimersByTime(delay / 2))
191
+ act(() => vi.advanceTimersByTime(delay / 2))
191
192
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
192
- act(() => jest.advanceTimersByTime(delay / 2))
193
+ act(() => vi.advanceTimersByTime(delay / 2))
193
194
  screen.getByText('Tooltip 2')
194
195
  })
195
196
  it('should support groups with different open and close delay.', () => {
196
197
  const openDelay = 250
197
198
  const closeDelay = 150
198
199
 
199
- jest.useFakeTimers()
200
+ vi.useFakeTimers()
200
201
  render(
201
202
  <TooltipDelayGroupProvider
202
203
  delay={{
@@ -226,11 +227,11 @@ describe('Tooltip', () => {
226
227
 
227
228
  // Hovers on first button, it should show first tooltip only
228
229
  fireEvent.mouseEnter(button1)
229
- act(() => jest.advanceTimersByTime(openDelay / 2))
230
+ act(() => vi.advanceTimersByTime(openDelay / 2))
230
231
  // Content should not be rendered yet, we have a delay of2150ms
231
232
  expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
232
233
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
233
- act(() => jest.advanceTimersByTime(openDelay / 2))
234
+ act(() => vi.advanceTimersByTime(openDelay / 2))
234
235
 
235
236
  // Validate Tooltip 1 is rendered
236
237
  screen.getByText('Tooltip 1')
@@ -241,31 +242,31 @@ describe('Tooltip', () => {
241
242
  fireEvent.mouseEnter(button2)
242
243
 
243
244
  // Validate Tooltip 1 is not rendered, now tooltip 2 is open.
244
- act(() => jest.advanceTimersByTime(1))
245
+ act(() => vi.advanceTimersByTime(1))
245
246
  expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
246
247
  screen.getByText('Tooltip 2')
247
248
 
248
249
  // Validate tooltip content is not rendered anymore
249
250
  fireEvent.mouseOut(button2)
250
- act(() => jest.advanceTimersByTime(closeDelay + 1))
251
+ act(() => vi.advanceTimersByTime(closeDelay + 1))
251
252
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
252
253
 
253
254
  // Hovering again, should trigger the tooltip to show immediately, as the group is not deactivated yet
254
255
  fireEvent.mouseEnter(button2)
255
- act(() => jest.advanceTimersByTime(1))
256
+ act(() => vi.advanceTimersByTime(1))
256
257
  screen.getByText('Tooltip 2')
257
258
 
258
259
  // Validate tooltip content is not rendered anymore
259
260
  fireEvent.mouseOut(button2)
260
- act(() => jest.advanceTimersByTime(closeDelay + 1))
261
+ act(() => vi.advanceTimersByTime(closeDelay + 1))
261
262
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
262
263
 
263
264
  // Wait 200ms, the group is deactivated, hovering again should trigger the delay
264
- act(() => jest.advanceTimersByTime(200))
265
+ act(() => vi.advanceTimersByTime(200))
265
266
  fireEvent.mouseEnter(button2)
266
- act(() => jest.advanceTimersByTime(openDelay / 2))
267
+ act(() => vi.advanceTimersByTime(openDelay / 2))
267
268
  expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
268
- act(() => jest.advanceTimersByTime(openDelay / 2))
269
+ act(() => vi.advanceTimersByTime(openDelay / 2))
269
270
  screen.getByText('Tooltip 2')
270
271
  })
271
272
  })
@@ -274,7 +275,7 @@ describe('Tooltip', () => {
274
275
  it('Standalone tooltip closes immediately with Escape key', () => {
275
276
  const delay = 150
276
277
 
277
- jest.useFakeTimers()
278
+ vi.useFakeTimers()
278
279
 
279
280
  render(
280
281
  <Tooltip
@@ -290,8 +291,8 @@ describe('Tooltip', () => {
290
291
 
291
292
  // Validate tooltip content is not rendered
292
293
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
293
- fireEvent.focus(button)
294
- act(() => jest.advanceTimersByTime(delay))
294
+ act(() => fireEvent.focus(button))
295
+ act(() => vi.advanceTimersByTime(delay))
295
296
 
296
297
  // Validate tooltip content is rendered
297
298
  screen.getByText('Tooltip content')
@@ -305,7 +306,7 @@ describe('Tooltip', () => {
305
306
  it('With <TooltipDelayGroupProvider /> closes immediately with Escape key', () => {
306
307
  const delay = 150
307
308
 
308
- jest.useFakeTimers()
309
+ vi.useFakeTimers()
309
310
 
310
311
  render(
311
312
  <TooltipDelayGroupProvider delay={{close: delay}}>
@@ -323,9 +324,9 @@ describe('Tooltip', () => {
323
324
 
324
325
  // Validate tooltip content is not rendered
325
326
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
326
- fireEvent.focus(button)
327
+ act(() => fireEvent.focus(button))
327
328
 
328
- act(() => jest.advanceTimersByTime(delay))
329
+ act(() => vi.advanceTimersByTime(delay))
329
330
 
330
331
  // Validate tooltip content is rendered
331
332
  screen.getByText('Tooltip content')
@@ -352,9 +353,9 @@ describe('Tooltip', () => {
352
353
 
353
354
  // Assertion: tooltip does not exist in the document
354
355
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
355
- fireEvent.focus(button)
356
+ act(() => fireEvent.focus(button))
356
357
 
357
- act(() => jest.advanceTimersByTime(delay))
358
+ act(() => vi.advanceTimersByTime(delay))
358
359
 
359
360
  // Assertion: the tooltip is not visible
360
361
  expect(screen.queryByText('Tooltip content')).toBeVisible()
@@ -378,9 +379,9 @@ describe('Tooltip', () => {
378
379
 
379
380
  // Assertion: tooltip does not exist in the document
380
381
  expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
381
- fireEvent.focus(button)
382
+ act(() => fireEvent.focus(button))
382
383
 
383
- act(() => jest.advanceTimersByTime(delay))
384
+ act(() => vi.advanceTimersByTime(delay))
384
385
 
385
386
  // Assertion: the tooltip is not visible
386
387
  expect(screen.queryByText('Tooltip content')).toBeVisible()
@@ -393,12 +394,12 @@ describe('Tooltip', () => {
393
394
  })
394
395
 
395
396
  describe('Used defined events on <Tooltip /> child should fire correctly', () => {
396
- const handleBlur = jest.fn()
397
- const handleClick = jest.fn()
398
- const handleContextMenu = jest.fn()
399
- const handleFocus = jest.fn()
400
- const handleMouseEnter = jest.fn()
401
- const handleMouseLeave = jest.fn()
397
+ const handleBlur = vi.fn()
398
+ const handleClick = vi.fn()
399
+ const handleContextMenu = vi.fn()
400
+ const handleFocus = vi.fn()
401
+ const handleMouseEnter = vi.fn()
402
+ const handleMouseLeave = vi.fn()
402
403
 
403
404
  beforeEach(() => {
404
405
  render(
@@ -418,35 +419,35 @@ describe('Tooltip', () => {
418
419
  )
419
420
  })
420
421
 
421
- afterEach(() => jest.clearAllMocks())
422
+ afterEach(() => vi.clearAllMocks())
422
423
 
423
424
  it('should fire the onBlur event', () => {
424
- fireEvent.blur(screen.getByTestId('btn'))
425
+ act(() => fireEvent.blur(screen.getByTestId('btn')))
425
426
  expect(handleBlur).toHaveBeenCalledTimes(1)
426
427
  })
427
428
 
428
429
  it('should fire the onClick event', () => {
429
- fireEvent.click(screen.getByTestId('btn'))
430
+ act(() => fireEvent.click(screen.getByTestId('btn')))
430
431
  expect(handleClick).toHaveBeenCalledTimes(1)
431
432
  })
432
433
 
433
434
  it('should fire the onContextMenu event', () => {
434
- fireEvent.contextMenu(screen.getByTestId('btn'))
435
+ act(() => fireEvent.contextMenu(screen.getByTestId('btn')))
435
436
  expect(handleContextMenu).toHaveBeenCalledTimes(1)
436
437
  })
437
438
 
438
439
  it('should fire the onFocus event', () => {
439
- fireEvent.focus(screen.getByTestId('btn'))
440
+ act(() => fireEvent.focus(screen.getByTestId('btn')))
440
441
  expect(handleFocus).toHaveBeenCalledTimes(1)
441
442
  })
442
443
 
443
444
  it('should fire the onMouseEnter event', () => {
444
- fireEvent.mouseEnter(screen.getByTestId('btn'))
445
+ act(() => fireEvent.mouseEnter(screen.getByTestId('btn')))
445
446
  expect(handleMouseEnter).toHaveBeenCalledTimes(1)
446
447
  })
447
448
 
448
449
  it('should fire the onMouseLeave event', () => {
449
- fireEvent.mouseLeave(screen.getByTestId('btn'))
450
+ act(() => fireEvent.mouseLeave(screen.getByTestId('btn')))
450
451
  expect(handleMouseLeave).toHaveBeenCalledTimes(1)
451
452
  })
452
453
  })
@@ -8,15 +8,22 @@ import {
8
8
  shift,
9
9
  useFloating,
10
10
  } from '@floating-ui/react-dom'
11
- import {composeClassNames, RadiusStyleProps, ShadowStyleProps, tooltip} from '@sanity/ui/css'
11
+ import {
12
+ _composeClassNames,
13
+ type RadiusStyleProps,
14
+ type ShadowStyleProps,
15
+ tooltip,
16
+ } from '@sanity/ui/css'
12
17
  import type {ThemeColorCardToneKey, ThemeColorSchemeKey} from '@sanity/ui/theme'
13
18
  import {AnimatePresence} from 'framer-motion'
14
19
  import {
15
20
  cloneElement,
16
- ForwardedRef,
17
- forwardRef,
18
- ReactElement,
19
- ReactNode,
21
+ type FocusEvent,
22
+ type HTMLAttributes,
23
+ type MouseEvent as ReactMouseEvent,
24
+ type ReactElement,
25
+ type ReactNode,
26
+ type RefAttributes,
20
27
  useCallback,
21
28
  useEffect,
22
29
  useId,
@@ -28,73 +35,86 @@ import {
28
35
  } from 'react'
29
36
  import {useEffectEvent} from 'use-effect-event'
30
37
 
31
- import {useTheme_v2} from '../../_compat'
38
+ import {Z_OFFSETS} from '../../constants'
32
39
  import {useArrayProp, usePrefersReducedMotion} from '../../hooks'
33
40
  import {useDelayedState} from '../../hooks/useDelayedState'
34
41
  import {origin} from '../../middleware/origin'
35
- import type {Placement, Props} from '../../types'
36
- import {Layer, type LayerProps, Portal, useBoundaryElement, usePortal} from '../../utils'
42
+ import type {ComponentType, Placement, Props} from '../../types'
43
+ import {type LayerOwnProps, Portal, useBoundaryElement, usePortal} from '../../utils'
37
44
  import {getElementRef} from '../../utils/getElementRef'
45
+ import {CardProvider, useCard} from '../card'
38
46
  import type {Delay} from '../types'
39
47
  import {
40
48
  DEFAULT_FALLBACK_PLACEMENTS,
41
49
  DEFAULT_TOOLTIP_DISTANCE,
42
50
  DEFAULT_TOOLTIP_PADDING,
43
51
  } from './constants'
44
- import {TooltipCard} from './tooltipCard'
45
52
  import {useTooltipDelayGroup} from './tooltipDelayGroup'
46
-
47
- /**
48
- * @public
49
- */
50
- export interface TooltipProps extends Omit<LayerProps, 'as'>, RadiusStyleProps, ShadowStyleProps {
51
- /** @deprecated Use `fallbackPlacements` instead. */
52
- allowedAutoPlacements?: Placement[]
53
- /**
54
- * Whether the tooltip should animate in and out.
55
- *
56
- * @beta
57
- * @defaultValue false
58
- */
59
- animate?: boolean
60
- arrow?: boolean
61
- boundaryElement?: HTMLElement | null
62
- children?: ReactElement<Props>
63
- content?: ReactNode
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
- 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
82
- }
53
+ import {TooltipLayer} from './tooltipLayer'
54
+
55
+ /** @public */
56
+ export const DEFAULT_TOOLTIP_ELEMENT = 'div'
57
+
58
+ /** @public */
59
+ export type TooltipOwnProps = LayerOwnProps &
60
+ RadiusStyleProps &
61
+ ShadowStyleProps & {
62
+ /** @deprecated Use `fallbackPlacements` instead. */
63
+ allowedAutoPlacements?: Placement[]
64
+ /**
65
+ * Whether the tooltip should animate in and out.
66
+ *
67
+ * @beta
68
+ * @defaultValue false
69
+ */
70
+ animate?: boolean
71
+ arrow?: boolean
72
+ boundaryElement?: HTMLElement | null
73
+ children?: ReactElement<HTMLAttributes<HTMLElement> & RefAttributes<HTMLElement>>
74
+ content?: ReactNode
75
+ /**
76
+ * Adds a delay to open or close the tooltip.
77
+ *
78
+ * If only a `number` is passed, it will be used for both opening and closing.
79
+ *
80
+ * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.
81
+ *
82
+ * @public
83
+ * @defaultValue 0
84
+ */
85
+ delay?: Delay
86
+ disabled?: boolean
87
+ fallbackPlacements?: Placement[]
88
+ placement?: Placement
89
+ /** Whether or not to render the tooltip in a portal element. */
90
+ portal?: boolean | string
91
+ scheme?: ThemeColorSchemeKey
92
+ tone?: ThemeColorCardToneKey
93
+ }
94
+
95
+ /** @public */
96
+ export type TooltipElementType = 'div' | 'span' | ComponentType
97
+
98
+ /** @public */
99
+ export type TooltipProps<E extends TooltipElementType = TooltipElementType> = Props<
100
+ TooltipOwnProps,
101
+ E
102
+ >
83
103
 
84
104
  /**
85
105
  * Tooltips display information when hovering, focusing or tapping.
86
106
  *
87
107
  * @public
88
108
  */
89
- export const Tooltip = forwardRef(function Tooltip(
90
- props: Props<TooltipProps, 'div'>,
91
- forwardedRef: ForwardedRef<HTMLDivElement>,
109
+ export function Tooltip<E extends TooltipElementType = typeof DEFAULT_TOOLTIP_ELEMENT>(
110
+ props: TooltipProps<E>,
92
111
  ) {
93
112
  const boundaryElementContext = useBoundaryElement()
94
- const {layer} = useTheme_v2()
113
+
95
114
  const {
96
115
  animate: _animate = false,
97
116
  arrow: arrowProp = false,
117
+ as = DEFAULT_TOOLTIP_ELEMENT,
98
118
  boundaryElement = boundaryElementContext?.element,
99
119
  children: childProp,
100
120
  className,
@@ -107,12 +127,15 @@ export const Tooltip = forwardRef(function Tooltip(
107
127
  placement: placementProp = 'bottom',
108
128
  portal: portalProp,
109
129
  radius = 3,
130
+ ref: forwardedRef,
110
131
  scheme,
111
132
  shadow = 2,
112
- zOffset = layer.tooltip.zOffset,
113
- tone,
114
- ...restProps
115
- } = props
133
+ zOffset = Z_OFFSETS.tooltip,
134
+ tone = 'inherit',
135
+ ...rest
136
+ } = props as TooltipProps<typeof DEFAULT_TOOLTIP_ELEMENT>
137
+
138
+ const card = useCard()
116
139
  const prefersReducedMotion = usePrefersReducedMotion()
117
140
  const animate = prefersReducedMotion ? false : _animate
118
141
  const fallbackPlacements = useArrayProp(fallbackPlacementsProp)
@@ -172,6 +195,7 @@ export const Tooltip = forwardRef(function Tooltip(
172
195
  placement: placementProp,
173
196
  whileElementsMounted: autoUpdate,
174
197
  elements: {reference: referenceElement},
198
+ transform: false,
175
199
  })
176
200
 
177
201
  const arrowX = middlewareData.arrow?.x
@@ -229,42 +253,42 @@ export const Tooltip = forwardRef(function Tooltip(
229
253
  )
230
254
 
231
255
  const handleBlur = useCallback(
232
- (e: FocusEvent) => {
256
+ (e: FocusEvent<HTMLElement>) => {
233
257
  handleIsOpenChange(false)
234
258
  childProp?.props?.onBlur?.(e)
235
259
  },
236
260
  [childProp?.props, handleIsOpenChange],
237
261
  )
238
262
  const handleClick = useCallback(
239
- (e: MouseEvent) => {
263
+ (e: ReactMouseEvent<HTMLElement>) => {
240
264
  handleIsOpenChange(false, true)
241
265
  childProp?.props.onClick?.(e)
242
266
  },
243
267
  [childProp?.props, handleIsOpenChange],
244
268
  )
245
269
  const handleContextMenu = useCallback(
246
- (e: MouseEvent) => {
270
+ (e: ReactMouseEvent<HTMLElement>) => {
247
271
  handleIsOpenChange(false, true)
248
272
  childProp?.props.onContextMenu?.(e)
249
273
  },
250
274
  [childProp?.props, handleIsOpenChange],
251
275
  )
252
276
  const handleFocus = useCallback(
253
- (e: FocusEvent) => {
277
+ (e: FocusEvent<HTMLElement>) => {
254
278
  handleIsOpenChange(true)
255
279
  childProp?.props?.onFocus?.(e)
256
280
  },
257
281
  [childProp?.props, handleIsOpenChange],
258
282
  )
259
283
  const handleMouseEnter = useCallback(
260
- (e: MouseEvent) => {
284
+ (e: ReactMouseEvent<HTMLElement>) => {
261
285
  handleIsOpenChange(true)
262
286
  childProp?.props?.onMouseEnter?.(e)
263
287
  },
264
288
  [childProp?.props, handleIsOpenChange],
265
289
  )
266
290
  const handleMouseLeave = useCallback(
267
- (e: MouseEvent) => {
291
+ (e: ReactMouseEvent<HTMLElement>) => {
268
292
  handleIsOpenChange(false)
269
293
  childProp?.props?.onMouseLeave?.(e)
270
294
  },
@@ -363,44 +387,45 @@ export const Tooltip = forwardRef(function Tooltip(
363
387
  if (disabled) return child
364
388
 
365
389
  const node = (
366
- <Layer
390
+ <TooltipLayer
367
391
  data-ui="Tooltip"
368
- // {...restProps}
369
- className={composeClassNames(className, tooltip())}
392
+ {...rest}
393
+ animate={animate}
394
+ arrow={arrowProp}
395
+ arrowRef={setArrow}
396
+ arrowX={arrowX}
397
+ arrowY={arrowY}
398
+ as={as}
399
+ className={_composeClassNames(className, tooltip())}
400
+ originX={originX}
401
+ originY={originY}
402
+ padding={padding}
403
+ placement={placement}
404
+ radius={radius}
370
405
  ref={setFloating}
406
+ scheme={scheme}
407
+ shadow={shadow}
371
408
  style={{
372
409
  ...floatingStyles,
373
410
  maxWidth: tooltipMaxWidth > 0 ? `${tooltipMaxWidth}px` : undefined,
374
411
  }}
412
+ tone={tone}
375
413
  zOffset={zOffset}
376
414
  >
377
- <TooltipCard
378
- {...restProps}
379
- animate={animate}
380
- arrow={arrowProp}
381
- arrowRef={setArrow}
382
- arrowX={arrowX}
383
- arrowY={arrowY}
384
- originX={originX}
385
- originY={originY}
386
- padding={padding}
387
- placement={placement}
388
- radius={radius}
389
- ref={setFloating}
390
- scheme={scheme}
391
- shadow={shadow}
392
- tone={tone}
393
- >
394
- {content}
395
- </TooltipCard>
396
- </Layer>
415
+ {content}
416
+ </TooltipLayer>
397
417
  )
398
418
 
399
419
  const children =
400
420
  showTooltip &&
401
421
  (portalProp ? (
402
422
  <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>
403
- {node}
423
+ <CardProvider
424
+ tone={tone === 'inherit' ? (card?.tone ?? 'default') : tone}
425
+ scheme={scheme ?? 'light'}
426
+ >
427
+ {node}
428
+ </CardProvider>
404
429
  </Portal>
405
430
  ) : (
406
431
  node
@@ -415,9 +440,7 @@ export const Tooltip = forwardRef(function Tooltip(
415
440
  {child}
416
441
  </>
417
442
  )
418
- })
419
-
420
- Tooltip.displayName = 'ForwardRef(Tooltip)'
443
+ }
421
444
 
422
445
  /**
423
446
  * As `useEffectEvent` should never be passed to other components or hooks, this custom hook groups together the `useEffectEvent` and the `useEffect` hook using it.
@@ -465,3 +488,5 @@ function useCloseOnMouseLeave({
465
488
  return () => window.removeEventListener('mousemove', handleMouseMove)
466
489
  }, [isInsideGroup, showTooltip])
467
490
  }
491
+
492
+ Tooltip.displayName = 'Tooltip'
@@ -1,5 +1,5 @@
1
1
  import {createGlobalScopedContext} from '../../../lib/createGlobalScopedContext'
2
- import {TooltipDelayGroupContextValue} from './types'
2
+ import type {TooltipDelayGroupContextValue} from './types'
3
3
 
4
4
  /**
5
5
  * @beta
@@ -1,9 +1,9 @@
1
- import {ReactElement, ReactNode, useMemo} from 'react'
1
+ import {type ReactElement, type ReactNode, useMemo} from 'react'
2
2
 
3
3
  import {useDelayedState} from '../../../hooks/useDelayedState'
4
- import {Delay} from '../../types'
4
+ import type {Delay} from '../../types'
5
5
  import {TooltipDelayGroupContext} from './tooltipDelayGroupContext'
6
- import {TooltipDelayGroupContextValue} from './types'
6
+ import type {TooltipDelayGroupContextValue} from './types'
7
7
 
8
8
  /**
9
9
  * @public