@sanity/ui 2.0.0-alpha.5 → 2.0.0-alpha.7

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 (115) hide show
  1. package/dist/index.cjs.mjs +3 -1
  2. package/dist/index.d.ts +294 -407
  3. package/dist/index.esm.js +971 -2333
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +972 -2332
  6. package/dist/index.js.map +1 -1
  7. package/package.json +1 -1
  8. package/src/components/dialog/dialog.tsx +3 -3
  9. package/src/components/dialog/styles.ts +3 -4
  10. package/src/components/menu/__workshop__/closableMenuButton.tsx +2 -2
  11. package/src/components/menu/menuDivider.ts +2 -1
  12. package/src/components/menu/menuGroup.tsx +22 -23
  13. package/src/components/menu/menuItem.tsx +30 -36
  14. package/src/components/skeleton/styles.ts +8 -7
  15. package/src/components/tree/style.ts +19 -20
  16. package/src/primitives/_selectable/style.ts +25 -22
  17. package/src/primitives/avatar/avatar.tsx +8 -3
  18. package/src/primitives/avatar/avatarCounter.tsx +5 -4
  19. package/src/primitives/avatar/spotColors.ts +53 -0
  20. package/src/primitives/avatar/styles.ts +5 -7
  21. package/src/primitives/avatar/types.ts +14 -0
  22. package/src/primitives/badge/badge.tsx +4 -2
  23. package/src/primitives/badge/styles.ts +7 -8
  24. package/src/primitives/box/__workshop__/responsive.tsx +2 -2
  25. package/src/primitives/button/button.tsx +2 -2
  26. package/src/primitives/button/styles.ts +82 -16
  27. package/src/primitives/card/__workshop__/selected.tsx +8 -9
  28. package/src/primitives/card/card.tsx +43 -7
  29. package/src/primitives/card/styles.ts +30 -22
  30. package/src/primitives/card/types.ts +3 -1
  31. package/src/primitives/checkbox/styles.ts +20 -20
  32. package/src/primitives/code/code.tsx +15 -3
  33. package/src/primitives/code/styles.ts +51 -42
  34. package/src/primitives/heading/styles.ts +6 -5
  35. package/src/primitives/kbd/kbd.tsx +2 -1
  36. package/src/primitives/label/styles.ts +3 -2
  37. package/src/primitives/popover/popoverArrow.tsx +3 -2
  38. package/src/primitives/popover/popoverCard.tsx +6 -2
  39. package/src/primitives/radio/styles.ts +15 -15
  40. package/src/primitives/select/styles.ts +20 -22
  41. package/src/primitives/switch/styles.ts +13 -13
  42. package/src/primitives/text/__workshop__/colored.tsx +10 -11
  43. package/src/primitives/text/styles.ts +10 -9
  44. package/src/primitives/textArea/textArea.tsx +7 -11
  45. package/src/primitives/textInput/textInput.tsx +12 -12
  46. package/src/primitives/tooltip/__workshop__/props.tsx +20 -3
  47. package/src/primitives/tooltip/tooltipArrow.tsx +3 -2
  48. package/src/styles/border/borderStyle.ts +2 -1
  49. package/src/styles/colorVars/colorVarsStyle.ts +73 -32
  50. package/src/styles/focusRing/index.ts +6 -4
  51. package/src/styles/input/textInputStyle.ts +76 -93
  52. package/src/styles/margin/marginsStyle.test.ts +1 -2
  53. package/src/styles/padding/paddingStyle.test.ts +1 -2
  54. package/src/styles/shadow/shadowStyle.ts +5 -5
  55. package/src/theme/__workshop__/color.tsx +2 -2
  56. package/src/theme/__workshop__/index.ts +0 -5
  57. package/src/theme/lib/color-fns/blend/multiply.ts +2 -2
  58. package/src/theme/lib/color-fns/blend/screen.ts +2 -2
  59. package/src/theme/lib/color-fns/convert.ts +15 -1
  60. package/src/theme/lib/color-fns/parse.ts +7 -3
  61. package/src/theme/lib/color-fns/types.ts +11 -0
  62. package/src/theme/lib/theme/color/cssVariables/cardVariables.ts +92 -0
  63. package/src/theme/lib/theme/color/cssVariables/createCssVars.ts +31 -0
  64. package/src/theme/lib/theme/color/cssVariables/cssVars.test.ts +262 -0
  65. package/src/theme/lib/theme/color/cssVariables/index.ts +1 -0
  66. package/src/theme/lib/theme/color/cssVariables/tints.ts +312 -0
  67. package/src/theme/lib/theme/color/cssVariables/tones.ts +67 -0
  68. package/src/theme/lib/theme/color/cssVariables/utils.test.ts +15 -0
  69. package/src/theme/lib/theme/color/cssVariables/utils.ts +9 -0
  70. package/src/theme/lib/theme/color/index.ts +2 -12
  71. package/src/theme/lib/theme/color/types.ts +6 -37
  72. package/src/theme/studioTheme/color.ts +2 -641
  73. package/src/theme/studioTheme/helpers.ts +15 -1
  74. package/src/theme/studioTheme/theme.ts +9 -3
  75. package/src/theme/themeColorProvider.tsx +2 -0
  76. package/src/theme/themeProvider.tsx +27 -8
  77. package/src/theme/toneContext/toneContext.ts +12 -0
  78. package/src/theme/toneContext/toneProvider.tsx +31 -0
  79. package/src/theme/toneContext/types.ts +10 -0
  80. package/src/theme/toneContext/useToneContext.tsx +26 -0
  81. package/src/theme/types.ts +2 -4
  82. package/src/utils/elementQuery/__workshop__/customMedia.tsx +4 -3
  83. package/src/theme/__workshop__/canvas.tsx +0 -395
  84. package/src/theme/lib/theme/color/_generic/index.ts +0 -1
  85. package/src/theme/lib/theme/color/_generic/types.ts +0 -30
  86. package/src/theme/lib/theme/color/base/index.ts +0 -1
  87. package/src/theme/lib/theme/color/base/types.ts +0 -19
  88. package/src/theme/lib/theme/color/button/createButtonModes.ts +0 -20
  89. package/src/theme/lib/theme/color/button/createButtonTones.ts +0 -52
  90. package/src/theme/lib/theme/color/button/index.ts +0 -1
  91. package/src/theme/lib/theme/color/button/types.ts +0 -44
  92. package/src/theme/lib/theme/color/card/createCardStates.ts +0 -58
  93. package/src/theme/lib/theme/color/card/index.ts +0 -1
  94. package/src/theme/lib/theme/color/card/types.ts +0 -18
  95. package/src/theme/lib/theme/color/color.test.ts +0 -63
  96. package/src/theme/lib/theme/color/defaults.ts +0 -390
  97. package/src/theme/lib/theme/color/factory.ts +0 -138
  98. package/src/theme/lib/theme/color/input/createInputModes.ts +0 -84
  99. package/src/theme/lib/theme/color/input/index.ts +0 -1
  100. package/src/theme/lib/theme/color/input/types.ts +0 -28
  101. package/src/theme/lib/theme/color/muted/createMuted.ts +0 -56
  102. package/src/theme/lib/theme/color/muted/index.ts +0 -1
  103. package/src/theme/lib/theme/color/muted/types.ts +0 -24
  104. package/src/theme/lib/theme/color/selectable/createSelectableTones.ts +0 -73
  105. package/src/theme/lib/theme/color/selectable/index.ts +0 -1
  106. package/src/theme/lib/theme/color/selectable/types.ts +0 -29
  107. package/src/theme/lib/theme/color/solid/createSolidTones.ts +0 -56
  108. package/src/theme/lib/theme/color/solid/index.ts +0 -1
  109. package/src/theme/lib/theme/color/solid/types.ts +0 -24
  110. package/src/theme/lib/theme/color/spot/createSpot.ts +0 -21
  111. package/src/theme/lib/theme/color/spot/index.ts +0 -1
  112. package/src/theme/lib/theme/color/spot/types.ts +0 -28
  113. package/src/theme/lib/theme/color/syntax/index.ts +0 -1
  114. package/src/theme/lib/theme/color/syntax/types.ts +0 -41
  115. package/src/theme/studioTheme/tints.ts +0 -152
