Build layer tokens for each theme
This commit is contained in:
parent
16e3e04501
commit
e2f46d5448
2 changed files with 67 additions and 0 deletions
|
@ -1,12 +1,19 @@
|
|||
import { ColorScheme } from "../colorScheme"
|
||||
import { LayerToken, layerToken } from "./layer"
|
||||
import { PlayerTokens, players } from "./players"
|
||||
|
||||
interface ColorSchemeTokens {
|
||||
lowest: LayerToken
|
||||
middle: LayerToken
|
||||
highest: LayerToken
|
||||
players: PlayerTokens
|
||||
}
|
||||
|
||||
export function colorSchemeTokens(colorScheme: ColorScheme): ColorSchemeTokens {
|
||||
return {
|
||||
lowest: layerToken(colorScheme.lowest, "lowest"),
|
||||
middle: layerToken(colorScheme.middle, "middle"),
|
||||
highest: layerToken(colorScheme.highest, "highest"),
|
||||
players: players(colorScheme),
|
||||
}
|
||||
}
|
||||
|
|
60
styles/src/theme/tokens/layer.ts
Normal file
60
styles/src/theme/tokens/layer.ts
Normal file
|
@ -0,0 +1,60 @@
|
|||
import { SingleColorToken } from "@tokens-studio/types";
|
||||
import { Layer, Style, StyleSet } from "../colorScheme";
|
||||
import { colorToken } from "./token";
|
||||
|
||||
interface StyleToken {
|
||||
background: SingleColorToken,
|
||||
border: SingleColorToken,
|
||||
foreground: SingleColorToken,
|
||||
}
|
||||
|
||||
interface StyleSetToken {
|
||||
default: StyleToken
|
||||
active: StyleToken
|
||||
disabled: StyleToken
|
||||
hovered: StyleToken
|
||||
pressed: StyleToken
|
||||
inverted: StyleToken
|
||||
}
|
||||
|
||||
export interface LayerToken {
|
||||
base: StyleSetToken
|
||||
variant: StyleSetToken
|
||||
on: StyleSetToken
|
||||
accent: StyleSetToken
|
||||
positive: StyleSetToken
|
||||
warning: StyleSetToken
|
||||
negative: StyleSetToken
|
||||
}
|
||||
|
||||
export const styleToken = (style: Style, name: string): StyleToken => {
|
||||
const token = {
|
||||
background: colorToken(`${name}Background`, style.background),
|
||||
border: colorToken(`${name}Border`, style.border),
|
||||
foreground: colorToken(`${name}Foreground`, style.foreground),
|
||||
}
|
||||
|
||||
return token
|
||||
}
|
||||
|
||||
export const styleSetToken = (styleSet: StyleSet, name: string): StyleSetToken => {
|
||||
const token: StyleSetToken = {} as StyleSetToken;
|
||||
|
||||
for (const style in styleSet) {
|
||||
const s = style as keyof StyleSet;
|
||||
token[s] = styleToken(styleSet[s], `${name}${style}`);
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
export const layerToken = (layer: Layer, name: string): LayerToken => {
|
||||
const token: LayerToken = {} as LayerToken;
|
||||
|
||||
for (const styleSet in layer) {
|
||||
const s = styleSet as keyof Layer;
|
||||
token[s] = styleSetToken(layer[s], `${name}${styleSet}`);
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue