@sanity/ui 2.10.0-corel.0 → 3.0.0-static.0

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 (322) hide show
  1. package/bin/ui.js +6 -0
  2. package/dist/_chunks-cjs/buildCommand.js +2836 -0
  3. package/dist/_chunks-cjs/buildCommand.js.map +1 -0
  4. package/dist/_chunks-cjs/getTheme_v2.js +1 -27
  5. package/dist/_chunks-cjs/getTheme_v2.js.map +1 -1
  6. package/dist/_chunks-es/getTheme_v2.mjs +1 -27
  7. package/dist/_chunks-es/getTheme_v2.mjs.map +1 -1
  8. package/dist/_legacy/getTheme_v2.esm.js +1 -27
  9. package/dist/_legacy/getTheme_v2.esm.js.map +1 -1
  10. package/dist/cli.d.ts +1 -0
  11. package/dist/cli.js +23 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/css.d.mts +943 -0
  14. package/dist/css.d.ts +943 -0
  15. package/dist/css.esm.js +3135 -0
  16. package/dist/css.esm.js.map +1 -0
  17. package/dist/css.js +3135 -0
  18. package/dist/css.js.map +1 -0
  19. package/dist/css.mjs +3135 -0
  20. package/dist/css.mjs.map +1 -0
  21. package/dist/index.d.mts +175 -164
  22. package/dist/index.d.ts +175 -164
  23. package/dist/index.esm.js +864 -1955
  24. package/dist/index.esm.js.map +1 -1
  25. package/dist/index.js +870 -1962
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +864 -1955
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/sanity-theme.css +25 -0
  30. package/dist/system.css +2953 -0
  31. package/dist/theme.d.mts +84 -22
  32. package/dist/theme.d.ts +84 -22
  33. package/dist/theme.esm.js +232 -283
  34. package/dist/theme.esm.js.map +1 -1
  35. package/dist/theme.js +232 -283
  36. package/dist/theme.js.map +1 -1
  37. package/dist/theme.mjs +232 -283
  38. package/dist/theme.mjs.map +1 -1
  39. package/exports/css.ts +1 -0
  40. package/package.json +25 -4
  41. package/src/core/__workshop__/constants.ts +15 -15
  42. package/src/core/__workshop__/fontsPlugin.tsx +1 -1
  43. package/src/core/components/autocomplete/autocomplete.styles.tsx +1 -1
  44. package/src/core/components/autocomplete/autocomplete.tsx +12 -4
  45. package/src/core/components/breadcrumbs/__workshop__/example.tsx +1 -3
  46. package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -5
  47. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +14 -2
  48. package/src/core/components/breadcrumbs/breadcrumbs.tsx +14 -9
  49. package/src/core/components/dialog/__workshop__/panes.tsx +1 -1
  50. package/src/core/components/dialog/dialog.tsx +77 -92
  51. package/src/core/components/hotkeys/hotkeys.tsx +18 -29
  52. package/src/core/components/menu/menu.tsx +8 -5
  53. package/src/core/components/menu/menuDivider.ts +2 -1
  54. package/src/core/components/menu/menuGroup.tsx +16 -8
  55. package/src/core/components/menu/menuItem.tsx +23 -14
  56. package/src/core/components/skeleton/skeleton.tsx +1 -1
  57. package/src/core/components/skeleton/styles.ts +1 -1
  58. package/src/core/components/skeleton/textSkeleton.tsx +1 -1
  59. package/src/core/components/tab/tab.tsx +6 -7
  60. package/src/core/components/tab/tabList.tsx +3 -2
  61. package/src/core/components/toast/styles.ts +1 -1
  62. package/src/core/components/toast/toast.tsx +6 -4
  63. package/src/core/components/toast/toastProvider.tsx +31 -22
  64. package/src/core/components/tree/style.ts +1 -1
  65. package/src/core/components/tree/tree.tsx +8 -2
  66. package/src/core/components/tree/treeGroup.tsx +1 -1
  67. package/src/core/components/tree/treeItem.tsx +38 -25
  68. package/src/core/components/tree/types.ts +5 -1
  69. package/src/core/lib/styled/elements.ts +135 -0
  70. package/src/core/lib/styled/index.ts +2 -0
  71. package/src/core/lib/styled/members.ts +15 -0
  72. package/src/core/lib/styled/styled.ts +79 -0
  73. package/src/core/primitives/_selectable/selectable.tsx +27 -14
  74. package/src/core/primitives/avatar/avatar.tsx +52 -32
  75. package/src/core/primitives/avatar/avatarCounter.tsx +1 -1
  76. package/src/core/primitives/avatar/avatarStack.tsx +1 -1
  77. package/src/core/primitives/badge/__workshop__/tones.tsx +9 -16
  78. package/src/core/primitives/badge/badge.tsx +18 -20
  79. package/src/core/primitives/box/box.tsx +62 -74
  80. package/src/core/primitives/button/__workshop__/props.tsx +3 -1
  81. package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +1 -1
  82. package/src/core/primitives/button/__workshop__/styled1.tsx +1 -1
  83. package/src/core/primitives/button/__workshop__/styled2.tsx +1 -1
  84. package/src/core/primitives/button/button.tsx +38 -45
  85. package/src/core/primitives/button/styles.ts +2 -2
  86. package/src/core/primitives/card/RootCardContext.ts +3 -0
  87. package/src/core/primitives/card/__workshop__/selected.tsx +1 -1
  88. package/src/core/primitives/card/__workshop__/styled.tsx +1 -1
  89. package/src/core/primitives/card/card.tsx +44 -46
  90. package/src/core/primitives/card/styles.ts +1 -1
  91. package/src/core/primitives/checkbox/checkbox.tsx +6 -8
  92. package/src/core/primitives/code/code.tsx +23 -12
  93. package/src/core/primitives/code/styles.ts +1 -1
  94. package/src/core/primitives/container/container.tsx +7 -15
  95. package/src/core/primitives/flex/__workshop__/example.tsx +1 -1
  96. package/src/core/primitives/flex/flex.tsx +6 -19
  97. package/src/core/primitives/grid/grid.tsx +2 -1
  98. package/src/core/primitives/heading/heading.tsx +32 -19
  99. package/src/core/primitives/heading/styles.ts +1 -1
  100. package/src/core/primitives/inline/inline.tsx +22 -13
  101. package/src/core/primitives/kbd/kbd.tsx +30 -37
  102. package/src/core/primitives/label/label.tsx +15 -4
  103. package/src/core/primitives/label/styles.ts +1 -1
  104. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -1
  105. package/src/core/primitives/popover/popover.tsx +21 -15
  106. package/src/core/primitives/popover/popoverCard.tsx +36 -38
  107. package/src/core/primitives/radio/radio.tsx +1 -1
  108. package/src/core/primitives/radio/styles.ts +1 -1
  109. package/src/core/primitives/select/select.tsx +1 -1
  110. package/src/core/primitives/select/styles.ts +1 -1
  111. package/src/core/primitives/spinner/spinner.tsx +6 -20
  112. package/src/core/primitives/stack/stack.tsx +12 -10
  113. package/src/core/primitives/switch/styles.ts +9 -9
  114. package/src/core/primitives/switch/switch.tsx +20 -21
  115. package/src/core/primitives/text/__workshop__/colored.tsx +1 -1
  116. package/src/core/primitives/text/styles.ts +1 -2
  117. package/src/core/primitives/text/text.tsx +17 -21
  118. package/src/core/primitives/textArea/textArea.tsx +1 -1
  119. package/src/core/primitives/textInput/__workshop__/plain.tsx +1 -1
  120. package/src/core/primitives/textInput/textInput.tsx +176 -123
  121. package/src/core/primitives/tooltip/tooltip.test.tsx +1 -0
  122. package/src/core/primitives/tooltip/tooltip.tsx +13 -13
  123. package/src/core/primitives/tooltip/tooltipCard.tsx +15 -14
  124. package/src/core/primitives/types.ts +35 -16
  125. package/src/core/styles/border/borderStyle.ts +6 -0
  126. package/src/core/styles/border/types.ts +1 -0
  127. package/src/core/styles/box/boxStyle.ts +6 -0
  128. package/src/core/styles/card/_cardColorStyle.ts +0 -8
  129. package/src/core/styles/flex/flexStyle.ts +0 -18
  130. package/src/core/styles/flex/types.ts +1 -3
  131. package/src/core/styles/grid/gridStyle.ts +0 -10
  132. package/src/core/styles/helpers.ts +9 -0
  133. package/src/core/styles/input/textInputStyle.ts +1 -1
  134. package/src/core/theme/__workshop__/build/Root.tsx +1 -1
  135. package/src/core/theme/themeProvider.tsx +1 -1
  136. package/src/core/theme/useTheme.ts +1 -1
  137. package/src/core/types/avatar.ts +6 -1
  138. package/src/core/types/button.ts +1 -0
  139. package/src/core/types/flex.ts +27 -26
  140. package/src/core/types/gridItem.ts +32 -24
  141. package/src/core/types/radius.ts +7 -4
  142. package/src/core/utils/arrow/arrow.tsx +1 -1
  143. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +1 -1
  144. package/src/core/utils/layer/layer.tsx +28 -11
  145. package/src/core/utils/srOnly/srOnly.tsx +1 -1
  146. package/src/core/utils/virtualList/virtualList.tsx +1 -1
  147. package/src/css/_resp.ts +28 -0
  148. package/src/css/cli/buildCommand.ts +36 -0
  149. package/src/css/cli/index.ts +38 -0
  150. package/src/css/compile/comileRules.ts +59 -0
  151. package/src/css/compile/compileRule.ts +58 -0
  152. package/src/css/compile/compileSystem.ts +7 -0
  153. package/src/css/compile/compileTheme.ts +509 -0
  154. package/src/css/components/breadcrumbs/breadcrumbs.ts +5 -0
  155. package/src/css/components/breadcrumbs/index.ts +1 -0
  156. package/src/css/components/breadcrumbs/rules.ts +7 -0
  157. package/src/css/components/dialog/classes.ts +29 -0
  158. package/src/css/components/dialog/index.ts +1 -0
  159. package/src/css/components/dialog/rules.ts +75 -0
  160. package/src/css/components/tree/index.ts +1 -0
  161. package/src/css/components/tree/rules.ts +52 -0
  162. package/src/css/components/tree/tree.ts +5 -0
  163. package/src/css/composeClassNames.ts +3 -0
  164. package/src/css/index.ts +47 -0
  165. package/src/css/primitives/avatar/avatar.ts +32 -0
  166. package/src/css/primitives/avatar/index.ts +2 -0
  167. package/src/css/primitives/avatar/rules.ts +190 -0
  168. package/src/css/primitives/avatar/types.ts +9 -0
  169. package/src/css/primitives/badge/badge.ts +8 -0
  170. package/src/css/primitives/badge/index.ts +2 -0
  171. package/src/css/primitives/badge/rules.ts +25 -0
  172. package/src/css/primitives/badge/types.ts +8 -0
  173. package/src/css/primitives/box/box.ts +34 -0
  174. package/src/css/primitives/box/index.ts +2 -0
  175. package/src/css/primitives/box/rules.ts +25 -0
  176. package/src/css/primitives/box/types.ts +49 -0
  177. package/src/css/primitives/button/button.ts +26 -0
  178. package/src/css/primitives/button/index.ts +1 -0
  179. package/src/css/primitives/button/rules.ts +58 -0
  180. package/src/css/primitives/card/card.ts +21 -0
  181. package/src/css/primitives/card/index.ts +1 -0
  182. package/src/css/primitives/card/rules.ts +93 -0
  183. package/src/{core/primitives/checkbox/styles.ts → css/primitives/checkbox/__styles.ts} +3 -3
  184. package/src/css/primitives/checkbox/checkbox.ts +9 -0
  185. package/src/css/primitives/checkbox/index.ts +1 -0
  186. package/src/css/primitives/checkbox/rules.ts +136 -0
  187. package/src/css/primitives/code/code.ts +9 -0
  188. package/src/css/primitives/code/index.ts +2 -0
  189. package/src/css/primitives/code/rules.ts +71 -0
  190. package/src/css/primitives/code/types.ts +10 -0
  191. package/src/css/primitives/container/container.ts +7 -0
  192. package/src/css/primitives/container/index.ts +2 -0
  193. package/src/css/primitives/container/rules.ts +8 -0
  194. package/src/css/primitives/container/types.ts +6 -0
  195. package/src/css/primitives/heading/heading.ts +16 -0
  196. package/src/css/primitives/heading/index.ts +2 -0
  197. package/src/css/primitives/heading/rules.ts +84 -0
  198. package/src/css/primitives/heading/types.ts +12 -0
  199. package/src/css/primitives/kbd/index.ts +2 -0
  200. package/src/css/primitives/kbd/kbd.ts +7 -0
  201. package/src/css/primitives/kbd/rules.ts +20 -0
  202. package/src/css/primitives/kbd/types.ts +5 -0
  203. package/src/css/primitives/label/index.ts +2 -0
  204. package/src/css/primitives/label/label.ts +16 -0
  205. package/src/css/primitives/label/rules.ts +85 -0
  206. package/src/css/primitives/label/types.ts +12 -0
  207. package/src/css/primitives/popover/index.ts +1 -0
  208. package/src/css/primitives/popover/popover.ts +5 -0
  209. package/src/css/primitives/popover/rules.ts +5 -0
  210. package/src/css/primitives/radio/index.ts +1 -0
  211. package/src/css/primitives/radio/radio.ts +5 -0
  212. package/src/css/primitives/radio/rules.ts +5 -0
  213. package/src/css/primitives/select/index.ts +1 -0
  214. package/src/css/primitives/select/rules.ts +5 -0
  215. package/src/css/primitives/select/select.ts +5 -0
  216. package/src/{core/primitives/_selectable/style.ts → css/primitives/selectable/__style.ts} +5 -4
  217. package/src/css/primitives/selectable/index.ts +2 -0
  218. package/src/css/primitives/selectable/rules.ts +27 -0
  219. package/src/css/primitives/selectable/selectable.ts +9 -0
  220. package/src/css/primitives/selectable/types.ts +6 -0
  221. package/src/css/primitives/spinner/index.ts +1 -0
  222. package/src/css/primitives/spinner/rules.ts +22 -0
  223. package/src/css/primitives/spinner/spinner.ts +5 -0
  224. package/src/css/primitives/switch/index.ts +1 -0
  225. package/src/css/primitives/switch/rules.ts +132 -0
  226. package/src/css/primitives/switch/switch.ts +5 -0
  227. package/src/css/primitives/text/index.ts +2 -0
  228. package/src/css/primitives/text/rules.ts +75 -0
  229. package/src/css/primitives/text/text.ts +16 -0
  230. package/src/css/primitives/text/types.ts +11 -0
  231. package/src/css/primitives/textArea/index.ts +1 -0
  232. package/src/css/primitives/textArea/rules.ts +5 -0
  233. package/src/css/primitives/textArea/textArea.ts +5 -0
  234. package/src/css/primitives/textInput/index.ts +1 -0
  235. package/src/css/primitives/textInput/rules.ts +226 -0
  236. package/src/css/primitives/textInput/textInput.ts +7 -0
  237. package/src/css/primitives/token/rules.ts +45 -0
  238. package/src/css/primitives/tooltip/index.ts +1 -0
  239. package/src/css/primitives/tooltip/rules.ts +17 -0
  240. package/src/css/primitives/tooltip/tooltip.ts +9 -0
  241. package/src/css/responsiveRules.ts +25 -0
  242. package/src/css/rules.ts +121 -0
  243. package/src/css/styles/border/border.ts +22 -0
  244. package/src/css/styles/border/index.ts +2 -0
  245. package/src/css/styles/border/rules.ts +24 -0
  246. package/src/css/styles/border/types.ts +10 -0
  247. package/src/css/styles/display/rules.ts +62 -0
  248. package/src/css/styles/flex/flex.ts +20 -0
  249. package/src/css/styles/flex/index.ts +2 -0
  250. package/src/css/styles/flex/rules.ts +28 -0
  251. package/src/css/styles/flex/types.ts +35 -0
  252. package/src/css/styles/flexItem/flexItem.ts +8 -0
  253. package/src/css/styles/flexItem/index.ts +2 -0
  254. package/src/css/styles/flexItem/rules.ts +11 -0
  255. package/src/css/styles/flexItem/types.ts +11 -0
  256. package/src/css/styles/font/font.ts +12 -0
  257. package/src/css/styles/font/index.ts +2 -0
  258. package/src/css/styles/font/rules.ts +125 -0
  259. package/src/css/styles/font/types.ts +6 -0
  260. package/src/css/styles/gap/gap.ts +8 -0
  261. package/src/css/styles/gap/index.ts +2 -0
  262. package/src/css/styles/gap/rules.ts +33 -0
  263. package/src/css/styles/gap/types.ts +9 -0
  264. package/src/css/styles/grid/rules.ts +35 -0
  265. package/src/css/styles/gridItem/gridItem.ts +15 -0
  266. package/src/css/styles/gridItem/index.ts +2 -0
  267. package/src/css/styles/gridItem/rules.ts +96 -0
  268. package/src/css/styles/gridItem/types.ts +41 -0
  269. package/src/css/styles/height/rules.ts +7 -0
  270. package/src/css/styles/margin/index.ts +2 -0
  271. package/src/css/styles/margin/margin.ts +15 -0
  272. package/src/css/styles/margin/rules.ts +59 -0
  273. package/src/css/styles/margin/types.ts +11 -0
  274. package/src/css/styles/maxWidth/index.ts +2 -0
  275. package/src/css/styles/maxWidth/maxWidth.ts +6 -0
  276. package/src/css/styles/maxWidth/rules.ts +36 -0
  277. package/src/css/styles/maxWidth/types.ts +6 -0
  278. package/src/css/styles/overflow/rules.ts +9 -0
  279. package/src/css/styles/padding/index.ts +2 -0
  280. package/src/css/styles/padding/padding.ts +15 -0
  281. package/src/css/styles/padding/rules.ts +59 -0
  282. package/src/css/styles/padding/types.ts +12 -0
  283. package/src/css/styles/pointerEvents/index.ts +2 -0
  284. package/src/css/styles/pointerEvents/pointerEvents.ts +6 -0
  285. package/src/css/styles/pointerEvents/rules.ts +11 -0
  286. package/src/css/styles/pointerEvents/types.ts +7 -0
  287. package/src/css/styles/position/index.ts +2 -0
  288. package/src/css/styles/position/position.ts +7 -0
  289. package/src/css/styles/position/rules.ts +31 -0
  290. package/src/css/styles/position/types.ts +13 -0
  291. package/src/css/styles/radius/index.ts +2 -0
  292. package/src/css/styles/radius/radius.ts +8 -0
  293. package/src/css/styles/radius/rules.ts +13 -0
  294. package/src/css/styles/radius/types.ts +7 -0
  295. package/src/css/styles/shadow/rules.ts +53 -0
  296. package/src/css/styles/width/index.ts +2 -0
  297. package/src/css/styles/width/rules.ts +7 -0
  298. package/src/css/styles/width/types.ts +8 -0
  299. package/src/css/styles/width/width.ts +6 -0
  300. package/src/css/types.ts +591 -0
  301. package/src/css/varNames.ts +381 -0
  302. package/src/css/vars.ts +313 -0
  303. package/src/theme/build/_deprecated/color/factory.ts +1 -1
  304. package/src/theme/build/_deprecated/color/muted/createMuted.ts +2 -2
  305. package/src/theme/build/buildColorTheme.ts +39 -45
  306. package/src/theme/build/renderColorTheme.ts +65 -239
  307. package/src/theme/build/resolveColorTokens.ts +115 -51
  308. package/src/theme/config/tokens/color/types.ts +18 -4
  309. package/src/theme/defaults/colorTokens.ts +10 -17
  310. package/src/theme/defaults/config.ts +1 -1
  311. package/src/theme/getScopedTheme.ts +2 -9
  312. package/src/theme/system/_constants.ts +25 -0
  313. package/src/theme/system/_types.ts +41 -0
  314. package/src/theme/system/color/_constants.ts +0 -8
  315. package/src/theme/system/color/badge.ts +7 -3
  316. package/src/theme/system/index.ts +2 -0
  317. package/src/theme/system/v0/color/_system.ts +4 -8
  318. package/src/theme/system/v0/color/color.ts +2 -3
  319. package/src/theme/versioning/themeColor_v0_v2.ts +0 -26
  320. package/src/theme/versioning/v0_v2.ts +0 -4
  321. package/src/core/components/breadcrumbs/__workshop__/buttons.tsx +0 -58
  322. package/src/core/components/dialog/styles.ts +0 -76
