@sanity/ui 2.0.0-alpha.34 → 2.0.0-alpha.35

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 (163) hide show
  1. package/dist/index.cjs.mjs +4 -3
  2. package/dist/index.d.ts +29 -22
  3. package/dist/index.esm.js +397 -518
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +413 -534
  6. package/dist/index.js.map +1 -1
  7. package/dist/theme.cjs.mjs +10 -4
  8. package/dist/theme.d.ts +450 -187
  9. package/dist/theme.esm.js +2933 -2750
  10. package/dist/theme.esm.js.map +1 -1
  11. package/dist/theme.js +2942 -2753
  12. package/dist/theme.js.map +1 -1
  13. package/package.json +3 -3
  14. package/src/core/_compat.ts +7 -7
  15. package/src/core/components/dialog/dialog.tsx +5 -5
  16. package/src/core/components/dialog/styles.ts +4 -5
  17. package/src/core/components/hotkeys/hotkeys.tsx +4 -2
  18. package/src/core/components/menu/__workshop__/avatarMenu.tsx +50 -0
  19. package/src/core/components/menu/__workshop__/index.ts +5 -0
  20. package/src/core/components/menu/menuItem.tsx +7 -1
  21. package/src/core/components/skeleton/textSkeleton.tsx +12 -14
  22. package/src/core/components/tree/style.ts +14 -17
  23. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +3 -3
  24. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +2 -3
  25. package/src/core/primitives/_selectable/style.ts +18 -18
  26. package/src/core/primitives/avatar/avatar.tsx +3 -3
  27. package/src/core/primitives/avatar/avatarCounter.tsx +4 -4
  28. package/src/core/primitives/avatar/avatarStack.tsx +2 -2
  29. package/src/core/primitives/avatar/styles.ts +7 -8
  30. package/src/core/primitives/avatar/types.ts +2 -2
  31. package/src/core/primitives/badge/__workshop__/props.tsx +1 -1
  32. package/src/core/primitives/badge/__workshop__/tones.tsx +1 -1
  33. package/src/core/primitives/badge/badge.tsx +1 -1
  34. package/src/core/primitives/badge/styles.ts +5 -6
  35. package/src/core/primitives/button/button.tsx +3 -4
  36. package/src/core/primitives/button/styles.ts +22 -23
  37. package/src/core/primitives/card/__workshop__/selected.tsx +15 -15
  38. package/src/core/primitives/card/card.tsx +1 -1
  39. package/src/core/primitives/card/styles.ts +22 -22
  40. package/src/core/primitives/checkbox/styles.ts +21 -22
  41. package/src/core/primitives/code/styles.ts +4 -1
  42. package/src/core/primitives/container/styles.ts +2 -3
  43. package/src/core/primitives/heading/styles.ts +4 -2
  44. package/src/core/primitives/inline/styles.ts +6 -6
  45. package/src/core/primitives/kbd/kbd.tsx +7 -11
  46. package/src/core/primitives/label/styles.ts +4 -3
  47. package/src/core/primitives/popover/helpers.ts +3 -4
  48. package/src/core/primitives/popover/popover.tsx +8 -4
  49. package/src/core/primitives/popover/types.ts +1 -1
  50. package/src/core/primitives/radio/styles.ts +17 -19
  51. package/src/core/primitives/select/styles.ts +27 -32
  52. package/src/core/primitives/stack/styles.ts +2 -3
  53. package/src/core/primitives/switch/__workshop__/props.tsx +11 -31
  54. package/src/core/primitives/switch/styles.ts +18 -21
  55. package/src/core/primitives/text/__workshop__/colored.tsx +10 -10
  56. package/src/core/primitives/text/styles.ts +9 -4
  57. package/src/core/primitives/tooltip/tooltip.tsx +3 -3
  58. package/src/core/styles/border/borderStyle.ts +6 -11
  59. package/src/core/styles/box/boxStyle.ts +5 -9
  60. package/src/core/styles/card/_cardColorStyle.ts +99 -0
  61. package/src/core/styles/card/index.ts +1 -0
  62. package/src/core/styles/flex/flexItemStyle.ts +2 -3
  63. package/src/core/styles/flex/flexStyle.ts +6 -11
  64. package/src/core/styles/font/responsiveFont.ts +4 -4
  65. package/src/core/styles/font/textAlignStyle.ts +3 -3
  66. package/src/core/styles/grid/gridItemStyle.ts +7 -13
  67. package/src/core/styles/grid/gridStyle.ts +9 -17
  68. package/src/core/styles/helpers.ts +5 -3
  69. package/src/core/styles/input/responsiveInputPaddingStyle.ts +6 -6
  70. package/src/core/styles/input/textInputStyle.ts +36 -40
  71. package/src/core/styles/margin/marginsStyle.test.ts +2 -3
  72. package/src/core/styles/padding/paddingStyle.test.ts +2 -3
  73. package/src/core/styles/radius/radiusStyle.ts +2 -3
  74. package/src/core/styles/shadow/shadowStyle.ts +4 -5
  75. package/src/core/theme/__workshop__/build/Root.tsx +24 -20
  76. package/src/core/theme/__workshop__/build/story.tsx +22 -26
  77. package/src/core/theme/__workshop__/canvas.tsx +21 -40
  78. package/src/core/theme/theme.test.tsx +2 -35
  79. package/src/core/theme/themeColorProvider.tsx +2 -2
  80. package/src/core/theme/themeContext.ts +2 -2
  81. package/src/core/theme/themeProvider.tsx +25 -25
  82. package/src/core/theme/types.ts +3 -2
  83. package/src/core/theme/useRootTheme.ts +1 -9
  84. package/src/core/theme/useTheme.ts +8 -1
  85. package/src/core/types/card.ts +2 -2
  86. package/src/core/utils/arrow/arrow.tsx +3 -3
  87. package/src/core/utils/elementQuery/elementQuery.tsx +3 -3
  88. package/src/core/utils/virtualList/virtualList.tsx +2 -2
  89. package/src/theme/build/_deprecated/color/muted/createMuted.ts +2 -2
  90. package/src/theme/build/buildColorTheme.test.ts +14 -15
  91. package/src/theme/build/buildColorTheme.ts +239 -292
  92. package/src/theme/build/buildTheme.test.ts +9 -7
  93. package/src/theme/build/buildTheme.ts +12 -9
  94. package/src/theme/build/colorToken.ts +3 -1
  95. package/src/theme/build/lib/color-fns/contrastRatio.ts +1 -0
  96. package/src/theme/build/lib/isRecord.ts +3 -0
  97. package/src/theme/build/merge.ts +18 -13
  98. package/src/theme/build/renderColorTheme.ts +205 -213
  99. package/src/theme/build/renderColorValue.ts +15 -8
  100. package/src/theme/build/resolveColorTokens.ts +177 -198
  101. package/src/theme/build/theme.test.ts +27 -0
  102. package/src/theme/config/helpers.ts +16 -8
  103. package/src/theme/config/system.ts +46 -17
  104. package/src/theme/config/tokens/color/types.ts +55 -32
  105. package/src/theme/config/tokens/types.ts +11 -4
  106. package/src/theme/config/types.ts +5 -11
  107. package/src/theme/{build/defaults → defaults}/colorPalette.ts +1 -1
  108. package/src/theme/{build/defaults → defaults}/colorTokens.ts +189 -136
  109. package/src/theme/{build/defaults → defaults}/config.ts +14 -12
  110. package/src/theme/{build/defaults → defaults}/fonts.ts +6 -6
  111. package/src/theme/getScopedTheme.ts +81 -0
  112. package/src/theme/index.ts +9 -1
  113. package/src/theme/system/avatar.ts +1 -1
  114. package/src/theme/system/color/_constants.ts +11 -11
  115. package/src/theme/system/color/_system.ts +10 -71
  116. package/src/theme/system/color/avatar.ts +22 -10
  117. package/src/theme/system/color/badge.ts +18 -7
  118. package/src/theme/system/color/button.ts +17 -23
  119. package/src/theme/system/color/color.ts +34 -0
  120. package/src/theme/system/color/index.ts +3 -10
  121. package/src/theme/system/color/input.ts +13 -11
  122. package/src/theme/system/color/kbd.ts +3 -3
  123. package/src/theme/system/color/selectable.ts +13 -19
  124. package/src/theme/system/color/shadow.ts +7 -0
  125. package/src/theme/system/color/state.ts +37 -0
  126. package/src/theme/system/css.ts +9 -0
  127. package/src/theme/system/focusRing.ts +7 -0
  128. package/src/theme/system/index.ts +5 -1
  129. package/src/theme/system/input.ts +1 -1
  130. package/src/theme/system/layer.ts +1 -2
  131. package/src/theme/system/shadow.ts +1 -0
  132. package/src/theme/system/styles.ts +19 -0
  133. package/src/theme/system/theme.ts +97 -0
  134. package/src/theme/system/{color → v0/color}/_generic.ts +2 -1
  135. package/src/theme/system/v0/color/_system.ts +13 -0
  136. package/src/theme/system/{color → v0/color}/base.ts +2 -0
  137. package/src/theme/system/v0/color/button.ts +42 -0
  138. package/src/theme/system/{color → v0/color}/card.ts +2 -1
  139. package/src/theme/system/v0/color/color.ts +40 -0
  140. package/src/theme/system/v0/color/index.ts +11 -0
  141. package/src/theme/system/v0/color/input.ts +34 -0
  142. package/src/theme/system/{color/_deprecated → v0/color}/muted.ts +1 -1
  143. package/src/theme/system/v0/color/selectable.ts +31 -0
  144. package/src/theme/system/{color/_deprecated → v0/color}/solid.ts +1 -1
  145. package/src/theme/system/v0/color/spot.ts +13 -0
  146. package/src/theme/system/v0/index.ts +1 -0
  147. package/src/theme/versioning/getTheme_v2.ts +35 -0
  148. package/src/theme/versioning/index.ts +5 -0
  149. package/src/theme/versioning/is_v0.ts +6 -0
  150. package/src/theme/versioning/is_v2.ts +6 -0
  151. package/src/theme/versioning/themeColor_v0_v2.ts +217 -0
  152. package/src/theme/versioning/v0_v2.ts +70 -0
  153. package/src/theme/versioning/v2_v0.ts +128 -0
  154. package/src/core/styles/colorVars/colorVarsStyle.ts +0 -43
  155. package/src/core/styles/colorVars/index.ts +0 -1
  156. package/src/core/theme/defaults.ts +0 -7
  157. package/src/theme/system/_system.ts +0 -95
  158. package/src/theme/system/color/_deprecated/spot.ts +0 -13
  159. package/src/theme/themes/studio/config.ts +0 -69
  160. package/src/theme/themes/studio/fonts.ts +0 -219
  161. package/src/theme/themes/studio/index.ts +0 -1
  162. package/src/theme/themes/studio/studioTheme.test.ts +0 -27
  163. package/src/theme/themes/studio/studioTheme.ts +0 -8
