zed/styles/themes/dark.ts
Keith Simmons e990b46b9d Finish dark.ts initial port and restructure files to get ready for build script
Build script currently fails to type check. Not sure whats going on. Will fix in the morning.

Co-authored-by: Nate Butler <nate@zed.dev>
2022-03-31 20:31:18 -07:00

249 lines
6.4 KiB
TypeScript

import core from "../tokens/core";
import Theme, { NumberToken, Syntax } from "./theme";
const { color } = core;
const backgroundColor = {
100: {
base: color.neutral[750],
hovered: color.neutral[750],
active: color.neutral[750],
focused: color.neutral[750],
},
300: {
base: color.neutral[800],
hovered: color.neutral[800],
active: color.neutral[800],
focused: color.neutral[800],
},
500: {
base: color.neutral[900],
hovered: color.neutral[900],
active: color.neutral[900],
focused: color.neutral[900],
},
ok: {
base: color.green[600],
hovered: color.green[600],
active: color.green[600],
focused: color.green[600],
},
error: {
base: color.red[400],
hovered: color.red[400],
active: color.red[400],
focused: color.red[400],
},
warning: {
base: color.amber[300],
hovered: color.amber[300],
active: color.amber[300],
focused: color.amber[300],
},
info: {
base: color.blue[500],
hovered: color.blue[500],
active: color.blue[500],
focused: color.blue[500],
},
};
const borderColor = {
primary: color.neutral[850],
secondary: color.neutral[700],
muted: color.neutral[750],
focused: color.neutral[100],
active: color.neutral[500],
ok: color.neutral[999],
error: color.neutral[999],
warning: color.neutral[999],
info: color.neutral[999],
};
const textColor = {
primary: color.neutral[150],
secondary: color.neutral[350],
muted: color.neutral[550],
placeholder: color.neutral[750],
active: color.neutral[0],
//TODO: (design) define feature and it's correct value
feature: color.sky[500],
ok: color.green[600],
error: color.red[400],
warning: color.amber[300],
info: color.blue[500],
};
const iconColor = {
primary: color.neutral[300],
secondary: color.neutral[500],
muted: color.neutral[600],
placeholder: color.neutral[700],
active: color.neutral[50],
//TODO: (design) define feature and it's correct value
feature: color.sky[500],
ok: color.green[600],
error: color.red[400],
warning: color.amber[300],
info: color.blue[500],
};
const player = {
1: {
baseColor: color.blue[600],
cursorColor: color.blue[600],
selectionColor: color.blue[600],
borderColor: color.blue[600],
},
2: {
baseColor: color.indigo[500],
cursorColor: color.indigo[500],
selectionColor: color.indigo[500],
borderColor: color.indigo[500],
},
3: {
baseColor: color.green[500],
cursorColor: color.green[500],
selectionColor: color.green[500],
borderColor: color.green[500],
},
4: {
baseColor: color.orange[500],
cursorColor: color.orange[500],
selectionColor: color.orange[500],
borderColor: color.orange[500],
},
5: {
baseColor: color.purple[500],
cursorColor: color.purple[500],
selectionColor: color.purple[500],
borderColor: color.purple[500],
},
6: {
baseColor: color.teal[400],
cursorColor: color.teal[400],
selectionColor: color.teal[400],
borderColor: color.teal[400],
},
7: {
baseColor: color.pink[400],
cursorColor: color.pink[400],
selectionColor: color.pink[400],
borderColor: color.pink[400],
},
8: {
baseColor: color.yellow[400],
cursorColor: color.yellow[400],
selectionColor: color.yellow[400],
borderColor: color.yellow[400],
},
};
// TODO: Fixup
const editor = {
background: backgroundColor[500].base,
indent_guide: borderColor.muted,
indent_guide_active: borderColor.secondary,
line: {
active: color.neutral[0],
highlighted: color.neutral[0],
inserted: backgroundColor.ok.active,
deleted: backgroundColor.error.active,
modified: backgroundColor.info.active,
},
highlight: {
selection: player[1].selectionColor,
occurrence: backgroundColor[500].active,
activeOccurrence: color.neutral[0],
matchingBracket: color.neutral[0],
match: color.neutral[0],
activeMatch: color.neutral[0],
related: color.neutral[0],
},
gutter: {
primary: color.neutral[0],
active: color.neutral[0],
},
};
const syntax: Syntax = {
primary: {
color: textColor.primary,
weight: { value: "normal", type: "fontWeight" },
},
comment: {
color: color.lime[200],
weight: { value: "normal", type: "fontWeight" },
},
punctuation: {
color: textColor.primary,
weight: { value: "normal", type: "fontWeight" },
},
constant: {
color: color.neutral[150],
weight: { value: "normal", type: "fontWeight" },
},
keyword: {
color: color.sky[400],
weight: { value: "normal", type: "fontWeight" },
},
function: {
color: color.yellow[200],
weight: { value: "normal", type: "fontWeight" },
},
type: {
color: color.teal[300],
weight: { value: "normal", type: "fontWeight" },
},
variant: {
color: color.teal[300],
weight: { value: "normal", type: "fontWeight" },
},
property: {
color: color.sky[300],
weight: { value: "normal", type: "fontWeight" },
},
enum: {
color: color.sky[400],
weight: { value: "normal", type: "fontWeight" },
},
operator: {
color: color.sky[400],
weight: { value: "normal", type: "fontWeight" },
},
string: {
color: color.orange[300],
weight: { value: "normal", type: "fontWeight" },
},
number: {
color: color.neutral[150],
weight: { value: "normal", type: "fontWeight" },
},
boolean: {
color: color.neutral[150],
weight: { value: "normal", type: "fontWeight" },
},
predictive: {
color: textColor.muted,
weight: { value: "normal", type: "fontWeight" },
},
};
const shadowAlpha: NumberToken = {
value: 0.32,
type: "number"
};
const theme: Theme = {
name: "dark",
backgroundColor,
borderColor,
textColor,
iconColor,
editor,
syntax,
player,
shadowAlpha,
};
export default theme;