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

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 (500) hide show
  1. package/README.md +2 -1
  2. package/dist/_chunks-cjs/_visual-editing.cjs +198 -862
  3. package/dist/_chunks-cjs/_visual-editing.cjs.map +1 -1
  4. package/dist/_chunks-cjs/refractor.cjs +0 -1
  5. package/dist/_chunks-cjs/refractor.cjs.map +1 -1
  6. package/dist/_chunks-es/_visual-editing.js +211 -874
  7. package/dist/_chunks-es/_visual-editing.js.map +1 -1
  8. package/dist/_chunks-es/refractor.js +0 -1
  9. package/dist/_chunks-es/refractor.js.map +1 -1
  10. package/dist/_visual-editing.d.cts +34 -100
  11. package/dist/_visual-editing.d.ts +34 -100
  12. package/dist/css.cjs +368 -4123
  13. package/dist/css.cjs.map +1 -1
  14. package/dist/css.d.cts +13095 -8462
  15. package/dist/css.d.ts +13095 -8462
  16. package/dist/css.js +368 -4124
  17. package/dist/css.js.map +1 -1
  18. package/dist/index.cjs +769 -141
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +93 -287
  21. package/dist/index.d.ts +93 -287
  22. package/dist/index.js +740 -112
  23. package/dist/index.js.map +1 -1
  24. package/dist/theme.cjs +31 -10
  25. package/dist/theme.cjs.map +1 -1
  26. package/dist/theme.d.cts +2 -2
  27. package/dist/theme.d.ts +2 -2
  28. package/dist/theme.js +31 -10
  29. package/dist/theme.js.map +1 -1
  30. package/dist/ui.css +21459 -24610
  31. package/package.json +17 -12
  32. package/src/cli/buildCommand.ts +1 -91
  33. package/src/core/_compat/theme/themeColorProvider.tsx +0 -2
  34. package/src/core/_compat/theme/themeProvider.tsx +0 -2
  35. package/src/core/components/autocomplete/autocomplete.tsx +15 -15
  36. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -2
  37. package/src/core/components/breadcrumbs/breadcrumbs.tsx +2 -4
  38. package/src/core/components/dialog/dialog.tsx +9 -13
  39. package/src/core/components/dialog/dialogCard.tsx +2 -10
  40. package/src/core/components/dialog/dialogContext.ts +4 -2
  41. package/src/core/components/dialog/dialogProvider.tsx +3 -4
  42. package/src/core/components/hotkeys/hotkeys.tsx +0 -2
  43. package/src/core/components/menu/menu.tsx +2 -4
  44. package/src/core/components/menu/menuButton.tsx +0 -2
  45. package/src/core/components/menu/menuDivider.tsx +2 -4
  46. package/src/core/components/menu/menuGroup.tsx +0 -2
  47. package/src/core/components/menu/menuItem.tsx +2 -4
  48. package/src/core/components/skeleton/codeSkeleton.tsx +6 -10
  49. package/src/core/components/skeleton/headingSkeleton.tsx +6 -10
  50. package/src/core/components/skeleton/labelSkeleton.tsx +6 -10
  51. package/src/core/components/skeleton/skeleton.tsx +4 -8
  52. package/src/core/components/skeleton/textSkeleton.tsx +6 -10
  53. package/src/core/components/tab/tab.tsx +0 -2
  54. package/src/core/components/tab/tabList.tsx +0 -2
  55. package/src/core/components/tab/tabPanel.tsx +0 -2
  56. package/src/core/components/toast/toast.tsx +6 -36
  57. package/src/core/components/toast/toastLayer.tsx +0 -2
  58. package/src/core/components/toast/toastProvider.tsx +2 -3
  59. package/src/core/components/tree/tree.tsx +0 -2
  60. package/src/core/components/tree/treeGroup.tsx +0 -2
  61. package/src/core/components/tree/treeItem.tsx +3 -5
  62. package/src/core/helpers/props.ts +18 -0
  63. package/src/core/hooks/index.ts +1 -0
  64. package/src/core/hooks/useArrayProp.ts +1 -4
  65. package/src/core/hooks/useResponsiveProp.ts +28 -0
  66. package/src/core/index.ts +0 -1
  67. package/src/core/lib/isArray.ts +3 -0
  68. package/src/core/primitives/_selectable/selectable.tsx +2 -6
  69. package/src/core/primitives/avatar/avatar.tsx +15 -17
  70. package/src/core/primitives/avatar/avatarCounter.tsx +14 -15
  71. package/src/core/primitives/avatar/avatarStack.tsx +14 -22
  72. package/src/core/primitives/badge/badge.tsx +3 -10
  73. package/src/core/primitives/box/box.tsx +90 -70
  74. package/src/core/primitives/button/button.tsx +10 -21
  75. package/src/core/primitives/card/card.tsx +5 -11
  76. package/src/core/primitives/card/cardProvider.tsx +2 -2
  77. package/src/core/primitives/card/useCard.ts +1 -0
  78. package/src/core/primitives/checkbox/checkbox.tsx +4 -6
  79. package/src/core/primitives/code/code.tsx +5 -10
  80. package/src/core/primitives/code/refractor.tsx +0 -2
  81. package/src/core/primitives/container/container.tsx +2 -11
  82. package/src/core/primitives/flex/flex.tsx +29 -4
  83. package/src/core/primitives/grid/grid.tsx +0 -2
  84. package/src/core/primitives/heading/heading.tsx +8 -13
  85. package/src/core/primitives/inline/inline.tsx +22 -6
  86. package/src/core/primitives/kbd/kbd.tsx +2 -4
  87. package/src/core/primitives/label/label.tsx +7 -12
  88. package/src/core/primitives/popover/popover.tsx +11 -9
  89. package/src/core/primitives/popover/popoverLayer.tsx +1 -3
  90. package/src/core/primitives/radio/radio.tsx +4 -5
  91. package/src/core/primitives/select/select.tsx +0 -2
  92. package/src/core/primitives/spinner/animatedSpinnerIcon.tsx +6 -10
  93. package/src/core/primitives/spinner/spinner.tsx +6 -6
  94. package/src/core/primitives/stack/stack.tsx +16 -6
  95. package/src/core/primitives/switch/switch.tsx +1 -4
  96. package/src/core/primitives/text/text.tsx +9 -19
  97. package/src/core/primitives/textArea/textArea.tsx +0 -2
  98. package/src/core/primitives/textInput/textInput.tsx +40 -47
  99. package/src/core/primitives/tooltip/tooltip.tsx +4 -12
  100. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -2
  101. package/src/core/primitives/tooltip/tooltipLayer.tsx +0 -2
  102. package/src/core/primitives/types.ts +6 -6
  103. package/src/core/types/flex.ts +3 -3
  104. package/src/core/utils/arrow/arrow.tsx +11 -5
  105. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -2
  106. package/src/core/utils/elementQuery/elementQuery.tsx +0 -2
  107. package/src/core/utils/layer/layer.tsx +3 -3
  108. package/src/core/utils/layer/layerCard.tsx +0 -2
  109. package/src/core/utils/layer/layerProvider.tsx +6 -7
  110. package/src/core/utils/portal/portal.tsx +0 -2
  111. package/src/core/utils/portal/portalProvider.tsx +0 -2
  112. package/src/core/utils/srOnly/srOnly.tsx +2 -9
  113. package/src/core/utils/virtualList/virtualList.tsx +0 -2
  114. package/src/css/__theme/index.ts +16 -0
  115. package/src/css/__theme/lib/contract/buildVarContract.ts +78 -0
  116. package/src/css/__theme/lib/contract/index.ts +4 -0
  117. package/src/css/__theme/lib/contract/types.ts +17 -0
  118. package/src/css/__theme/resolveTheme.ts +865 -0
  119. package/src/css/_responsiveClassName.ts +45 -0
  120. package/src/css/_responsiveStyle.css.ts +34 -0
  121. package/src/css/_style.css.ts +9 -0
  122. package/src/css/components/breadcrumbs/breadcrumbs.css.ts +6 -0
  123. package/src/css/components/breadcrumbs/breadcrumbs.ts +4 -3
  124. package/src/css/components/dialog/dialog.css.ts +81 -0
  125. package/src/css/components/dialog/dialog.ts +12 -12
  126. package/src/css/components/index.ts +6 -0
  127. package/src/css/components/menu/menu.css.ts +14 -0
  128. package/src/css/components/menu/menu.ts +6 -5
  129. package/src/css/components/skeleton/skeleton.css.ts +132 -0
  130. package/src/css/components/skeleton/skeleton.ts +8 -8
  131. package/src/css/components/skeleton/types.ts +9 -3
  132. package/src/css/components/toast/toast.css.ts +16 -0
  133. package/src/css/components/toast/toast.ts +3 -18
  134. package/src/css/components/tree/tree.css.ts +65 -0
  135. package/src/css/components/tree/tree.ts +4 -3
  136. package/src/css/defaultTheme.css.ts +468 -0
  137. package/src/css/index.ts +11 -37
  138. package/src/css/layers.css.ts +9 -0
  139. package/src/css/primitives/_arrow/_arrow.css.ts +68 -0
  140. package/src/css/primitives/_arrow/_arrow.ts +10 -5
  141. package/src/css/primitives/_input/_input.css.ts +258 -0
  142. package/src/css/primitives/_input/input.ts +10 -12
  143. package/src/css/primitives/_input/types.ts +1 -1
  144. package/src/css/primitives/_selectable/_selectable.css.ts +121 -0
  145. package/src/css/primitives/_selectable/selectable.ts +3 -3
  146. package/src/css/primitives/_selectable/types.ts +2 -1
  147. package/src/css/primitives/avatar/avatar.css.ts +175 -0
  148. package/src/css/primitives/avatar/avatar.ts +45 -10
  149. package/src/css/primitives/avatar/types.ts +1 -0
  150. package/src/css/primitives/badge/badge.css.ts +26 -0
  151. package/src/css/primitives/badge/badge.ts +2 -6
  152. package/src/css/primitives/badge/types.ts +4 -3
  153. package/src/css/primitives/box/box.css.ts +19 -0
  154. package/src/css/primitives/box/box.ts +39 -9
  155. package/src/css/primitives/box/types.ts +35 -8
  156. package/src/css/primitives/button/button.css.ts +285 -0
  157. package/src/css/primitives/button/button.ts +10 -7
  158. package/src/css/primitives/button/types.ts +10 -4
  159. package/src/css/primitives/card/card.css.ts +365 -0
  160. package/src/css/primitives/card/card.ts +5 -4
  161. package/src/css/primitives/card/types.ts +2 -3
  162. package/src/css/primitives/checkbox/checkbox.css.ts +193 -0
  163. package/src/css/primitives/checkbox/checkbox.ts +11 -5
  164. package/src/css/primitives/code/code.css.ts +271 -0
  165. package/src/css/primitives/code/code.ts +8 -4
  166. package/src/css/primitives/code/types.ts +3 -2
  167. package/src/css/primitives/container/container.css.ts +4 -0
  168. package/src/css/primitives/container/container.ts +9 -3
  169. package/src/css/primitives/container/types.ts +1 -0
  170. package/src/css/primitives/heading/heading.css.ts +85 -0
  171. package/src/css/primitives/heading/heading.ts +9 -10
  172. package/src/css/primitives/heading/types.ts +3 -2
  173. package/src/css/primitives/index.ts +24 -0
  174. package/src/css/primitives/kbd/kbd.css.ts +16 -0
  175. package/src/css/primitives/kbd/kbd.ts +3 -3
  176. package/src/css/primitives/kbd/types.ts +2 -3
  177. package/src/css/primitives/label/label.css.ts +85 -0
  178. package/src/css/primitives/label/label.ts +9 -4
  179. package/src/css/primitives/label/types.ts +3 -2
  180. package/src/css/primitives/popover/popover.css.ts +6 -0
  181. package/src/css/primitives/popover/popover.ts +6 -5
  182. package/src/css/primitives/radio/radio.css.ts +78 -0
  183. package/src/css/primitives/radio/radio.ts +14 -3
  184. package/src/css/primitives/select/select.css.ts +24 -0
  185. package/src/css/primitives/select/select.ts +3 -3
  186. package/src/css/primitives/spinner/index.ts +1 -0
  187. package/src/css/primitives/spinner/spinner.css.ts +23 -0
  188. package/src/css/primitives/spinner/spinner.ts +7 -5
  189. package/src/css/primitives/spinner/types.ts +4 -0
  190. package/src/css/primitives/stack/stack.css.ts +6 -0
  191. package/src/css/primitives/stack/stack.ts +4 -3
  192. package/src/css/primitives/switch/switch.css.ts +98 -0
  193. package/src/css/primitives/switch/switch.ts +8 -7
  194. package/src/css/primitives/text/text.css.ts +85 -0
  195. package/src/css/primitives/text/text.ts +9 -5
  196. package/src/css/primitives/text/types.ts +3 -2
  197. package/src/css/primitives/textArea/textArea.css.ts +4 -0
  198. package/src/css/primitives/textArea/textArea.ts +2 -2
  199. package/src/css/primitives/textArea/types.ts +4 -2
  200. package/src/css/primitives/textInput/textInput.css.ts +41 -0
  201. package/src/css/primitives/textInput/textInput.ts +5 -5
  202. package/src/css/primitives/textInput/types.ts +4 -2
  203. package/src/css/primitives/tooltip/index.ts +1 -0
  204. package/src/css/primitives/tooltip/tooltip.css.ts +6 -0
  205. package/src/css/primitives/tooltip/tooltip.ts +7 -3
  206. package/src/css/primitives/tooltip/types.ts +4 -0
  207. package/src/css/props/alignItems/alignItems.css.ts +22 -0
  208. package/src/css/props/alignItems/alignItems.ts +8 -0
  209. package/src/css/props/alignItems/index.ts +2 -0
  210. package/src/css/props/alignItems/types.ts +9 -0
  211. package/src/css/props/border/border.css.ts +65 -0
  212. package/src/css/props/border/border.ts +36 -0
  213. package/src/css/props/border/types.ts +13 -0
  214. package/src/css/props/boxSizing/boxSizing.css.ts +11 -0
  215. package/src/css/props/boxSizing/boxSizing.ts +10 -0
  216. package/src/css/{aspects → props}/boxSizing/types.ts +1 -3
  217. package/src/css/props/display/display.css.ts +56 -0
  218. package/src/css/props/display/display.ts +17 -0
  219. package/src/css/props/flex/flex.css.ts +52 -0
  220. package/src/css/props/flex/flex.ts +8 -0
  221. package/src/css/props/flex/types.ts +9 -0
  222. package/src/css/props/flexDirection/flexDirection.css.ts +19 -0
  223. package/src/css/props/flexDirection/flexDirection.ts +8 -0
  224. package/src/css/props/flexDirection/index.ts +2 -0
  225. package/src/css/props/flexDirection/types.ts +9 -0
  226. package/src/css/props/flexWrap/flexWrap.css.ts +16 -0
  227. package/src/css/props/flexWrap/flexWrap.ts +8 -0
  228. package/src/css/props/flexWrap/index.ts +2 -0
  229. package/src/css/props/flexWrap/types.ts +9 -0
  230. package/src/css/props/font/font.css.ts +93 -0
  231. package/src/css/props/font/font.ts +8 -0
  232. package/src/css/props/gap/gap.css.ts +40 -0
  233. package/src/css/props/gap/gap.ts +13 -0
  234. package/src/css/props/gridAutoColumns/gridAutoColumns.css.ts +19 -0
  235. package/src/css/props/gridAutoColumns/gridAutoColumns.ts +8 -0
  236. package/src/css/props/gridAutoColumns/index.ts +2 -0
  237. package/src/css/props/gridAutoColumns/types.ts +19 -0
  238. package/src/css/props/gridAutoFlow/gridAutoFlow.css.ts +19 -0
  239. package/src/css/props/gridAutoFlow/gridAutoFlow.ts +8 -0
  240. package/src/css/props/gridAutoFlow/index.ts +2 -0
  241. package/src/css/props/gridAutoFlow/types.ts +13 -0
  242. package/src/css/props/gridAutoRows/gridAutoRows.css.ts +19 -0
  243. package/src/css/props/gridAutoRows/gridAutoRows.ts +8 -0
  244. package/src/css/props/gridAutoRows/index.ts +2 -0
  245. package/src/css/props/gridAutoRows/types.ts +13 -0
  246. package/src/css/props/gridColumn/gridColumn.css.ts +49 -0
  247. package/src/css/props/gridColumn/gridColumn.ts +8 -0
  248. package/src/css/props/gridColumn/index.ts +2 -0
  249. package/src/css/props/gridColumn/types.ts +19 -0
  250. package/src/css/props/gridColumnEnd/gridColumnEnd.css.ts +46 -0
  251. package/src/css/props/gridColumnEnd/gridColumnEnd.ts +8 -0
  252. package/src/css/props/gridColumnEnd/index.ts +2 -0
  253. package/src/css/props/gridColumnEnd/types.ts +19 -0
  254. package/src/css/props/gridColumnStart/gridColumnStart.css.ts +46 -0
  255. package/src/css/props/gridColumnStart/gridColumnStart.ts +11 -0
  256. package/src/css/props/gridColumnStart/index.ts +2 -0
  257. package/src/css/props/gridColumnStart/types.ts +19 -0
  258. package/src/css/props/gridRow/gridRow.css.ts +49 -0
  259. package/src/css/props/gridRow/gridRow.ts +8 -0
  260. package/src/css/props/gridRow/index.ts +2 -0
  261. package/src/css/props/gridRow/types.ts +19 -0
  262. package/src/css/props/gridRowEnd/gridRowEnd.css.ts +46 -0
  263. package/src/css/props/gridRowEnd/gridRowEnd.ts +8 -0
  264. package/src/css/props/gridRowEnd/index.ts +2 -0
  265. package/src/css/props/gridRowEnd/types.ts +19 -0
  266. package/src/css/props/gridRowStart/gridRowStart.css.ts +46 -0
  267. package/src/css/props/gridRowStart/gridRowStart.ts +8 -0
  268. package/src/css/props/gridRowStart/index.ts +2 -0
  269. package/src/css/props/gridRowStart/types.ts +19 -0
  270. package/src/css/props/gridTemplateColumns/gridTemplateColumns.css.ts +43 -0
  271. package/src/css/props/gridTemplateColumns/gridTemplateColumns.ts +8 -0
  272. package/src/css/props/gridTemplateColumns/index.ts +2 -0
  273. package/src/css/props/gridTemplateColumns/types.ts +19 -0
  274. package/src/css/props/gridTemplateRows/gridTemplateRows.css.ts +43 -0
  275. package/src/css/props/gridTemplateRows/gridTemplateRows.ts +8 -0
  276. package/src/css/props/gridTemplateRows/index.ts +2 -0
  277. package/src/css/props/gridTemplateRows/types.ts +19 -0
  278. package/src/css/props/height/height.css.ts +25 -0
  279. package/src/css/props/height/height.ts +8 -0
  280. package/src/css/{aspects → props}/height/index.ts +1 -0
  281. package/src/css/props/height/types.ts +15 -0
  282. package/src/css/{aspects → props}/index.ts +16 -3
  283. package/src/css/props/inset/inset.css.ts +37 -0
  284. package/src/css/props/inset/inset.ts +21 -0
  285. package/src/css/props/justifyContent/index.ts +2 -0
  286. package/src/css/props/justifyContent/justifyContent.css.ts +25 -0
  287. package/src/css/props/justifyContent/justifyContent.ts +8 -0
  288. package/src/css/props/justifyContent/types.ts +15 -0
  289. package/src/css/props/margin/margin.css.ts +117 -0
  290. package/src/css/props/margin/margin.ts +25 -0
  291. package/src/css/props/maxWidth/maxWidth.css.ts +32 -0
  292. package/src/css/props/maxWidth/maxWidth.ts +8 -0
  293. package/src/css/{aspects → props}/maxWidth/types.ts +4 -1
  294. package/src/css/props/minHeight/minHeight.css.ts +13 -0
  295. package/src/css/props/minHeight/minHeight.ts +8 -0
  296. package/src/css/props/minWidth/minWidth.css.ts +25 -0
  297. package/src/css/props/minWidth/minWidth.ts +8 -0
  298. package/src/css/props/outline/index.ts +2 -0
  299. package/src/css/props/outline/outline.css.ts +10 -0
  300. package/src/css/props/outline/outline.ts +8 -0
  301. package/src/css/props/outline/types.ts +7 -0
  302. package/src/css/props/overflow/overflow.css.ts +16 -0
  303. package/src/css/props/overflow/overflow.ts +8 -0
  304. package/src/css/props/overflow/types.ts +17 -0
  305. package/src/css/props/padding/padding.css.ts +87 -0
  306. package/src/css/props/padding/padding.ts +25 -0
  307. package/src/css/props/padding/types.ts +17 -0
  308. package/src/css/props/pointerEvents/pointerEvents.css.ts +13 -0
  309. package/src/css/props/pointerEvents/pointerEvents.ts +8 -0
  310. package/src/css/props/position/position.css.ts +22 -0
  311. package/src/css/props/position/position.ts +8 -0
  312. package/src/css/props/radius/radius.css.ts +21 -0
  313. package/src/css/props/radius/radius.ts +8 -0
  314. package/src/css/props/shadow/shadow.css.ts +23 -0
  315. package/src/css/props/shadow/shadow.ts +8 -0
  316. package/src/css/props/textAlign/textAlign.css.ts +22 -0
  317. package/src/css/props/textAlign/textAlign.ts +8 -0
  318. package/src/css/props/textOverflow/textOverflow.css.ts +13 -0
  319. package/src/css/props/textOverflow/textOverflow.ts +8 -0
  320. package/src/css/{aspects → props}/textOverflow/types.ts +5 -2
  321. package/src/css/{aspects → props}/width/types.ts +1 -1
  322. package/src/css/props/width/width.css.ts +28 -0
  323. package/src/css/props/width/width.ts +8 -0
  324. package/src/css/types.ts +223 -42
  325. package/src/css/util.ts +0 -10
  326. package/src/css/utils/index.ts +1 -0
  327. package/src/css/utils/srOnly/srOnly.css.ts +10 -0
  328. package/src/css/utils/srOnly/srOnly.ts +3 -3
  329. package/src/css/vars.css.ts +676 -0
  330. package/src/theme/v3/buildTheme_v3.ts +7 -2
  331. package/src/theme/v3/defaultFonts.ts +4 -4
  332. package/src/theme/v3/defaultTokens.ts +3 -3
  333. package/src/theme/v3/types.ts +3 -2
  334. package/src/theme/versioning/v3_v2.ts +24 -3
  335. package/dist/_chunks-cjs/buildCommand.cjs +0 -71
  336. package/dist/_chunks-cjs/buildCommand.cjs.map +0 -1
  337. package/dist/cli.cjs +0 -357
  338. package/dist/cli.cjs.map +0 -1
  339. package/dist/cli.d.cts +0 -1
  340. package/dist/ui-system.css +0 -24528
  341. package/dist/ui-system.min.css +0 -1
  342. package/dist/ui-theme.css +0 -1184
  343. package/dist/ui-theme.min.css +0 -1
  344. package/dist/ui.min.css +0 -1
  345. package/src/core/StyleTags.tsx +0 -18
  346. package/src/css/_compileStyle.ts +0 -156
  347. package/src/css/_compileSystem.ts +0 -7
  348. package/src/css/_compileTheme.ts +0 -13
  349. package/src/css/_hash.ts +0 -9
  350. package/src/css/_mergeStyles.ts +0 -24
  351. package/src/css/_resp.ts +0 -31
  352. package/src/css/_responsiveRule.ts +0 -38
  353. package/src/css/_scopeClassName.ts +0 -9
  354. package/src/css/_scopeClassNames.ts +0 -12
  355. package/src/css/_system.style.ts +0 -166
  356. package/src/css/aspects/border/border.style.ts +0 -13
  357. package/src/css/aspects/border/border.ts +0 -14
  358. package/src/css/aspects/border/types.ts +0 -10
  359. package/src/css/aspects/boxSizing/boxSizing.style.ts +0 -10
  360. package/src/css/aspects/boxSizing/boxSizing.ts +0 -8
  361. package/src/css/aspects/display/display.style.ts +0 -34
  362. package/src/css/aspects/display/display.ts +0 -8
  363. package/src/css/aspects/flex/flex.ts +0 -13
  364. package/src/css/aspects/flex/flexAlign.style.ts +0 -12
  365. package/src/css/aspects/flex/flexDirection.style.ts +0 -11
  366. package/src/css/aspects/flex/flexJustify.style.ts +0 -13
  367. package/src/css/aspects/flex/flexWrap.style.ts +0 -10
  368. package/src/css/aspects/flex/types.ts +0 -27
  369. package/src/css/aspects/flexItem/flex.style.ts +0 -22
  370. package/src/css/aspects/flexItem/flexItem.ts +0 -8
  371. package/src/css/aspects/flexItem/index.ts +0 -2
  372. package/src/css/aspects/flexItem/types.ts +0 -25
  373. package/src/css/aspects/font/font.style.ts +0 -83
  374. package/src/css/aspects/font/font.ts +0 -7
  375. package/src/css/aspects/gap/gap.style.ts +0 -21
  376. package/src/css/aspects/gap/gap.ts +0 -8
  377. package/src/css/aspects/grid/grid.ts +0 -14
  378. package/src/css/aspects/grid/gridAutoColumns.style.ts +0 -11
  379. package/src/css/aspects/grid/gridAutoFlow.style.ts +0 -11
  380. package/src/css/aspects/grid/gridAutoRows.style.ts +0 -11
  381. package/src/css/aspects/grid/gridColumns.style.ts +0 -18
  382. package/src/css/aspects/grid/gridRows.style.ts +0 -18
  383. package/src/css/aspects/grid/index.ts +0 -2
  384. package/src/css/aspects/grid/types.ts +0 -25
  385. package/src/css/aspects/gridItem/gridColumn.style.ts +0 -20
  386. package/src/css/aspects/gridItem/gridColumnEnd.style.ts +0 -20
  387. package/src/css/aspects/gridItem/gridColumnStart.style.ts +0 -20
  388. package/src/css/aspects/gridItem/gridItem.ts +0 -15
  389. package/src/css/aspects/gridItem/gridRow.style.ts +0 -20
  390. package/src/css/aspects/gridItem/gridRowEnd.style.ts +0 -20
  391. package/src/css/aspects/gridItem/gridRowStart.style.ts +0 -20
  392. package/src/css/aspects/gridItem/index.ts +0 -2
  393. package/src/css/aspects/gridItem/types.ts +0 -30
  394. package/src/css/aspects/height/height.style.ts +0 -9
  395. package/src/css/aspects/height/height.ts +0 -16
  396. package/src/css/aspects/inset/inset.style.ts +0 -12
  397. package/src/css/aspects/inset/inset.ts +0 -14
  398. package/src/css/aspects/margin/margin.style.ts +0 -56
  399. package/src/css/aspects/margin/margin.ts +0 -16
  400. package/src/css/aspects/maxWidth/maxWidth.style.ts +0 -16
  401. package/src/css/aspects/maxWidth/maxWidth.ts +0 -8
  402. package/src/css/aspects/minHeight/minHeight.style.ts +0 -9
  403. package/src/css/aspects/minHeight/minHeight.ts +0 -8
  404. package/src/css/aspects/minWidth/minWidth.style.ts +0 -13
  405. package/src/css/aspects/minWidth/minWidth.ts +0 -8
  406. package/src/css/aspects/outline/outline.style.ts +0 -9
  407. package/src/css/aspects/overflow/overflow.style.ts +0 -11
  408. package/src/css/aspects/overflow/overflow.ts +0 -12
  409. package/src/css/aspects/overflow/types.ts +0 -11
  410. package/src/css/aspects/padding/padding.style.ts +0 -43
  411. package/src/css/aspects/padding/padding.ts +0 -16
  412. package/src/css/aspects/padding/types.ts +0 -14
  413. package/src/css/aspects/pointerEvents/pointerEvents.style.ts +0 -13
  414. package/src/css/aspects/pointerEvents/pointerEvents.ts +0 -7
  415. package/src/css/aspects/position/position.style.ts +0 -12
  416. package/src/css/aspects/position/position.ts +0 -8
  417. package/src/css/aspects/radius/radius.style.ts +0 -16
  418. package/src/css/aspects/radius/radius.ts +0 -8
  419. package/src/css/aspects/shadow/shadow.style.ts +0 -24
  420. package/src/css/aspects/shadow/shadow.ts +0 -8
  421. package/src/css/aspects/textAlign/textAlign.style.ts +0 -26
  422. package/src/css/aspects/textAlign/textAlign.ts +0 -8
  423. package/src/css/aspects/textOverflow/textOverflow.style.ts +0 -21
  424. package/src/css/aspects/textOverflow/textOverflow.ts +0 -7
  425. package/src/css/aspects/width/width.style.ts +0 -11
  426. package/src/css/aspects/width/width.ts +0 -8
  427. package/src/css/components/breadcrumbs/breadcrumbs.style.ts +0 -9
  428. package/src/css/components/dialog/dialog.style.ts +0 -77
  429. package/src/css/components/menu/menu.style.ts +0 -17
  430. package/src/css/components/skeleton/skeleton.style.ts +0 -104
  431. package/src/css/components/toast/toast.style.ts +0 -20
  432. package/src/css/components/tree/tree.style.ts +0 -39
  433. package/src/css/prefix/constants.ts +0 -6
  434. package/src/css/prefix/index.ts +0 -2
  435. package/src/css/prefix/types.ts +0 -1
  436. package/src/css/primitives/_arrow/_arrow.style.ts +0 -69
  437. package/src/css/primitives/_input/_input.style.ts +0 -235
  438. package/src/css/primitives/_selectable/_selectable.style.ts +0 -129
  439. package/src/css/primitives/avatar/avatar.style.ts +0 -171
  440. package/src/css/primitives/badge/badge.style.ts +0 -21
  441. package/src/css/primitives/box/box.style.ts +0 -22
  442. package/src/css/primitives/button/button.style.ts +0 -275
  443. package/src/css/primitives/card/card.style.ts +0 -295
  444. package/src/css/primitives/checkbox/checkbox.style.ts +0 -178
  445. package/src/css/primitives/code/code.style.ts +0 -61
  446. package/src/css/primitives/container/container.style.ts +0 -10
  447. package/src/css/primitives/heading/heading.style.ts +0 -56
  448. package/src/css/primitives/kbd/kbd.style.ts +0 -19
  449. package/src/css/primitives/label/label.style.ts +0 -52
  450. package/src/css/primitives/popover/popover.style.ts +0 -9
  451. package/src/css/primitives/radio/radio.style.ts +0 -84
  452. package/src/css/primitives/select/select.style.ts +0 -24
  453. package/src/css/primitives/spinner/spinner.style.ts +0 -22
  454. package/src/css/primitives/stack/stack.style.ts +0 -13
  455. package/src/css/primitives/switch/switch.style.ts +0 -102
  456. package/src/css/primitives/text/text.style.ts +0 -65
  457. package/src/css/primitives/textArea/textArea.style.ts +0 -11
  458. package/src/css/primitives/textInput/textInput.style.ts +0 -46
  459. package/src/css/primitives/token/token.style.ts +0 -50
  460. package/src/css/primitives/tooltip/tooltip.style.ts +0 -9
  461. package/src/css/renderColor.ts +0 -31
  462. package/src/css/responsiveRules.ts +0 -18
  463. package/src/css/theme/index.ts +0 -14
  464. package/src/css/theme/lib/contract/buildVarContract.ts +0 -76
  465. package/src/css/theme/lib/contract/index.ts +0 -2
  466. package/src/css/theme/lib/contract/types.ts +0 -15
  467. package/src/css/theme/resolveTheme.ts +0 -863
  468. package/src/css/utils/srOnly/srOnly.style.ts +0 -14
  469. package/src/css/{aspects → props}/border/index.ts +0 -0
  470. package/src/css/{aspects → props}/boxSizing/index.ts +0 -0
  471. package/src/css/{aspects → props}/display/index.ts +0 -0
  472. package/src/css/{aspects → props}/display/types.ts +0 -0
  473. package/src/css/{aspects → props}/flex/index.ts +0 -0
  474. package/src/css/{aspects → props}/font/index.ts +0 -0
  475. package/src/css/{aspects → props}/font/types.ts +0 -0
  476. package/src/css/{aspects → props}/gap/index.ts +0 -0
  477. package/src/css/{aspects → props}/gap/types.ts +0 -0
  478. package/src/css/{aspects → props}/inset/index.ts +0 -0
  479. package/src/css/{aspects → props}/inset/types.ts +0 -0
  480. package/src/css/{aspects → props}/margin/index.ts +0 -0
  481. package/src/css/{aspects → props}/margin/types.ts +2 -2
  482. /package/src/css/{aspects → props}/maxWidth/index.ts +0 -0
  483. /package/src/css/{aspects → props}/minHeight/index.ts +0 -0
  484. /package/src/css/{aspects → props}/minHeight/types.ts +0 -0
  485. /package/src/css/{aspects → props}/minWidth/index.ts +0 -0
  486. /package/src/css/{aspects → props}/minWidth/types.ts +0 -0
  487. /package/src/css/{aspects → props}/overflow/index.ts +0 -0
  488. /package/src/css/{aspects → props}/padding/index.ts +0 -0
  489. /package/src/css/{aspects → props}/pointerEvents/index.ts +0 -0
  490. /package/src/css/{aspects → props}/pointerEvents/types.ts +0 -0
  491. /package/src/css/{aspects → props}/position/index.ts +0 -0
  492. /package/src/css/{aspects → props}/position/types.ts +0 -0
  493. /package/src/css/{aspects → props}/radius/index.ts +0 -0
  494. /package/src/css/{aspects → props}/radius/types.ts +0 -0
  495. /package/src/css/{aspects → props}/shadow/index.ts +0 -0
  496. /package/src/css/{aspects → props}/shadow/types.ts +0 -0
  497. /package/src/css/{aspects → props}/textAlign/index.ts +0 -0
  498. /package/src/css/{aspects → props}/textAlign/types.ts +0 -0
  499. /package/src/css/{aspects → props}/textOverflow/index.ts +0 -0
  500. /package/src/css/{aspects → props}/width/index.ts +0 -0