@@ -1,33 +1,33 @@
1
1
  import {ThemeColorPalette, ThemeConfig} from '../config'
2
+ import {defaultColorPalette} from '../defaults/colorPalette'
2
3
  import {
4
+ ThemeColorAvatar_v2,
5
+ ThemeColorBadgeTone_v2,
6
+ ThemeColorBadge_v2,
3
7
  ThemeColorBlendModeKey,
4
- ThemeColor,
5
- ThemeColorAvatar,
6
- ThemeColorBadge,
7
- ThemeColorBase,
8
- ThemeColorButton,
9
- ThemeColorButtonStates,
10
- ThemeColorButtonTones,
11
- ThemeColorGenericState,
12
- ThemeColorInput,
13
- ThemeColorInputState,
14
- ThemeColorInputStates,
8
+ ThemeColorButtonStates_v2,
9
+ ThemeColorButtonTones_v2,
10
+ ThemeColorButton_v2,
11
+ ThemeColorCardToneKey,
12
+ ThemeColorCard_v2,
13
+ ThemeColorInputState_v2,
14
+ ThemeColorInputStates_v2,
15
+ ThemeColorInput_v2,
15
16
  ThemeColorKBD,
16
- ThemeColorScheme,
17
- ThemeColorSchemes,
18
- ThemeColorSelectable,
19
- ThemeColorSelectableStates,
20
- ThemeColorSpot,
17
+ ThemeColorScheme_v2,
18
+ ThemeColorSchemes_v2,
19
+ ThemeColorSelectableStates_v2,
20
+ ThemeColorSelectable_v2,
21
+ ThemeColorShadow,
22
+ ThemeColorState_v2,
21
23
  ThemeColorSyntax,
22
- ThemeColorToneKey,
23
24
  } from '../system'
