colorScheme.ts

  1import { Scale } from "chroma-js";
  2
  3export interface ColorScheme {
  4  name: string;
  5  isLight: boolean;
  6
  7  lowest: Layer;
  8  middle: Layer;
  9  highest: Layer;
 10
 11  ramps: RampSet;
 12
 13  popoverShadow: Shadow;
 14  modalShadow: Shadow;
 15
 16  players: Players;
 17}
 18
 19export interface Meta {
 20  name: string,
 21  author: string,
 22  url: string,
 23  license: License
 24}
 25
 26export interface License {
 27  SPDX: SPDXExpression,
 28  /// A url where we can download the license's text
 29  https_url: string,
 30  license_checksum: string
 31}
 32
 33// License name -> License text
 34export interface Licenses {
 35  [key: string]: string
 36}
 37
 38// FIXME: Add support for the SPDX expression syntax
 39export type SPDXExpression = "MIT";
 40
 41export interface Player {
 42  cursor: string;
 43  selection: string;
 44}
 45
 46export interface Players {
 47  "0": Player;
 48  "1": Player;
 49  "2": Player;
 50  "3": Player;
 51  "4": Player;
 52  "5": Player;
 53  "6": Player;
 54  "7": Player;
 55}
 56
 57export interface Shadow {
 58  blur: number;
 59  color: string;
 60  offset: number[];
 61}
 62
 63export type StyleSets = keyof Layer;
 64export interface Layer {
 65  base: StyleSet;
 66  variant: StyleSet;
 67  on: StyleSet;
 68  accent: StyleSet;
 69  positive: StyleSet;
 70  warning: StyleSet;
 71  negative: StyleSet;
 72}
 73
 74export interface RampSet {
 75  neutral: Scale;
 76  red: Scale;
 77  orange: Scale;
 78  yellow: Scale;
 79  green: Scale;
 80  cyan: Scale;
 81  blue: Scale;
 82  violet: Scale;
 83  magenta: Scale;
 84}
 85
 86export type Styles = keyof StyleSet;
 87export interface StyleSet {
 88  default: Style;
 89  active: Style;
 90  disabled: Style;
 91  hovered: Style;
 92  pressed: Style;
 93  inverted: Style;
 94}
 95
 96export interface Style {
 97  background: string;
 98  border: string;
 99  foreground: string;
100}