@@ -1,10 +1,10 @@
1
- import {_composeClassNames, type ResponsiveProp, textSkeleton} from '@sanity/ui/css'
1
+ import {type ResponsiveProp, textSkeleton} from '@sanity/ui/css'
2
2
  import type {FontTextSize} from '@sanity/ui/theme'
3
3
 
4
4
  import type {Props} from '../../types'
5
5
  import {Skeleton, type SkeletonElementType, type SkeletonOwnProps} from './skeleton'
6
6
 
7
- /** @public */
7
+ /** @beta */
8
8
  export const DEFAULT_TEXT_SKELETON_ELEMENT = 'div'
9
9
 
10
10
  /** @beta */
@@ -12,7 +12,7 @@ export type TextSkeletonOwnProps = SkeletonOwnProps & {
12
12
  size?: ResponsiveProp<FontTextSize>
13
13
  }
14
14
 
15
- /** @public */
15
+ /** @beta */
16
16
  export type TextSkeletonElementType = SkeletonElementType
17
17
 
18
18
  /**
@@ -40,14 +40,10 @@ export function TextSkeleton<
40
40
  return (
41
41
  <Skeleton
42
42
  {...rest}
43
- className={_composeClassNames(
43
+ className={textSkeleton({
44
44
  className,
45
- textSkeleton({
46
- size,
47
- }),
48
- )}
45
+ size,
46
+ })}
49
47
  />
50
48
  )
51
49
  }
52
-
53
- TextSkeleton.displayName = 'TextSkeleton'
@@ -105,5 +105,3 @@ export function Tab<E extends TabElementType = typeof DEFAULT_TAB_ELEMENT>(props
105
105
  />
106
106
  )
107
107
  }
108
-
109
- Tab.displayName = 'Tab'
@@ -90,8 +90,6 @@ export function TabList<E extends TabListElementType = typeof DEFAULT_TAB_LIST_E
90
90
  )
91
91
  }
92
92
 
93
- TabList.displayName = 'TabList'
94
-
95
93
  function _isReactElement(node: unknown): node is ReactElement<Props<TabProps, 'button'>> {
96
94
  return Boolean(node)
97
95
  }
@@ -45,5 +45,3 @@ export function TabPanel<E extends TabPanelElementType = typeof DEFAULT_TAB_PANE
45
45
  </Box>
46
46
  )
47
47
  }
48
-
49
- TabPanel.displayName = 'TabPanel'
@@ -1,11 +1,5 @@
1
1
  import {CloseIcon} from '@sanity/icons'
2
- import {
3
- type RadiusStyleProps,
4
- toast,
5
- toastLoadingBar,
6
- toastLoadingBarMask,
7
- toastLoadingBarProgress,
8
- } from '@sanity/ui/css'
2
+ import {type RadiusStyleProps, toast} from '@sanity/ui/css'
9
3
  import {motion, type Variant, type Variants} from 'framer-motion'
10
4
  import type {ReactNode} from 'react'
11
5
 
@@ -23,7 +17,9 @@ export type ToastOwnProps = RadiusStyleProps & {
23
17
  onClose?: () => void
24
18
  title?: ReactNode
25
19
  status?: 'error' | 'warning' | 'success' | 'info'
20
+ /** @deprecated */
26
21
  duration?: number
