import z from 'zod'; import { DeepRequired } from 'ts-essentials'; import { BUILTIN_COLORS, COMPUTED_COLORS, REQUIRED_COLORS, ThemeColorsSchema } from './colors.js'; import { BUILTIN_COLOR_PALETTES } from './colorPalettes.js'; import { BUILTIN_COLOR_SCALES } from './colorScales.js'; import { ThemesConfigFileSchema } from './config.js'; type BuiltinColor = (typeof BUILTIN_COLORS)[number]; type BuiltinColorPalette = (typeof BUILTIN_COLOR_PALETTES)[number]; type BuiltinColorScale = (typeof BUILTIN_COLOR_SCALES)[number]; export type ThemeColors = z.infer; export type Theme = { colors: { [builtinColor in BuiltinColor]: string; } & Record; colorPalettes: { [builtinColorPalette in BuiltinColorPalette]: string[]; } & Record; colorScales: { [builtinColorScale in BuiltinColorScale]: string[]; } & Record; }; export type ThemesConfigFile = z.infer; export type ThemesConfig = DeepRequired; export type Themes = Record<'light' | 'dark', Theme>;