@sanity/ui
Version:
The Sanity UI components.
184 lines (178 loc) • 3.62 kB
text/typescript
import {ThemeColorTokens} from '../config'
import {buildColorTheme} from './buildColorTheme'
test('buildColorTheme: base', () => {
const {light, dark} = buildColorTheme({
color: {
base: {
'*': {
bg: ['50', '900'],
fg: ['800', '200'],
},
'transparent': {
bg: ['50', 'black'],
},
'default': {
bg: ['white', '950'],
fg: ['black', '200'],
},
'primary': {
_hue: 'purple',
},
'positive': {
_hue: 'cyan',
},
'caution': {
_hue: 'yellow',
},
'critical': {
_hue: 'red',
},
},
},
})
expect({
light: {
transparent: {
bg: light.transparent.bg,
fg: light.transparent.fg,
},
default: {
bg: light.default.bg,
fg: light.default.fg,
},
primary: {
bg: light.primary.bg,
fg: light.primary.fg,
},
},
dark: {
transparent: {
bg: dark.transparent.bg,
fg: dark.transparent.fg,
},
default: {
bg: dark.default.bg,
fg: dark.default.fg,
},
primary: {
bg: dark.primary.bg,
fg: dark.primary.fg,
},
},
}).toEqual({
light: {
transparent: {
bg: 'gray/50',
fg: 'gray/800',
},
default: {
bg: 'white',
fg: 'black',
},
primary: {
bg: 'purple/50',
fg: 'purple/800',
},
},
dark: {
transparent: {
bg: 'black',
fg: 'gray/200',
},
default: {
bg: 'gray/950',
fg: 'gray/200',
},
primary: {
bg: 'purple/900',
fg: 'purple/200',
},
},
})
})
test('buildColorTheme: button', () => {
const tokens: ThemeColorTokens = {
base: {
'*': {
bg: ['50', '900'],
fg: ['800', '200'],
},
'transparent': {
bg: ['50', 'black'],
},
'default': {
bg: ['white', '950'],
fg: ['black', '200'],
},
'primary': {
_hue: 'purple',
},
'positive': {
_hue: 'cyan',
},
'caution': {
_hue: 'yellow',
},
'critical': {
_hue: 'red',
},
},
button: {
default: {
'*': {
'*': {
bg: ['500', '400'],
fg: ['white', 'black'],
},
'hovered': {
bg: ['600', '300'],
},
},
},
},
}
const {dark, light} = buildColorTheme({color: tokens})
expect({
light: {
enabled: {
bg: light.default.button.default.primary.enabled.bg,
fg: light.default.button.default.primary.enabled.fg,
},
hovered: {
bg: light.default.button.default.primary.hovered.bg,
fg: light.default.button.default.primary.hovered.fg,
},
},
dark: {
enabled: {
bg: dark.default.button.default.primary.enabled.bg,
fg: dark.default.button.default.primary.enabled.fg,
},
hovered: {
bg: dark.default.button.default.primary.hovered.bg,
fg: dark.default.button.default.primary.hovered.fg,
},
},
}).toEqual({
light: {
enabled: {
bg: 'purple/500',
fg: 'white',
},
hovered: {
bg: 'purple/600',
fg: 'white',
},
},
dark: {
enabled: {
bg: 'purple/400',
fg: 'black',
},
hovered: {
bg: 'purple/300',
fg: 'black',
},
},
})
})