22
+ /** @deprecated */
27
23
  updatedAt?: number
28
24
  }
29
25
 
@@ -54,10 +50,6 @@ const BUTTON_TONE = {
54
50
  info: 'neutral',
55
51
  } as const
56
52
 
57
- // Support pattern used by Sanity Studio, that works around the lack of `duration: Infinity` support in older @sanity/ui versions
58
- // https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value
59
- const LONG_ENOUGH_BUT_NOT_TOO_LONG = 1000 * 60 * 60 * 24 * 24
60
-
61
53
  /**
62
54
  * The `Toast` component gives feedback to users when an action has taken place.
63
55
  *
@@ -72,11 +64,13 @@ export function Toast<E extends ToastElementType = typeof DEFAULT_TOAST_ELEMENT>
72
64
  as = DEFAULT_TOAST_ELEMENT,
73
65
  closable,
74
66
  description,
67
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
75
68
  duration,
76
69
  onClose,
77
70
  radius = 3,
78
71
  title,
79
72
  status,
73
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
80
74
  updatedAt,
81
75
  ...rest
82
76
  } = props as ToastProps<typeof DEFAULT_TOAST_ELEMENT>
@@ -90,7 +84,7 @@ export function Toast<E extends ToastElementType = typeof DEFAULT_TOAST_ELEMENT>
90
84
  const visualDuration: number = prefersReducedMotion ? 0 : 0.26
91
85
  const transition = visualDuration ? {type: 'spring', visualDuration, bounce: 0.25} : {duration: 0}
92
86
 
93
- const hasDuration = duration && isFinite(duration) && duration < LONG_ENOUGH_BUT_NOT_TOO_LONG
87
+ // const hasDuration = duration && isFinite(duration) && duration < LONG_ENOUGH_BUT_NOT_TOO_LONG
94
88
  const initial: ContainerVariants[] = ['hidden', 'initial']
95
89
  const animate: ContainerVariants[] = ['visible', 'slideIn']
96
90
  const exit: ContainerVariants[] = ['hidden', 'slideOut']
@@ -102,7 +96,6 @@ export function Toast<E extends ToastElementType = typeof DEFAULT_TOAST_ELEMENT>
102
96
  data-ui="Toast"
103
97
  role={role}
104
98
  {...rest}
105
- data-has-duration={hasDuration ? '' : undefined}
106
99
  custom={visualDuration}
107
100
  radius={radius}
108
101
  shadow={2}
@@ -145,32 +138,10 @@ export function Toast<E extends ToastElementType = typeof DEFAULT_TOAST_ELEMENT>
145
138
  </Box>
146
139
  )}
147
140
  </MotionFlex>
148
- {hasDuration && (
149
- <MotionBox className={toastLoadingBar()} variants={content} transition={transition}>
150
- <Card className={toastLoadingBarMask()} tone={cardTone} radius={radius} />
151
- <MotionCard
152
- // const MotionToast = motion.create(Card) // StyledToast
153
- // const MotionFlex = motion.create(Flex)
154
- // const MotionText = motion.create(Text)
155
- // const MotionLoadingBar = motion.create(Box) // LoadingBar
156
- // const MotionLoadingBarProgress = motion.create(Card)
157
-
158
- className={toastLoadingBarProgress()}
159
- key={`progress-${updatedAt}`}
160
- tone={cardTone}
161
- initial={{scaleX: 0}}
162
- animate={{scaleX: 1}}
163
- transition={{delay: visualDuration, duration: duration / 1_000, ease: 'linear'}}
164
- onAnimationComplete={onClose}
165
- />
166
- </MotionBox>
167
- )}
168
141
  </MotionCard>
169
142
  )
170
143
  }
171
144
 
172
- Toast.displayName = 'Toast'
173
-
174
145
  const container = {
175
146
  initial: {y: 32, scale: 0.5, zIndex: 1},
176
147
  hidden: {opacity: 0},
@@ -212,4 +183,3 @@ const content = {
212
183
  const MotionCard = motion.create(Card)
213
184
  const MotionFlex = motion.create(Flex)
214
185
  const MotionText = motion.create(Text)
215
- const MotionBox = motion.create(Box)
@@ -52,5 +52,3 @@ export function ToastLayer<E extends ToastLayerElementType = typeof DEFAULT_TOAS
52
52
  </Grid>
53
53
  )
54
54
  }
55
-
56
- ToastLayer.displayName = 'ToastLayer'
@@ -1,3 +1,4 @@
1
+ import type {ResponsiveProp} from '@sanity/ui/css'
1
2
  import {AnimatePresence} from 'framer-motion'
2
3
  import {startTransition, useMemo, useState} from 'react'
3
4
 
@@ -19,7 +20,7 @@ type ToastState = {
19
20
  /** @public */
