514 lines
18 KiB
JavaScript
514 lines
18 KiB
JavaScript
const { getVariant } = require("./process");
|
|
const { getColors } = require("./primer");
|
|
|
|
function getTheme({ style, name }) {
|
|
// Usage: `auto('pink')`
|
|
const auto = (hex) => getVariant(hex, style);
|
|
|
|
// Usage: `pick({ light: "lightblue", dark: "darkblue" })`
|
|
const pick = (options) => options[style];
|
|
|
|
const primer = getColors(style);
|
|
return {
|
|
name: name,
|
|
colors: {
|
|
focusBorder: pick({ light: primer.blue[4], dark: primer.blue[3] }),
|
|
foreground: pick({ light: primer.gray[7], dark: primer.gray[6] }),
|
|
descriptionForeground: primer.gray[5],
|
|
errorForeground: primer.red[6],
|
|
|
|
"textLink.foreground": pick({ light: primer.blue[5], dark: primer.blue[6] }),
|
|
"textLink.activeForeground": pick({ light: primer.blue[6], dark: primer.blue[7] }),
|
|
"textBlockQuote.background": primer.gray[0],
|
|
"textBlockQuote.border": primer.gray[2],
|
|
"textCodeBlock.background": primer.gray[1],
|
|
"textPreformat.foreground": primer.gray[6],
|
|
"textSeparator.foreground": primer.gray[3],
|
|
|
|
"button.background": pick({ light: "#159739", dark: primer.green[2] }),
|
|
"button.foreground": pick({ light: primer.white, dark: primer.green[8] }),
|
|
"button.hoverBackground": pick({ light: "#138934", dark: primer.green[3] }),
|
|
|
|
"checkbox.background": pick({ light: primer.gray[0], dark: primer.gray[2] }),
|
|
"checkbox.border": pick({ light: primer.gray[3], dark: primer.white }),
|
|
|
|
"dropdown.background": pick({ light: primer.gray[0], dark: primer.gray[1] }),
|
|
"dropdown.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"dropdown.foreground": primer.gray[9],
|
|
"dropdown.listBackground": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
|
|
"input.background": pick({ light: primer.gray[0], dark: primer.gray[1] }),
|
|
"input.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"input.foreground": primer.gray[9],
|
|
"input.placeholderForeground": pick({ light: primer.gray[4], dark: primer.gray[5] }),
|
|
|
|
"badge.foreground": pick({ light: primer.blue[6], dark: primer.blue[7] }),
|
|
"badge.background": pick({ light: primer.blue[1], dark: primer.blue[2] }),
|
|
|
|
"progressBar.background": primer.blue[4],
|
|
|
|
"titleBar.activeForeground": primer.gray[9],
|
|
"titleBar.activeBackground": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"titleBar.inactiveForeground": primer.gray[5],
|
|
"titleBar.inactiveBackground": pick({ light: primer.gray[1], dark: "#1f2428" }),
|
|
"titleBar.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
|
|
"activityBar.foreground": primer.gray[9],
|
|
"activityBar.inactiveForeground": primer.gray[4],
|
|
"activityBar.background": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"activityBarBadge.foreground": pick({ light: primer.white, dark: primer.black }),
|
|
"activityBarBadge.background": pick({ light: primer.blue[4], dark: primer.blue[4] }),
|
|
"activityBar.activeBorder": "#f9826c",
|
|
"activityBar.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
|
|
"sideBar.foreground": primer.gray[7],
|
|
"sideBar.background": pick({ light: primer.gray[1], dark: "#1f2428" }),
|
|
"sideBar.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"sideBarTitle.foreground": primer.gray[9],
|
|
"sideBarSectionHeader.foreground": primer.gray[9],
|
|
"sideBarSectionHeader.background": pick({ light: primer.gray[1], dark: "#1f2428" }),
|
|
"sideBarSectionHeader.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
|
|
"list.hoverForeground": primer.gray[9],
|
|
"list.inactiveSelectionForeground": primer.gray[9],
|
|
"list.activeSelectionForeground": primer.gray[9],
|
|
"list.hoverBackground": pick({ light: "#ebf0f4", dark: "#282e34" }),
|
|
"list.inactiveSelectionBackground": pick({ light: "#e8eaed", dark: "#282e34" }),
|
|
"list.activeSelectionBackground": pick({ light: "#e2e5e9", dark: "#39414a" }),
|
|
"list.inactiveFocusBackground": pick({ light: primer.blue[1], dark: "#1d2d3e" }),
|
|
"list.focusBackground": pick({ light: "#cce5ff", dark: primer.blue[2] }),
|
|
|
|
"tree.indentGuidesStroke": pick({ light: primer.gray[2], dark: primer.gray[1] }),
|
|
|
|
"notificationCenterHeader.foreground": primer.gray[5],
|
|
"notificationCenterHeader.background": pick({ light: primer.gray[2], dark: primer.gray[0] }),
|
|
"notifications.foreground": primer.gray[9],
|
|
"notifications.background": pick({ light: primer.gray[0], dark: primer.gray[1] }),
|
|
"notifications.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"notificationsErrorIcon.foreground": primer.red[5],
|
|
"notificationsWarningIcon.foreground": primer.orange[6],
|
|
"notificationsInfoIcon.foreground": primer.blue[6],
|
|
|
|
"pickerGroup.border": primer.gray[2],
|
|
"pickerGroup.foreground": primer.gray[9],
|
|
"quickInput.background": primer.gray[0],
|
|
"quickInput.foreground": primer.gray[9],
|
|
|
|
"statusBar.foreground": primer.gray[6],
|
|
"statusBar.background": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"statusBar.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"statusBar.noFolderBackground": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"statusBar.debuggingBackground": auto("#f9826c"),
|
|
"statusBar.debuggingForeground": pick({ light: primer.white, dark: primer.black }),
|
|
|
|
"editorGroupHeader.tabsBackground": pick({ light: primer.gray[1], dark: "#1f2428" }),
|
|
"editorGroupHeader.tabsBorder": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"editorGroup.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
|
|
"tab.activeForeground": primer.gray[9],
|
|
"tab.inactiveForeground": primer.gray[5],
|
|
"tab.inactiveBackground": pick({ light: primer.gray[1], dark: "#1f2428" }),
|
|
"tab.activeBackground": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"tab.hoverBackground": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"tab.unfocusedHoverBackground": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"tab.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"tab.unfocusedActiveBorderTop": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"tab.activeBorder": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"tab.unfocusedActiveBorder": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"tab.activeBorderTop": "#f9826c",
|
|
|
|
"breadcrumb.foreground": primer.gray[5],
|
|
"breadcrumb.focusForeground": primer.gray[9],
|
|
"breadcrumb.activeSelectionForeground": primer.gray[6],
|
|
"breadcrumbPicker.background": pick({ light: primer.gray[0], dark: "#2b3036" }),
|
|
|
|
"editor.foreground": primer.gray[9],
|
|
"editor.background": pick({ light: primer.white, dark: primer.gray[0] }),
|
|
"editorWidget.background": pick({ light: primer.gray[1], dark: "#1f2428" }),
|
|
"editor.foldBackground": pick({ light: primer.gray[0], dark: "#282e33" }),
|
|
"editor.lineHighlightBackground": pick({ light: primer.gray[1], dark: "#2b3036" }),
|
|
"editorLineNumber.foreground": pick({ light: "#1b1f234d", dark: primer.gray[2] }),
|
|
"editorLineNumber.activeForeground": primer.gray[9],
|
|
"editorIndentGuide.background": pick({ light: "#eff2f6", dark: primer.gray[1] }),
|
|
"editorIndentGuide.activeBackground": pick({ light: "#d7dbe0", dark: primer.gray[2] }),
|
|
"editorWhitespace.foreground": pick({ light: primer.gray[3], dark: primer.gray[2] }),
|
|
"editorCursor.foreground": primer.blue[7],
|
|
|
|
"editor.findMatchBackground": pick({ light: primer.yellow[4], dark: "#ffd33d44" }),
|
|
"editor.findMatchHighlightBackground": pick({ light: "#ffdf5d66", dark: "#ffd33d22" }),
|
|
"editor.inactiveSelectionBackground": pick({ light: "#0366d611", dark: "#3392FF22" }),
|
|
"editor.selectionBackground": pick({ light: "#0366d625", dark: "#3392FF44" }),
|
|
"editor.selectionHighlightBackground": pick({ light: "#34d05840", dark: "#17E5E633" }),
|
|
"editor.wordHighlightBackground": pick({ light: "#34d05800", dark: "#17E5E600" }),
|
|
"editor.wordHighlightStrongBackground": pick({ light: "#34d05800", dark: "#17E5E600" }),
|
|
"editor.wordHighlightBorder": pick({ light: "#34d05866", dark: "#17E5E633" }),
|
|
"editor.wordHighlightStrongBorder": pick({ light: "#28a74566", dark: "#17E5E666" }),
|
|
"editorBracketMatch.background": pick({ light: "#34d05840", dark: "#17E5E650" }),
|
|
"editorBracketMatch.border": pick({ light: "#34d05800", dark: "#17E5E600" }),
|
|
|
|
"editorGutter.modifiedBackground": pick({ light: primer.blue[4], dark: primer.blue[5] }),
|
|
"editorGutter.addedBackground": pick({ light: primer.green[5], dark: primer.green[4] }),
|
|
"editorGutter.deletedBackground": primer.red[5],
|
|
|
|
"diffEditor.insertedTextBackground": pick({ light: "#34d05822", dark: "#28a74530" }),
|
|
"diffEditor.removedTextBackground": pick({ light: "#d73a4922", dark: "#d73a4930" }),
|
|
|
|
"scrollbar.shadow": pick({ light: "#6a737d33", dark: "#0008" }),
|
|
"scrollbarSlider.background": pick({ light: "#959da533", dark: "#6a737d33" }),
|
|
"scrollbarSlider.hoverBackground": pick({ light: "#959da544", dark: "#6a737d44" }),
|
|
"scrollbarSlider.activeBackground": pick({ light: "#959da588", dark: "#6a737d88" }),
|
|
"editorOverviewRuler.border": primer.white,
|
|
|
|
"panel.background": pick({ light: primer.gray[1], dark: "#1f2428" }),
|
|
"panel.border": pick({ light: primer.gray[2], dark: primer.white }),
|
|
"panelTitle.activeBorder": "#f9826c",
|
|
"panelTitle.activeForeground": primer.gray[9],
|
|
"panelTitle.inactiveForeground": primer.gray[5],
|
|
"panelInput.border": pick({ light: primer.gray[2], dark: primer.gray[1] }),
|
|
|
|
"terminal.foreground": primer.gray[6],
|
|
|
|
"gitDecoration.addedResourceForeground": primer.green[5],
|
|
"gitDecoration.modifiedResourceForeground": primer.blue[6],
|
|
"gitDecoration.deletedResourceForeground": primer.red[5],
|
|
"gitDecoration.untrackedResourceForeground": primer.green[5],
|
|
"gitDecoration.ignoredResourceForeground": primer.gray[4],
|
|
"gitDecoration.conflictingResourceForeground": primer.orange[6],
|
|
"gitDecoration.submoduleResourceForeground": primer.gray[4],
|
|
|
|
"debugToolBar.background": pick({ light: primer.white, dark: "#2b3036" }),
|
|
"editor.stackFrameHighlightBackground": pick({ light: primer.yellow[1], dark: "#a707" }),
|
|
"editor.focusedStackFrameHighlightBackground": pick({ light: primer.yellow[2], dark: "#b808" }),
|
|
|
|
"peekViewEditor.matchHighlightBackground": pick({ dark: "#ffd33d33" }),
|
|
"peekViewResult.matchHighlightBackground": pick({ dark: "#ffd33d33" }),
|
|
"peekViewEditor.background": pick({ dark: "#1f242888" }),
|
|
"peekViewResult.background": pick({ dark: "#1f2428" }),
|
|
|
|
"settings.headerForeground": primer.gray[9],
|
|
"settings.modifiedItemIndicator": primer.blue[4],
|
|
"welcomePage.buttonBackground": primer.gray[1],
|
|
"welcomePage.buttonHoverBackground": primer.gray[2],
|
|
},
|
|
semanticHighlighting: true,
|
|
tokenColors: [
|
|
{
|
|
scope: ["comment", "punctuation.definition.comment", "string.comment"],
|
|
settings: {
|
|
foreground: pick({ light: primer.gray[5], dark: primer.gray[4] }),
|
|
},
|
|
},
|
|
{
|
|
scope: [
|
|
"constant",
|
|
"entity.name.constant",
|
|
"variable.other.constant",
|
|
"variable.language",
|
|
],
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: ["entity", "entity.name"],
|
|
settings: {
|
|
foreground: pick({ light: primer.purple[5], dark: primer.purple[6] }),
|
|
},
|
|
},
|
|
{
|
|
scope: "variable.parameter.function",
|
|
settings: {
|
|
foreground: primer.gray[9],
|
|
},
|
|
},
|
|
{
|
|
scope: "entity.name.tag",
|
|
settings: {
|
|
foreground: primer.green[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "keyword",
|
|
settings: {
|
|
foreground: pick({ light: primer.red[5], dark: primer.red[6] }),
|
|
},
|
|
},
|
|
{
|
|
scope: ["storage", "storage.type"],
|
|
settings: {
|
|
foreground: pick({ light: primer.red[5], dark: primer.red[6] }),
|
|
},
|
|
},
|
|
{
|
|
scope: [
|
|
"storage.modifier.package",
|
|
"storage.modifier.import",
|
|
"storage.type.java",
|
|
],
|
|
settings: {
|
|
foreground: primer.gray[9],
|
|
},
|
|
},
|
|
{
|
|
scope: [
|
|
"string",
|
|
"punctuation.definition.string",
|
|
"string punctuation.section.embedded source",
|
|
],
|
|
settings: {
|
|
foreground: pick({ light: primer.blue[8], dark: "#9ecbff" }),
|
|
},
|
|
},
|
|
{
|
|
scope: "support",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "meta.property-name",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "variable",
|
|
settings: {
|
|
foreground: primer.orange[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "variable.other",
|
|
settings: {
|
|
foreground: primer.gray[9],
|
|
},
|
|
},
|
|
{
|
|
scope: "invalid.broken",
|
|
settings: {
|
|
fontStyle: "italic",
|
|
foreground: primer.red[7],
|
|
},
|
|
},
|
|
{
|
|
scope: "invalid.deprecated",
|
|
settings: {
|
|
fontStyle: "italic",
|
|
foreground: primer.red[7],
|
|
},
|
|
},
|
|
{
|
|
scope: "invalid.illegal",
|
|
settings: {
|
|
fontStyle: "italic",
|
|
foreground: primer.red[7],
|
|
},
|
|
},
|
|
{
|
|
scope: "invalid.unimplemented",
|
|
settings: {
|
|
fontStyle: "italic",
|
|
foreground: primer.red[7],
|
|
},
|
|
},
|
|
{
|
|
scope: "carriage-return",
|
|
settings: {
|
|
fontStyle: "italic underline",
|
|
background: pick({ light: primer.red[5], dark: primer.red[6] }),
|
|
foreground: primer.gray[0],
|
|
content: "^M",
|
|
},
|
|
},
|
|
{
|
|
scope: "message.error",
|
|
settings: {
|
|
foreground: primer.red[7],
|
|
},
|
|
},
|
|
{
|
|
scope: "string source",
|
|
settings: {
|
|
foreground: primer.gray[9],
|
|
},
|
|
},
|
|
{
|
|
scope: "string variable",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: ["source.regexp", "string.regexp"],
|
|
settings: {
|
|
foreground: primer.blue[8],
|
|
},
|
|
},
|
|
{
|
|
scope: [
|
|
"string.regexp.character-class",
|
|
"string.regexp constant.character.escape",
|
|
"string.regexp source.ruby.embedded",
|
|
"string.regexp string.regexp.arbitrary-repitition",
|
|
],
|
|
settings: {
|
|
foreground: primer.blue[8],
|
|
},
|
|
},
|
|
{
|
|
scope: "string.regexp constant.character.escape",
|
|
settings: {
|
|
fontStyle: "bold",
|
|
foreground: primer.green[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "support.constant",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "support.variable",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "meta.module-reference",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "markup.list",
|
|
settings: {
|
|
foreground: primer.yellow[9],
|
|
},
|
|
},
|
|
{
|
|
scope: ["markup.heading", "markup.heading entity.name"],
|
|
settings: {
|
|
fontStyle: "bold",
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "markup.quote",
|
|
settings: {
|
|
foreground: primer.green[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "markup.italic",
|
|
settings: {
|
|
fontStyle: "italic",
|
|
foreground: primer.gray[9],
|
|
},
|
|
},
|
|
{
|
|
scope: "markup.bold",
|
|
settings: {
|
|
fontStyle: "bold",
|
|
foreground: primer.gray[9],
|
|
},
|
|
},
|
|
{
|
|
scope: "markup.raw",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: [
|
|
"markup.deleted",
|
|
"meta.diff.header.from-file",
|
|
"punctuation.definition.deleted",
|
|
],
|
|
settings: {
|
|
background: primer.red[0],
|
|
foreground: primer.red[7],
|
|
},
|
|
},
|
|
{
|
|
scope: [
|
|
"markup.inserted",
|
|
"meta.diff.header.to-file",
|
|
"punctuation.definition.inserted",
|
|
],
|
|
settings: {
|
|
background: primer.green[0],
|
|
foreground: primer.green[6],
|
|
},
|
|
},
|
|
{
|
|
scope: ["markup.changed", "punctuation.definition.changed"],
|
|
settings: {
|
|
background: primer.orange[1],
|
|
foreground: primer.orange[6],
|
|
},
|
|
},
|
|
{
|
|
scope: ["markup.ignored", "markup.untracked"],
|
|
settings: {
|
|
foreground: primer.gray[1],
|
|
background: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "meta.diff.range",
|
|
settings: {
|
|
foreground: pick({ light: primer.purple[5], dark: primer.purple[6] }),
|
|
fontStyle: "bold",
|
|
},
|
|
},
|
|
{
|
|
scope: "meta.diff.header",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "meta.separator",
|
|
settings: {
|
|
fontStyle: "bold",
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "meta.output",
|
|
settings: {
|
|
foreground: primer.blue[6],
|
|
},
|
|
},
|
|
{
|
|
scope: [
|
|
"brackethighlighter.tag",
|
|
"brackethighlighter.curly",
|
|
"brackethighlighter.round",
|
|
"brackethighlighter.square",
|
|
"brackethighlighter.angle",
|
|
"brackethighlighter.quote",
|
|
],
|
|
settings: {
|
|
foreground: primer.gray[6],
|
|
},
|
|
},
|
|
{
|
|
scope: "brackethighlighter.unmatched",
|
|
settings: {
|
|
foreground: primer.red[7],
|
|
},
|
|
},
|
|
{
|
|
scope: ["constant.other.reference.link", "string.other.link"],
|
|
settings: {
|
|
foreground: primer.blue[8],
|
|
fontStyle: "underline",
|
|
},
|
|
},
|
|
],
|
|
};
|
|
}
|
|
|
|
module.exports = getTheme;
|