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 default interface Theme {
 47    backgroundColor: {
 48        100: BackgroundColor;
 49        300: BackgroundColor;
 50        500: BackgroundColor;
 51        ok: BackgroundColor;
 52        error: BackgroundColor;
 53        warning: BackgroundColor;
 54        info: BackgroundColor;
 55    };
 56    borderColor: {
 57        primary: ColorToken;
 58        secondary: ColorToken;
 59        muted: ColorToken;
 60        focused: ColorToken;
 61        active: ColorToken;
 62        ok: ColorToken;
 63        error: ColorToken;
 64        warning: ColorToken;
 65        info: ColorToken;
 66    };
 67    textColor: {
 68        primary: ColorToken;
 69        secondary: ColorToken;
 70        muted: ColorToken;
 71        placeholder: ColorToken;
 72        active: ColorToken;
 73        feature: ColorToken;
 74        ok: ColorToken;
 75        error: ColorToken;
 76        warning: ColorToken;
 77        info: ColorToken;
 78    };
 79    iconColor: {
 80        primary: ColorToken;
 81        secondary: ColorToken;
 82        muted: ColorToken;
 83        placeholder: ColorToken;
 84        active: ColorToken;
 85        feature: ColorToken;
 86        ok: ColorToken;
 87        error: ColorToken;
 88        warning: ColorToken;
 89        info: ColorToken;
 90    };
 91    editor: {
 92        background: ColorToken;
 93        indent_guide: ColorToken;
 94        indent_guide_active: ColorToken;
 95        line: {
 96            active: ColorToken;
 97            highlighted: ColorToken;
 98            inserted: ColorToken;
 99            deleted: ColorToken;
100            modified: ColorToken;
101        };
102        highlight: {
103            selection: ColorToken;
104            occurrence: ColorToken;
105            activeOccurrence: ColorToken;
106            matchingBracket: ColorToken;
107            match: ColorToken;
108            activeMatch: ColorToken;
109            related: ColorToken;
110        };
111        gutter: {
112            primary: ColorToken;
113            active: ColorToken;
114        };
115    };
116
117    syntax: {
118        primary: SyntaxHighlightStyle;
119        comment: SyntaxHighlightStyle;
120        punctuation: SyntaxHighlightStyle;
121        constant: SyntaxHighlightStyle;
122        keyword: SyntaxHighlightStyle;
123        function: SyntaxHighlightStyle;
124        type: SyntaxHighlightStyle;
125        variant: SyntaxHighlightStyle;
126        property: SyntaxHighlightStyle;
127        enum: SyntaxHighlightStyle;
128        operator: SyntaxHighlightStyle;
129        string: SyntaxHighlightStyle;
130        number: SyntaxHighlightStyle;
131        boolean: SyntaxHighlightStyle;
132        predictive: SyntaxHighlightStyle;
133    };
134
135    player: {
136        1: Player;
137        2: Player;
138        3: Player;
139        4: Player;
140        5: Player;
141        6: Player;
142        7: Player;
143        8: Player;
144    };
145    shadowAlpha: NumberToken;
146}