20
21
  export interface ToastProviderProps extends Omit<ToastLayerProps, 'children'> {
21
22
  children?: React.ReactNode
22
- zOffset?: number | number[]
23
+ zOffset?: ResponsiveProp<number>
23
24
  }
24
25
 
25
26
  /** @public */
@@ -105,5 +106,3 @@ export function ToastProvider(props: ToastProviderProps): React.JSX.Element {
105
106
  </ToastContext.Provider>
106
107
  )
107
108
  }
108
-
109
- ToastProvider.displayName = 'ToastProvider'
@@ -247,5 +247,3 @@ export function Tree<E extends TreeElementType = typeof DEFAULT_TREE_ELEMENT>(pr
247
247
  </TreeContext.Provider>
248
248
  )
249
249
  }
250
-
251
- Tree.displayName = 'Tree'
@@ -46,5 +46,3 @@ export const TreeGroup = memo(function TreeGroup(
46
46
  </Stack>
47
47
  )
48
48
  })
49
-
50
- TreeGroup.displayName = 'TreeGroup'
@@ -1,5 +1,5 @@
1
1
  import {ToggleArrowRightIcon} from '@sanity/icons'
2
- import {_composeClassNames, type ResponsiveProp, treeItem, vars} from '@sanity/ui/css'
2
+ import {type ResponsiveProp, treeItem, vars} from '@sanity/ui/css'
3
3
  import type {FontTextSize, Space, ThemeFontWeightKey} from '@sanity/ui/theme'
