@sanity/ui 3.0.0-static.18 → 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 +137 -136
  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 +138 -137
  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 -2017
  11. package/dist/css.cjs.map +1 -1
  12. package/dist/css.d.cts +9423 -874
  13. package/dist/css.d.ts +9423 -874
  14. package/dist/css.js +1591 -2019
  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 +23 -21
  19. package/dist/index.d.ts +23 -21
  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 +1 -0
  126. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +2 -2
  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 +0 -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 +25 -914
  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
@@ -141,7 +141,7 @@ export function Popover<E extends PopoverElementType = typeof DEFAULT_POPOVER_EL
141
141
 
142
142
  const {
143
143
  __unstable_margins: margins = DEFAULT_POPOVER_MARGINS,
144
- animate: _animate = true,
144
+ animate: _animate = false,
145
145
  arrow: arrowProp = false,
146
146
  as: as = DEFAULT_POPOVER_ELEMENT,
147
147
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1,11 +1,11 @@
1
- import {Strategy} from '@floating-ui/react-dom'
1
+ import type {Strategy} from '@floating-ui/react-dom'
2
2
  import {popoverCard} from '@sanity/ui/css'
3
3
  import {motion} from 'framer-motion'
4
- import {CSSProperties, ForwardedRef, useMemo} from 'react'
4
+ import {type CSSProperties, type ForwardedRef, useMemo} from 'react'
5
5
 
6
6
  import {POPOVER_MOTION_PROPS} from '../../constants'
7
- import {Placement, PopoverMargins} from '../../types'
8
- import {Arrow, Layer, LayerOwnProps, LayerProps} from '../../utils'
7
+ import type {Placement, PopoverMargins} from '../../types'
8
+ import {Arrow, Layer, type LayerOwnProps, type LayerProps} from '../../utils'
9
9
  import {Flex} from '../flex'
10
10
  import {
11
11
  DEFAULT_POPOVER_ARROW_HEIGHT,
@@ -1,6 +1,7 @@
1
+ import type {ContainerWidth} from '@sanity/ui/theme'
2
+
1
3
  /** @beta */
2
4
  export type PopoverUpdateCallback = () => void
3
5
 
4
6
  /** @public */
5
- // todo: remove `auto` from PopoverWidth
6
- export type PopoverWidth = number | 'auto'
7
+ export type PopoverWidth = Exclude<ContainerWidth, 'auto'>
@@ -14,7 +14,7 @@ export default function ExampleStory() {
14
14
  return (
15
15
  <Flex align="center" height="fill" justify="center" padding={[3, 4, 5]} sizing="border">
16
16
  <Container width={0}>
17
- <Stack space={3}>
17
+ <Stack gap={3}>
18
18
  <Flex align="center" as="label">
19
19
  <Radio
20
20
  checked={value === 'first-option'}
@@ -1,8 +1,8 @@
1
- import {composeClassNames, radio} from '@sanity/ui/css'
1
+ import {_composeClassNames, radio} from '@sanity/ui/css'
2
2
  import {useImperativeHandle, useRef} from 'react'
3
3
 
4
4
  import {useCustomValidity} from '../../hooks'
5
- import {ComponentType, Props} from '../../types'
5
+ import type {ComponentType, Props} from '../../types'
6
6
 
7
7
  /** @public */
8
8
  export const DEFAULT_RADIO_ELEMENT = 'input'
@@ -47,11 +47,11 @@ export function Radio<E extends RadioElementType = typeof DEFAULT_RADIO_ELEMENT>
47
47
  useCustomValidity(ref, customValidity)
48
48
 
49
49
  return (
50
- <div className={composeClassNames(className, radio())} data-ui="Radio" style={style}>
50
+ <div className={_composeClassNames(className, radio())} data-ui="Radio" style={style}>
51
51
  <Element
52
- data-read-only={!disabled && readOnly ? '' : undefined}
53
- data-error={customValidity ? '' : undefined}
54
52
  {...rest}
53
+ data-invalid={customValidity ? '' : undefined}
54
+ data-read-only={!disabled && readOnly ? '' : undefined}
55
55
  disabled={disabled || readOnly}
56
56
  readOnly={readOnly}
57
57
  ref={ref}
@@ -1,22 +1,34 @@
1
1
  import {Card, Container, Label, Select, Stack} from '@sanity/ui'
2
2
  import {useBoolean, useSelect} from '@sanity/ui-workshop'
3
3
 
4
- import {WORKSHOP_TEXT_FONT_SIZE_OPTIONS} from '../../../../../workshop/constants'
4
+ import {
5
+ WORKSHOP_RADIUS_OPTIONS,
6
+ WORKSHOP_TEXT_FONT_SIZE_OPTIONS,
7
+ } from '../../../../../workshop/constants'
5
8
 
6
9
  export default function PlainStory() {
10
+ const border = useBoolean('Border', true)
7
11
  const disabled = useBoolean('Disabled', false, 'Props')
8
12
  const fontSize = useSelect('Font size', WORKSHOP_TEXT_FONT_SIZE_OPTIONS, 2, 'Props')
13
+ const radius = useSelect('Radius', WORKSHOP_RADIUS_OPTIONS, undefined, 'Props')
9
14
  const readOnly = useBoolean('Read only', false, 'Props')
10
15
 
11
16
  return (
12
17
  <Container width={0}>
13
18
  <Card padding={4}>
14
- <Stack space={3}>
19
+ <Stack gap={3}>
15
20
  <Label as="label" htmlFor="select">
16
21
  Select
17
22
  </Label>
18
23
 
19
- <Select disabled={disabled} fontSize={fontSize} id="select-example" readOnly={readOnly}>
24
+ <Select
25
+ border={border}
26
+ disabled={disabled}
27
+ fontSize={fontSize}
28
+ id="select-example"
29
+ radius={radius}
30
+ readOnly={readOnly}
31
+ >
20
32
  <option value="a">Option A</option>
21
33
  <option value="b">Option B</option>
22
34
  <option value="c">Option C</option>
@@ -4,7 +4,7 @@ export default function ReadOnlyStory() {
4
4
  return (
5
5
  <Container width={0}>
6
6
  <Card padding={4}>
7
- <Stack space={3}>
7
+ <Stack gap={3}>
8
8
  <Label as="label" htmlFor="select">
9
9
  Select
10
10
  </Label>
@@ -1,12 +1,12 @@
1
1
  import {ChevronDownIcon} from '@sanity/icons'
2
2
  import {
3
3
  _inputElement,
4
- ResponsiveProp,
4
+ type ResponsiveProp,
5
5
  select,
6
6
  selectPresentation,
7
- SelectStyleProps,
7
+ type SelectStyleProps,
8
8
  } from '@sanity/ui/css'
9
- import {Space} from '@sanity/ui/theme'
9
+ import type {Space} from '@sanity/ui/theme'
10
10
  import {useImperativeHandle, useRef} from 'react'
11
11
 
12
12
  import {useCustomValidity} from '../../hooks'
@@ -70,13 +70,7 @@ export function Select<E extends SelectElementType = typeof DEFAULT_SELECT_ELEME
70
70
  className={select({border, fontSize, padding, radius, gap: gap ?? space})}
71
71
  data-icon-right=""
72
72
  >
73
- <Element
74
- data-read-only={!disabled && readOnly ? '' : undefined}
75
- {...rest}
76
- className={_inputElement()}
77
- disabled={disabled || readOnly}
78
- ref={ref}
79
- >
73
+ <Element {...rest} className={_inputElement()} disabled={disabled || readOnly} ref={ref}>
80
74
  {children}
81
75
  </Element>
82
76
  <span className={selectPresentation()}>
@@ -1,5 +1,4 @@
1
1
  import {Flex, Spinner} from '@sanity/ui'
2
- import {FontTextSize} from '@sanity/ui/theme'
3
2
  import {useBoolean, useSelect} from '@sanity/ui-workshop'
4
3
 
5
4
  import {WORKSHOP_TEXT_SIZE_OPTIONS} from '../../../../../workshop/constants'
@@ -10,7 +9,7 @@ export default function Props() {
10
9
 
11
10
  return (
12
11
  <Flex align="center" height="fill" justify="center">
13
- <Spinner muted={muted} size={size as FontTextSize} />
12
+ <Spinner muted={muted} size={size} />
14
13
  </Flex>
15
14
  )
16
15
  }
@@ -1,6 +1,6 @@
1
1
  import {SpinnerIcon} from '@sanity/icons'
2
- import {animatedSpinnerIcon, composeClassNames} from '@sanity/ui/css'
3
- import {ReactElement, SVGProps} from 'react'
2
+ import {_composeClassNames, animatedSpinnerIcon} from '@sanity/ui/css'
3
+ import type {ReactElement, SVGProps} from 'react'
4
4
 
5
5
  /** @internal */
6
6
  export function AnimatedSpinnerIcon(props: SVGProps<SVGSVGElement>): ReactElement {
@@ -10,7 +10,7 @@ export function AnimatedSpinnerIcon(props: SVGProps<SVGSVGElement>): ReactElemen
10
10
  <SpinnerIcon
11
11
  {...rest}
12
12
  data-sanity-icon="animated-spinner"
13
- className={composeClassNames(className, animatedSpinnerIcon())}
13
+ className={_composeClassNames(className, animatedSpinnerIcon())}
14
14
  />
15
15
  )
16
16
  }
@@ -1,7 +1,7 @@
1
- import {ResponsiveProp, spinner} from '@sanity/ui/css'
2
- import {FontTextSize} from '@sanity/ui/theme'
1
+ import {type ResponsiveProp, spinner} from '@sanity/ui/css'
2
+ import type {FontTextSize} from '@sanity/ui/theme'
3
3
 
4
- import {ComponentType, Props} from '../../types'
4
+ import type {ComponentType, Props} from '../../types'
5
5
  import {Text} from '../text'
6
6
  import {AnimatedSpinnerIcon} from './animatedSpinnerIcon'
7
7
 
@@ -7,7 +7,7 @@ export default function PlainStory() {
7
7
  return (
8
8
  <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
9
9
  <Container width={0}>
10
- <Stack space={useSelect('Space', WORKSHOP_SPACE_OPTIONS, 0, 'Props')}>
10
+ <Stack gap={useSelect('Gap', WORKSHOP_SPACE_OPTIONS, 0, 'Props')}>
11
11
  <Card padding={[2, 3, 4]} shadow={1}>
12
12
  <Text align="center" muted>
13
13
  Stack item
@@ -1,8 +1,8 @@
1
- import {composeClassNames, ResponsiveProp, stack} from '@sanity/ui/css'
2
- import {Space} from '@sanity/ui/theme'
1
+ import {_composeClassNames, type ResponsiveProp, stack} from '@sanity/ui/css'
2
+ import type {Space} from '@sanity/ui/theme'
3
3
 
4
- import {Props} from '../../types'
5
- import {Box, BoxElementType, BoxOwnProps} from '../box'
4
+ import type {Props} from '../../types'
5
+ import {Box, type BoxElementType, type BoxOwnProps} from '../box'
6
6
 
7
7
  /** @public */
8
8
  export const DEFAULT_STACK_ELEMENT = 'div'
@@ -44,7 +44,7 @@ export function Stack<E extends StackElementType = typeof DEFAULT_STACK_ELEMENT>
44
44
  {...rest}
45
45
  as={as}
46
46
  autoRows="min"
47
- className={composeClassNames(className, stack())}
47
+ className={_composeClassNames(className, stack())}
48
48
  display="grid"
49
49
  gap={gap ?? space}
50
50
  />
@@ -1,14 +1,14 @@
1
1
  import {
2
+ _composeClassNames,
2
3
  _switch,
3
4
  _switchElement,
4
5
  _switchPresentation,
5
6
  _switchThumb,
6
7
  _switchTrack,
7
- composeClassNames,
8
8
  } from '@sanity/ui/css'
9
9
  import {useEffect, useImperativeHandle, useRef} from 'react'
10
10
 
11
- import {ComponentType, Props} from '../../types'
11
+ import type {ComponentType, Props} from '../../types'
12
12
  import {Box} from '../box'
13
13
 
14
14
  /** @public */
@@ -63,7 +63,7 @@ export function Switch<E extends SwitchElementType = typeof DEFAULT_SWITCH_ELEME
63
63
 
64
64
  return (
65
65
  <Box
66
- className={composeClassNames(className, _switch())}
66
+ className={_composeClassNames(className, _switch())}
67
67
  data-checked={checked ? '' : undefined}
68
68
  data-indeterminate={indeterminate ? '' : undefined}
69
69
  data-ui="Switch"
@@ -1,17 +1,17 @@
1
1
  import {Flex, Text} from '@sanity/ui'
2
- import {ThemeColorAvatarColorKey} from '@sanity/ui/theme'
2
+ import {varNames, vars} from '@sanity/ui/css'
3
+ import type {AvatarColor} from '@sanity/ui/theme'
3
4
  import {useSelect} from '@sanity/ui-workshop'
4
5
  import {styled} from 'styled-components'
5
6
 
6
7
  import {WORKSHOP_SPOT_COLOR_OPTIONS} from '../../../../../workshop/constants'
7
- import {varNames} from '../../../../css/varNames'
8
8
 
9
- const ColoredText = styled(Text)<{$color?: ThemeColorAvatarColorKey}>`
10
- ${varNames.color.fg}: var(--color-avatar-${(props) => props.$color}-bg);
9
+ const ColoredText = styled(Text)<{$color: AvatarColor}>`
10
+ ${varNames.color.fg}: ${({$color}) => vars.color.avatar[$color].bg};
11
11
  `
12
12
 
13
13
  export default function ColoredTextStory() {
14
- const color = useSelect('Color', WORKSHOP_SPOT_COLOR_OPTIONS, 'gray')
14
+ const color = useSelect('Color', WORKSHOP_SPOT_COLOR_OPTIONS, 'magenta') || 'magenta'
15
15
 
16
16
  return (
17
17
  <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
@@ -4,7 +4,7 @@ import {Box, Card, Flex, Stack, Text} from '@sanity/ui'
4
4
  export default function OpticalAlignment() {
5
5
  return (
6
6
  <Box padding={[4, 5, 6]}>
7
- <Stack space={1}>
7
+ <Stack gap={1}>
8
8
  <Flex>
9
9
  <Card padding={0} tone="neutral">
10
10
  <Text size={4}>Hamburgefonstiv M</Text>
@@ -1,12 +1,12 @@
1
1
  import {
2
- composeClassNames,
2
+ _composeClassNames,
3
3
  text,
4
4
  textOverflow,
5
- TextOverflowStyleProps,
6
- TextStyleProps,
5
+ type TextOverflowStyleProps,
6
+ type TextStyleProps,
7
7
  } from '@sanity/ui/css'
8
8
 
9
- import {ComponentType, Props} from '../../types'
9
+ import type {ComponentType, Props} from '../../types'
10
10
 
11
11
  /** @public */
12
12
  export const DEFAULT_TEXT_ELEMENT = 'div'
@@ -48,7 +48,7 @@ export function Text<E extends TextElementType = typeof DEFAULT_TEXT_ELEMENT>(pr
48
48
  muted,
49
49
  size = 2,
50
50
  textOverflow: textOverflowProp,
51
- weight,
51
+ weight = 'regular',
52
52
  ...rest
53
53
  } = props as TextProps<typeof DEFAULT_TEXT_ELEMENT>
54
54
 
@@ -56,7 +56,7 @@ export function Text<E extends TextElementType = typeof DEFAULT_TEXT_ELEMENT>(pr
56
56
  <Element
57
57
  data-ui="Text"
58
58
  {...rest}
59
- className={composeClassNames(
59
+ className={_composeClassNames(
60
60
  className,
61
61
  text({
62
62
  accent,
@@ -1,5 +1,6 @@
1
- import {Card, Container, Flex, Radius, Stack, Text, TextArea} from '@sanity/ui'
1
+ import {Card, Container, Stack, Text, TextArea} from '@sanity/ui'
2
2
  import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
3
+ import {useState} from 'react'
3
4
 
4
5
  import {
5
6
  WORKSHOP_CARD_TONE_OPTIONS,
@@ -17,34 +18,45 @@ export default function PlainStory() {
17
18
  const disabled = useBoolean('Disabled', false, 'Props')
18
19
  const fontSize = useSelect('Font size', WORKSHOP_TEXT_FONT_SIZE_OPTIONS, 2, 'Props')
19
20
  const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 3, 'Props')
20
- const placeholder = useText('Placeholder', '', 'Props') || undefined
21
+ const placeholder = useText('Placeholder', 'Placeholder', 'Props') || undefined
21
22
  const radius = useSelect('Radius', WORKSHOP_RADIUS_OPTIONS, 2, 'Props')
22
23
  const readOnly = useBoolean('Read only', false, 'Props')
23
24
  const weight = useSelect('Weight', WORKSHOP_FONT_WEIGHT_OPTIONS, undefined, 'Props') || undefined
24
25
 
26
+ const [value, setValue] = useState('')
27
+
25
28
  return (
26
- <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
29
+ <Card
30
+ align="center"
31
+ display="flex"
32
+ height="fill"
33
+ justify="center"
34
+ padding={[4, 5, 6]}
35
+ sizing="border"
36
+ tone={tone}
37
+ >
27
38
  <Container width={0}>
28
- <Card padding={3} tone={tone}>
29
- <Stack space={3}>
30
- <Text as="label" htmlFor="text-area-example" size={1} weight="medium">
31
- TextArea
32
- </Text>
33
- <TextArea
34
- border={border}
35
- customValidity={customValidity}
36
- disabled={disabled}
37
- fontSize={fontSize}
38
- id="text-area-example"
39
- padding={padding}
40
- placeholder={placeholder}
41
- radius={radius as Radius}
42
- readOnly={readOnly}
43
- weight={weight}
44
- />
45
- </Stack>
46
- </Card>
39
+ <Stack gap={3}>
40
+ <Text as="label" hidden htmlFor="text-area-example" size={1} weight="medium">
41
+ TextArea
42
+ </Text>
43
+ <TextArea
44
+ border={border}
45
+ customValidity={customValidity}
46
+ disabled={disabled}
47
+ fontSize={fontSize}
48
+ id="text-area-example"
49
+ onChange={(e) => setValue(e.target.value)}
50
+ padding={padding}
51
+ placeholder={placeholder}
52
+ radius={radius}
53
+ readOnly={readOnly}
54
+ rows={10}
55
+ value={value}
56
+ weight={weight}
57
+ />
58
+ </Stack>
47
59
  </Container>
48
- </Flex>
60
+ </Card>
49
61
  )
50
62
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  _inputElement,
3
3
  _inputPresentation,
4
- ResponsiveProp,
4
+ type ResponsiveProp,
5
5
  textArea,
6
6
  type TextAreaStyleProps,
7
7
  } from '@sanity/ui/css'
@@ -44,6 +44,9 @@ export function TextArea<E extends TextAreaElementType = typeof DEFAULT_TEXT_ARE
44
44
  props: TextAreaProps<E>,
45
45
  ) {
46
46
  const {
47
+ // TODO: fix this
48
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
+ __unstable_disableFocusRing,
47
50
  as: Element = DEFAULT_TEXT_AREA_ELEMENT,
48
51
  border = true,
49
52
  customValidity,
@@ -52,14 +55,12 @@ export function TextArea<E extends TextAreaElementType = typeof DEFAULT_TEXT_ARE
52
55
  gap,
53
56
  padding = 3,
54
57
  radius = 2,
58
+ readOnly,
55
59
  ref: forwardedRef,
56
60
  space = 3,
57
61
  // TODO: fix this
58
62
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
59
63
  weight,
60
- // TODO: fix this
61
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
62
- __unstable_disableFocusRing,
63
64
  ...rest
64
65
  } = props as TextAreaProps<typeof DEFAULT_TEXT_AREA_ELEMENT>
65
66
 
@@ -75,9 +76,17 @@ export function TextArea<E extends TextAreaElementType = typeof DEFAULT_TEXT_ARE
75
76
  return (
76
77
  <span
77
78
  className={textArea({border, fontSize, padding, radius, gap: gap ?? space})}
79
+ data-invalid={customValidity ? '' : undefined}
80
+ data-read-only={!disabled && readOnly ? '' : undefined}
78
81
  data-ui="TextArea"
79
82
  >
80
- <Element {...rest} className={_inputElement()} disabled={disabled} ref={ref} />
83
+ <Element
84
+ {...rest}
85
+ className={_inputElement()}
86
+ disabled={disabled}
87
+ readOnly={readOnly}
88
+ ref={ref}
89
+ />
81
90
  <span className={_inputPresentation()} />
82
91
  </span>
83
92
  )
@@ -7,7 +7,7 @@ export default function CustomValidityStory() {
7
7
  return (
8
8
  <Container as="form" onSubmit={(event) => event.preventDefault()} width={0}>
9
9
  <Card padding={4}>
10
- <Stack space={4}>
10
+ <Stack gap={4}>
11
11
  <TextInput customValidity={customValidity} />
12
12
  <Button text="Submit" type="submit" />
13
13
  </Stack>
@@ -1,8 +1,7 @@
1
- import {icons, IconSymbol} from '@sanity/icons'
1
+ import {icons} from '@sanity/icons'
2
2
  import {Container, Flex, Stack, Text, TextInput} from '@sanity/ui'
3
- import {FontTextSize, Radius} from '@sanity/ui/theme'
4
3
  import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
5
- import {PerfTestProps, usePerfTest} from '@sanity/ui-workshop/plugin-perf'
4
+ import {type PerfTestProps, usePerfTest} from '@sanity/ui-workshop/plugin-perf'
6
5
  import {fireEvent} from '@testing-library/dom'
7
6
  import {useCallback, useState} from 'react'
8
7
 
@@ -36,7 +35,7 @@ export default function PlainStory() {
36
35
  return (
37
36
  <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
38
37
  <Container width={0}>
39
- <Stack space={3}>
38
+ <Stack gap={3}>
40
39
  <Text as="label" htmlFor="text-input-example" size={1} weight="medium">
41
40
  TextInput
42
41
  </Text>
@@ -55,19 +54,14 @@ function TextInputTest(props: {inputRef: React.Ref<HTMLInputElement>}) {
55
54
  const customValidity = useText('Custom validity', '', 'Props') || undefined
56
55
  const disabled = useBoolean('Disabled', false, 'Props')
57
56
  const fontSize = useSelect('Font size', WORKSHOP_TEXT_FONT_SIZE_OPTIONS, 2, 'Props')
58
- const icon = useSelect('Icon', WORKSHOP_ICON_SYMBOL_OPTIONS, 'search', 'Props') as IconSymbol
59
- const iconRight = useSelect(
60
- 'Icon (right)',
61
- WORKSHOP_ICON_SYMBOL_OPTIONS,
62
- 'cube',
63
- 'Props',
64
- ) as IconSymbol
57
+ const gap = useSelect('Gap', WORKSHOP_SPACE_OPTIONS, 3, 'Props')
58
+ const icon = useSelect('Icon', WORKSHOP_ICON_SYMBOL_OPTIONS, 'search', 'Props')
59
+ const iconRight = useSelect('Icon (right)', WORKSHOP_ICON_SYMBOL_OPTIONS, 'cube', 'Props')
65
60
  const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 3, 'Props')
66
61
  const placeholder = useText('Placeholder', '', 'Props') || undefined
67
62
  const prefix = useBoolean('Prefix', false, 'Props')
68
63
  const radius = useSelect('Radius', WORKSHOP_RADIUS_OPTIONS, 2, 'Props')
69
64
  const readOnly = useBoolean('Read only', false, 'Props')
70
- const space = useSelect('Space', WORKSHOP_SPACE_OPTIONS, 3, 'Props')
71
65
  const suffix = useBoolean('Suffix', false, 'Props')
72
66
  const weight = useSelect('Weight', WORKSHOP_FONT_WEIGHT_OPTIONS, '', 'Props') || undefined
73
67
 
@@ -83,7 +77,8 @@ function TextInputTest(props: {inputRef: React.Ref<HTMLInputElement>}) {
83
77
  border={border}
84
78
  customValidity={customValidity}
85
79
  disabled={disabled}
86
- fontSize={fontSize as FontTextSize}
80
+ fontSize={fontSize}
81
+ gap={gap}
87
82
  icon={icon && icons[icon]}
88
83
  iconRight={iconRight && icons[iconRight]}
89
84
  id="text-input-example"
@@ -92,10 +87,9 @@ function TextInputTest(props: {inputRef: React.Ref<HTMLInputElement>}) {
92
87
  padding={padding}
93
88
  placeholder={placeholder}
94
89
  prefix={prefix && <Text>Prefix</Text>}
95
- radius={radius as Radius}
90
+ radius={radius}
96
91
  readOnly={readOnly}
97
92
  ref={ref}
98
- space={space}
99
93
  suffix={suffix && <Text>Suffix</Text>}
100
94
  value={value}
101
95
  weight={weight}
@@ -8,8 +8,8 @@ export default function StatesStory() {
8
8
  return (
9
9
  <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
10
10
  <Container width={1}>
11
- <Stack space={5}>
12
- <Stack space={3}>
11
+ <Stack gap={5}>
12
+ <Stack gap={3}>
13
13
  <Text size={1} weight="medium">
14
14
  <label htmlFor="enabled-example">Enabled (default)</label>
15
15
  </Text>
@@ -21,7 +21,7 @@ export default function StatesStory() {
21
21
  />
22
22
  </Stack>
23
23
 
24
- <Stack space={3}>
24
+ <Stack gap={3}>
25
25
  <Text size={1} weight="medium">
26
26
  <label htmlFor="disabled-example">Disabled</label>
27
27
  </Text>
@@ -34,7 +34,7 @@ export default function StatesStory() {
34
34
  />
35
35
  </Stack>
36
36
 
37
- <Stack space={3}>
37
+ <Stack gap={3}>
38
38
  <Text size={1} weight="medium">
39
39
  <label htmlFor="read-only-example">Read-only</label>
40
40
  </Text>
@@ -16,7 +16,7 @@ export default function TonesStory() {
16
16
  <Container width={1}>
17
17
  <Flex>
18
18
  <Card flex={1} scheme="light">
19
- <Stack padding={[3, 4, 5]} space={4}>
19
+ <Stack gap={4} padding={[3, 4, 5]}>
20
20
  <Card padding={3}>
21
21
  <TextInput
22
22
  placeholder="default"
@@ -161,7 +161,7 @@ export default function TonesStory() {
161
161
  </Stack>
162
162
  </Card>
163
163
  <Card flex={1} scheme="dark">
164
- <Stack padding={[3, 4, 5]} space={4}>
164
+ <Stack gap={4} padding={[3, 4, 5]}>
165
165
  <Card padding={3}>
166
166
  <TextInput
167
167
  placeholder="default"
@@ -1,19 +1,19 @@
1
1
  import {CloseIcon} from '@sanity/icons'
2
2
  import {
3
+ _composeClassNames,
3
4
  _inputElement,
4
5
  _inputPresentation,
5
- composeClassNames,
6
- InputStyleProps,
7
- ResponsiveProp,
6
+ type InputStyleProps,
7
+ type ResponsiveProp,
8
8
  textInput,
9
9
  } from '@sanity/ui/css'
10
- import {Space, ThemeFontWeightKey} from '@sanity/ui/theme'
10
+ import type {Space, ThemeFontWeightKey} from '@sanity/ui/theme'
11
11
  import {
12
- CSSProperties,
13
- ElementType,
12
+ type CSSProperties,
13
+ type ElementType,
14
14
  isValidElement,
15
- MouseEvent,
16
- ReactNode,
15
+ type MouseEvent,
16
+ type ReactNode,
17
17
  useCallback,
18
18
  useImperativeHandle,
19
19
  useMemo,
@@ -24,9 +24,9 @@ import {isValidElementType} from 'react-is'
24
24
  import {EMPTY_RECORD} from '../../constants'
25
25
  import {useArrayProp, useCustomValidity} from '../../hooks'
26
26
  import {isRecord} from '../../lib/isRecord'
27
- import {ComponentType, Props} from '../../types'
27
+ import type {ComponentType, Props} from '../../types'
28
28
  import {Box} from '../box'
29
- import {Button, ButtonProps} from '../button'
29
+ import {Button, type ButtonProps} from '../button'
30
30
  import {Text} from '../text'
31
31
 
32
32
  /** @public */
@@ -177,7 +177,7 @@ export function TextInput<E extends TextInputElementType = typeof DEFAULT_TEXT_I
177
177
  <Box
178
178
  align="center"
179
179
  as="span"
180
- className={composeClassNames(
180
+ className={_composeClassNames(
181
181
  className,
182
182
  textInput({
183
183
  border,
@@ -190,7 +190,9 @@ export function TextInput<E extends TextInputElementType = typeof DEFAULT_TEXT_I
190
190
  )}
191
191
  data-icon-left={IconComponent ? '' : undefined}
192
192
  data-icon-right={IconRightComponent ? '' : undefined}
193
+ data-invalid={customValidity ? '' : undefined}
193
194
  data-prefix={prefix ? '' : undefined}
195
+ data-read-only={!disabled && readOnly ? '' : undefined}
194
196
  data-suffix={suffix ? '' : undefined}
195
197
  data-ui="TextInput"
196
198
  display="flex"