theme.ts

  1import { colorRamp } from "./lib";
  2
  3export type Color = string;
  4export type Weight =
  5  | "thin"
  6  | "extra_light"
  7  | "light"
  8  | "normal"
  9  | "medium"
 10  | "semibold"
 11  | "bold"
 12  | "extra_bold"
 13  | "black";
 14
 15interface SyntaxHighlightStyle {
 16  color: { value: Color };
 17  weight: { value: Weight };
 18}
 19
 20interface Player {
 21  baseColor: {
 22    value: Color;
 23  };
 24  cursorColor: {
 25    value: Color;
 26  };
 27  selectionColor: {
 28    value: Color;
 29  };
 30  borderColor: {
 31    value: Color;
 32  };
 33}
 34
 35export interface BackgroundColor {
 36  base: {
 37    value: Color;
 38  };
 39  hover: {
 40    value: Color;
 41  };
 42  active: {
 43    value: Color;
 44  };
 45  focused: {
 46    value: Color;
 47  };
 48}
 49
 50export default interface Theme {
 51  backgroundColor: {
 52    100: BackgroundColor;
 53    300: BackgroundColor;
 54    500: BackgroundColor;
 55  };
 56  borderColor: {
 57    primary: {
 58      value: Color;
 59    };
 60    secondary: {
 61      value: Color;
 62    };
 63    muted: {
 64      value: Color;
 65    };
 66    focused: {
 67      value: Color;
 68    };
 69    active: {
 70      value: Color;
 71    };
 72  };
 73  textColor: {
 74    primary: {
 75      value: Color;
 76    };
 77    secondary: {
 78      value: Color;
 79    };
 80    muted: {
 81      value: Color;
 82    };
 83    placeholder: {
 84      value: Color;
 85    };
 86    active: {
 87      value: Color;
 88    };
 89    feature: {
 90      value: Color;
 91    };
 92    ok: {
 93      value: Color;
 94    };
 95    error: {
 96      value: Color;
 97    };
 98    warning: {
 99      value: Color;
100    };
101    info: {
102      value: Color;
103    };
104  };
105  iconColor: {
106    primary: {
107      value: Color;
108    };
109    secondary: {
110      value: Color;
111    };
112    muted: {
113      value: Color;
114    };
115    placeholder: {
116      value: Color;
117    };
118    active: {
119      value: Color;
120    };
121    feature: {
122      value: Color;
123    };
124    ok: {
125      value: Color;
126    };
127    error: {
128      value: Color;
129    };
130    warning: {
131      value: Color;
132    };
133    info: {
134      value: Color;
135    };
136  };
137  syntax: {
138    primary: SyntaxHighlightStyle;
139    comment: SyntaxHighlightStyle;
140    punctuation: SyntaxHighlightStyle;
141    constant: SyntaxHighlightStyle;
142    keyword: SyntaxHighlightStyle;
143    function: SyntaxHighlightStyle;
144    type: SyntaxHighlightStyle;
145    variant: SyntaxHighlightStyle;
146    property: SyntaxHighlightStyle;
147    enum: SyntaxHighlightStyle;
148    operator: SyntaxHighlightStyle;
149    string: SyntaxHighlightStyle;
150    number: SyntaxHighlightStyle;
151    boolean: SyntaxHighlightStyle;
152    predictive: SyntaxHighlightStyle;
153  };
154  player: {
155    1: Player;
156    2: Player;
157    3: Player;
158    4: Player;
159    5: Player;
160    6: Player;
161    7: Player;
162    8: Player;
163  };
164  shadowAlpha: {
165    value: number;
166  };
167}