4
4
  import {
5
5
  type ElementType,
@@ -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={treeItem({className})}
170
170
  onClick={handleClick}
171
171
  ref={rootRef as Ref<HTMLLIElement>}
172
172
  role="none"
@@ -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={treeItem({className})}
207
207
  onClick={handleClick}
208
208
  onKeyDown={handleKeyDown}
209
209
  ref={rootRef as Ref<HTMLAnchorElement>}
@@ -228,5 +228,3 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
228
228
  </Box>
229
229
  )
230
230
  }
231
-
232
- TreeItem.displayName = 'TreeItem'
@@ -1,4 +1,8 @@
1
+ import type {Breakpoint, ResponsiveProp} from '@sanity/ui/css'
2
+
1
3
  import {EMPTY_ARRAY} from '../constants'
4
+ import {isArray} from '../lib/isArray'
5
+ import {isRecord} from '../lib/isRecord'
2
6
 
3
7
  /**
4
8
  * @internal
@@ -8,3 +12,17 @@ export function _getArrayProp<T>(val: T | T[] | undefined, defaultVal?: T[]): T[
8
12
 
9
13
  return Array.isArray(val) ? val : [val]
10
14
  }
15
+
16
+ /**
17
+ * @internal
18
+ */
19
+ export function _getResponsiveProp<T>(
20
+ val: ResponsiveProp<T> | undefined,
21
+ defaultVal?: Partial<Record<Breakpoint, T>>,
22
+ ): Partial<Record<Breakpoint, T>> {
23
+ if (val === undefined) {
24
+ return (defaultVal || EMPTY_ARRAY) as Partial<Record<Breakpoint, T>>
25
+ }
26
+
27
+ return (isArray(val) || isRecord(val) ? val : [val]) as Partial<Record<Breakpoint, T>>
28
+ }
@@ -10,3 +10,4 @@ export * from './useMatchMedia'
10
10
  export * from './useMediaIndex'
