From 999b2365a8322f7e1f09790a22c6effa5d9d079d Mon Sep 17 00:00:00 2001 From: Nate Butler Date: Thu, 8 Jun 2023 12:21:51 -0400 Subject: [PATCH] Export additional tokens, standardize naming convention --- styles/src/theme/tokens/colorScheme.ts | 54 ++++++++++++++++++++++++-- styles/src/theme/tokens/players.ts | 4 +- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/styles/src/theme/tokens/colorScheme.ts b/styles/src/theme/tokens/colorScheme.ts index 0c31a68c0efe3ffac85ea10fe17187a71e95c0e7..1874fbcd95203630ed49f956c3fba198b6ef71fd 100644 --- a/styles/src/theme/tokens/colorScheme.ts +++ b/styles/src/theme/tokens/colorScheme.ts @@ -1,19 +1,65 @@ -import { ColorScheme } from "../colorScheme" +import { SingleBoxShadowToken, SingleColorToken, SingleOtherToken, TokenTypes, TokenTypographyValue } from "@tokens-studio/types" +import { ColorScheme, Shadow, ThemeSyntax } from "../colorScheme" import { LayerToken, layerToken } from "./layer" -import { PlayerTokens, players } from "./players" +import { PlayersToken, playersToken } from "./players" interface ColorSchemeTokens { + name: SingleOtherToken + appearance: SingleOtherToken lowest: LayerToken middle: LayerToken highest: LayerToken - players: PlayerTokens + players: PlayersToken + popoverShadow: SingleBoxShadowToken + modalShadow: SingleBoxShadowToken + syntax?: ThemeSyntaxToken } +const createShadowToken = (shadow: Shadow, tokenName: string): SingleBoxShadowToken => { + return { + name: tokenName, + type: TokenTypes.BOX_SHADOW, + value: `${shadow.offset[0]}px ${shadow.offset[1]}px ${shadow.blur}px 0px ${shadow.color}` + }; +}; + +const popoverShadowToken = (colorScheme: ColorScheme): SingleBoxShadowToken => { + const shadow = colorScheme.popoverShadow; + return createShadowToken(shadow, "popoverShadow"); +}; + +const modalShadowToken = (colorScheme: ColorScheme): SingleBoxShadowToken => { + const shadow = colorScheme.modalShadow; + return createShadowToken(shadow, "modalShadow"); +}; + +interface SyntaxHighlightStyleToken { + color: SingleColorToken + weight: TokenTypographyValue['fontWeight'] + underline: TokenTypographyValue['textDecoration'] + italic: SingleOtherToken +} + +// TODO: Implement exporting syntax tokens +type ThemeSyntaxToken = Record + export function colorSchemeTokens(colorScheme: ColorScheme): ColorSchemeTokens { return { + name: { + name: "themeName", + value: colorScheme.name, + type: TokenTypes.OTHER, + }, + appearance: { + name: "themeAppearance", + value: colorScheme.isLight ? "light" : "dark", + type: TokenTypes.OTHER, + }, lowest: layerToken(colorScheme.lowest, "lowest"), middle: layerToken(colorScheme.middle, "middle"), highest: layerToken(colorScheme.highest, "highest"), - players: players(colorScheme), + popoverShadow: popoverShadowToken(colorScheme), + modalShadow: modalShadowToken(colorScheme), + players: playersToken(colorScheme), } } diff --git a/styles/src/theme/tokens/players.ts b/styles/src/theme/tokens/players.ts index c65fb6885ec3b0c1e10386f1b9a1dc07ffdb28b8..b5f5538b2eae54c68ca2a49ac7a1e2523ed1251b 100644 --- a/styles/src/theme/tokens/players.ts +++ b/styles/src/theme/tokens/players.ts @@ -4,7 +4,7 @@ import { colorToken } from "./token" export type PlayerToken = Record<"selection" | "cursor", SingleColorToken> -export type PlayerTokens = Record +export type PlayersToken = Record function buildPlayerToken(colorScheme: ColorScheme, index: number): PlayerToken { @@ -16,7 +16,7 @@ function buildPlayerToken(colorScheme: ColorScheme, index: number): PlayerToken } } -export const players = (colorScheme: ColorScheme): PlayerTokens => ({ +export const playersToken = (colorScheme: ColorScheme): PlayersToken => ({ "0": buildPlayerToken(colorScheme, 0), "1": buildPlayerToken(colorScheme, 1), "2": buildPlayerToken(colorScheme, 2),