Files
sharechess/src/types.ts
Maciej Caderek 9482b11319 WIP
2022-01-17 04:54:19 +01:00

79 lines
1.2 KiB
TypeScript

export type GradientDir =
| "horizontal"
| "vertical"
| "diagonal-top"
| "diagonal-bottom";
export type GradientData = {
dir: GradientDir;
colors: string[];
};
export type Gradient = {
type: "gradient";
data: GradientData;
};
export type SolidData = {
color: string;
};
export type Solid = {
type: "solid";
data: SolidData;
};
export type ImageData = {
src: string;
};
export type Image = {
type: "image";
data: ImageData;
};
export type Coords = {
onLight: string;
onDark: string;
onBorder: string;
};
export type SquareStyle = Gradient | Solid | Image;
export type MoveIndicator =
| { type: "hueShift"; data: number }
| { type: "color"; data: string };
export type Style = {
name: string;
background: SquareStyle;
light: SquareStyle;
dark: SquareStyle;
moveIndicator: MoveIndicator;
border: SquareStyle;
coords: Coords;
};
export type PieceType = "k" | "q" | "r" | "b" | "n" | "p";
export type PieceColor = "b" | "w";
export type BoardData = ({
type: PieceType;
color: PieceColor;
} | null)[][];
export type Piece =
| "kw"
| "qw"
| "rw"
| "bw"
| "nw"
| "pw"
| "kb"
| "qb"
| "rb"
| "bb"
| "nb"
| "pb";