11
11
  export * from './usePrefersDark'
12
12
  export * from './usePrefersReducedMotion'
13
+ export * from './useResponsiveProp'
@@ -2,14 +2,11 @@ import {useState} from 'react'
2
2
 
3
3
  import {_getArrayProp} from '../helpers'
4
4
 
5
- /** @beta */
6
- // export type ArrayPropPrimitive = string | number | boolean | undefined | null
7
-
8
5
  /**
9
6
  * This API might change. DO NOT USE IN PRODUCTION.
10
7
  * @beta
8
+ * @deprecated Use `useResponsiveProp` instead.
11
9
  */
12
- // export function useArrayProp<T extends ArrayPropPrimitive = ArrayPropPrimitive>(
13
10
  export function useArrayProp<T>(val: T | T[] | undefined, defaultVal?: T[]): T[] {
14
11
  const [[cachedVal, cachedHash], setCache] = useState<[T[], string]>(() => [
15
12
  _getArrayProp(val, defaultVal),
@@ -0,0 +1,28 @@
1
+ import type {Breakpoint, ResponsiveProp} from '@sanity/ui/css'
2
+ import {useState} from 'react'
3
+
4
+ import {_getResponsiveProp} from '../helpers'
5
+
6
+ /**
7
+ * This API might change. DO NOT USE IN PRODUCTION.
8
+ * @beta
9
+ */
10
+ export function useResponsiveProp<T>(
11
+ val: ResponsiveProp<T> | undefined,
12
+ defaultVal?: Partial<Record<Breakpoint, T>>,
13
+ ): Partial<Record<Breakpoint, T>> {
14
+ const [[cachedVal, cachedHash], setCache] = useState<[Partial<Record<Breakpoint, T>>, string]>(
15
+ () => [_getResponsiveProp(val, defaultVal), JSON.stringify(val ?? defaultVal)],
16
+ )
17
+
18
+ const hash = JSON.stringify(val ?? defaultVal)
19
+
20
+ if (hash !== cachedHash) {
21
+ // If the cached hash has changed, update the cache right away.
22
+ // Calling setState during render is fine in this case, and preferred over a useEffect loop
23
+ // https://19.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes
24
+ setCache([_getResponsiveProp(val, defaultVal), hash])
25
+ }
26
+
27
+ return cachedVal
28
+ }
package/src/core/index.ts CHANGED
@@ -4,6 +4,5 @@ export * from './helpers'
4
4
  export * from './hooks'
5
5
  export * from './observers'
6
6
  export * from './primitives'
7
- export * from './StyleTags'
8
7
  export * from './types'
9
8
  export * from './utils'
@@ -0,0 +1,3 @@
1
+ export function isArray(val: unknown): val is unknown[] {
2
+ return Array.isArray(val)
3
+ }
@@ -1,4 +1,4 @@
1
- import {_composeClassNames, _selectable, type SelectableStyleProps} from '@sanity/ui/css'
1
+ import {_selectable, type SelectableStyleProps} from '@sanity/ui/css'
2
2
 
3
3
  import type {ComponentType, Props, SelectableTone} from '../../types'
4
4
  import {Box, type BoxOwnProps} from '../box'
@@ -36,9 +36,5 @@ export function Selectable<E extends SelectableElementType = typeof DEFAULT_SELE
36
36
  ...rest
37
37
  } = props as SelectableProps<typeof DEFAULT_SELECTABLE_ELEMENT>
38
38
 
39
- return (
40
- <Box {...rest} as={as} className={_composeClassNames(className, _selectable({radius, tone}))} />
41
- )
39
+ return <Box {...rest} as={as} className={_selectable({className, radius, tone})} />
42
40
  }
43
-
44
- Selectable.displayName = 'Selectable'
@@ -1,21 +1,21 @@
1
1
  import {
2
- _composeClassNames,
3
2
  avatar,
4
3
  avatarArrow,
5
4
  avatarImage,
5
+ avatarImageOutline,
6
6
  avatarInitials,
7
7
  type ResponsiveProp,
8
8
  } from '@sanity/ui/css'
9
- import type {AvatarColor} from '@sanity/ui/theme'
9
+ import type {AvatarColor, FontLabelSize} from '@sanity/ui/theme'
10
10
  import {useCallback, useEffect, useMemo, useState} from 'react'
11
11
 
12
- import {useArrayProp} from '../../hooks'
12
+ import {useResponsiveProp} from '../../hooks'
13
13
  import type {AvatarPosition, AvatarSize, AvatarStatus, ComponentType, Props} from '../../types'
14
14
  import {Box} from '../box'
15
15
  import {Label} from '../label'
16
16
 
17
17
  /** @public */
18
- export const DEFAULT_AVATAR_ELEMENT = 'div'
18
+ export const DEFAULT_AVATAR_ELEMENT = 'span'
19
19
 
20
20
  /** @public */
21
21
  export interface AvatarOwnProps {
@@ -67,7 +67,7 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
67
67
  ...rest
68
68
  } = props as AvatarProps<typeof DEFAULT_AVATAR_ELEMENT>
69
69
 
70
- const size = useArrayProp(sizeProp)
70
+ const size = useResponsiveProp(sizeProp)
71
71
 
72
72
  const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(
73
73
  animateArrowFrom || arrowPositionProp || 'inside',
@@ -98,13 +98,13 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
98
98
 
99
99
  const initialsSize = useMemo(
100
100
  () =>
101
- size.map((s) => {
102
- if (s === 1) return 1
103
- if (s === 2) return 3
104
- if (s === 3) return 5
101
+ Object.values(size).map((s) => {
102
+ if (s === 1) return 1 satisfies FontLabelSize
103
+ if (s === 2) return 3 satisfies FontLabelSize
104
+ if (s === 3) return 5 satisfies FontLabelSize
105
105
 
106
- return 0
107
- }),
106
+ return 0 satisfies FontLabelSize
107
+ }) as ResponsiveProp<FontLabelSize>,
108
108
  [size],
109
109
  )
110
110
 
@@ -114,7 +114,7 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
114
114
  data-ui="Avatar"
115
115
  {...rest}
116
116
  aria-label={title}
117
- className={_composeClassNames(className, avatar({color, size: sizeProp}))}
117
+ className={avatar({className, color, size: sizeProp})}
118
118
  data-arrow-position={arrowPosition}
119
119
  data-image-error={imageError ? '' : undefined}
120
120
  title={title}
@@ -129,11 +129,11 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
129
129
  </span>
130
130
 
131
131
  <Box
132
- align="center"
132
+ alignItems="center"
133
133
  as="span"
134
134
  className={avatarInitials()}
135
135
  display="flex"
136
- justify="center"
136
+ justifyContent="center"
137
137
  position="absolute"
138
138
  inset={0}
139
139
  >
@@ -145,11 +145,9 @@ export function Avatar<E extends AvatarElementType = typeof DEFAULT_AVATAR_ELEME
145
145
  {src && (
146
146
  <Box className={avatarImage()} inset={0} position="absolute">
147
147
  <img alt={initials} onError={handleImageError} src={src} />
148
- <span />
148
+ <span className={avatarImageOutline()} />
149
149
  </Box>
150
150
  )}
151
151
  </Element>
152
152
  )
153
153
  }
