@sanity/ui 3.0.0-static.17 → 3.0.0-static.19

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 (542) hide show
  1. package/dist/_chunks-cjs/_visual-editing.cjs +138 -137
  2. package/dist/_chunks-cjs/_visual-editing.cjs.map +1 -1
  3. package/dist/_chunks-cjs/buildCommand.cjs +21 -22
  4. package/dist/_chunks-cjs/buildCommand.cjs.map +1 -1
  5. package/dist/_chunks-es/_visual-editing.js +139 -138
  6. package/dist/_chunks-es/_visual-editing.js.map +1 -1
  7. package/dist/_visual-editing.d.cts +12 -22
  8. package/dist/_visual-editing.d.ts +12 -22
  9. package/dist/cli.cjs +1 -1
  10. package/dist/css.cjs +1589 -2016
  11. package/dist/css.cjs.map +1 -1
  12. package/dist/css.d.cts +9427 -874
  13. package/dist/css.d.ts +9427 -874
  14. package/dist/css.js +1591 -2018
  15. package/dist/css.js.map +1 -1
  16. package/dist/index.cjs +28 -40
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +26 -23
  19. package/dist/index.d.ts +26 -23
  20. package/dist/index.js +30 -42
  21. package/dist/index.js.map +1 -1
  22. package/dist/theme.cjs +2749 -2756
  23. package/dist/theme.cjs.map +1 -1
  24. package/dist/theme.d.cts +242 -161
  25. package/dist/theme.d.ts +242 -161
  26. package/dist/theme.js +2750 -2757
  27. package/dist/theme.js.map +1 -1
  28. package/dist/ui-system.css +15719 -16097
  29. package/dist/ui-system.min.css +1 -1
  30. package/dist/ui-theme.css +850 -4568
  31. package/dist/ui-theme.min.css +1 -1
  32. package/dist/ui.css +16569 -20772
  33. package/dist/ui.min.css +1 -1
  34. package/package.json +10 -15
  35. package/src/cli/buildCommand.ts +13 -30
  36. package/src/core/StyleTags.tsx +4 -12
  37. package/src/core/_compat/styles/_responsive.ts +1 -1
  38. package/src/core/_compat/theme/theme.test.tsx +4 -5
  39. package/src/core/_compat/theme/themeColorProvider.tsx +2 -2
  40. package/src/core/_compat/theme/themeContext.ts +2 -2
  41. package/src/core/_compat/theme/themeProvider.tsx +2 -2
  42. package/src/core/_compat/theme/types.ts +1 -1
  43. package/src/core/_compat/theme/useRootTheme.ts +1 -1
  44. package/src/core/_compat/theme/useTheme.ts +1 -1
  45. package/src/core/components/autocomplete/__workshop__/async.tsx +2 -2
  46. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +2 -2
  47. package/src/core/components/autocomplete/__workshop__/custom.tsx +11 -11
  48. package/src/core/components/autocomplete/__workshop__/example.tsx +6 -7
  49. package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +2 -2
  50. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +1 -1
  51. package/src/core/components/autocomplete/autocomplete.tsx +5 -5
  52. package/src/core/components/autocomplete/autocompleteOption.tsx +1 -1
  53. package/src/core/components/autocomplete/autocompleteReducer.ts +1 -1
  54. package/src/core/components/autocomplete/constants.ts +1 -1
  55. package/src/core/components/autocomplete/types.ts +1 -1
  56. package/src/core/components/breadcrumbs/__workshop__/example.tsx +1 -1
  57. package/src/core/components/breadcrumbs/breadcrumbs.tsx +7 -7
  58. package/src/core/components/dialog/__workshop__/activate.tsx +4 -4
  59. package/src/core/components/dialog/__workshop__/position.tsx +1 -1
  60. package/src/core/components/dialog/__workshop__/props.tsx +1 -1
  61. package/src/core/components/dialog/__workshop__/wrapped.tsx +2 -2
  62. package/src/core/components/dialog/dialog.tsx +15 -8
  63. package/src/core/components/dialog/dialogCard.tsx +18 -3
  64. package/src/core/components/dialog/dialogContext.ts +1 -1
  65. package/src/core/components/dialog/dialogProvider.tsx +3 -3
  66. package/src/core/components/dialog/useDialog.ts +1 -1
  67. package/src/core/components/hotkeys/hotkeys.tsx +4 -4
  68. package/src/core/components/menu/__workshop__/closableMenuButton.tsx +5 -4
  69. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +2 -2
  70. package/src/core/components/menu/__workshop__/customMenuItem.tsx +3 -3
  71. package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +1 -1
  72. package/src/core/components/menu/__workshop__/groups.tsx +2 -2
  73. package/src/core/components/menu/__workshop__/menuButton.tsx +1 -1
  74. package/src/core/components/menu/__workshop__/menuGroupRight.tsx +1 -1
  75. package/src/core/components/menu/__workshop__/nestedMenu.tsx +1 -1
  76. package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +13 -4
  77. package/src/core/components/menu/__workshop__/selectedItem.tsx +2 -2
  78. package/src/core/components/menu/__workshop__/withoutArrow.tsx +1 -1
  79. package/src/core/components/menu/menu.test.tsx +6 -7
  80. package/src/core/components/menu/menu.tsx +2 -2
  81. package/src/core/components/menu/menuButton.tsx +9 -9
  82. package/src/core/components/menu/menuContext.ts +1 -1
  83. package/src/core/components/menu/menuDivider.tsx +3 -3
  84. package/src/core/components/menu/menuGroup.tsx +9 -9
  85. package/src/core/components/menu/menuItem.tsx +9 -6
  86. package/src/core/components/menu/useMenu.ts +1 -1
  87. package/src/core/components/menu/useMenuController.ts +4 -4
  88. package/src/core/components/skeleton/__workshop__/delay.tsx +1 -1
  89. package/src/core/components/skeleton/__workshop__/skeleton.tsx +2 -2
  90. package/src/core/components/skeleton/codeSkeleton.tsx +5 -5
  91. package/src/core/components/skeleton/headingSkeleton.tsx +5 -5
  92. package/src/core/components/skeleton/labelSkeleton.tsx +5 -5
  93. package/src/core/components/skeleton/skeleton.tsx +4 -4
  94. package/src/core/components/skeleton/textSkeleton.tsx +5 -5
  95. package/src/core/components/tab/__workshop__/example.tsx +1 -1
  96. package/src/core/components/tab/tab.tsx +7 -7
  97. package/src/core/components/tab/tabList.tsx +14 -7
  98. package/src/core/components/tab/tabPanel.tsx +10 -7
  99. package/src/core/components/toast/__workshop__/hook.tsx +1 -1
  100. package/src/core/components/toast/toast.test.tsx +5 -5
  101. package/src/core/components/toast/toast.tsx +6 -7
  102. package/src/core/components/toast/toastContext.ts +1 -1
  103. package/src/core/components/toast/toastLayer.tsx +2 -2
  104. package/src/core/components/toast/toastProvider.tsx +1 -1
  105. package/src/core/components/toast/types.ts +1 -1
  106. package/src/core/components/toast/useToast.ts +1 -1
  107. package/src/core/components/tree/__workshop__/basic.perf.ts +1 -1
  108. package/src/core/components/tree/__workshop__/basic.tsx +1 -1
  109. package/src/core/components/tree/__workshop__/tabFromElement.tsx +1 -1
  110. package/src/core/components/tree/helpers.ts +1 -1
  111. package/src/core/components/tree/tree.tsx +6 -6
  112. package/src/core/components/tree/treeContext.ts +1 -1
  113. package/src/core/components/tree/treeGroup.tsx +2 -2
  114. package/src/core/components/tree/treeItem.tsx +15 -15
  115. package/src/core/components/tree/types.ts +2 -2
  116. package/src/core/components/tree/useTree.ts +1 -1
  117. package/src/core/hooks/useClickOutside.test.tsx +15 -16
  118. package/src/core/hooks/useClickOutsideEvent.test.tsx +4 -5
  119. package/src/core/hooks/useDelayed.test.ts +6 -7
  120. package/src/core/hooks/useDelayedState.ts +1 -1
  121. package/src/core/hooks/useElementRect/__workshop__/example.tsx +1 -1
  122. package/src/core/hooks/useElementSize.ts +1 -1
  123. package/src/core/hooks/useForwardedRef.ts +1 -1
  124. package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +1 -1
  125. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +3 -18
  126. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +10 -10
  127. package/src/core/hooks/usePrefersDark.hydration.test.tsx +4 -4
  128. package/src/core/hooks/usePrefersDark.test.tsx +1 -0
  129. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +4 -4
  130. package/src/core/hooks/usePrefersReducedMotion.test.tsx +1 -0
  131. package/src/core/middleware/origin.ts +1 -1
  132. package/src/core/primitives/_selectable/selectable.tsx +3 -3
  133. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +1 -1
  134. package/src/core/primitives/avatar/avatar.tsx +6 -6
  135. package/src/core/primitives/avatar/avatarCounter.tsx +3 -3
  136. package/src/core/primitives/avatar/avatarStack.tsx +7 -7
  137. package/src/core/primitives/avatar/types.ts +1 -3
  138. package/src/core/primitives/badge/badge.test.tsx +2 -3
  139. package/src/core/primitives/badge/badge.tsx +3 -3
  140. package/src/core/primitives/box/__workshop__/responsive.tsx +2 -1
  141. package/src/core/primitives/box/box.tsx +4 -2
  142. package/src/core/primitives/button/__workshop__/custom.tsx +2 -2
  143. package/src/core/primitives/button/__workshop__/customIcons.tsx +3 -3
  144. package/src/core/primitives/button/__workshop__/disabled.tsx +9 -9
  145. package/src/core/primitives/button/__workshop__/props.tsx +3 -4
  146. package/src/core/primitives/button/__workshop__/stacked.tsx +4 -5
  147. package/src/core/primitives/button/button.test.tsx +2 -3
  148. package/src/core/primitives/button/button.tsx +11 -6
  149. package/src/core/primitives/card/__workshop__/asButton.tsx +16 -7
  150. package/src/core/primitives/card/__workshop__/checkered.tsx +1 -1
  151. package/src/core/primitives/card/__workshop__/index.ts +1 -1
  152. package/src/core/primitives/card/__workshop__/interactive.tsx +1 -1
  153. package/src/core/primitives/card/__workshop__/listNavigation.tsx +3 -3
  154. package/src/core/primitives/card/__workshop__/props.tsx +3 -3
  155. package/src/core/primitives/card/__workshop__/selected.tsx +2 -2
  156. package/src/core/primitives/card/__workshop__/{allTones.tsx → tones.tsx} +3 -3
  157. package/src/core/primitives/card/card.tsx +4 -4
  158. package/src/core/primitives/card/cardContext.ts +2 -2
  159. package/src/core/primitives/card/cardProvider.tsx +3 -3
  160. package/src/core/primitives/card/types.ts +2 -2
  161. package/src/core/primitives/card/useCard.ts +2 -1
  162. package/src/core/primitives/checkbox/__workshop__/props.tsx +2 -0
  163. package/src/core/primitives/checkbox/__workshop__/tones.tsx +11 -20
  164. package/src/core/primitives/checkbox/checkbox.tsx +5 -7
  165. package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +1 -1
  166. package/src/core/primitives/code/code.tsx +3 -3
  167. package/src/core/primitives/container/container.tsx +4 -4
  168. package/src/core/primitives/flex/flex.tsx +2 -2
  169. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +1 -1
  170. package/src/core/primitives/heading/heading.tsx +2 -2
  171. package/src/core/primitives/inline/__workshop__/plain.tsx +1 -1
  172. package/src/core/primitives/inline/inline.tsx +2 -2
  173. package/src/core/primitives/inline/types.ts +1 -0
  174. package/src/core/primitives/kbd/kbd.tsx +5 -5
  175. package/src/core/primitives/label/label.tsx +5 -5
  176. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +2 -2
  177. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +3 -4
  178. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +4 -4
  179. package/src/core/primitives/popover/__workshop__/TestStory.tsx +2 -3
  180. package/src/core/primitives/popover/constants.ts +1 -1
  181. package/src/core/primitives/popover/floating-ui/size.ts +2 -2
  182. package/src/core/primitives/popover/helpers.ts +1 -1
  183. package/src/core/primitives/popover/popover.tsx +1 -1
  184. package/src/core/primitives/popover/popoverLayer.tsx +4 -4
  185. package/src/core/primitives/popover/types.ts +3 -2
  186. package/src/core/primitives/radio/__workshop__/example.tsx +1 -1
  187. package/src/core/primitives/radio/radio.tsx +5 -5
  188. package/src/core/primitives/select/__workshop__/plain.tsx +15 -3
  189. package/src/core/primitives/select/__workshop__/readOnly.tsx +1 -1
  190. package/src/core/primitives/select/select.tsx +4 -10
  191. package/src/core/primitives/spinner/__workshop__/Props.tsx +1 -2
  192. package/src/core/primitives/spinner/animatedSpinnerIcon.tsx +3 -3
  193. package/src/core/primitives/spinner/spinner.tsx +3 -3
  194. package/src/core/primitives/stack/__workshop__/plain.tsx +1 -1
  195. package/src/core/primitives/stack/stack.tsx +5 -5
  196. package/src/core/primitives/switch/switch.tsx +3 -3
  197. package/src/core/primitives/text/__workshop__/colored.tsx +5 -5
  198. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +1 -1
  199. package/src/core/primitives/text/text.tsx +6 -6
  200. package/src/core/primitives/textArea/__workshop__/plain.tsx +35 -23
  201. package/src/core/primitives/textArea/textArea.tsx +14 -5
  202. package/src/core/primitives/textInput/__workshop__/customValidity.tsx +1 -1
  203. package/src/core/primitives/textInput/__workshop__/plain.tsx +9 -15
  204. package/src/core/primitives/textInput/__workshop__/states.tsx +4 -4
  205. package/src/core/primitives/textInput/__workshop__/tones.tsx +2 -2
  206. package/src/core/primitives/textInput/textInput.tsx +13 -11
  207. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +2 -2
  208. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +1 -1
  209. package/src/core/primitives/tooltip/__workshop__/props.tsx +5 -4
  210. package/src/core/primitives/tooltip/constants.ts +1 -1
  211. package/src/core/primitives/tooltip/tooltip.test.tsx +61 -60
  212. package/src/core/primitives/tooltip/tooltip.tsx +11 -6
  213. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +1 -1
  214. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +3 -3
  215. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +1 -1
  216. package/src/core/primitives/tooltip/tooltipLayer.tsx +4 -4
  217. package/src/core/primitives/types.ts +15 -24
  218. package/src/core/types/badge.ts +1 -1
  219. package/src/core/types/button.ts +1 -1
  220. package/src/core/types/card.ts +1 -1
  221. package/src/core/types/selectable.ts +1 -1
  222. package/src/core/utils/arrow/arrow.tsx +5 -14
  223. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +5 -5
  224. package/src/core/utils/boundaryElement/boundaryElementContext.ts +1 -1
  225. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +2 -2
  226. package/src/core/utils/boundaryElement/useBoundaryElement.ts +1 -1
  227. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +15 -8
  228. package/src/core/utils/elementQuery/elementQuery.tsx +1 -1
  229. package/src/core/utils/errorBoundary.tsx +4 -4
  230. package/src/core/utils/layer/__workshop__/multipleRoots.tsx +5 -5
  231. package/src/core/utils/layer/__workshop__/nested.tsx +3 -3
  232. package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +9 -5
  233. package/src/core/utils/layer/getLayerContext.test.ts +3 -1
  234. package/src/core/utils/layer/getLayerContext.ts +1 -1
  235. package/src/core/utils/layer/layer.test.tsx +5 -5
  236. package/src/core/utils/layer/layer.tsx +2 -2
  237. package/src/core/utils/layer/layerCard.tsx +3 -3
  238. package/src/core/utils/layer/layerContext.ts +1 -1
  239. package/src/core/utils/layer/layerProvider.tsx +10 -2
  240. package/src/core/utils/layer/useLayer.ts +1 -1
  241. package/src/core/utils/portal/__workshop__/named.tsx +3 -3
  242. package/src/core/utils/portal/portal.test.tsx +5 -5
  243. package/src/core/utils/portal/portal.tsx +3 -2
  244. package/src/core/utils/portal/portalContext.ts +1 -1
  245. package/src/core/utils/portal/portalProvider.tsx +2 -2
  246. package/src/core/utils/portal/usePortal.ts +1 -1
  247. package/src/core/utils/srOnly/srOnly.tsx +3 -3
  248. package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +1 -1
  249. package/src/core/utils/virtualList/virtualList.tsx +3 -3
  250. package/src/css/_assign.ts +3 -0
  251. package/src/css/_compileStyle.ts +12 -4
  252. package/src/css/_compileTheme.ts +10 -13
  253. package/src/css/_composeClassNames.ts +12 -0
  254. package/src/css/_fromEntries.ts +3 -0
  255. package/src/css/_getClassNames.ts +9 -0
  256. package/src/css/_hash.ts +9 -0
  257. package/src/css/_mergeStyles.ts +1 -1
  258. package/src/css/_resp.ts +6 -12
  259. package/src/css/_scopeClassName.ts +9 -0
  260. package/src/css/_scopeClassNames.ts +12 -0
  261. package/src/css/_system.style.ts +2 -0
  262. package/src/css/aspects/border/border.style.ts +2 -2
  263. package/src/css/aspects/border/border.ts +3 -3
  264. package/src/css/aspects/border/types.ts +1 -1
  265. package/src/css/aspects/boxSizing/boxSizing.style.ts +10 -0
  266. package/src/css/aspects/boxSizing/boxSizing.ts +8 -0
  267. package/src/css/aspects/boxSizing/index.ts +2 -0
  268. package/src/css/aspects/boxSizing/types.ts +9 -0
  269. package/src/css/aspects/display/display.style.ts +8 -8
  270. package/src/css/aspects/display/display.ts +3 -3
  271. package/src/css/aspects/display/types.ts +1 -1
  272. package/src/css/aspects/flex/flex.ts +3 -3
  273. package/src/css/aspects/flex/types.ts +1 -1
  274. package/src/css/aspects/flexItem/flex.style.ts +1 -1
  275. package/src/css/aspects/flexItem/flexItem.ts +3 -3
  276. package/src/css/aspects/flexItem/types.ts +1 -1
  277. package/src/css/aspects/font/font.style.ts +33 -22
  278. package/src/css/aspects/font/font.ts +3 -3
  279. package/src/css/aspects/font/types.ts +1 -1
  280. package/src/css/aspects/gap/gap.style.ts +2 -2
  281. package/src/css/aspects/gap/gap.ts +3 -3
  282. package/src/css/aspects/gap/types.ts +2 -2
  283. package/src/css/aspects/grid/grid.ts +3 -3
  284. package/src/css/aspects/grid/types.ts +1 -1
  285. package/src/css/aspects/gridItem/gridItem.ts +3 -3
  286. package/src/css/aspects/gridItem/types.ts +1 -1
  287. package/src/css/aspects/height/height.ts +3 -3
  288. package/src/css/aspects/index.ts +1 -0
  289. package/src/css/aspects/inset/inset.ts +3 -3
  290. package/src/css/aspects/inset/types.ts +1 -1
  291. package/src/css/aspects/margin/margin.style.ts +10 -10
  292. package/src/css/aspects/margin/margin.ts +3 -3
  293. package/src/css/aspects/margin/types.ts +1 -1
  294. package/src/css/aspects/maxWidth/maxWidth.style.ts +1 -1
  295. package/src/css/aspects/maxWidth/maxWidth.ts +4 -3
  296. package/src/css/aspects/maxWidth/types.ts +2 -2
  297. package/src/css/aspects/minWidth/minWidth.ts +4 -3
  298. package/src/css/aspects/minWidth/types.ts +1 -1
  299. package/src/css/aspects/overflow/overflow.ts +3 -3
  300. package/src/css/aspects/overflow/types.ts +1 -1
  301. package/src/css/aspects/padding/padding.style.ts +2 -5
  302. package/src/css/aspects/padding/padding.ts +3 -3
  303. package/src/css/aspects/padding/types.ts +2 -2
  304. package/src/css/aspects/pointerEvents/pointerEvents.ts +3 -3
  305. package/src/css/aspects/position/position.ts +3 -3
  306. package/src/css/aspects/position/types.ts +1 -1
  307. package/src/css/aspects/radius/radius.style.ts +1 -1
  308. package/src/css/aspects/radius/radius.ts +3 -3
  309. package/src/css/aspects/radius/types.ts +2 -2
  310. package/src/css/aspects/shadow/shadow.style.ts +7 -7
  311. package/src/css/aspects/shadow/shadow.ts +3 -3
  312. package/src/css/aspects/shadow/types.ts +2 -2
  313. package/src/css/aspects/textAlign/textAlign.style.ts +1 -1
  314. package/src/css/aspects/textAlign/textAlign.ts +3 -3
  315. package/src/css/aspects/textOverflow/textOverflow.ts +3 -3
  316. package/src/css/aspects/width/types.ts +2 -2
  317. package/src/css/aspects/width/width.style.ts +1 -1
  318. package/src/css/aspects/width/width.ts +4 -3
  319. package/src/css/components/breadcrumbs/breadcrumbs.style.ts +1 -1
  320. package/src/css/components/breadcrumbs/breadcrumbs.ts +2 -2
  321. package/src/css/components/dialog/dialog.style.ts +14 -16
  322. package/src/css/components/dialog/dialog.ts +9 -8
  323. package/src/css/components/menu/menu.style.ts +2 -2
  324. package/src/css/components/menu/menu.ts +3 -3
  325. package/src/css/components/skeleton/skeleton.style.ts +24 -17
  326. package/src/css/components/skeleton/skeleton.ts +8 -7
  327. package/src/css/components/skeleton/types.ts +4 -6
  328. package/src/css/components/toast/toast.style.ts +1 -1
  329. package/src/css/components/toast/toast.ts +6 -6
  330. package/src/css/components/tree/tree.style.ts +7 -23
  331. package/src/css/components/tree/tree.ts +2 -2
  332. package/src/css/constants.ts +1 -3
  333. package/src/css/index.ts +3 -5
  334. package/src/css/prefix/constants.ts +6 -0
  335. package/src/css/prefix/types.ts +1 -0
  336. package/src/css/primitives/_arrow/_arrow.style.ts +11 -13
  337. package/src/css/primitives/_arrow/_arrow.ts +5 -5
  338. package/src/css/primitives/_input/_input.style.ts +171 -75
  339. package/src/css/primitives/_input/input.ts +13 -10
  340. package/src/css/primitives/_input/types.ts +3 -3
  341. package/src/css/primitives/_selectable/_selectable.style.ts +5 -6
  342. package/src/css/primitives/_selectable/selectable.ts +4 -3
  343. package/src/css/primitives/_selectable/types.ts +2 -2
  344. package/src/css/primitives/avatar/avatar.style.ts +38 -39
  345. package/src/css/primitives/avatar/avatar.ts +8 -8
  346. package/src/css/primitives/avatar/types.ts +3 -3
  347. package/src/css/primitives/badge/badge.style.ts +2 -3
  348. package/src/css/primitives/badge/badge.ts +7 -3
  349. package/src/css/primitives/badge/types.ts +2 -2
  350. package/src/css/primitives/box/box.style.ts +5 -15
  351. package/src/css/primitives/box/box.ts +7 -9
  352. package/src/css/primitives/box/types.ts +3 -6
  353. package/src/css/primitives/button/button.style.ts +189 -162
  354. package/src/css/primitives/button/button.ts +11 -4
  355. package/src/css/primitives/button/types.ts +1 -1
  356. package/src/css/primitives/card/card.style.ts +102 -68
  357. package/src/css/primitives/card/card.ts +5 -7
  358. package/src/css/primitives/card/types.ts +2 -2
  359. package/src/css/primitives/checkbox/checkbox.style.ts +125 -101
  360. package/src/css/primitives/checkbox/checkbox.ts +3 -3
  361. package/src/css/primitives/code/code.style.ts +24 -26
  362. package/src/css/primitives/code/code.ts +7 -3
  363. package/src/css/primitives/code/types.ts +2 -2
  364. package/src/css/primitives/container/container.style.ts +1 -1
  365. package/src/css/primitives/container/container.ts +4 -3
  366. package/src/css/primitives/container/types.ts +2 -2
  367. package/src/css/primitives/heading/heading.style.ts +31 -23
  368. package/src/css/primitives/heading/heading.ts +10 -8
  369. package/src/css/primitives/heading/types.ts +3 -2
  370. package/src/css/primitives/kbd/kbd.style.ts +7 -7
  371. package/src/css/primitives/kbd/kbd.ts +4 -3
  372. package/src/css/primitives/kbd/types.ts +1 -1
  373. package/src/css/primitives/label/label.style.ts +27 -24
  374. package/src/css/primitives/label/label.ts +5 -8
  375. package/src/css/primitives/label/types.ts +4 -3
  376. package/src/css/primitives/popover/popover.style.ts +6 -2
  377. package/src/css/primitives/popover/popover.ts +3 -3
  378. package/src/css/primitives/radio/radio.style.ts +37 -76
  379. package/src/css/primitives/radio/radio.ts +2 -2
  380. package/src/css/primitives/select/select.style.ts +3 -3
  381. package/src/css/primitives/select/select.ts +5 -5
  382. package/src/css/primitives/select/types.ts +1 -1
  383. package/src/css/primitives/spinner/spinner.style.ts +1 -1
  384. package/src/css/primitives/spinner/spinner.ts +3 -3
  385. package/src/css/primitives/stack/stack.style.ts +6 -2
  386. package/src/css/primitives/stack/stack.ts +2 -2
  387. package/src/css/primitives/switch/switch.style.ts +47 -39
  388. package/src/css/primitives/switch/switch.ts +6 -6
  389. package/src/css/primitives/text/text.style.ts +28 -23
  390. package/src/css/primitives/text/text.ts +5 -8
  391. package/src/css/primitives/text/types.ts +2 -2
  392. package/src/css/primitives/textArea/textArea.style.ts +6 -2
  393. package/src/css/primitives/textArea/textArea.ts +4 -4
  394. package/src/css/primitives/textArea/types.ts +1 -1
  395. package/src/css/primitives/textInput/textInput.style.ts +23 -17
  396. package/src/css/primitives/textInput/textInput.ts +4 -4
  397. package/src/css/primitives/textInput/types.ts +2 -8
  398. package/src/css/primitives/token/token.style.ts +4 -4
  399. package/src/css/primitives/tooltip/tooltip.style.ts +5 -4
  400. package/src/css/primitives/tooltip/tooltip.ts +3 -3
  401. package/src/css/renderColor.ts +31 -0
  402. package/src/css/theme/index.ts +14 -0
  403. package/src/css/theme/lib/contract/buildVarContract.ts +76 -0
  404. package/src/css/theme/lib/contract/index.ts +2 -0
  405. package/src/css/theme/lib/contract/types.ts +15 -0
  406. package/src/css/theme/resolveTheme.ts +852 -0
  407. package/src/css/types.ts +26 -910
  408. package/src/css/utils/srOnly/srOnly.style.ts +1 -1
  409. package/src/css/utils/srOnly/srOnly.ts +3 -3
  410. package/src/theme/getScopedTheme.ts +4 -4
  411. package/src/theme/index.ts +0 -5
  412. package/src/theme/types.ts +4 -4
  413. package/src/theme/v0/color/_generic.ts +1 -1
  414. package/src/theme/v0/color/button.ts +1 -1
  415. package/src/theme/v0/color/card.ts +1 -1
  416. package/src/theme/v0/color/color.ts +11 -11
  417. package/src/theme/v0/color/input.ts +1 -1
  418. package/src/theme/v0/color/muted.ts +1 -1
  419. package/src/theme/v0/color/selectable.ts +1 -1
  420. package/src/theme/v0/color/solid.ts +1 -1
  421. package/src/theme/v0/color/spot.ts +1 -1
  422. package/src/theme/v0/styles.ts +1 -1
  423. package/src/theme/v0/theme.ts +7 -7
  424. package/src/theme/v2/avatar.ts +1 -1
  425. package/src/theme/{build → v2/build}/_deprecated/color/_selectable/createSelectableTones.ts +3 -3
  426. package/src/theme/{build → v2/build}/_deprecated/color/_solid/createSolidTones.ts +2 -2
  427. package/src/theme/{build → v2/build}/_deprecated/color/button/createButtonModes.ts +7 -2
  428. package/src/theme/{build → v2/build}/_deprecated/color/button/createButtonTones.ts +4 -4
  429. package/src/theme/{build → v2/build}/_deprecated/color/card/createCardStates.ts +3 -3
  430. package/src/theme/{build → v2/build}/_deprecated/color/color.test.ts +1 -1
  431. package/src/theme/{build → v2/build}/_deprecated/color/defaults.ts +1 -1
  432. package/src/theme/{build → v2/build}/_deprecated/color/factory.ts +3 -3
  433. package/src/theme/{build → v2/build}/_deprecated/color/input/createInputModes.ts +7 -2
  434. package/src/theme/{build → v2/build}/_deprecated/color/muted/createMuted.ts +2 -2
  435. package/src/theme/{build → v2/build}/_deprecated/color/spot/createSpot.ts +2 -2
  436. package/src/theme/{build → v2/build}/buildColorTheme.test.ts +3 -1
  437. package/src/theme/{build → v2/build}/buildColorTheme.ts +24 -24
  438. package/src/theme/{build → v2/build}/buildTheme.test.ts +10 -8
  439. package/src/theme/{build → v2/build}/buildTheme.ts +4 -4
  440. package/src/theme/{build → v2/build}/colorToken/colorToken.ts +2 -2
  441. package/src/theme/{build → v2/build}/colorToken/compileColorToken.ts +1 -1
  442. package/src/theme/{build → v2/build}/colorToken/types.ts +2 -2
  443. package/src/theme/{build → v2/build}/lib/color-fns/blend/mix.ts +1 -1
  444. package/src/theme/{build → v2/build}/lib/color-fns/blend/multiply.ts +1 -1
  445. package/src/theme/{build → v2/build}/lib/color-fns/blend/screen.ts +1 -1
  446. package/src/theme/{build → v2/build}/lib/color-fns/color-fns.test.ts +1 -1
  447. package/src/theme/{build → v2/build}/lib/color-fns/contrastRatio.ts +5 -2
  448. package/src/theme/{build → v2/build}/lib/color-fns/convert.ts +1 -1
  449. package/src/theme/{build → v2/build}/lib/color-fns/parse.ts +1 -1
  450. package/src/theme/{build → v2/build}/mixThemeColor.test.ts +2 -0
  451. package/src/theme/{build → v2/build}/mixThemeColor.ts +1 -1
  452. package/src/theme/{build → v2/build}/renderColorTheme.ts +27 -27
  453. package/src/theme/{build → v2/build}/renderColorValue.ts +3 -3
  454. package/src/theme/{build → v2/build}/resolveColorTokens.ts +13 -13
  455. package/src/theme/v2/color/_helpers.ts +2 -2
  456. package/src/theme/v2/color/_system.ts +1 -1
  457. package/src/theme/v2/color/avatar.ts +1 -1
  458. package/src/theme/v2/color/badge.ts +1 -1
  459. package/src/theme/v2/color/button.ts +2 -2
  460. package/src/theme/v2/color/color.ts +7 -7
  461. package/src/theme/v2/color/input.ts +5 -1
  462. package/src/theme/v2/color/selectable.ts +2 -2
  463. package/src/theme/v2/color/state.ts +4 -4
  464. package/src/theme/{config → v2/config}/helpers.ts +6 -13
  465. package/src/theme/{config → v2/config}/system.ts +11 -12
  466. package/src/theme/{config → v2/config}/tokens/color/types.ts +14 -10
  467. package/src/theme/{config → v2/config}/tokens/index.ts +0 -1
  468. package/src/theme/{config → v2/config}/tokens/parseTokenValue.test.ts +2 -0
  469. package/src/theme/{config → v2/config}/tokens/parseTokenValue.ts +2 -2
  470. package/src/theme/{config → v2/config}/tokens/types.ts +3 -3
  471. package/src/theme/{config → v2/config}/types.ts +8 -6
  472. package/src/theme/{defaults → v2/defaults}/colorPalette.ts +1 -1
  473. package/src/theme/{defaults → v2/defaults}/colorTokens.ts +1 -1
  474. package/src/theme/{defaults → v2/defaults}/config.ts +1 -1
  475. package/src/theme/{defaults → v2/defaults}/fonts.ts +1 -1
  476. package/src/theme/v2/index.ts +2 -0
  477. package/src/theme/v2/input.ts +1 -1
  478. package/src/theme/v2/theme.ts +8 -8
  479. package/src/theme/{_constants.ts → v3/_constants.ts} +6 -3
  480. package/src/theme/v3/_parseColorToken.ts +185 -0
  481. package/src/theme/v3/buildTheme_v3.ts +11 -7
  482. package/src/theme/v3/color/_constants.ts +15 -0
  483. package/src/theme/v3/color/avatar.ts +14 -0
  484. package/src/theme/v3/color/card.ts +53 -53
  485. package/src/theme/v3/color/color.ts +66 -68
  486. package/src/theme/v3/color/element.ts +8 -8
  487. package/src/theme/v3/color/index.ts +2 -2
  488. package/src/theme/v3/color/token.ts +18 -4
  489. package/src/theme/v3/color/tokens.ts +2 -2
  490. package/src/theme/v3/defaultTokens.ts +73 -85
  491. package/src/theme/v3/index.ts +3 -0
  492. package/src/theme/v3/palette/index.ts +2 -0
  493. package/src/theme/v3/resolveTokens.ts +65 -65
  494. package/src/theme/v3/tokens.ts +2 -2
  495. package/src/theme/v3/types.ts +61 -7
  496. package/src/theme/versioning/getTheme_v2.ts +3 -3
  497. package/src/theme/versioning/is_v0.ts +2 -2
  498. package/src/theme/versioning/is_v2.ts +2 -2
  499. package/src/theme/versioning/themeColor_v0_v2.ts +2 -2
  500. package/src/theme/versioning/themeColor_v2_v2_9.ts +1 -1
  501. package/src/theme/versioning/themeColor_v3_v2.ts +229 -52
  502. package/src/theme/versioning/v0_v2.ts +3 -3
  503. package/src/theme/versioning/v2_v0.ts +4 -4
  504. package/src/theme/versioning/v3_v2.ts +38 -38
  505. package/dist/ui-palette.css +0 -105
  506. package/dist/ui-palette.min.css +0 -1
  507. package/src/css/_comp.test.ts +0 -7
  508. package/src/css/_comp.ts +0 -11
  509. package/src/css/_compilePalette.ts +0 -32
  510. package/src/css/_compileTheme_v3.ts +0 -440
  511. package/src/css/aspects/flex/flex.style.ts +0 -30
  512. package/src/css/composeClassNames.ts +0 -19
  513. package/src/css/primitives/_selectable/__style.ts +0 -117
  514. package/src/css/primitives/checkbox/__styles.ts +0 -129
  515. package/src/css/scopeClassName.ts +0 -7
  516. package/src/css/varNames.ts +0 -607
  517. package/src/css/vars.ts +0 -520
  518. package/src/theme/_types.ts +0 -41
  519. package/src/theme/build/theme.test.ts +0 -27
  520. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
  521. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  522. package/src/theme/v3/buildTheme_v3.test.ts +0 -40
  523. package/src/theme/v3/color/buildColor_v3.ts +0 -226
  524. package/src/theme/v3/color/parseColor.test.ts +0 -79
  525. package/src/theme/v3/color/parseColor.ts +0 -167
  526. package/src/theme/v3/color/renderColor.test.ts +0 -20
  527. package/src/theme/v3/color/renderColor.ts +0 -43
  528. /package/src/{theme/palette → css/prefix}/index.ts +0 -0
  529. /package/src/theme/{build → v2/build}/_deprecated/color/index.ts +0 -0
  530. /package/src/theme/{build → v2/build}/colorToken/index.ts +0 -0
  531. /package/src/theme/{build → v2/build}/index.ts +0 -0
  532. /package/src/theme/{build → v2/build}/lib/color-fns/blend/index.ts +0 -0
  533. /package/src/theme/{build → v2/build}/lib/color-fns/index.ts +0 -0
  534. /package/src/theme/{build → v2/build}/lib/color-fns/rgba.ts +0 -0
  535. /package/src/theme/{build → v2/build}/lib/color-fns/types.ts +0 -0
  536. /package/src/theme/{build → v2/build}/lib/isRecord.ts +0 -0
  537. /package/src/theme/{build → v2/build}/lib/utils.ts +0 -0
  538. /package/src/theme/{build → v2/build}/merge.ts +0 -0
  539. /package/src/theme/{config → v2/config}/index.ts +0 -0
  540. /package/src/theme/{config → v2/config}/tokens/color/index.ts +0 -0
  541. /package/src/theme/{palette → v3/palette}/constants.ts +0 -0
  542. /package/src/theme/{palette → v3/palette}/types.ts +0 -0
