├── .vscode ├── settings.json └── launch.json ├── .npmrc ├── src ├── themes │ ├── index.ts │ ├── light.ts │ └── dark.ts ├── vim-palettes │ ├── index.ts │ ├── light.ts │ └── dark.ts ├── tsconfig.json ├── types │ ├── vim-paeltte.ts │ ├── palette.ts │ ├── vscode-palette.ts │ └── vscode-theme.ts ├── main.ts ├── .eslintrc.js └── color.ts ├── assets └── icon.png ├── .prettierrc.js ├── README.md ├── LICENSE.txt ├── package.json ├── CHANGELOG.md ├── .gitignore └── themes ├── iceberg.color-theme.json └── iceberg-light.color-theme.json /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | } -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /src/themes/index.ts: -------------------------------------------------------------------------------- 1 | export * as Dark from './dark'; 2 | export * as Light from './light'; 3 | -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocopon/vscode-iceberg-theme/HEAD/assets/icon.png -------------------------------------------------------------------------------- /src/vim-palettes/index.ts: -------------------------------------------------------------------------------- 1 | export * as Dark from './dark'; 2 | export * as Light from './light'; 3 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | arrowParens: 'always', 3 | bracketSpacing: false, 4 | singleQuote: true, 5 | trailingComma: 'all', 6 | useTabs: true, 7 | }; 8 | -------------------------------------------------------------------------------- /src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": [ 4 | "es2015" 5 | ], 6 | "noImplicitAny": true, 7 | "noUnusedLocals": true, 8 | "noUnusedParameters": true, 9 | "outDir": "../tmp", 10 | "strictNullChecks": true, 11 | "target": "es5" 12 | }, 13 | "include": ["./**/*.ts"] 14 | } 15 | -------------------------------------------------------------------------------- /src/types/vim-paeltte.ts: -------------------------------------------------------------------------------- 1 | import {Bg, BgFg, Palette} from './palette'; 2 | import {Color} from '../color'; 3 | 4 | export interface VimPalette extends Palette { 5 | comment: Color; 6 | cursorlinenr: BgFg; 7 | linenr: BgFg; 8 | matchparen: Bg; 9 | normal: BgFg; 10 | statuslinenc: BgFg; 11 | visual: Color; 12 | whitespace: Color; 13 | } 14 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that launches the extension inside a new window 2 | { 3 | "version": "0.1.0", 4 | "configurations": [ 5 | { 6 | "name": "Launch Extension", 7 | "type": "extensionHost", 8 | "request": "launch", 9 | "runtimeExecutable": "${execPath}", 10 | "args": ["--extensionDevelopmentPath=${workspaceRoot}" ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import * as Fs from 'fs'; 2 | 3 | import * as VimPalettes from './vim-palettes'; 4 | import * as Themes from './themes'; 5 | import * as Theme from './types/vscode-theme'; 6 | 7 | { 8 | Fs.writeFileSync( 9 | 'themes/iceberg.color-theme.json', 10 | Theme.stringify( 11 | Themes.Dark.create(VimPalettes.Dark.toVscode(VimPalettes.Dark.Palette)), 12 | ), 13 | ); 14 | Fs.writeFileSync( 15 | 'themes/iceberg-light.color-theme.json', 16 | Theme.stringify( 17 | Themes.Light.create( 18 | VimPalettes.Light.toVscode(VimPalettes.Light.Palette), 19 | ), 20 | ), 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/themes/light.ts: -------------------------------------------------------------------------------- 1 | import {VscodePalette} from '../types/vscode-palette'; 2 | import {VscodeTheme} from '../types/vscode-theme'; 3 | import * as Dark from './dark'; 4 | 5 | export function create(palette: VscodePalette): VscodeTheme { 6 | const p = palette; 7 | const t = Dark.create(p); 8 | 9 | t.name = 'Iceberg Light'; 10 | t.colors['editor.wordHighlightBackground'] = p.colors.blue.withAlpha(0.15); 11 | t.colors['editor.wordHighlightStrongBackground'] = 12 | p.colors.blue.withAlpha(0.3); 13 | t.colors['sideBarSectionHeader.background'] = p.titleBar.active.bg; 14 | 15 | return t; 16 | } 17 | -------------------------------------------------------------------------------- /src/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: [ 3 | 'eslint:recommended', 4 | 'plugin:@typescript-eslint/eslint-recommended', 5 | 'plugin:@typescript-eslint/recommended', 6 | 'plugin:prettier/recommended', 7 | 'prettier/@typescript-eslint', 8 | ], 9 | parser: '@typescript-eslint/parser', 10 | plugins: ['@typescript-eslint'], 11 | root: true, 12 | rules: { 13 | camelcase: 'off', 14 | 'no-unused-vars': 'off', 15 | 'sort-imports': 'off', 16 | 17 | 'prettier/prettier': 'error', 18 | '@typescript-eslint/explicit-function-return-type': 'off', 19 | '@typescript-eslint/no-empty-function': 'off', 20 | '@typescript-eslint/no-explicit-any': 'off', 21 | '@typescript-eslint/no-unused-vars': ['error', {argsIgnorePattern: '^_'}], 22 | }, 23 | }; 24 | -------------------------------------------------------------------------------- /src/types/palette.ts: -------------------------------------------------------------------------------- 1 | import {Color} from '../color'; 2 | 3 | export interface Bg { 4 | bg: Color; 5 | } 6 | export interface Fg { 7 | fg: Color; 8 | } 9 | export type BgFg = Bg & Fg; 10 | 11 | export interface Palette { 12 | colors: { 13 | red: Color; 14 | orange: Color; 15 | green: Color; 16 | lblue: Color; 17 | blue: Color; 18 | purple: Color; 19 | }; 20 | tints: { 21 | blue: BgFg; 22 | green: BgFg; 23 | lblue: BgFg; 24 | purple: BgFg; 25 | red: BgFg; 26 | }; 27 | ansi: { 28 | black: Color; 29 | blue: Color; 30 | cyan: Color; 31 | green: Color; 32 | magenta: Color; 33 | red: Color; 34 | white: Color; 35 | yellow: Color; 36 | 37 | brightBlack: Color; 38 | brightBlue: Color; 39 | brightCyan: Color; 40 | brightGreen: Color; 41 | brightMagenta: Color; 42 | brightRed: Color; 43 | brightWhite: Color; 44 | brightYellow: Color; 45 | }; 46 | } 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Iceberg for Visual Studio Code 2 | 3 | [![Version](https://img.shields.io/visual-studio-marketplace/v/cocopon.iceberg-theme?color=84a0c6)](https://marketplace.visualstudio.com/items?itemName=cocopon.iceberg-theme) 4 | [![Downloads](https://img.shields.io/visual-studio-marketplace/d/cocopon.iceberg-theme?color=84a0c6)](https://marketplace.visualstudio.com/items?itemName=cocopon.iceberg-theme) 5 | 6 | Iceberg is a bluish color theme, originally for Vim. This theme is the official port of Iceberg. See the [official page](https://cocopon.github.io/iceberg.vim/) for more information. 7 | 8 | ![screenshot](https://user-images.githubusercontent.com/602961/102950992-2dca7100-450f-11eb-85fc-6f381ecdbe2f.jpg) 9 | 10 | 11 | # Building your own Iceberg 12 | 1. Install dependencies 13 | ``` 14 | % npm install 15 | ``` 16 | 2. Edit source files (`src/**/*.ts`) 17 | 3. Compile them 18 | ``` 19 | % npm run build 20 | ``` 21 | -------------------------------------------------------------------------------- /src/types/vscode-palette.ts: -------------------------------------------------------------------------------- 1 | import {Color} from '../color'; 2 | import {Bg, BgFg, Fg, Palette} from './palette'; 3 | 4 | export interface VscodePalette extends Palette { 5 | editor: BgFg & { 6 | bracketMatch: Bg; 7 | gutter: BgFg & { 8 | active: Fg; 9 | }; 10 | lineHighlight: Bg; 11 | selection: Bg; 12 | whitespace: Fg; 13 | }; 14 | floating: Bg & { 15 | list: { 16 | selection: BgFg; 17 | }; 18 | separator: Color; 19 | shadow: Color; 20 | }; 21 | fold: Bg; 22 | input: BgFg; 23 | list: { 24 | activeSelection: BgFg; 25 | focus: BgFg; 26 | hover: Bg; 27 | inactiveSelection: Bg; 28 | }; 29 | menubar: { 30 | selection: BgFg; 31 | }; 32 | overlaySelection: Color; 33 | statusBar: BgFg & { 34 | item: { 35 | hover: Bg; 36 | }; 37 | }; 38 | tab: { 39 | active: BgFg; 40 | hover: Bg; 41 | inactive: BgFg; 42 | unfocusedActive: Fg; 43 | unfocusedInactive: Fg; 44 | }; 45 | titleBar: { 46 | active: BgFg; 47 | inactive: BgFg; 48 | }; 49 | tokens: { 50 | comment: Color; 51 | }; 52 | } 53 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 cocopon 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "iceberg-theme", 3 | "displayName": "Iceberg Theme", 4 | "description": "Bluish color theme", 5 | "version": "2.0.6", 6 | "publisher": "cocopon", 7 | "license": "MIT", 8 | "homepage": "https://cocopon.github.io/iceberg.vim/", 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/cocopon/vscode-iceberg-theme.git" 12 | }, 13 | "engines": { 14 | "vscode": "^1.11.0" 15 | }, 16 | "icon": "assets/icon.png", 17 | "galleryBanner": { 18 | "color": "#161821", 19 | "theme": "dark" 20 | }, 21 | "categories": [ 22 | "Themes" 23 | ], 24 | "contributes": { 25 | "themes": [ 26 | { 27 | "label": "Iceberg", 28 | "uiTheme": "vs-dark", 29 | "path": "./themes/iceberg.color-theme.json" 30 | }, 31 | { 32 | "label": "Iceberg Light", 33 | "uiTheme": "vs", 34 | "path": "./themes/iceberg-light.color-theme.json" 35 | } 36 | ] 37 | }, 38 | "scripts": { 39 | "test": "npm run lint", 40 | "build": "tsc --build src/tsconfig.json && node tmp/main.js", 41 | "format": "eslint --config src/.eslintrc.js --ext .ts --fix 'src/**/*.ts'", 42 | "lint": "eslint --config src/.eslintrc.js --ext .ts 'src/**/*.ts'", 43 | "watch": "onchange --initial --kill \"src/**/*.ts\" -- npm run build" 44 | }, 45 | "private": true, 46 | "devDependencies": { 47 | "@types/chroma-js": "^2.1.2", 48 | "@types/node": "^14.14.14", 49 | "@typescript-eslint/eslint-plugin": "^4.10.0", 50 | "@typescript-eslint/parser": "^4.10.0", 51 | "chroma-js": "^2.1.0", 52 | "eslint": "^7.16.0", 53 | "eslint-config-prettier": "^7.1.0", 54 | "eslint-plugin-prettier": "^3.3.0", 55 | "onchange": "^7.1.0", 56 | "prettier": "^2.2.1", 57 | "typescript": "^4.1.3" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/color.ts: -------------------------------------------------------------------------------- 1 | import * as Chroma from 'chroma-js'; 2 | 3 | interface Adjustment { 4 | hue?: number; 5 | saturation?: number; 6 | lightness?: number; 7 | } 8 | 9 | export class Color { 10 | private hex_: string; 11 | 12 | constructor(hex: string) { 13 | this.hex_ = hex; 14 | } 15 | 16 | public hex(): string { 17 | return this.hex_; 18 | } 19 | 20 | public withAlpha(alpha: number): Color { 21 | const rgbComps = Chroma(this.hex_).rgb(); 22 | const hex = Chroma(rgbComps[0], rgbComps[1], rgbComps[2], 'rgb') 23 | .alpha(alpha) 24 | .hex(); 25 | return new Color(hex); 26 | } 27 | 28 | public adjust(adjustment: Adjustment): Color { 29 | const dh = adjustment.hue || 0; 30 | const ds = adjustment.saturation || 0; 31 | const dl = adjustment.lightness || 0; 32 | const hslComps = Chroma(this.hex_).hsl(); 33 | const hex = Chroma( 34 | hslComps[0] + dh, 35 | hslComps[1] + ds, 36 | hslComps[2] + dl, 37 | 'hsl', 38 | ).hex(); 39 | return new Color(hex); 40 | } 41 | 42 | public darken(amount: number): Color { 43 | return this.adjust({ 44 | lightness: -amount, 45 | }); 46 | } 47 | 48 | public lighten(amount: number): Color { 49 | return this.adjust({ 50 | lightness: amount, 51 | }); 52 | } 53 | 54 | static transparent(): Color { 55 | return new Color('#00000000'); 56 | } 57 | 58 | static hsl(h: number, s: number, l: number): Color { 59 | const hex = Chroma(h, s, l, 'hsl').hex(); 60 | return new Color(hex); 61 | } 62 | 63 | static mix(c1: Color, c2: Color, weight: number): Color { 64 | const rgbComps1 = Chroma(c1.hex()).rgb(); 65 | const rgbComps2 = Chroma(c2.hex()).rgb(); 66 | const w1 = weight; 67 | const w2 = 1 - weight; 68 | const hex = Chroma( 69 | rgbComps1[0] * w1 + rgbComps2[0] * w2, 70 | rgbComps1[1] * w1 + rgbComps2[1] * w2, 71 | rgbComps1[2] * w1 + rgbComps2[2] * w2, 72 | 'rgb', 73 | ).hex(); 74 | return new Color(hex); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | 4 | # 2.0.6 5 | - Added colors for editor action list 6 | 7 | 8 | # 2.0.5 9 | - Enabled semantic highlighting 10 | 11 | 12 | # 2.0.4 13 | - Added support for terminal command decorations 14 | - Fine-tuned window background color 15 | 16 | 17 | # 2.0.3 18 | - Added support for bracket highlight 19 | - Added support for status bar error item 20 | 21 | 22 | # 2.0.2 23 | - Applied the latest change of list color 24 | 25 | 26 | # 2.0.1 27 | - Added missing colors for debugging 28 | 29 | 30 | # 2.0.0 31 | - Added light theme (big thanks to [gkeep](https://github.com/gkeep)) 32 | - Generated themes from palettes 33 | - Added some missing colors: debug toolbar, git decorations, editor widgets, etc. 34 | - Added some minor improvements 35 | 36 | 37 | # 1.1.1 38 | - Improved contrast 39 | 40 | 41 | # 1.1.0 42 | - Added color for fold background 43 | 44 | 45 | # 1.0.1 46 | - Added colors for symbol icons 47 | - Added colors for light bulbs 48 | - Added colors for info / warning / error icons 49 | - Added some minor improvements 50 | 51 | 52 | # 1.0.0 53 | - Improved visibility of activity bar items 54 | - Added color for gutter background 55 | - Added missing color for Git 56 | - Added colors: debugToolBar, inputOption, etc. 57 | - Fixed status bar color 58 | 59 | 60 | # 0.1.0 61 | - Added colors for QuickInput, PeekView, etc. 62 | - Added some minor improvements 63 | 64 | 65 | # 0.0.7 66 | - Updated title and status bar colors 67 | - Added styles for menu 68 | - Added styles for breadcrumb 69 | - Added some minor improvements 70 | 71 | 72 | ## 0.0.6 73 | - Added missing HTML tag colors 74 | 75 | 76 | ## 0.0.5 77 | - Updated gutter and overview ruler colors 78 | - Fine-tuned border colors 79 | - Set up drop background colors 80 | - Added some minor improvements 81 | 82 | 83 | ## 0.0.4 84 | - Added error and warning colors for list 85 | 86 | 87 | ## 0.0.3 88 | - Added colors for activity bar 89 | 90 | 91 | ## 0.0.2 92 | - Updated coloration 93 | - Resolved some errors 94 | 95 | 96 | ## 0.0.1 97 | - Initial release 98 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tmp/ 2 | 3 | ### https://raw.github.com/github/gitignore/e9c3096114fd81b92cf989f7343d7b168b80d994/Global/macOS.gitignore 4 | 5 | # General 6 | .DS_Store 7 | .AppleDouble 8 | .LSOverride 9 | 10 | # Thumbnails 11 | ._* 12 | 13 | # Files that might appear in the root of a volume 14 | .DocumentRevisions-V100 15 | .fseventsd 16 | .Spotlight-V100 17 | .TemporaryItems 18 | .Trashes 19 | .VolumeIcon.icns 20 | .com.apple.timemachine.donotpresent 21 | 22 | # Directories potentially created on remote AFP share 23 | .AppleDB 24 | .AppleDesktop 25 | Network Trash Folder 26 | Temporary Items 27 | .apdisk 28 | 29 | 30 | ### https://raw.github.com/github/gitignore/50e42aa1064d004a5c99eaa72a2d8054a0d8de55/Node.gitignore 31 | 32 | # Logs 33 | logs 34 | *.log 35 | npm-debug.log* 36 | yarn-debug.log* 37 | yarn-error.log* 38 | lerna-debug.log* 39 | 40 | # Diagnostic reports (https://nodejs.org/api/report.html) 41 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 42 | 43 | # Runtime data 44 | pids 45 | *.pid 46 | *.seed 47 | *.pid.lock 48 | 49 | # Directory for instrumented libs generated by jscoverage/JSCover 50 | lib-cov 51 | 52 | # Coverage directory used by tools like istanbul 53 | coverage 54 | *.lcov 55 | 56 | # nyc test coverage 57 | .nyc_output 58 | 59 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 60 | .grunt 61 | 62 | # Bower dependency directory (https://bower.io/) 63 | bower_components 64 | 65 | # node-waf configuration 66 | .lock-wscript 67 | 68 | # Compiled binary addons (https://nodejs.org/api/addons.html) 69 | build/Release 70 | 71 | # Dependency directories 72 | node_modules/ 73 | jspm_packages/ 74 | 75 | # TypeScript v1 declaration files 76 | typings/ 77 | 78 | # TypeScript cache 79 | *.tsbuildinfo 80 | 81 | # Optional npm cache directory 82 | .npm 83 | 84 | # Optional eslint cache 85 | .eslintcache 86 | 87 | # Optional REPL history 88 | .node_repl_history 89 | 90 | # Output of 'npm pack' 91 | *.tgz 92 | 93 | # Yarn Integrity file 94 | .yarn-integrity 95 | 96 | # dotenv environment variables file 97 | .env 98 | .env.test 99 | 100 | # parcel-bundler cache (https://parceljs.org/) 101 | .cache 102 | 103 | # next.js build output 104 | .next 105 | 106 | # nuxt.js build output 107 | .nuxt 108 | 109 | # vuepress build output 110 | .vuepress/dist 111 | 112 | # Serverless directories 113 | .serverless/ 114 | 115 | # FuseBox cache 116 | .fusebox/ 117 | 118 | # DynamoDB Local files 119 | .dynamodb/ 120 | 121 | 122 | -------------------------------------------------------------------------------- /src/vim-palettes/light.ts: -------------------------------------------------------------------------------- 1 | import {VimPalette} from '../types/vim-paeltte'; 2 | import {VscodePalette} from '../types/vscode-palette'; 3 | import {Color} from '../color'; 4 | import * as Dark from './dark'; 5 | 6 | const hues = { 7 | base: 230, 8 | red: 340, 9 | orange: 25, 10 | green: 90, 11 | lblue: 200, 12 | blue: 220, 13 | purple: 260, 14 | }; 15 | const colors = { 16 | blue: Color.hsl(hues.blue, 0.55 + 0.01, 0.4 - 0.002), 17 | green: Color.hsl(hues.green, 0.4, 0.4 - 0.001), 18 | lblue: Color.hsl(hues.lblue, 0.45, 0.45 - 0.002), 19 | orange: Color.hsl(hues.orange, 0.55, 0.5 - 0.002), 20 | purple: Color.hsl(hues.purple, 0.38, 0.53 - 0.002), 21 | red: Color.hsl(hues.red, 0.55, 0.56 - 0.001), 22 | }; 23 | const normal = { 24 | bg: Color.hsl(hues.base, 0.1 + 0.01, 0.92 - 0.002), 25 | fg: Color.hsl(hues.base, 0.2, 0.249), 26 | }; 27 | const tints = { 28 | blue: { 29 | bg: Color.mix(colors.blue, normal.bg, 0.15), 30 | fg: Color.mix(colors.blue, normal.bg, 0.4), 31 | }, 32 | green: { 33 | bg: Color.mix(colors.green, normal.bg, 0.15), 34 | fg: Color.mix(colors.green, normal.bg, 0.4), 35 | }, 36 | lblue: { 37 | bg: Color.mix(colors.lblue, normal.bg, 0.15), 38 | fg: Color.mix(colors.lblue, normal.bg, 0.4), 39 | }, 40 | purple: { 41 | bg: Color.mix(colors.purple, normal.bg, 0.15), 42 | fg: Color.mix(colors.purple, normal.bg, 0.4), 43 | }, 44 | red: { 45 | bg: Color.mix(colors.red, normal.bg, 0.15), 46 | fg: Color.mix(colors.red, normal.bg, 0.4), 47 | }, 48 | }; 49 | const comment = Color.hsl(hues.base, 0.15, 0.58 - 0.0022); 50 | 51 | const linenrBg = normal.bg.adjust({ 52 | saturation: 0.1, 53 | lightness: -0.03 - 0.003, 54 | }); 55 | const linenr = { 56 | bg: linenrBg, 57 | fg: linenrBg.darken(0.2 + 0.001), 58 | }; 59 | const cursorlinenr = { 60 | bg: linenr.bg.adjust({ 61 | saturation: 0.05 - 0.008, 62 | lightness: -0.05 - 0.003, 63 | }), 64 | fg: linenr.fg.adjust({ 65 | saturation: 0.1, 66 | lightness: -0.2, 67 | }), 68 | }; 69 | const statuslinenc = { 70 | bg: cursorlinenr.bg, 71 | fg: cursorlinenr.bg.darken(0.2), 72 | }; 73 | 74 | export const Palette: VimPalette = { 75 | colors: colors, 76 | tints: tints, 77 | 78 | comment: comment, 79 | visual: normal.bg.adjust({ 80 | saturation: 0.05, 81 | lightness: -0.1, 82 | }), 83 | 84 | matchparen: { 85 | bg: normal.bg.darken(0.15), 86 | }, 87 | normal: normal, 88 | cursorlinenr: cursorlinenr, 89 | linenr: linenr, 90 | statuslinenc: statuslinenc, 91 | whitespace: normal.bg.adjust({ 92 | saturation: 0.08, 93 | lightness: -0.09 - 0.002, 94 | }), 95 | 96 | ansi: { 97 | black: linenr.bg, 98 | blue: colors.blue, 99 | cyan: colors.lblue, 100 | green: colors.green, 101 | magenta: colors.purple, 102 | red: colors.red, 103 | white: normal.fg, 104 | yellow: colors.orange, 105 | 106 | brightBlack: comment, 107 | brightBlue: colors.blue.adjust({ 108 | saturation: 0.05 + 0.005, 109 | lightness: -0.05 - 0.002, 110 | }), 111 | brightCyan: colors.lblue.adjust({ 112 | saturation: 0.05 + 0.005, 113 | lightness: -0.05 - 0.002, 114 | }), 115 | brightGreen: colors.green.adjust({ 116 | saturation: 0.05 + 0.002, 117 | lightness: -0.05 - 0.002, 118 | }), 119 | brightMagenta: colors.purple.adjust({ 120 | saturation: 0.05, 121 | lightness: -0.05 - 0.002, 122 | }), 123 | brightRed: colors.red.adjust({ 124 | saturation: 0.05 - 0.005, 125 | lightness: -0.05 - 0.002, 126 | }), 127 | brightWhite: normal.fg.adjust({ 128 | saturation: 0.05, 129 | lightness: -0.05, 130 | }), 131 | brightYellow: colors.orange.adjust({ 132 | saturation: 0.05, 133 | lightness: -0.05 - 0.002, 134 | }), 135 | }, 136 | }; 137 | 138 | export function toVscode(p: VimPalette): VscodePalette { 139 | const o = Dark.toVscode(p); 140 | o.floating.separator = p.comment.withAlpha(0.3); 141 | o.floating.shadow = Color.hsl(hues.base, 0.3, 0.3).withAlpha(0.3); 142 | o.overlaySelection = Color.hsl(hues.base, 0.17, 0.73).withAlpha(0.4); 143 | return o; 144 | } 145 | -------------------------------------------------------------------------------- /src/vim-palettes/dark.ts: -------------------------------------------------------------------------------- 1 | import {VimPalette} from '../types/vim-paeltte'; 2 | import {VscodePalette} from '../types/vscode-palette'; 3 | import {Color} from '../color'; 4 | 5 | const hues = { 6 | base: 230, 7 | red: 0, 8 | orange: 25, 9 | green: 70, 10 | lblue: 190, 11 | blue: 215, 12 | purple: 255, 13 | }; 14 | const colors = { 15 | blue: Color.hsl(hues.blue, 0.37, 0.65 - 0.002), 16 | green: Color.hsl(hues.green, 0.32, 0.63 - 0.002), 17 | lblue: Color.hsl(hues.lblue, 0.32, 0.65 - 0.002), 18 | orange: Color.hsl(hues.orange, 0.65, 0.68 - 0.002), 19 | purple: Color.hsl(hues.purple, 0.32, 0.68 - 0.002), 20 | red: Color.hsl(hues.red, 0.65, 0.68), 21 | }; 22 | const normal = { 23 | bg: Color.hsl(hues.base, 0.2, 0.11 - 0.002), 24 | fg: Color.hsl(hues.base, 0.1, 0.8 - 0.002), 25 | }; 26 | const tints = { 27 | blue: { 28 | bg: Color.mix(colors.blue, normal.bg, 0.3), 29 | fg: Color.mix(colors.blue, normal.bg, 0.3), 30 | }, 31 | green: { 32 | bg: Color.mix(colors.green, normal.bg, 0.3), 33 | fg: Color.mix(colors.green, normal.bg, 0.3), 34 | }, 35 | lblue: { 36 | bg: Color.mix(colors.lblue, normal.bg, 0.3), 37 | fg: Color.mix(colors.lblue, normal.bg, 0.3), 38 | }, 39 | purple: { 40 | bg: Color.mix(colors.purple, normal.bg, 0.3), 41 | fg: Color.mix(colors.purple, normal.bg, 0.3), 42 | }, 43 | red: { 44 | bg: Color.mix(colors.red, normal.bg, 0.3), 45 | fg: Color.mix(colors.red, normal.bg, 0.3), 46 | }, 47 | }; 48 | const comment = Color.hsl(hues.base, 0.12, 0.48 - 0.002); 49 | 50 | const linenrBg = normal.bg.adjust({ 51 | saturation: 0.05, 52 | lightness: 0.05 - 0.002, 53 | }); 54 | const linenr = { 55 | bg: linenrBg, 56 | fg: linenrBg.lighten(0.2 - 0.002), 57 | }; 58 | const cursorlinenr = { 59 | bg: linenr.bg.adjust({ 60 | saturation: 0.1, 61 | lightness: 0.1 - 0.002, 62 | }), 63 | fg: linenr.fg.adjust({ 64 | saturation: 0.1 - 0.01, 65 | lightness: 0.5 - 0.0018, 66 | }), 67 | }; 68 | const statuslinenc = { 69 | bg: normal.bg.darken(0.03 + 0.002), 70 | fg: normal.bg.lighten(0.2), 71 | }; 72 | 73 | export const Palette: VimPalette = { 74 | colors: colors, 75 | tints: tints, 76 | 77 | comment: comment, 78 | visual: normal.bg.adjust({ 79 | saturation: 0.05, 80 | lightness: 0.1 - 0.002, 81 | }), 82 | 83 | matchparen: { 84 | bg: normal.bg.lighten(0.2), 85 | }, 86 | normal: normal, 87 | cursorlinenr: cursorlinenr, 88 | linenr: linenr, 89 | statuslinenc: statuslinenc, 90 | whitespace: normal.bg.adjust({ 91 | saturation: 0.08, 92 | lightness: 0.09 - 0.002, 93 | }), 94 | 95 | ansi: { 96 | black: linenr.bg, 97 | blue: colors.blue, 98 | cyan: colors.lblue, 99 | green: colors.green, 100 | magenta: colors.purple, 101 | red: colors.red, 102 | white: normal.fg, 103 | yellow: colors.orange, 104 | 105 | brightBlack: comment, 106 | brightBlue: colors.blue.adjust({ 107 | saturation: 0.05 - 0.002, 108 | lightness: 0.05 - 0.002, 109 | }), 110 | brightCyan: colors.lblue.adjust({ 111 | saturation: 0.05, 112 | lightness: 0.05 - 0.002, 113 | }), 114 | brightGreen: colors.green.adjust({ 115 | saturation: 0.05, 116 | lightness: 0.05 - 0.003, 117 | }), 118 | brightMagenta: colors.purple.adjust({ 119 | saturation: 0.05, 120 | lightness: 0.05, 121 | }), 122 | brightRed: colors.red.adjust({ 123 | saturation: 0.05 - 0.005, 124 | lightness: 0.05 - 0.002, 125 | }), 126 | brightWhite: normal.fg.adjust({ 127 | saturation: 0.05, 128 | lightness: 0.05, 129 | }), 130 | brightYellow: colors.orange.adjust({ 131 | saturation: 0.05 - 0.004, 132 | lightness: 0.05 - 0.0028, 133 | }), 134 | }, 135 | }; 136 | 137 | export function toVscode(p: VimPalette): VscodePalette { 138 | const windowBg = p.statuslinenc.bg.darken(0.005); 139 | return { 140 | colors: p.colors, 141 | tints: p.tints, 142 | ansi: p.ansi, 143 | 144 | editor: { 145 | bg: p.normal.bg, 146 | bracketMatch: { 147 | bg: p.matchparen.bg, 148 | }, 149 | fg: p.normal.fg, 150 | gutter: { 151 | active: { 152 | fg: p.cursorlinenr.fg, 153 | }, 154 | bg: p.linenr.bg, 155 | fg: p.linenr.fg, 156 | }, 157 | lineHighlight: { 158 | bg: p.linenr.bg, 159 | }, 160 | selection: { 161 | bg: p.visual, 162 | }, 163 | whitespace: { 164 | fg: p.whitespace, 165 | }, 166 | }, 167 | floating: { 168 | bg: p.linenr.bg, 169 | list: { 170 | selection: { 171 | bg: p.cursorlinenr.bg, 172 | fg: p.cursorlinenr.fg, 173 | }, 174 | }, 175 | separator: p.normal.bg, 176 | shadow: statuslinenc.bg, 177 | }, 178 | fold: { 179 | bg: p.linenr.bg, 180 | }, 181 | input: { 182 | bg: p.statuslinenc.bg, 183 | fg: p.normal.fg, 184 | }, 185 | list: { 186 | activeSelection: { 187 | bg: p.linenr.bg, 188 | fg: p.normal.fg, 189 | }, 190 | inactiveSelection: { 191 | bg: p.linenr.bg, 192 | }, 193 | focus: { 194 | bg: p.cursorlinenr.bg, 195 | fg: p.cursorlinenr.fg, 196 | }, 197 | hover: { 198 | bg: p.linenr.bg, 199 | }, 200 | }, 201 | menubar: { 202 | selection: { 203 | bg: p.linenr.bg, 204 | fg: p.normal.fg, 205 | }, 206 | }, 207 | overlaySelection: Color.hsl(hues.base, 0.27, 0.4).withAlpha(0.4), 208 | statusBar: { 209 | bg: windowBg, 210 | fg: p.comment, 211 | item: { 212 | hover: { 213 | bg: p.comment.withAlpha(0.125), 214 | }, 215 | }, 216 | }, 217 | tab: { 218 | active: { 219 | bg: p.normal.bg, 220 | fg: p.normal.fg, 221 | }, 222 | hover: { 223 | bg: p.linenr.bg, 224 | }, 225 | inactive: { 226 | bg: windowBg, 227 | fg: p.comment, 228 | }, 229 | unfocusedActive: { 230 | fg: p.comment, 231 | }, 232 | unfocusedInactive: { 233 | fg: p.comment.withAlpha(0.5), 234 | }, 235 | }, 236 | titleBar: { 237 | active: { 238 | bg: windowBg, 239 | fg: p.normal.fg, 240 | }, 241 | inactive: { 242 | bg: windowBg, 243 | fg: p.comment, 244 | }, 245 | }, 246 | tokens: { 247 | comment: p.comment, 248 | }, 249 | }; 250 | } 251 | -------------------------------------------------------------------------------- /src/types/vscode-theme.ts: -------------------------------------------------------------------------------- 1 | import {Color} from '../color'; 2 | 3 | type ThemeValue = string | Color; 4 | 5 | interface TokenColor { 6 | scope: string | string[]; 7 | settings: { 8 | fontStyle?: ThemeValue; 9 | foreground?: ThemeValue; 10 | }; 11 | } 12 | 13 | export interface VscodeTheme { 14 | name: string; 15 | colors: { 16 | 'activityBar.background': ThemeValue; 17 | 'activityBar.foreground': ThemeValue; 18 | 'activityBar.inactiveForeground': ThemeValue; 19 | 'activityBarBadge.background': ThemeValue; 20 | 'activityBarBadge.foreground': ThemeValue; 21 | 'badge.background': ThemeValue; 22 | 'badge.foreground': ThemeValue; 23 | 'breadcrumb.activeSelectionForeground': ThemeValue; 24 | 'breadcrumb.background': ThemeValue; 25 | 'breadcrumb.focusForeground': ThemeValue; 26 | 'breadcrumb.foreground': ThemeValue; 27 | 'breadcrumbPicker.background': ThemeValue; 28 | 'button.background': ThemeValue; 29 | 'button.foreground': ThemeValue; 30 | 'button.hoverBackground': ThemeValue; 31 | 'debugConsole.errorForeground': ThemeValue; 32 | 'debugConsole.infoForeground': ThemeValue; 33 | 'debugConsole.sourceForeground': ThemeValue; 34 | 'debugConsole.warningForeground': ThemeValue; 35 | 'debugConsoleInputIcon.foreground': ThemeValue; 36 | 'debugIcon.breakpointCurrentStackframeForeground': ThemeValue; 37 | 'debugIcon.breakpointDisabledForeground': ThemeValue; 38 | 'debugIcon.breakpointForeground': ThemeValue; 39 | 'debugIcon.breakpointStackframeForeground': ThemeValue; 40 | 'debugIcon.breakpointUnverifiedForeground': ThemeValue; 41 | 'debugIcon.continueForeground': ThemeValue; 42 | 'debugIcon.disconnectForeground': ThemeValue; 43 | 'debugIcon.pauseForeground': ThemeValue; 44 | 'debugIcon.restartForeground': ThemeValue; 45 | 'debugIcon.startForeground': ThemeValue; 46 | 'debugIcon.stepBackForeground': ThemeValue; 47 | 'debugIcon.stepIntoForeground': ThemeValue; 48 | 'debugIcon.stepOutForeground': ThemeValue; 49 | 'debugIcon.stepOverForeground': ThemeValue; 50 | 'debugIcon.stopForeground': ThemeValue; 51 | 'debugTokenExpression.boolean': ThemeValue; 52 | 'debugTokenExpression.error': ThemeValue; 53 | 'debugTokenExpression.name': ThemeValue; 54 | 'debugTokenExpression.number': ThemeValue; 55 | 'debugTokenExpression.string': ThemeValue; 56 | 'debugTokenExpression.value': ThemeValue; 57 | 'debugToolBar.background': ThemeValue; 58 | descriptionForeground: ThemeValue; 59 | 'diffEditor.insertedTextBackground': ThemeValue; 60 | 'diffEditor.removedTextBackground': ThemeValue; 61 | 'dropdown.background': ThemeValue; 62 | 'dropdown.border': ThemeValue; 63 | 'dropdown.foreground': ThemeValue; 64 | 'editor.background': ThemeValue; 65 | 'editor.foreground': ThemeValue; 66 | 'editor.findMatchBackground': ThemeValue; 67 | 'editor.findMatchHighlightBackground': ThemeValue; 68 | 'editor.foldBackground': ThemeValue; 69 | 'editor.lineHighlightBackground': ThemeValue; 70 | 'editor.rangeHighlightBackground': ThemeValue; 71 | 'editor.selectionBackground': ThemeValue; 72 | 'editor.wordHighlightBackground': ThemeValue; 73 | 'editor.wordHighlightStrongBackground': ThemeValue; 74 | 'editorActionList.background': ThemeValue; 75 | 'editorActionList.focusBackground': ThemeValue; 76 | 'editorActionList.focusForeground': ThemeValue; 77 | 'editorActionList.foreground': ThemeValue; 78 | 'editorBracketHighlight.foreground1': ThemeValue; 79 | 'editorBracketHighlight.foreground2': ThemeValue; 80 | 'editorBracketHighlight.foreground3': ThemeValue; 81 | 'editorBracketHighlight.foreground4': ThemeValue; 82 | 'editorBracketHighlight.foreground5': ThemeValue; 83 | 'editorBracketHighlight.foreground6': ThemeValue; 84 | 'editorBracketHighlight.unexpectedBracket.foreground': ThemeValue; 85 | 'editorBracketMatch.background': ThemeValue; 86 | 'editorBracketMatch.border': ThemeValue; 87 | 'editorCursor.foreground': ThemeValue; 88 | 'editorError.foreground': ThemeValue; 89 | 'editorGroup.border': ThemeValue; 90 | 'editorGroup.dropBackground': ThemeValue; 91 | 'editorGroupHeader.tabsBackground': ThemeValue; 92 | 'editorGutter.addedBackground': ThemeValue; 93 | 'editorGutter.background': ThemeValue; 94 | 'editorGutter.deletedBackground': ThemeValue; 95 | 'editorGutter.modifiedBackground': ThemeValue; 96 | 'editorHoverWidget.background': ThemeValue; 97 | 'editorHoverWidget.border': ThemeValue; 98 | 'editorHoverWidget.foreground': ThemeValue; 99 | 'editorHoverWidget.statusBarBackground': ThemeValue; 100 | 'editorIndentGuide.activeBackground1': ThemeValue; 101 | 'editorIndentGuide.background1': ThemeValue; 102 | 'editorLightBulb.foreground': ThemeValue; 103 | 'editorLightBulbAutoFix.foreground': ThemeValue; 104 | 'editorLineNumber.activeForeground': ThemeValue; 105 | 'editorLineNumber.foreground': ThemeValue; 106 | 'editorLink.activeForeground': ThemeValue; 107 | 'editorMarkerNavigation.background': ThemeValue; 108 | 'editorOverviewRuler.addedForeground': ThemeValue; 109 | 'editorOverviewRuler.border': ThemeValue; 110 | 'editorOverviewRuler.deletedForeground': ThemeValue; 111 | 'editorOverviewRuler.errorForeground': ThemeValue; 112 | 'editorOverviewRuler.infoForeground': ThemeValue; 113 | 'editorOverviewRuler.modifiedForeground': ThemeValue; 114 | 'editorOverviewRuler.warningForeground': ThemeValue; 115 | 'editorOverviewRuler.wordHighlightForeground': ThemeValue; 116 | 'editorRuler.foreground': ThemeValue; 117 | 'editorSuggestWidget.selectedBackground': ThemeValue; 118 | 'editorWhitespace.foreground': ThemeValue; 119 | 'editorWidget.background': ThemeValue; 120 | 'editorWidget.border': ThemeValue; 121 | 'editorWarning.foreground': ThemeValue; 122 | 'extensionButton.prominentBackground': ThemeValue; 123 | 'extensionButton.prominentForeground': ThemeValue; 124 | 'extensionButton.prominentHoverBackground': ThemeValue; 125 | foreground: ThemeValue; 126 | focusBorder: ThemeValue; 127 | 'gitDecoration.addedResourceForeground': ThemeValue; 128 | 'gitDecoration.conflictingResourceForeground': ThemeValue; 129 | 'gitDecoration.deletedResourceForeground': ThemeValue; 130 | 'gitDecoration.ignoredResourceForeground': ThemeValue; 131 | 'gitDecoration.modifiedResourceForeground': ThemeValue; 132 | 'gitDecoration.renamedResourceForeground': ThemeValue; 133 | 'gitDecoration.stageDeletedResourceForeground': ThemeValue; 134 | 'gitDecoration.stageModifiedResourceForeground': ThemeValue; 135 | 'gitDecoration.submoduleResourceForeground': ThemeValue; 136 | 'gitDecoration.untrackedResourceForeground': ThemeValue; 137 | 'input.background': ThemeValue; 138 | 'input.foreground': ThemeValue; 139 | 'input.placeholderForeground': ThemeValue; 140 | 'inputOption.activeBorder': ThemeValue; 141 | 'inputValidation.errorBackground': ThemeValue; 142 | 'inputValidation.errorBorder': ThemeValue; 143 | 'list.activeSelectionBackground': ThemeValue; 144 | 'list.activeSelectionForeground': ThemeValue; 145 | 'list.dropBackground': ThemeValue; 146 | 'list.errorForeground': ThemeValue; 147 | 'list.highlightForeground': ThemeValue; 148 | 'list.inactiveSelectionBackground': ThemeValue; 149 | 'list.focusForeground': ThemeValue; 150 | 'list.hoverBackground': ThemeValue; 151 | 'list.warningForeground': ThemeValue; 152 | 'menu.background': ThemeValue; 153 | 'menu.foreground': ThemeValue; 154 | 'menu.selectionBackground': ThemeValue; 155 | 'menu.selectionForeground': ThemeValue; 156 | 'menu.separatorBackground': ThemeValue; 157 | 'menubar.selectionBackground': ThemeValue; 158 | 'menubar.selectionForeground': ThemeValue; 159 | 'merge.currentHeaderBackground': ThemeValue; 160 | 'merge.currentContentBackground': ThemeValue; 161 | 'merge.incomingHeaderBackground': ThemeValue; 162 | 'merge.incomingContentBackground': ThemeValue; 163 | 'notifications.background': ThemeValue; 164 | 'notifications.border': ThemeValue; 165 | 'notifications.foreground': ThemeValue; 166 | 'notificationCenterHeader.background': ThemeValue; 167 | 'notificationsErrorIcon.foreground': ThemeValue; 168 | 'notificationsInfoIcon.foreground': ThemeValue; 169 | 'notificationsWarningIcon.foreground': ThemeValue; 170 | 'panel.background': ThemeValue; 171 | 'panel.border': ThemeValue; 172 | 'panelTitle.activeForeground': ThemeValue; 173 | 'panelTitle.inactiveForeground': ThemeValue; 174 | 'peekView.border': ThemeValue; 175 | 'peekViewEditor.background': ThemeValue; 176 | 'peekViewEditor.matchHighlightBackground': ThemeValue; 177 | 'peekViewEditorGutter.background': ThemeValue; 178 | 'peekViewResult.background': ThemeValue; 179 | 'peekViewResult.fileForeground': ThemeValue; 180 | 'peekViewResult.lineForeground': ThemeValue; 181 | 'peekViewResult.matchHighlightBackground': ThemeValue; 182 | 'peekViewResult.selectionBackground': ThemeValue; 183 | 'peekViewTitle.background': ThemeValue; 184 | 'peekViewTitleDescription.foreground': ThemeValue; 185 | 'peekViewTitleLabel.foreground': ThemeValue; 186 | 'pickerGroup.border': ThemeValue; 187 | 'pickerGroup.foreground': ThemeValue; 188 | 'problemsErrorIcon.foreground': ThemeValue; 189 | 'problemsInfoIcon.foreground': ThemeValue; 190 | 'problemsWarningIcon.foreground': ThemeValue; 191 | 'progressBar.background': ThemeValue; 192 | 'quickInput.background': ThemeValue; 193 | 'quickInput.foreground': ThemeValue; 194 | 'quickInputList.focusBackground': ThemeValue; 195 | 'scrollbar.shadow': ThemeValue; 196 | 'scrollbarSlider.background': ThemeValue; 197 | 'scrollbarSlider.hoverBackground': ThemeValue; 198 | 'selection.background': ThemeValue; 199 | 'statusBarItem.errorBackground': ThemeValue; 200 | 'statusBarItem.errorForeground': ThemeValue; 201 | 'settings.headerForeground': ThemeValue; 202 | 'settings.modifiedItemIndicator': ThemeValue; 203 | 'sideBar.background': ThemeValue; 204 | 'sideBar.border': ThemeValue; 205 | 'sideBar.dropBackground': ThemeValue; 206 | 'sideBar.foreground': ThemeValue; 207 | 'sideBarSectionHeader.background': ThemeValue; 208 | 'sideBarSectionHeader.foreground': ThemeValue; 209 | 'statusBar.background': ThemeValue; 210 | 'statusBar.debuggingBackground': ThemeValue; 211 | 'statusBar.debuggingForeground': ThemeValue; 212 | 'statusBar.foreground': ThemeValue; 213 | 'statusBar.noFolderBackground': ThemeValue; 214 | 'statusBar.noFolderForeground': ThemeValue; 215 | 'statusBarItem.hoverBackground': ThemeValue; 216 | 'symbolIcon.classForeground': ThemeValue; 217 | 'symbolIcon.constructorForeground': ThemeValue; 218 | 'symbolIcon.enumeratorForeground': ThemeValue; 219 | 'symbolIcon.enumeratorMemberForeground': ThemeValue; 220 | 'symbolIcon.eventForeground': ThemeValue; 221 | 'symbolIcon.fieldForeground': ThemeValue; 222 | 'symbolIcon.functionForeground': ThemeValue; 223 | 'symbolIcon.interfaceForeground': ThemeValue; 224 | 'symbolIcon.methodForeground': ThemeValue; 225 | 'symbolIcon.variableForeground': ThemeValue; 226 | 'tab.activeBackground': ThemeValue; 227 | 'tab.activeForeground': ThemeValue; 228 | 'tab.activeModifiedBorder': ThemeValue; 229 | 'tab.border': ThemeValue; 230 | 'tab.hoverBackground': ThemeValue; 231 | 'tab.inactiveBackground': ThemeValue; 232 | 'tab.inactiveForeground': ThemeValue; 233 | 'tab.inactiveModifiedBorder': ThemeValue; 234 | 'tab.unfocusedActiveForeground': ThemeValue; 235 | 'tab.unfocusedInactiveForeground': ThemeValue; 236 | 'terminal.ansiBlack': ThemeValue; 237 | 'terminal.ansiBlue': ThemeValue; 238 | 'terminal.ansiBrightBlack': ThemeValue; 239 | 'terminal.ansiBrightBlue': ThemeValue; 240 | 'terminal.ansiBrightCyan': ThemeValue; 241 | 'terminal.ansiBrightGreen': ThemeValue; 242 | 'terminal.ansiBrightMagenta': ThemeValue; 243 | 'terminal.ansiBrightRed': ThemeValue; 244 | 'terminal.ansiBrightWhite': ThemeValue; 245 | 'terminal.ansiBrightYellow': ThemeValue; 246 | 'terminal.ansiCyan': ThemeValue; 247 | 'terminal.ansiGreen': ThemeValue; 248 | 'terminal.ansiMagenta': ThemeValue; 249 | 'terminal.ansiRed': ThemeValue; 250 | 'terminal.ansiWhite': ThemeValue; 251 | 'terminal.ansiYellow': ThemeValue; 252 | 'terminal.foreground': ThemeValue; 253 | 'terminal.selectionBackground': ThemeValue; 254 | 'terminalCommandDecoration.defaultBackground': ThemeValue; 255 | 'terminalCommandDecoration.errorBackground': ThemeValue; 256 | 'terminalCommandDecoration.successBackground': ThemeValue; 257 | 'textLink.activeForeground': ThemeValue; 258 | 'textLink.foreground': ThemeValue; 259 | 'titleBar.activeBackground': ThemeValue; 260 | 'titleBar.activeForeground': ThemeValue; 261 | 'titleBar.inactiveBackground': ThemeValue; 262 | 'titleBar.inactiveForeground': ThemeValue; 263 | 'tree.indentGuidesStroke': ThemeValue; 264 | 'widget.shadow': ThemeValue; 265 | }; 266 | semanticHighlighting: boolean; 267 | semanticTokenColors: { 268 | [key: string]: ThemeValue; 269 | }; 270 | tokenColors: TokenColor[]; 271 | } 272 | 273 | export function stringify(theme: VscodeTheme): string { 274 | return JSON.stringify( 275 | theme, 276 | (_: string, value: unknown) => 277 | value instanceof Color ? value.hex() : value, 278 | '\t', 279 | ); 280 | } 281 | -------------------------------------------------------------------------------- /themes/iceberg.color-theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Iceberg", 3 | "colors": { 4 | "activityBar.background": "#161821", 5 | "activityBar.foreground": "#c6c8d1", 6 | "activityBar.inactiveForeground": "#6b7089", 7 | "activityBarBadge.background": "#84a0c6", 8 | "activityBarBadge.foreground": "#161821", 9 | "badge.background": "#6b708920", 10 | "badge.foreground": "#6b7089", 11 | "breadcrumb.activeSelectionForeground": "#c6c8d1", 12 | "breadcrumb.background": "#161821", 13 | "breadcrumb.focusForeground": "#c6c8d1", 14 | "breadcrumb.foreground": "#6b7089", 15 | "breadcrumbPicker.background": "#1e2132", 16 | "button.background": "#c6c8d1", 17 | "button.foreground": "#161821", 18 | "button.hoverBackground": "#d2d4de", 19 | "debugConsole.errorForeground": "#e27878", 20 | "debugConsole.infoForeground": "#89b8c2", 21 | "debugConsole.sourceForeground": "#c6c8d1", 22 | "debugConsole.warningForeground": "#e2a478", 23 | "debugConsoleInputIcon.foreground": "#c6c8d1", 24 | "debugIcon.breakpointCurrentStackframeForeground": "#e2a478", 25 | "debugIcon.breakpointDisabledForeground": "#6b7089", 26 | "debugIcon.breakpointForeground": "#e27878", 27 | "debugIcon.breakpointStackframeForeground": "#b4be82", 28 | "debugIcon.breakpointUnverifiedForeground": "#6b7089", 29 | "debugIcon.continueForeground": "#84a0c6", 30 | "debugIcon.disconnectForeground": "#e278784d", 31 | "debugIcon.pauseForeground": "#84a0c6", 32 | "debugIcon.restartForeground": "#b4be82", 33 | "debugIcon.startForeground": "#b4be82", 34 | "debugIcon.stepBackForeground": "#84a0c6", 35 | "debugIcon.stepIntoForeground": "#84a0c6", 36 | "debugIcon.stepOutForeground": "#84a0c6", 37 | "debugIcon.stepOverForeground": "#84a0c6", 38 | "debugIcon.stopForeground": "#e27878", 39 | "debugTokenExpression.boolean": "#a093c7", 40 | "debugTokenExpression.error": "#e27878", 41 | "debugTokenExpression.name": "#c6c8d1", 42 | "debugTokenExpression.number": "#a093c7", 43 | "debugTokenExpression.string": "#89b8c2", 44 | "debugTokenExpression.value": "#a093c7", 45 | "debugToolBar.background": "#1e2132", 46 | "descriptionForeground": "#6b7089", 47 | "diffEditor.insertedTextBackground": "#b4be8220", 48 | "diffEditor.removedTextBackground": "#e2787820", 49 | "dropdown.background": "#0f1117", 50 | "dropdown.border": "#0f1117", 51 | "dropdown.foreground": "#c6c8d1", 52 | "editor.background": "#161821", 53 | "editor.foreground": "#c6c8d1", 54 | "editor.findMatchBackground": "#e2a47880", 55 | "editor.findMatchHighlightBackground": "#e2a47840", 56 | "editor.foldBackground": "#1e2132", 57 | "editor.lineHighlightBackground": "#1e2132", 58 | "editor.rangeHighlightBackground": "#e2a4781a", 59 | "editor.selectionBackground": "#272c42", 60 | "editor.wordHighlightBackground": "#84a0c640", 61 | "editor.wordHighlightStrongBackground": "#84a0c680", 62 | "editorActionList.background": "#1e2132", 63 | "editorActionList.focusBackground": "#2a3158", 64 | "editorActionList.focusForeground": "#cdd1e6", 65 | "editorActionList.foreground": "#c6c8d1", 66 | "editorBracketHighlight.foreground1": "#84a0c6", 67 | "editorBracketHighlight.foreground2": "#89b8c2", 68 | "editorBracketHighlight.foreground3": "#b4be82", 69 | "editorBracketHighlight.foreground4": "#e2a478", 70 | "editorBracketHighlight.foreground5": "#a093c7", 71 | "editorBracketHighlight.foreground6": "#00000000", 72 | "editorBracketHighlight.unexpectedBracket.foreground": "#e27878", 73 | "editorBracketMatch.background": "#3f455e", 74 | "editorBracketMatch.border": "#3f455e", 75 | "editorCursor.foreground": "#c6c8d1", 76 | "editorError.foreground": "#e27878", 77 | "editorGroup.border": "#0e1015", 78 | "editorGroup.dropBackground": "#84a0c620", 79 | "editorGroupHeader.tabsBackground": "#0e1015", 80 | "editorGutter.addedBackground": "#b4be8280", 81 | "editorGutter.background": "#1e2132", 82 | "editorGutter.deletedBackground": "#e2787880", 83 | "editorGutter.modifiedBackground": "#b4be8280", 84 | "editorHoverWidget.background": "#1e2132", 85 | "editorHoverWidget.border": "#1e2132", 86 | "editorHoverWidget.foreground": "#c6c8d1", 87 | "editorHoverWidget.statusBarBackground": "#1e2132", 88 | "editorIndentGuide.activeBackground1": "#242940", 89 | "editorIndentGuide.background1": "#24294040", 90 | "editorLightBulb.foreground": "#e2a478", 91 | "editorLightBulbAutoFix.foreground": "#89b8c2", 92 | "editorLineNumber.activeForeground": "#cdd1e6", 93 | "editorLineNumber.foreground": "#444b71", 94 | "editorLink.activeForeground": "#84a0c6", 95 | "editorMarkerNavigation.background": "#1e2132", 96 | "editorOverviewRuler.addedForeground": "#b4be8280", 97 | "editorOverviewRuler.border": "#24294040", 98 | "editorOverviewRuler.deletedForeground": "#e2787880", 99 | "editorOverviewRuler.errorForeground": "#e27878", 100 | "editorOverviewRuler.infoForeground": "#95c4ce80", 101 | "editorOverviewRuler.modifiedForeground": "#b4be8280", 102 | "editorOverviewRuler.warningForeground": "#e2a47880", 103 | "editorOverviewRuler.wordHighlightForeground": "#84a0c680", 104 | "editorRuler.foreground": "#242940", 105 | "editorSuggestWidget.selectedBackground": "#c6c8d120", 106 | "editorWhitespace.foreground": "#242940", 107 | "editorWidget.background": "#1e2132", 108 | "editorWidget.border": "#1e2132", 109 | "editorWarning.foreground": "#e2a478", 110 | "extensionButton.prominentBackground": "#c6c8d1", 111 | "extensionButton.prominentForeground": "#161821", 112 | "extensionButton.prominentHoverBackground": "#d2d4de", 113 | "foreground": "#c6c8d1", 114 | "focusBorder": "#242940", 115 | "gitDecoration.addedResourceForeground": "#b4be82", 116 | "gitDecoration.conflictingResourceForeground": "#e2a478", 117 | "gitDecoration.deletedResourceForeground": "#e27878", 118 | "gitDecoration.ignoredResourceForeground": "#6b7089", 119 | "gitDecoration.modifiedResourceForeground": "#89b8c2", 120 | "gitDecoration.renamedResourceForeground": "#a093c7", 121 | "gitDecoration.stageDeletedResourceForeground": "#e27878", 122 | "gitDecoration.stageModifiedResourceForeground": "#89b8c2", 123 | "gitDecoration.submoduleResourceForeground": "#6b7089", 124 | "gitDecoration.untrackedResourceForeground": "#6b7089", 125 | "input.background": "#0f1117", 126 | "input.foreground": "#c6c8d1", 127 | "input.placeholderForeground": "#c6c8d140", 128 | "inputOption.activeBorder": "#84a0c6", 129 | "inputValidation.errorBackground": "#53353b", 130 | "inputValidation.errorBorder": "#e27878", 131 | "list.activeSelectionBackground": "#1e2132", 132 | "list.activeSelectionForeground": "#c6c8d1", 133 | "list.dropBackground": "#84a0c620", 134 | "list.errorForeground": "#e27878", 135 | "list.highlightForeground": "#b4be82", 136 | "list.inactiveSelectionBackground": "#1e2132", 137 | "list.focusForeground": "#cdd1e6", 138 | "list.hoverBackground": "#1e2132", 139 | "list.warningForeground": "#e2a478", 140 | "menu.background": "#1e2132", 141 | "menu.foreground": "#c6c8d1", 142 | "menu.selectionBackground": "#2a3158", 143 | "menu.selectionForeground": "#cdd1e6", 144 | "menu.separatorBackground": "#161821", 145 | "menubar.selectionBackground": "#1e2132", 146 | "menubar.selectionForeground": "#c6c8d1", 147 | "merge.currentHeaderBackground": "#a093c740", 148 | "merge.currentContentBackground": "#a093c720", 149 | "merge.incomingHeaderBackground": "#89b8c240", 150 | "merge.incomingContentBackground": "#89b8c220", 151 | "notifications.background": "#1e2132", 152 | "notifications.border": "#161821", 153 | "notifications.foreground": "#c6c8d1", 154 | "notificationCenterHeader.background": "#1e2132", 155 | "notificationsErrorIcon.foreground": "#e27878", 156 | "notificationsInfoIcon.foreground": "#89b8c2", 157 | "notificationsWarningIcon.foreground": "#e2a478", 158 | "panel.background": "#161821", 159 | "panel.border": "#0e1015", 160 | "panelTitle.activeForeground": "#c6c8d1", 161 | "panelTitle.inactiveForeground": "#6b7089", 162 | "peekView.border": "#242940", 163 | "peekViewEditor.background": "#161821", 164 | "peekViewEditor.matchHighlightBackground": "#e2a47840", 165 | "peekViewEditorGutter.background": "#1e2132", 166 | "peekViewResult.background": "#1e2132", 167 | "peekViewResult.fileForeground": "#c6c8d1", 168 | "peekViewResult.lineForeground": "#6b7089", 169 | "peekViewResult.matchHighlightBackground": "#e2a47840", 170 | "peekViewResult.selectionBackground": "#272c42", 171 | "peekViewTitle.background": "#1e2132", 172 | "peekViewTitleDescription.foreground": "#6b7089", 173 | "peekViewTitleLabel.foreground": "#c6c8d1", 174 | "pickerGroup.border": "#161821", 175 | "pickerGroup.foreground": "#84a0c6", 176 | "problemsErrorIcon.foreground": "#e27878", 177 | "problemsInfoIcon.foreground": "#89b8c2", 178 | "problemsWarningIcon.foreground": "#e2a478", 179 | "progressBar.background": "#84a0c6", 180 | "quickInput.background": "#1e2132", 181 | "quickInput.foreground": "#6b7089", 182 | "quickInputList.focusBackground": "#2a3158", 183 | "scrollbar.shadow": "#0f1117", 184 | "scrollbarSlider.background": "#24294080", 185 | "scrollbarSlider.hoverBackground": "#242940a0", 186 | "selection.background": "#4a548266", 187 | "settings.headerForeground": "#c6c8d1", 188 | "settings.modifiedItemIndicator": "#89b8c24c", 189 | "sideBar.background": "#161821", 190 | "sideBar.border": "#0e1015", 191 | "sideBar.dropBackground": "#84a0c620", 192 | "sideBar.foreground": "#c6c8d1", 193 | "sideBarSectionHeader.background": "#242940", 194 | "sideBarSectionHeader.foreground": "#6b7089", 195 | "statusBar.background": "#0e1015", 196 | "statusBar.debuggingBackground": "#0e1015", 197 | "statusBar.debuggingForeground": "#6b7089", 198 | "statusBar.foreground": "#6b7089", 199 | "statusBar.noFolderBackground": "#0e1015", 200 | "statusBar.noFolderForeground": "#6b7089", 201 | "statusBarItem.errorBackground": "#e27878", 202 | "statusBarItem.errorForeground": "#161821", 203 | "statusBarItem.hoverBackground": "#6b708920", 204 | "symbolIcon.classForeground": "#e2a478", 205 | "symbolIcon.constructorForeground": "#e2a478", 206 | "symbolIcon.enumeratorForeground": "#e2a478", 207 | "symbolIcon.enumeratorMemberForeground": "#89b8c2", 208 | "symbolIcon.eventForeground": "#e2a478", 209 | "symbolIcon.fieldForeground": "#89b8c2", 210 | "symbolIcon.functionForeground": "#a093c7", 211 | "symbolIcon.interfaceForeground": "#89b8c2", 212 | "symbolIcon.methodForeground": "#a093c7", 213 | "symbolIcon.variableForeground": "#89b8c2", 214 | "tab.activeBackground": "#161821", 215 | "tab.activeForeground": "#c6c8d1", 216 | "tab.activeModifiedBorder": "#89b8c2", 217 | "tab.border": "#0e1015", 218 | "tab.hoverBackground": "#1e2132", 219 | "tab.inactiveBackground": "#0e1015", 220 | "tab.inactiveForeground": "#6b7089", 221 | "tab.inactiveModifiedBorder": "#89b8c280", 222 | "tab.unfocusedActiveForeground": "#6b7089", 223 | "tab.unfocusedInactiveForeground": "#6b708980", 224 | "terminal.ansiBlack": "#1e2132", 225 | "terminal.ansiBlue": "#84a0c6", 226 | "terminal.ansiBrightBlack": "#6b7089", 227 | "terminal.ansiBrightBlue": "#91acd1", 228 | "terminal.ansiBrightCyan": "#95c4ce", 229 | "terminal.ansiBrightGreen": "#c0ca8e", 230 | "terminal.ansiBrightMagenta": "#ada0d3", 231 | "terminal.ansiBrightRed": "#e98989", 232 | "terminal.ansiBrightWhite": "#d2d4de", 233 | "terminal.ansiBrightYellow": "#e9b189", 234 | "terminal.ansiCyan": "#89b8c2", 235 | "terminal.ansiGreen": "#b4be82", 236 | "terminal.ansiMagenta": "#a093c7", 237 | "terminal.ansiRed": "#e27878", 238 | "terminal.ansiWhite": "#c6c8d1", 239 | "terminal.ansiYellow": "#e2a478", 240 | "terminal.foreground": "#c6c8d1", 241 | "terminal.selectionBackground": "#4a548266", 242 | "terminalCommandDecoration.defaultBackground": "#6b7089", 243 | "terminalCommandDecoration.errorBackground": "#e27878", 244 | "terminalCommandDecoration.successBackground": "#84a0c6", 245 | "textLink.activeForeground": "#84a0c6", 246 | "textLink.foreground": "#84a0c6", 247 | "titleBar.activeBackground": "#0e1015", 248 | "titleBar.activeForeground": "#c6c8d1", 249 | "titleBar.inactiveBackground": "#0e1015", 250 | "titleBar.inactiveForeground": "#6b7089", 251 | "tree.indentGuidesStroke": "#242940", 252 | "widget.shadow": "#0f1117" 253 | }, 254 | "tokenColors": [ 255 | { 256 | "scope": "comment", 257 | "settings": { 258 | "foreground": "#6b7089" 259 | } 260 | }, 261 | { 262 | "scope": [ 263 | "constant", 264 | "support.constant" 265 | ], 266 | "settings": { 267 | "foreground": "#a093c7" 268 | } 269 | }, 270 | { 271 | "scope": "entity.other.attribute-name", 272 | "settings": { 273 | "foreground": "#a093c7" 274 | } 275 | }, 276 | { 277 | "scope": "entity.name.class", 278 | "settings": { 279 | "foreground": "#c6c8d1" 280 | } 281 | }, 282 | { 283 | "scope": "entity.name.function", 284 | "settings": { 285 | "foreground": "#c6c8d1" 286 | } 287 | }, 288 | { 289 | "scope": "entity.name.section", 290 | "settings": { 291 | "foreground": "#e2a478" 292 | } 293 | }, 294 | { 295 | "scope": "entity.name.tag", 296 | "settings": { 297 | "foreground": "#84a0c6" 298 | } 299 | }, 300 | { 301 | "scope": [ 302 | "keyword", 303 | "keyword.operator.expression", 304 | "keyword.operator.new" 305 | ], 306 | "settings": { 307 | "foreground": "#84a0c6" 308 | } 309 | }, 310 | { 311 | "scope": "keyword.control.at-rule, keyword.control.content", 312 | "settings": { 313 | "foreground": "#b4be82" 314 | } 315 | }, 316 | { 317 | "scope": "keyword.function", 318 | "settings": { 319 | "foreground": "#84a0c6" 320 | } 321 | }, 322 | { 323 | "scope": "keyword.operator", 324 | "settings": { 325 | "foreground": "#c6c8d1" 326 | } 327 | }, 328 | { 329 | "scope": "keyword.other.unit", 330 | "settings": { 331 | "foreground": "#a093c7" 332 | } 333 | }, 334 | { 335 | "scope": "markup.bold", 336 | "settings": { 337 | "fontStyle": "bold", 338 | "foreground": "#d2d4de" 339 | } 340 | }, 341 | { 342 | "scope": "markup.fenced_code.block", 343 | "settings": { 344 | "foreground": "#6b7089" 345 | } 346 | }, 347 | { 348 | "scope": "markup.inline.raw.string", 349 | "settings": { 350 | "foreground": "#a093c7" 351 | } 352 | }, 353 | { 354 | "scope": "meta.link", 355 | "settings": { 356 | "foreground": "#89b8c2" 357 | } 358 | }, 359 | { 360 | "scope": "meta.brace.square", 361 | "settings": { 362 | "foreground": "#c6c8d1" 363 | } 364 | }, 365 | { 366 | "scope": [ 367 | "entity.name.function.method", 368 | "markup.heading", 369 | "meta.definition.method" 370 | ], 371 | "settings": { 372 | "foreground": "#e2a478" 373 | } 374 | }, 375 | { 376 | "scope": "meta.object-literal.key", 377 | "settings": { 378 | "foreground": "#84a0c6" 379 | } 380 | }, 381 | { 382 | "scope": "meta.tag.attributes", 383 | "settings": { 384 | "foreground": "#a093c7" 385 | } 386 | }, 387 | { 388 | "scope": "meta.tag.sgml.doctype", 389 | "settings": { 390 | "foreground": "#6b7089" 391 | } 392 | }, 393 | { 394 | "scope": "meta.type.annotation", 395 | "settings": { 396 | "foreground": "#b4be82" 397 | } 398 | }, 399 | { 400 | "scope": "punctuation.definition.template-expression", 401 | "settings": { 402 | "foreground": "#b4be82" 403 | } 404 | }, 405 | { 406 | "scope": "punctuation.definition.block", 407 | "settings": { 408 | "foreground": "#c6c8d1" 409 | } 410 | }, 411 | { 412 | "scope": "punctuation.definition.tag", 413 | "settings": { 414 | "foreground": "#84a0c6" 415 | } 416 | }, 417 | { 418 | "scope": "storage", 419 | "settings": { 420 | "foreground": "#84a0c6" 421 | } 422 | }, 423 | { 424 | "scope": "storage.type.function", 425 | "settings": { 426 | "foreground": "#84a0c6" 427 | } 428 | }, 429 | { 430 | "scope": "string", 431 | "settings": { 432 | "foreground": "#89b8c2" 433 | } 434 | }, 435 | { 436 | "scope": "support", 437 | "settings": { 438 | "foreground": "#84a0c6" 439 | } 440 | }, 441 | { 442 | "scope": "support.type.property-name", 443 | "settings": { 444 | "foreground": "#84a0c6" 445 | } 446 | }, 447 | { 448 | "scope": "variable.language.this", 449 | "settings": { 450 | "foreground": "#b4be82" 451 | } 452 | }, 453 | { 454 | "scope": "text", 455 | "settings": { 456 | "foreground": "#c6c8d1" 457 | } 458 | }, 459 | { 460 | "scope": "meta.diff.header", 461 | "settings": { 462 | "foreground": "#84a0c6" 463 | } 464 | }, 465 | { 466 | "scope": "meta.diff.range", 467 | "settings": { 468 | "foreground": "#89b8c2" 469 | } 470 | }, 471 | { 472 | "scope": "entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector-suffix.css", 473 | "settings": { 474 | "foreground": "#c6c8d1" 475 | } 476 | }, 477 | { 478 | "scope": "markup.deleted.diff", 479 | "settings": { 480 | "foreground": "#e27878" 481 | } 482 | }, 483 | { 484 | "scope": "markup.inserted.diff", 485 | "settings": { 486 | "foreground": "#b4be82" 487 | } 488 | }, 489 | { 490 | "scope": "support.type.class.flowtype", 491 | "settings": { 492 | "foreground": "#b4be82" 493 | } 494 | }, 495 | { 496 | "scope": "punctuation.definition.block.tag.jsdoc", 497 | "settings": { 498 | "foreground": "#b4be82" 499 | } 500 | }, 501 | { 502 | "scope": "storage.type.class.jsdoc", 503 | "settings": { 504 | "foreground": "#b4be82" 505 | } 506 | }, 507 | { 508 | "scope": "variable.other.jsdoc", 509 | "settings": { 510 | "foreground": "#c6c8d1" 511 | } 512 | }, 513 | { 514 | "scope": "entity.name.import.go", 515 | "settings": { 516 | "foreground": "#89b8c2" 517 | } 518 | }, 519 | { 520 | "scope": "markup.underline.link", 521 | "settings": { 522 | "foreground": "#84a0c6" 523 | } 524 | }, 525 | { 526 | "scope": "keyword.other.important.scss", 527 | "settings": { 528 | "foreground": "#e2a478" 529 | } 530 | }, 531 | { 532 | "scope": "variable.interpolation.scss", 533 | "settings": { 534 | "foreground": "#b4be82" 535 | } 536 | }, 537 | { 538 | "scope": "variable.scss", 539 | "settings": { 540 | "foreground": "#89b8c2" 541 | } 542 | } 543 | ], 544 | "semanticHighlighting": true, 545 | "semanticTokenColors": { 546 | "variable": "#c6c8d1" 547 | } 548 | } -------------------------------------------------------------------------------- /themes/iceberg-light.color-theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Iceberg Light", 3 | "colors": { 4 | "activityBar.background": "#e8e9ec", 5 | "activityBar.foreground": "#33374c", 6 | "activityBar.inactiveForeground": "#8389a3", 7 | "activityBarBadge.background": "#2d539e", 8 | "activityBarBadge.foreground": "#e8e9ec", 9 | "badge.background": "#8389a320", 10 | "badge.foreground": "#8389a3", 11 | "breadcrumb.activeSelectionForeground": "#33374c", 12 | "breadcrumb.background": "#e8e9ec", 13 | "breadcrumb.focusForeground": "#33374c", 14 | "breadcrumb.foreground": "#8389a3", 15 | "breadcrumbPicker.background": "#dcdfe7", 16 | "button.background": "#33374c", 17 | "button.foreground": "#e8e9ec", 18 | "button.hoverBackground": "#262a3f", 19 | "debugConsole.errorForeground": "#cc517a", 20 | "debugConsole.infoForeground": "#3f83a6", 21 | "debugConsole.sourceForeground": "#33374c", 22 | "debugConsole.warningForeground": "#c57339", 23 | "debugConsoleInputIcon.foreground": "#33374c", 24 | "debugIcon.breakpointCurrentStackframeForeground": "#c57339", 25 | "debugIcon.breakpointDisabledForeground": "#8389a3", 26 | "debugIcon.breakpointForeground": "#cc517a", 27 | "debugIcon.breakpointStackframeForeground": "#668e3d", 28 | "debugIcon.breakpointUnverifiedForeground": "#8389a3", 29 | "debugIcon.continueForeground": "#2d539e", 30 | "debugIcon.disconnectForeground": "#cc517a4d", 31 | "debugIcon.pauseForeground": "#2d539e", 32 | "debugIcon.restartForeground": "#668e3d", 33 | "debugIcon.startForeground": "#668e3d", 34 | "debugIcon.stepBackForeground": "#2d539e", 35 | "debugIcon.stepIntoForeground": "#2d539e", 36 | "debugIcon.stepOutForeground": "#2d539e", 37 | "debugIcon.stepOverForeground": "#2d539e", 38 | "debugIcon.stopForeground": "#cc517a", 39 | "debugTokenExpression.boolean": "#7759b4", 40 | "debugTokenExpression.error": "#cc517a", 41 | "debugTokenExpression.name": "#33374c", 42 | "debugTokenExpression.number": "#7759b4", 43 | "debugTokenExpression.string": "#3f83a6", 44 | "debugTokenExpression.value": "#7759b4", 45 | "debugToolBar.background": "#dcdfe7", 46 | "descriptionForeground": "#8389a3", 47 | "diffEditor.insertedTextBackground": "#668e3d20", 48 | "diffEditor.removedTextBackground": "#cc517a20", 49 | "dropdown.background": "#cad0de", 50 | "dropdown.border": "#cad0de", 51 | "dropdown.foreground": "#33374c", 52 | "editor.background": "#e8e9ec", 53 | "editor.foreground": "#33374c", 54 | "editor.findMatchBackground": "#c5733980", 55 | "editor.findMatchHighlightBackground": "#c5733940", 56 | "editor.foldBackground": "#dcdfe7", 57 | "editor.lineHighlightBackground": "#dcdfe7", 58 | "editor.rangeHighlightBackground": "#c573391a", 59 | "editor.selectionBackground": "#cacdd7", 60 | "editor.wordHighlightBackground": "#2d539e26", 61 | "editor.wordHighlightStrongBackground": "#2d539e4d", 62 | "editorActionList.background": "#dcdfe7", 63 | "editorActionList.focusBackground": "#cad0de", 64 | "editorActionList.focusForeground": "#586b9e", 65 | "editorActionList.foreground": "#33374c", 66 | "editorBracketHighlight.foreground1": "#2d539e", 67 | "editorBracketHighlight.foreground2": "#3f83a6", 68 | "editorBracketHighlight.foreground3": "#668e3d", 69 | "editorBracketHighlight.foreground4": "#c57339", 70 | "editorBracketHighlight.foreground5": "#7759b4", 71 | "editorBracketHighlight.foreground6": "#00000000", 72 | "editorBracketHighlight.unexpectedBracket.foreground": "#cc517a", 73 | "editorBracketMatch.background": "#bec1c9", 74 | "editorBracketMatch.border": "#bec1c9", 75 | "editorCursor.foreground": "#33374c", 76 | "editorError.foreground": "#cc517a", 77 | "editorGroup.border": "#c8cfdd", 78 | "editorGroup.dropBackground": "#2d539e20", 79 | "editorGroupHeader.tabsBackground": "#c8cfdd", 80 | "editorGutter.addedBackground": "#668e3d80", 81 | "editorGutter.background": "#dcdfe7", 82 | "editorGutter.deletedBackground": "#cc517a80", 83 | "editorGutter.modifiedBackground": "#668e3d80", 84 | "editorHoverWidget.background": "#dcdfe7", 85 | "editorHoverWidget.border": "#dcdfe7", 86 | "editorHoverWidget.foreground": "#33374c", 87 | "editorHoverWidget.statusBarBackground": "#dcdfe7", 88 | "editorIndentGuide.activeBackground1": "#cbcfda", 89 | "editorIndentGuide.background1": "#cbcfda40", 90 | "editorLightBulb.foreground": "#c57339", 91 | "editorLightBulbAutoFix.foreground": "#3f83a6", 92 | "editorLineNumber.activeForeground": "#586b9e", 93 | "editorLineNumber.foreground": "#9fa7bd", 94 | "editorLink.activeForeground": "#2d539e", 95 | "editorMarkerNavigation.background": "#dcdfe7", 96 | "editorOverviewRuler.addedForeground": "#668e3d80", 97 | "editorOverviewRuler.border": "#cbcfda40", 98 | "editorOverviewRuler.deletedForeground": "#cc517a80", 99 | "editorOverviewRuler.errorForeground": "#cc517a", 100 | "editorOverviewRuler.infoForeground": "#32769880", 101 | "editorOverviewRuler.modifiedForeground": "#668e3d80", 102 | "editorOverviewRuler.warningForeground": "#c5733980", 103 | "editorOverviewRuler.wordHighlightForeground": "#2d539e80", 104 | "editorRuler.foreground": "#cbcfda", 105 | "editorSuggestWidget.selectedBackground": "#33374c20", 106 | "editorWhitespace.foreground": "#cbcfda", 107 | "editorWidget.background": "#dcdfe7", 108 | "editorWidget.border": "#dcdfe7", 109 | "editorWarning.foreground": "#c57339", 110 | "extensionButton.prominentBackground": "#33374c", 111 | "extensionButton.prominentForeground": "#e8e9ec", 112 | "extensionButton.prominentHoverBackground": "#262a3f", 113 | "foreground": "#33374c", 114 | "focusBorder": "#cbcfda", 115 | "gitDecoration.addedResourceForeground": "#668e3d", 116 | "gitDecoration.conflictingResourceForeground": "#c57339", 117 | "gitDecoration.deletedResourceForeground": "#cc517a", 118 | "gitDecoration.ignoredResourceForeground": "#8389a3", 119 | "gitDecoration.modifiedResourceForeground": "#3f83a6", 120 | "gitDecoration.renamedResourceForeground": "#7759b4", 121 | "gitDecoration.stageDeletedResourceForeground": "#cc517a", 122 | "gitDecoration.stageModifiedResourceForeground": "#3f83a6", 123 | "gitDecoration.submoduleResourceForeground": "#8389a3", 124 | "gitDecoration.untrackedResourceForeground": "#8389a3", 125 | "input.background": "#cad0de", 126 | "input.foreground": "#33374c", 127 | "input.placeholderForeground": "#33374c40", 128 | "inputOption.activeBorder": "#2d539e", 129 | "inputValidation.errorBackground": "#e4d2db", 130 | "inputValidation.errorBorder": "#cc517a", 131 | "list.activeSelectionBackground": "#dcdfe7", 132 | "list.activeSelectionForeground": "#33374c", 133 | "list.dropBackground": "#2d539e20", 134 | "list.errorForeground": "#cc517a", 135 | "list.highlightForeground": "#668e3d", 136 | "list.inactiveSelectionBackground": "#dcdfe7", 137 | "list.focusForeground": "#586b9e", 138 | "list.hoverBackground": "#dcdfe7", 139 | "list.warningForeground": "#c57339", 140 | "menu.background": "#dcdfe7", 141 | "menu.foreground": "#33374c", 142 | "menu.selectionBackground": "#cad0de", 143 | "menu.selectionForeground": "#586b9e", 144 | "menu.separatorBackground": "#8389a34d", 145 | "menubar.selectionBackground": "#dcdfe7", 146 | "menubar.selectionForeground": "#33374c", 147 | "merge.currentHeaderBackground": "#7759b440", 148 | "merge.currentContentBackground": "#7759b420", 149 | "merge.incomingHeaderBackground": "#3f83a640", 150 | "merge.incomingContentBackground": "#3f83a620", 151 | "notifications.background": "#dcdfe7", 152 | "notifications.border": "#8389a34d", 153 | "notifications.foreground": "#33374c", 154 | "notificationCenterHeader.background": "#dcdfe7", 155 | "notificationsErrorIcon.foreground": "#cc517a", 156 | "notificationsInfoIcon.foreground": "#3f83a6", 157 | "notificationsWarningIcon.foreground": "#c57339", 158 | "panel.background": "#e8e9ec", 159 | "panel.border": "#c8cfdd", 160 | "panelTitle.activeForeground": "#33374c", 161 | "panelTitle.inactiveForeground": "#8389a3", 162 | "peekView.border": "#cbcfda", 163 | "peekViewEditor.background": "#e8e9ec", 164 | "peekViewEditor.matchHighlightBackground": "#c5733940", 165 | "peekViewEditorGutter.background": "#dcdfe7", 166 | "peekViewResult.background": "#dcdfe7", 167 | "peekViewResult.fileForeground": "#33374c", 168 | "peekViewResult.lineForeground": "#8389a3", 169 | "peekViewResult.matchHighlightBackground": "#c5733940", 170 | "peekViewResult.selectionBackground": "#cacdd7", 171 | "peekViewTitle.background": "#dcdfe7", 172 | "peekViewTitleDescription.foreground": "#8389a3", 173 | "peekViewTitleLabel.foreground": "#33374c", 174 | "pickerGroup.border": "#8389a34d", 175 | "pickerGroup.foreground": "#2d539e", 176 | "problemsErrorIcon.foreground": "#cc517a", 177 | "problemsInfoIcon.foreground": "#3f83a6", 178 | "problemsWarningIcon.foreground": "#c57339", 179 | "progressBar.background": "#2d539e", 180 | "quickInput.background": "#dcdfe7", 181 | "quickInput.foreground": "#8389a3", 182 | "quickInputList.focusBackground": "#cad0de", 183 | "scrollbar.shadow": "#363d634d", 184 | "scrollbarSlider.background": "#cbcfda80", 185 | "scrollbarSlider.hoverBackground": "#cbcfdaa0", 186 | "selection.background": "#aeb2c666", 187 | "settings.headerForeground": "#33374c", 188 | "settings.modifiedItemIndicator": "#3f83a64c", 189 | "sideBar.background": "#e8e9ec", 190 | "sideBar.border": "#c8cfdd", 191 | "sideBar.dropBackground": "#2d539e20", 192 | "sideBar.foreground": "#33374c", 193 | "sideBarSectionHeader.background": "#c8cfdd", 194 | "sideBarSectionHeader.foreground": "#8389a3", 195 | "statusBar.background": "#c8cfdd", 196 | "statusBar.debuggingBackground": "#c8cfdd", 197 | "statusBar.debuggingForeground": "#8389a3", 198 | "statusBar.foreground": "#8389a3", 199 | "statusBar.noFolderBackground": "#c8cfdd", 200 | "statusBar.noFolderForeground": "#8389a3", 201 | "statusBarItem.errorBackground": "#cc517a", 202 | "statusBarItem.errorForeground": "#e8e9ec", 203 | "statusBarItem.hoverBackground": "#8389a320", 204 | "symbolIcon.classForeground": "#c57339", 205 | "symbolIcon.constructorForeground": "#c57339", 206 | "symbolIcon.enumeratorForeground": "#c57339", 207 | "symbolIcon.enumeratorMemberForeground": "#3f83a6", 208 | "symbolIcon.eventForeground": "#c57339", 209 | "symbolIcon.fieldForeground": "#3f83a6", 210 | "symbolIcon.functionForeground": "#7759b4", 211 | "symbolIcon.interfaceForeground": "#3f83a6", 212 | "symbolIcon.methodForeground": "#7759b4", 213 | "symbolIcon.variableForeground": "#3f83a6", 214 | "tab.activeBackground": "#e8e9ec", 215 | "tab.activeForeground": "#33374c", 216 | "tab.activeModifiedBorder": "#3f83a6", 217 | "tab.border": "#c8cfdd", 218 | "tab.hoverBackground": "#dcdfe7", 219 | "tab.inactiveBackground": "#c8cfdd", 220 | "tab.inactiveForeground": "#8389a3", 221 | "tab.inactiveModifiedBorder": "#3f83a680", 222 | "tab.unfocusedActiveForeground": "#8389a3", 223 | "tab.unfocusedInactiveForeground": "#8389a380", 224 | "terminal.ansiBlack": "#dcdfe7", 225 | "terminal.ansiBlue": "#2d539e", 226 | "terminal.ansiBrightBlack": "#8389a3", 227 | "terminal.ansiBrightBlue": "#22478e", 228 | "terminal.ansiBrightCyan": "#327698", 229 | "terminal.ansiBrightGreen": "#598030", 230 | "terminal.ansiBrightMagenta": "#6845ad", 231 | "terminal.ansiBrightRed": "#cc3768", 232 | "terminal.ansiBrightWhite": "#262a3f", 233 | "terminal.ansiBrightYellow": "#b6662d", 234 | "terminal.ansiCyan": "#3f83a6", 235 | "terminal.ansiGreen": "#668e3d", 236 | "terminal.ansiMagenta": "#7759b4", 237 | "terminal.ansiRed": "#cc517a", 238 | "terminal.ansiWhite": "#33374c", 239 | "terminal.ansiYellow": "#c57339", 240 | "terminal.foreground": "#33374c", 241 | "terminal.selectionBackground": "#aeb2c666", 242 | "terminalCommandDecoration.defaultBackground": "#8389a3", 243 | "terminalCommandDecoration.errorBackground": "#cc517a", 244 | "terminalCommandDecoration.successBackground": "#2d539e", 245 | "textLink.activeForeground": "#2d539e", 246 | "textLink.foreground": "#2d539e", 247 | "titleBar.activeBackground": "#c8cfdd", 248 | "titleBar.activeForeground": "#33374c", 249 | "titleBar.inactiveBackground": "#c8cfdd", 250 | "titleBar.inactiveForeground": "#8389a3", 251 | "tree.indentGuidesStroke": "#cbcfda", 252 | "widget.shadow": "#363d634d" 253 | }, 254 | "tokenColors": [ 255 | { 256 | "scope": "comment", 257 | "settings": { 258 | "foreground": "#8389a3" 259 | } 260 | }, 261 | { 262 | "scope": [ 263 | "constant", 264 | "support.constant" 265 | ], 266 | "settings": { 267 | "foreground": "#7759b4" 268 | } 269 | }, 270 | { 271 | "scope": "entity.other.attribute-name", 272 | "settings": { 273 | "foreground": "#7759b4" 274 | } 275 | }, 276 | { 277 | "scope": "entity.name.class", 278 | "settings": { 279 | "foreground": "#33374c" 280 | } 281 | }, 282 | { 283 | "scope": "entity.name.function", 284 | "settings": { 285 | "foreground": "#33374c" 286 | } 287 | }, 288 | { 289 | "scope": "entity.name.section", 290 | "settings": { 291 | "foreground": "#c57339" 292 | } 293 | }, 294 | { 295 | "scope": "entity.name.tag", 296 | "settings": { 297 | "foreground": "#2d539e" 298 | } 299 | }, 300 | { 301 | "scope": [ 302 | "keyword", 303 | "keyword.operator.expression", 304 | "keyword.operator.new" 305 | ], 306 | "settings": { 307 | "foreground": "#2d539e" 308 | } 309 | }, 310 | { 311 | "scope": "keyword.control.at-rule, keyword.control.content", 312 | "settings": { 313 | "foreground": "#668e3d" 314 | } 315 | }, 316 | { 317 | "scope": "keyword.function", 318 | "settings": { 319 | "foreground": "#2d539e" 320 | } 321 | }, 322 | { 323 | "scope": "keyword.operator", 324 | "settings": { 325 | "foreground": "#33374c" 326 | } 327 | }, 328 | { 329 | "scope": "keyword.other.unit", 330 | "settings": { 331 | "foreground": "#7759b4" 332 | } 333 | }, 334 | { 335 | "scope": "markup.bold", 336 | "settings": { 337 | "fontStyle": "bold", 338 | "foreground": "#262a3f" 339 | } 340 | }, 341 | { 342 | "scope": "markup.fenced_code.block", 343 | "settings": { 344 | "foreground": "#8389a3" 345 | } 346 | }, 347 | { 348 | "scope": "markup.inline.raw.string", 349 | "settings": { 350 | "foreground": "#7759b4" 351 | } 352 | }, 353 | { 354 | "scope": "meta.link", 355 | "settings": { 356 | "foreground": "#3f83a6" 357 | } 358 | }, 359 | { 360 | "scope": "meta.brace.square", 361 | "settings": { 362 | "foreground": "#33374c" 363 | } 364 | }, 365 | { 366 | "scope": [ 367 | "entity.name.function.method", 368 | "markup.heading", 369 | "meta.definition.method" 370 | ], 371 | "settings": { 372 | "foreground": "#c57339" 373 | } 374 | }, 375 | { 376 | "scope": "meta.object-literal.key", 377 | "settings": { 378 | "foreground": "#2d539e" 379 | } 380 | }, 381 | { 382 | "scope": "meta.tag.attributes", 383 | "settings": { 384 | "foreground": "#7759b4" 385 | } 386 | }, 387 | { 388 | "scope": "meta.tag.sgml.doctype", 389 | "settings": { 390 | "foreground": "#8389a3" 391 | } 392 | }, 393 | { 394 | "scope": "meta.type.annotation", 395 | "settings": { 396 | "foreground": "#668e3d" 397 | } 398 | }, 399 | { 400 | "scope": "punctuation.definition.template-expression", 401 | "settings": { 402 | "foreground": "#668e3d" 403 | } 404 | }, 405 | { 406 | "scope": "punctuation.definition.block", 407 | "settings": { 408 | "foreground": "#33374c" 409 | } 410 | }, 411 | { 412 | "scope": "punctuation.definition.tag", 413 | "settings": { 414 | "foreground": "#2d539e" 415 | } 416 | }, 417 | { 418 | "scope": "storage", 419 | "settings": { 420 | "foreground": "#2d539e" 421 | } 422 | }, 423 | { 424 | "scope": "storage.type.function", 425 | "settings": { 426 | "foreground": "#2d539e" 427 | } 428 | }, 429 | { 430 | "scope": "string", 431 | "settings": { 432 | "foreground": "#3f83a6" 433 | } 434 | }, 435 | { 436 | "scope": "support", 437 | "settings": { 438 | "foreground": "#2d539e" 439 | } 440 | }, 441 | { 442 | "scope": "support.type.property-name", 443 | "settings": { 444 | "foreground": "#2d539e" 445 | } 446 | }, 447 | { 448 | "scope": "variable.language.this", 449 | "settings": { 450 | "foreground": "#668e3d" 451 | } 452 | }, 453 | { 454 | "scope": "text", 455 | "settings": { 456 | "foreground": "#33374c" 457 | } 458 | }, 459 | { 460 | "scope": "meta.diff.header", 461 | "settings": { 462 | "foreground": "#2d539e" 463 | } 464 | }, 465 | { 466 | "scope": "meta.diff.range", 467 | "settings": { 468 | "foreground": "#3f83a6" 469 | } 470 | }, 471 | { 472 | "scope": "entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector-suffix.css", 473 | "settings": { 474 | "foreground": "#33374c" 475 | } 476 | }, 477 | { 478 | "scope": "markup.deleted.diff", 479 | "settings": { 480 | "foreground": "#cc517a" 481 | } 482 | }, 483 | { 484 | "scope": "markup.inserted.diff", 485 | "settings": { 486 | "foreground": "#668e3d" 487 | } 488 | }, 489 | { 490 | "scope": "support.type.class.flowtype", 491 | "settings": { 492 | "foreground": "#668e3d" 493 | } 494 | }, 495 | { 496 | "scope": "punctuation.definition.block.tag.jsdoc", 497 | "settings": { 498 | "foreground": "#668e3d" 499 | } 500 | }, 501 | { 502 | "scope": "storage.type.class.jsdoc", 503 | "settings": { 504 | "foreground": "#668e3d" 505 | } 506 | }, 507 | { 508 | "scope": "variable.other.jsdoc", 509 | "settings": { 510 | "foreground": "#33374c" 511 | } 512 | }, 513 | { 514 | "scope": "entity.name.import.go", 515 | "settings": { 516 | "foreground": "#3f83a6" 517 | } 518 | }, 519 | { 520 | "scope": "markup.underline.link", 521 | "settings": { 522 | "foreground": "#2d539e" 523 | } 524 | }, 525 | { 526 | "scope": "keyword.other.important.scss", 527 | "settings": { 528 | "foreground": "#c57339" 529 | } 530 | }, 531 | { 532 | "scope": "variable.interpolation.scss", 533 | "settings": { 534 | "foreground": "#668e3d" 535 | } 536 | }, 537 | { 538 | "scope": "variable.scss", 539 | "settings": { 540 | "foreground": "#3f83a6" 541 | } 542 | } 543 | ], 544 | "semanticHighlighting": true, 545 | "semanticTokenColors": { 546 | "variable": "#33374c" 547 | } 548 | } -------------------------------------------------------------------------------- /src/themes/dark.ts: -------------------------------------------------------------------------------- 1 | import {Color} from '../color'; 2 | import {VscodePalette} from '../types/vscode-palette'; 3 | import {VscodeTheme} from '../types/vscode-theme'; 4 | 5 | export function create(palette: VscodePalette): VscodeTheme { 6 | const p = palette; 7 | return { 8 | name: 'Iceberg', 9 | colors: { 10 | 'activityBar.background': p.editor.bg, 11 | 'activityBar.foreground': p.editor.fg, 12 | 'activityBar.inactiveForeground': p.tokens.comment, 13 | 'activityBarBadge.background': p.colors.blue, 14 | 'activityBarBadge.foreground': p.editor.bg, 15 | 'badge.background': p.tokens.comment.withAlpha(0.125), 16 | 'badge.foreground': p.tokens.comment, 17 | 'breadcrumb.activeSelectionForeground': p.editor.fg, 18 | 'breadcrumb.background': p.editor.bg, 19 | 'breadcrumb.focusForeground': p.editor.fg, 20 | 'breadcrumb.foreground': p.tokens.comment, 21 | 'breadcrumbPicker.background': p.floating.bg, 22 | 'button.background': p.editor.fg, 23 | 'button.foreground': p.editor.bg, 24 | 'button.hoverBackground': p.ansi.brightWhite, 25 | 'debugConsole.errorForeground': p.colors.red, 26 | 'debugConsole.infoForeground': p.colors.lblue, 27 | 'debugConsole.sourceForeground': p.editor.fg, 28 | 'debugConsole.warningForeground': p.colors.orange, 29 | 'debugConsoleInputIcon.foreground': p.editor.fg, 30 | 'debugIcon.breakpointCurrentStackframeForeground': p.colors.orange, 31 | 'debugIcon.breakpointDisabledForeground': p.tokens.comment, 32 | 'debugIcon.breakpointForeground': p.colors.red, 33 | 'debugIcon.breakpointStackframeForeground': p.colors.green, 34 | 'debugIcon.breakpointUnverifiedForeground': p.tokens.comment, 35 | 'debugIcon.continueForeground': p.colors.blue, 36 | 'debugIcon.disconnectForeground': p.colors.red.withAlpha(0.3), 37 | 'debugIcon.pauseForeground': p.colors.blue, 38 | 'debugIcon.restartForeground': p.colors.green, 39 | 'debugIcon.startForeground': p.colors.green, 40 | 'debugIcon.stepBackForeground': p.colors.blue, 41 | 'debugIcon.stepIntoForeground': p.colors.blue, 42 | 'debugIcon.stepOutForeground': p.colors.blue, 43 | 'debugIcon.stepOverForeground': p.colors.blue, 44 | 'debugIcon.stopForeground': p.colors.red, 45 | 'debugTokenExpression.boolean': p.colors.purple, 46 | 'debugTokenExpression.error': p.colors.red, 47 | 'debugTokenExpression.name': p.editor.fg, 48 | 'debugTokenExpression.number': p.colors.purple, 49 | 'debugTokenExpression.string': p.colors.lblue, 50 | 'debugTokenExpression.value': p.colors.purple, 51 | 'debugToolBar.background': p.floating.bg, 52 | descriptionForeground: p.tokens.comment, 53 | 'diffEditor.insertedTextBackground': p.colors.green.withAlpha(0.125), 54 | 'diffEditor.removedTextBackground': p.colors.red.withAlpha(0.125), 55 | 'dropdown.background': p.input.bg, 56 | 'dropdown.border': p.input.bg, 57 | 'dropdown.foreground': p.input.fg, 58 | 'editor.background': p.editor.bg, 59 | 'editor.foreground': p.editor.fg, 60 | 'editor.findMatchBackground': p.colors.orange.withAlpha(0.5), 61 | 'editor.findMatchHighlightBackground': p.colors.orange.withAlpha(0.25), 62 | 'editor.foldBackground': p.fold.bg, 63 | 'editor.lineHighlightBackground': p.editor.lineHighlight.bg, 64 | 'editor.rangeHighlightBackground': p.colors.orange.withAlpha(0.1), 65 | 'editor.selectionBackground': p.editor.selection.bg, 66 | 'editor.wordHighlightBackground': p.colors.blue.withAlpha(0.25), 67 | 'editor.wordHighlightStrongBackground': p.colors.blue.withAlpha(0.5), 68 | 'editorActionList.background': p.floating.bg, 69 | 'editorActionList.focusBackground': p.floating.list.selection.bg, 70 | 'editorActionList.focusForeground': p.floating.list.selection.fg, 71 | 'editorActionList.foreground': p.editor.fg, 72 | 'editorBracketHighlight.foreground1': p.colors.blue, 73 | 'editorBracketHighlight.foreground2': p.colors.lblue, 74 | 'editorBracketHighlight.foreground3': p.colors.green, 75 | 'editorBracketHighlight.foreground4': p.colors.orange, 76 | 'editorBracketHighlight.foreground5': p.colors.purple, 77 | 'editorBracketHighlight.foreground6': Color.transparent(), 78 | 'editorBracketHighlight.unexpectedBracket.foreground': p.colors.red, 79 | 'editorBracketMatch.background': p.editor.bracketMatch.bg, 80 | 'editorBracketMatch.border': p.editor.bracketMatch.bg, 81 | 'editorCursor.foreground': p.editor.fg, 82 | 'editorError.foreground': p.colors.red, 83 | 'editorGroup.border': p.titleBar.active.bg, 84 | 'editorGroup.dropBackground': p.colors.blue.withAlpha(0.125), 85 | 'editorGroupHeader.tabsBackground': p.titleBar.active.bg, 86 | 'editorGutter.addedBackground': p.colors.green.withAlpha(0.5), 87 | 'editorGutter.background': p.editor.gutter.bg, 88 | 'editorGutter.deletedBackground': p.colors.red.withAlpha(0.5), 89 | 'editorGutter.modifiedBackground': p.colors.green.withAlpha(0.5), 90 | 'editorHoverWidget.background': p.floating.bg, 91 | 'editorHoverWidget.border': p.floating.bg, 92 | 'editorHoverWidget.foreground': p.editor.fg, 93 | 'editorHoverWidget.statusBarBackground': p.floating.bg, 94 | 'editorIndentGuide.activeBackground1': p.editor.whitespace.fg, 95 | 'editorIndentGuide.background1': p.editor.whitespace.fg.withAlpha(0.25), 96 | 'editorLightBulb.foreground': p.colors.orange, 97 | 'editorLightBulbAutoFix.foreground': p.colors.lblue, 98 | 'editorLineNumber.activeForeground': p.editor.gutter.active.fg, 99 | 'editorLineNumber.foreground': p.editor.gutter.fg, 100 | 'editorLink.activeForeground': p.colors.blue, 101 | 'editorMarkerNavigation.background': p.editor.gutter.bg, 102 | 'editorOverviewRuler.addedForeground': p.colors.green.withAlpha(0.5), 103 | 'editorOverviewRuler.border': p.editor.whitespace.fg.withAlpha(0.25), 104 | 'editorOverviewRuler.deletedForeground': p.colors.red.withAlpha(0.5), 105 | 'editorOverviewRuler.errorForeground': p.colors.red, 106 | 'editorOverviewRuler.infoForeground': p.ansi.brightCyan.withAlpha(0.5), 107 | 'editorOverviewRuler.modifiedForeground': p.colors.green.withAlpha(0.5), 108 | 'editorOverviewRuler.warningForeground': p.colors.orange.withAlpha(0.5), 109 | 'editorOverviewRuler.wordHighlightForeground': 110 | p.colors.blue.withAlpha(0.5), 111 | 'editorRuler.foreground': p.editor.whitespace.fg, 112 | 'editorSuggestWidget.selectedBackground': p.editor.fg.withAlpha(0.125), 113 | 'editorWhitespace.foreground': p.editor.whitespace.fg, 114 | 'editorWidget.background': p.floating.bg, 115 | 'editorWidget.border': p.floating.bg, 116 | 'editorWarning.foreground': p.colors.orange, 117 | 'extensionButton.prominentBackground': p.editor.fg, 118 | 'extensionButton.prominentForeground': p.editor.bg, 119 | 'extensionButton.prominentHoverBackground': p.ansi.brightWhite, 120 | foreground: p.editor.fg, 121 | focusBorder: p.editor.whitespace.fg, 122 | 'gitDecoration.addedResourceForeground': p.colors.green, 123 | 'gitDecoration.conflictingResourceForeground': p.colors.orange, 124 | 'gitDecoration.deletedResourceForeground': p.colors.red, 125 | 'gitDecoration.ignoredResourceForeground': p.tokens.comment, 126 | 'gitDecoration.modifiedResourceForeground': p.colors.lblue, 127 | 'gitDecoration.renamedResourceForeground': p.colors.purple, 128 | 'gitDecoration.stageDeletedResourceForeground': p.colors.red, 129 | 'gitDecoration.stageModifiedResourceForeground': p.colors.lblue, 130 | 'gitDecoration.submoduleResourceForeground': p.tokens.comment, 131 | 'gitDecoration.untrackedResourceForeground': p.tokens.comment, 132 | 'input.background': p.input.bg, 133 | 'input.foreground': p.input.fg, 134 | 'input.placeholderForeground': p.editor.fg.withAlpha(0.25), 135 | 'inputOption.activeBorder': p.colors.blue, 136 | 'inputValidation.errorBackground': p.tints.red.bg, 137 | 'inputValidation.errorBorder': p.colors.red, 138 | 'list.activeSelectionBackground': p.list.activeSelection.bg, 139 | 'list.activeSelectionForeground': p.editor.fg, 140 | 'list.dropBackground': p.colors.blue.withAlpha(0.125), 141 | 'list.errorForeground': p.colors.red, 142 | 'list.highlightForeground': p.colors.green, 143 | 'list.inactiveSelectionBackground': p.list.inactiveSelection.bg, 144 | 'list.focusForeground': p.list.focus.fg, 145 | 'list.hoverBackground': p.list.hover.bg, 146 | 'list.warningForeground': p.colors.orange, 147 | 'menu.background': p.floating.bg, 148 | 'menu.foreground': p.editor.fg, 149 | 'menu.selectionBackground': p.floating.list.selection.bg, 150 | 'menu.selectionForeground': p.floating.list.selection.fg, 151 | 'menu.separatorBackground': p.floating.separator, 152 | 'menubar.selectionBackground': p.menubar.selection.bg, 153 | 'menubar.selectionForeground': p.menubar.selection.fg, 154 | 'merge.currentHeaderBackground': p.colors.purple.withAlpha(0.25), 155 | 'merge.currentContentBackground': p.colors.purple.withAlpha(0.125), 156 | 'merge.incomingHeaderBackground': p.colors.lblue.withAlpha(0.25), 157 | 'merge.incomingContentBackground': p.colors.lblue.withAlpha(0.125), 158 | 'notifications.background': p.floating.bg, 159 | 'notifications.border': p.floating.separator, 160 | 'notifications.foreground': p.editor.fg, 161 | 'notificationCenterHeader.background': p.floating.bg, 162 | 'notificationsErrorIcon.foreground': p.colors.red, 163 | 'notificationsInfoIcon.foreground': p.colors.lblue, 164 | 'notificationsWarningIcon.foreground': p.colors.orange, 165 | 'panel.background': p.editor.bg, 166 | 'panel.border': p.titleBar.active.bg, 167 | 'panelTitle.activeForeground': p.editor.fg, 168 | 'panelTitle.inactiveForeground': p.tokens.comment, 169 | 'peekView.border': p.editor.whitespace.fg, 170 | 'peekViewEditor.background': p.editor.bg, 171 | 'peekViewEditor.matchHighlightBackground': 172 | p.colors.orange.withAlpha(0.25), 173 | 'peekViewEditorGutter.background': p.editor.gutter.bg, 174 | 'peekViewResult.background': p.floating.bg, 175 | 'peekViewResult.fileForeground': p.editor.fg, 176 | 'peekViewResult.lineForeground': p.tokens.comment, 177 | 'peekViewResult.matchHighlightBackground': 178 | p.colors.orange.withAlpha(0.25), 179 | 'peekViewResult.selectionBackground': p.editor.selection.bg, 180 | 'peekViewTitle.background': p.floating.bg, 181 | 'peekViewTitleDescription.foreground': p.tokens.comment, 182 | 'peekViewTitleLabel.foreground': p.editor.fg, 183 | 'pickerGroup.border': p.floating.separator, 184 | 'pickerGroup.foreground': p.colors.blue, 185 | 'problemsErrorIcon.foreground': p.colors.red, 186 | 'problemsInfoIcon.foreground': p.colors.lblue, 187 | 'problemsWarningIcon.foreground': p.colors.orange, 188 | 'progressBar.background': p.colors.blue, 189 | 'quickInput.background': p.floating.bg, 190 | 'quickInput.foreground': p.tokens.comment, 191 | 'quickInputList.focusBackground': p.list.focus.bg, 192 | 'scrollbar.shadow': p.floating.shadow, 193 | 'scrollbarSlider.background': p.editor.whitespace.fg.withAlpha(0.5), 194 | 'scrollbarSlider.hoverBackground': 195 | p.editor.whitespace.fg.withAlpha(0.628), 196 | 'selection.background': p.overlaySelection, 197 | 'settings.headerForeground': p.editor.fg, 198 | 'settings.modifiedItemIndicator': p.colors.lblue.withAlpha(0.298), 199 | 'sideBar.background': p.editor.bg, 200 | 'sideBar.border': p.titleBar.active.bg, 201 | 'sideBar.dropBackground': p.colors.blue.withAlpha(0.125), 202 | 'sideBar.foreground': p.editor.fg, 203 | 'sideBarSectionHeader.background': p.editor.whitespace.fg, 204 | 'sideBarSectionHeader.foreground': p.tokens.comment, 205 | 'statusBar.background': p.statusBar.bg, 206 | 'statusBar.debuggingBackground': p.statusBar.bg, 207 | 'statusBar.debuggingForeground': p.statusBar.fg, 208 | 'statusBar.foreground': p.statusBar.fg, 209 | 'statusBar.noFolderBackground': p.statusBar.bg, 210 | 'statusBar.noFolderForeground': p.statusBar.fg, 211 | 'statusBarItem.errorBackground': p.colors.red, 212 | 'statusBarItem.errorForeground': p.editor.bg, 213 | 'statusBarItem.hoverBackground': p.statusBar.item.hover.bg, 214 | 'symbolIcon.classForeground': p.colors.orange, 215 | 'symbolIcon.constructorForeground': p.colors.orange, 216 | 'symbolIcon.enumeratorForeground': p.colors.orange, 217 | 'symbolIcon.enumeratorMemberForeground': p.colors.lblue, 218 | 'symbolIcon.eventForeground': p.colors.orange, 219 | 'symbolIcon.fieldForeground': p.colors.lblue, 220 | 'symbolIcon.functionForeground': p.colors.purple, 221 | 'symbolIcon.interfaceForeground': p.colors.lblue, 222 | 'symbolIcon.methodForeground': p.colors.purple, 223 | 'symbolIcon.variableForeground': p.colors.lblue, 224 | 'tab.activeBackground': p.tab.active.bg, 225 | 'tab.activeForeground': p.tab.active.fg, 226 | 'tab.activeModifiedBorder': p.colors.lblue, 227 | 'tab.border': p.titleBar.active.bg, 228 | 'tab.hoverBackground': p.tab.hover.bg, 229 | 'tab.inactiveBackground': p.tab.inactive.bg, 230 | 'tab.inactiveForeground': p.tab.inactive.fg, 231 | 'tab.inactiveModifiedBorder': p.colors.lblue.withAlpha(0.5), 232 | 'tab.unfocusedActiveForeground': p.tab.unfocusedActive.fg, 233 | 'tab.unfocusedInactiveForeground': p.tab.unfocusedInactive.fg, 234 | 'terminal.ansiBlack': p.ansi.black, 235 | 'terminal.ansiBlue': p.ansi.blue, 236 | 'terminal.ansiBrightBlack': p.ansi.brightBlack, 237 | 'terminal.ansiBrightBlue': p.ansi.brightBlue, 238 | 'terminal.ansiBrightCyan': p.ansi.brightCyan, 239 | 'terminal.ansiBrightGreen': p.ansi.brightGreen, 240 | 'terminal.ansiBrightMagenta': p.ansi.brightMagenta, 241 | 'terminal.ansiBrightRed': p.ansi.brightRed, 242 | 'terminal.ansiBrightWhite': p.ansi.brightWhite, 243 | 'terminal.ansiBrightYellow': p.ansi.brightYellow, 244 | 'terminal.ansiCyan': p.ansi.cyan, 245 | 'terminal.ansiGreen': p.ansi.green, 246 | 'terminal.ansiMagenta': p.ansi.magenta, 247 | 'terminal.ansiRed': p.ansi.red, 248 | 'terminal.ansiWhite': p.ansi.white, 249 | 'terminal.ansiYellow': p.ansi.yellow, 250 | 'terminal.foreground': p.ansi.white, 251 | 'terminal.selectionBackground': p.overlaySelection, 252 | 'terminalCommandDecoration.defaultBackground': p.tokens.comment, 253 | 'terminalCommandDecoration.errorBackground': p.colors.red, 254 | 'terminalCommandDecoration.successBackground': p.colors.blue, 255 | 'textLink.activeForeground': p.colors.blue, 256 | 'textLink.foreground': p.colors.blue, 257 | 'titleBar.activeBackground': p.titleBar.active.bg, 258 | 'titleBar.activeForeground': p.titleBar.active.fg, 259 | 'titleBar.inactiveBackground': p.titleBar.inactive.bg, 260 | 'titleBar.inactiveForeground': p.titleBar.inactive.fg, 261 | 'tree.indentGuidesStroke': p.editor.whitespace.fg, 262 | 'widget.shadow': p.floating.shadow, 263 | }, 264 | tokenColors: [ 265 | { 266 | scope: 'comment', 267 | settings: { 268 | foreground: p.tokens.comment, 269 | }, 270 | }, 271 | { 272 | scope: ['constant', 'support.constant'], 273 | settings: { 274 | foreground: p.colors.purple, 275 | }, 276 | }, 277 | { 278 | scope: 'entity.other.attribute-name', 279 | settings: { 280 | foreground: p.colors.purple, 281 | }, 282 | }, 283 | { 284 | scope: 'entity.name.class', 285 | settings: { 286 | foreground: p.editor.fg, 287 | }, 288 | }, 289 | { 290 | scope: 'entity.name.function', 291 | settings: { 292 | foreground: p.editor.fg, 293 | }, 294 | }, 295 | { 296 | scope: 'entity.name.section', 297 | settings: { 298 | foreground: p.colors.orange, 299 | }, 300 | }, 301 | { 302 | scope: 'entity.name.tag', 303 | settings: { 304 | foreground: p.colors.blue, 305 | }, 306 | }, 307 | { 308 | scope: [ 309 | 'keyword', 310 | 'keyword.operator.expression', 311 | 'keyword.operator.new', 312 | ], 313 | settings: { 314 | foreground: p.colors.blue, 315 | }, 316 | }, 317 | { 318 | scope: 'keyword.control.at-rule, keyword.control.content', 319 | settings: { 320 | foreground: p.colors.green, 321 | }, 322 | }, 323 | { 324 | scope: 'keyword.function', 325 | settings: { 326 | foreground: p.colors.blue, 327 | }, 328 | }, 329 | { 330 | scope: 'keyword.operator', 331 | settings: { 332 | foreground: p.editor.fg, 333 | }, 334 | }, 335 | { 336 | scope: 'keyword.other.unit', 337 | settings: { 338 | foreground: p.colors.purple, 339 | }, 340 | }, 341 | { 342 | scope: 'markup.bold', 343 | settings: { 344 | fontStyle: 'bold', 345 | foreground: p.ansi.brightWhite, 346 | }, 347 | }, 348 | { 349 | scope: 'markup.fenced_code.block', 350 | settings: { 351 | foreground: p.tokens.comment, 352 | }, 353 | }, 354 | { 355 | scope: 'markup.inline.raw.string', 356 | settings: { 357 | foreground: p.colors.purple, 358 | }, 359 | }, 360 | { 361 | scope: 'meta.link', 362 | settings: { 363 | foreground: p.colors.lblue, 364 | }, 365 | }, 366 | { 367 | scope: 'meta.brace.square', 368 | settings: { 369 | foreground: p.editor.fg, 370 | }, 371 | }, 372 | { 373 | scope: [ 374 | 'entity.name.function.method', 375 | 'markup.heading', 376 | 'meta.definition.method', 377 | ], 378 | settings: { 379 | foreground: p.colors.orange, 380 | }, 381 | }, 382 | { 383 | scope: 'meta.object-literal.key', 384 | settings: { 385 | foreground: p.colors.blue, 386 | }, 387 | }, 388 | { 389 | scope: 'meta.tag.attributes', 390 | settings: { 391 | foreground: p.colors.purple, 392 | }, 393 | }, 394 | { 395 | scope: 'meta.tag.sgml.doctype', 396 | settings: { 397 | foreground: p.tokens.comment, 398 | }, 399 | }, 400 | { 401 | scope: 'meta.type.annotation', 402 | settings: { 403 | foreground: p.colors.green, 404 | }, 405 | }, 406 | { 407 | scope: 'punctuation.definition.template-expression', 408 | settings: { 409 | foreground: p.colors.green, 410 | }, 411 | }, 412 | { 413 | scope: 'punctuation.definition.block', 414 | settings: { 415 | foreground: p.editor.fg, 416 | }, 417 | }, 418 | { 419 | scope: 'punctuation.definition.tag', 420 | settings: { 421 | foreground: p.colors.blue, 422 | }, 423 | }, 424 | { 425 | scope: 'storage', 426 | settings: { 427 | foreground: p.colors.blue, 428 | }, 429 | }, 430 | { 431 | scope: 'storage.type.function', 432 | settings: { 433 | foreground: p.colors.blue, 434 | }, 435 | }, 436 | { 437 | scope: 'string', 438 | settings: { 439 | foreground: p.colors.lblue, 440 | }, 441 | }, 442 | { 443 | scope: 'support', 444 | settings: { 445 | foreground: p.colors.blue, 446 | }, 447 | }, 448 | { 449 | scope: 'support.type.property-name', 450 | settings: { 451 | foreground: p.colors.blue, 452 | }, 453 | }, 454 | { 455 | scope: 'variable.language.this', 456 | settings: { 457 | foreground: p.colors.green, 458 | }, 459 | }, 460 | { 461 | scope: 'text', 462 | settings: { 463 | foreground: p.editor.fg, 464 | }, 465 | }, 466 | { 467 | scope: 'meta.diff.header', 468 | settings: { 469 | foreground: p.colors.blue, 470 | }, 471 | }, 472 | { 473 | scope: 'meta.diff.range', 474 | settings: { 475 | foreground: p.colors.lblue, 476 | }, 477 | }, 478 | { 479 | scope: 480 | 'entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector-suffix.css', 481 | settings: { 482 | foreground: p.editor.fg, 483 | }, 484 | }, 485 | { 486 | scope: 'markup.deleted.diff', 487 | settings: { 488 | foreground: p.colors.red, 489 | }, 490 | }, 491 | { 492 | scope: 'markup.inserted.diff', 493 | settings: { 494 | foreground: p.colors.green, 495 | }, 496 | }, 497 | { 498 | scope: 'support.type.class.flowtype', 499 | settings: { 500 | foreground: p.colors.green, 501 | }, 502 | }, 503 | { 504 | scope: 'punctuation.definition.block.tag.jsdoc', 505 | settings: { 506 | foreground: p.colors.green, 507 | }, 508 | }, 509 | { 510 | scope: 'storage.type.class.jsdoc', 511 | settings: { 512 | foreground: p.colors.green, 513 | }, 514 | }, 515 | { 516 | scope: 'variable.other.jsdoc', 517 | settings: { 518 | foreground: p.editor.fg, 519 | }, 520 | }, 521 | { 522 | scope: 'entity.name.import.go', 523 | settings: { 524 | foreground: p.colors.lblue, 525 | }, 526 | }, 527 | { 528 | scope: 'markup.underline.link', 529 | settings: { 530 | foreground: p.colors.blue, 531 | }, 532 | }, 533 | { 534 | scope: 'keyword.other.important.scss', 535 | settings: { 536 | foreground: p.colors.orange, 537 | }, 538 | }, 539 | { 540 | scope: 'variable.interpolation.scss', 541 | settings: { 542 | foreground: p.colors.green, 543 | }, 544 | }, 545 | { 546 | scope: 'variable.scss', 547 | settings: { 548 | foreground: p.colors.lblue, 549 | }, 550 | }, 551 | ], 552 | semanticHighlighting: true, 553 | semanticTokenColors: { 554 | variable: p.editor.fg, 555 | }, 556 | }; 557 | } 558 | --------------------------------------------------------------------------------