154
-
155
- Avatar.displayName = 'Avatar'
@@ -1,8 +1,8 @@
1
- import {_composeClassNames, avatarCounter, type ResponsiveProp} from '@sanity/ui/css'
1
+ import {avatarCounter, type ResponsiveProp} from '@sanity/ui/css'
2
2
  import type {AvatarSize, FontLabelSize} from '@sanity/ui/theme'
3
3
  import {useMemo} from 'react'
4
4
 
5
- import {useArrayProp} from '../../hooks'
5
+ import {useResponsiveProp} from '../../hooks'
6
6
  import type {ComponentType, Props} from '../../types'
7
7
  import {Box} from '../box'
8
8
  import {Label} from '../label'
@@ -34,17 +34,17 @@ export function AvatarCounter<
34
34
  size: sizeProp = 1,
35
35
  ...rest
36
36
  } = props as AvatarCounterProps<typeof DEFAULT_AVATAR_COUNTER_ELEMENT>
37
- const size = useArrayProp(sizeProp)
37
+ const size = useResponsiveProp(sizeProp)
38
38
 
39
- const labelSize: FontLabelSize[] = useMemo(
39
+ const labelSize = useMemo(
40
40
  () =>
41
- size.map((s) => {
42
- if (s === 1) return 1
43
- if (s === 2) return 3
44
- if (s === 3) return 5
41
+ Object.values(size).map((s) => {
42
+ if (s === 1) return 1 satisfies FontLabelSize
43
+ if (s === 2) return 3 satisfies FontLabelSize
44
+ if (s === 3) return 5 satisfies FontLabelSize
45
45
 
46
- return 0
47
- }),
46
+ return 0 satisfies FontLabelSize
47
+ }) as ResponsiveProp<FontLabelSize>,
48
48
  [size],
49
49
  )
50
50
 
@@ -52,11 +52,12 @@ export function AvatarCounter<
52
52
  <Box
53
53
  data-ui="AvatarCounter"
54
54
  {...rest}
55
- align="center"
55
+ alignItems="center"
56
56
  as={as}
57
- className={_composeClassNames(className, avatarCounter({size}))}
57
+ className={avatarCounter({className, size})}
58
58
  display="flex"
59
- justify="center"
59
+ flex="none"
60
+ justifyContent="center"
60
61
  paddingX={2}
61
62
  sizing="border"
62
63
  >
@@ -66,5 +67,3 @@ export function AvatarCounter<
66
67
  </Box>
67
68
  )
