theme.ts

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