@@ -1,14 +1,9 @@
1
1
  import {ToggleArrowRightIcon} from '@sanity/icons'
2
- import {ThemeFontWeightKey} from '@sanity/ui/theme'
2
+ import {composeClassNames, ResponsiveProp, treeItem} from '@sanity/ui/css'
3
+ import {Space, ThemeFontWeightKey} from '@sanity/ui/theme'
3
4
  import {memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'
4
- import {styled} from 'styled-components'
5
+ import {styled} from '../../lib/styled'
5
6
  import {Box, BoxProps, Flex, Text} from '../../primitives'
6
- import {
7
- treeItemRootStyle,
8
- treeItemRootColorStyle,
9
- treeItemBoxStyle,
10
- TreeItemBoxStyleProps,
11
- } from './style'
12
7
  import {TreeContext} from './treeContext'
13
8
  import {TreeGroup} from './treeGroup'
14
9
  import {useTree} from './useTree'
@@ -25,14 +20,15 @@ export interface TreeItemProps {
25
20
  */
26
21
  linkAs?: BoxProps['as']
27
22
  padding?: number | number[]
28
- space?: number | number[]
23
+ space?: ResponsiveProp<Space>
24
+ // space?: number | number[]
29
25
  text?: React.ReactNode
30
26
  weight?: ThemeFontWeightKey
31
27
  }
32
28
 
33
- const Root = memo(styled.li(treeItemRootStyle, treeItemRootColorStyle))
29
+ // const Root = memo(styled.li(treeItemRootStyle, treeItemRootColorStyle))
34
30
 
35
- const TreeItemBox = styled(Box).attrs({forwardedAs: 'a'})<TreeItemBoxStyleProps>(treeItemBoxStyle)
31
+ // const TreeItemBox = styled(Box).attrs({forwardedAs: 'a'})<TreeItemBoxStyleProps>(treeItemBoxStyle)
36
32
 
37
33
  const ToggleArrowText = styled(Text)`
38
34
  & > svg {
@@ -45,10 +41,12 @@ const ToggleArrowText = styled(Text)`
45
41
  * @beta
46
42
  */
47
43
  export const TreeItem = memo(function TreeItem(
48
- props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>,
44
+ props: TreeItemProps &
45
+ Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'width' | 'wrap'>,
49
46
  ): React.ReactElement {
50
47
  const {
51
48
  children,
49
+ className,
52
50
  expanded: expandedProp = false,
53
51
  fontSize = 1,
54
52
  href,
@@ -64,7 +62,7 @@ export const TreeItem = memo(function TreeItem(
64
62
  weight,
65
63
  ...restProps
66
64
  } = props
67
- const rootRef = useRef<HTMLLIElement | null>(null)
65
+ const rootRef = useRef<HTMLDivElement | null>(null)
68
66
  const treeitemRef = useRef<HTMLDivElement | null>(null)
69
67
  const tree = useTree()
70
68
  const {path, registerItem, setExpanded, setFocusedElement} = tree
@@ -82,7 +80,7 @@ export const TreeItem = memo(function TreeItem(
82
80
  )
83
81
 
84
82
  const handleClick = useCallback(
85
- (event: React.MouseEvent<HTMLLIElement>) => {
83
+ (event: React.MouseEvent<HTMLDivElement>) => {
86
84
  if (onClick) onClick(event)
87
85
 
88
86
  const target = event.target
@@ -118,9 +116,9 @@ export const TreeItem = memo(function TreeItem(
118
116
  }, [expanded, itemPath, registerItem, selected])
119
117
 
120
118
  const content = (
121
- <Flex padding={padding}>
119
+ <Flex gap={space} padding={padding}>
122
120
  <Box
123
- marginRight={space}
121
+ // marginRight={space}
124
122
  style={{
125
123
  visibility: IconComponent || children ? 'visible' : 'hidden',
126
124
  pointerEvents: 'none',
@@ -147,18 +145,20 @@ export const TreeItem = memo(function TreeItem(
147
145
 
148
146
  if (href) {
149
147
  return (
150
- <Root
148
+ <Box
151
149
  data-selected={selected ? '' : undefined}
152
150
  data-tree-id={id}
153
151
  data-tree-key={itemKey}
154
152
  data-ui="TreeItem"
155
153
  {...restProps}
154
+ as="li"
155
+ className={composeClassNames(className, treeItem())}
156
156
  onClick={handleClick}
157
157
  ref={rootRef}
158
158
  role="none"
159
159
  >
160
- <TreeItemBox
161
- $level={tree.level}
160
+ <Box
161
+ // $level={tree.level}
162
162
  aria-expanded={expanded}
163
163
  as={linkAs}
164
164
  data-ui="TreeItem__box"
@@ -166,19 +166,23 @@ export const TreeItem = memo(function TreeItem(
166
166
  ref={treeitemRef}
167
167
  role="treeitem"
168
168
  tabIndex={tabIndex}
169
+ // todo
170
+ style={{
171
+ paddingLeft: `calc(var(--space-2) * ${tree.level})`,
172
+ }}
169
173
  >
170
174
  {content}
171
- </TreeItemBox>
175
+ </Box>
172
176
 
173
177
  <TreeContext.Provider value={contextValue}>
174
178
  {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}
175
179
  </TreeContext.Provider>
176
- </Root>
180
+ </Box>
177
181
  )
178
182
  }
179
183
 
180
184
  return (
181
- <Root
185
+ <Box
182
186
  data-selected={selected ? '' : undefined}
183
187
  data-ui="TreeItem"
184
188
  data-tree-id={id}
@@ -191,14 +195,23 @@ export const TreeItem = memo(function TreeItem(
191
195
  role="treeitem"
192
196
  tabIndex={tabIndex}
193
197
  >
194
- <TreeItemBox $level={tree.level} as="div" data-ui="TreeItem__box">
198
+ <Box
199
+ // $level={tree.level}
200
+ as="div"
201
+ data-ui="TreeItem__box"
202
+ // todo
203
+ style={{
204
+ paddingLeft: `calc(var(--space-2) * ${tree.level})`,
205
+ }}
206
+ >
195
207
  {content}
196
- </TreeItemBox>
208
+ </Box>
197
209
 
198
210
  <TreeContext.Provider value={contextValue}>
199
211
  {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}
200
212
  </TreeContext.Provider>
201
- </Root>
213
+ </Box>
202
214
  )
203
215
  })
216
+
204
217
  TreeItem.displayName = 'Memo(TreeItem)'
@@ -1,3 +1,6 @@
1
+ import {ResponsiveProp} from '@sanity/ui/css'
2
+ import {Space} from '@sanity/ui/theme'
3
+
1
4
  /**
2
5
  * @beta
3
6
  */
@@ -16,6 +19,7 @@ export interface TreeContextValue {
16
19
  registerItem: (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => void
17
20
  setExpanded: (path: string, expanded: boolean) => void
18
21
  setFocusedElement: (focusedElement: HTMLElement | null) => void
19
- space: number | number[]
22
+ // space: number | number[]
23
+ space: ResponsiveProp<Space>
20
24
  state: TreeState
21
25
  }
@@ -0,0 +1,135 @@
1
+ export const elements = [
2
+ 'a',
3
+ 'abbr',
4
+ 'address',
5
+ 'area',
6
+ 'article',
7
+ 'aside',
8
+ 'audio',
9
+ 'b',
10
+ 'base',
11
+ 'bdi',
12
+ 'bdo',
13
+ 'big',
14
+ 'blockquote',
15
+ 'body',
16
+ 'br',
17
+ 'button',
18
+ 'canvas',
19
+ 'caption',
20
+ 'cite',
21
+ 'code',
22
+ 'col',
23
+ 'colgroup',
24
+ 'data',
25
+ 'datalist',
26
+ 'dd',
27
+ 'del',
28
+ 'details',
29
+ 'dfn',
30
+ 'dialog',
31
+ 'div',
32
+ 'dl',
33
+ 'dt',
34
+ 'em',
35
+ 'embed',
36
+ 'fieldset',
37
+ 'figcaption',
38
+ 'figure',
39
+ 'footer',
40
+ 'form',
41
+ 'h1',
42
+ 'h2',
43
+ 'h3',
44
+ 'h4',
45
+ 'h5',
46
+ 'h6',
47
+ 'header',
48
+ 'hgroup',
49
+ 'hr',
50
+ 'html',
51
+ 'i',
52
+ 'iframe',
53
+ 'img',
54
+ 'input',
55
+ 'ins',
56
+ 'kbd',
57
+ 'keygen',
58
+ 'label',
59
+ 'legend',
60
+ 'li',
61
+ 'link',
62
+ 'main',
63
+ 'map',
64
+ 'mark',
65
+ 'menu',
66
+ 'menuitem',
67
+ 'meta',
68
+ 'meter',
69
+ 'nav',
70
+ 'noscript',
71
+ 'object',
72
+ 'ol',
73
+ 'optgroup',
74
+ 'option',
75
+ 'output',
76
+ 'p',
77
+ 'param',
78
+ 'picture',
79
+ 'pre',
80
+ 'progress',
81
+ 'q',
82
+ 'rp',
83
+ 'rt',
84
+ 'ruby',
85
+ 's',
86
+ 'samp',
87
+ 'script',
88
+ 'section',
89
+ 'select',
90
+ 'small',
91
+ 'source',
92
+ 'span',
93
+ 'strong',
94
+ 'style',
95
+ 'sub',
96
+ 'summary',
97
+ 'sup',
98
+ 'table',
99
+ 'tbody',
100
+ 'td',
101
+ 'textarea',
102
+ 'tfoot',
103
+ 'th',
104
+ 'thead',
105
+ 'time',
106
+ 'tr',
107
+ 'track',
108
+ 'u',
109
+ 'ul',
110
+ 'use',
111
+ 'var',
112
+ 'video',
113
+ 'wbr', // SVG
114
+ 'circle',
115
+ 'clipPath',
116
+ 'defs',
117
+ 'ellipse',
118
+ 'foreignObject',
119
+ 'g',
120
+ 'image',
121
+ 'line',
122
+ 'linearGradient',
123
+ 'marker',
124
+ 'mask',
125
+ 'path',
126
+ 'pattern',
127
+ 'polygon',
128
+ 'polyline',
129
+ 'radialGradient',
130
+ 'rect',
131
+ 'stop',
132
+ 'svg',
133
+ 'text',
134
+ 'tspan',
135
+ ] as const
@@ -0,0 +1,2 @@
1
+ export * from './members'
2
+ export * from './styled'
@@ -0,0 +1,15 @@
1
+ import {
2
+ css as _css,
3
+ createGlobalStyle as _createGlobalStyle,
4
+ type ExecutionContext as _ExecutionContext,
5
+ keyframes as _keyframes,
6
+ ThemeProvider as _ThemeProvider,
7
+ useTheme as _useTheme,
8
+ } from 'styled-components'
9
+
10
+ export const createGlobalStyle = _createGlobalStyle
11
+ export const css = _css
12
+ export type ExecutionContext = _ExecutionContext
13
+ export const keyframes = _keyframes
14
+ export const ThemeProvider = _ThemeProvider
15
+ export const useTheme = _useTheme
@@ -0,0 +1,79 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
3
+
4
+ import {createElement, forwardRef} from 'react'
5
+ import {styled as _styled} from 'styled-components'
6
+ import {elements} from './elements'
7
+
8
+ const baseStyled = (tagName: string): any => {
9
+ const m = (_strings: TemplateStringsArray, ..._interpolations: any[]) => {
10
+ const Styled = forwardRef(function Styled(props: any, ref: any) {
11
+ const {as, forwardedAs, ...rest} = props
12
+
13
+ const sanitizedProps = Object.fromEntries(
14
+ Object.entries(rest)
15
+ .filter(([, val]) => Boolean(val) && (!isArray(val) || val.length > 0))
16
+ .map(([key, val]) => {
17
+ if (key.startsWith('$')) {
18
+ return [`data-${toSnakeCase(key.slice(1))}`, val]
19
+ }
20
+
21
+ return [key, val]
22
+ }),
23
+ )
24
+
25
+ const t = as ?? tagName
26
+
27
+ return createElement(t, {...sanitizedProps, as: forwardedAs, ref})
28
+ })
29
+
30
+ Styled.displayName = `Styled(${typeof tagName === 'function' ? (tagName as any).displayName : tagName})`
31
+
32
+ return Styled
33
+ }
34
+
35
+ m['attrs'] = (attrs: any) => {
36
+ return (_strings: TemplateStringsArray, ..._interpolations: any[]) => {
37
+ const StyledAttrs = forwardRef(function StyledAttrs(_props: any, ref: any) {
38
+ const props = {...attrs, ..._props}
39
+ const {as, forwardedAs, ...rest} = props
40
+
41
+ const sanitizedProps = Object.fromEntries(
42
+ Object.entries(rest)
43
+ .filter(([, val]) => Boolean(val) && (!isArray(val) || val.length > 0))
44
+ .map(([key, val]) => {
45
+ if (key.startsWith('$')) {
46
+ return [`data-${toSnakeCase(key.slice(1))}`, val]
47
+ }
48
+
49
+ return [key, val]
50
+ }),
51
+ )
52
+
53
+ const t = as ?? tagName
54
+
55
+ return createElement(t, {...sanitizedProps, as: forwardedAs, ref})
56
+ })
57
+
58
+ StyledAttrs.displayName = `StyledAttrs(${typeof tagName === 'function' ? (tagName as any).displayName : tagName})`
59
+
60
+ return StyledAttrs
61
+ }
62
+ }
63
+
64
+ return m
65
+ }
66
+
67
+ export const styled = baseStyled as typeof _styled
68
+
69
+ for (const tagName of elements) {
70
+ ;(styled as any)[tagName] = baseStyled(tagName)
71
+ }
72
+
73
+ function toSnakeCase(str: string): string {
74
+ return str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)
75
+ }
76
+
77
+ function isArray(value: unknown): value is unknown[] {
78
+ return Array.isArray(value)
79
+ }
@@ -1,14 +1,27 @@
1
- import {styled} from 'styled-components'
2
- import {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/radius'
3
- import {Box} from '../box'
4
- import {selectableBaseStyle, selectableColorStyle, SelectableStyleProps} from './style'
5
-
6
- /**
7
- * @internal
8
- */
9
- export const Selectable = styled(Box)<SelectableStyleProps & ResponsiveRadiusStyleProps>(
10
- responsiveRadiusStyle,
11
- selectableBaseStyle,
12
- selectableColorStyle,
13
- )
14
- Selectable.displayName = 'Selectable'
1
+ import {composeClassNames, selectable, SelectableStyleProps} from '@sanity/ui/css'
2
+ import {ForwardedRef, forwardRef, HTMLProps} from 'react'
3
+ import {SelectableTone} from '../../types'
4
+ import {Box, BoxProps} from '../box'
5
+
6
+ /** @internal */
7
+ export interface SelectableProps extends BoxProps, SelectableStyleProps {
8
+ tone?: SelectableTone
9
+ }
10
+
11
+ /** @internal */
12
+ export const Selectable = forwardRef(function Selectable(
13
+ props: SelectableProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'wrap' | 'width'>,
14
+ ref: ForwardedRef<HTMLDivElement>,
15
+ ) {
16
+ const {className, radius, tone, ...restProps} = props
17
+
18
+ return (
19
+ <Box
20
+ {...restProps}
21
+ className={composeClassNames(className, selectable({radius, tone}))}
22
+ ref={ref}
23
+ />
24
+ )
25
+ })
26
+
27
+ Selectable.displayName = 'ForwardRef(Selectable)'
@@ -1,12 +1,21 @@
1
+ import {
2
+ avatar,
3
+ avatarArrow,
4
+ avatarBgStroke,
5
+ avatarImage,
6
+ avatarInitials,
7
+ avatarStroke,
8
+ composeClassNames,
9
+ } from '@sanity/ui/css'
1
10
  import {ThemeColorAvatarColorKey} from '@sanity/ui/theme'
2
11
  import {forwardRef, useCallback, useEffect, useId, useMemo, useState} from 'react'
3
12
  import ReactIs from 'react-is'
4
- import {styled} from 'styled-components'
5
13
  import {useArrayProp} from '../../hooks'
14
+ // import {styled} from '../../lib/styled'
6
15
  import {useTheme_v2} from '../../theme'
7
16
  import {AvatarPosition, AvatarSize, AvatarStatus} from '../../types'
8
17
  import {Label} from '../label'
9
- import {avatarStyle, responsiveAvatarSizeStyle} from './styles'
18
+ // import {avatarStyle, responsiveAvatarSizeStyle} from './styles'
10
19
 
11
20
  /**
12
21
  * @public
@@ -30,24 +39,24 @@ export interface AvatarProps {
30
39
  title?: string
31
40
  }
32
41
 
33
- const Root = styled.div<{$color: ThemeColorAvatarColorKey; $size: AvatarSize[]}>(
34
- responsiveAvatarSizeStyle,
35
- avatarStyle.root,
36
- )
42
+ // const Root = styled.div<{$color: ThemeColorAvatarColorKey; $size: AvatarSize[]}>(
43
+ // responsiveAvatarSizeStyle,
44
+ // avatarStyle.root,
45
+ // )
37
46
 
38
- const Arrow = styled.div(avatarStyle.arrow)
47
+ // const Arrow = styled.div(avatarStyle.arrow)
39
48
 
40
- const BgStroke = styled.ellipse(avatarStyle.bgStroke)
49
+ // const BgStroke = styled.ellipse(avatarStyle.bgStroke)
41
50
 
42
- const Stroke = styled.ellipse(avatarStyle.stroke)
51
+ // const Stroke = styled.ellipse(avatarStyle.stroke)
43
52
 
44
- const Initials = styled.div(avatarStyle.initials)
53
+ // const Initials = styled.div(avatarStyle.initials)
45
54
 
46
- const InitialsLabel = styled(Label)({
47
- color: 'inherit',
48
- })
55
+ // const InitialsLabel = styled(Label)({
56
+ // color: 'inherit',
57
+ // })
49
58
 
50
- const Image = styled.svg(avatarStyle.image)
59
+ // const Image = styled.svg(avatarStyle.image)
51
60
 
52
61
  /**
53
62
  * Avatars are used to represent people and other agents (e.g. bots).
@@ -61,6 +70,7 @@ export const Avatar = forwardRef(function Avatar(
61
70
  const {
62
71
  __unstable_hideInnerStroke,
63
72
  as: asProp,
73
+ className,
64
74
  color = 'gray',
65
75
  src,
66
76
  title,
@@ -72,12 +82,12 @@ export const Avatar = forwardRef(function Avatar(
72
82
  size: sizeProp = 1,
73
83
  ...restProps
74
84
  } = props
75
- const {avatar} = useTheme_v2()
76
- const as = ReactIs.isValidElementType(asProp) ? asProp : 'div'
85
+ const {avatar: avatarTheme} = useTheme_v2()
86
+ const As = ReactIs.isValidElementType(asProp) ? asProp : 'div'
77
87
  const size = useArrayProp(sizeProp)
78
88
 
79
89
  // @todo: remove this
80
- const avatarSize = avatar.sizes[size[0]] || avatar.sizes[0]
90
+ const avatarSize = avatarTheme.sizes[size[0]] || avatarTheme.sizes[0]
81
91
  const _sizeRem = avatarSize.size
82
92
  const _radius = _sizeRem / 2
83
93
 
@@ -124,30 +134,37 @@ export const Avatar = forwardRef(function Avatar(
124
134
  )
125
135
 
126
136
  return (
127
- <Root
128
- as={as}
129
- data-as={typeof as === 'string' ? as : undefined}
137
+ <As
138
+ data-as={typeof As === 'string' ? As : undefined}
130
139
  data-ui="Avatar"
131
140
  {...restProps}
132
141
  $color={color}
133
142
  $size={size}
134
143
  aria-label={title}
135
- data-arrow-position={arrowPosition}
144
+ className={composeClassNames(
145
+ className,
146
+ avatar({
147
+ arrowPosition,
148
+ color,
149
+ size: sizeProp,
150
+ }),
151
+ )}
152
+ // data-arrow-position={arrowPosition}
136
153
  data-status={status}
137
154
  ref={ref}
138
155
  title={title}
139
156
  >
140
- <Arrow>
157
+ <span className={avatarArrow()}>
141
158
  <svg width="11" height="7" viewBox="0 0 11 7" fill="none">
142
159
  <path
143
160
  d="M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z"
144
161
  fill={color}
145
162
  />
146
163
  </svg>
147
- </Arrow>
164
+ </span>
148
165
 
149
166
  {!imageFailed && src && (
150
- <Image viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill="none">
167
+ <svg className={avatarImage()} viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill="none">
151
168
  <defs>
152
169
  <pattern id={imageId} patternContentUnits="objectBoundingBox" width="1" height="1">
153
170
  <image
@@ -163,7 +180,8 @@ export const Avatar = forwardRef(function Avatar(
163
180
  <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />
164
181
 
165
182
  {!__unstable_hideInnerStroke && (
166
- <BgStroke
183
+ <ellipse
184
+ className={avatarBgStroke()}
167
185
  cx={_radius}
168
186
  cy={_radius}
169
187
  rx={_radius}
@@ -172,26 +190,28 @@ export const Avatar = forwardRef(function Avatar(
172
190
  />
173
191
  )}
174
192
 
175
- <Stroke
193
+ <ellipse
194
+ className={avatarStroke()}
176
195
  cx={_radius}
177
196
  cy={_radius}
178
197
  rx={_radius}
179
198
  ry={_radius}
180
199
  vectorEffect="non-scaling-stroke"
181
200
  />
182
- </Image>
201
+ </svg>
183
202
  )}
184
203
 
185
204
  {(imageFailed || !src) && initials && (
186
205
  <>
187
- <Initials>
188
- <InitialsLabel forwardedAs="span" size={initialsSize} weight="medium">
206
+ <span className={avatarInitials()}>
207
+ <Label as="span" size={initialsSize} style={{color: 'inherit'}} weight="medium">
189
208
  {initials}
190
- </InitialsLabel>
191
- </Initials>
209
+ </Label>
210
+ </span>
192
211
  </>
193
212
  )}
194
- </Root>
213
+ </As>
195
214
  )
196
215
  })
216
+
197
217
  Avatar.displayName = 'ForwardRef(Avatar)'
@@ -1,8 +1,8 @@
1
1
  import {getTheme_v2} from '@sanity/ui/theme'
2
2
  import {forwardRef, useMemo} from 'react'
3
- import {styled, css} from 'styled-components'
4
3
  import {EMPTY_RECORD} from '../../constants'
5
4
  import {useArrayProp} from '../../hooks'
5
+ import {styled, css} from '../../lib/styled'
6
6
  import {rem, _responsive, ThemeProps} from '../../styles'
7
7
  import {AvatarSize} from '../../types'
8
8
  import {Label} from '../label'
@@ -1,8 +1,8 @@
1
1
  import {getTheme_v2} from '@sanity/ui/theme'
2
2
  import {Children, cloneElement, forwardRef, isValidElement, useMemo} from 'react'
3
- import {styled, css} from 'styled-components'
4
3
  import {EMPTY_RECORD} from '../../constants'
5
4
  import {useArrayProp} from '../../hooks'
5
+ import {styled, css} from '../../lib/styled'
6
6
  import {rem, _responsive, ThemeProps} from '../../styles'
7
7
  import {AvatarSize} from '../../types'
8
8
  import {AvatarCounter} from './avatarCounter'
@@ -1,4 +1,5 @@
1
- import {Badge, Flex, Inline} from '@sanity/ui'
1
+ import {Badge, Flex} from '@sanity/ui'
2
+ import {THEME_COLOR_STATE_TONES} from '@sanity/ui/theme'
2
3
  import {useSelect} from '@sanity/ui-workshop'
3
4
  import {WORKSHOP_BADGE_MODE_OPTIONS} from '../../../__workshop__/constants'
4
5
 
@@ -7,21 +8,13 @@ export default function Tones() {
7
8
 
8
9
  return (
9
10
  <Flex align="center" height="fill" justify="center" padding={4} sizing="border">
10
- <Inline space={2}>
11
- <Badge mode={mode}>Default</Badge>
12
- <Badge mode={mode} tone="primary">
13
- Primary
14
- </Badge>
15
- <Badge mode={mode} tone="positive">
16
- Positive
17
- </Badge>
18
- <Badge mode={mode} tone="caution">
19
- Caution
20
- </Badge>
21
- <Badge mode={mode} tone="critical">
22
- Critical
23
- </Badge>
24
- </Inline>
11
+ <Flex align="center" direction="column" gap={2}>
12
+ {THEME_COLOR_STATE_TONES.map((tone) => (
13
+ <Badge key={tone} mode={mode} tone={tone}>
14
+ {tone}
15
+ </Badge>
16
+ ))}
17
+ </Flex>
25
18
  </Flex>
26
19
  )
27
20
  }