68
69
  }
69
-
70
- AvatarCounter.displayName = 'AvatarCounter'
@@ -1,8 +1,8 @@
1
- import {_composeClassNames, avatarStack, type ResponsiveProp} from '@sanity/ui/css'
1
+ import {avatarStack, type ResponsiveProp} from '@sanity/ui/css'
2
2
  import type {AvatarSize} from '@sanity/ui/theme'
3
- import {Children, cloneElement, isValidElement, type ReactElement} from 'react'
3
+ import {Children, cloneElement, Fragment, isValidElement, type ReactElement} from 'react'
4
4
 
5
- import {useArrayProp} from '../../hooks'
5
+ import {useResponsiveProp} from '../../hooks'
6
6
  import type {ComponentType, Props} from '../../types'
7
7
  import {Box, type BoxOwnProps} from '../box'
8
8
  import type {AvatarProps} from './avatar'
@@ -15,7 +15,10 @@ export const DEFAULT_AVATAR_STACK_ELEMENT = 'div'
15
15
  export type AvatarStackChild = ReactElement<AvatarProps<'div'>> | null | undefined | false
16
16
 
17
17
  /** @public */
18
- export type AvatarStackOwnProps = Omit<BoxOwnProps, 'align' | 'display'> & {
18
+ export type AvatarStackOwnProps = Omit<
19
+ BoxOwnProps,
20
+ 'align' | 'alignItems' | 'display' | 'justify' | 'justifyContent'
21
+ > & {
19
22
  children: AvatarStackChild | AvatarStackChild[]
20
23
  maxLength?: number
21
24
  size?: ResponsiveProp<AvatarSize>
@@ -49,7 +52,7 @@ export function AvatarStack<E extends AvatarStackElementType = typeof DEFAULT_AV
49
52
  AvatarProps<'div'>
50
53
  >[]
51
54
  const maxLength = Math.max(maxLengthProp, 0)
52
- const size = useArrayProp(sizeProp)
55
+ const size = useResponsiveProp(sizeProp)
53
56
 
54
57
  const len = children.length
55
58
  const visibleCount = maxLength - 1
@@ -60,30 +63,19 @@ export function AvatarStack<E extends AvatarStackElementType = typeof DEFAULT_AV
60
63
  <Box
61
64
  data-ui="AvatarStack"
62
65
  {...rest}
63
- align="center"
66
+ alignItems="center"
64
67
  as={as}
65
- className={_composeClassNames(className, avatarStack({size}))}
68
+ className={avatarStack({className, size})}
66
69
  display="flex"
70
+ justifyContent="flex-start"
67
71
  >
68
- {len === 0 && (
69
- <Box flex="none">
70
- <AvatarCounter count={len} size={size} />
71
- </Box>
72
- )}
72
+ {len === 0 && <AvatarCounter count={len} size={size} />}
73
73
 
74
- {len !== 0 && extraCount > 1 && (
75
- <Box flex="none">
76
- <AvatarCounter count={extraCount} size={size} />
77
- </Box>
78
- )}
74
+ {len !== 0 && extraCount > 1 && <AvatarCounter count={extraCount} size={size} />}
79
75
 
80
76
  {visibleChildren.map((child, childIndex) => (
81
- <Box flex="none" key={String(childIndex)}>
82
- {cloneElement(child, {size})}
83
- </Box>
77
+ <Fragment key={String(childIndex)}>{cloneElement(child, {size})}</Fragment>
84
78
  ))}
85
79
  </Box>
86
80
  )
87
81
  }
88
-
89
- AvatarStack.displayName = 'AvatarStack'
@@ -1,5 +1,5 @@
1
1
  import type {PaddingStyleProps, RadiusStyleProps, ResponsiveProp} from '@sanity/ui/css'
2
- import {_composeClassNames, badge} from '@sanity/ui/css'
2
+ import {badge} from '@sanity/ui/css'
3
3
  import type {FontTextSize} from '@sanity/ui/theme'
4
4
 
5
5
  import type {BadgeTone, ComponentType, Props} from '../../types'
@@ -46,20 +46,13 @@ export function Badge<E extends BadgeElementType = typeof DEFAULT_BADGE_ELEMENT>
46
46
  data-ui="Badge"
47
47
  {...rest}
48
48
  as={as}
49
- className={_composeClassNames(
50
- className,
51
- badge({
52
- radius,
53
- tone,
54
- }),
55
- )}
49
+ className={badge({className, tone})}
56
50
  display="inline-flex"
57
51
  maxWidth="fill"
58
52
  padding={padding}
53
+ radius={radius}
59
54
  >
60
55
  <Text size={fontSize}>{children}</Text>
61
56
  </Box>
62
57
  )
63
58
  }
64
-
65
- Badge.displayName = 'Badge'