@@ -1,8 +1,8 @@
1
- import {composeClassNames, ResponsiveProp, textSkeleton} from '@sanity/ui/css'
2
- import {FontTextSize} from '@sanity/ui/theme'
1
+ import {_composeClassNames, type ResponsiveProp, textSkeleton} from '@sanity/ui/css'
2
+ import type {FontTextSize} from '@sanity/ui/theme'
3
3
 
4
- import {Props} from '../../types'
5
- import {Skeleton, SkeletonElementType, SkeletonOwnProps} from './skeleton'
4
+ import type {Props} from '../../types'
5
+ import {Skeleton, type SkeletonElementType, type SkeletonOwnProps} from './skeleton'
6
6
 
7
7
  /** @public */
8
8
  export const DEFAULT_TEXT_SKELETON_ELEMENT = 'div'
@@ -40,7 +40,7 @@ export function TextSkeleton<
40
40
  return (
41
41
  <Skeleton
42
42
  {...rest}
43
- className={composeClassNames(
43
+ className={_composeClassNames(
44
44
  className,
45
45
  textSkeleton({
46
46
  size,
@@ -12,7 +12,7 @@ export default function ExampleStory() {
12
12
 
13
13
  return (
14
14
  <Box padding={[4, 5, 6]}>
15
- <TabList space={[1, 2, 3]}>
15
+ <TabList gap={[1, 2, 3]}>
16
16
  <Tab
17
17
  aria-controls="example-panel-foo"
18
18
  icon={SunIcon}
@@ -1,9 +1,9 @@
1
- import {ResponsiveProp} from '@sanity/ui/css'
2
- import {FontTextSize, Space} from '@sanity/ui/theme'
1
+ import type {ResponsiveProp} from '@sanity/ui/css'
2
+ import type {FontTextSize, Space, ThemeColorStateToneKey} from '@sanity/ui/theme'
3
3
  import {
4
- ElementType,
5
- FocusEvent,
6
- ReactNode,
4
+ type ElementType,
5
+ type FocusEvent,
6
+ type ReactNode,
7
7
  useCallback,
8
8
  useEffect,
9
9
  useImperativeHandle,
@@ -11,7 +11,7 @@ import {
11
11
  } from 'react'
12
12
 
13
13
  import {Button} from '../../primitives'
14
- import {ButtonTone, ComponentType, Props} from '../../types'
14
+ import type {ComponentType, Props} from '../../types'
15
15
 
16
16
  /** @public */
17
17
  export const DEFAULT_TAB_ELEMENT = 'button'
@@ -29,7 +29,7 @@ export type TabOwnProps = {
29
29
  'label'?: ReactNode
30
30
  'padding'?: ResponsiveProp<Space>
31
31
  'selected'?: boolean
32
- 'tone'?: ButtonTone
32
+ 'tone'?: ThemeColorStateToneKey
33
33
  }
34
34
 
35
35
  /** @public */
@@ -1,10 +1,17 @@
1
- import {ResponsiveProp} from '@sanity/ui/css'
2
- import {Space} from '@sanity/ui/theme'
3
- import {Children, cloneElement, KeyboardEvent, ReactElement, useCallback, useState} from 'react'
4
-
5
- import {Flex, FlexOwnProps} from '../../primitives'
6
- import {ComponentType, Props} from '../../types'
7
- import {TabProps} from './tab'
1
+ import {type ResponsiveProp} from '@sanity/ui/css'
2
+ import type {Space} from '@sanity/ui/theme'
3
+ import {
4
+ Children,
5
+ cloneElement,
6
+ type KeyboardEvent,
7
+ type ReactElement,
8
+ useCallback,
9
+ useState,
10
+ } from 'react'
11
+
12
+ import {Flex, type FlexOwnProps} from '../../primitives'
13
+ import type {ComponentType, Props} from '../../types'
14
+ import type {TabProps} from './tab'
8
15
 
9
16
  /** @public */
10
17
  export const DEFAULT_TAB_LIST_ELEMENT = 'div'
@@ -1,5 +1,5 @@
1
- import {Box, BoxOwnProps} from '../../primitives'
2
- import {ComponentType, Props} from '../../types'
1
+ import {Box, type BoxOwnProps} from '../../primitives'
2
+ import type {ComponentType, Props} from '../../types'
3
3
 
4
4
  /** @public */
5
5
  export const DEFAULT_TAB_PANEL_ELEMENT = 'div'
@@ -26,9 +26,12 @@ export type TabPanelProps<E extends TabPanelElementType = TabPanelElementType> =
26
26
  export function TabPanel<E extends TabPanelElementType = typeof DEFAULT_TAB_PANEL_ELEMENT>(
27
27
  props: TabPanelProps<E>,
28
28
  ) {
29
- const {as = DEFAULT_TAB_PANEL_ELEMENT, ...rest} = props as TabPanelProps<
30
- typeof DEFAULT_TAB_PANEL_ELEMENT
31
- >
29
+ const {
30
+ as = DEFAULT_TAB_PANEL_ELEMENT,
31
+ children,
32
+ tabIndex,
33
+ ...rest
34
+ } = props as TabPanelProps<typeof DEFAULT_TAB_PANEL_ELEMENT>
32
35
 
33
36
  return (
34
37
  <Box
@@ -36,9 +39,9 @@ export function TabPanel<E extends TabPanelElementType = typeof DEFAULT_TAB_PANE
36
39
  {...rest}
37
40
  as={as}
38
41
  role="tabpanel"
39
- tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}
42
+ tabIndex={tabIndex === undefined ? 0 : tabIndex}
40
43
  >
41
- {props.children}
44
+ {children}
42
45
  </Box>
43
46
  )
44
47
  }
@@ -6,7 +6,7 @@ export default function HookStory() {
6
6
  return (
7
7
  <ToastProvider>
8
8
  <Box padding={[4, 5, 6]}>
9
- <Inline space={2}>
9
+ <Inline gap={2}>
10
10
  <Button
11
11
  onClick={() =>
12
12
  toast.push({
@@ -1,14 +1,14 @@
1
- /** @jest-environment jsdom */
1
+ import {describe, expect, it, vi} from 'vitest'
2
2
 
3
3
  import {render} from '../../../../test'
4
4
  import {ToastContext} from './toastContext'
5
- import {ToastContextValue} from './types'
5
+ import type {ToastContextValue} from './types'
6
6
  import {useToast} from './useToast'
7
7
 
8
8
  describe('components/toast', () => {
9
9
  describe('useToast', () => {
10
10
  it('should get context value', async () => {
11
- const log = jest.fn()
11
+ const log = vi.fn()
12
12
 
13
13
  function Debug() {
14
14
  const rootToast = useToast()
@@ -38,7 +38,7 @@ describe('components/toast', () => {
38
38
  })
39
39
 
40
40
  it('should fail when no context value is provided', async () => {
41
- const log = jest.fn()
41
+ const log = vi.fn()
42
42
 
43
43
  function Debug() {
44
44
  try {
@@ -66,7 +66,7 @@ describe('components/toast', () => {
66
66
  })
67
67
 
68
68
  it('should fail when context value is not compatible', async () => {
69
- const log = jest.fn()
69
+ const log = vi.fn()
70
70
 
71
71
  function Debug() {
72
72
  try {
@@ -1,18 +1,17 @@
1
1
  import {CloseIcon} from '@sanity/icons'
2
2
  import {
3
- RadiusStyleProps,
3
+ type RadiusStyleProps,
4
4
  toast,
5
5
  toastLoadingBar,
6
6
  toastLoadingBarMask,
7
7
  toastLoadingBarProgress,
8
8
  } from '@sanity/ui/css'
9
- import {ThemeColorStateToneKey} from '@sanity/ui/theme'
10
9
  import {motion, type Variant, type Variants} from 'framer-motion'
11
- import {ReactNode} from 'react'
10
+ import type {ReactNode} from 'react'
12
11
 
13
12
  import {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'
14
13
  import {Box, Button, Card, Flex, Stack, Text} from '../../primitives'
15
- import {ButtonTone, ComponentType, Props} from '../../types'
14
+ import type {ComponentType, Props} from '../../types'
16
15
 
17
16
  /** @public */
18
17
  export const DEFAULT_TOAST_ELEMENT = 'li'
@@ -46,14 +45,14 @@ const STATUS_CARD_TONE = {
46
45
  warning: 'caution',
47
46
  success: 'positive',
48
47
  info: 'neutral',
49
- } satisfies {[key: string]: ThemeColorStateToneKey}
48
+ } as const
50
49
 
51
50
  const BUTTON_TONE = {
52
51
  error: 'critical',
53
52
  warning: 'caution',
54
53
  success: 'positive',
55
54
  info: 'neutral',
56
- } satisfies {[key: string]: ButtonTone}
55
+ } as const
57
56
 
58
57
  // Support pattern used by Sanity Studio, that works around the lack of `duration: Infinity` support in older @sanity/ui versions
59
58
  // https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value
@@ -118,7 +117,7 @@ export function Toast<E extends ToastElementType = typeof DEFAULT_TOAST_ELEMENT>
118
117
  >
119
118
  <MotionFlex align="flex-start" variants={content} transition={transition}>
120
119
  <Flex flex={1} overflowX="auto" padding={3}>
121
- <Stack space={3}>
120
+ <Stack gap={3}>
122
121
  {title && (
123
122
  <Text size={1} weight="medium">
124
123
  {title}
@@ -1,5 +1,5 @@
1
1
  import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'
2
- import {ToastContextValue} from './types'
2
+ import type {ToastContextValue} from './types'
3
3
 
4
4
  export const ToastContext = createGlobalScopedContext<ToastContextValue | null>(
5
5
  '@sanity/ui/context/toast',
@@ -1,7 +1,7 @@
1
- import {GapStyleProps, PaddingStyleProps, toastLayer} from '@sanity/ui/css'
1
+ import {type GapStyleProps, type PaddingStyleProps, toastLayer} from '@sanity/ui/css'
2
2
 
3
3
  import {Grid} from '../../primitives/grid'
4
- import {ComponentType, Props} from '../../types'
4
+ import type {ComponentType, Props} from '../../types'
5
5
  import {useLayer} from '../../utils'
6
6
 
7
7
  /** @internal */
@@ -7,7 +7,7 @@ import {Toast} from './toast'
7
7
  import {ToastContext} from './toastContext'
8
8
  import {ToastLayer, type ToastLayerProps} from './toastLayer'
9
9
  import {generateToastId} from './toastState'
10
- import {ToastContextValue, ToastParams} from './types'
10
+ import type {ToastContextValue, ToastParams} from './types'
11
11
 
12
12
  type ToastState = {
13
13
  dismiss: () => void
@@ -1,4 +1,4 @@
1
- import {ReactNode} from 'react'
1
+ import type {ReactNode} from 'react'
2
2
 
3
3
  /** @public */
4
4
  export interface ToastParams {
@@ -2,7 +2,7 @@ import {useContext} from 'react'
2
2
 
3
3
  import {isRecord} from '../../lib/isRecord'
4
4
  import {ToastContext} from './toastContext'
5
- import {ToastContextValue} from './types'
5
+ import type {ToastContextValue} from './types'
6
6
 
7
7
  /** @public */
8
8
  export function useToast(): ToastContextValue {
@@ -1,4 +1,4 @@
1
- import {PerfTestProps, PerfTestRunFn} from '@sanity/ui-workshop/plugin-perf'
1
+ import type {PerfTestProps, PerfTestRunFn} from '@sanity/ui-workshop/plugin-perf'
2
2
  import {findByTestId, fireEvent} from '@testing-library/dom'
3
3
 
4
4
  function test<ElementType = unknown>(
@@ -21,7 +21,7 @@ export default function BasicStory() {
21
21
  return (
22
22
  <Box padding={[4, 5, 6]}>
23
23
  <Wrapper>
24
- <Tree ref={ref} space={1}>
24
+ <Tree gap={1} ref={ref}>
25
25
  <TreeItem onClick={handleClick} expanded text="Fruit">
26
26
  <TreeItem
27
27
  data-testid="oranges"
@@ -38,7 +38,7 @@ export default function BasicStory() {
38
38
  </Box>
39
39
  <Wrapper>
40
40
  <TextInput />
41
- <Tree ref={ref} space={1} onFocus={handleFocus}>
41
+ <Tree gap={1} onFocus={handleFocus} ref={ref}>
42
42
  <TreeItem data-testid="fruit" onClick={handleClick} expanded text="Fruit">
43
43
  <TreeItem
44
44
  data-testid="oranges"
@@ -1,4 +1,4 @@
1
- import {TreeState} from './types'
1
+ import type {TreeState} from './types'
2
2
 
3
3
  export function _findPrevItemElement(
4
4
  state: TreeState,
@@ -1,8 +1,8 @@
1
- import {ResponsiveProp} from '@sanity/ui/css'
2
- import {Space} from '@sanity/ui/theme'
1
+ import type {ResponsiveProp} from '@sanity/ui/css'
2
+ import type {Space} from '@sanity/ui/theme'
3
3
  import {
4
- FocusEvent,
5
- KeyboardEvent,
4
+ type FocusEvent,
5
+ type KeyboardEvent,
6
6
  useCallback,
7
7
  useEffect,
8
8
  useImperativeHandle,
@@ -12,10 +12,10 @@ import {
12
12
  } from 'react'
13
13
 
14
14
  import {Stack} from '../../primitives'
15
- import {ComponentType, Props} from '../../types'
15
+ import type {ComponentType, Props} from '../../types'
16
16
  import {_findNextItemElement, _findPrevItemElement, _focusItemElement} from './helpers'
17
17
  import {TreeContext} from './treeContext'
18
- import {TreeContextValue, TreeState} from './types'
18
+ import type {TreeContextValue, TreeState} from './types'
19
19
 
20
20
  /** @beta */
21
21
  export const DEFAULT_TREE_ELEMENT = 'div'
@@ -1,5 +1,5 @@
1
1
  import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'
2
- import {TreeContextValue} from './types'
2
+ import type {TreeContextValue} from './types'
3
3
 
4
4
  /**
5
5
  * @internal
@@ -1,7 +1,7 @@
1
- import {memo, ReactElement} from 'react'
1
+ import {memo, type ReactElement} from 'react'
2
2
 
3
3
  import {Stack} from '../../primitives'
4
- import {ComponentType, Props} from '../../types'
4
+ import type {ComponentType, Props} from '../../types'
5
5
  import {useTree} from './useTree'
6
6
 
7
7
  /** @public */
@@ -1,13 +1,13 @@
1
1
  import {ToggleArrowRightIcon} from '@sanity/icons'
2
- import {composeClassNames, ResponsiveProp, treeItem} from '@sanity/ui/css'
3
- import {FontTextSize, Space, ThemeFontWeightKey} from '@sanity/ui/theme'
2
+ import {_composeClassNames, type ResponsiveProp, treeItem, vars} from '@sanity/ui/css'
3
+ import type {FontTextSize, Space, ThemeFontWeightKey} from '@sanity/ui/theme'
4
4
  import {
5
- ElementType,
6
- KeyboardEvent,
7
- MouseEvent,
8
- MouseEventHandler,
9
- ReactNode,
10
- Ref,
5
+ type ElementType,
6
+ type KeyboardEvent,
7
+ type MouseEvent,
8
+ type MouseEventHandler,
9
+ type ReactNode,
10
+ type Ref,
11
11
  useCallback,
12
12
  useEffect,
13
13
  useId,
@@ -15,9 +15,9 @@ import {
15
15
  useRef,
16
16
  } from 'react'
17
17
 
18
- import {Box, BoxProps, CardOwnProps, Flex, Text} from '../../primitives'
19
- import {Selectable, SelectableElementType} from '../../primitives/_selectable'
20
- import {ComponentType, Props} from '../../types'
18
+ import {Box, type BoxProps, type CardOwnProps, Flex, Text} from '../../primitives'
19
+ import {Selectable, type SelectableElementType} from '../../primitives/_selectable'
20
+ import type {ComponentType, Props} from '../../types'
21
21
  import {TreeContext} from './treeContext'
22
22
  import {TreeGroup} from './treeGroup'
23
23
  import {useTree} from './useTree'
@@ -166,7 +166,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
166
166
  data-ui="TreeItem"
167
167
  {...(rest as BoxProps<'li'>)}
168
168
  as="li"
169
- className={composeClassNames(className, treeItem())}
169
+ className={_composeClassNames(className, treeItem())}
170
170
  onClick={handleClick}
171
171
  ref={rootRef as Ref<HTMLLIElement>}
172
172
  role="none"
@@ -182,7 +182,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
182
182
  role="treeitem"
183
183
  tabIndex={tabIndex}
184
184
  style={{
185
- paddingLeft: `calc(var(--space-2) * ${tree.level})`,
185
+ paddingLeft: `calc(${vars.space[2]} * ${tree.level})`,
186
186
  }}
187
187
  >
188
188
  {content}
@@ -203,7 +203,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
203
203
  data-tree-key={itemKey}
204
204
  {...(rest as BoxProps<'a'>)}
205
205
  aria-expanded={expanded}
206
- className={composeClassNames(className, treeItem())}
206
+ className={_composeClassNames(className, treeItem())}
207
207
  onClick={handleClick}
208
208
  onKeyDown={handleKeyDown}
209
209
  ref={rootRef as Ref<HTMLAnchorElement>}
@@ -216,7 +216,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
216
216
  data-ui="TreeItem__box"
217
217
  radius={radius}
218
218
  style={{
219
- paddingLeft: `calc(var(--space-2) * ${tree.level})`,
219
+ paddingLeft: `calc(${vars.space[2]} * ${tree.level})`,
220
220
  }}
221
221
  >
222
222
  {content}
@@ -1,5 +1,5 @@
1
- import {ResponsiveProp} from '@sanity/ui/css'
2
- import {Space} from '@sanity/ui/theme'
1
+ import type {ResponsiveProp} from '@sanity/ui/css'
2
+ import type {Space} from '@sanity/ui/theme'
3
3
 
4
4
  /**
5
5
  * @beta
@@ -1,7 +1,7 @@
1
1
  import {useContext} from 'react'
2
2
 
3
3
  import {TreeContext} from './treeContext'
4
- import {TreeContextValue} from './types'
4
+ import type {TreeContextValue} from './types'
5
5
 
6
6
  /**
7
7
  * @beta
@@ -1,8 +1,7 @@
1
- /** @jest-environment jsdom */
2
-
3
1
  import {render, screen} from '@testing-library/react'
4
2
  import userEvent from '@testing-library/user-event'
5
- import {MutableRefObject, useEffect, useRef, useState} from 'react'
3
+ import {type MutableRefObject, useEffect, useRef, useState} from 'react'
4
+ import {describe, expect, it, vi} from 'vitest'
6
5
 
7
6
  import {useClickOutside} from './useClickOutside'
8
7
 
@@ -16,7 +15,7 @@ describe('useClickOutside', () => {
16
15
  */
17
16
  it('calls the handler when clicking outside of the array of elements', async () => {
18
17
  const user = userEvent.setup()
19
- const handler = jest.fn()
18
+ const handler = vi.fn()
20
19
 
21
20
  const TestComponent = () => {
22
21
  const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)
@@ -45,7 +44,7 @@ describe('useClickOutside', () => {
45
44
 
46
45
  it('the elements array flattens nested arrays one level deep', async () => {
47
46
  const user = userEvent.setup()
48
- const handler = jest.fn()
47
+ const handler = vi.fn()
49
48
 
50
49
  const TestComponent = () => {
51
50
  const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)
@@ -74,7 +73,7 @@ describe('useClickOutside', () => {
74
73
 
75
74
  it('it can set a boundary to scope outside click events', async () => {
76
75
  const user = userEvent.setup()
77
- const handler = jest.fn()
76
+ const handler = vi.fn()
78
77
 
79
78
  const TestComponent = () => {
80
79
  const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)
@@ -114,7 +113,7 @@ describe('useClickOutside', () => {
114
113
  * Thus it makes sense to unit test it to ensure it works as expected and we don't accidentally break backwards compatibility.
115
114
  */
116
115
  const user = userEvent.setup()
117
- const handler = jest.fn()
116
+ const handler = vi.fn()
118
117
 
119
118
  const TestComponent = (props: {open?: true}) => {
120
119
  const {open = false} = props
@@ -155,7 +154,7 @@ describe('useClickOutside', () => {
155
154
  * Since we don't want people to use the `setElement` pattern, test that userland can handle dynamically changing elements arrays
156
155
  */
157
156
  const user = userEvent.setup()
158
- const handler = jest.fn()
157
+ const handler = vi.fn()
159
158
 
160
159
  const TestComponent = (props: {open?: true}) => {
161
160
  const {open = false} = props
@@ -199,7 +198,7 @@ describe('useClickOutside', () => {
199
198
  */
200
199
 
201
200
  const user = userEvent.setup()
202
- let handler = jest.fn()
201
+ let handler = vi.fn()
203
202
 
204
203
  /**
205
204
  * Using refs in the `useClickOutside` elements array is dangerous,
@@ -229,7 +228,7 @@ describe('useClickOutside', () => {
229
228
  * If a mixture of refs and state is used it can appear like it's working correctly,
230
229
  * but this is a side-effect, not an indication it's safe.
231
230
  */
232
- handler = jest.fn()
231
+ handler = vi.fn()
233
232
  TestComponent = () => {
234
233
  const buttonRef = useRef<HTMLButtonElement | null>(null)
235
234
  const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)
@@ -254,7 +253,7 @@ describe('useClickOutside', () => {
254
253
  /**
255
254
  * Unrelated state updates can create the same false impression of safety.
256
255
  */
257
- handler = jest.fn()
256
+ handler = vi.fn()
258
257
  TestComponent = () => {
259
258
  const buttonRef = useRef<HTMLButtonElement | null>(null)
260
259
  const popoverRef = useRef<HTMLDivElement | null>(null)
@@ -306,7 +305,7 @@ describe('useClickOutside', () => {
306
305
 
307
306
  return elements
308
307
  }
309
- handler = jest.fn()
308
+ handler = vi.fn()
310
309
  TestComponent = () => {
311
310
  const buttonRef = useRef<HTMLButtonElement | null>(null)
312
311
  const popoverRef = useRef<HTMLDivElement | null>(null)
@@ -337,7 +336,7 @@ describe('useClickOutside', () => {
337
336
  */
338
337
 
339
338
  const user = userEvent.setup()
340
- let handler = jest.fn()
339
+ let handler = vi.fn()
341
340
 
342
341
  /**
343
342
  * Using refs in the `useClickOutside` elements array is dangerous,
@@ -368,7 +367,7 @@ describe('useClickOutside', () => {
368
367
  * If a mixture of refs and state is used it can appear like it's working correctly,
369
368
  * but this is a side-effect, not an indication it's safe.
370
369
  */
371
- handler = jest.fn()
370
+ handler = vi.fn()
372
371
  TestComponent = () => {
373
372
  const buttonRef = useRef<HTMLButtonElement | null>(null)
374
373
  const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)
@@ -398,7 +397,7 @@ describe('useClickOutside', () => {
398
397
  /**
399
398
  * Unrelated state updates can create the same false impression of safety.
400
399
  */
401
- handler = jest.fn()
400
+ handler = vi.fn()
402
401
  TestComponent = () => {
403
402
  const buttonRef = useRef<HTMLButtonElement | null>(null)
404
403
  const popoverRef = useRef<HTMLDivElement | null>(null)
@@ -451,7 +450,7 @@ describe('useClickOutside', () => {
451
450
 
452
451
  return element
453
452
  }
454
- handler = jest.fn()
453
+ handler = vi.fn()
455
454
  TestComponent = () => {
456
455
  const buttonRef = useRef<HTMLButtonElement | null>(null)
457
456
  const popoverRef = useRef<HTMLDivElement | null>(null)
@@ -1,8 +1,7 @@
1
- /** @jest-environment jsdom */
2
-
3
1
  import {render, screen} from '@testing-library/react'
4
2
  import userEvent from '@testing-library/user-event'
5
3
  import {useRef} from 'react'
4
+ import {describe, expect, it, vi} from 'vitest'
6
5
 
7
6
  import {useClickOutsideEvent} from './useClickOutsideEvent'
8
7
 
@@ -13,7 +12,7 @@ describe('useClickOutsideEvent', () => {
13
12
 
14
13
  it('calls the handler when clicking outside of the array of elements', async () => {
15
14
  const user = userEvent.setup()
16
- const handler = jest.fn()
15
+ const handler = vi.fn()
17
16
 
18
17
  const TestComponent = () => {
19
18
  const buttonRef = useRef<HTMLButtonElement | null>(null)
@@ -42,7 +41,7 @@ describe('useClickOutsideEvent', () => {
42
41
 
43
42
  it('the elements array flattens nested arrays one level deep', async () => {
44
43
  const user = userEvent.setup()
45
- const handler = jest.fn()
44
+ const handler = vi.fn()
46
45
 
47
46
  const TestComponent = () => {
48
47
  const buttonRef = useRef<HTMLButtonElement | null>(null)
@@ -76,7 +75,7 @@ describe('useClickOutsideEvent', () => {
76
75
 
77
76
  it('it can set a boundary to scope outside click events', async () => {
78
77
  const user = userEvent.setup()
79
- const handler = jest.fn()
78
+ const handler = vi.fn()
80
79
 
81
80
  const TestComponent = () => {
82
81
  const buttonRef = useRef<HTMLButtonElement | null>(null)
@@ -1,6 +1,5 @@
1
- /** @jest-environment jsdom */
2
-
3
1
  import {act, renderHook} from '@testing-library/react'
2
+ import {describe, expect, it, vi} from 'vitest'
4
3
 
5
4
  import {useDelayedState} from './useDelayedState'
6
5
 
@@ -16,7 +15,7 @@ describe('useDelayedState', () => {
16
15
  })
17
16
 
18
17
  it('should update state after delay if delay is provided', async () => {
19
- jest.useFakeTimers()
18
+ vi.useFakeTimers()
20
19
  const {result} = renderHook(() => useDelayedState(false))
21
20
  const [, setState] = result.current
22
21
 
@@ -25,12 +24,12 @@ describe('useDelayedState', () => {
25
24
  })
26
25
  expect(result.current[0]).toBe(false)
27
26
  act(() => {
28
- jest.advanceTimersByTime(500)
27
+ vi.advanceTimersByTime(500)
29
28
  })
30
29
  expect(result.current[0]).toBe(false)
31
30
 
32
31
  act(() => {
33
- jest.advanceTimersByTime(500)
32
+ vi.advanceTimersByTime(500)
34
33
  })
35
34
 
36
35
  expect(result.current[0]).toBe(true)
@@ -56,12 +55,12 @@ describe('useDelayedState', () => {
56
55
  })
57
56
  expect(result.current[0]).toBe(false)
58
57
 
59
- jest.advanceTimersByTime(500)
58
+ vi.advanceTimersByTime(500)
60
59
 
61
60
  act(() => {
62
61
  setState(false)
63
62
  })
64
- jest.advanceTimersByTime(600)
63
+ vi.advanceTimersByTime(600)
65
64
  // Even after 1.1 seconds, the state should continue being false, because it was cancelled by a next setState call
66
65
  expect(result.current[0]).toBe(false)
67
66
  })
@@ -1,4 +1,4 @@
1
- import {SetStateAction, useCallback, useRef, useState} from 'react'
1
+ import {type SetStateAction, useCallback, useRef, useState} from 'react'
2
2
 
3
3
  /**
4
4
  * @beta