24
- import {defaultColorPalette} from './defaults/colorPalette'
25
25
  import {RenderColorValueOptions, renderColorValue} from './renderColorValue'
26
26
 
27
27
  export function renderThemeColorSchemes(
28
- value: ThemeColorSchemes,
28
+ value: ThemeColorSchemes_v2,
29
29
  config?: ThemeConfig,
30
- ): ThemeColorSchemes {
30
+ ): ThemeColorSchemes_v2 {
31
31
  const colorPalette = config?.palette ?? defaultColorPalette
32
32
 
33
33
  return {
@@ -38,9 +38,9 @@ export function renderThemeColorSchemes(
38
38
 
39
39
  function renderThemeColorScheme(
40
40
  colorPalette: ThemeColorPalette,
41
- value: ThemeColorScheme,
42
- ): ThemeColorScheme {
43
- const toneEntries = Object.entries(value) as [ThemeColorToneKey, ThemeColor][]
41
+ value: ThemeColorScheme_v2,
42
+ ): ThemeColorScheme_v2 {
43
+ const toneEntries = Object.entries(value) as [ThemeColorCardToneKey, ThemeColorCard_v2][]
44
44
 
45
45
  const [, transparentTone] = toneEntries.find(([k]) => k === 'transparent')!
46
46
  const [, defaultTone] = toneEntries.find(([k]) => k === 'default')!
@@ -52,7 +52,11 @@ function renderThemeColorScheme(
52
52
  const renderedDefaultTone = renderThemeColor(defaultTone, {colorPalette})
53
53
 
54
54
  // Get the `default` tone's `bg` property
55
- const bg = renderedDefaultTone.base.bg
55
+ const bg = renderedDefaultTone.bg
56
+
57
+ if (bg === 'white') {
58
+ throw new Error('Cannot blend with white background')
59
+ }
56
60
 
57
61
  return Object.fromEntries([
58
62
  ['transparent', renderedTransparentTone],
@@ -60,103 +64,107 @@ function renderThemeColorScheme(
60
64
  ...toneEntries
61
65
  .filter(([k]) => k !== 'default' && k !== 'transparent')
62
66
  .map(([k, v]) => [k, renderThemeColor(v, {bg, colorPalette})]),
63
- ]) as ThemeColorScheme
67
+ ]) as ThemeColorScheme_v2
64
68
  }
65
69
 
66
70
  function renderThemeColor(
67
- value: ThemeColor,
71
+ value: ThemeColorCard_v2,
68
72
  options: {
69
73
  bg?: string
70
74
  colorPalette: ThemeColorPalette
71
75
  },
72
- ): ThemeColor {
76
+ ): ThemeColorCard_v2 {
73
77
  const {colorPalette, bg} = options
74
-
75
78
  const blendMode = value._blend || 'multiply'
76
-
77
- const baseBg = renderColorValue(value.base.bg, {colorPalette, bg, blendMode})
78
-
79
+ const baseBg = renderColorValue(value.bg, {colorPalette, bg, blendMode})
79
80
  const colorOptions: RenderColorValueOptions = {colorPalette, bg: baseBg, blendMode}
80
81
 
81
- const base: ThemeColorBase = {
82
- bg: baseBg,
83
- fg: renderColorValue(value.base.fg, colorOptions),
84
- border: renderColorValue(value.base.border, colorOptions),
85
- focusRing: renderColorValue(value.base.focusRing, colorOptions),
86
- shadow: {
87
- outline: renderColorValue(value.base.shadow.outline, colorOptions),
88
- umbra: renderColorValue(value.base.shadow.umbra, {
89
- ...colorOptions,
90
- bg: undefined,
91
- colorPalette: {...colorPalette, black: '#000000'},
92
- }),
93
- penumbra: renderColorValue(value.base.shadow.penumbra, {
94
- ...colorOptions,
95
- bg: undefined,
96
- colorPalette: {...colorPalette, black: '#000000'},
97
- }),
98
- ambient: renderColorValue(value.base.shadow.ambient, {
99
- ...colorOptions,
100
- bg: undefined,
101
- colorPalette: {...colorPalette, black: '#000000'},
102
- }),
103
- },
104
- skeleton: value.base.skeleton && {
105
- from: renderColorValue(value.base.skeleton?.from, colorOptions),
106
- to: renderColorValue(value.base.skeleton?.to, colorOptions),
107
- },
108
- }
109
-
110
- const button = renderThemeColorButton(value.button, {colorPalette, base, blendMode})
82
+ const button = renderThemeColorButton(value.button, {
83
+ baseBg,
84
+ blendMode,
85
+ colorPalette,
86
+ })
111
87
 
112
- const selectable = renderThemeColorSelectable(value.selectable || value.button.ghost, {
88
+ const selectable = renderThemeColorSelectable(value.selectable, {
113
89
  colorPalette,
114
- base,
90
+ baseBg,
115
91
  blendMode,
116
92
  })
117
93
 
94
+ const shadow: ThemeColorShadow = {
95
+ outline: renderColorValue(value.shadow.outline, colorOptions),
96
+ umbra: renderColorValue(value.shadow.umbra, {
97
+ ...colorOptions,
98
+ bg: undefined,
99
+ colorPalette: {...colorPalette, black: '#000000'},
100
+ }),
101
+ penumbra: renderColorValue(value.shadow.penumbra, {
102
+ ...colorOptions,
103
+ bg: undefined,
104
+ colorPalette: {...colorPalette, black: '#000000'},
105
+ }),
106
+ ambient: renderColorValue(value.shadow.ambient, {
107
+ ...colorOptions,
108
+ bg: undefined,
109
+ colorPalette: {...colorPalette, black: '#000000'},
110
+ }),
111
+ }
112
+
118
113
  return {
119
- ...value,
120
114
  _blend: blendMode,
121
- avatar: renderThemeColorAvatar(value.avatar, {base, colorPalette, blendMode}),
122
- badge: renderThemeColorBadge(value.badge, {base, colorPalette, blendMode}),
123
- base,
115
+ _dark: value._dark,
116
+ accent: {
117
+ fg: renderColorValue(value.accent.fg, colorOptions),
118
+ },
119
+ avatar: renderThemeColorAvatar(value.avatar, {baseBg, colorPalette, blendMode}),
120
+ backdrop: renderColorValue(value.backdrop, colorOptions),
121
+ badge: renderThemeColorBadge(value.badge, {baseBg, colorPalette, blendMode}),
122
+ bg: baseBg,
123
+ border: renderColorValue(value.border, colorOptions),
124
124
  button,
125
- card: renderThemeColorButtonStates(value.card, {base, colorPalette, blendMode}),
126
- input: renderThemeColorInput(value.input, {base, colorPalette, blendMode}),
127
- kbd: renderThemeColorKBD(value.kbd, {base, colorPalette, blendMode}),
128
- spot: renderSpotColorTheme(value.spot, {base, colorPalette, blendMode}),
129
- syntax: renderSyntaxColorTheme(value.syntax, {base, colorPalette, blendMode}),
130
- solid: {
131
- ...button.default,
132
- transparent: button.default.default,
125
+ code: {
126
+ bg: renderColorValue(value.code.bg, colorOptions),
127
+ fg: renderColorValue(value.code.fg, colorOptions),
128
+ },
129
+ fg: renderColorValue(value.fg, colorOptions),
130
+ focusRing: renderColorValue(value.focusRing, colorOptions),
131
+ icon: renderColorValue(value.icon, colorOptions),
132
+ input: renderThemeColorInput(value.input, {baseBg, colorPalette, blendMode}),
133
+ kbd: renderThemeColorKBD(value.kbd, {baseBg, colorPalette, blendMode}),
134
+ link: {
135
+ fg: renderColorValue(value.link.fg, colorOptions),
133
136
  },
134
137
  muted: {
135
- ...button.bleed,
136
- transparent: button.bleed.default,
138
+ bg: renderColorValue(value.muted.bg, colorOptions),
139
+ fg: renderColorValue(value.muted.fg, colorOptions),
137
140
  },
141
+ shadow,
142
+ skeleton: {
143
+ from: renderColorValue(value.skeleton.from, colorOptions),
144
+ to: renderColorValue(value.skeleton.to, colorOptions),
145
+ },
146
+ syntax: renderSyntaxColorTheme(value.syntax, {baseBg, colorPalette, blendMode}),
138
147
  selectable,
139
148
  }
140
149
  }
141
150
 
142
151
  function renderThemeColorKBD(
143
- value: ThemeColorKBD | undefined,
152
+ value: ThemeColorKBD,
144
153
  options: {
145
- base: ThemeColorBase
154
+ baseBg: string
146
155
  blendMode: ThemeColorBlendModeKey
147
156
  colorPalette: ThemeColorPalette
148
157
  },
149
- ) {
150
- const {base, blendMode: rootBlendMode, colorPalette} = options
151
- const blendMode = value?._blend || 'multiply'
158
+ ): ThemeColorKBD {
159
+ const {baseBg, blendMode, colorPalette} = options
152
160
 
153
161
  const rootOptions: RenderColorValueOptions = {
154
- bg: base.bg,
155
- blendMode: rootBlendMode,
162
+ bg: baseBg,
163
+ blendMode,
156
164
  colorPalette,
157
165
  }
158
166
 
159
- const bg = renderColorValue(value?.bg || 'gray/500', rootOptions)
167
+ const bg = renderColorValue(value.bg, rootOptions)
160
168
 
161
169
  const colorOptions: RenderColorValueOptions = {
162
170
  bg,
@@ -165,52 +173,51 @@ function renderThemeColorKBD(
165
173
  }
166
174
 
167
175
  return {
168
- _blend: blendMode,
169
176
  bg,
170
- fg: renderColorValue(value?.fg || 'gray/500', colorOptions),
171
- border: renderColorValue(value?.border || 'gray/500', colorOptions),
177
+ fg: renderColorValue(value.fg, colorOptions),
178
+ border: renderColorValue(value.border, colorOptions),
172
179
  }
173
180
  }
174
181
 
175
182
  function renderThemeColorAvatar(
176
- value: ThemeColorAvatar | undefined,
183
+ value: ThemeColorAvatar_v2,
177
184
  options: {
178
- base: ThemeColorBase
185
+ baseBg: string
179
186
  blendMode: ThemeColorBlendModeKey
180
187
  colorPalette: ThemeColorPalette
181
188
  },
182
- ): ThemeColorAvatar {
189
+ ): ThemeColorAvatar_v2 {
183
190
  return {
184
- gray: renderThemeColorAvatarColor(value?.gray, options),
185
- blue: renderThemeColorAvatarColor(value?.blue, options),
186
- purple: renderThemeColorAvatarColor(value?.purple, options),
187
- magenta: renderThemeColorAvatarColor(value?.magenta, options),
188
- red: renderThemeColorAvatarColor(value?.red, options),
189
- orange: renderThemeColorAvatarColor(value?.orange, options),
190
- yellow: renderThemeColorAvatarColor(value?.yellow, options),
191
- green: renderThemeColorAvatarColor(value?.green, options),
192
- cyan: renderThemeColorAvatarColor(value?.cyan, options),
191
+ gray: renderThemeColorAvatarColor(value.gray, options),
192
+ blue: renderThemeColorAvatarColor(value.blue, options),
193
+ purple: renderThemeColorAvatarColor(value.purple, options),
194
+ magenta: renderThemeColorAvatarColor(value.magenta, options),
195
+ red: renderThemeColorAvatarColor(value.red, options),
196
+ orange: renderThemeColorAvatarColor(value.orange, options),
197
+ yellow: renderThemeColorAvatarColor(value.yellow, options),
198
+ green: renderThemeColorAvatarColor(value.green, options),
199
+ cyan: renderThemeColorAvatarColor(value.cyan, options),
193
200
  }
194
201
  }
195
202
 
196
203
  function renderThemeColorAvatarColor(
197
- value: ThemeColorAvatar['gray'] | undefined,
204
+ value: ThemeColorAvatar_v2['gray'],
198
205
  options: {
199
- base: ThemeColorBase
206
+ baseBg: string
200
207
  blendMode: ThemeColorBlendModeKey
201
208
  colorPalette: ThemeColorPalette
202
209
  },
203
- ): ThemeColorAvatar['gray'] {
204
- const {base, blendMode: rootBlendMode, colorPalette} = options
205
- const blendMode = value?._blend || 'multiply'
210
+ ): ThemeColorAvatar_v2['gray'] {
211
+ const {baseBg, blendMode: rootBlendMode, colorPalette} = options
212
+ const blendMode = value._blend || 'multiply'
206
213
 
207
214
  const rootOptions: RenderColorValueOptions = {
208
- bg: base.bg,
215
+ bg: baseBg,
209
216
  blendMode: rootBlendMode,
210
217
  colorPalette,
211
218
  }
212
219
 
213
- const bg = renderColorValue(value?.bg || 'gray/500', rootOptions)
220
+ const bg = renderColorValue(value.bg, rootOptions)
214
221
 
215
222
  const colorOptions: RenderColorValueOptions = {
216
223
  bg,
@@ -221,45 +228,48 @@ function renderThemeColorAvatarColor(
221
228
  return {
222
229
  _blend: blendMode,
223
230
  bg,
224
- fg: renderColorValue(value?.fg || 'gray/500', colorOptions),
231
+ fg: renderColorValue(value.fg, colorOptions),
225
232
  }
226
233
  }
227
234
 
228
235
  function renderThemeColorBadge(
229
- value: ThemeColorBadge | undefined,
236
+ value: ThemeColorBadge_v2,
230
237
  options: {
231
- base: ThemeColorBase
238
+ baseBg: string
232
239
  blendMode: ThemeColorBlendModeKey
233
240
  colorPalette: ThemeColorPalette
234
241
  },
235
- ): ThemeColorBadge {
242
+ ): ThemeColorBadge_v2 {
236
243
  return {
237
- default: renderThemeColorBadgeColor(value?.default, options),
238
- primary: renderThemeColorBadgeColor(value?.primary, options),
239
- positive: renderThemeColorBadgeColor(value?.positive, options),
240
- caution: renderThemeColorBadgeColor(value?.caution, options),
241
- critical: renderThemeColorBadgeColor(value?.critical, options),
244
+ default: renderThemeColorBadgeColor(value.default, options),
245
+ primary: renderThemeColorBadgeColor(value.primary, options),
246
+ positive: renderThemeColorBadgeColor(value.positive, options),
247
+ caution: renderThemeColorBadgeColor(value.caution, options),
248
+ critical: renderThemeColorBadgeColor(value.critical, options),
242
249
  }
243
250
  }
244
251
 
245
252
  function renderThemeColorBadgeColor(
246
- value: {_blend?: ThemeColorBlendModeKey; bg: string; fg: string} | undefined,
253
+ value: ThemeColorBadgeTone_v2,
247
254
  options: {
248
- base: ThemeColorBase
255
+ baseBg: string
249
256
  blendMode: ThemeColorBlendModeKey
250
257
  colorPalette: ThemeColorPalette
251
258
  },
252
- ): {bg: string; fg: string} {
253
- const {base, blendMode: rootBlendMode, colorPalette} = options
254
- const blendMode = value?._blend || 'multiply'
259
+ ): ThemeColorBadgeTone_v2 {
260
+ const {baseBg, blendMode: rootBlendMode, colorPalette} = options
261
+
262
+ // const blendMode = value._blend || 'multiply'
263
+
264
+ const blendMode = rootBlendMode
255
265
 
256
266
  const rootOptions: RenderColorValueOptions = {
257
- bg: base.bg,
267
+ bg: baseBg,
258
268
  blendMode: rootBlendMode,
259
269
  colorPalette,
260
270
  }
261
271
 
262
- const bg = renderColorValue(value?.bg || 'gray/500', rootOptions)
272
+ const bg = renderColorValue(value.bg, rootOptions)
263
273
 
264
274
  const colorOptions: RenderColorValueOptions = {
265
275
  bg,
@@ -268,19 +278,22 @@ function renderThemeColorBadgeColor(
268
278
  }
269
279
 
270
280
  return {
281
+ // _blend: blendMode,
271
282
  bg,
272
- fg: renderColorValue(value?.fg || 'gray/500', colorOptions),
283
+ fg: renderColorValue(value.fg, colorOptions),
284
+ dot: renderColorValue(value.dot, colorOptions),
285
+ icon: renderColorValue(value.icon, colorOptions),
273
286
  }
274
287
  }
275
288
 
276
289
  function renderThemeColorButton(
277
- value: ThemeColorButton,
290
+ value: ThemeColorButton_v2,
278
291
  options: {
279
- base: ThemeColorBase
292
+ baseBg: string
280
293
  blendMode: ThemeColorBlendModeKey
281
294
  colorPalette: ThemeColorPalette
282
295
  },
283
- ): ThemeColorButton {
296
+ ): ThemeColorButton_v2 {
284
297
  return {
285
298
  default: renderThemeColorButtonTones(value.default, options),
286
299
  ghost: renderThemeColorButtonTones(value.ghost, options),
@@ -289,13 +302,13 @@ function renderThemeColorButton(
289
302
  }
290
303
 
291
304
  function renderThemeColorButtonTones(
292
- value: ThemeColorButtonTones,
305
+ value: ThemeColorButtonTones_v2,
293
306
  options: {
294
- base: ThemeColorBase
307
+ baseBg: string
295
308
  blendMode: ThemeColorBlendModeKey
296
309
  colorPalette: ThemeColorPalette
297
310
  },
298
- ): ThemeColorButtonTones {
311
+ ): ThemeColorButtonTones_v2 {
299
312
  return {
300
313
  default: renderThemeColorButtonStates(value.default, options),
301
314
  primary: renderThemeColorButtonStates(value.primary, options),
@@ -306,35 +319,35 @@ function renderThemeColorButtonTones(
306
319
  }
307
320
 
308
321
  function renderThemeColorButtonStates(
309
- value: ThemeColorButtonStates,
322
+ value: ThemeColorButtonStates_v2,
310
323
  options: {
311
- base: ThemeColorBase
324
+ baseBg: string
312
325
  blendMode: ThemeColorBlendModeKey
313
326
  colorPalette: ThemeColorPalette
314
327
  },
315
- ): ThemeColorButtonStates {
328
+ ): ThemeColorButtonStates_v2 {
316
329
  return {
317
- enabled: renderThemeColorGenericState(value.enabled, options),
318
- hovered: renderThemeColorGenericState(value.hovered, options),
319
- pressed: renderThemeColorGenericState(value.pressed, options),
320
- selected: renderThemeColorGenericState(value.selected, options),
321
- disabled: renderThemeColorGenericState(value.disabled, options),
330
+ enabled: renderThemeColorState(value.enabled, options),
331
+ hovered: renderThemeColorState(value.hovered, options),
332
+ pressed: renderThemeColorState(value.pressed, options),
333
+ selected: renderThemeColorState(value.selected, options),
334
+ disabled: renderThemeColorState(value.disabled, options),
322
335
  }
323
336
  }
324
337
 
325
- function renderThemeColorGenericState(
326
- value: ThemeColorGenericState,
338
+ function renderThemeColorState(
339
+ value: ThemeColorState_v2,
327
340
  options: {
328
- base: ThemeColorBase
341
+ baseBg: string
329
342
  blendMode: ThemeColorBlendModeKey
330
343
  colorPalette: ThemeColorPalette
331
344
  },
332
- ): ThemeColorGenericState {
333
- const {base, blendMode: rootBlendMode, colorPalette} = options
345
+ ): ThemeColorState_v2 {
346
+ const {baseBg, blendMode: rootBlendMode, colorPalette} = options
334
347
  const blendMode = value._blend || 'multiply'
335
348
 
336
349
  const rootOptions: RenderColorValueOptions = {
337
- bg: base.bg,
350
+ bg: baseBg,
338
351
  blendMode: rootBlendMode,
339
352
  colorPalette,
340
353
  }
@@ -349,25 +362,32 @@ function renderThemeColorGenericState(
349
362
 
350
363
  return {
351
364
  _blend: blendMode,
352
- bg,
353
- bg2: renderColorValue(value.bg2 || value.bg, colorOptions),
354
- fg: renderColorValue(value.fg, colorOptions),
355
- border: renderColorValue(value.border, colorOptions),
356
- icon: renderColorValue(value.icon, colorOptions),
357
- muted: {
358
- fg: renderColorValue(value.muted.fg, colorOptions),
359
- },
360
365
  accent: {
361
366
  fg: renderColorValue(value.accent.fg, colorOptions),
362
367
  },
363
- link: {
364
- fg: renderColorValue(value.link.fg, colorOptions),
365
- },
368
+ avatar: renderThemeColorAvatar(value.avatar, {baseBg, colorPalette, blendMode}),
369
+ badge: renderThemeColorBadge(value.badge, {baseBg, colorPalette, blendMode}),
370
+ bg,
371
+ border: renderColorValue(value.border, colorOptions),
366
372
  code: {
367
373
  bg: renderColorValue(value.code.bg, colorOptions),
368
374
  fg: renderColorValue(value.code.fg, colorOptions),
369
375
  },
370
- skeleton: value.skeleton && {
376
+ fg: renderColorValue(value.fg, colorOptions),
377
+ icon: renderColorValue(value.icon, colorOptions),
378
+ link: {
379
+ fg: renderColorValue(value.link.fg, colorOptions),
380
+ },
381
+ muted: {
382
+ bg: renderColorValue(value.muted.bg, colorOptions),
383
+ fg: renderColorValue(value.muted.fg, colorOptions),
384
+ },
385
+ kbd: {
386
+ bg: renderColorValue(value.kbd.bg, colorOptions),
387
+ fg: renderColorValue(value.kbd.fg, colorOptions),
388
+ border: renderColorValue(value.kbd.border, colorOptions),
389
+ },
390
+ skeleton: {
371
391
  from: renderColorValue(value.skeleton?.from, colorOptions),
372
392
  to: renderColorValue(value.skeleton?.to, colorOptions),
373
393
  },
@@ -375,13 +395,13 @@ function renderThemeColorGenericState(
375
395
  }
376
396
 
377
397
  function renderThemeColorInput(
378
- value: ThemeColorInput,
398
+ value: ThemeColorInput_v2,
379
399
  options: {
380
- base: ThemeColorBase
400
+ baseBg: string
381
401
  blendMode: ThemeColorBlendModeKey
382
402
  colorPalette: ThemeColorPalette
383
403
  },
384
- ): ThemeColorInput {
404
+ ): ThemeColorInput_v2 {
385
405
  return {
386
406
  default: renderInputStatesColorTheme(value.default, options),
387
407
  invalid: renderInputStatesColorTheme(value.invalid, options),
@@ -389,13 +409,13 @@ function renderThemeColorInput(
389
409
  }
390
410
 
391
411
  function renderInputStatesColorTheme(
392
- value: ThemeColorInputStates,
412
+ value: ThemeColorInputStates_v2,
393
413
  options: {
394
- base: ThemeColorBase
414
+ baseBg: string
395
415
  blendMode: ThemeColorBlendModeKey
396
416
  colorPalette: ThemeColorPalette
397
417
  },
398
- ): ThemeColorInputStates {
418
+ ): ThemeColorInputStates_v2 {
399
419
  return {
400
420
  enabled: renderInputStateColorTheme(value.enabled, options),
401
421
  hovered: renderInputStateColorTheme(value.hovered, options),
@@ -405,41 +425,39 @@ function renderInputStatesColorTheme(
405
425
  }
406
426
 
407
427
  function renderInputStateColorTheme(
408
- value: ThemeColorInputState,
428
+ value: ThemeColorInputState_v2,
409
429
  options: {
410
- base: ThemeColorBase
430
+ baseBg: string
411
431
  blendMode: ThemeColorBlendModeKey
412
432
  colorPalette: ThemeColorPalette
413
433
  },
414
- ): ThemeColorInputState {
415
- const {colorPalette, base, blendMode: rootBlendMode} = options
416
-
434
+ ): ThemeColorInputState_v2 {
435
+ const {baseBg, blendMode: rootBlendMode, colorPalette} = options
417
436
  const blendMode = value._blend || 'multiply'
418
-
419
- const rootOptions: RenderColorValueOptions = {colorPalette, bg: base.bg, blendMode: rootBlendMode}
420
-
437
+ const rootOptions: RenderColorValueOptions = {colorPalette, bg: baseBg, blendMode: rootBlendMode}
421
438
  const bg = renderColorValue(value.bg, rootOptions)
422
-
423
439
  const colorOptions: RenderColorValueOptions = {colorPalette, bg, blendMode}
424
440
 
425
441
  return {
426
442
  _blend: blendMode,
427
443
  bg,
428
- bg2: renderColorValue(value.bg2, colorOptions),
429
- fg: renderColorValue(value.fg, colorOptions),
430
444
  border: renderColorValue(value.border, colorOptions),
445
+ fg: renderColorValue(value.fg, colorOptions),
446
+ muted: {
447
+ bg: renderColorValue(value.muted.bg, colorOptions),
448
+ },
431
449
  placeholder: renderColorValue(value.placeholder, colorOptions),
432
450
  }
433
451
  }
434
452
 
435
453
  function renderThemeColorSelectable(
436
- value: ThemeColorSelectable,
454
+ value: ThemeColorSelectable_v2,
437
455
  options: {
438
- base: ThemeColorBase
456
+ baseBg: string
439
457
  blendMode: ThemeColorBlendModeKey
440
458
  colorPalette: ThemeColorPalette
441
459
  },
442
- ): ThemeColorSelectable {
460
+ ): ThemeColorSelectable_v2 {
443
461
  return {
444
462
  default: renderThemeColorSelectableStates(value.default, options),
445
463
  primary: renderThemeColorSelectableStates(value.primary, options),
@@ -450,58 +468,32 @@ function renderThemeColorSelectable(
450
468
  }
451
469
 
452
470
  function renderThemeColorSelectableStates(
453
- value: ThemeColorSelectableStates,
454
- options: {
455
- base: ThemeColorBase
456
- blendMode: ThemeColorBlendModeKey
457
- colorPalette: ThemeColorPalette
458
- },
459
- ): ThemeColorSelectableStates {
460
- return {
461
- enabled: renderThemeColorGenericState(value.enabled, options),
462
- hovered: renderThemeColorGenericState(value.hovered, options),
463
- pressed: renderThemeColorGenericState(value.pressed, options),
464
- selected: renderThemeColorGenericState(value.selected, options),
465
- disabled: renderThemeColorGenericState(value.disabled, options),
466
- }
467
- }
468
-
469
- function renderSpotColorTheme(
470
- value: ThemeColorSpot,
471
+ value: ThemeColorSelectableStates_v2,
471
472
  options: {
472
- base: ThemeColorBase
473
+ baseBg: string
473
474
  blendMode: ThemeColorBlendModeKey
474
475
  colorPalette: ThemeColorPalette
475
476
  },
476
- ): ThemeColorSpot {
477
- const {colorPalette, base, blendMode} = options
478
-
479
- const colorOptions: RenderColorValueOptions = {colorPalette, bg: base.bg, blendMode}
480
-
477
+ ): ThemeColorSelectableStates_v2 {
481
478
  return {
482
- gray: renderColorValue(value.gray, colorOptions),
483
- cyan: renderColorValue(value.cyan, colorOptions),
484
- blue: renderColorValue(value.blue, colorOptions),
485
- purple: renderColorValue(value.purple, colorOptions),
486
- magenta: renderColorValue(value.magenta, colorOptions),
487
- red: renderColorValue(value.red, colorOptions),
488
- orange: renderColorValue(value.orange, colorOptions),
489
- yellow: renderColorValue(value.yellow, colorOptions),
490
- green: renderColorValue(value.green, colorOptions),
479
+ enabled: renderThemeColorState(value.enabled, options),
480
+ hovered: renderThemeColorState(value.hovered, options),
481
+ pressed: renderThemeColorState(value.pressed, options),
482
+ selected: renderThemeColorState(value.selected, options),
483
+ disabled: renderThemeColorState(value.disabled, options),
491
484
  }
492
485
  }
493
486
 
494
487
  function renderSyntaxColorTheme(
495
488
  value: ThemeColorSyntax,
496
489
  options: {
497
- base: ThemeColorBase
490
+ baseBg: string
498
491
  blendMode: ThemeColorBlendModeKey
499
492
  colorPalette: ThemeColorPalette
500
493
  },
501
494
  ): ThemeColorSyntax {
502
- const {colorPalette, base, blendMode} = options
503
-
504
- const colorOptions: RenderColorValueOptions = {colorPalette, bg: base.bg, blendMode}
495
+ const {colorPalette, baseBg, blendMode} = options
496
+ const colorOptions: RenderColorValueOptions = {colorPalette, bg: baseBg, blendMode}
505
497
 
506
498
  return {
507
499
  atrule: renderColorValue(value.atrule, colorOptions),