players.ts

 1import { SingleColorToken } from "@tokens-studio/types"
 2import { color_token } from "./token"
 3import { Players } from "../create_theme"
 4import { useTheme } from "../../../src/common"
 5
 6export type PlayerToken = Record<"selection" | "cursor", SingleColorToken>
 7
 8export type PlayersToken = Record<keyof Players, PlayerToken>
 9
10function build_player_token(index: number): PlayerToken {
11    const theme = useTheme()
12    const player_number = index.toString() as keyof Players
13
14    return {
15        selection: color_token(
16            `player${index}Selection`,
17            theme.players[player_number].selection
18        ),
19        cursor: color_token(
20            `player${index}Cursor`,
21            theme.players[player_number].cursor
22        ),
23    }
24}
25
26export const players_token = (): PlayersToken => {
27    return {
28        "0": build_player_token(0),
29        "1": build_player_token(1),
30        "2": build_player_token(2),
31        "3": build_player_token(3),
32        "4": build_player_token(4),
33        "5": build_player_token(5),
34        "6": build_player_token(6),
35        "7": build_player_token(7),
36    }
37}