diff --git a/public/dark.json b/public/dark.json
new file mode 100644
index 0000000..162199a
--- /dev/null
+++ b/public/dark.json
@@ -0,0 +1,1147 @@
+
+{
+ "name": "Vitesse Dark",
+ "base": "vs-dark",
+ "colors": {
+ "focusBorder": "#00000000",
+ "foreground": "#dbd7caee",
+ "descriptionForeground": "#dedcd590",
+ "errorForeground": "#cb7676",
+ "textLink.foreground": "#4d9375",
+ "textLink.activeForeground": "#4d9375",
+ "textBlockQuote.background": "#121212",
+ "textBlockQuote.border": "#191919",
+ "textCodeBlock.background": "#121212",
+ "textPreformat.foreground": "#d1d5da",
+ "textSeparator.foreground": "#586069",
+ "button.background": "#4d9375",
+ "button.foreground": "#121212",
+ "button.hoverBackground": "#4d9375",
+ "checkbox.background": "#181818",
+ "checkbox.border": "#2f363d",
+ "dropdown.background": "#121212",
+ "dropdown.border": "#191919",
+ "dropdown.foreground": "#dbd7caee",
+ "dropdown.listBackground": "#181818",
+ "input.background": "#181818",
+ "input.border": "#191919",
+ "input.foreground": "#dbd7caee",
+ "input.placeholderForeground": "#dedcd590",
+ "inputOption.activeBackground": "#dedcd530",
+ "badge.foreground": "#121212",
+ "badge.background": "#dedcd590",
+ "progressBar.background": "#4d9375",
+ "titleBar.activeForeground": "#bfbaaa",
+ "titleBar.activeBackground": "#121212",
+ "titleBar.inactiveForeground": "#959da5",
+ "titleBar.inactiveBackground": "#121212",
+ "titleBar.border": "#181818",
+ "activityBar.foreground": "#dbd7caee",
+ "activityBar.inactiveForeground": "#dedcd530",
+ "activityBar.background": "#121212",
+ "activityBarBadge.foreground": "#121212",
+ "activityBarBadge.background": "#bfbaaa",
+ "activityBar.activeBorder": "#4d9375",
+ "activityBar.border": "#191919",
+ "sideBar.foreground": "#bfbaaa",
+ "sideBar.background": "#121212",
+ "sideBar.border": "#191919",
+ "sideBarTitle.foreground": "#dbd7caee",
+ "sideBarSectionHeader.foreground": "#dbd7caee",
+ "sideBarSectionHeader.background": "#121212",
+ "sideBarSectionHeader.border": "#191919",
+ "list.hoverForeground": "#dbd7caee",
+ "list.inactiveSelectionForeground": "#dbd7caee",
+ "list.activeSelectionForeground": "#dbd7caee",
+ "list.hoverBackground": "#181818",
+ "list.inactiveSelectionBackground": "#181818",
+ "list.activeSelectionBackground": "#181818",
+ "list.inactiveFocusBackground": "#121212",
+ "list.focusBackground": "#181818",
+ "tree.indentGuidesStroke": "#2f363d",
+ "notificationCenterHeader.foreground": "#959da5",
+ "notificationCenterHeader.background": "#121212",
+ "notifications.foreground": "#dbd7caee",
+ "notifications.background": "#121212",
+ "notifications.border": "#191919",
+ "notificationsErrorIcon.foreground": "#cb7676",
+ "notificationsWarningIcon.foreground": "#d4976c",
+ "notificationsInfoIcon.foreground": "#6394bf",
+ "pickerGroup.border": "#444d56",
+ "pickerGroup.foreground": "#dbd7caee",
+ "quickInput.background": "#121212",
+ "quickInput.foreground": "#dbd7caee",
+ "statusBar.foreground": "#bfbaaa",
+ "statusBar.background": "#121212",
+ "statusBar.border": "#191919",
+ "statusBar.noFolderBackground": "#121212",
+ "statusBar.debuggingBackground": "#181818",
+ "statusBar.debuggingForeground": "#bfbaaa",
+ "statusBarItem.prominentBackground": "#181818",
+ "editorGroupHeader.tabsBackground": "#121212",
+ "editorGroupHeader.tabsBorder": "#191919",
+ "editorGroup.border": "#191919",
+ "tab.activeForeground": "#dbd7caee",
+ "tab.inactiveForeground": "#959da5",
+ "tab.inactiveBackground": "#121212",
+ "tab.activeBackground": "#121212",
+ "tab.hoverBackground": "#181818",
+ "tab.unfocusedHoverBackground": "#121212",
+ "tab.border": "#191919",
+ "tab.unfocusedActiveBorderTop": "#191919",
+ "tab.activeBorder": "#191919",
+ "tab.unfocusedActiveBorder": "#191919",
+ "tab.activeBorderTop": "#dedcd590",
+ "breadcrumb.foreground": "#959da5",
+ "breadcrumb.focusForeground": "#dbd7caee",
+ "breadcrumb.background": "#181818",
+ "breadcrumb.activeSelectionForeground": "#eeeeee15",
+ "breadcrumbPicker.background": "#121212",
+ "editor.foreground": "#dbd7caee",
+ "editor.background": "#121212",
+ "editorWidget.background": "#121212",
+ "editor.foldBackground": "#eeeeee10",
+ "editor.lineHighlightBackground": "#181818",
+ "editorLineNumber.foreground": "#dedcd530",
+ "editorLineNumber.activeForeground": "#bfbaaa",
+ "editorIndentGuide.background": "#ffffff15",
+ "editorIndentGuide.activeBackground": "#ffffff30",
+ "editorWhitespace.foreground": "#ffffff15",
+ "editor.findMatchBackground": "#e6cc7722",
+ "editor.findMatchHighlightBackground": "#e6cc7744",
+ "editor.inactiveSelectionBackground": "#eeeeee08",
+ "editor.selectionBackground": "#eeeeee15",
+ "editor.selectionHighlightBackground": "#eeeeee08",
+ "editor.wordHighlightBackground": "#1c6b4805",
+ "editor.wordHighlightStrongBackground": "#1c6b4810",
+ "editorBracketMatch.background": "#4d937520",
+ "diffEditor.insertedTextBackground": "#4d937522",
+ "diffEditor.removedTextBackground": "#ab595922",
+ "scrollbar.shadow": "#0000",
+ "scrollbarSlider.background": "#dedcd510",
+ "scrollbarSlider.hoverBackground": "#dedcd530",
+ "scrollbarSlider.activeBackground": "#dedcd530",
+ "editorOverviewRuler.border": "#111",
+ "panel.background": "#121212",
+ "panel.border": "#191919",
+ "panelTitle.activeBorder": "#4d9375",
+ "panelTitle.activeForeground": "#dbd7caee",
+ "panelTitle.inactiveForeground": "#959da5",
+ "panelInput.border": "#2f363d",
+ "terminal.foreground": "#dbd7caee",
+ "terminal.selectionBackground": "#eeeeee15",
+ "terminal.ansiBrightBlack": "#777777",
+ "terminal.ansiBrightBlue": "#6394bf",
+ "terminal.ansiBrightCyan": "#5eaab5",
+ "terminal.ansiBrightGreen": "#4d9375",
+ "terminal.ansiBrightMagenta": "#d9739f",
+ "terminal.ansiBrightRed": "#cb7676",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#e6cc77",
+ "terminal.ansiBlack": "#393a34",
+ "terminal.ansiBlue": "#6394bf",
+ "terminal.ansiCyan": "#5eaab5",
+ "terminal.ansiGreen": "#4d9375",
+ "terminal.ansiMagenta": "#d9739f",
+ "terminal.ansiRed": "#cb7676",
+ "terminal.ansiWhite": "#dbd7caee",
+ "terminal.ansiYellow": "#e6cc77",
+ "gitDecoration.addedResourceForeground": "#4d9375",
+ "gitDecoration.modifiedResourceForeground": "#6394bf",
+ "gitDecoration.deletedResourceForeground": "#cb7676",
+ "gitDecoration.untrackedResourceForeground": "#5eaab5",
+ "gitDecoration.ignoredResourceForeground": "#dedcd530",
+ "gitDecoration.conflictingResourceForeground": "#d4976c",
+ "gitDecoration.submoduleResourceForeground": "#dedcd590",
+ "editorGutter.modifiedBackground": "#6394bf",
+ "editorGutter.addedBackground": "#4d9375",
+ "editorGutter.deletedBackground": "#cb7676",
+ "editorBracketHighlight.foreground1": "#5eaab5",
+ "editorBracketHighlight.foreground2": "#4d9375",
+ "editorBracketHighlight.foreground3": "#d4976c",
+ "editorBracketHighlight.foreground4": "#d9739f",
+ "editorBracketHighlight.foreground5": "#e6cc77",
+ "editorBracketHighlight.foreground6": "#6394bf",
+ "debugToolBar.background": "#121212",
+ "editor.stackFrameHighlightBackground": "#a707",
+ "editor.focusedStackFrameHighlightBackground": "#b808",
+ "peekViewEditor.matchHighlightBackground": "#ffd33d33",
+ "peekViewResult.matchHighlightBackground": "#ffd33d33",
+ "peekViewEditor.background": "#121212",
+ "peekViewResult.background": "#121212",
+ "settings.headerForeground": "#dbd7caee",
+ "settings.modifiedItemIndicator": "#4d9375",
+ "welcomePage.buttonBackground": "#2f363d",
+ "welcomePage.buttonHoverBackground": "#444d56",
+ "problemsErrorIcon.foreground": "#cb7676",
+ "problemsWarningIcon.foreground": "#d4976c",
+ "problemsInfoIcon.foreground": "#6394bf",
+ "editorError.foreground": "#cb7676",
+ "editorWarning.foreground": "#d4976c",
+ "editorInfo.foreground": "#6394bf",
+ "editorHint.foreground": "#4d9375",
+ "editorGutter.commentRangeForeground": "#dedcd530",
+ "editorGutter.foldingControlForeground": "#dedcd590",
+ "editorInlayHint.foreground": "#666666",
+ "editorInlayHint.background": "#00000000",
+ "editorStickyScroll.background": "#181818",
+ "editorStickyScrollHover.background": "#181818"
+ },
+ "semanticHighlighting": true,
+ "semanticTokenColors": {
+ "namespace": "#db889a",
+ "property": "#b8a965",
+ "interface": "#5DA994",
+ "type": "#5DA994",
+ "class": "#6893BF"
+ },
+ "tokenColors": [
+ {
+ "scope": [
+ "comment",
+ "punctuation.definition.comment",
+ "string.comment"
+ ],
+ "settings": {
+ "foreground": "#758575dd"
+ }
+ },
+ {
+ "scope": [
+ "delimiter.bracket",
+ "delimiter",
+ "invalid.illegal.character-not-allowed-here.html",
+ "keyword.operator.rest",
+ "keyword.operator.spread",
+ "keyword.operator.type.annotation",
+ "keyword.operator.relational.ts",
+ "meta.brace",
+ "meta.tag.block.any.html",
+ "meta.tag.inline.any.html",
+ "meta.tag.structure.input.void.html",
+ "meta.type.annotation",
+ "storage.type.function.arrow",
+ "keyword.operator.type",
+ "meta.objectliteral.ts",
+ "punctuation"
+ ],
+ "settings": {
+ "foreground": "#666666"
+ }
+ },
+ {
+ "scope": [
+ "constant",
+ "entity.name.constant",
+ "variable.language",
+ "meta.definition.variable"
+ ],
+ "settings": {
+ "foreground": "#c99076"
+ }
+ },
+ {
+ "scope": [
+ "entity",
+ "entity.name"
+ ],
+ "settings": {
+ "foreground": "#80a665"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.tag",
+ "tag.html"
+ ],
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#80a665"
+ }
+ },
+ {
+ "scope": [
+ "keyword",
+ "storage.type.class.jsdoc"
+ ],
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": [
+ "storage",
+ "storage.type",
+ "support.type.builtin",
+ "constant.language.undefined",
+ "constant.language.null"
+ ],
+ "settings": {
+ "foreground": "#cb7676"
+ }
+ },
+ {
+ "scope": [
+ "storage.modifier.package",
+ "storage.modifier.import",
+ "storage.type.java"
+ ],
+ "settings": {
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": [
+ "string",
+ "string punctuation.section.embedded source",
+ "attribute.value"
+ ],
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.string",
+ "punctuation.support.type.property-name"
+ ],
+ "settings": {
+ "foreground": "#c98a7daa"
+ }
+ },
+ {
+ "scope": "support",
+ "settings": {
+ "foreground": "#b8a965"
+ }
+ },
+ {
+ "scope": [
+ "property",
+ "meta.property-name",
+ "meta.object-literal.key",
+ "entity.name.tag.yaml",
+ "attribute.name"
+ ],
+ "settings": {
+ "foreground": "#b8a965"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name",
+ "invalid.deprecated.entity.other.attribute-name.html"
+ ],
+ "settings": {
+ "foreground": "#bd976a"
+ }
+ },
+ {
+ "scope": [
+ "variable",
+ "identifier"
+ ],
+ "settings": {
+ "foreground": "#bd976a"
+ }
+ },
+ {
+ "scope": [
+ "support.type.primitive",
+ "entity.name.type"
+ ],
+ "settings": {
+ "foreground": "#5da9a7"
+ }
+ },
+ {
+ "scope": "namespace",
+ "settings": {
+ "foreground": "#db889a"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator",
+ "meta.var.expr.ts"
+ ],
+ "settings": {
+ "foreground": "#cb7676"
+ }
+ },
+ {
+ "scope": "invalid.broken",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.deprecated",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.illegal",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "carriage-return",
+ "settings": {
+ "fontStyle": "italic underline",
+ "background": "#f97583",
+ "foreground": "#24292e",
+ "content": "^M"
+ }
+ },
+ {
+ "scope": "message.error",
+ "settings": {
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "string source",
+ "settings": {
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": "string variable",
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": [
+ "source.regexp",
+ "string.regexp"
+ ],
+ "settings": {
+ "foreground": "#c4704f"
+ }
+ },
+ {
+ "scope": [
+ "string.regexp.character-class",
+ "string.regexp constant.character.escape",
+ "string.regexp source.ruby.embedded",
+ "string.regexp string.regexp.arbitrary-repitition"
+ ],
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": "string.regexp constant.character.escape",
+ "settings": {
+ "foreground": "#e6cc77"
+ }
+ },
+ {
+ "scope": [
+ "support.constant"
+ ],
+ "settings": {
+ "foreground": "#c99076"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "number"
+ ],
+ "settings": {
+ "foreground": "#4C9A91"
+ }
+ },
+ {
+ "scope": [
+ "keyword.other.unit"
+ ],
+ "settings": {
+ "foreground": "#cb7676"
+ }
+ },
+ {
+ "scope": [
+ "constant.language.boolean",
+ "constant.language"
+ ],
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "meta.module-reference",
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#d4976c"
+ }
+ },
+ {
+ "scope": [
+ "markup.heading",
+ "markup.heading entity.name"
+ ],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#5DA994"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": "markup.raw",
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": [
+ "markup.deleted",
+ "meta.diff.header.from-file",
+ "punctuation.definition.deleted"
+ ],
+ "settings": {
+ "background": "#86181d",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": [
+ "markup.inserted",
+ "meta.diff.header.to-file",
+ "punctuation.definition.inserted"
+ ],
+ "settings": {
+ "background": "#144620",
+ "foreground": "#85e89d"
+ }
+ },
+ {
+ "scope": [
+ "markup.changed",
+ "punctuation.definition.changed"
+ ],
+ "settings": {
+ "background": "#c24e00",
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "scope": [
+ "markup.ignored",
+ "markup.untracked"
+ ],
+ "settings": {
+ "foreground": "#2f363d",
+ "background": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.diff.range",
+ "settings": {
+ "foreground": "#b392f0",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.separator",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.output",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": [
+ "brackethighlighter.tag",
+ "brackethighlighter.curly",
+ "brackethighlighter.round",
+ "brackethighlighter.square",
+ "brackethighlighter.angle",
+ "brackethighlighter.quote"
+ ],
+ "settings": {
+ "foreground": "#d1d5da"
+ }
+ },
+ {
+ "scope": "brackethighlighter.unmatched",
+ "settings": {
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": [
+ "constant.other.reference.link",
+ "string.other.link",
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown"
+ ],
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": [
+ "markup.underline.link.markdown"
+ ],
+ "settings": {
+ "foreground": "#dedcd590",
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": [
+ "type.identifier"
+ ],
+ "settings": {
+ "foreground": "#6893BF"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name.html.vue"
+ ],
+ "settings": {
+ "foreground": "#80a665"
+ }
+ },
+ {
+ "scope": [
+ "invalid.illegal.unrecognized-tag.html"
+ ],
+ "settings": {
+ "fontStyle": "normal"
+ }
+ }
+ ],
+ "rules": [
+ {
+ "token": "comment",
+ "foreground": "758575dd"
+ },
+ {
+ "token": "punctuation.definition.comment",
+ "foreground": "758575dd"
+ },
+ {
+ "token": "string.comment",
+ "foreground": "758575dd"
+ },
+ {
+ "token": "delimiter.bracket",
+ "foreground": "666666"
+ },
+ {
+ "token": "delimiter",
+ "foreground": "666666"
+ },
+ {
+ "token": "invalid.illegal.character-not-allowed-here.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.rest",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.spread",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.type.annotation",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.relational.ts",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.brace",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.tag.block.any.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.tag.inline.any.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.tag.structure.input.void.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.type.annotation",
+ "foreground": "666666"
+ },
+ {
+ "token": "storage.type.function.arrow",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.type",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.objectliteral.ts",
+ "foreground": "666666"
+ },
+ {
+ "token": "punctuation",
+ "foreground": "666666"
+ },
+ {
+ "token": "constant",
+ "foreground": "c99076"
+ },
+ {
+ "token": "entity.name.constant",
+ "foreground": "c99076"
+ },
+ {
+ "token": "variable.language",
+ "foreground": "c99076"
+ },
+ {
+ "token": "meta.definition.variable",
+ "foreground": "c99076"
+ },
+ {
+ "token": "entity",
+ "foreground": "80a665"
+ },
+ {
+ "token": "entity.name",
+ "foreground": "80a665"
+ },
+ {
+ "token": "variable.parameter.function",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "entity.name.tag",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "tag.html",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "entity.name.function",
+ "foreground": "80a665"
+ },
+ {
+ "token": "keyword",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "storage.type.class.jsdoc",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "storage",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "storage.type",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "support.type.builtin",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "constant.language.undefined",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "constant.language.null",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "storage.modifier.package",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "storage.modifier.import",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "storage.type.java",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "string",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string punctuation.section.embedded source",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "attribute.value",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "punctuation.definition.string",
+ "foreground": "c98a7daa"
+ },
+ {
+ "token": "punctuation.support.type.property-name",
+ "foreground": "c98a7daa"
+ },
+ {
+ "token": "support",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "property",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "meta.property-name",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "meta.object-literal.key",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "entity.name.tag.yaml",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "attribute.name",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "entity.other.attribute-name",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "invalid.deprecated.entity.other.attribute-name.html",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "variable",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "identifier",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "support.type.primitive",
+ "foreground": "5da9a7"
+ },
+ {
+ "token": "entity.name.type",
+ "foreground": "5da9a7"
+ },
+ {
+ "token": "namespace",
+ "foreground": "db889a"
+ },
+ {
+ "token": "keyword.operator",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "meta.var.expr.ts",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "invalid.broken",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "invalid.deprecated",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "invalid.illegal",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "invalid.unimplemented",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "carriage-return",
+ "foreground": "24292e"
+ },
+ {
+ "token": "message.error",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "string source",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "string variable",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "source.regexp",
+ "foreground": "c4704f"
+ },
+ {
+ "token": "string.regexp",
+ "foreground": "c4704f"
+ },
+ {
+ "token": "string.regexp.character-class",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp source.ruby.embedded",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp string.regexp.arbitrary-repitition",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "e6cc77"
+ },
+ {
+ "token": "support.constant",
+ "foreground": "c99076"
+ },
+ {
+ "token": "constant.numeric",
+ "foreground": "4C9A91"
+ },
+ {
+ "token": "number",
+ "foreground": "4C9A91"
+ },
+ {
+ "token": "keyword.other.unit",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "constant.language.boolean",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "constant.language",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "meta.module-reference",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "punctuation.definition.list.begin.markdown",
+ "foreground": "d4976c"
+ },
+ {
+ "token": "markup.heading",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "markup.heading entity.name",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "markup.quote",
+ "foreground": "5DA994"
+ },
+ {
+ "token": "markup.italic",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "markup.bold",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "markup.raw",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "markup.deleted",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "meta.diff.header.from-file",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "punctuation.definition.deleted",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "markup.inserted",
+ "foreground": "85e89d"
+ },
+ {
+ "token": "meta.diff.header.to-file",
+ "foreground": "85e89d"
+ },
+ {
+ "token": "punctuation.definition.inserted",
+ "foreground": "85e89d"
+ },
+ {
+ "token": "markup.changed",
+ "foreground": "ffab70"
+ },
+ {
+ "token": "punctuation.definition.changed",
+ "foreground": "ffab70"
+ },
+ {
+ "token": "markup.ignored",
+ "foreground": "2f363d"
+ },
+ {
+ "token": "markup.untracked",
+ "foreground": "2f363d"
+ },
+ {
+ "token": "meta.diff.range",
+ "foreground": "b392f0"
+ },
+ {
+ "token": "meta.diff.header",
+ "foreground": "79b8ff"
+ },
+ {
+ "token": "meta.separator",
+ "foreground": "79b8ff"
+ },
+ {
+ "token": "meta.output",
+ "foreground": "79b8ff"
+ },
+ {
+ "token": "brackethighlighter.tag",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.curly",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.round",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.square",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.angle",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.quote",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.unmatched",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "constant.other.reference.link",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.other.link",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "punctuation.definition.string.begin.markdown",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "punctuation.definition.string.end.markdown",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "markup.underline.link.markdown",
+ "foreground": "dedcd590"
+ },
+ {
+ "token": "type.identifier",
+ "foreground": "6893BF"
+ },
+ {
+ "token": "entity.other.attribute-name.html.vue",
+ "foreground": "80a665"
+ },
+ {
+ "token": "invalid.illegal.unrecognized-tag.html"
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/public/light.json b/public/light.json
new file mode 100644
index 0000000..6c79242
--- /dev/null
+++ b/public/light.json
@@ -0,0 +1,1144 @@
+{
+ "name": "Vitesse Light",
+ "base": "vs",
+ "colors": {
+ "focusBorder": "#00000000",
+ "foreground": "#393a34",
+ "descriptionForeground": "#393a3490",
+ "errorForeground": "#ab5959",
+ "textLink.foreground": "#1c6b48",
+ "textLink.activeForeground": "#1c6b48",
+ "textBlockQuote.background": "#ffffff",
+ "textBlockQuote.border": "#f0f0f0",
+ "textCodeBlock.background": "#ffffff",
+ "textPreformat.foreground": "#586069",
+ "textSeparator.foreground": "#d1d5da",
+ "button.background": "#1c6b48",
+ "button.foreground": "#ffffff",
+ "button.hoverBackground": "#1c6b48",
+ "checkbox.background": "#f7f7f7",
+ "checkbox.border": "#d1d5da",
+ "dropdown.background": "#ffffff",
+ "dropdown.border": "#f0f0f0",
+ "dropdown.foreground": "#393a34",
+ "dropdown.listBackground": "#f7f7f7",
+ "input.background": "#f7f7f7",
+ "input.border": "#f0f0f0",
+ "input.foreground": "#393a34",
+ "input.placeholderForeground": "#393a3490",
+ "inputOption.activeBackground": "#393a3450",
+ "badge.foreground": "#ffffff",
+ "badge.background": "#393a3490",
+ "progressBar.background": "#1c6b48",
+ "titleBar.activeForeground": "#4e4f47",
+ "titleBar.activeBackground": "#ffffff",
+ "titleBar.inactiveForeground": "#6a737d",
+ "titleBar.inactiveBackground": "#ffffff",
+ "titleBar.border": "#f7f7f7",
+ "activityBar.foreground": "#393a34",
+ "activityBar.inactiveForeground": "#393a3450",
+ "activityBar.background": "#ffffff",
+ "activityBarBadge.foreground": "#ffffff",
+ "activityBarBadge.background": "#4e4f47",
+ "activityBar.activeBorder": "#1c6b48",
+ "activityBar.border": "#f0f0f0",
+ "sideBar.foreground": "#4e4f47",
+ "sideBar.background": "#ffffff",
+ "sideBar.border": "#f0f0f0",
+ "sideBarTitle.foreground": "#393a34",
+ "sideBarSectionHeader.foreground": "#393a34",
+ "sideBarSectionHeader.background": "#ffffff",
+ "sideBarSectionHeader.border": "#f0f0f0",
+ "list.hoverForeground": "#393a34",
+ "list.inactiveSelectionForeground": "#393a34",
+ "list.activeSelectionForeground": "#393a34",
+ "list.hoverBackground": "#f7f7f7",
+ "list.inactiveSelectionBackground": "#f7f7f7",
+ "list.activeSelectionBackground": "#f7f7f7",
+ "list.inactiveFocusBackground": "#ffffff",
+ "list.focusBackground": "#f7f7f7",
+ "tree.indentGuidesStroke": "#e1e4e8",
+ "notificationCenterHeader.foreground": "#6a737d",
+ "notificationCenterHeader.background": "#ffffff",
+ "notifications.foreground": "#393a34",
+ "notifications.background": "#ffffff",
+ "notifications.border": "#f0f0f0",
+ "notificationsErrorIcon.foreground": "#ab5959",
+ "notificationsWarningIcon.foreground": "#a65e2b",
+ "notificationsInfoIcon.foreground": "#296aa3",
+ "pickerGroup.border": "#e1e4e8",
+ "pickerGroup.foreground": "#393a34",
+ "quickInput.background": "#ffffff",
+ "quickInput.foreground": "#393a34",
+ "statusBar.foreground": "#4e4f47",
+ "statusBar.background": "#ffffff",
+ "statusBar.border": "#f0f0f0",
+ "statusBar.noFolderBackground": "#ffffff",
+ "statusBar.debuggingBackground": "#f7f7f7",
+ "statusBar.debuggingForeground": "#4e4f47",
+ "statusBarItem.prominentBackground": "#f7f7f7",
+ "editorGroupHeader.tabsBackground": "#ffffff",
+ "editorGroupHeader.tabsBorder": "#f0f0f0",
+ "editorGroup.border": "#f0f0f0",
+ "tab.activeForeground": "#393a34",
+ "tab.inactiveForeground": "#6a737d",
+ "tab.inactiveBackground": "#ffffff",
+ "tab.activeBackground": "#ffffff",
+ "tab.hoverBackground": "#f7f7f7",
+ "tab.unfocusedHoverBackground": "#ffffff",
+ "tab.border": "#f0f0f0",
+ "tab.unfocusedActiveBorderTop": "#f0f0f0",
+ "tab.activeBorder": "#f0f0f0",
+ "tab.unfocusedActiveBorder": "#f0f0f0",
+ "tab.activeBorderTop": "#393a3490",
+ "breadcrumb.foreground": "#6a737d",
+ "breadcrumb.focusForeground": "#393a34",
+ "breadcrumb.background": "#f7f7f7",
+ "breadcrumb.activeSelectionForeground": "#22222215",
+ "breadcrumbPicker.background": "#ffffff",
+ "editor.foreground": "#393a34",
+ "editor.background": "#ffffff",
+ "editorWidget.background": "#ffffff",
+ "editor.foldBackground": "#22222210",
+ "editor.lineHighlightBackground": "#f7f7f7",
+ "editorLineNumber.foreground": "#393a3450",
+ "editorLineNumber.activeForeground": "#4e4f47",
+ "editorIndentGuide.background": "#00000015",
+ "editorIndentGuide.activeBackground": "#00000030",
+ "editorWhitespace.foreground": "#00000015",
+ "editor.findMatchBackground": "#e6cc7744",
+ "editor.findMatchHighlightBackground": "#e6cc7766",
+ "editor.inactiveSelectionBackground": "#22222208",
+ "editor.selectionBackground": "#22222215",
+ "editor.selectionHighlightBackground": "#22222208",
+ "editor.wordHighlightBackground": "#1c6b4805",
+ "editor.wordHighlightStrongBackground": "#1c6b4810",
+ "editorBracketMatch.background": "#1c6b4820",
+ "diffEditor.insertedTextBackground": "#1c6b4815",
+ "diffEditor.removedTextBackground": "#ab595910",
+ "scrollbar.shadow": "#6a737d33",
+ "scrollbarSlider.background": "#393a3410",
+ "scrollbarSlider.hoverBackground": "#393a3450",
+ "scrollbarSlider.activeBackground": "#393a3450",
+ "editorOverviewRuler.border": "#fff",
+ "panel.background": "#ffffff",
+ "panel.border": "#f0f0f0",
+ "panelTitle.activeBorder": "#1c6b48",
+ "panelTitle.activeForeground": "#393a34",
+ "panelTitle.inactiveForeground": "#6a737d",
+ "panelInput.border": "#e1e4e8",
+ "terminal.foreground": "#393a34",
+ "terminal.selectionBackground": "#22222215",
+ "terminal.ansiBrightBlack": "#aaaaaa",
+ "terminal.ansiBrightBlue": "#296aa3",
+ "terminal.ansiBrightCyan": "#2993a3",
+ "terminal.ansiBrightGreen": "#1e754f",
+ "terminal.ansiBrightMagenta": "#a13865",
+ "terminal.ansiBrightRed": "#ab5959",
+ "terminal.ansiBrightWhite": "#dddddd",
+ "terminal.ansiBrightYellow": "#bda437",
+ "terminal.ansiBlack": "#121212",
+ "terminal.ansiBlue": "#296aa3",
+ "terminal.ansiCyan": "#2993a3",
+ "terminal.ansiGreen": "#1e754f",
+ "terminal.ansiMagenta": "#a13865",
+ "terminal.ansiRed": "#ab5959",
+ "terminal.ansiWhite": "#dbd7caee",
+ "terminal.ansiYellow": "#bda437",
+ "gitDecoration.addedResourceForeground": "#1e754f",
+ "gitDecoration.modifiedResourceForeground": "#296aa3",
+ "gitDecoration.deletedResourceForeground": "#ab5959",
+ "gitDecoration.untrackedResourceForeground": "#2993a3",
+ "gitDecoration.ignoredResourceForeground": "#393a3450",
+ "gitDecoration.conflictingResourceForeground": "#a65e2b",
+ "gitDecoration.submoduleResourceForeground": "#393a3490",
+ "editorGutter.modifiedBackground": "#296aa3",
+ "editorGutter.addedBackground": "#1e754f",
+ "editorGutter.deletedBackground": "#ab5959",
+ "editorBracketHighlight.foreground1": "#2993a3",
+ "editorBracketHighlight.foreground2": "#1e754f",
+ "editorBracketHighlight.foreground3": "#a65e2b",
+ "editorBracketHighlight.foreground4": "#a13865",
+ "editorBracketHighlight.foreground5": "#bda437",
+ "editorBracketHighlight.foreground6": "#296aa3",
+ "debugToolBar.background": "#ffffff",
+ "editor.stackFrameHighlightBackground": "#fffbdd",
+ "editor.focusedStackFrameHighlightBackground": "#fff5b1",
+ "peekViewEditor.background": "#ffffff",
+ "peekViewResult.background": "#ffffff",
+ "settings.headerForeground": "#393a34",
+ "settings.modifiedItemIndicator": "#1c6b48",
+ "welcomePage.buttonBackground": "#f6f8fa",
+ "welcomePage.buttonHoverBackground": "#e1e4e8",
+ "problemsErrorIcon.foreground": "#ab5959",
+ "problemsWarningIcon.foreground": "#a65e2b",
+ "problemsInfoIcon.foreground": "#296aa3",
+ "editorError.foreground": "#ab5959",
+ "editorWarning.foreground": "#a65e2b",
+ "editorInfo.foreground": "#296aa3",
+ "editorHint.foreground": "#1e754f",
+ "editorGutter.commentRangeForeground": "#393a3450",
+ "editorGutter.foldingControlForeground": "#393a3490",
+ "editorInlayHint.foreground": "#999999",
+ "editorInlayHint.background": "#00000000",
+ "editorStickyScroll.background": "#f7f7f7",
+ "editorStickyScrollHover.background": "#f7f7f7"
+ },
+ "semanticHighlighting": true,
+ "semanticTokenColors": {
+ "namespace": "#b05a78",
+ "property": "#998418",
+ "interface": "#2e8f82",
+ "type": "#2e8f82",
+ "class": "#5a6aa6"
+ },
+ "tokenColors": [
+ {
+ "scope": [
+ "comment",
+ "punctuation.definition.comment",
+ "string.comment"
+ ],
+ "settings": {
+ "foreground": "#a0ada0"
+ }
+ },
+ {
+ "scope": [
+ "delimiter.bracket",
+ "delimiter",
+ "invalid.illegal.character-not-allowed-here.html",
+ "keyword.operator.rest",
+ "keyword.operator.spread",
+ "keyword.operator.type.annotation",
+ "keyword.operator.relational.ts",
+ "meta.brace",
+ "meta.tag.block.any.html",
+ "meta.tag.inline.any.html",
+ "meta.tag.structure.input.void.html",
+ "meta.type.annotation",
+ "storage.type.function.arrow",
+ "keyword.operator.type",
+ "meta.objectliteral.ts",
+ "punctuation"
+ ],
+ "settings": {
+ "foreground": "#999999"
+ }
+ },
+ {
+ "scope": [
+ "constant",
+ "entity.name.constant",
+ "variable.language",
+ "meta.definition.variable"
+ ],
+ "settings": {
+ "foreground": "#a65e2b"
+ }
+ },
+ {
+ "scope": [
+ "entity",
+ "entity.name"
+ ],
+ "settings": {
+ "foreground": "#59873a"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.tag",
+ "tag.html"
+ ],
+ "settings": {
+ "foreground": "#1e754f"
+ }
+ },
+ {
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#59873a"
+ }
+ },
+ {
+ "scope": [
+ "keyword",
+ "storage.type.class.jsdoc"
+ ],
+ "settings": {
+ "foreground": "#1e754f"
+ }
+ },
+ {
+ "scope": [
+ "storage",
+ "storage.type",
+ "support.type.builtin",
+ "constant.language.undefined",
+ "constant.language.null"
+ ],
+ "settings": {
+ "foreground": "#ab5959"
+ }
+ },
+ {
+ "scope": [
+ "storage.modifier.package",
+ "storage.modifier.import",
+ "storage.type.java"
+ ],
+ "settings": {
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": [
+ "string",
+ "string punctuation.section.embedded source",
+ "attribute.value"
+ ],
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.string",
+ "punctuation.support.type.property-name"
+ ],
+ "settings": {
+ "foreground": "#b56959aa"
+ }
+ },
+ {
+ "scope": "support",
+ "settings": {
+ "foreground": "#998418"
+ }
+ },
+ {
+ "scope": [
+ "property",
+ "meta.property-name",
+ "meta.object-literal.key",
+ "entity.name.tag.yaml",
+ "attribute.name"
+ ],
+ "settings": {
+ "foreground": "#998418"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name",
+ "invalid.deprecated.entity.other.attribute-name.html"
+ ],
+ "settings": {
+ "foreground": "#b07d48"
+ }
+ },
+ {
+ "scope": [
+ "variable",
+ "identifier"
+ ],
+ "settings": {
+ "foreground": "#b07d48"
+ }
+ },
+ {
+ "scope": [
+ "support.type.primitive",
+ "entity.name.type"
+ ],
+ "settings": {
+ "foreground": "#2e808f"
+ }
+ },
+ {
+ "scope": "namespace",
+ "settings": {
+ "foreground": "#b05a78"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator",
+ "meta.var.expr.ts"
+ ],
+ "settings": {
+ "foreground": "#ab5959"
+ }
+ },
+ {
+ "scope": "invalid.broken",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.deprecated",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.illegal",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "carriage-return",
+ "settings": {
+ "fontStyle": "italic underline",
+ "background": "#d73a49",
+ "foreground": "#fafbfc",
+ "content": "^M"
+ }
+ },
+ {
+ "scope": "message.error",
+ "settings": {
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "string source",
+ "settings": {
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": "string variable",
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": [
+ "source.regexp",
+ "string.regexp"
+ ],
+ "settings": {
+ "foreground": "#ab5e3f"
+ }
+ },
+ {
+ "scope": [
+ "string.regexp.character-class",
+ "string.regexp constant.character.escape",
+ "string.regexp source.ruby.embedded",
+ "string.regexp string.regexp.arbitrary-repitition"
+ ],
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": "string.regexp constant.character.escape",
+ "settings": {
+ "foreground": "#bda437"
+ }
+ },
+ {
+ "scope": [
+ "support.constant"
+ ],
+ "settings": {
+ "foreground": "#a65e2b"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "number"
+ ],
+ "settings": {
+ "foreground": "#2f798a"
+ }
+ },
+ {
+ "scope": [
+ "keyword.other.unit"
+ ],
+ "settings": {
+ "foreground": "#ab5959"
+ }
+ },
+ {
+ "scope": [
+ "constant.language.boolean",
+ "constant.language"
+ ],
+ "settings": {
+ "foreground": "#1e754f"
+ }
+ },
+ {
+ "scope": "meta.module-reference",
+ "settings": {
+ "foreground": "#1c6b48"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#a65e2b"
+ }
+ },
+ {
+ "scope": [
+ "markup.heading",
+ "markup.heading entity.name"
+ ],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#1c6b48"
+ }
+ },
+ {
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#2e8f82"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": "markup.raw",
+ "settings": {
+ "foreground": "#1c6b48"
+ }
+ },
+ {
+ "scope": [
+ "markup.deleted",
+ "meta.diff.header.from-file",
+ "punctuation.definition.deleted"
+ ],
+ "settings": {
+ "background": "#ffeef0",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": [
+ "markup.inserted",
+ "meta.diff.header.to-file",
+ "punctuation.definition.inserted"
+ ],
+ "settings": {
+ "background": "#f0fff4",
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "scope": [
+ "markup.changed",
+ "punctuation.definition.changed"
+ ],
+ "settings": {
+ "background": "#ffebda",
+ "foreground": "#e36209"
+ }
+ },
+ {
+ "scope": [
+ "markup.ignored",
+ "markup.untracked"
+ ],
+ "settings": {
+ "foreground": "#f6f8fa",
+ "background": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.diff.range",
+ "settings": {
+ "foreground": "#6f42c1",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.separator",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.output",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": [
+ "brackethighlighter.tag",
+ "brackethighlighter.curly",
+ "brackethighlighter.round",
+ "brackethighlighter.square",
+ "brackethighlighter.angle",
+ "brackethighlighter.quote"
+ ],
+ "settings": {
+ "foreground": "#586069"
+ }
+ },
+ {
+ "scope": "brackethighlighter.unmatched",
+ "settings": {
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": [
+ "constant.other.reference.link",
+ "string.other.link",
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown"
+ ],
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": [
+ "markup.underline.link.markdown"
+ ],
+ "settings": {
+ "foreground": "#393a3490",
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": [
+ "type.identifier"
+ ],
+ "settings": {
+ "foreground": "#5a6aa6"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name.html.vue"
+ ],
+ "settings": {
+ "foreground": "#59873a"
+ }
+ },
+ {
+ "scope": [
+ "invalid.illegal.unrecognized-tag.html"
+ ],
+ "settings": {
+ "fontStyle": "normal"
+ }
+ }
+ ],
+ "rules": [
+ {
+ "token": "comment",
+ "foreground": "a0ada0"
+ },
+ {
+ "token": "punctuation.definition.comment",
+ "foreground": "a0ada0"
+ },
+ {
+ "token": "string.comment",
+ "foreground": "a0ada0"
+ },
+ {
+ "token": "delimiter.bracket",
+ "foreground": "999999"
+ },
+ {
+ "token": "delimiter",
+ "foreground": "999999"
+ },
+ {
+ "token": "invalid.illegal.character-not-allowed-here.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.rest",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.spread",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.type.annotation",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.relational.ts",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.brace",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.tag.block.any.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.tag.inline.any.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.tag.structure.input.void.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.type.annotation",
+ "foreground": "999999"
+ },
+ {
+ "token": "storage.type.function.arrow",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.type",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.objectliteral.ts",
+ "foreground": "999999"
+ },
+ {
+ "token": "punctuation",
+ "foreground": "999999"
+ },
+ {
+ "token": "constant",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "entity.name.constant",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "variable.language",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "meta.definition.variable",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "entity",
+ "foreground": "59873a"
+ },
+ {
+ "token": "entity.name",
+ "foreground": "59873a"
+ },
+ {
+ "token": "variable.parameter.function",
+ "foreground": "393a34"
+ },
+ {
+ "token": "entity.name.tag",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "tag.html",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "entity.name.function",
+ "foreground": "59873a"
+ },
+ {
+ "token": "keyword",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "storage.type.class.jsdoc",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "storage",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "storage.type",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "support.type.builtin",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "constant.language.undefined",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "constant.language.null",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "storage.modifier.package",
+ "foreground": "393a34"
+ },
+ {
+ "token": "storage.modifier.import",
+ "foreground": "393a34"
+ },
+ {
+ "token": "storage.type.java",
+ "foreground": "393a34"
+ },
+ {
+ "token": "string",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string punctuation.section.embedded source",
+ "foreground": "b56959"
+ },
+ {
+ "token": "attribute.value",
+ "foreground": "b56959"
+ },
+ {
+ "token": "punctuation.definition.string",
+ "foreground": "b56959aa"
+ },
+ {
+ "token": "punctuation.support.type.property-name",
+ "foreground": "b56959aa"
+ },
+ {
+ "token": "support",
+ "foreground": "998418"
+ },
+ {
+ "token": "property",
+ "foreground": "998418"
+ },
+ {
+ "token": "meta.property-name",
+ "foreground": "998418"
+ },
+ {
+ "token": "meta.object-literal.key",
+ "foreground": "998418"
+ },
+ {
+ "token": "entity.name.tag.yaml",
+ "foreground": "998418"
+ },
+ {
+ "token": "attribute.name",
+ "foreground": "998418"
+ },
+ {
+ "token": "entity.other.attribute-name",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "invalid.deprecated.entity.other.attribute-name.html",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "variable",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "identifier",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "support.type.primitive",
+ "foreground": "2e808f"
+ },
+ {
+ "token": "entity.name.type",
+ "foreground": "2e808f"
+ },
+ {
+ "token": "namespace",
+ "foreground": "b05a78"
+ },
+ {
+ "token": "keyword.operator",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "meta.var.expr.ts",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "invalid.broken",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "invalid.deprecated",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "invalid.illegal",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "invalid.unimplemented",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "carriage-return",
+ "foreground": "fafbfc"
+ },
+ {
+ "token": "message.error",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "string source",
+ "foreground": "393a34"
+ },
+ {
+ "token": "string variable",
+ "foreground": "b56959"
+ },
+ {
+ "token": "source.regexp",
+ "foreground": "ab5e3f"
+ },
+ {
+ "token": "string.regexp",
+ "foreground": "ab5e3f"
+ },
+ {
+ "token": "string.regexp.character-class",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp source.ruby.embedded",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp string.regexp.arbitrary-repitition",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "bda437"
+ },
+ {
+ "token": "support.constant",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "constant.numeric",
+ "foreground": "2f798a"
+ },
+ {
+ "token": "number",
+ "foreground": "2f798a"
+ },
+ {
+ "token": "keyword.other.unit",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "constant.language.boolean",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "constant.language",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "meta.module-reference",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "punctuation.definition.list.begin.markdown",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "markup.heading",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "markup.heading entity.name",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "markup.quote",
+ "foreground": "2e8f82"
+ },
+ {
+ "token": "markup.italic",
+ "foreground": "393a34"
+ },
+ {
+ "token": "markup.bold",
+ "foreground": "393a34"
+ },
+ {
+ "token": "markup.raw",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "markup.deleted",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "meta.diff.header.from-file",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "punctuation.definition.deleted",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "markup.inserted",
+ "foreground": "22863a"
+ },
+ {
+ "token": "meta.diff.header.to-file",
+ "foreground": "22863a"
+ },
+ {
+ "token": "punctuation.definition.inserted",
+ "foreground": "22863a"
+ },
+ {
+ "token": "markup.changed",
+ "foreground": "e36209"
+ },
+ {
+ "token": "punctuation.definition.changed",
+ "foreground": "e36209"
+ },
+ {
+ "token": "markup.ignored",
+ "foreground": "f6f8fa"
+ },
+ {
+ "token": "markup.untracked",
+ "foreground": "f6f8fa"
+ },
+ {
+ "token": "meta.diff.range",
+ "foreground": "6f42c1"
+ },
+ {
+ "token": "meta.diff.header",
+ "foreground": "005cc5"
+ },
+ {
+ "token": "meta.separator",
+ "foreground": "005cc5"
+ },
+ {
+ "token": "meta.output",
+ "foreground": "005cc5"
+ },
+ {
+ "token": "brackethighlighter.tag",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.curly",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.round",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.square",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.angle",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.quote",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.unmatched",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "constant.other.reference.link",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.other.link",
+ "foreground": "b56959"
+ },
+ {
+ "token": "punctuation.definition.string.begin.markdown",
+ "foreground": "b56959"
+ },
+ {
+ "token": "punctuation.definition.string.end.markdown",
+ "foreground": "b56959"
+ },
+ {
+ "token": "markup.underline.link.markdown",
+ "foreground": "393a3490"
+ },
+ {
+ "token": "type.identifier",
+ "foreground": "5a6aa6"
+ },
+ {
+ "token": "entity.other.attribute-name.html.vue",
+ "foreground": "59873a"
+ },
+ {
+ "token": "invalid.illegal.unrecognized-tag.html"
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/src/learn/index.vue b/src/learn/index.vue
index 5d51dae..a91898f 100644
--- a/src/learn/index.vue
+++ b/src/learn/index.vue
@@ -3,7 +3,7 @@ import Md from "./step-1/index.md"
import Monaco from "../shared/monaco/index.vue"
const route = useRoute()
-console.log(route.params.step)
+// console.log(route.params.step)
const code = ref("")
@@ -19,6 +19,7 @@ function change(value: string) {
{{ code }}
+
diff --git a/src/main.ts b/src/main.ts
index ede565b..9127565 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,6 +1,7 @@
import { createRouter, createWebHistory } from "vue-router"
import { createPinia } from "pinia"
import "normalize.css"
+import "element-plus/theme-chalk/dark/css-vars.css"
import loader from "@monaco-editor/loader"
import storage from "utils/storage"
@@ -9,7 +10,7 @@ import { STORAGE_KEY } from "utils/constants"
import { routes } from "./routes"
import App from "./App.vue"
-import { useLoginStore } from "~/shared/store/login"
+import { toggleLogin } from "./shared/composables/modal"
const router = createRouter({
history: createWebHistory(),
@@ -19,8 +20,7 @@ const router = createRouter({
router.beforeEach((to, from, next) => {
if (to.matched.some((record) => record.meta.requiresAuth)) {
if (!storage.get(STORAGE_KEY.AUTHED)) {
- const login = useLoginStore()
- login.show()
+ toggleLogin(true)
next("/")
} else {
next()
@@ -32,9 +32,14 @@ router.beforeEach((to, from, next) => {
const pinia = createPinia()
-Promise.all([loader.init(), fetch("/dracula.json")]).then(([monaco, dark]) => {
+loader.init().then((monaco) => {
window.monaco = monaco
- dark.json().then((data) => monaco.editor.defineTheme("dark", data))
+ fetch("/dark.json").then((data) =>
+ data.json().then((theme) => monaco.editor.defineTheme("dark", theme))
+ )
+ fetch("/light.json").then((data) =>
+ data.json().then((theme) => monaco.editor.defineTheme("light", theme))
+ )
})
loader.config({
diff --git a/src/oj/problem/components/Editor.vue b/src/oj/problem/components/Editor.vue
index ec25009..05062de 100644
--- a/src/oj/problem/components/Editor.vue
+++ b/src/oj/problem/components/Editor.vue
@@ -1,10 +1,10 @@
@@ -46,7 +43,7 @@ function goSignup() {
style="max-width: 400px"
:close-on-click-modal="false"
:close-on-press-escape="false"
- v-model="loginStore.visible"
+ v-model="loginModal"
title="登录"
>
{
+ window.monaco.editor.setTheme(isDark.value ? "dark" : "light")
+ })
})
onUnmounted(() => {
diff --git a/src/shared/Signup/index.vue b/src/shared/Signup/index.vue
index 0e131e2..58584b3 100644
--- a/src/shared/Signup/index.vue
+++ b/src/shared/Signup/index.vue
@@ -1,13 +1,12 @@
diff --git a/src/shared/composables/dark.ts b/src/shared/composables/dark.ts
new file mode 100644
index 0000000..61e0f50
--- /dev/null
+++ b/src/shared/composables/dark.ts
@@ -0,0 +1,2 @@
+export const isDark = useDark({ storageKey: "theme-appearance" })
+export const toggleDark = useToggle(isDark)
diff --git a/src/shared/composables/modal.ts b/src/shared/composables/modal.ts
new file mode 100644
index 0000000..b824451
--- /dev/null
+++ b/src/shared/composables/modal.ts
@@ -0,0 +1,2 @@
+export const [loginModal, toggleLogin] = useToggle()
+export const [signupModal, toggleSignup] = useToggle()
diff --git a/src/shared/monaco/index.vue b/src/shared/monaco/index.vue
index 3bbe25c..3c2121b 100644
--- a/src/shared/monaco/index.vue
+++ b/src/shared/monaco/index.vue
@@ -3,6 +3,7 @@ import type * as Monaco from "monaco-editor"
import { LANGUAGE_VALUE } from "utils/constants"
import { LANGUAGE } from "utils/types"
import { isMobile } from "utils/breakpoints"
+import { isDark } from "../composables/dark"
interface Props {
value: string
@@ -35,7 +36,7 @@ onMounted(function () {
editor = window.monaco.editor.create(monacoEditorRef.value, {
model,
- theme: "dark", // 官方自带三种主题vs, hc-black, or vs-dark
+ theme: isDark.value ? "dark" : "light", // 官方自带三种主题vs, hc-black, or vs-dark
minimap: {
enabled: false,
},
@@ -78,6 +79,10 @@ onMounted(function () {
model.setValue(props.value)
}
})
+
+ watchEffect(() => {
+ window.monaco.editor.setTheme(isDark.value ? "dark" : "light")
+ })
})
onUnmounted(() => {
diff --git a/src/shared/store/login.ts b/src/shared/store/login.ts
deleted file mode 100644
index bea14b4..0000000
--- a/src/shared/store/login.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export const useLoginStore = defineStore("login", () => {
- const [visible] = useToggle()
-
- function show() {
- visible.value = true
- }
-
- function hide() {
- visible.value = false
- }
-
- return { visible, show, hide }
-})
diff --git a/src/shared/store/signup.ts b/src/shared/store/signup.ts
deleted file mode 100644
index 66a75f9..0000000
--- a/src/shared/store/signup.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export const useSignupStore = defineStore("signup", () => {
- const [visible] = useToggle()
-
- function show() {
- visible.value = true
- }
-
- function hide() {
- visible.value = false
- }
-
- return { visible, show, hide }
-})