@@ -1,57 +1,66 @@
1
- import {css, ExecutionContext} from 'styled-components'
1
+ import {purple, green, yellow, orange, cyan, gray, red, blue, magenta} from '@sanity/color'
2
+ import {css} from 'styled-components'
3
+ import {ThemeColorSchemeKey} from '../../theme'
4
+ import {cssVars} from '../../theme/lib/theme/color/cssVariables/createCssVars'
2
5
 
3
- function codeSyntaxHighlightingStyle({theme}: ExecutionContext) {
4
- const color = theme.sanity.color.syntax
6
+ function codeSyntaxHighlightingStyle(scheme: ThemeColorSchemeKey) {
7
+ const dark = scheme === 'dark'
8
+ const mainShade = dark ? 400 : 600
9
+ const secondaryShade = dark ? 600 : 400
5
10
 
6
11
  return {
7
- '&.atrule': {color: color.atrule},
8
- '&.attr-name': {color: color.attrName},
9
- '&.attr-value': {color: color.attrValue},
10
- '&.attribute': {color: color.attribute},
11
- '&.boolean': {color: color.boolean},
12
- '&.builtin': {color: color.builtin},
13
- '&.cdata': {color: color.cdata},
14
- '&.char': {color: color.char},
15
- '&.class': {color: color.class},
16
- '&.class-name': {color: color.className},
17
- '&.comment': {color: color.comment},
18
- '&.constant': {color: color.constant},
19
- '&.deleted': {color: color.deleted},
20
- '&.doctype': {color: color.doctype},
21
- '&.entity': {color: color.entity},
22
- '&.function': {color: color.function},
23
- '&.hexcode': {color: color.hexcode},
24
- '&.id': {color: color.id},
25
- '&.important': {color: color.important},
26
- '&.inserted': {color: color.inserted},
27
- '&.keyword': {color: color.keyword},
28
- '&.number': {color: color.number},
29
- '&.operator': {color: color.operator},
30
- '&.prolog': {color: color.prolog},
31
- '&.property': {color: color.property},
32
- '&.pseudo-class': {color: color.pseudoClass},
33
- '&.pseudo-element': {color: color.pseudoElement},
34
- '&.punctuation': {color: color.punctuation},
35
- '&.regex': {color: color.regex},
36
- '&.selector': {color: color.selector},
37
- '&.string': {color: color.string},
38
- '&.symbol': {color: color.symbol},
39
- '&.tag': {color: color.tag},
40
- '&.unit': {color: color.unit},
41
- '&.url': {color: color.url},
42
- '&.variable': {color: color.variable},
12
+ '&.atrule': {color: purple[mainShade].hex},
13
+ '&.attr-name': {color: green[mainShade].hex},
14
+ '&.attr-value': {color: yellow[mainShade].hex},
15
+ '&.attribute': {color: yellow[mainShade].hex},
16
+ '&.boolean': {color: purple[mainShade].hex},
17
+ '&.builtin': {color: purple[mainShade].hex},
18
+ '&.cdata': {color: yellow[mainShade].hex},
19
+ '&.char': {color: yellow[mainShade].hex},
20
+ '&.class': {color: orange[mainShade].hex},
21
+ '&.class-name': {color: cyan[mainShade].hex},
22
+ '&.comment': {color: gray[secondaryShade].hex},
23
+ '&.constant': {color: purple[mainShade].hex},
24
+ '&.deleted': {color: red[mainShade].hex},
25
+ '&.doctype': {color: gray[secondaryShade].hex},
26
+ '&.entity': {color: red[mainShade].hex},
27
+ '&.function': {color: green[mainShade].hex},
28
+ '&.hexcode': {color: blue[mainShade].hex},
29
+ '&.id': {color: purple[mainShade].hex},
30
+ '&.important': {color: purple[mainShade].hex},
31
+ '&.inserted': {color: yellow[mainShade].hex},
32
+ '&.keyword': {color: magenta[mainShade].hex},
33
+ '&.number': {color: purple[mainShade].hex},
34
+ '&.operator': {color: magenta[mainShade].hex},
35
+ '&.prolog': {color: gray[secondaryShade].hex},
36
+ '&.property': {color: blue[mainShade].hex},
37
+ '&.pseudo-class': {color: yellow[mainShade].hex},
38
+ '&.pseudo-element': {color: yellow[mainShade].hex},
39
+ '&.punctuation': {color: gray[mainShade].hex},
40
+ '&.regex': {color: blue[mainShade].hex},
41
+ '&.selector': {color: red[mainShade].hex},
42
+ '&.string': {color: yellow[mainShade].hex},
43
+ '&.symbol': {color: purple[mainShade].hex},
44
+ '&.tag': {color: red[mainShade].hex},
45
+ '&.unit': {color: orange[mainShade].hex},
46
+ '&.url': {color: red[mainShade].hex},
47
+ '&.variable': {color: red[mainShade].hex},
43
48
  }
44
49
  }
45
50
 
46
- export function codeBaseStyle(): ReturnType<typeof css> {
51
+ export interface CodeBaseStyleProps {
52
+ $scheme: ThemeColorSchemeKey
53
+ }
54
+
55
+ export function codeBaseStyle(props: CodeBaseStyleProps): ReturnType<typeof css> {
47
56
  return css`
48
- color: var(--card-code-fg-color);
57
+ color: ${cssVars.default['text-code']};
49
58
 
50
59
  & code {
51
60
  font-family: inherit;
52
61
 
53
62
  &.refractor .token {
54
- ${codeSyntaxHighlightingStyle}
63
+ ${codeSyntaxHighlightingStyle(props.$scheme)}
55
64
  }
56
65
  }
57
66
 
@@ -1,5 +1,6 @@
1
1
  import {css} from 'styled-components'
2
2
  import {ThemeProps} from '../../styles'
3
+ import {cssVars} from '../../theme'
3
4
  import {HeadingStyleProps} from './types'
4
5
 
5
6
  export function headingBaseStyle(props: HeadingStyleProps & ThemeProps): ReturnType<typeof css> {
@@ -8,12 +9,12 @@ export function headingBaseStyle(props: HeadingStyleProps & ThemeProps): ReturnT
8
9
  return css`
9
10
  ${$accent &&
10
11
  css`
11
- color: var(--card-accent-fg-color);
12
+ color: ${cssVars.default['text-accent']}};
12
13
  `}
13
14
 
14
15
  ${$muted &&
15
16
  css`
16
- color: var(--card-muted-fg-color);
17
+ color: ${cssVars.mutable['muted-fg-color']};
17
18
  `}
18
19
 
19
20
  & code {
@@ -24,7 +25,7 @@ export function headingBaseStyle(props: HeadingStyleProps & ThemeProps): ReturnT
24
25
  & a {
25
26
  text-decoration: none;
26
27
  border-radius: 1px;
27
- color: var(--card-link-color);
28
+ color: ${cssVars.default['text-link']};
28
29
  outline: none;
29
30
 
30
31
  @media (hover: hover) {
@@ -35,8 +36,8 @@ export function headingBaseStyle(props: HeadingStyleProps & ThemeProps): ReturnT
35
36
 
36
37
  &:focus {
37
38
  box-shadow:
38
- 0 0 0 1px var(--card-bg-color),
39
- 0 0 0 3px var(--card-focus-ring-color);
39
+ 0 0 0 1px ${cssVars.mutable['bg-color']},
40
+ 0 0 0 3px ${cssVars.positive['border-accent']};
40
41
  }
41
42
 
42
43
  &:focus:not(:focus-visible) {
@@ -2,6 +2,7 @@ import {forwardRef} from 'react'
2
2
  import styled, {css} from 'styled-components'
3
3
  import {useArrayProp} from '../../hooks'
4
4
  import {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'
5
+ import {cssVars} from '../../theme'
5
6
  import {Radius} from '../../types'
6
7
  import {Box} from '../box'
7
8
  import {Text} from '../text'
@@ -18,7 +19,7 @@ export interface KBDProps {
18
19
 
19
20
  function kbdStyle() {
20
21
  return css`
21
- background: var(--card-bg2-color);
22
+ background: ${cssVars.default['bg-tint']};
22
23
  font: inherit;
23
24
 
24
25
  &:not([hidden]) {
@@ -1,5 +1,6 @@
1
1
  import {css} from 'styled-components'
2
2
  import {ThemeProps} from '../../styles'
3
+ import {cssVars} from '../../theme'
3
4
 
4
5
  export function labelBaseStyle(
5
6
  props: {$accent?: boolean; $muted: boolean} & ThemeProps,
@@ -12,12 +13,12 @@ export function labelBaseStyle(
12
13
 
13
14
  ${$accent &&
14
15
  css`
15
- color: var(--card-accent-fg-color);
16
+ color: ${cssVars.default['text-accent']}};
16
17
  `}
17
18
 
18
19
  ${$muted &&
19
20
  css`
20
- color: var(--card-muted-fg-color);
21
+ color: ${cssVars.mutable['muted-fg-color']};
21
22
  `}
22
23
 
23
24
  & code {
@@ -1,5 +1,6 @@
1
1
  import {forwardRef} from 'react'
2
2
  import styled from 'styled-components'
3
+ import {cssVars} from '../../theme'
3
4
  import {DEFAULT_POPOVER_ARROW_HEIGHT, DEFAULT_POPOVER_ARROW_WIDTH} from './constants'
4
5
 
5
6
  const Root = styled.div`
@@ -48,11 +49,11 @@ const Root = styled.div`
48
49
  `
49
50
 
50
51
  const BorderPath = styled.path`
51
- fill: var(--card-shadow-outline-color);
52
+ fill: ${cssVars.default['base-shadow-outline-color']};
52
53
  `
53
54
 
54
55
  const ShapePath = styled.path`
55
- fill: var(--card-bg-color);
56
+ fill: ${cssVars.mutable['bg-color']};
56
57
  `
57
58
 
58
59
  export const PopoverArrow = forwardRef(function PopoverArrow(
@@ -3,6 +3,7 @@ import React, {CSSProperties, forwardRef, memo, useMemo} from 'react'
3
3
  import styled from 'styled-components'
4
4
  import {FLOATING_STATIC_SIDES} from '../../constants'
5
5
  import {ThemeColorSchemeKey} from '../../theme'
6
+ import {useToneContext} from '../../theme/toneContext/useToneContext'
6
7
  import {BoxOverflow, CardTone, Placement, PopoverMargins, Radius} from '../../types'
7
8
  import {useLayer} from '../../utils'
8
9
  import {Card} from '../card'
@@ -66,8 +67,8 @@ export const PopoverCard = memo(
66
67
  y: yProp,
67
68
  ...restProps
68
69
  } = props
69
-
70
70
  const {zIndex} = useLayer()
71
+ const toneContext = useToneContext()
71
72
 
72
73
  // Get margins: [top, right, bottom, left]
73
74
  const margins: PopoverMargins = useMemo(
@@ -110,14 +111,17 @@ export const PopoverCard = memo(
110
111
  <Root
111
112
  data-ui="Popover"
112
113
  {...restProps}
114
+ data-tone={tone}
113
115
  data-placement={placement}
114
116
  radius={radius}
115
117
  ref={ref}
116
118
  scheme={scheme}
117
119
  shadow={shadow}
118
120
  sizing="border"
121
+ // The popover creates a new html element, so it's out of context of the css variables generated in the cards.
122
+ updateCssVars
123
+ tone={tone === 'inherit' ? toneContext.tone : tone}
119
124
  style={rootStyle}
120
- tone={tone}
121
125
  >
122
126
  <Flex data-ui="Popover__wrapper" direction="column" flex={1} overflow={overflow}>
123
127
  <Flex direction="column" flex={1} padding={padding}>
@@ -1,6 +1,7 @@
1
1
  import {css} from 'styled-components'
2
2
  import {rem, ThemeProps} from '../../styles'
3
3
  import {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'
4
+ import {cssVars} from '../../theme/lib/theme/color/cssVariables/createCssVars'
4
5
 
5
6
  export function radioBaseStyle(): ReturnType<typeof css> {
6
7
  return css`
@@ -20,7 +21,6 @@ export function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {
20
21
  const {theme} = props
21
22
  const {input} = theme.sanity
22
23
  const {focusRing} = input.radio
23
- const color = theme.sanity.color.input
24
24
  const dist = (input.radio.size - input.radio.markSize) / 2
25
25
 
26
26
  return css`
@@ -45,9 +45,9 @@ export function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {
45
45
  height: ${rem(input.radio.size)};
46
46
  width: ${rem(input.radio.size)};
47
47
  border-radius: ${rem(input.radio.size / 2)};
48
- background: ${color.default.enabled.bg};
48
+ background: ${cssVars.default['bg-base']};
49
49
  box-shadow: ${focusRingBorderStyle({
50
- color: color.default.enabled.border,
50
+ color: cssVars.default['border-base'],
51
51
  width: input.border.width,
52
52
  })};
53
53
 
@@ -59,7 +59,7 @@ export function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {
59
59
  height: ${rem(input.radio.markSize)};
60
60
  width: ${rem(input.radio.markSize)};
61
61
  border-radius: ${rem(input.radio.markSize / 2)};
62
- background: ${color.default.enabled.bg2};
62
+ background: ${cssVars.default['text-secondary']};
63
63
  opacity: 0;
64
64
  }
65
65
  }
@@ -67,14 +67,14 @@ export function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {
67
67
  /* focused */
68
68
  &:not(:disabled):focus + span {
69
69
  box-shadow: ${focusRingStyle({
70
- border: {width: input.border.width, color: color.default.enabled.border},
70
+ border: {width: input.border.width, color: cssVars.default['border-base']},
71
71
  focusRing,
72
72
  })};
73
73
  }
74
74
 
75
75
  &:not(:disabled):focus:not(:focus-visible) + span {
76
76
  box-shadow: ${focusRingBorderStyle({
77
- color: color.default.enabled.border,
77
+ color: cssVars.default['border-base'],
78
78
  width: input.border.width,
79
79
  })};
80
80
  }
@@ -85,33 +85,33 @@ export function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {
85
85
 
86
86
  /* customValidity */
87
87
  &[data-error] + span {
88
- background-color: ${color.invalid.enabled.border};
88
+ background-color: ${cssVars.critical['border-base']};
89
89
  box-shadow: ${focusRingBorderStyle({
90
90
  width: input.border.width,
91
- color: color.invalid.enabled.bg2,
91
+ color: cssVars.critical['text-secondary'],
92
92
  })};
93
93
  &::after {
94
- background: ${color.invalid.enabled.bg2};
94
+ background: ${cssVars.critical['text-secondary']};
95
95
  }
96
96
  }
97
97
 
98
98
  /* read only */
99
99
  &[data-read-only] + span {
100
- box-shadow: 0 0 0 1px ${color.default.readOnly.border};
101
- background: ${color.default.readOnly.bg};
100
+ box-shadow: 0 0 0 1px ${cssVars.default['border-base']};
101
+ background: ${cssVars.default['bg-tint']};
102
102
 
103
103
  &::after {
104
- background: ${color.default.readOnly.border};
104
+ background: ${cssVars.default['border-base']};
105
105
  }
106
106
  }
107
107
 
108
108
  /* disabled */
109
109
  &:not([data-read-only]):disabled + span {
110
- box-shadow: 0 0 0 1px ${color.default.disabled.border};
111
- background: ${color.default.disabled.bg};
110
+ box-shadow: 0 0 0 1px ${cssVars.default['border-base']};
111
+ background: ${cssVars.default['bg-tint']};
112
112
 
113
113
  &::after {
114
- background: ${color.default.disabled.border};
114
+ background: ${cssVars.default['border-base']};
115
115
  }
116
116
  }
117
117
  `
@@ -8,6 +8,8 @@ import {
8
8
  ResponsiveRadiusStyleProps,
9
9
  } from '../../styles/internal'
10
10
  import {ThemeFontSize} from '../../theme'
11
+ import {mutableCardVariables} from '../../theme/lib/theme/color/cssVariables/cardVariables'
12
+ import {cssVars} from '../../theme/lib/theme/color/cssVariables/createCssVars'
11
13
  import {CSSObject} from '../../types/styled'
12
14
 
13
15
  function rootStyle(): ReturnType<typeof css> {
@@ -45,24 +47,23 @@ function inputColorStyle(props: ThemeProps) {
45
47
  const {theme} = props
46
48
  const {input} = theme.sanity
47
49
  const {focusRing} = input.select
48
- const color = theme.sanity.color.input
49
50
 
50
51
  return css`
51
52
  /* enabled */
52
- background-color: ${color.default.enabled.bg};
53
- color: ${color.default.enabled.fg};
53
+ background-color: ${cssVars.default['bg-base']};
54
+ color: ${cssVars.default['text-primary']};
54
55
  box-shadow: ${focusRingBorderStyle({
55
- color: color.default.enabled.border,
56
+ color: cssVars.default['border-base'],
56
57
  width: input.border.width,
57
58
  })};
58
59
 
59
60
  /* hovered */
60
61
  @media (hover: hover) {
61
62
  &:not(:disabled):hover {
62
- background-color: ${color.default.hovered.bg};
63
- color: ${color.default.hovered.fg};
63
+ background-color: ${cssVars.default['bg-base-hover']};
64
+ color: ${cssVars.default['text-primary']};
64
65
  box-shadow: ${focusRingBorderStyle({
65
- color: color.default.hovered.border,
66
+ color: cssVars.default['border-base-hover'],
66
67
  width: input.border.width,
67
68
  })};
68
69
  }
@@ -71,27 +72,27 @@ function inputColorStyle(props: ThemeProps) {
71
72
  /* focused */
72
73
  &:not(:disabled):focus {
73
74
  box-shadow: ${focusRingStyle({
74
- border: {width: input.border.width, color: color.default.enabled.border},
75
+ border: {width: input.border.width, color: cssVars.default['border-base']},
75
76
  focusRing,
76
77
  })};
77
78
  }
78
79
 
79
80
  /* read-only */
80
81
  &[data-read-only] {
81
- background-color: ${color.default.readOnly.bg};
82
- color: ${color.default.readOnly.fg};
82
+ background-color: ${cssVars.default['bg-tint']};
83
+ color: ${cssVars.default['text-primary']};
83
84
  box-shadow: ${focusRingBorderStyle({
84
- color: color.default.readOnly.border,
85
+ color: cssVars.default['border-base'],
85
86
  width: input.border.width,
86
87
  })};
87
88
  }
88
89
 
89
90
  /* disabled */
90
91
  &:not([data-read-only]):disabled {
91
- background-color: ${color.default.disabled.bg};
92
- color: ${color.default.disabled.fg};
92
+ background-color: ${cssVars.default['bg-tint']};
93
+ color: ${cssVars.default['text-primary']};
93
94
  box-shadow: ${focusRingBorderStyle({
94
- color: color.default.disabled.border,
95
+ color: cssVars.default['border-base'],
95
96
  width: input.border.width,
96
97
  })};
97
98
  }
@@ -130,10 +131,7 @@ function inputStyle(): Array<
130
131
  ]
131
132
  }
132
133
 
133
- function iconBoxStyle(props: ThemeProps): ReturnType<typeof css> {
134
- const {theme} = props
135
- const color = theme.sanity.color.input
136
-
134
+ function iconBoxStyle(): ReturnType<typeof css> {
137
135
  return css`
138
136
  pointer-events: none;
139
137
  position: absolute;
@@ -141,23 +139,23 @@ function iconBoxStyle(props: ThemeProps): ReturnType<typeof css> {
141
139
  right: 0;
142
140
 
143
141
  /* enabled */
144
- --card-fg-color: ${color.default.enabled.fg};
142
+ ${mutableCardVariables['fg-color']}: ${cssVars.default['text-primary']};
145
143
 
146
144
  /* hover */
147
145
  @media (hover: hover) {
148
146
  select:not(disabled):not(:read-only):hover + && {
149
- --card-fg-color: ${color.default.hovered.fg};
147
+ ${mutableCardVariables['fg-color']}: ${cssVars.default['text-primary']};
150
148
  }
151
149
  }
152
150
 
153
151
  /* disabled */
154
152
  select:disabled + && {
155
- --card-fg-color: ${color.default.disabled.fg};
153
+ ${mutableCardVariables['fg-color']}: ${cssVars.default['text-primary']};
156
154
  }
157
155
 
158
156
  /* read-only */
159
157
  select[data-read-only] + && {
160
- --card-fg-color: ${color.default.readOnly.fg};
158
+ ${mutableCardVariables['fg-color']}: ${cssVars.default['text-primary']};
161
159
  }
162
160
  `
163
161
  }
@@ -1,6 +1,7 @@
1
1
  import {css} from 'styled-components'
2
2
  import {rem, ThemeProps} from '../../styles'
3
3
  import {focusRingStyle} from '../../styles/internal'
4
+ import {cssVars} from '../../theme/lib/theme/color/cssVariables/createCssVars'
4
5
 
5
6
  /* Root */
6
7
  export function switchBaseStyles(): ReturnType<typeof css> {
@@ -38,11 +39,10 @@ export function switchRepresentationStyles(props: ThemeProps): ReturnType<typeof
38
39
  const {theme} = props
39
40
  const {input} = theme.sanity
40
41
  const {focusRing} = input.switch
41
- const color = theme.sanity.color.input
42
42
 
43
43
  return css`
44
- --switch-bg-color: ${color.default.enabled.border};
45
- --switch-fg-color: ${color.default.enabled.bg};
44
+ --switch-bg-color: ${cssVars.default['border-base']};
45
+ --switch-fg-color: ${cssVars.default['bg-base']};
46
46
  --switch-box-shadow: none;
47
47
 
48
48
  &:not([hidden]) {
@@ -79,30 +79,30 @@ export function switchRepresentationStyles(props: ThemeProps): ReturnType<typeof
79
79
  }
80
80
 
81
81
  input:checked + && {
82
- --switch-bg-color: var(--card-focus-ring-color);
83
- --switch-fg-color: ${color.default.enabled.bg};
82
+ --switch-bg-color: ${cssVars.positive['border-accent']};
83
+ --switch-fg-color: ${cssVars.positive['bg-base']};
84
84
  }
85
85
 
86
86
  @media (hover: hover) {
87
87
  input:not(:disabled):hover + && {
88
- --switch-bg-color: ${color.default.hovered.border};
89
- --switch-fg-color: ${color.default.hovered.bg};
88
+ --switch-bg-color: ${cssVars.default['border-base']};
89
+ --switch-fg-color: ${cssVars.default['bg-base']};
90
90
  }
91
91
 
92
92
  input:not(:disabled):checked:hover + && {
93
- --switch-bg-color: var(--card-focus-ring-color);
94
- --switch-fg-color: ${color.default.enabled.bg};
93
+ --switch-bg-color: ${cssVars.positive['border-accent']};
94
+ --switch-fg-color: ${cssVars.positive['bg-base']};
95
95
  }
96
96
  }
97
97
 
98
98
  input:not([data-read-only]):disabled + && {
99
- --switch-bg-color: ${color.default.disabled.border};
100
- --switch-fg-color: ${color.default.disabled.bg};
99
+ --switch-bg-color: ${cssVars.default['border-base']};
100
+ --switch-fg-color: ${cssVars.default['bg-tint']};
101
101
  }
102
102
 
103
103
  input[data-read-only]:disabled + && {
104
- --switch-bg-color: ${color.default.readOnly.border};
105
- --switch-fg-color: ${color.default.readOnly.bg};
104
+ --switch-bg-color: ${cssVars.default['border-base']};
105
+ --switch-fg-color: ${cssVars.default['bg-tint']};
106
106
  }
107
107
  `
108
108
  }
@@ -1,27 +1,26 @@
1
- import {Flex, Text, Theme, ThemeColorSpotKey, useTheme} from '@sanity/ui'
1
+ import {Flex, Text, useTheme} from '@sanity/ui'
2
2
  import {useSelect} from '@sanity/ui-workshop'
3
3
  import styled, {css} from 'styled-components'
4
4
  import {WORKSHOP_SPOT_COLOR_OPTIONS} from '../../../__workshop__/constants'
5
+ import {useToneContext} from '../../../theme/toneContext/useToneContext'
6
+ import {spotColor} from '../../avatar/spotColors'
5
7
 
6
- const ColoredText = styled(Text)<{color?: ThemeColorSpotKey}>((props: {
7
- color?: ThemeColorSpotKey
8
- theme: Theme
9
- }) => {
10
- const {spot} = props.theme.sanity.color
11
-
8
+ const ColoredText = styled(Text)<{color: string}>((props: {color: string}) => {
12
9
  return css`
13
- color: ${spot[props.color || 'gray']};
10
+ color: ${props.color};
14
11
  `
15
12
  })
16
13
 
17
14
  export default function ColoredTextStory() {
18
15
  const theme = useTheme()
19
- const color = useSelect('Color', WORKSHOP_SPOT_COLOR_OPTIONS, 'gray')
16
+ const selectedColor = useSelect('Color', WORKSHOP_SPOT_COLOR_OPTIONS, 'gray')
17
+ const {scheme} = useToneContext()
18
+ const color = spotColor[selectedColor ?? 'gray'][scheme]
20
19
 
21
20
  return (
22
21
  <Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
23
- <ColoredText align="center" color={color} size={4} theme={theme} weight="bold">
24
- {color}
22
+ <ColoredText align="center" color={color.hex} size={4} theme={theme} weight="bold">
23
+ {color.title}
25
24
  </ColoredText>
26
25
  </Flex>
27
26
  )
@@ -1,5 +1,6 @@
1
1
  import {css} from 'styled-components'
2
2
  import {ThemeProps} from '../../styles'
3
+ import {cssVars} from '../../theme'
3
4
 
4
5
  export function textBaseStyle(
5
6
  props: {$accent?: boolean; $muted?: boolean} & ThemeProps,
@@ -8,29 +9,29 @@ export function textBaseStyle(
8
9
  const {weights} = theme.sanity.fonts.text
9
10
 
10
11
  return css`
11
- color: var(--card-fg-color);
12
+ color: ${cssVars.mutable['fg-color']};
12
13
 
13
14
  ${$accent &&
14
15
  css`
15
- color: var(--card-accent-fg-color);
16
+ color: ${cssVars.default['text-accent']};
16
17
  `}
17
18
 
18
19
  ${$muted &&
19
20
  css`
20
- color: var(--card-muted-fg-color);
21
+ color: ${cssVars.mutable['muted-fg-color']};
21
22
  `}
22
23
 
23
24
  & code {
24
25
  font-family: ${theme.sanity.fonts.code.family};
25
26
  border-radius: 1px;
26
- background-color: var(--card-code-bg-color);
27
- color: var(--card-code-fg-color);
27
+ background-color: ${cssVars.default['bg-tint-code']};
28
+ color: ${cssVars.default['text-code']};
28
29
  }
29
30
 
30
31
  & a {
31
32
  text-decoration: none;
32
33
  border-radius: 1px;
33
- color: var(--card-link-color);
34
+ color: ${cssVars.default['text-link']};
34
35
  outline: none;
35
36
 
36
37
  @media (hover: hover) {
@@ -41,8 +42,8 @@ export function textBaseStyle(
41
42
 
42
43
  &:focus {
43
44
  box-shadow:
44
- 0 0 0 1px var(--card-bg-color),
45
- 0 0 0 3px var(--card-focus-ring-color);
45
+ 0 0 0 1px ${cssVars.mutable['bg-color']},
46
+ 0 0 0 3px ${cssVars.positive['border-accent']};
46
47
  }
47
48
 
48
49
  &:focus:not(:focus-visible) {
@@ -62,7 +63,7 @@ export function textBaseStyle(
62
63
 
63
64
  & [data-sanity-icon] {
64
65
  vertical-align: baseline;
65
- color: var(--card-icon-color);
66
+ color: ${cssVars.mutable['icon-color']};
66
67
  }
67
68
  `
68
69
  }