From a99b5c6f84334bdcbb0519c2b1b8b0ffb27b83c3 Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher <239676+necolas@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:58:09 -0700 Subject: [PATCH 1/2] feat(theme): Move theme package into monorepo Register @pierre/theme as a workspace package with moon tasks, repo tooling, and local consumers wired to workspace:* dependencies. Rework generated themes around role-based palettes and shared color utilities, including Protanopia & Deuteranopia and Tritanopia variants for Pierre Light and Pierre Dark. Add accessibility docs, preview generation, and node:test coverage for generated themes plus CVD contrast and distinguishability gates. --- .github/workflows/ci.yml | 5 +- .github/workflows/theme-publish.yml | 51 + .gitignore | 2 + .moon/workspace.yml | 9 +- .vscode/extensions.json | 1 + .vscode/launch.json | 20 + .vscode/tasks.json | 13 + apps/diffshub/components/themeCatalog.ts | 4 +- apps/diffshub/package.json | 2 +- apps/diffshub/tsconfig.json | 3 + apps/docs/package.json | 2 +- bun.lock | 565 ++- bunfig.toml | 1 - moon.yml | 1 + package.json | 8 +- packages/diffs/package.json | 2 +- packages/theme/.gitignore | 6 + packages/theme/.vscodeignore | 19 + packages/theme/ACCESSIBILITY.md | 139 + packages/theme/CONTRIBUTING.md | 111 + packages/theme/DISPLAY-P3.md | 118 + packages/theme/LICENSE | 21 + packages/theme/README.md | 51 + packages/theme/icon.png | Bin 0 -> 4980 bytes packages/theme/moon.yml | 75 + packages/theme/package.json | 159 + packages/theme/scripts/README.package.md | 44 + packages/theme/scripts/build.ts | 203 + packages/theme/scripts/buildVsCodePackage.ts | 10 + packages/theme/scripts/createPreviews.ts | 40 + packages/theme/scripts/publishExtensions.ts | 29 + packages/theme/scripts/vsixPackageShim.ts | 60 + packages/theme/src/color/contrast.ts | 24 + packages/theme/src/color/cvd.ts | 321 ++ packages/theme/src/color/deltaE.ts | 101 + packages/theme/src/color/index.ts | 14 + packages/theme/src/color/p3.ts | 169 + packages/theme/src/color/srgb.ts | 39 + packages/theme/src/createTheme.ts | 1634 +++++++ packages/theme/src/createZedTheme.ts | 650 +++ packages/theme/src/palettes.ts | 337 ++ packages/theme/src/previews/cvd.ts | 226 + packages/theme/src/previews/p3.ts | 113 + packages/theme/src/previews/palette.ts | 156 + packages/theme/src/roles/Roles.ts | 69 + packages/theme/src/roles/dark.ts | 97 + packages/theme/src/roles/darkSoft.ts | 97 + packages/theme/src/roles/index.ts | 9 + packages/theme/src/roles/light.ts | 98 + packages/theme/src/roles/lightSoft.ts | 97 + packages/theme/src/roles/protanDeutanDark.ts | 72 + packages/theme/src/roles/protanDeutanLight.ts | 72 + packages/theme/src/roles/tritanopiaDark.ts | 61 + packages/theme/src/roles/tritanopiaLight.ts | 61 + packages/theme/test/build.test.ts | 177 + packages/theme/test/cvd.test.ts | 384 ++ packages/theme/test/helpers/cvd.ts | 164 + packages/theme/test/theme.test.ts | 318 ++ .../pierre-dark-protanopia-deuteranopia.json | 1894 ++++++++ packages/theme/themes/pierre-dark-soft.json | 1894 ++++++++ .../theme/themes/pierre-dark-tritanopia.json | 1894 ++++++++ .../theme/themes/pierre-dark-vibrant.json | 1894 ++++++++ packages/theme/themes/pierre-dark.json | 1894 ++++++++ .../pierre-light-protanopia-deuteranopia.json | 1894 ++++++++ packages/theme/themes/pierre-light-soft.json | 1894 ++++++++ .../theme/themes/pierre-light-tritanopia.json | 1894 ++++++++ .../theme/themes/pierre-light-vibrant.json | 1894 ++++++++ packages/theme/themes/pierre-light.json | 1894 ++++++++ packages/theme/tsconfig.json | 19 + packages/theme/zed/LICENSE.md | 20 + packages/theme/zed/README.md | 28 + packages/theme/zed/extension.toml | 7 + packages/theme/zed/themes/pierre.json | 3991 +++++++++++++++++ packages/theming/package.json | 4 +- packages/theming/src/collections/pierre.ts | 51 +- packages/theming/test/pierre.test.ts | 12 + packages/theming/test/shiki.test.ts | 24 +- tsconfig.json | 3 + 78 files changed, 30375 insertions(+), 58 deletions(-) create mode 100644 .github/workflows/theme-publish.yml create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 packages/theme/.gitignore create mode 100644 packages/theme/.vscodeignore create mode 100644 packages/theme/ACCESSIBILITY.md create mode 100644 packages/theme/CONTRIBUTING.md create mode 100644 packages/theme/DISPLAY-P3.md create mode 100644 packages/theme/LICENSE create mode 100644 packages/theme/README.md create mode 100644 packages/theme/icon.png create mode 100644 packages/theme/moon.yml create mode 100644 packages/theme/package.json create mode 100644 packages/theme/scripts/README.package.md create mode 100644 packages/theme/scripts/build.ts create mode 100644 packages/theme/scripts/buildVsCodePackage.ts create mode 100644 packages/theme/scripts/createPreviews.ts create mode 100644 packages/theme/scripts/publishExtensions.ts create mode 100644 packages/theme/scripts/vsixPackageShim.ts create mode 100644 packages/theme/src/color/contrast.ts create mode 100644 packages/theme/src/color/cvd.ts create mode 100644 packages/theme/src/color/deltaE.ts create mode 100644 packages/theme/src/color/index.ts create mode 100644 packages/theme/src/color/p3.ts create mode 100644 packages/theme/src/color/srgb.ts create mode 100644 packages/theme/src/createTheme.ts create mode 100644 packages/theme/src/createZedTheme.ts create mode 100644 packages/theme/src/palettes.ts create mode 100644 packages/theme/src/previews/cvd.ts create mode 100644 packages/theme/src/previews/p3.ts create mode 100644 packages/theme/src/previews/palette.ts create mode 100644 packages/theme/src/roles/Roles.ts create mode 100644 packages/theme/src/roles/dark.ts create mode 100644 packages/theme/src/roles/darkSoft.ts create mode 100644 packages/theme/src/roles/index.ts create mode 100644 packages/theme/src/roles/light.ts create mode 100644 packages/theme/src/roles/lightSoft.ts create mode 100644 packages/theme/src/roles/protanDeutanDark.ts create mode 100644 packages/theme/src/roles/protanDeutanLight.ts create mode 100644 packages/theme/src/roles/tritanopiaDark.ts create mode 100644 packages/theme/src/roles/tritanopiaLight.ts create mode 100644 packages/theme/test/build.test.ts create mode 100644 packages/theme/test/cvd.test.ts create mode 100644 packages/theme/test/helpers/cvd.ts create mode 100644 packages/theme/test/theme.test.ts create mode 100644 packages/theme/themes/pierre-dark-protanopia-deuteranopia.json create mode 100644 packages/theme/themes/pierre-dark-soft.json create mode 100644 packages/theme/themes/pierre-dark-tritanopia.json create mode 100644 packages/theme/themes/pierre-dark-vibrant.json create mode 100644 packages/theme/themes/pierre-dark.json create mode 100644 packages/theme/themes/pierre-light-protanopia-deuteranopia.json create mode 100644 packages/theme/themes/pierre-light-soft.json create mode 100644 packages/theme/themes/pierre-light-tritanopia.json create mode 100644 packages/theme/themes/pierre-light-vibrant.json create mode 100644 packages/theme/themes/pierre-light.json create mode 100644 packages/theme/tsconfig.json create mode 100644 packages/theme/zed/LICENSE.md create mode 100644 packages/theme/zed/README.md create mode 100644 packages/theme/zed/extension.toml create mode 100644 packages/theme/zed/themes/pierre.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cefee34a8..883bc3389 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,12 +75,15 @@ jobs: # --summary detailed appends an end-of-log recap naming every action # with status, duration, and cache hash, so a failed target is readable # from the log tail without scrolling through interleaved task output. + - name: Run format + run: >- + moon run root:format-check + - name: Run affected tasks run: >- moon ci --include-relations --summary detailed :build demo:build diffshub:build docs:build docs:build-trees-site path-store:build-demo :test :typecheck trees:test-e2e root:lint root:lint-css - root:format-check actions-pinned: name: Actions pinned to SHA diff --git a/.github/workflows/theme-publish.yml b/.github/workflows/theme-publish.yml new file mode 100644 index 000000000..ccfea9866 --- /dev/null +++ b/.github/workflows/theme-publish.yml @@ -0,0 +1,51 @@ +name: Publish Theme + +on: + release: + types: [published] + +permissions: + contents: read + +jobs: + extensions: + name: Publish VS Code and Open VSX extensions + runs-on: blacksmith-4vcpu-ubuntu-2404 + steps: + - name: Checkout code + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + + - name: Set up moon and caches + uses: ./.github/actions/setup + + - name: Publish extensions + env: + OVSX_PAT: ${{ secrets.OPEN_VSX_TOKEN }} + VSCE_PAT: ${{ secrets.VSCE_PAT }} + run: moonx theme:publish-extensions --ignore-ci-checks + + npm: + name: Publish @pierre/theme to npm + runs-on: blacksmith-4vcpu-ubuntu-2404 + permissions: + contents: read + id-token: write + steps: + - name: Checkout code + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + + - name: Set up moon and caches + uses: ./.github/actions/setup + + - name: Configure npm token + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: + printf '//registry.npmjs.org/:_authToken=%s\n' "$NODE_AUTH_TOKEN" > + ~/.npmrc + + - name: Publish to npm + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + working-directory: packages/theme + run: CI= bun publish --access public --provenance diff --git a/.gitignore b/.gitignore index d29884ad3..df04e69ad 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,9 @@ tsconfig.tsbuildinfo # Editor directories and files .vscode/* !.vscode/extensions.json +!.vscode/launch.json !.vscode/settings.json +!.vscode/tasks.json .idea .DS_Store *.suo diff --git a/.moon/workspace.yml b/.moon/workspace.yml index c65aab4a0..7e5d4be6e 100644 --- a/.moon/workspace.yml +++ b/.moon/workspace.yml @@ -21,9 +21,14 @@ vcs: sync: true hooks: pre-commit: - # Typecheck the projects affected by staged files (and their - # dependents), then let lint-staged fix and re-stage style issues. + # Typecheck the projects affected by staged files (and their dependents). + # Some affected checks build committed generated files first. Run the + # repo formatter over the post-build worktree, including generated files + # that were not staged. lint-staged still runs after that because it only + # sees staged paths and re-stages formatter/linter fixes for files that + # are included in the commit. - 'moon exec :typecheck --affected --status staged' + - 'moon run root:format' - 'bun lint-staged' pre-push: # Git LFS guard: forwards the hook arguments and stdin to git-lfs. diff --git a/.vscode/extensions.json b/.vscode/extensions.json index f02026666..56f3caf52 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,6 +2,7 @@ "recommendations": [ "YoavBls.pretty-ts-errors", "oxc.oxc-vscode", + "pierrecomputer.pierre-theme", "esbenp.prettier-vscode", "TypeScriptTeam.native-preview", "bradlc.vscode-tailwindcss", diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..4b83351d4 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run Theme Extension", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceFolder}/packages/theme"], + "preLaunchTask": "moon: theme build" + }, + { + "name": "Run Theme Extension Without Build", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceFolder}/packages/theme"] + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 000000000..7a0836475 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "moon: theme build", + "type": "shell", + "command": "moon", + "args": ["run", "theme:build"], + "group": "build", + "problemMatcher": [] + } + ] +} diff --git a/apps/diffshub/components/themeCatalog.ts b/apps/diffshub/components/themeCatalog.ts index 30683e589..a1d0a9055 100644 --- a/apps/diffshub/components/themeCatalog.ts +++ b/apps/diffshub/components/themeCatalog.ts @@ -3,6 +3,6 @@ import { themes } from '@pierre/theming/themes'; export const docsThemeCatalog = createThemeCatalog({ themes, - defaultLightThemeName: 'pierre-light', - defaultDarkThemeName: 'pierre-dark', + defaultLightThemeName: 'pierre-light-soft', + defaultDarkThemeName: 'pierre-dark-soft', }); diff --git a/apps/diffshub/package.json b/apps/diffshub/package.json index eec7d3ec7..d00e268fb 100644 --- a/apps/diffshub/package.json +++ b/apps/diffshub/package.json @@ -5,7 +5,7 @@ "dependencies": { "@pierre/diffs": "workspace:*", "@pierre/icons": "catalog:", - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@pierre/theming": "workspace:*", "@pierre/trees": "workspace:*", "@pierre/truncate": "workspace:*", diff --git a/apps/diffshub/tsconfig.json b/apps/diffshub/tsconfig.json index 3b829f9b9..022f4d770 100644 --- a/apps/diffshub/tsconfig.json +++ b/apps/diffshub/tsconfig.json @@ -18,6 +18,9 @@ { "path": "../../packages/truncate/tsconfig.json" }, + { + "path": "../../packages/theme/tsconfig.json" + }, { "path": "../../packages/theming/tsconfig.json" } diff --git a/apps/docs/package.json b/apps/docs/package.json index 756730c08..53c533cd1 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -6,7 +6,7 @@ "@icons-pack/react-simple-icons": "catalog:", "@pierre/diffs": "workspace:*", "@pierre/icons": "catalog:", - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@pierre/theming": "workspace:*", "@pierre/tree-test-data": "workspace:*", "@pierre/trees": "workspace:*", diff --git a/bun.lock b/bun.lock index 797ce6124..f0a8976fd 100644 --- a/bun.lock +++ b/bun.lock @@ -46,7 +46,7 @@ "dependencies": { "@pierre/diffs": "workspace:*", "@pierre/icons": "catalog:", - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@pierre/theming": "workspace:*", "@pierre/trees": "workspace:*", "@pierre/truncate": "workspace:*", @@ -84,7 +84,7 @@ "@icons-pack/react-simple-icons": "catalog:", "@pierre/diffs": "workspace:*", "@pierre/icons": "catalog:", - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@pierre/theming": "workspace:*", "@pierre/tree-test-data": "workspace:*", "@pierre/trees": "workspace:*", @@ -143,9 +143,9 @@ }, "packages/diffs": { "name": "@pierre/diffs", - "version": "1.2.9", + "version": "1.2.11", "dependencies": { - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@pierre/theming": "workspace:*", "@shikijs/transformers": "^3.0.0 || ^4.0.0", "diff": "catalog:", @@ -230,11 +230,23 @@ "next": ">=15", }, }, + "packages/theme": { + "name": "@pierre/theme", + "version": "1.1.0", + "devDependencies": { + "@types/bun": "catalog:", + "@types/culori": "catalog:", + "@vscode/vsce": "catalog:", + "culori": "catalog:", + "ovsx": "catalog:", + "typescript": "catalog:", + }, + }, "packages/theming": { "name": "@pierre/theming", "version": "0.0.1", "devDependencies": { - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@shikijs/themes": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", @@ -245,7 +257,7 @@ "typescript": "catalog:", }, "peerDependencies": { - "@pierre/theme": "^1.0.0", + "@pierre/theme": "^1.1.0", "@shikijs/themes": "^3.0.0 || ^4.0.0", "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0", @@ -334,7 +346,6 @@ "@octokit/rest": "22.0.0", "@pierre/icons": "0.5.0", "@pierre/storage": "0.0.10", - "@pierre/theme": "1.0.3", "@pierre/vscode-icons": "0.0.9", "@playwright/test": "1.51.1", "@radix-ui/react-avatar": "1.1.10", @@ -357,6 +368,7 @@ "@shikijs/transformers": "4.2.0", "@tailwindcss/postcss": "4.1.13", "@types/bun": "1.3.12", + "@types/culori": "4.0.1", "@types/hast": "3.0.4", "@types/jsdom": "28.0.1", "@types/mdast": "4.0.4", @@ -365,6 +377,7 @@ "@types/react-dom": "19.2.3", "@typescript/native-preview": "7.0.0-dev.20260128.1", "@vitejs/plugin-react": "5.0.3", + "@vscode/vsce": "3.2.2", "@vscode/web-custom-data": "0.6.3", "autoprefixer": "10.4.22", "babel-plugin-react-compiler": "1.0.0", @@ -373,6 +386,7 @@ "class-variance-authority": "0.7.1", "clsx": "2.1.1", "cmdk": "1.1.1", + "culori": "4.0.2", "diff": "8.0.3", "hast-util-heading-rank": "3.0.0", "hast-util-to-html": "9.0.5", @@ -385,6 +399,7 @@ "mitata": "1.0.34", "next": "16.2.3", "next-mdx-remote": "6.0.0", + "ovsx": "1.0.0", "oxfmt": "0.27.0", "oxlint": "1.42.0", "oxlint-tsgolint": "0.11.3", @@ -424,6 +439,32 @@ "@asamuzakjp/css-color": ["@asamuzakjp/css-color@3.2.0", "", { "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "lru-cache": "^10.4.3" } }, "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw=="], + "@azu/format-text": ["@azu/format-text@1.0.2", "", {}, "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg=="], + + "@azu/style-format": ["@azu/style-format@1.0.1", "", { "dependencies": { "@azu/format-text": "^1.0.1" } }, "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g=="], + + "@azure/abort-controller": ["@azure/abort-controller@2.1.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA=="], + + "@azure/core-auth": ["@azure/core-auth@1.10.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-util": "^1.13.0", "tslib": "^2.6.2" } }, "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg=="], + + "@azure/core-client": ["@azure/core-client@1.10.2", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-rest-pipeline": "^1.22.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "tslib": "^2.6.2" } }, "sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ=="], + + "@azure/core-rest-pipeline": ["@azure/core-rest-pipeline@1.24.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" } }, "sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg=="], + + "@azure/core-tracing": ["@azure/core-tracing@1.3.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ=="], + + "@azure/core-util": ["@azure/core-util@1.13.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A=="], + + "@azure/identity": ["@azure/identity@4.13.1", "", { "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.9.0", "@azure/core-client": "^1.9.2", "@azure/core-rest-pipeline": "^1.17.0", "@azure/core-tracing": "^1.0.0", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.0.0", "@azure/msal-browser": "^5.5.0", "@azure/msal-node": "^5.1.0", "open": "^10.1.0", "tslib": "^2.2.0" } }, "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw=="], + + "@azure/logger": ["@azure/logger@1.3.0", "", { "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA=="], + + "@azure/msal-browser": ["@azure/msal-browser@5.12.0", "", { "dependencies": { "@azure/msal-common": "16.7.0" } }, "sha512-eNf2aqx1C6I0yT1GEu5ukblFrmaBXGfe1bivpmlfqvK7giPZvoXLa404C8EfeHVsy6EIryfQuPRzuW1fPxWlHg=="], + + "@azure/msal-common": ["@azure/msal-common@16.7.0", "", {}, "sha512-Jb8Y7pX6KM42SIT7KWP6YbY3+vLbwB5b5m+tpiiOzMU1QeyelQzs9lO8jv1e7/Uj9r7tg7VjPvW4T0KB1jF3UQ=="], + + "@azure/msal-node": ["@azure/msal-node@5.2.3", "", { "dependencies": { "@azure/msal-common": "16.7.0", "jsonwebtoken": "^9.0.0" } }, "sha512-YYX4TchEVddVBiybKvKhV9QO/q22jgewP+BVxKG7Uh115voPcviGlypbKERDsqQdAiSTJrwi80gcWFjYKdo8+Q=="], + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], @@ -590,6 +631,8 @@ "@inquirer/type": ["@inquirer/type@4.0.7", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g=="], + "@isaacs/cliui": ["@isaacs/cliui@9.0.0", "", {}, "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg=="], + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], @@ -658,6 +701,36 @@ "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "@node-rs/crc32": ["@node-rs/crc32@1.10.6", "", { "optionalDependencies": { "@node-rs/crc32-android-arm-eabi": "1.10.6", "@node-rs/crc32-android-arm64": "1.10.6", "@node-rs/crc32-darwin-arm64": "1.10.6", "@node-rs/crc32-darwin-x64": "1.10.6", "@node-rs/crc32-freebsd-x64": "1.10.6", "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", "@node-rs/crc32-linux-arm64-gnu": "1.10.6", "@node-rs/crc32-linux-arm64-musl": "1.10.6", "@node-rs/crc32-linux-x64-gnu": "1.10.6", "@node-rs/crc32-linux-x64-musl": "1.10.6", "@node-rs/crc32-wasm32-wasi": "1.10.6", "@node-rs/crc32-win32-arm64-msvc": "1.10.6", "@node-rs/crc32-win32-ia32-msvc": "1.10.6", "@node-rs/crc32-win32-x64-msvc": "1.10.6" } }, "sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A=="], + + "@node-rs/crc32-android-arm-eabi": ["@node-rs/crc32-android-arm-eabi@1.10.6", "", { "os": "android", "cpu": "arm" }, "sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ=="], + + "@node-rs/crc32-android-arm64": ["@node-rs/crc32-android-arm64@1.10.6", "", { "os": "android", "cpu": "arm64" }, "sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w=="], + + "@node-rs/crc32-darwin-arm64": ["@node-rs/crc32-darwin-arm64@1.10.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg=="], + + "@node-rs/crc32-darwin-x64": ["@node-rs/crc32-darwin-x64@1.10.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA=="], + + "@node-rs/crc32-freebsd-x64": ["@node-rs/crc32-freebsd-x64@1.10.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg=="], + + "@node-rs/crc32-linux-arm-gnueabihf": ["@node-rs/crc32-linux-arm-gnueabihf@1.10.6", "", { "os": "linux", "cpu": "arm" }, "sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg=="], + + "@node-rs/crc32-linux-arm64-gnu": ["@node-rs/crc32-linux-arm64-gnu@1.10.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ=="], + + "@node-rs/crc32-linux-arm64-musl": ["@node-rs/crc32-linux-arm64-musl@1.10.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw=="], + + "@node-rs/crc32-linux-x64-gnu": ["@node-rs/crc32-linux-x64-gnu@1.10.6", "", { "os": "linux", "cpu": "x64" }, "sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw=="], + + "@node-rs/crc32-linux-x64-musl": ["@node-rs/crc32-linux-x64-musl@1.10.6", "", { "os": "linux", "cpu": "x64" }, "sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g=="], + + "@node-rs/crc32-wasm32-wasi": ["@node-rs/crc32-wasm32-wasi@1.10.6", "", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.5" }, "cpu": "none" }, "sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw=="], + + "@node-rs/crc32-win32-arm64-msvc": ["@node-rs/crc32-win32-arm64-msvc@1.10.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ=="], + + "@node-rs/crc32-win32-ia32-msvc": ["@node-rs/crc32-win32-ia32-msvc@1.10.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw=="], + + "@node-rs/crc32-win32-x64-msvc": ["@node-rs/crc32-win32-x64-msvc@1.10.6", "", { "os": "win32", "cpu": "x64" }, "sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw=="], + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], @@ -738,7 +811,7 @@ "@pierre/storage-elements-next": ["@pierre/storage-elements-next@workspace:packages/storage-elements-next"], - "@pierre/theme": ["@pierre/theme@1.0.3", "", {}, "sha512-sWHv11TMoqKxKDgTIk5VbhQjdPhs8DCcBxbjh3mRlS3YOM/OcrWoGX6MM8eBGn9cUu3M46Py0JnxsG2nJaFTuA=="], + "@pierre/theme": ["@pierre/theme@workspace:packages/theme"], "@pierre/theming": ["@pierre/theming@workspace:packages/theming"], @@ -872,6 +945,30 @@ "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], + "@secretlint/config-creator": ["@secretlint/config-creator@10.2.2", "", { "dependencies": { "@secretlint/types": "^10.2.2" } }, "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ=="], + + "@secretlint/config-loader": ["@secretlint/config-loader@10.2.2", "", { "dependencies": { "@secretlint/profiler": "^10.2.2", "@secretlint/resolver": "^10.2.2", "@secretlint/types": "^10.2.2", "ajv": "^8.17.1", "debug": "^4.4.1", "rc-config-loader": "^4.1.3" } }, "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ=="], + + "@secretlint/core": ["@secretlint/core@10.2.2", "", { "dependencies": { "@secretlint/profiler": "^10.2.2", "@secretlint/types": "^10.2.2", "debug": "^4.4.1", "structured-source": "^4.0.0" } }, "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw=="], + + "@secretlint/formatter": ["@secretlint/formatter@10.2.2", "", { "dependencies": { "@secretlint/resolver": "^10.2.2", "@secretlint/types": "^10.2.2", "@textlint/linter-formatter": "^15.2.0", "@textlint/module-interop": "^15.2.0", "@textlint/types": "^15.2.0", "chalk": "^5.4.1", "debug": "^4.4.1", "pluralize": "^8.0.0", "strip-ansi": "^7.1.0", "table": "^6.9.0", "terminal-link": "^4.0.0" } }, "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA=="], + + "@secretlint/node": ["@secretlint/node@10.2.2", "", { "dependencies": { "@secretlint/config-loader": "^10.2.2", "@secretlint/core": "^10.2.2", "@secretlint/formatter": "^10.2.2", "@secretlint/profiler": "^10.2.2", "@secretlint/source-creator": "^10.2.2", "@secretlint/types": "^10.2.2", "debug": "^4.4.1", "p-map": "^7.0.3" } }, "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ=="], + + "@secretlint/profiler": ["@secretlint/profiler@10.2.2", "", {}, "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig=="], + + "@secretlint/resolver": ["@secretlint/resolver@10.2.2", "", {}, "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w=="], + + "@secretlint/secretlint-formatter-sarif": ["@secretlint/secretlint-formatter-sarif@10.2.2", "", { "dependencies": { "node-sarif-builder": "^3.2.0" } }, "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ=="], + + "@secretlint/secretlint-rule-no-dotenv": ["@secretlint/secretlint-rule-no-dotenv@10.2.2", "", { "dependencies": { "@secretlint/types": "^10.2.2" } }, "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg=="], + + "@secretlint/secretlint-rule-preset-recommend": ["@secretlint/secretlint-rule-preset-recommend@10.2.2", "", {}, "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA=="], + + "@secretlint/source-creator": ["@secretlint/source-creator@10.2.2", "", { "dependencies": { "@secretlint/types": "^10.2.2", "istextorbinary": "^9.5.0" } }, "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw=="], + + "@secretlint/types": ["@secretlint/types@10.2.2", "", {}, "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg=="], + "@shikijs/core": ["@shikijs/core@4.2.0", "", { "dependencies": { "@shikijs/primitive": "4.2.0", "@shikijs/types": "4.2.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ=="], "@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.2.0", "", { "dependencies": { "@shikijs/types": "4.2.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og=="], @@ -924,6 +1021,16 @@ "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.13", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.13", "@tailwindcss/oxide": "4.1.13", "postcss": "^8.4.41", "tailwindcss": "4.1.13" } }, "sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ=="], + "@textlint/ast-node-types": ["@textlint/ast-node-types@15.7.1", "", {}, "sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA=="], + + "@textlint/linter-formatter": ["@textlint/linter-formatter@15.7.1", "", { "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", "@textlint/module-interop": "15.7.1", "@textlint/resolver": "15.7.1", "@textlint/types": "15.7.1", "chalk": "^4.1.2", "debug": "^4.4.3", "js-yaml": "^4.1.1", "lodash": "^4.18.1", "pluralize": "^2.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "table": "^6.9.0", "text-table": "^0.2.0" } }, "sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA=="], + + "@textlint/module-interop": ["@textlint/module-interop@15.7.1", "", {}, "sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g=="], + + "@textlint/resolver": ["@textlint/resolver@15.7.1", "", {}, "sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g=="], + + "@textlint/types": ["@textlint/types@15.7.1", "", { "dependencies": { "@textlint/ast-node-types": "15.7.1" } }, "sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A=="], + "@ts-morph/common": ["@ts-morph/common@0.27.0", "", { "dependencies": { "fast-glob": "^3.3.3", "minimatch": "^10.0.1", "path-browserify": "^1.0.1" } }, "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ=="], "@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], @@ -938,6 +1045,8 @@ "@types/bun": ["@types/bun@1.3.12", "", { "dependencies": { "bun-types": "1.3.12" } }, "sha512-DBv81elK+/VSwXHDlnH3Qduw+KxkTIWi7TXkAeh24zpi5l0B2kUg9Ga3tb4nJaPcOFswflgi/yAvMVBPrxMB+A=="], + "@types/culori": ["@types/culori@4.0.1", "", {}, "sha512-43M51r/22CjhbOXyGT361GZ9vncSVQ39u62x5eJdBQFviI8zWp2X5jzqg7k4M6PVgDQAClpy2bUe2dtwEgEDVQ=="], + "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], @@ -956,10 +1065,14 @@ "@types/node": ["@types/node@20.19.41", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ=="], + "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="], + "@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="], "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + "@types/sarif": ["@types/sarif@2.1.7", "", {}, "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ=="], + "@types/set-cookie-parser": ["@types/set-cookie-parser@2.4.10", "", { "dependencies": { "@types/node": "*" } }, "sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw=="], "@types/statuses": ["@types/statuses@2.0.6", "", {}, "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA=="], @@ -984,10 +1097,34 @@ "@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20260128.1", "", { "os": "win32", "cpu": "x64" }, "sha512-+r0hFY/fnQUY5z3lcVNWz5j2G2RBxkQVzRAvbQyl2esGt0scy/6dPeP/PrvHFADWoVJkV9DTSBhbmsJfL1inKw=="], + "@typespec/ts-http-runtime": ["@typespec/ts-http-runtime@0.3.6", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "tslib": "^2.6.2" } }, "sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og=="], + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.1", "", {}, "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ=="], "@vitejs/plugin-react": ["@vitejs/plugin-react@5.0.3", "", { "dependencies": { "@babel/core": "^7.28.4", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.35", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-PFVHhosKkofGH0Yzrw1BipSedTH68BFF8ZWy1kfUpCtJcouXXY0+racG8sExw7hw0HoX36813ga5o3LTWZ4FUg=="], + "@vscode/vsce": ["@vscode/vsce@3.2.2", "", { "dependencies": { "@azure/identity": "^4.1.0", "@vscode/vsce-sign": "^2.0.0", "azure-devops-node-api": "^12.5.0", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", "cockatiel": "^3.1.2", "commander": "^12.1.0", "form-data": "^4.0.0", "glob": "^11.0.0", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", "leven": "^3.1.0", "markdown-it": "^14.1.0", "mime": "^1.3.4", "minimatch": "^3.0.3", "parse-semver": "^1.1.1", "read": "^1.0.7", "semver": "^7.5.2", "tmp": "^0.2.3", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", "xml2js": "^0.5.0", "yauzl": "^2.3.1", "yazl": "^2.2.2" }, "optionalDependencies": { "keytar": "^7.7.0" }, "bin": { "vsce": "vsce" } }, "sha512-4TqdUq/yKlQTHcQMk/DamR632bq/+IJDomSbexOMee/UAYWqYm0XHWA6scGslsCpzY+sCWEhhl0nqdOB0XW1kw=="], + + "@vscode/vsce-sign": ["@vscode/vsce-sign@2.0.9", "", { "optionalDependencies": { "@vscode/vsce-sign-alpine-arm64": "2.0.6", "@vscode/vsce-sign-alpine-x64": "2.0.6", "@vscode/vsce-sign-darwin-arm64": "2.0.6", "@vscode/vsce-sign-darwin-x64": "2.0.6", "@vscode/vsce-sign-linux-arm": "2.0.6", "@vscode/vsce-sign-linux-arm64": "2.0.6", "@vscode/vsce-sign-linux-x64": "2.0.6", "@vscode/vsce-sign-win32-arm64": "2.0.6", "@vscode/vsce-sign-win32-x64": "2.0.6" } }, "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g=="], + + "@vscode/vsce-sign-alpine-arm64": ["@vscode/vsce-sign-alpine-arm64@2.0.6", "", { "os": "none", "cpu": "arm64" }, "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q=="], + + "@vscode/vsce-sign-alpine-x64": ["@vscode/vsce-sign-alpine-x64@2.0.6", "", { "os": "none", "cpu": "x64" }, "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w=="], + + "@vscode/vsce-sign-darwin-arm64": ["@vscode/vsce-sign-darwin-arm64@2.0.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ=="], + + "@vscode/vsce-sign-darwin-x64": ["@vscode/vsce-sign-darwin-x64@2.0.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw=="], + + "@vscode/vsce-sign-linux-arm": ["@vscode/vsce-sign-linux-arm@2.0.6", "", { "os": "linux", "cpu": "arm" }, "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA=="], + + "@vscode/vsce-sign-linux-arm64": ["@vscode/vsce-sign-linux-arm64@2.0.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA=="], + + "@vscode/vsce-sign-linux-x64": ["@vscode/vsce-sign-linux-x64@2.0.6", "", { "os": "linux", "cpu": "x64" }, "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA=="], + + "@vscode/vsce-sign-win32-arm64": ["@vscode/vsce-sign-win32-arm64@2.0.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg=="], + + "@vscode/vsce-sign-win32-x64": ["@vscode/vsce-sign-win32-x64@2.0.6", "", { "os": "win32", "cpu": "x64" }, "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ=="], + "@vscode/web-custom-data": ["@vscode/web-custom-data@0.6.3", "", {}, "sha512-3pDUAPGVkra1KjR2L5m3b7BgzLTlWdep4ijsRoqeLcrp+e7cJcyjnae8IkAdF/xS6Zo3B1YZSmIBIhRAEYBIog=="], "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], @@ -1008,7 +1145,7 @@ "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "ansi-styles": ["ansi-styles@3.2.1", "", { "dependencies": { "color-convert": "^1.9.0" } }, "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="], "ansis": ["ansis@4.3.1", "", {}, "sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA=="], @@ -1026,30 +1163,50 @@ "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], + "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], + "autoprefixer": ["autoprefixer@10.4.22", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-lite": "^1.0.30001754", "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg=="], + "azure-devops-node-api": ["azure-devops-node-api@12.5.0", "", { "dependencies": { "tunnel": "0.0.6", "typed-rest-client": "^1.8.4" } }, "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og=="], + "babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], "balanced-match": ["balanced-match@2.0.0", "", {}, "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA=="], + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.33", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw=="], + "binaryextensions": ["binaryextensions@6.11.0", "", { "dependencies": { "editions": "^6.21.0" } }, "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw=="], + "birpc": ["birpc@2.9.0", "", {}, "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw=="], + "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], + "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], - "brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + "boundary": ["boundary@2.0.0", "", {}, "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA=="], + + "brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], "browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="], + "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], + + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + "bun-types": ["bun-types@1.3.12", "", { "dependencies": { "@types/node": "*" } }, "sha512-HqOLj5PoFajAQciOMRiIZGNoKxDJSr6qigAttOX40vJuSp6DN/CxWp9s3C1Xwm4oH7ybueITwiaOcWXoYVoRkA=="], + "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], @@ -1066,7 +1223,7 @@ "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], "change-case": ["change-case@5.4.4", "", {}, "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w=="], @@ -1078,10 +1235,16 @@ "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], + "cheerio": ["cheerio@1.2.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", "htmlparser2": "^10.1.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", "undici": "^7.19.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg=="], + + "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], + "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + "ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], + "cjs-module-lexer": ["cjs-module-lexer@1.4.3", "", {}, "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="], "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], @@ -1102,22 +1265,28 @@ "cmdk": ["cmdk@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "^1.1.1", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-id": "^1.1.0", "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg=="], + "cockatiel": ["cockatiel@3.2.1", "", {}, "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q=="], + "code-block-writer": ["code-block-writer@13.0.3", "", {}, "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="], "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + "color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + "color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], "colord": ["colord@2.9.3", "", {}, "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="], "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], + "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + "content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], @@ -1150,6 +1319,8 @@ "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + "culori": ["culori@4.0.2", "", {}, "sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw=="], + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], "data-urls": ["data-urls@5.0.0", "", { "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" } }, "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg=="], @@ -1160,12 +1331,28 @@ "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], + "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], + "dedent": ["dedent@1.7.2", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA=="], + "deep-extend": ["deep-extend@0.6.0", "", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="], + "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], + "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], + + "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], + + "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], + + "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="], + + "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], + "defu": ["defu@6.1.7", "", {}, "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ=="], + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], @@ -1194,8 +1381,12 @@ "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], + "eciesjs": ["eciesjs@0.4.18", "", { "dependencies": { "@ecies/ciphers": "^0.2.5", "@noble/ciphers": "^1.3.0", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0" } }, "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ=="], + "editions": ["editions@6.22.0", "", { "dependencies": { "version-range": "^4.15.0" } }, "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ=="], + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], "electron-to-chromium": ["electron-to-chromium@1.5.365", "", {}, "sha512-xfip4u1QF1s+URFqpA6N+OeFpDGpN7VJz1f3MO3bVL0QYBjpGiZ5/Of7kugvM+o8TTqmanUlviHN3c8M9vYWCw=="], @@ -1206,6 +1397,10 @@ "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="], + + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], + "enhanced-resolve": ["enhanced-resolve@5.22.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww=="], "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], @@ -1224,6 +1419,8 @@ "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], @@ -1232,7 +1429,7 @@ "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], - "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], @@ -1260,6 +1457,8 @@ "execa": ["execa@9.6.1", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.6", "figures": "^6.1.0", "get-stream": "^9.0.0", "human-signals": "^8.0.1", "is-plain-obj": "^4.1.0", "is-stream": "^4.0.1", "npm-run-path": "^6.0.0", "pretty-ms": "^9.2.0", "signal-exit": "^4.1.0", "strip-final-newline": "^4.0.0", "yoctocolors": "^2.1.1" } }, "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA=="], + "expand-template": ["expand-template@2.0.3", "", {}, "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="], + "express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="], "express-rate-limit": ["express-rate-limit@8.5.2", "", { "dependencies": { "ip-address": "^10.2.0" }, "peerDependencies": { "express": ">= 4.11" } }, "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A=="], @@ -1282,6 +1481,8 @@ "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], @@ -1300,6 +1501,12 @@ "flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="], + "follow-redirects": ["follow-redirects@1.16.0", "", { "peerDependencies": { "debug": "*" }, "optionalPeers": ["debug"] }, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], + + "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], + + "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], @@ -1308,6 +1515,8 @@ "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], + "fs-constants": ["fs-constants@1.0.0", "", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="], + "fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], @@ -1336,12 +1545,18 @@ "get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="], + "github-from-package": ["github-from-package@0.0.0", "", {}, "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="], + + "glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], + "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "global-modules": ["global-modules@2.0.0", "", { "dependencies": { "global-prefix": "^3.0.0" } }, "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A=="], "global-prefix": ["global-prefix@3.0.0", "", { "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", "which": "^1.3.1" } }, "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg=="], + "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], + "globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], "globjoin": ["globjoin@0.1.4", "", {}, "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg=="], @@ -1354,8 +1569,12 @@ "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + "hashery": ["hashery@1.5.1", "", { "dependencies": { "hookified": "^1.15.0" } }, "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ=="], "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], @@ -1380,6 +1599,8 @@ "hookified": ["hookified@1.15.1", "", {}, "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg=="], + "hosted-git-info": ["hosted-git-info@4.1.0", "", { "dependencies": { "lru-cache": "^6.0.0" } }, "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA=="], + "html-encoding-sniffer": ["html-encoding-sniffer@4.0.0", "", { "dependencies": { "whatwg-encoding": "^3.1.1" } }, "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ=="], "html-tags": ["html-tags@3.3.1", "", {}, "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ=="], @@ -1398,12 +1619,16 @@ "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + "index-to-position": ["index-to-position@1.2.0", "", {}, "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw=="], + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], "ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], @@ -1420,10 +1645,14 @@ "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "is-ci": ["is-ci@2.0.0", "", { "dependencies": { "ci-info": "^2.0.0" }, "bin": { "is-ci": "bin.js" } }, "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w=="], + "is-core-module": ["is-core-module@2.16.2", "", { "dependencies": { "hasown": "^2.0.3" } }, "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA=="], "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], @@ -1432,8 +1661,12 @@ "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + "is-interactive": ["is-interactive@2.0.0", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="], + "is-it-type": ["is-it-type@5.1.3", "", { "dependencies": { "globalthis": "^1.0.2" } }, "sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg=="], + "is-node-process": ["is-node-process@1.2.0", "", {}, "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw=="], "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], @@ -1454,8 +1687,14 @@ "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], + "isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], + "istextorbinary": ["istextorbinary@9.5.0", "", { "dependencies": { "binaryextensions": "^6.11.0", "editions": "^6.21.0", "textextensions": "^6.11.0" } }, "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw=="], + + "jackspeak": ["jackspeak@4.2.3", "", { "dependencies": { "@isaacs/cliui": "^9.0.0" } }, "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg=="], + "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], "jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="], @@ -1476,8 +1715,18 @@ "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + "jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], + "jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], + "jsonwebtoken": ["jsonwebtoken@9.0.3", "", { "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", "lodash.isnumber": "^3.0.3", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", "semver": "^7.5.4" } }, "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g=="], + + "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], + + "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], + + "keytar": ["keytar@7.9.0", "", { "dependencies": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" } }, "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ=="], + "keyv": ["keyv@5.6.0", "", { "dependencies": { "@keyv/serialize": "^1.1.1" } }, "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw=="], "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], @@ -1486,6 +1735,8 @@ "known-css-properties": ["known-css-properties@0.37.0", "", {}, "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ=="], + "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], @@ -1512,10 +1763,28 @@ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + "linkify-it": ["linkify-it@5.0.1", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg=="], + "lint-staged": ["lint-staged@16.2.7", "", { "dependencies": { "commander": "^14.0.2", "listr2": "^9.0.5", "micromatch": "^4.0.8", "nano-spawn": "^2.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow=="], "listr2": ["listr2@9.0.5", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g=="], + "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], + + "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="], + + "lodash.isboolean": ["lodash.isboolean@3.0.3", "", {}, "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="], + + "lodash.isinteger": ["lodash.isinteger@4.0.4", "", {}, "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="], + + "lodash.isnumber": ["lodash.isnumber@3.0.3", "", {}, "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="], + + "lodash.isplainobject": ["lodash.isplainobject@4.0.6", "", {}, "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="], + + "lodash.isstring": ["lodash.isstring@4.0.1", "", {}, "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="], + + "lodash.once": ["lodash.once@4.1.1", "", {}, "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="], + "lodash.truncate": ["lodash.truncate@4.4.2", "", {}, "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw=="], "log-symbols": ["log-symbols@6.0.0", "", { "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" } }, "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw=="], @@ -1536,6 +1805,8 @@ "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], + "markdown-it": ["markdown-it@14.2.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.1", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ=="], + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], @@ -1576,6 +1847,8 @@ "mdn-data": ["mdn-data@2.27.1", "", {}, "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ=="], + "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="], + "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], "meow": ["meow@13.2.0", "", {}, "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA=="], @@ -1658,15 +1931,19 @@ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], - "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], - "minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], + + "minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], @@ -1676,28 +1953,40 @@ "mitata": ["mitata@1.0.34", "", {}, "sha512-Mc3zrtNBKIMeHSCQ0XqRLo1vbdIx1wvFV9c8NJAiyho6AjNfMY8bVhbS12bwciUdd1t4rj8099CH3N3NFahaUA=="], + "mkdirp-classic": ["mkdirp-classic@0.5.3", "", {}, "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="], + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "msw": ["msw@2.14.6", "", { "dependencies": { "@inquirer/confirm": "^6.0.11", "@mswjs/interceptors": "^0.41.3", "@open-draft/deferred-promise": "^3.0.0", "@types/statuses": "^2.0.6", "cookie": "^1.1.1", "graphql": "^16.13.2", "headers-polyfill": "^5.0.1", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", "picocolors": "^1.1.1", "rettime": "^0.11.11", "statuses": "^2.0.2", "strict-event-emitter": "^0.5.1", "tough-cookie": "^6.0.1", "type-fest": "^5.5.0", "until-async": "^3.0.2", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": ">= 4.8.x" }, "optionalPeers": ["typescript"], "bin": { "msw": "cli/index.js" } }, "sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg=="], - "mute-stream": ["mute-stream@3.0.0", "", {}, "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw=="], + "mute-stream": ["mute-stream@0.0.8", "", {}, "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="], "nano-spawn": ["nano-spawn@2.1.0", "", {}, "sha512-yTW+2okrElHiH4fsiz/+/zc0EDo9BDDoC3iKk8dpv1GeRc9nUWzUZHx6TofMWErchhUQR8hY9/Eu1Uja9x1nqA=="], "nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="], + "napi-build-utils": ["napi-build-utils@2.0.0", "", {}, "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="], + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], "next": ["next@16.2.3", "", { "dependencies": { "@next/env": "16.2.3", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.2.3", "@next/swc-darwin-x64": "16.2.3", "@next/swc-linux-arm64-gnu": "16.2.3", "@next/swc-linux-arm64-musl": "16.2.3", "@next/swc-linux-x64-gnu": "16.2.3", "@next/swc-linux-x64-musl": "16.2.3", "@next/swc-win32-arm64-msvc": "16.2.3", "@next/swc-win32-x64-msvc": "16.2.3", "sharp": "^0.34.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-9V3zV4oZFza3PVev5/poB9g0dEafVcgNyQ8eTRop8GvxZjV2G15FC5ARuG1eFD42QgeYkzJBJzHghNP8Ad9xtA=="], "next-mdx-remote": ["next-mdx-remote@6.0.0", "", { "dependencies": { "@babel/code-frame": "^7.23.5", "@mdx-js/mdx": "^3.0.1", "@mdx-js/react": "^3.0.1", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.1.0", "vfile": "^6.0.1", "vfile-matter": "^5.0.0" }, "peerDependencies": { "react": ">=16" } }, "sha512-cJEpEZlgD6xGjB4jL8BnI8FaYdN9BzZM4NwadPe1YQr7pqoWjg9EBCMv3nXBkuHqMRfv2y33SzUsuyNh9LFAQQ=="], + "node-abi": ["node-abi@3.92.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ=="], + + "node-addon-api": ["node-addon-api@4.3.0", "", {}, "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="], + "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], "node-releases": ["node-releases@2.0.47", "", {}, "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og=="], + "node-sarif-builder": ["node-sarif-builder@3.4.0", "", { "dependencies": { "@types/sarif": "^2.1.7", "fs-extra": "^11.1.1" } }, "sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg=="], + + "normalize-package-data": ["normalize-package-data@6.0.2", "", { "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } }, "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g=="], + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], @@ -1712,6 +2001,8 @@ "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], + "object-treeify": ["object-treeify@1.1.33", "", {}, "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A=="], "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], @@ -1726,16 +2017,24 @@ "oniguruma-to-es": ["oniguruma-to-es@4.3.6", "", { "dependencies": { "oniguruma-parser": "^0.12.2", "regex": "^6.1.0", "regex-recursion": "^6.0.2" } }, "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA=="], + "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], + "ora": ["ora@8.2.0", "", { "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", "stdin-discarder": "^0.2.2", "string-width": "^7.2.0", "strip-ansi": "^7.1.0" } }, "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw=="], "outvariant": ["outvariant@1.4.3", "", {}, "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA=="], + "ovsx": ["ovsx@1.0.0", "", { "dependencies": { "@vscode/vsce": "^3.7.1", "commander": "^6.2.1", "follow-redirects": "^1.16.0", "is-ci": "^2.0.0", "leven": "^3.1.0", "semver": "^7.6.0", "tmp": "^0.2.3", "yauzl-promise": "^4.0.0" }, "bin": { "ovsx": "bin/ovsx" } }, "sha512-bDxwb55DNbybe10chWlnofj6ZJuER1LjFaQKUtUL9SW8l9P5Vqn7LfI23IFtmtuSJ82pYX0R+MisomXPKNGR9A=="], + "oxfmt": ["oxfmt@0.27.0", "", { "dependencies": { "tinypool": "2.0.0" }, "optionalDependencies": { "@oxfmt/darwin-arm64": "0.27.0", "@oxfmt/darwin-x64": "0.27.0", "@oxfmt/linux-arm64-gnu": "0.27.0", "@oxfmt/linux-arm64-musl": "0.27.0", "@oxfmt/linux-x64-gnu": "0.27.0", "@oxfmt/linux-x64-musl": "0.27.0", "@oxfmt/win32-arm64": "0.27.0", "@oxfmt/win32-x64": "0.27.0" }, "bin": { "oxfmt": "bin/oxfmt" } }, "sha512-FHR0HR3WeMKBuVEQvW3EeiRZXs/cQzNHxGbhCoAIEPr1FVcOa9GCqrKJXPqv2jkzmCg6Wqot+DvN9RzemyFJhw=="], "oxlint": ["oxlint@1.42.0", "", { "optionalDependencies": { "@oxlint/darwin-arm64": "1.42.0", "@oxlint/darwin-x64": "1.42.0", "@oxlint/linux-arm64-gnu": "1.42.0", "@oxlint/linux-arm64-musl": "1.42.0", "@oxlint/linux-x64-gnu": "1.42.0", "@oxlint/linux-x64-musl": "1.42.0", "@oxlint/win32-arm64": "1.42.0", "@oxlint/win32-x64": "1.42.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.11.2" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-qnspC/lrp8FgKNaONLLn14dm+W5t0SSlus6V5NJpgI2YNT1tkFYZt4fBf14ESxf9AAh98WBASnW5f0gtw462Lg=="], "oxlint-tsgolint": ["oxlint-tsgolint@0.11.3", "", { "optionalDependencies": { "@oxlint-tsgolint/darwin-arm64": "0.11.3", "@oxlint-tsgolint/darwin-x64": "0.11.3", "@oxlint-tsgolint/linux-arm64": "0.11.3", "@oxlint-tsgolint/linux-x64": "0.11.3", "@oxlint-tsgolint/win32-arm64": "0.11.3", "@oxlint-tsgolint/win32-x64": "0.11.3" }, "bin": { "tsgolint": "bin/tsgolint.js" } }, "sha512-zkuGXJzE5WIoGQ6CHG3GbxncPNrvUG9giTKdXMqKrlieCRxa9hGMvMJM+7DFxKSaryVAEFrTQJNrGJHpeMmFPg=="], + "p-map": ["p-map@7.0.4", "", {}, "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ=="], + + "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], @@ -1746,8 +2045,14 @@ "parse-ms": ["parse-ms@4.0.0", "", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="], + "parse-semver": ["parse-semver@1.1.1", "", { "dependencies": { "semver": "^5.1.0" } }, "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ=="], + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], + "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], + + "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="], + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], @@ -1756,12 +2061,16 @@ "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + "path-scurry": ["path-scurry@2.0.2", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg=="], + "path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], @@ -1776,6 +2085,8 @@ "playwright-core": ["playwright-core@1.51.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw=="], + "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="], + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], "postcss-calc": ["postcss-calc@10.1.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.38" } }, "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw=="], @@ -1798,6 +2109,8 @@ "preact-render-to-string": ["preact-render-to-string@6.6.5", "", { "peerDependencies": { "preact": ">=10 || >= 11.0.0-0" } }, "sha512-O6MHzYNIKYaiSX3bOw0gGZfEbOmlIDtDfWwN1JJdc/T3ihzRT6tGGSEWE088dWrEDGa1u7101q+6fzQnO9XCPA=="], + "prebuild-install": ["prebuild-install@7.1.3", "", { "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" } }, "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug=="], + "pretty-ms": ["pretty-ms@9.3.0", "", { "dependencies": { "parse-ms": "^4.0.0" } }, "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ=="], "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], @@ -1806,8 +2119,12 @@ "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="], + "qified": ["qified@0.10.1", "", { "dependencies": { "hookified": "^2.1.1" } }, "sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA=="], "qs": ["qs@6.15.2", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw=="], @@ -1820,6 +2137,10 @@ "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], + "rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="], + + "rc-config-loader": ["rc-config-loader@4.1.4", "", { "dependencies": { "debug": "^4.4.3", "js-yaml": "^4.1.1", "json5": "^2.2.3", "require-from-string": "^2.0.2" } }, "sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ=="], + "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], @@ -1832,8 +2153,14 @@ "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + "read": ["read@1.0.7", "", { "dependencies": { "mute-stream": "~0.0.4" } }, "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ=="], + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + "read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="], + + "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], @@ -1890,8 +2217,12 @@ "rrweb-cssom": ["rrweb-cssom@0.8.0", "", {}, "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw=="], + "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], "sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="], @@ -1900,6 +2231,8 @@ "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + "secretlint": ["secretlint@10.2.2", "", { "dependencies": { "@secretlint/config-creator": "^10.2.2", "@secretlint/formatter": "^10.2.2", "@secretlint/node": "^10.2.2", "@secretlint/profiler": "^10.2.2", "debug": "^4.4.1", "globby": "^14.1.0", "read-pkg": "^9.0.1" }, "bin": "./bin/secretlint.js" }, "sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg=="], + "semver": ["semver@7.8.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg=="], "send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], @@ -1930,6 +2263,12 @@ "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "simple-concat": ["simple-concat@1.0.1", "", {}, "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="], + + "simple-get": ["simple-get@4.0.1", "", { "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA=="], + + "simple-invariant": ["simple-invariant@2.0.1", "", {}, "sha512-1sbhsxqI+I2tqlmjbz99GXNmZtr6tKIyEgGGnJw/MKGblalqk/XoOYYFJlBzTKZCxx8kLaD3FD5s9BEEjx5Pyg=="], + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], "slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], @@ -1946,6 +2285,14 @@ "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + "spdx-correct": ["spdx-correct@3.2.0", "", { "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="], + + "spdx-exceptions": ["spdx-exceptions@2.5.0", "", {}, "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="], + + "spdx-expression-parse": ["spdx-expression-parse@3.0.1", "", { "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="], + + "spdx-license-ids": ["spdx-license-ids@3.0.23", "", {}, "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw=="], + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], "stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="], @@ -1956,6 +2303,8 @@ "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], "stringify-object": ["stringify-object@5.0.0", "", { "dependencies": { "get-own-enumerable-keys": "^1.0.0", "is-obj": "^3.0.0", "is-regexp": "^3.1.0" } }, "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg=="], @@ -1966,6 +2315,10 @@ "strip-final-newline": ["strip-final-newline@4.0.0", "", {}, "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw=="], + "strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], + + "structured-source": ["structured-source@4.0.0", "", { "dependencies": { "boundary": "^2.0.0" } }, "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA=="], + "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], @@ -2002,6 +2355,16 @@ "tar": ["tar@7.5.16", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w=="], + "tar-fs": ["tar-fs@2.1.4", "", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ=="], + + "tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="], + + "terminal-link": ["terminal-link@4.0.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "supports-hyperlinks": "^3.2.0" } }, "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA=="], + + "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], + + "textextensions": ["textextensions@6.11.0", "", { "dependencies": { "editions": "^6.21.0" } }, "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ=="], + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], "tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], @@ -2014,6 +2377,8 @@ "tldts-core": ["tldts-core@6.1.86", "", {}, "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA=="], + "tmp": ["tmp@0.2.7", "", {}, "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw=="], + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], @@ -2036,18 +2401,30 @@ "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "tunnel": ["tunnel@0.0.6", "", {}, "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="], + + "tunnel-agent": ["tunnel-agent@0.6.0", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w=="], + "tw-animate-css": ["tw-animate-css@1.4.0", "", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="], "type-fest": ["type-fest@5.7.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg=="], "type-is": ["type-is@2.1.0", "", { "dependencies": { "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA=="], + "typed-rest-client": ["typed-rest-client@1.8.11", "", { "dependencies": { "qs": "^6.9.1", "tunnel": "0.0.6", "underscore": "^1.12.1" } }, "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA=="], + "typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="], + "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="], + "unconfig": ["unconfig@7.5.0", "", { "dependencies": { "@quansync/fs": "^1.0.0", "defu": "^6.1.4", "jiti": "^2.6.1", "quansync": "^1.0.0", "unconfig-core": "7.5.0" } }, "sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA=="], "unconfig-core": ["unconfig-core@7.5.0", "", { "dependencies": { "@quansync/fs": "^1.0.0", "quansync": "^1.0.0" } }, "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w=="], + "underscore": ["underscore@1.13.8", "", {}, "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ=="], + + "undici": ["undici@7.27.2", "", {}, "sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA=="], + "undici-types": ["undici-types@7.27.0", "", {}, "sha512-sqqlwW3zm+cE82GwKdGyn3pcze7LXlx/4jUgA0vtAf6Fa81KMrJqc3VfWmmeOTUIElW9IdPsLwMUIpiOZQgK3A=="], "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], @@ -2078,6 +2455,8 @@ "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + "url-join": ["url-join@4.0.1", "", {}, "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="], + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], @@ -2086,10 +2465,14 @@ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="], + "validate-npm-package-name": ["validate-npm-package-name@5.0.1", "", {}, "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ=="], "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + "version-range": ["version-range@4.15.0", "", {}, "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg=="], + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], "vfile-matter": ["vfile-matter@5.0.1", "", { "dependencies": { "vfile": "^6.0.0", "yaml": "^2.0.0" } }, "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw=="], @@ -2120,8 +2503,14 @@ "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], + "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], + "xml2js": ["xml2js@0.5.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA=="], + + "xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], + "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -2134,6 +2523,12 @@ "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], + + "yauzl-promise": ["yauzl-promise@4.0.0", "", { "dependencies": { "@node-rs/crc32": "^1.7.0", "is-it-type": "^5.1.2", "simple-invariant": "^2.0.1" } }, "sha512-/HCXpyHXJQQHvFq9noqrjfa/WpQC2XYs3vI7tBiAi4QiIU1knvYhZGaO1QPjwIVMdqflxbmwgMXtYeaRiAE0CA=="], + + "yazl": ["yazl@2.5.1", "", { "dependencies": { "buffer-crc32": "~0.2.3" } }, "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw=="], + "yocto-spinner": ["yocto-spinner@1.2.0", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw=="], "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], @@ -2162,12 +2557,20 @@ "@dotenvx/dotenvx/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + "@inquirer/core/mute-stream": ["mute-stream@3.0.0", "", {}, "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw=="], + "@mdx-js/mdx/unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], "@modelcontextprotocol/sdk/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], "@mswjs/interceptors/@open-draft/deferred-promise": ["@open-draft/deferred-promise@2.2.0", "", {}, "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA=="], + "@node-rs/crc32-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], + + "@secretlint/formatter/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + + "@secretlint/formatter/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], @@ -2182,11 +2585,25 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@textlint/linter-formatter/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "@textlint/linter-formatter/pluralize": ["pluralize@2.0.0", "", {}, "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw=="], + + "@ts-morph/common/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "@vscode/vsce/commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], + + "accepts/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + "body-parser/iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], - "brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], + + "cheerio/htmlparser2": ["htmlparser2@10.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "entities": "^7.0.1" } }, "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ=="], "cli-truncate/slice-ansi": ["slice-ansi@8.0.0", "", { "dependencies": { "ansi-styles": "^6.2.3", "is-fullwidth-code-point": "^5.1.0" } }, "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg=="], @@ -2200,18 +2617,28 @@ "express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + "express/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + + "glob/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "global-prefix/which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "./bin/which" } }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], "globby/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + "hosted-git-info/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], + "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + "log-symbols/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "log-symbols/is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="], "log-update/slice-ansi": ["slice-ansi@7.1.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w=="], "log-update/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "mdast-util-to-hast/unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], "mdast-util-to-markdown/unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], @@ -2224,14 +2651,24 @@ "next-mdx-remote/unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], + "normalize-package-data/hosted-git-info": ["hosted-git-info@7.0.2", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w=="], + "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + "ora/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "ora/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], "ora/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "ovsx/@vscode/vsce": ["@vscode/vsce@3.9.2", "", { "dependencies": { "@azure/identity": "^4.1.0", "@secretlint/node": "^10.1.2", "@secretlint/secretlint-formatter-sarif": "^10.1.2", "@secretlint/secretlint-rule-no-dotenv": "^10.1.2", "@secretlint/secretlint-rule-preset-recommend": "^10.1.2", "@vscode/vsce-sign": "^2.0.0", "azure-devops-node-api": "^12.5.0", "chalk": "^4.1.2", "cheerio": "^1.0.0-rc.9", "cockatiel": "^3.1.2", "commander": "^12.1.0", "form-data": "^4.0.0", "glob": "^13.0.6", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", "leven": "^3.1.0", "markdown-it": "^14.1.0", "mime": "^1.3.4", "minimatch": "^10.2.2", "parse-semver": "^1.1.1", "read": "^1.0.7", "secretlint": "^10.1.2", "semver": "^7.5.2", "tmp": "^0.2.3", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", "xml2js": "^0.5.0", "yauzl": "^3.2.1", "yazl": "^2.2.2" }, "optionalDependencies": { "keytar": "^7.7.0" }, "bin": { "vsce": "vsce" } }, "sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA=="], + + "ovsx/commander": ["commander@6.2.1", "", {}, "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="], + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + "parse-semver/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], "playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], @@ -2244,6 +2681,12 @@ "raw-body/iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], + "read-pkg/parse-json": ["parse-json@8.3.0", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "index-to-position": "^1.1.0", "type-fest": "^4.39.1" } }, "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ=="], + + "read-pkg/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], + + "read-pkg/unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="], + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], "restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], @@ -2254,6 +2697,10 @@ "router/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], + "secretlint/globby": ["globby@14.1.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.3", "ignore": "^7.0.3", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA=="], + + "send/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + "shadcn/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], "slice-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -2266,12 +2713,18 @@ "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], + "tar-fs/chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="], + "tsdown/rolldown": ["rolldown@1.0.0-beta.45", "", { "dependencies": { "@oxc-project/types": "=0.95.0", "@rolldown/pluginutils": "1.0.0-beta.45" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-beta.45", "@rolldown/binding-darwin-arm64": "1.0.0-beta.45", "@rolldown/binding-darwin-x64": "1.0.0-beta.45", "@rolldown/binding-freebsd-x64": "1.0.0-beta.45", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.45", "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.45", "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.45", "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.45", "@rolldown/binding-linux-x64-musl": "1.0.0-beta.45", "@rolldown/binding-openharmony-arm64": "1.0.0-beta.45", "@rolldown/binding-wasm32-wasi": "1.0.0-beta.45", "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.45", "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.45", "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.45" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-iMmuD72XXLf26Tqrv1cryNYLX6NNPLhZ3AmNkSf8+xda0H+yijjGJ+wVT9UdBUHOpKzq9RjKtQKRCWoEKQQBZQ=="], "type-is/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + "type-is/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + "unrun/rolldown": ["rolldown@1.0.0-rc.17", "", { "dependencies": { "@oxc-project/types": "=0.127.0", "@rolldown/pluginutils": "1.0.0-rc.17" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.17", "@rolldown/binding-darwin-arm64": "1.0.0-rc.17", "@rolldown/binding-darwin-x64": "1.0.0-rc.17", "@rolldown/binding-freebsd-x64": "1.0.0-rc.17", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.17", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.17", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.17", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.17", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.17", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.17", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.17" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA=="], + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], "wrap-ansi/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], @@ -2290,6 +2743,8 @@ "@dotenvx/dotenvx/execa/strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], + "@secretlint/formatter/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], "@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], @@ -2310,6 +2765,20 @@ "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + "@textlint/linter-formatter/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "@textlint/linter-formatter/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "@ts-morph/common/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + + "accepts/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "chalk/supports-color/has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="], + + "cheerio/htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], + + "cli-truncate/slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "cli-truncate/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], "cli-truncate/string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], @@ -2320,18 +2789,38 @@ "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], + "express/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "glob/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + "global-prefix/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + "hosted-git-info/lru-cache/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + + "log-update/slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], "log-update/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], "msw/tough-cookie/tldts": ["tldts@7.4.2", "", { "dependencies": { "tldts-core": "^7.4.2" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-kCwffuaH8ntKtygnWe1b4BJKWiCUH30n5KfoTr6IchcXOwR7chAOFJxFrH3vjANafUYrIA4a7SDL+nn7SiR4Sw=="], + "normalize-package-data/hosted-git-info/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "ora/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], "ora/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "ovsx/@vscode/vsce/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "ovsx/@vscode/vsce/commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], + + "ovsx/@vscode/vsce/glob": ["glob@13.0.6", "", { "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", "path-scurry": "^2.0.2" } }, "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw=="], + + "ovsx/@vscode/vsce/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + + "ovsx/@vscode/vsce/yauzl": ["yauzl@3.4.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw=="], + "rolldown-plugin-dts/rolldown/@oxc-project/types": ["@oxc-project/types@0.127.0", "", {}, "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ=="], "rolldown-plugin-dts/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.17", "", { "os": "android", "cpu": "arm64" }, "sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ=="], @@ -2362,6 +2851,16 @@ "rolldown-plugin-dts/rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.17", "", {}, "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg=="], + "secretlint/globby/@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@2.3.0", "", {}, "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg=="], + + "secretlint/globby/path-type": ["path-type@6.0.0", "", {}, "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ=="], + + "secretlint/globby/slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], + + "send/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "slice-ansi/ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + "tsdown/rolldown/@oxc-project/types": ["@oxc-project/types@0.95.0", "", {}, "sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ=="], "tsdown/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-beta.45", "", { "os": "android", "cpu": "arm64" }, "sha512-bfgKYhFiXJALeA/riil908+2vlyWGdwa7Ju5S+JgWZYdR4jtiPOGdM6WLfso1dojCh+4ZWeiTwPeV9IKQEX+4g=="], @@ -2394,6 +2893,8 @@ "tsdown/rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.45", "", {}, "sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA=="], + "type-is/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + "unrun/rolldown/@oxc-project/types": ["@oxc-project/types@0.127.0", "", {}, "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ=="], "unrun/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.17", "", { "os": "android", "cpu": "arm64" }, "sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ=="], @@ -2428,8 +2929,34 @@ "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "@textlint/linter-formatter/chalk/ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "@ts-morph/common/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "cli-truncate/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "cliui/wrap-ansi/ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "glob/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "msw/tough-cookie/tldts/tldts-core": ["tldts-core@7.4.2", "", {}, "sha512-nwEyF4vl4RSJjwSjBUmOSxc3BFPoIFdlRthJ6e+5v9P3bHNsoD06UjuqMUspqp7vsEZ1beaHi1km+optiE17yA=="], + + "ovsx/@vscode/vsce/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "ovsx/@vscode/vsce/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "ovsx/@vscode/vsce/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + + "slice-ansi/ansi-styles/color-convert/color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "@textlint/linter-formatter/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "cliui/wrap-ansi/ansi-styles/color-convert/color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "ovsx/@vscode/vsce/chalk/ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "ovsx/@vscode/vsce/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + + "ovsx/@vscode/vsce/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], } } diff --git a/bunfig.toml b/bunfig.toml index 552629192..453185473 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -4,7 +4,6 @@ minimumReleaseAge = 604800 # 7 days in seconds minimumReleaseAgeExcludes = [ "@types/bun", "@pierre/icons", - "@pierre/theme", "@pierre/vscode-icons", # moon is exact-pinned everywhere it is consumed (.prototools, vercel.json), # so the age gate adds no protection and would block fresh moon releases. diff --git a/moon.yml b/moon.yml index d760749f1..9527ea0f6 100644 --- a/moon.yml +++ b/moon.yml @@ -18,6 +18,7 @@ language: 'typescript' # dist-producing package and lint orders itself after their builds. dependsOn: - 'diffs' + - 'theme' - 'theming' - 'trees' - 'truncate' diff --git a/package.json b/package.json index 88c2267a9..5a55f28f2 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "@octokit/rest": "22.0.0", "@pierre/icons": "0.5.0", "@pierre/storage": "0.0.10", - "@pierre/theme": "1.0.3", "@pierre/vscode-icons": "0.0.9", "@playwright/test": "1.51.1", "@radix-ui/react-avatar": "1.1.10", @@ -39,12 +38,14 @@ "@shikijs/transformers": "4.2.0", "@tailwindcss/postcss": "4.1.13", "@types/bun": "1.3.12", + "@types/culori": "4.0.1", "@types/hast": "3.0.4", "@types/jsdom": "28.0.1", "@types/mdast": "4.0.4", "@types/node": "^20", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", + "@vscode/vsce": "3.2.2", "@typescript/native-preview": "7.0.0-dev.20260128.1", "@vscode/web-custom-data": "0.6.3", "@vitejs/plugin-react": "5.0.3", @@ -55,6 +56,7 @@ "class-variance-authority": "0.7.1", "clsx": "2.1.1", "cmdk": "1.1.1", + "culori": "4.0.2", "diff": "8.0.3", "hast-util-heading-rank": "3.0.0", "hast-util-to-html": "9.0.5", @@ -67,6 +69,7 @@ "mitata": "1.0.34", "next": "16.2.3", "next-mdx-remote": "6.0.0", + "ovsx": "1.0.0", "oxfmt": "0.27.0", "oxlint": "1.42.0", "oxlint-tsgolint": "0.11.3", @@ -132,6 +135,9 @@ "oxfmt --write", "oxlint --type-aware --tsconfig tsconfig.oxlint.json --fix" ], + "**/*.{json,jsonc,yml,yaml}": [ + "oxfmt --write" + ], "**/*.{css,pcss,postcss}": [ "stylelint --fix" ] diff --git a/packages/diffs/package.json b/packages/diffs/package.json index f2d0060f5..16c4dce82 100644 --- a/packages/diffs/package.json +++ b/packages/diffs/package.json @@ -57,7 +57,7 @@ "prepublishOnly": "moon run diffs:prepublish" }, "dependencies": { - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@pierre/theming": "workspace:*", "@shikijs/transformers": "^3.0.0 || ^4.0.0", "diff": "catalog:", diff --git a/packages/theme/.gitignore b/packages/theme/.gitignore new file mode 100644 index 000000000..a2441af99 --- /dev/null +++ b/packages/theme/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +node_modules/ +build +dist +preview +*.vsix diff --git a/packages/theme/.vscodeignore b/packages/theme/.vscodeignore new file mode 100644 index 000000000..fa3dceb64 --- /dev/null +++ b/packages/theme/.vscodeignore @@ -0,0 +1,19 @@ +node_modules/** +src/** +scripts/** +test/** +preview/** +.github/** +.vscode/** +zed/** + +ACCESSIBILITY.md +CONTRIBUTING.md +DISPLAY-P3.md +.gitignore +README.md.bak +moon.yml +tsconfig.json +*.tsbuildinfo +*.vsix +.DS_Store diff --git a/packages/theme/ACCESSIBILITY.md b/packages/theme/ACCESSIBILITY.md new file mode 100644 index 000000000..bb473159f --- /dev/null +++ b/packages/theme/ACCESSIBILITY.md @@ -0,0 +1,139 @@ +# Accessibility + +## Color-Vision-Deficiency (CVD) themes + +Pierre ships four themes designed for people with a **color vision deficiency +(CVD)**, the condition commonly called "color blindness." This document explains +what CVD is and how the themes are engineered around it. + +| `name` | label | type | targets | +| -------------------------------------- | -------------------------------------- | ----- | ----------- | +| `pierre-light-protanopia-deuteranopia` | Pierre Light Protanopia & Deuteranopia | light | red-green | +| `pierre-light-tritanopia` | Pierre Light Tritanopia | light | blue-yellow | +| `pierre-dark-protanopia-deuteranopia` | Pierre Dark Protanopia & Deuteranopia | dark | red-green | +| `pierre-dark-tritanopia` | Pierre Dark Tritanopia | dark | blue-yellow | + +--- + +### What is CVD? + +The retina senses color with three cone types — **L** (long / "red"), **M** +(medium / "green") and **S** (short / "blue") wavelengths. When one type is +missing or shifted, colors that differ mainly along that cone's axis collapse +into the same perceived color. CVD affects roughly **8% of men and 0.5% of +women**. + +The three dichromacies (the strongest, "complete" forms) we target: + +| Type | Missing cone | Confuses | **Preserved** axis (what can still be told apart) | +| ---------------- | ------------ | ---------------------------------- | ------------------------------------------------- | +| **Protanopia** | L ("red") | red ↔ green | **blue ↔ orange/yellow** + luminance | +| **Deuteranopia** | M ("green") | red ↔ green | **blue ↔ orange/yellow** + luminance | +| **Tritanopia** | S ("blue") | blue ↔ green (and yellow ↔ violet) | **red ↔ cyan/teal** + luminance | + +> Tritanopia is loosely called "blue-yellow," but blue and yellow differ a lot +> in _luminance_ (which is preserved), so they stay apparent. The pair that +> truly collapses is **blue ↔ green**. + +The key consequence for a code editor: a normal theme encodes the most important +signals — **added vs deleted**, **pass vs fail**, **error vs warning** — as +**red vs green**. To a protanope or deuteranope (the most common CVD), red and +green look nearly identical, so those signals become ambiguous. + +--- + +### How the themes are engineered + +Four principles, each enforced or made checkable by the build: + +1. **Identical chrome = family fit.** Each CVD theme reuses the base + `light`/`dark` roles for `bg`, `fg`, and `border` **verbatim**. Windows, + text, and borders are pixel-for-pixel identical to Pierre Light / Pierre Dark + — that is what keeps them recognizably "Pierre." Only the chromatic roles + (`accent`, `states`, `syntax`, `ansi`) change. + +2. **Signals ride the preserved axis.** Every meaningful color is re-mapped onto + the hue axis that the target deficiency keeps: + - **Protan/Deutan:** positive/added → **blue**, negative/deleted → + **orange**. + - **Tritan:** positive/added → **teal/cyan**, negative/deleted → + **red/vermillion**. + +3. **Luminance is the backup channel.** Under dichromacy there are only ~2 + usable hue poles + luminance, but ~20 chromatic roles. Where two roles must + share a pole (e.g. several "cool" syntax tokens), they are separated by + **luminance** (different palette stops) — the channel CVD users rely on most. + +4. **Reuse the existing palette.** All colors come from scales already in + `src/palettes.ts` (`blue`, `orange`, `teal`, `vermillion`, `magenta`, …). No + off-brand hues were invented. + +#### Role mapping (the actual choices) + +Stops shift lighter on dark backgrounds (mirroring how `dark` shifts vs +`light`). + +**Protan/Deutan — axis blue ↔ orange:** + +| Role | Light | Dark | Why | +| --------------------------- | ------------- | ------------- | --------------------------------------------- | +| `accent.primary` / `link` | blue 500 | blue 500 | keep Pierre blue (brand) | +| `success` (added) | blue 700 | blue 300 | positive → blue, luminance-split from accent | +| `danger` (deleted/error) | orange 700 | orange 400 | negative → orange | +| `warn` | yellow 500 | yellow 300 | bright caution; big luminance gap from danger | +| `info` | cyan 700 | cyan 400 | cool side; pairs against merge | +| `merge` | violet 700 | violet 400 | blue-violet conflict color | +| `ansi.red` / `ansi.green` | orange / blue | orange / blue | terminal pass/fail separable | +| `syntax.string` (=inserted) | blue 800 | blue 300 | added pole | +| `syntax.tag` (=deleted) | orange 700 | orange 400 | deleted pole | + +**Tritanopia — axis red ↔ cyan/teal:** + +| Role | Light | Dark | Why | +| --------------------------- | ----------------- | ----------------- | ----------------------------------------------------- | +| `accent.primary` / `link` | blue 500 | blue 500 | reads cyan-blue, clearly ≠ red | +| `success` (added) | teal 700 | teal 300 | positive → teal/cyan | +| `danger` (deleted/error) | vermillion 600 | vermillion 400 | negative → red (preserved) | +| `warn` | amber 600 | amber 400 | caution; ΔE-separated from danger | +| `info` | blue 600 | blue 400 | cyan side | +| `merge` | magenta 700 | magenta 400 | reddish-purple — tritan-safe, far from blue _and_ red | +| `ansi.red` / `ansi.green` | vermillion / teal | vermillion / teal | terminal pass/fail separable | +| `syntax.string` (=inserted) | teal 700 | teal 300 | added pole | +| `syntax.tag` (=deleted) | vermillion 600 | vermillion 400 | deleted pole | + +--- + +### The objective test + +A hard gate in `test/` simulates every chromatic role for each deficiency — +under _both_ the linear-RGB and gamma-sRGB Machado (2009) conventions — and +fails the build if any must-distinguish pair stops being separable (CIEDE2000 +ΔE) or legible (WCAG contrast). It enforces the tiers and contrast policy below. +For how to run and read the report, see +[CONTRIBUTING.md](CONTRIBUTING.md#testing). + +#### Tiers — graded by _what carries the signal when color fails_ + +Under dichromacy not every pair can be hue-unique, so we gate hardest where +color is the _only_ cue and lean on the editor's built-in non-color cues +elsewhere: + +| Tier | Bar | What | Why this bar | +| ----- | -------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| **1** | ΔE ≥ 11 | diff add/delete backgrounds, diff inserted/deleted **text**, merge-conflict backgrounds, terminal red/green | color is the **sole** disambiguator — no glyph fallback | +| **2** | ΔE ≥ 8 | diagnostics (error/warn/info), core syntax (keyword/string/variable), comment-vs-code | color **plus** a non-color cue (icon shapes; position) | +| **3** | advisory | git-tree clique, extended syntax | every git entry has an **M/A/D/U/C letter badge**; syntax has bold/italic + position. Reported, not gated. | + +#### Contrast policy + +We hold the themes to WCAG bars, but only the bar that fits how each color +renders: + +- **Body text** (editor foreground) → **4.5:1** (SC 1.4.3 normal text). +- **Syntax tokens & meaningful signal colors** → **3:1** (SC 1.4.11 UI / large + text), checked normal **and** after simulation. +- **Report-only** (printed, never fails the build): colors whose canonical/brand + hue is intrinsically high-luminance and that base Pierre itself keeps bright — + `accent.primary`/`link` (brand blue), `warn` (caution yellow/amber), and the + decorative ansi colors. Their _distinguishability_ is gated; their raw + contrast is not. diff --git a/packages/theme/CONTRIBUTING.md b/packages/theme/CONTRIBUTING.md new file mode 100644 index 000000000..8793fcd6a --- /dev/null +++ b/packages/theme/CONTRIBUTING.md @@ -0,0 +1,111 @@ +# Pierre Theme + +Light and dark themes for Visual Studio Code, Cursor, Zed, and Shiki. Built for +[Diffs.com](https://diffs.com) by +[The Pierre Computer Company](https://pierre.computer). + +## Preview + +![Pierre dark theme screenshot](https://github.com/user-attachments/assets/e8b2a6e0-995b-4515-997a-f805f4fbc5bf) +![Pierre light theme screenshot](https://github.com/user-attachments/assets/2ebb09d0-eb42-4c28-9617-35873d96ed8f) + +## Install + +### Visual Studio Code + +From the menu in Visual Studio Code: + +- View > Extensions (or hit Command+Shift+X or Control+Shift+X) +- Search for `Pierre Theme` +- Click install + +You can also install or download from the +[Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=pierrecomputer.pierre-theme). + +### Cursor + +From the menu in Cursor: + +- View > Extensions (or hit Command+Shift+X or Control+Shift+X) +- Search for `Pierre Theme` +- Click install + +You can also install or download from the +[Open VSX registry](https://open-vsx.org/extension/pierrecomputer/pierre-theme). + +### Zed + +From the menu in Zed: + +- Zed > Extensions (or hit Command+Shift+X or Control+Shift+X) +- Search for `Pierre` +- Click install + +## Vibrant themes (Display P3) + +> [!NOTE] Vibrant themes do not work in VS Code or Cursor at this time as it +> does not support color formats other than Hex or RGB. You can, however, use +> these with [Diffs](https://diffs.com) or any [Shiki](https://shiki.style) +> project to render code. + +The **Vibrant** theme variants use CSS's `color(display-p3 r g b)` format with +enhanced saturation to fully utilize Display P3's wider color gamut. Display P3 +can represent ~25% more colors than standard sRGB, and these themes are +optimized to take full advantage of that on compatible displays. + +The conversion algorithm transforms sRGB colors to Display P3 through proper +linear color space transformations, then enhances saturation (15-30%) and +luminance (5% for vibrant colors) to push colors into the wider P3 gamut that +isn't accessible in sRGB. + +## Override + +To override this (or any other) theme in your personal config file, please +follow the guide in the +[color theme](https://code.visualstudio.com/api/extension-guides/color-theme) +documentation. This is handy for small tweaks to the theme without having to +fork and maintain your own theme. + +## Contribute + +1. Clone and open this [repo](https://github.com/pierrecomputer/pierre) in your + editor +2. Run `bun install` from the repository root to install the dependencies. +3. Press `F5` to open a new window with your extension loaded +4. Open `Code > Preferences > Color Theme` [`⌘k ⌘t`] and pick the "Pierre…" + theme you want to test. +5. Make changes under `packages/theme/src`. Theme construction lives in + `src/createTheme.ts`; role values live in `src/roles`. +6. Run `moonx theme:build` to update the theme. You can also run + `moonx theme:dev --ignore-ci-checks` to automatically rebuild the themes + while making changes. +7. Run `moonx theme:test` to validate your changes; see [Testing](#testing) + below. +8. Once you're happy, commit your changes and open a PR. + +## Testing + +`moonx theme:test` builds the themes, runs structural validation, and runs the +CVD accessibility gate (the design it enforces is documented in +[`ACCESSIBILITY.md`](ACCESSIBILITY.md)). The gate lives in `test/`. + +For visual proofing, `moonx theme:preview --ignore-ci-checks` writes +`preview/*.html`: the palette scales, the Display-P3 conversions, and a +normal-vs-simulated CVD proof sheet. + +## Scripts + +| Script | Description | +| --------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `moonx theme:build` | Builds the theme `.json` files in `./themes` and ESM modules in `./dist` | +| `moonx theme:test` | Runs validation tests + the CVD accessibility gate after build | +| `moonx theme:preview --ignore-ci-checks` | Writes preview HTML files from `src/previews` into `preview/` | +| `moonx theme:package-vsix --ignore-ci-checks` | Temporarily applies the VSIX package name/README shim, then writes the `.vsix` file at the project root | +| `moonx theme:dev --ignore-ci-checks` | Rebuilds themes on file change | + +## Credit + +This theme was built on top of +[GitHub's Visual Studio Code Theme](https://github.com/primer/github-vscode-theme). +All credit to them for the technique and build tooling, which we've since +iterated on for more specific language tokens. diff --git a/packages/theme/DISPLAY-P3.md b/packages/theme/DISPLAY-P3.md new file mode 100644 index 000000000..0a9bddc88 --- /dev/null +++ b/packages/theme/DISPLAY-P3.md @@ -0,0 +1,118 @@ +# Display P3 Color Space Implementation + +This document covers the Display P3 color space implementation for the Pierre +theme, including technical details for future reference. + +## Overview + +The vibrant theme variants (`pierre-light-vibrant.json` and +`pierre-dark-vibrant.json`) use CSS `color(display-p3 r g b)` format with +saturation enhancement to fully utilize Display P3's wider color gamut. These +themes are designed for web projects using [Shiki](https://shiki.style/) syntax +highlighting. They won't work in VS Code itself, as VS Code only supports +hex/RGB color formats. + +## Color Conversion Process + +### 1. Linear Transformation + +```typescript +// 1. Parse hex → RGB (0-1 range) +const [r, g, b] = hexToRgb01(hex); + +// 2. Linearize sRGB (remove gamma) +const linear = srgbToLinear(rgb); + +// 3. Transform to P3 color space (matrix transformation) +const [rP3, gP3, bP3] = linearSrgbToLinearP3(linearR, linearG, linearB); + +// 4. Apply P3 gamma +const displayP3 = linearToP3(linearP3); +``` + +**Transformation Matrix** (linear sRGB → linear P3): + +``` +R_p3 = 0.82246197 * R_srgb + 0.17753803 * G_srgb +G_p3 = 0.03319420 * R_srgb + 0.96680580 * G_srgb +B_p3 = 0.01708263 * R_srgb + 0.07239744 * G_srgb + 0.91051993 * B_srgb +``` + +### 2. Gamut Enhancement + +After P3 conversion, colors are enhanced to push into the wider gamut: + +```typescript +// 1. Convert to HSL for easier manipulation +const [h, s, l] = rgbToHsl(r, g, b); + +// 2. Skip neutrals (grays, near-blacks/whites) +if (s < 0.1 || l < 0.1 || l > 0.9) return [r, g, b]; + +// 3. Boost saturation (15-30% based on original) +const saturationBoost = 0.15 + s * 0.15; +const newS = Math.min(1.0, s + s * saturationBoost); + +// 4. Boost luminance for vibrant colors (5%) +let newL = l; +if (s > 0.5 && l < 0.7) { + newL = Math.min(0.9, l + l * 0.05); +} + +// 5. Convert back to RGB → format as CSS +return `color(display-p3 ${r} ${g} ${b})`; +``` + +This enhancement pushes colors into P3 gamut regions not accessible in sRGB, +making them noticeably more vibrant on compatible displays. + +## Color Examples + +| Color | sRGB (Standard) | Display P3 (Vibrant) | Notes | +| ------ | --------------- | ---------------------------------------------- | ------------------- | +| Blue | `#008cff` | `color(display-p3 0.267653 0.570512 1.000000)` | Maxed blue channel | +| Red | `#ff2e3f` | `color(display-p3 1.000000 0.250216 0.262337)` | Maxed red channel | +| Purple | `#c635e4` | `color(display-p3 0.770871 0.230698 0.945253)` | Highly saturated | +| Green | `#0dbe4e` | `color(display-p3 0.298067 0.776115 0.322484)` | Enhanced saturation | +| Cyan | `#08c0ef` | `color(display-p3 0.327292 0.790977 0.995660)` | Nearly maxed blue | + +## Usage with Shiki + +```bash +npm i @pierre/vscode-theme +``` + +```typescript +import { createHighlighter } from 'shiki'; +import pierreDarkVibrant from 'pierre-vscode-theme/themes/pierre-dark-vibrant.json'; + +const highlighter = await createHighlighter({ + themes: [pierreDarkVibrant], + langs: ['typescript', 'javascript'], +}); + +const html = highlighter.codeToHtml(code, { + lang: 'typescript', + theme: 'Pierre Dark Vibrant', +}); +``` + +## Relevant files + +- **`src/color/p3.ts`** - Display-P3 conversion and gamut enhancement +- **`src/color/`** - Shared color science (sRGB, contrast, CIEDE2000, CVD) +- **`src/previews/p3.ts`** - Preview showing conversions + (`moonx theme:preview --ignore-ci-checks`) + +## Why this matters + +Unlike typical P3 conversions that just transform color space mathematically, +this implementation: + +1. **Actually uses the wider gamut** - Pushes colors beyond sRGB constraints +2. **Intelligently enhances** - Only boosts saturated colors, preserves neutrals +3. **Maintains accuracy** - Grays, blacks, whites stay true +4. **Degrades gracefully** - Automatic fallback for non-P3 browsers + +This makes the themes truly take advantage of modern display technology on +compatible hardware. diff --git a/packages/theme/LICENSE b/packages/theme/LICENSE new file mode 100644 index 000000000..51abb130f --- /dev/null +++ b/packages/theme/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 The Pierre Computer Company + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/theme/README.md b/packages/theme/README.md new file mode 100644 index 000000000..2e51b77e5 --- /dev/null +++ b/packages/theme/README.md @@ -0,0 +1,51 @@ +PIERRE COMPUTER COMPANY █ PROJECT: THEME + +``` + +CONTACT: SUPPORT@PIERRE.CO +LOCATION: USA +STATUS: ONLINE +OPEN POSITIONS: [Systems Engineer](https://pierre.computer/careers/systems-engineer) + +``` + +Overview: + +- Light and dark themes for Visual Studio Code, Cursor, Zed, and Shiki. +- Built for [Diffs.com](https://diffs.com) + +``` + +Usage: + + VS Code / Cursor: + 1. Install "Pierre Theme" from the Extensions marketplace + 2. Cmd+Shift+P > "Color Theme" > select Pierre Light or Pierre Dark + + Shiki / npm: + npm install @pierre/theme + + import pierreDark from '@pierre/theme/pierre-dark' + import pierreLight from '@pierre/theme/pierre-light' + + Available themes: + - @pierre/theme/pierre-light + - @pierre/theme/pierre-light-soft + - @pierre/theme/pierre-light-protanopia-deuteranopia (CVD, red-green) + - @pierre/theme/pierre-light-tritanopia (CVD, blue-yellow) + - @pierre/theme/pierre-light-vibrant (Display P3) + - @pierre/theme/pierre-dark + - @pierre/theme/pierre-dark-soft + - @pierre/theme/pierre-dark-protanopia-deuteranopia (CVD, red-green) + - @pierre/theme/pierre-dark-tritanopia (CVD, blue-yellow) + - @pierre/theme/pierre-dark-vibrant (Display P3) + + Zed: + Install "Pierre" from the Zed extension registry + +``` + +Contributing: + +- Development, build, and testing: [CONTRIBUTING.md](CONTRIBUTING.md) +- Accessibility (CVD themes): [ACCESSIBILITY.md](ACCESSIBILITY.md) diff --git a/packages/theme/icon.png b/packages/theme/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..245db71dbe873996bae2e9a5ff1eb4a14fab466c GIT binary patch literal 4980 zcmbVQ={pn-*Pa=Ju?%C#mSyZqw(MJs{bw6fSxOj7W&2@d-)HO!gAlTXL}*lGN_IlY zNVY=ulqEYe44$43&-(|w_jR4?ocnyZ?{DY2uakyGnL(NPnE?O*)chagYXATc`QL)j z{oNd+>r%ot2f<*w|QJUQQ$u|Ib&jS0ME-kq^Fxx(l@vx%VL@)qJ0v z=)?NsmB+03IIkpBk!Q37J^0Y>GS_Iy)xxJ~dO5#DsuboK7%%;PA|3y<JNA(-*tXh9e!~K`3^6bROiKRe{0J$y5-p?Q;2Er}o<1f$+ z?c}Oi_r|hmb@=AtR84r8i0f?U-C`3)#5d>LVDT&ZwsaswFrfjcsMpA2@EbA*RBvL@mbjaBAEbZtabbJy<<3qS| z0>&~L|2f42W`j}RVISf~^PFEe?e~CLVXo0QO^R+7i0+C_?QCaKeSLHR|)~RM+mQee+v1nd~NoYEp zAUe;sjq@|=i^Nlah*AsJ4C2DYR!rFCGc5fgTb7^+g*E46oShx}9{`nk*>fy+_ctn| zn?%&38r}0;5(VdA-me~Xd-=VcWs}U)FHoi}t zZB{fJi!x8+A3Y)N5_xHAyD4H9nb?#jlGzWlmn{>F+>|tDfV=bqHjLC$4E4$*89w&8 zXyD=?D;yU{!Eog_0QeA+NP)5`U;$t?rT98anJW&KzVthi3NZX2xwh@;Pa^73DBkzA zk6+t#?C5mrY61lip^&b?{xF;XrTqhMzYCUefCn)LE&T+1vyk32k-Ta~<>DVdwSai}I|wcVJp3u;Kb6@nS0oc=fotzuLyO)= zDVj!47c)hD3S8`bbqZTGN;^-u%ruw!jbX@dB%%-KSOdE#+V}q+`#zXk0cBgazhl}8N>LaTsc&*BEO{5XqX_#)j zbx-f<5M;ENgWB-QHsC_JOAzd=ut3-VMyW~RNZSKThoq$?sdd~Z2gmm?`anfEfJmY)q z!{IKZt9c~gs&;65`+oJXkeNM=i@|ur=aPiu$OAZ%3)E4XrTAm-Ixp;IAl0wwNpQg3 z^dG@?QjHR%P7@zuw6kzS&8ewF-RqEA2HHRGNdPsK**Y+YH^U+1{%k6d3R;#>?!$w> zJG;jDc%R^ zVc67X#W{3{uTF<^RZe%Hn-U=sy{xd!OJlBS?I%hxT&E+4i>KwX$p z4&*=^nkp_fmvR6x84P0%T5`loU1dhNZvLFsRaUytFZYXzsXwoIdAXo}22-7ka^~e9 z>HBq9UTaUQ3kDuOCq99`zq06EoS9JoFDwXY>jaI(ZOcz#K+IpZkLm_<2e|g*M#$Xq zAr^la-m<&5Fs{pum%j`8*3XH)GtB;DX_iASB|G(rN{u_w^Zt~KW>&wdgVawYnRrNr zl(OO_F%aXD_NB!GR{}4)2;ReSS|h+!YIZ-}VM^+_c>8Nw+fZs{(?=eiYkY&SBsWy= zdY3t$ZX#vCZG;a+UoIF>95ZZr!}`z{OUFCxI`UB2+TgIhR_9asF|%fpG?noeV~{G> z)Kv!(&#g|*?+1@P%bzm1(fYDlN;jNMUrWlY^4VhOxYOY^LnRk1@q%GVb^?*tK{a(h zN**9hJX-mhv)_oi6UqU2+wDT@@`ZTASFx97E-Zq^UNXq>ilUzmd~WSi)XK@`=bdb% zSAoc(u6zxT`3-{RY3{b_HOR18D3M=~t@C7&0={GMfuPOnkhOY~=fObuz2DP8@R~7J z=EkqqZ~px+S7Zg@_s+PBn&(N~9|g4IK#<$2^14%=R(aw`0h{g5YtGBx8ZR9x8CEwc z2gJqnL&T@BBRvrRei9&CgrH`M5Mg5!v6j59?`=K zZ2$ zQmf&Df9Q#!xRSuP_J%l?upEnG8!elLh}+ye<;t(lS>aycyskvf8vSwiIH}7Msy!FD z7yK)3s2PJ=_Lznc_%r%FyP?qHi`@1jnQvy(_5D?QeF@RllNtT|#;;Oz%)`0fdcX@d z9wr_aKaQO6(O3y5lHL2$+JyI69wGxuhb|sywLJg!g1=MwjkXX$)K?PUKuw43-yEks z-?U$uRH;%;YZuy2GcPajtZiAVxpQGQH00{1)clvY=ldZ&;v;&FI<-gTQhlNFYZezQ z-EfD;(1)EB^qb?i=vSGS`;wYEyOrdl@RLiwBp(st!VUHUDLew#ks=^rbW0KYaxBkpI#Kmtm-yF*{%@00U#ja zB>x(2wLQOkZEep4G6bHMko>6m0v|&?k@y)IjoE(km_9J*;5VGvN_>)W-{^PR{470$ zHF~-&7dq!WtHLCnJ9b)){YiY(bvjO7VX`7^g5EY+p5E}_GdhF{v-2RZEK>>_;5*lw z4n)A9NlQ-6#rEh933r1to~{1F9bBKNn0CX1%;npIC$U_qnteUSP<$&bj~VDGtN!ECKKkE0(< zs=+g`>};hD%s02yJRk1zjG9ow89K1^w2Ra zqYDa~4|azkQMV!qEHKW6*>U+YP6|9Ti3x znOA7Xy)3Fq1~SgIygx>L4d7cx^9ICIi+Xqz@JL8QL#?&I;Xy{V-F@Tmb(6@9;7ByQoE_c?ov_n|Ds=5t!jhG8S;WWkrK z+U>)u?OQG8xPFK|lr2=mJL-o_75-f?BR1X%D0>ky2(q>Bx$N@v7{!BNV`qVF8grI{ z-`zCCNkpyE{C}e8IrN|A2F-2t-0+3Qz)f&SDgHj_u^hj2XPb&_HJc1H;_H@C!?6`q zJJ~j=8JE8Zu4~h+oh5V`gCSYH^X&V94jW(24HQi~xjKWexd*il>BiM%7@?#0&_w56 znDoUgK6SZ&qTKq61hPH~cXXGM+Ea`mIRY$oJG0LJntc;IHr9k0e%SlBOYYezjB`BR z?c!lU52`q~m7v+qQ7VF%!m{u5zg#%0vZ=LYN%kY*Qpnwq-WXkaCl&@j&2PDeQ%+qe z+j6|*r$?9Fx&AEmEkJIn=3CO`-_S9X954~NrF6ST=!K|rX(v*Lu?+o{f8KCr#X8*e zy&Mg0Q^Nw5W);>-))iU}NXr}TQoNAl`(r&YW4l^X$kY|Y4t!huSpSQe%mbLw0MIub zi8JIOr|*A&O(WSw(7a5)_=fuT+@qJQb7n@2AWAZ+QeqNvydt+5w;2;*%c{z~54waz z&alZLqGP)RkAq&!<~^p=-FN6KJAu#p$MfQ&-WNwk{Ni4tWwmHAEtoh|fP4vs99dY4d=BAQy^194jJR%4r0v7bJ z5E@YY`lBeQH^^XxlqSaUfOO}^Umt?=8#NH%_Vo%ug8|~Ua~E6{aaFp$1e-Y*&7sFn zpGvrOJWG|?zd@>2!^}KwCD_PhqtAJIye@VEHfbbFk$`zU| za8Igal9}x~v%}3TU!>V1*C`yvUCbKpuOz~nK#s68zQllDTF^Zkk4ENL27~m1WG)i_ z%nqM8zfxCfp1c7}_j3zFJ8&=K#vHku`aPauDRHj;Lk49xf5Y2+6jC*!S$a|VwnL+4 z_t&P?XCpL~%dX2x1)>h3^q_-C-d8Zb#e2g>SXuM96Dm^;|&S0s9w(#-p1Rl-++T51V&eZ zfgS@}%i*Som$Ko2c3L4@bGu*zn@f@~jylMy)A|D*%ZBS$Bo|v z6Q3wW|Lg8vxt*p3J0XXS|C!UN?IlBqRw(XnZaD)AGR$@2rJ4arx}ra*S7h*W4}CS1gZ@-ifmoH9Q>1B%VxJqv9m zj}VBQHlH#N5|t47&ip>NSs$3Rxk!~-eD_kbg&e`w)>3NJ=Iy14JXd`sXRc+9zP+Sw ziJ0N1mnn)ZQ;=8uuElokQ%", + "repository": { + "type": "git", + "url": "https://github.com/pierrecomputer/pierre.git", + "directory": "packages/theme" + }, + "publisher": "pierrecomputer", + "files": [ + "dist", + "themes", + "icon.png", + "LICENSE", + "README.md" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.mts", + "import": "./dist/index.mjs", + "default": "./dist/index.mjs" + }, + "./pierre-light": { + "types": "./dist/pierre-light.d.mts", + "import": "./dist/pierre-light.mjs", + "default": "./dist/pierre-light.mjs" + }, + "./pierre-light-protanopia-deuteranopia": { + "types": "./dist/pierre-light-protanopia-deuteranopia.d.mts", + "import": "./dist/pierre-light-protanopia-deuteranopia.mjs", + "default": "./dist/pierre-light-protanopia-deuteranopia.mjs" + }, + "./pierre-light-soft": { + "types": "./dist/pierre-light-soft.d.mts", + "import": "./dist/pierre-light-soft.mjs", + "default": "./dist/pierre-light-soft.mjs" + }, + "./pierre-light-tritanopia": { + "types": "./dist/pierre-light-tritanopia.d.mts", + "import": "./dist/pierre-light-tritanopia.mjs", + "default": "./dist/pierre-light-tritanopia.mjs" + }, + "./pierre-light-vibrant": { + "types": "./dist/pierre-light-vibrant.d.mts", + "import": "./dist/pierre-light-vibrant.mjs", + "default": "./dist/pierre-light-vibrant.mjs" + }, + "./pierre-dark": { + "types": "./dist/pierre-dark.d.mts", + "import": "./dist/pierre-dark.mjs", + "default": "./dist/pierre-dark.mjs" + }, + "./pierre-dark-protanopia-deuteranopia": { + "types": "./dist/pierre-dark-protanopia-deuteranopia.d.mts", + "import": "./dist/pierre-dark-protanopia-deuteranopia.mjs", + "default": "./dist/pierre-dark-protanopia-deuteranopia.mjs" + }, + "./pierre-dark-soft": { + "types": "./dist/pierre-dark-soft.d.mts", + "import": "./dist/pierre-dark-soft.mjs", + "default": "./dist/pierre-dark-soft.mjs" + }, + "./pierre-dark-tritanopia": { + "types": "./dist/pierre-dark-tritanopia.d.mts", + "import": "./dist/pierre-dark-tritanopia.mjs", + "default": "./dist/pierre-dark-tritanopia.mjs" + }, + "./pierre-dark-vibrant": { + "types": "./dist/pierre-dark-vibrant.d.mts", + "import": "./dist/pierre-dark-vibrant.mjs", + "default": "./dist/pierre-dark-vibrant.mjs" + }, + "./themes/*": "./themes/*" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "prepublishOnly": "moon run theme:prepublish" + }, + "devDependencies": { + "@types/bun": "catalog:", + "@types/culori": "catalog:", + "@vscode/vsce": "catalog:", + "culori": "catalog:", + "ovsx": "catalog:", + "typescript": "catalog:" + }, + "contributes": { + "themes": [ + { + "label": "Pierre Light", + "uiTheme": "vs", + "path": "./themes/pierre-light.json" + }, + { + "label": "Pierre Light Protanopia & Deuteranopia", + "uiTheme": "vs", + "path": "./themes/pierre-light-protanopia-deuteranopia.json" + }, + { + "label": "Pierre Light Soft", + "uiTheme": "vs", + "path": "./themes/pierre-light-soft.json" + }, + { + "label": "Pierre Light Tritanopia", + "uiTheme": "vs", + "path": "./themes/pierre-light-tritanopia.json" + }, + { + "label": "Pierre Dark", + "uiTheme": "vs-dark", + "path": "./themes/pierre-dark.json" + }, + { + "label": "Pierre Dark Protanopia & Deuteranopia", + "uiTheme": "vs-dark", + "path": "./themes/pierre-dark-protanopia-deuteranopia.json" + }, + { + "label": "Pierre Dark Soft", + "uiTheme": "vs-dark", + "path": "./themes/pierre-dark-soft.json" + }, + { + "label": "Pierre Dark Tritanopia", + "uiTheme": "vs-dark", + "path": "./themes/pierre-dark-tritanopia.json" + } + ] + }, + "icon": "icon.png", + "galleryBanner": { + "color": "#141415", + "theme": "dark" + }, + "engines": { + "vscode": "^1.0.0" + } +} diff --git a/packages/theme/scripts/README.package.md b/packages/theme/scripts/README.package.md new file mode 100644 index 000000000..f6a40634b --- /dev/null +++ b/packages/theme/scripts/README.package.md @@ -0,0 +1,44 @@ +# Pierre Theme + +A clean light and dark theme for Visual Studio Code and Cursor, built for +[Diffs.com](https://diffs.com). + +## Installation + +1. Open the Extensions view (`Cmd+Shift+X`) +2. Search for **Pierre Theme** +3. Click **Install** +4. Open the Command Palette (`Cmd+Shift+P`) → **Color Theme** → select **Pierre + Light** or **Pierre Dark** + +## Variants + +- Pierre Light +- Pierre Dark +- Pierre Light Soft +- Pierre Dark Soft +- Pierre Light Protanopia & Deuteranopia +- Pierre Dark Protanopia & Deuteranopia +- Pierre Light Tritanopia +- Pierre Dark Tritanopia +- **For web-use only:** + - Pierre Light Vibrant + - Pierre Dark Vibrant + +## Links + +- [GitHub](https://github.com/pierrecomputer/theme) +- [Diffs.com](https://diffs.com) +- [pierre.computer](https://pierre.computer) + +Also available for [Zed](https://zed.dev/extensions?query=pierre) and as an +[npm package](https://www.npmjs.com/package/@pierre/theme) for use with +[Shiki](https://shiki.style/). + +## Previews + +Pierre Dark Soft and Pierre Light Soft. + +pierre-dark-soft + +pierre-light-soft diff --git a/packages/theme/scripts/build.ts b/packages/theme/scripts/build.ts new file mode 100644 index 000000000..e01cca6f1 --- /dev/null +++ b/packages/theme/scripts/build.ts @@ -0,0 +1,203 @@ +import { mkdirSync, writeFileSync } from 'node:fs'; + +import { convertRolesToP3 } from '../src/color'; +import { createTheme } from '../src/createTheme'; +import { createZedTheme } from '../src/createZedTheme'; +import { + dark as rolesDark, + darkSoft as rolesDarkSoft, + light as rolesLight, + lightSoft as rolesLightSoft, + protanDeutanDark as rolesProtanDeutanDark, + protanDeutanLight as rolesProtanDeutanLight, + tritanopiaDark as rolesTritanopiaDark, + tritanopiaLight as rolesTritanopiaLight, +} from '../src/roles'; + +mkdirSync('themes', { recursive: true }); +mkdirSync('zed/themes', { recursive: true }); + +// Convert palettes to Display P3 color space +const rolesLightP3 = convertRolesToP3(rolesLight); +const rolesDarkP3 = convertRolesToP3(rolesDark); + +// ============================================ +// VS Code Themes +// ============================================ +const vscodeThemes = [ + { + file: 'themes/pierre-light.json', + theme: createTheme({ + name: 'pierre-light', + displayName: 'Pierre Light', + type: 'light', + roles: rolesLight, + }), + }, + { + file: 'themes/pierre-light-protanopia-deuteranopia.json', + theme: createTheme({ + name: 'pierre-light-protanopia-deuteranopia', + displayName: 'Pierre Light Protanopia & Deuteranopia', + type: 'light', + roles: rolesProtanDeutanLight, + }), + }, + { + file: 'themes/pierre-light-soft.json', + theme: createTheme({ + name: 'pierre-light-soft', + displayName: 'Pierre Light Soft', + type: 'light', + roles: rolesLightSoft, + }), + }, + { + file: 'themes/pierre-light-tritanopia.json', + theme: createTheme({ + name: 'pierre-light-tritanopia', + displayName: 'Pierre Light Tritanopia', + type: 'light', + roles: rolesTritanopiaLight, + }), + }, + { + file: 'themes/pierre-light-vibrant.json', + theme: createTheme({ + name: 'pierre-light-vibrant', + displayName: 'Pierre Light Vibrant', + type: 'light', + roles: rolesLightP3, + }), + }, + { + file: 'themes/pierre-dark.json', + theme: createTheme({ + name: 'pierre-dark', + displayName: 'Pierre Dark', + type: 'dark', + roles: rolesDark, + }), + }, + { + file: 'themes/pierre-dark-protanopia-deuteranopia.json', + theme: createTheme({ + name: 'pierre-dark-protanopia-deuteranopia', + displayName: 'Pierre Dark Protanopia & Deuteranopia', + type: 'dark', + roles: rolesProtanDeutanDark, + }), + }, + { + file: 'themes/pierre-dark-soft.json', + theme: createTheme({ + name: 'pierre-dark-soft', + displayName: 'Pierre Dark Soft', + type: 'dark', + roles: rolesDarkSoft, + }), + }, + { + file: 'themes/pierre-dark-tritanopia.json', + theme: createTheme({ + name: 'pierre-dark-tritanopia', + displayName: 'Pierre Dark Tritanopia', + type: 'dark', + roles: rolesTritanopiaDark, + }), + }, + { + file: 'themes/pierre-dark-vibrant.json', + theme: createTheme({ + name: 'pierre-dark-vibrant', + displayName: 'Pierre Dark Vibrant', + type: 'dark', + roles: rolesDarkP3, + }), + }, +]; + +for (const { file, theme } of vscodeThemes) { + writeFileSync(file, JSON.stringify(theme, null, 2), 'utf8'); + console.log('Wrote', file); +} + +// ============================================ +// Zed Theme Family +// ============================================ +const zedTheme = createZedTheme('Pierre', 'pierrecomputer', [ + { name: 'Pierre Light', appearance: 'light', roles: rolesLight }, + { + name: 'Pierre Light Protanopia & Deuteranopia', + appearance: 'light', + roles: rolesProtanDeutanLight, + }, + { name: 'Pierre Light Soft', appearance: 'light', roles: rolesLightSoft }, + { + name: 'Pierre Light Tritanopia', + appearance: 'light', + roles: rolesTritanopiaLight, + }, + { name: 'Pierre Dark', appearance: 'dark', roles: rolesDark }, + { + name: 'Pierre Dark Protanopia & Deuteranopia', + appearance: 'dark', + roles: rolesProtanDeutanDark, + }, + { name: 'Pierre Dark Soft', appearance: 'dark', roles: rolesDarkSoft }, + { + name: 'Pierre Dark Tritanopia', + appearance: 'dark', + roles: rolesTritanopiaDark, + }, +]); + +writeFileSync( + 'zed/themes/pierre.json', + JSON.stringify(zedTheme, null, 2), + 'utf8' +); +console.log('Wrote zed/themes/pierre.json'); + +// ============================================ +// ESM wrapper modules (for npm / Shiki consumers) +// ============================================ +mkdirSync('dist', { recursive: true }); + +const themeNames: string[] = []; + +/** VS Code / Shiki theme shape exposed by each per-theme module. */ +const themeDts = `/** VS Code / TextMate theme object (frozen at runtime). */ +interface PierreTheme { + readonly name: string; + readonly displayName: string; + readonly type: "light" | "dark"; + readonly colors: Readonly>; + readonly tokenColors: ReadonlyArray<{ + readonly name?: string; + readonly scope?: string | string[]; + readonly settings: Readonly>; + }>; + readonly semanticTokenColors: Readonly>>; +} + +declare const theme: PierreTheme; +export default theme; +`; + +for (const { file, theme } of vscodeThemes) { + const name = file.replace('themes/', '').replace('.json', ''); + themeNames.push(name); + const json = JSON.stringify(theme); + const escaped = json.replace(/\\/g, '\\\\').replace(/'/g, "\\'"); + const mjs = `export default Object.freeze(JSON.parse('${escaped}'))\n`; + writeFileSync(`dist/${name}.mjs`, mjs, 'utf8'); + writeFileSync(`dist/${name}.d.mts`, themeDts, 'utf8'); + console.log('Wrote', `dist/${name}.mjs`, `+ .d.mts`); +} + +const indexMjs = `export const themeNames = ${JSON.stringify(themeNames)}\n`; +const indexDts = `export declare const themeNames: readonly string[];\n`; +writeFileSync('dist/index.mjs', indexMjs, 'utf8'); +writeFileSync('dist/index.d.mts', indexDts, 'utf8'); +console.log('Wrote dist/index.mjs + .d.mts'); diff --git a/packages/theme/scripts/buildVsCodePackage.ts b/packages/theme/scripts/buildVsCodePackage.ts new file mode 100644 index 000000000..c44e2f4d1 --- /dev/null +++ b/packages/theme/scripts/buildVsCodePackage.ts @@ -0,0 +1,10 @@ +import { execFileSync } from 'node:child_process'; + +import { packageRoot, withVsixPackageShim } from './vsixPackageShim'; + +withVsixPackageShim(() => { + execFileSync('bunx', ['vsce', 'package', '--no-dependencies'], { + cwd: packageRoot, + stdio: 'inherit', + }); +}); diff --git a/packages/theme/scripts/createPreviews.ts b/packages/theme/scripts/createPreviews.ts new file mode 100644 index 000000000..943dc5745 --- /dev/null +++ b/packages/theme/scripts/createPreviews.ts @@ -0,0 +1,40 @@ +// Discovers preview modules in src/previews and writes each rendered HTML file +// to preview/. + +import { mkdirSync, readdirSync, writeFileSync } from 'node:fs'; +import { basename, dirname, extname, join, relative } from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; + +type Preview = { + filename: string; + render: () => string; +}; + +const scriptDir = dirname(fileURLToPath(import.meta.url)); +const root = join(scriptDir, '..'); +const previewSourceDir = join(root, 'src', 'previews'); +const outputDir = join(root, 'preview'); + +mkdirSync(outputDir, { recursive: true }); + +const files = readdirSync(previewSourceDir) + .filter((file) => extname(file) === '.ts') + .sort(); + +for (const file of files) { + const exportName = basename(file, '.ts'); + const mod = await import(pathToFileURL(join(previewSourceDir, file)).href); + const preview = mod[exportName] as Preview | undefined; + + if ( + preview === undefined || + typeof preview.filename !== 'string' || + typeof preview.render !== 'function' + ) { + throw new Error(`${file} must export ${exportName}: { filename, render }`); + } + + const outputPath = join(outputDir, preview.filename); + writeFileSync(outputPath, preview.render(), 'utf8'); + console.log('Wrote', relative(root, outputPath)); +} diff --git a/packages/theme/scripts/publishExtensions.ts b/packages/theme/scripts/publishExtensions.ts new file mode 100644 index 000000000..555f45a62 --- /dev/null +++ b/packages/theme/scripts/publishExtensions.ts @@ -0,0 +1,29 @@ +import { execFileSync } from 'node:child_process'; + +import { packageRoot, withVsixPackageShim } from './vsixPackageShim'; + +const vscePat = process.env.VSCE_PAT; +const ovsxPat = process.env.OVSX_PAT; + +if (vscePat === undefined || vscePat.length === 0) { + throw new Error('VSCE_PAT must be set to publish the VS Code extension'); +} + +if (ovsxPat === undefined || ovsxPat.length === 0) { + throw new Error('OVSX_PAT must be set to publish the Open VSX extension'); +} + +withVsixPackageShim(() => { + const env = { ...process.env, OVSX_PAT: ovsxPat, VSCE_PAT: vscePat }; + + execFileSync('bunx', ['vsce', 'publish', '--no-dependencies'], { + cwd: packageRoot, + env, + stdio: 'inherit', + }); + execFileSync('bunx', ['ovsx', 'publish', '--no-dependencies'], { + cwd: packageRoot, + env, + stdio: 'inherit', + }); +}); diff --git a/packages/theme/scripts/vsixPackageShim.ts b/packages/theme/scripts/vsixPackageShim.ts new file mode 100644 index 000000000..634f454d9 --- /dev/null +++ b/packages/theme/scripts/vsixPackageShim.ts @@ -0,0 +1,60 @@ +import { existsSync, readFileSync, renameSync, writeFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +interface PackageJson { + name?: unknown; + [key: string]: unknown; +} + +const scriptDir = dirname(fileURLToPath(import.meta.url)); +export const packageRoot = join(scriptDir, '..'); +const packageJsonPath = join(packageRoot, 'package.json'); +const readmePath = join(packageRoot, 'README.md'); +const vsceReadmePath = join(scriptDir, 'README.package.md'); +const readmeBackupPath = join(packageRoot, 'README.md.bak'); + +// VSIX tooling reads package.json and README.md from the extension root, while +// the npm package keeps a scoped name and a package-focused README. +export function withVsixPackageShim(action: () => void): void { + const originalPackageJson = readFileSync(packageJsonPath, 'utf-8'); + const packageJson = JSON.parse(originalPackageJson) as PackageJson; + + if (typeof packageJson.name !== 'string') { + throw new TypeError( + 'packages/theme/package.json must define a string name' + ); + } + + const originalName = packageJson.name; + const extensionName = 'pierre-theme'; + packageJson.name = extensionName; + delete packageJson.files; + + console.log( + `Temporarily renaming package: ${originalName} -> ${extensionName}\n` + ); + + const hadReadme = existsSync(readmePath); + + try { + writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n'); + + if (hadReadme) { + renameSync(readmePath, readmeBackupPath); + } + renameSync(vsceReadmePath, readmePath); + + action(); + } finally { + if (existsSync(readmePath)) { + renameSync(readmePath, vsceReadmePath); + } + if (hadReadme && existsSync(readmeBackupPath)) { + renameSync(readmeBackupPath, readmePath); + } + + writeFileSync(packageJsonPath, originalPackageJson); + console.log(`\nRestored package name: ${originalName}`); + } +} diff --git a/packages/theme/src/color/contrast.ts b/packages/theme/src/color/contrast.ts new file mode 100644 index 000000000..90415f908 --- /dev/null +++ b/packages/theme/src/color/contrast.ts @@ -0,0 +1,24 @@ +// WCAG 2.1 contrast ratio — a legibility check, independent of hue. Relative +// luminance uses the linear-RGB luma coefficients; contrast is +// (lighter + 0.05) / (darker + 0.05), from 1:1 (identical) to 21:1 (black on +// white). WCAG AA wants ≥ 4.5:1 for normal text and ≥ 3:1 for large text / UI +// glyphs. The CVD gate re-checks contrast *after* simulation, since simulation +// shifts luminance. + +import { hexToRgb01, srgbToLinear } from './srgb'; + +function relativeLuminance(hex: string): number { + const [r, g, b] = hexToRgb01(hex).map(srgbToLinear) as [ + number, + number, + number, + ]; + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +/** WCAG 2.1 contrast ratio between two sRGB hex colors (order-independent). */ +export function contrastRatio(a: string, b: string): number { + const la = relativeLuminance(a); + const lb = relativeLuminance(b); + return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05); +} diff --git a/packages/theme/src/color/cvd.ts b/packages/theme/src/color/cvd.ts new file mode 100644 index 000000000..79f7df991 --- /dev/null +++ b/packages/theme/src/color/cvd.ts @@ -0,0 +1,321 @@ +// CVD (Color Vision Deficiency) simulation — "what does this color look like to a +// protan/deutan/tritan viewer?". Consumed by the objective gate (test/cvd.test.ts) +// and the proof-sheet preview (src/previews/cvd.ts). +// +// ───────────────────────────────────────────────────────────────────────────── +// WHAT IS CVD? (the 30-second version for engineers new to this) +// ───────────────────────────────────────────────────────────────────────────── +// "Color vision deficiency" (colloquially "color blindness") means one of the +// three cone types in the retina is missing or shifted, so some hues that look +// distinct to most people collapse into the same perceived color. The three +// dichromacies we target: +// +// • Protanopia — missing L (long/red) cones. +// • Deuteranopia — missing M (medium/green) cones. +// Protanopia and deuteranopia both confuse RED ↔ GREEN; the axis that +// survives is roughly BLUE ↔ ORANGE/YELLOW. +// • Tritanopia — missing S (short/blue) cones. Confuses BLUE ↔ GREEN; the +// axis that survives is roughly RED ↔ CYAN/TEAL. +// +// Design consequence: a CVD-safe theme must carry meaning (added vs deleted, +// pass vs fail, error vs warning) on the axis that *survives* for that +// deficiency, and lean on LUMINANCE (light/dark) as a second channel whenever a +// hue pole has to be reused. We don't guess whether a palette works — we +// *simulate* how each color looks to a dichromat, then measure separations with +// deltaE2000() and legibility with contrastRatio() (sibling color-science +// modules). The objective gate in test/cvd.test.ts ties those together. +// +// Standards / sources (also cited in ACCESSIBILITY.md): +// • Machado, Oliveira & Fernandes (2009), "A Physiologically-Based Model for +// Simulation of Color Vision Deficiency", IEEE TVCG — the simulation matrices. + +import { deltaE2000 } from './deltaE'; +import { hexToRgb01, linearToSrgb, srgbToLinear } from './srgb'; + +export type CVDType = 'protan' | 'deutan' | 'tritan'; + +// ───────────────────────────────────────────────────────────────────────────── +// CVD SIMULATION — Machado, Oliveira & Fernandes (2009) +// ───────────────────────────────────────────────────────────────────────────── +// The Machado model reduces "how a dichromat sees a color" to a single 3×3 +// matrix multiply. The authors published one matrix per deficiency at 11 severity +// steps (0.0 = normal vision … 1.0 = full dichromacy). We embed all 11 (the same +// values the colorspace R package and culori use) but gate the themes at severity +// 1.0 — the worst case — so anything that survives also works for milder +// anomalous trichromacy. +// +// Each matrix row sums to ~1.0, so neutral grays (R=G=B) map to themselves — a +// useful check that the tables were transcribed correctly. +// +// GAMMA CONVENTION (genuinely debated — read before changing). We apply the +// matrices in LINEAR RGB: linearize the sRGB hex, multiply, re-encode. The +// rationale is consistency with the model's derivation — the RGB↔LMS step it +// approximates lives in linear light. But this is a *theoretical* preference, not +// an empirical one: there is no published study proving linear-applied Machado +// matches real dichromat perception better than the gamma-sRGB application used +// by culori and the `colorspace` R package (which it follows). The two only +// diverge noticeably on saturated colors. We implement linear here and the gate +// in test/cvd.test.ts additionally checks culori's gamma convention for Tier-1 +// and Tier-2 distinguishability. + +type Matrix3 = readonly [ + number, + number, + number, + number, + number, + number, + number, + number, + number, +]; + +// Severity 0.0 → 1.0 in 0.1 steps. Index 10 (severity 1.0) is the dichromacy. +const MACHADO: Record = { + protan: [ + [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0], + [ + 0.856167, 0.182038, -0.038205, 0.029342, 0.955115, 0.015544, -0.00288, + -0.001563, 1.004443, + ], + [ + 0.734766, 0.334872, -0.069637, 0.05184, 0.919198, 0.028963, -0.004928, + -0.004209, 1.009137, + ], + [ + 0.630323, 0.465641, -0.095964, 0.069181, 0.890046, 0.040773, -0.006308, + -0.007724, 1.014032, + ], + [ + 0.539009, 0.579343, -0.118352, 0.082546, 0.866121, 0.051332, -0.007136, + -0.011959, 1.019095, + ], + [ + 0.458064, 0.679578, -0.137642, 0.092785, 0.846313, 0.060902, -0.007494, + -0.016807, 1.024301, + ], + [ + 0.38545, 0.769005, -0.154455, 0.100526, 0.829802, 0.069673, -0.007442, + -0.02219, 1.029632, + ], + [ + 0.319627, 0.849633, -0.169261, 0.106241, 0.815969, 0.07779, -0.007025, + -0.028051, 1.035076, + ], + [ + 0.259411, 0.923008, -0.18242, 0.110296, 0.80434, 0.085364, -0.006276, + -0.034346, 1.040622, + ], + [ + 0.203876, 0.990338, -0.194214, 0.112975, 0.794542, 0.092483, -0.005222, + -0.041043, 1.046265, + ], + [ + 0.152286, 1.052583, -0.204868, 0.114503, 0.786281, 0.099216, -0.003882, + -0.048116, 1.051998, + ], + ], + deutan: [ + [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0], + [ + 0.866435, 0.177704, -0.044139, 0.049567, 0.939063, 0.01137, -0.003453, + 0.007233, 0.99622, + ], + [ + 0.760729, 0.319078, -0.079807, 0.090568, 0.889315, 0.020117, -0.006027, + 0.013325, 0.992702, + ], + [ + 0.675425, 0.43385, -0.109275, 0.125303, 0.847755, 0.026942, -0.00795, + 0.018572, 0.989378, + ], + [ + 0.605511, 0.52856, -0.134071, 0.155318, 0.812366, 0.032316, -0.009376, + 0.023176, 0.9862, + ], + [ + 0.547494, 0.607765, -0.155259, 0.181692, 0.781742, 0.036566, -0.01041, + 0.027275, 0.983136, + ], + [ + 0.498864, 0.674741, -0.173604, 0.205199, 0.754872, 0.039929, -0.011131, + 0.030969, 0.980162, + ], + [ + 0.457771, 0.731899, -0.18967, 0.226409, 0.731012, 0.042579, -0.011595, + 0.034333, 0.977261, + ], + [ + 0.422823, 0.781057, -0.203881, 0.245752, 0.709602, 0.044646, -0.011843, + 0.037423, 0.974421, + ], + [ + 0.392952, 0.82361, -0.216562, 0.263559, 0.69021, 0.046232, -0.01191, + 0.040281, 0.97163, + ], + [ + 0.367322, 0.860646, -0.227968, 0.280085, 0.672501, 0.047413, -0.01182, + 0.04294, 0.968881, + ], + ], + tritan: [ + [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0], + [ + 0.92667, 0.092514, -0.019184, 0.021191, 0.964503, 0.014306, 0.008437, + 0.054813, 0.93675, + ], + [ + 0.89572, 0.13333, -0.02905, 0.029997, 0.9454, 0.024603, 0.013027, + 0.104707, 0.882266, + ], + [ + 0.905871, 0.127791, -0.033662, 0.026856, 0.941251, 0.031893, 0.01341, + 0.148296, 0.838294, + ], + [ + 0.948035, 0.08949, -0.037526, 0.014364, 0.946792, 0.038844, 0.010853, + 0.193991, 0.795156, + ], + [ + 1.017277, 0.027029, -0.044306, -0.006113, 0.958479, 0.047634, 0.006379, + 0.248708, 0.744913, + ], + [ + 1.104996, -0.046633, -0.058363, -0.032137, 0.971635, 0.060503, 0.001336, + 0.317922, 0.680742, + ], + [ + 1.193214, -0.109812, -0.083402, -0.058496, 0.97941, 0.079086, -0.002346, + 0.403492, 0.598854, + ], + [ + 1.257728, -0.139648, -0.118081, -0.078003, 0.975409, 0.102594, -0.003316, + 0.501214, 0.502102, + ], + [ + 1.278864, -0.125333, -0.153531, -0.084748, 0.957674, 0.127074, -0.000989, + 0.601151, 0.399838, + ], + [ + 1.255528, -0.076749, -0.178779, -0.078411, 0.930809, 0.147602, 0.004733, + 0.691367, 0.3039, + ], + ], +}; + +function clamp01(v: number): number { + return v < 0 ? 0 : v > 1 ? 1 : v; +} + +function channelToHex(v01: number): string { + return Math.round(clamp01(v01) * 255) + .toString(16) + .padStart(2, '0'); +} + +/** + * Simulate how `hex` appears to someone with the given dichromacy. + * + * @param hex sRGB hex color, e.g. "#1a85d4". + * @param type "protan" | "deutan" | "tritan". + * @param severity 0.0 (normal) … 1.0 (full dichromacy). Defaults to 1.0 — the + * worst case the themes are gated against. Snapped to the nearest + * published 0.1 step. + * @returns a new sRGB hex string of the simulated appearance. + */ +export function simulateCVD( + hex: string, + type: CVDType, + severity = 1.0 +): string { + if (!/^#?[0-9a-fA-F]{6}$/.test(hex)) { + throw new Error(`simulateCVD expects a 6-digit hex color, got: ${hex}`); + } + const step = Math.round(clamp01(severity) * 10); // 0..10 + const m = MACHADO[type][step]; + + // sRGB hex → linear RGB (the matrix lives in linear light, see GAMMA note). + const [r, g, b] = hexToRgb01(hex).map(srgbToLinear) as [ + number, + number, + number, + ]; + + const lr = m[0] * r + m[1] * g + m[2] * b; + const lg = m[3] * r + m[4] * g + m[5] * b; + const lb = m[6] * r + m[7] * g + m[8] * b; + + // linear RGB → sRGB hex. + const R = channelToHex(linearToSrgb(clamp01(lr))); + const G = channelToHex(linearToSrgb(clamp01(lg))); + const B = channelToHex(linearToSrgb(clamp01(lb))); + return `#${R}${G}${B}`; +} + +// ───────────────────────────────────────────────────────────────────────────── +// SELF-CHECKS — prove the simulation is wired up correctly +// ───────────────────────────────────────────────────────────────────────────── +// Provable invariants of the model: severity-0 is the identity, neutral grays are +// preserved (every Machado row sums to ~1), and the expected confusable axis +// actually collapses. (contrast/ΔE are additionally cross-checked against culori +// in test/cvd.test.ts.) These run from cvd.test.ts. + +export type SelfCheckResult = { name: string; ok: boolean; detail: string }; + +export function cvdSelfChecks(): SelfCheckResult[] { + const results: SelfCheckResult[] = []; + const near = (a: string, b: string, tol = 2) => { + const [r1, g1, b1] = hexToRgb01(a).map((x) => x * 255); + const [r2, g2, b2] = hexToRgb01(b).map((x) => x * 255); + return ( + Math.abs(r1 - r2) <= tol && + Math.abs(g1 - g2) <= tol && + Math.abs(b1 - b2) <= tol + ); + }; + + // (a) Severity 0 is the identity transform for every type. + for (const t of ['protan', 'deutan', 'tritan'] as CVDType[]) { + const samples = ['#1a85d4', '#d52c36', '#199f43', '#ffca00']; + const ok = samples.every((h) => near(simulateCVD(h, t, 0), h, 1)); + results.push({ + name: `severity-0 identity (${t})`, + ok, + detail: ok ? 'input preserved' : 'drifted', + }); + } + + // (b) Neutral axis is preserved: gray/white/black map to themselves. + for (const t of ['protan', 'deutan', 'tritan'] as CVDType[]) { + const grays = ['#000000', '#808080', '#bcbcbc', '#ffffff']; + const ok = grays.every((h) => near(simulateCVD(h, t, 1), h, 3)); + results.push({ + name: `neutral axis preserved (${t})`, + ok, + detail: ok ? 'grays stable' : 'grays shifted', + }); + } + + // (c) Behavioral: the simulation actually *removes* the confusable axis. + // RED↔GREEN collapses under protan/deutan; BLUE↔GREEN under tritan. + // (Tritanopia is loosely "blue-yellow", but blue & yellow differ in + // luminance — which tritanopes keep — so blue↔green is the real collapse.) + const red = '#ff2e3f', + green = '#199f43', + blue = '#009fff'; + const collapses = (name: string, t: CVDType, x: string, y: string) => { + const before = deltaE2000(x, y); + const after = deltaE2000(simulateCVD(x, t, 1), simulateCVD(y, t, 1)); + const ok = after < before * 0.5; // confusable axis loses at least half its separation + results.push({ + name, + ok, + detail: `ΔE ${before.toFixed(1)} → ${after.toFixed(1)} under ${t}`, + }); + }; + collapses('protan collapses red↔green', 'protan', red, green); + collapses('deutan collapses red↔green', 'deutan', red, green); + collapses('tritan collapses blue↔green', 'tritan', blue, green); + + return results; +} diff --git a/packages/theme/src/color/deltaE.ts b/packages/theme/src/color/deltaE.ts new file mode 100644 index 000000000..6fb112a8d --- /dev/null +++ b/packages/theme/src/color/deltaE.ts @@ -0,0 +1,101 @@ +// CIEDE2000 perceptual color difference (ΔE₀₀) — "how far apart do two colors +// look?". The modern CIE standard, tuned to human perception in CIE Lab space. +// Rough reading: <1 imperceptible, ~2–3 just noticeable, > ~10 "clearly +// different / not confused". The CVD gate computes ΔE between the *simulated* +// versions of two roles to prove a dichromat can still tell them apart. +// Pipeline: sRGB → linear → XYZ (D65) → Lab → CIEDE2000. + +import { hexToRgb01, srgbToLinear } from './srgb'; + +function hexToLab(hex: string): [number, number, number] { + const [r, g, b] = hexToRgb01(hex).map(srgbToLinear) as [ + number, + number, + number, + ]; + // linear sRGB → CIE XYZ (D65, Y of white = 1). + const x = 0.4124564 * r + 0.3575761 * g + 0.1804375 * b; + const y = 0.2126729 * r + 0.7151522 * g + 0.072175 * b; + const z = 0.0193339 * r + 0.119192 * g + 0.9503041 * b; + // XYZ → Lab, D65 reference white. + const xn = 0.95047, + yn = 1.0, + zn = 1.08883; + const f = (t: number) => (t > 0.008856 ? Math.cbrt(t) : 7.787 * t + 16 / 116); + const fx = f(x / xn), + fy = f(y / yn), + fz = f(z / zn); + return [116 * fy - 16, 500 * (fx - fy), 200 * (fy - fz)]; +} + +const deg2rad = (d: number) => (d * Math.PI) / 180; +const rad2deg = (r: number) => (r * 180) / Math.PI; + +/** CIEDE2000 color difference (ΔE₀₀) between two sRGB hex colors. */ +export function deltaE2000(hexA: string, hexB: string): number { + const [L1, a1, b1] = hexToLab(hexA); + const [L2, a2, b2] = hexToLab(hexB); + + const avgL = (L1 + L2) / 2; + const C1 = Math.hypot(a1, b1); + const C2 = Math.hypot(a2, b2); + const avgC = (C1 + C2) / 2; + + const G = + 0.5 * + (1 - Math.sqrt(Math.pow(avgC, 7) / (Math.pow(avgC, 7) + Math.pow(25, 7)))); + const a1p = a1 * (1 + G); + const a2p = a2 * (1 + G); + const C1p = Math.hypot(a1p, b1); + const C2p = Math.hypot(a2p, b2); + const avgCp = (C1p + C2p) / 2; + + const hp = (ap: number, bp: number) => { + if (ap === 0 && bp === 0) return 0; + let h = rad2deg(Math.atan2(bp, ap)); + if (h < 0) h += 360; + return h; + }; + const h1p = hp(a1p, b1); + const h2p = hp(a2p, b2); + + let dhp: number; + if (C1p * C2p === 0) dhp = 0; + else if (Math.abs(h2p - h1p) <= 180) dhp = h2p - h1p; + else if (h2p - h1p > 180) dhp = h2p - h1p - 360; + else dhp = h2p - h1p + 360; + + const dLp = L2 - L1; + const dCp = C2p - C1p; + const dHp = 2 * Math.sqrt(C1p * C2p) * Math.sin(deg2rad(dhp) / 2); + + let avgHp: number; + if (C1p * C2p === 0) avgHp = h1p + h2p; + else if (Math.abs(h1p - h2p) <= 180) avgHp = (h1p + h2p) / 2; + else if (h1p + h2p < 360) avgHp = (h1p + h2p + 360) / 2; + else avgHp = (h1p + h2p - 360) / 2; + + const T = + 1 - + 0.17 * Math.cos(deg2rad(avgHp - 30)) + + 0.24 * Math.cos(deg2rad(2 * avgHp)) + + 0.32 * Math.cos(deg2rad(3 * avgHp + 6)) - + 0.2 * Math.cos(deg2rad(4 * avgHp - 63)); + + const dTheta = 30 * Math.exp(-Math.pow((avgHp - 275) / 25, 2)); + const Rc = + 2 * Math.sqrt(Math.pow(avgCp, 7) / (Math.pow(avgCp, 7) + Math.pow(25, 7))); + const Sl = + 1 + + (0.015 * Math.pow(avgL - 50, 2)) / Math.sqrt(20 + Math.pow(avgL - 50, 2)); + const Sc = 1 + 0.045 * avgCp; + const Sh = 1 + 0.015 * avgCp * T; + const Rt = -Math.sin(deg2rad(2 * dTheta)) * Rc; + + return Math.sqrt( + Math.pow(dLp / Sl, 2) + + Math.pow(dCp / Sc, 2) + + Math.pow(dHp / Sh, 2) + + Rt * (dCp / Sc) * (dHp / Sh) + ); +} diff --git a/packages/theme/src/color/index.ts b/packages/theme/src/color/index.ts new file mode 100644 index 000000000..b65247934 --- /dev/null +++ b/packages/theme/src/color/index.ts @@ -0,0 +1,14 @@ +// Color science: pure, dependency-free color math shared by the theme build +// (Display-P3 vibrant variants), the previews, and the CVD accessibility gate. +// Each concern is a discrete module; this barrel re-exports the public surface. + +export { hexToRgb01, srgbToLinear, linearToSrgb } from './srgb'; +export { srgbHexToP3Color, convertRolesToP3 } from './p3'; +export { contrastRatio } from './contrast'; +export { deltaE2000 } from './deltaE'; +export { + simulateCVD, + cvdSelfChecks, + type CVDType, + type SelfCheckResult, +} from './cvd'; diff --git a/packages/theme/src/color/p3.ts b/packages/theme/src/color/p3.ts new file mode 100644 index 000000000..f6445f5c5 --- /dev/null +++ b/packages/theme/src/color/p3.ts @@ -0,0 +1,169 @@ +// Convert sRGB hex colors to the CSS Display P3 color space, with an optional +// saturation/luminance boost that pushes colors into P3's wider gamut. This is +// how the "vibrant" theme variants are defined (see scripts/build.ts) and +// previewed (src/previews/p3.ts). + +import { hexToRgb01, linearToSrgb, srgbToLinear } from './srgb'; + +// Display P3 uses the same transfer function (gamma) as sRGB. +const linearToP3 = linearToSrgb; + +/** Linear sRGB → linear Display P3 (sRGB primaries → P3 primaries via XYZ). */ +function linearSrgbToLinearP3( + r: number, + g: number, + b: number +): [number, number, number] { + const rOut = 0.82246197 * r + 0.17753803 * g + 0.0 * b; + const gOut = 0.0331942 * r + 0.9668058 * g + 0.0 * b; + const bOut = 0.01708263 * r + 0.07239744 * g + 0.91051993 * b; + return [rOut, gOut, bOut]; +} + +/** Format a 0–1 channel for a CSS color() function (clamped, 6 dp). */ +function formatColorValue(value: number): string { + const clamped = Math.max(0, Math.min(1, value)); + return clamped.toFixed(6); +} + +function rgbToHsl(r: number, g: number, b: number): [number, number, number] { + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + const delta = max - min; + + let h = 0; + let s = 0; + const l = (max + min) / 2; + + if (delta !== 0) { + s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min); + switch (max) { + case r: + h = ((g - b) / delta + (g < b ? 6 : 0)) / 6; + break; + case g: + h = ((b - r) / delta + 2) / 6; + break; + case b: + h = ((r - g) / delta + 4) / 6; + break; + } + } + + return [h, s, l]; +} + +function hslToRgb(h: number, s: number, l: number): [number, number, number] { + let r, g, b; + + if (s === 0) { + r = g = b = l; + } else { + const hue2rgb = (p: number, q: number, t: number) => { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + }; + + const q = l < 0.5 ? l * (1 + s) : l + s - l * s; + const p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + + return [r, g, b]; +} + +/** + * Enhance colors to take advantage of P3's wider gamut: boost saturation + * (15–30% by original saturation) and, for vivid mid-tones, luminance (~5%). + * Grays and near-black/white are left untouched. + */ +function enhanceForP3Gamut( + r: number, + g: number, + b: number +): [number, number, number] { + const [h, s, l] = rgbToHsl(r, g, b); + + if (s < 0.1 || l < 0.1 || l > 0.9) { + return [r, g, b]; + } + + const saturationBoost = 0.15 + s * 0.15; // 15–30% depending on saturation + let newS = Math.min(1.0, s + s * saturationBoost); + + let newL = l; + if (s > 0.5 && l < 0.7) { + newL = Math.min(0.9, l + l * 0.05); + } + + return hslToRgb(h, newS, newL); +} + +/** + * Convert an sRGB hex color to a CSS Display P3 string, + * "color(display-p3 r g b)" (or "… / alpha"). + */ +export function srgbHexToP3Color( + srgbHex: string, + enhance: boolean = true +): string { + const hasAlpha = + srgbHex.length === 9 || (srgbHex.startsWith('#') && srgbHex.length === 9); + let alpha = ''; + let colorHex = srgbHex; + + if (hasAlpha) { + const alphaHex = srgbHex.slice(-2); + const alphaValue = parseInt(alphaHex, 16) / 255; + alpha = ` / ${formatColorValue(alphaValue)}`; + colorHex = srgbHex.slice(0, -2); + } + + const [sR, sG, sB] = hexToRgb01(colorHex); + const [linearPR, linearPG, linearPB] = linearSrgbToLinearP3( + srgbToLinear(sR), + srgbToLinear(sG), + srgbToLinear(sB) + ); + + let pR = linearToP3(linearPR); + let pG = linearToP3(linearPG); + let pB = linearToP3(linearPB); + + if (enhance) { + [pR, pG, pB] = enhanceForP3Gamut(pR, pG, pB); + } + + return `color(display-p3 ${formatColorValue(pR)} ${formatColorValue(pG)} ${formatColorValue(pB)}${alpha})`; +} + +/** Recursively convert every hex color in a Roles-shaped object to Display P3. */ +export function convertRolesToP3(obj: T): T { + if (typeof obj === 'string') { + if (/^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(obj)) { + return srgbHexToP3Color(obj) as T; + } + return obj; + } + + if (Array.isArray(obj)) { + const items = obj as readonly unknown[]; + return items.map((item) => convertRolesToP3(item)) as T; + } + + if (obj !== null && typeof obj === 'object') { + const result: Record = {}; + for (const [key, value] of Object.entries(obj)) { + result[key] = convertRolesToP3(value); + } + return result as T; + } + + return obj; +} diff --git a/packages/theme/src/color/srgb.ts b/packages/theme/src/color/srgb.ts new file mode 100644 index 000000000..bf0cf45a6 --- /dev/null +++ b/packages/theme/src/color/srgb.ts @@ -0,0 +1,39 @@ +// Low-level sRGB primitives shared across the color-science modules (P3 +// conversion, CVD simulation, WCAG contrast, CIEDE2000). These are not +// Display-P3 concerns — they're the generic hex ↔ RGB and gamma conversions that +// everything else builds on. + +/** Parse a hex color ("#rgb" or "#rrggbb") to RGB channels in the 0–1 range. */ +export function hexToRgb01(hex: string): [number, number, number] { + const cleaned = hex.replace('#', ''); + const expanded = + cleaned.length === 3 + ? cleaned + .split('') + .map((x) => x + x) + .join('') + : cleaned; + + const num = parseInt(expanded, 16); + const r = ((num >> 16) & 255) / 255; + const g = ((num >> 8) & 255) / 255; + const b = (num & 255) / 255; + + return [r, g, b]; +} + +/** Linearize an sRGB channel (remove the sRGB gamma curve). */ +export function srgbToLinear(c: number): number { + if (c <= 0.04045) { + return c / 12.92; + } + return Math.pow((c + 0.055) / 1.055, 2.4); +} + +/** Apply the sRGB gamma curve to a linear channel (encode for display). */ +export function linearToSrgb(c: number): number { + if (c <= 0.0031308) { + return c * 12.92; + } + return 1.055 * Math.pow(c, 1 / 2.4) - 0.055; +} diff --git a/packages/theme/src/createTheme.ts b/packages/theme/src/createTheme.ts new file mode 100644 index 000000000..df07c988b --- /dev/null +++ b/packages/theme/src/createTheme.ts @@ -0,0 +1,1634 @@ +import type { Roles } from './roles'; + +type VSCodeTheme = { + name: string; + displayName: string; + type: 'light' | 'dark'; + colors: Record; + tokenColors: { + scope: string | string[]; + settings: { + foreground?: string; + fontStyle?: string; + }; + }[]; + semanticTokenColors: Record< + string, + string | { foreground: string; fontStyle?: string } + >; +}; + +type CreateThemeOptions = { + name: string; + displayName: string; + type: 'light' | 'dark'; + roles: Roles; +}; + +export function createTheme({ + name, + displayName, + type: kind, + roles: c, +}: CreateThemeOptions): VSCodeTheme { + return { + name, + displayName, + type: kind, + colors: { + // Core editor & text + 'editor.background': c.bg.editor, + 'editor.foreground': c.fg.base, + foreground: c.fg.base, + focusBorder: c.accent.primary, + 'selection.background': c.accent.subtle, + + // Editor chrome + 'editor.selectionBackground': alpha( + c.accent.primary, + kind === 'dark' ? 0.3 : 0.18 + ), + 'editor.lineHighlightBackground': alpha(c.accent.subtle, 0.55), + 'editorCursor.foreground': c.accent.primary, + 'editorLineNumber.foreground': c.fg.fg3, + 'editorLineNumber.activeForeground': c.fg.fg2, + 'editorIndentGuide.background': c.border.indentGuide, + 'editorIndentGuide.activeBackground': c.border.indentGuideActive, + + 'diffEditor.insertedTextBackground': alpha( + c.states.success, + kind === 'dark' ? 0.1 : 0.2 + ), + 'diffEditor.deletedTextBackground': alpha( + c.states.danger, + kind === 'dark' ? 0.1 : 0.2 + ), + + // Sidebar + 'sideBar.background': c.bg.window, + 'sideBar.foreground': c.fg.fg2, + 'sideBar.border': c.border.window, + 'sideBarTitle.foreground': c.fg.base, + 'sideBarSectionHeader.background': c.bg.window, + 'sideBarSectionHeader.foreground': c.fg.fg2, + 'sideBarSectionHeader.border': c.border.window, + + // Activity bar + 'activityBar.background': c.bg.window, + 'activityBar.foreground': c.fg.base, + 'activityBar.border': c.border.window, + 'activityBar.activeBorder': c.accent.primary, + 'activityBarBadge.background': c.accent.primary, + 'activityBarBadge.foreground': c.accent.contrastOnAccent, + + // Title bar + 'titleBar.activeBackground': c.bg.window, + 'titleBar.activeForeground': c.fg.base, + 'titleBar.inactiveBackground': c.bg.window, + 'titleBar.inactiveForeground': c.fg.fg3, + 'titleBar.border': c.border.window, + + // Lists + 'list.activeSelectionBackground': alpha( + c.accent.subtle, + kind === 'dark' ? 0.6 : 0.8 + ), + 'list.activeSelectionForeground': c.fg.base, + 'list.inactiveSelectionBackground': alpha(c.accent.subtle, 0.45), + 'list.hoverBackground': alpha(c.accent.subtle, 0.35), + 'list.focusOutline': c.accent.primary, + + // Tabs + 'tab.activeBackground': c.bg.editor, + 'tab.activeForeground': c.fg.base, + 'tab.activeBorderTop': c.accent.primary, + 'tab.inactiveBackground': c.bg.window, + 'tab.inactiveForeground': c.fg.fg3, + 'tab.border': c.border.window, + 'editorGroupHeader.tabsBackground': c.bg.window, + 'editorGroupHeader.tabsBorder': c.border.window, + + // Panel + 'panel.background': c.bg.window, + 'panel.border': c.border.window, + 'panelTitle.activeBorder': c.accent.primary, + 'panelTitle.activeForeground': c.fg.base, + 'panelTitle.inactiveForeground': c.fg.fg3, + + // Status bar + 'statusBar.background': c.bg.window, + 'statusBar.foreground': c.fg.fg2, + 'statusBar.border': c.border.window, + 'statusBar.noFolderBackground': c.bg.window, + 'statusBar.debuggingBackground': c.states.warn, + 'statusBar.debuggingForeground': c.accent.contrastOnAccent, + 'statusBarItem.remoteBackground': c.bg.window, + 'statusBarItem.remoteForeground': c.fg.fg2, + + // Inputs & dropdowns + 'input.background': c.bg.inset, + 'input.border': c.border.inset, + 'input.foreground': c.fg.base, + 'input.placeholderForeground': c.fg.fg4, + 'dropdown.background': c.bg.inset, + 'dropdown.border': c.border.inset, + 'dropdown.foreground': c.fg.base, + + // Buttons + 'button.background': c.accent.primary, + 'button.foreground': c.accent.contrastOnAccent, + 'button.hoverBackground': mix( + c.accent.primary, + c.accent.contrastOnAccent, + 0.1 + ), + + // Links + 'textLink.foreground': c.accent.link, + 'textLink.activeForeground': c.accent.primary, + + // Notifications + 'notifications.background': c.bg.elevated, + 'notifications.foreground': c.fg.base, + 'notifications.border': c.border.elevated, + 'notificationToast.border': c.border.elevated, + 'notificationCenter.border': c.border.elevated, + 'notificationCenterHeader.background': c.bg.elevated, + 'notificationCenterHeader.foreground': c.fg.fg2, + 'notificationLink.foreground': c.accent.link, + 'notificationsErrorIcon.foreground': c.states.danger, + 'notificationsWarningIcon.foreground': c.states.warn, + 'notificationsInfoIcon.foreground': c.states.info, + + // Quick input / command palette / file picker + 'quickInput.background': c.bg.elevated, + 'quickInput.foreground': c.fg.base, + 'quickInputTitle.background': c.bg.elevated, + 'widget.border': c.border.elevated, + + // Git colors + 'gitDecoration.addedResourceForeground': c.states.success, + 'gitDecoration.conflictingResourceForeground': c.states.merge, + 'gitDecoration.modifiedResourceForeground': c.accent.primary, + 'gitDecoration.deletedResourceForeground': c.states.danger, + 'gitDecoration.untrackedResourceForeground': c.states.success, + 'gitDecoration.ignoredResourceForeground': c.fg.fg3, + + // Merge conflicts + 'merge.currentHeaderBackground': alpha( + c.states.merge, + kind === 'dark' ? 0.3 : 0.2 + ), + 'merge.currentContentBackground': alpha( + c.states.merge, + kind === 'dark' ? 0.12 : 0.08 + ), + 'merge.incomingHeaderBackground': alpha( + c.states.info, + kind === 'dark' ? 0.3 : 0.2 + ), + 'merge.incomingContentBackground': alpha( + c.states.info, + kind === 'dark' ? 0.12 : 0.08 + ), + 'editorOverviewRuler.currentContentForeground': c.states.merge, + 'editorOverviewRuler.incomingContentForeground': c.states.info, + + // Terminal ANSI colors + 'terminal.titleForeground': c.fg.fg2, + 'terminal.titleInactiveForeground': c.fg.fg3, + 'terminal.background': c.bg.window, + 'terminal.foreground': c.fg.fg2, + 'terminal.ansiBlack': c.ansi.black, + 'terminal.ansiRed': c.ansi.red, + 'terminal.ansiGreen': c.ansi.green, + 'terminal.ansiYellow': c.ansi.yellow, + 'terminal.ansiBlue': c.ansi.blue, + 'terminal.ansiMagenta': c.ansi.magenta, + 'terminal.ansiCyan': c.ansi.cyan, + 'terminal.ansiWhite': c.ansi.white, + 'terminal.ansiBrightBlack': c.ansi.brightBlack, + 'terminal.ansiBrightRed': c.ansi.brightRed, + 'terminal.ansiBrightGreen': c.ansi.brightGreen, + 'terminal.ansiBrightYellow': c.ansi.brightYellow, + 'terminal.ansiBrightBlue': c.ansi.brightBlue, + 'terminal.ansiBrightMagenta': c.ansi.brightMagenta, + 'terminal.ansiBrightCyan': c.ansi.brightCyan, + 'terminal.ansiBrightWhite': c.ansi.brightWhite, + }, + + tokenColors: [ + // ======================================== + // COMMENTS + // ======================================== + { + scope: ['comment', 'punctuation.definition.comment'], + settings: { foreground: c.syntax.comment }, + }, + { + scope: 'comment markup.link', + settings: { foreground: c.syntax.comment }, + }, + + // ======================================== + // STRINGS + // ======================================== + { + scope: ['string', 'constant.other.symbol'], + settings: { foreground: c.syntax.string }, + }, + { + scope: [ + 'punctuation.definition.string.begin', + 'punctuation.definition.string.end', + ], + settings: { foreground: c.syntax.string }, + }, + + // ======================================== + // NUMBERS & CONSTANTS + // ======================================== + { + scope: ['constant.numeric', 'constant.language.boolean'], + settings: { foreground: c.syntax.number }, + }, + { scope: 'constant', settings: { foreground: c.syntax.constant } }, + { + scope: 'punctuation.definition.constant', + settings: { foreground: c.syntax.constant }, + }, + { scope: 'constant.language', settings: { foreground: c.syntax.number } }, + { + scope: 'variable.other.constant', + settings: { foreground: c.syntax.namespace }, + }, + + // ======================================== + // KEYWORDS & STORAGE + // ======================================== + { scope: 'keyword', settings: { foreground: c.syntax.keyword } }, + { scope: 'keyword.control', settings: { foreground: c.syntax.keyword } }, + { + scope: ['storage', 'storage.type', 'storage.modifier'], + settings: { foreground: c.syntax.keyword }, + }, + { scope: 'token.storage', settings: { foreground: c.syntax.keyword } }, + { + scope: [ + 'keyword.operator.new', + 'keyword.operator.expression.instanceof', + 'keyword.operator.expression.typeof', + 'keyword.operator.expression.void', + 'keyword.operator.expression.delete', + 'keyword.operator.expression.in', + 'keyword.operator.expression.of', + 'keyword.operator.expression.keyof', + ], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'keyword.operator.delete', + settings: { foreground: c.syntax.keyword }, + }, + + // ======================================== + // VARIABLES & IDENTIFIERS + // ======================================== + { + scope: ['variable', 'identifier', 'meta.definition.variable'], + settings: { foreground: c.syntax.variable }, + }, + { + scope: [ + 'variable.other.readwrite', + 'meta.object-literal.key', + 'support.variable.property', + 'support.variable.object.process', + 'support.variable.object.node', + ], + settings: { foreground: c.syntax.variable }, + }, + { + scope: 'variable.language', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'variable.parameter.function', + settings: { foreground: c.syntax.parameter }, + }, + { + scope: 'function.parameter', + settings: { foreground: c.syntax.parameter }, + }, + { + scope: 'variable.parameter', + settings: { foreground: c.syntax.parameter }, + }, + { + scope: 'variable.parameter.function.language.python', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'variable.parameter.function.python', + settings: { foreground: c.syntax.constant }, + }, + + // ======================================== + // FUNCTIONS & METHODS + // ======================================== + { + scope: [ + 'support.function', + 'entity.name.function', + 'meta.function-call', + 'meta.require', + 'support.function.any-method', + 'variable.function', + ], + settings: { foreground: c.syntax.func }, + }, + { + scope: 'keyword.other.special-method', + settings: { foreground: c.syntax.func }, + }, + { + scope: 'entity.name.function', + settings: { foreground: c.syntax.func }, + }, + { + scope: 'support.function.console', + settings: { foreground: c.syntax.func }, + }, + + // ======================================== + // TYPES & CLASSES + // ======================================== + { + scope: [ + 'support.type', + 'entity.name.type', + 'entity.name.class', + 'storage.type', + ], + settings: { foreground: c.syntax.type }, + }, + { + scope: ['support.class', 'entity.name.type.class'], + settings: { foreground: c.syntax.type }, + }, + { + scope: [ + 'entity.name.class', + 'variable.other.class.js', + 'variable.other.class.ts', + ], + settings: { foreground: c.syntax.type }, + }, + { + scope: 'entity.name.class.identifier.namespace.type', + settings: { foreground: c.syntax.type }, + }, + { + scope: 'entity.name.type.namespace', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'entity.other.inherited-class', + settings: { foreground: c.syntax.type }, + }, + { + scope: 'entity.name.namespace', + settings: { foreground: c.syntax.namespace }, + }, + + // ======================================== + // OPERATORS + // ======================================== + { + scope: 'keyword.operator', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: [ + 'keyword.operator.logical', + 'keyword.operator.bitwise', + 'keyword.operator.channel', + ], + settings: { foreground: c.syntax.operator }, + }, + { + scope: [ + 'keyword.operator.arithmetic', + 'keyword.operator.comparison', + 'keyword.operator.relational', + 'keyword.operator.increment', + 'keyword.operator.decrement', + ], + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'keyword.operator.assignment', + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'keyword.operator.assignment.compound', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: [ + 'keyword.operator.assignment.compound.js', + 'keyword.operator.assignment.compound.ts', + ], + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'keyword.operator.ternary', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'keyword.operator.optional', + settings: { foreground: c.syntax.keyword }, + }, + + // ======================================== + // PUNCTUATION + // ======================================== + { scope: 'punctuation', settings: { foreground: c.syntax.punctuation } }, + { + scope: 'punctuation.separator.delimiter', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'punctuation.separator.key-value', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'punctuation.terminator', + settings: { foreground: c.syntax.punctuation }, + }, + { scope: 'meta.brace', settings: { foreground: c.syntax.punctuation } }, + { + scope: 'meta.brace.square', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'meta.brace.round', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'function.brace', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: [ + 'punctuation.definition.parameters', + 'punctuation.definition.typeparameters', + ], + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: ['punctuation.definition.block', 'punctuation.definition.tag'], + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: ['meta.tag.tsx', 'meta.tag.jsx', 'meta.tag.js', 'meta.tag.ts'], + settings: { foreground: c.syntax.punctuation }, + }, + + // ======================================== + // JAVASCRIPT/TYPESCRIPT SPECIFIC + // ======================================== + { + scope: 'keyword.operator.expression.import', + settings: { foreground: c.syntax.func }, + }, + { + scope: 'keyword.operator.module', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'support.type.object.console', + settings: { foreground: c.syntax.variable }, + }, + { + scope: [ + 'support.module.node', + 'support.type.object.module', + 'entity.name.type.module', + ], + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'support.constant.math', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'support.constant.property.math', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'support.constant.json', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'support.type.object.dom', + settings: { foreground: c.syntax.operator }, + }, + { + scope: ['support.variable.dom', 'support.variable.property.dom'], + settings: { foreground: c.syntax.variable }, + }, + { + scope: 'support.variable.property.process', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'meta.property.object', + settings: { foreground: c.syntax.variable }, + }, + { + scope: 'variable.parameter.function.js', + settings: { foreground: c.syntax.variable }, + }, + + // Template literals + { + scope: ['keyword.other.template.begin', 'keyword.other.template.end'], + settings: { foreground: c.syntax.string }, + }, + { + scope: [ + 'keyword.other.substitution.begin', + 'keyword.other.substitution.end', + ], + settings: { foreground: c.syntax.string }, + }, + { + scope: [ + 'punctuation.definition.template-expression.begin', + 'punctuation.definition.template-expression.end', + ], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'meta.template.expression', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'punctuation.section.embedded', + settings: { foreground: c.syntax.variable }, + }, + { + scope: 'variable.interpolation', + settings: { foreground: c.syntax.variable }, + }, + { + scope: [ + 'punctuation.section.embedded.begin', + 'punctuation.section.embedded.end', + ], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'punctuation.quasi.element', + settings: { foreground: c.syntax.keyword }, + }, + + // TypeScript/Flow + { + scope: [ + 'support.type.primitive.ts', + 'support.type.builtin.ts', + 'support.type.primitive.tsx', + 'support.type.builtin.tsx', + ], + settings: { foreground: c.syntax.type }, + }, + { + scope: 'support.type.type.flowtype', + settings: { foreground: c.syntax.func }, + }, + { + scope: 'support.type.primitive', + settings: { foreground: c.syntax.type }, + }, + + // ======================================== + // DECORATORS + // ======================================== + { + scope: ['meta.decorator', 'meta.decorator punctuation.decorator'], + settings: { foreground: c.syntax.decorator }, + }, + { + scope: 'entity.name.function.decorator', + settings: { foreground: c.syntax.decorator }, + }, + { + scope: 'punctuation.definition.decorator', + settings: { foreground: c.syntax.decorator }, + }, + + // ======================================== + // PYTHON SPECIFIC + // ======================================== + { + scope: 'support.variable.magic.python', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'variable.parameter.function.language.special.self.python', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: [ + 'punctuation.separator.period.python', + 'punctuation.separator.element.python', + 'punctuation.parenthesis.begin.python', + 'punctuation.parenthesis.end.python', + ], + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: [ + 'punctuation.definition.arguments.begin.python', + 'punctuation.definition.arguments.end.python', + 'punctuation.separator.arguments.python', + 'punctuation.definition.list.begin.python', + 'punctuation.definition.list.end.python', + ], + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'support.type.python', + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'keyword.operator.logical.python', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'meta.function-call.generic.python', + settings: { foreground: c.syntax.func }, + }, + { + scope: 'constant.character.format.placeholder.other.python', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'meta.function.decorator.python', + settings: { foreground: c.syntax.func }, + }, + { + scope: [ + 'support.token.decorator.python', + 'meta.function.decorator.identifier.python', + ], + settings: { foreground: c.syntax.operator }, + }, + + // ======================================== + // RUST SPECIFIC + // ======================================== + { + scope: 'storage.modifier.lifetime.rust', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'support.function.std.rust', + settings: { foreground: c.syntax.func }, + }, + { + scope: 'entity.name.lifetime.rust', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'variable.language.rust', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'keyword.operator.misc.rust', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'keyword.operator.sigil.rust', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'support.constant.core.rust', + settings: { foreground: c.syntax.constant }, + }, + + // ======================================== + // C/C++ SPECIFIC + // ======================================== + { + scope: ['meta.function.c', 'meta.function.cpp'], + settings: { foreground: c.syntax.tag }, + }, + { + scope: [ + 'punctuation.section.block.begin.bracket.curly.cpp', + 'punctuation.section.block.end.bracket.curly.cpp', + 'punctuation.terminator.statement.c', + 'punctuation.section.block.begin.bracket.curly.c', + 'punctuation.section.block.end.bracket.curly.c', + 'punctuation.section.parens.begin.bracket.round.c', + 'punctuation.section.parens.end.bracket.round.c', + 'punctuation.section.parameters.begin.bracket.round.c', + 'punctuation.section.parameters.end.bracket.round.c', + ], + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: [ + 'keyword.operator.assignment.c', + 'keyword.operator.comparison.c', + 'keyword.operator.c', + 'keyword.operator.increment.c', + 'keyword.operator.decrement.c', + 'keyword.operator.bitwise.shift.c', + ], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: [ + 'keyword.operator.assignment.cpp', + 'keyword.operator.comparison.cpp', + 'keyword.operator.cpp', + 'keyword.operator.increment.cpp', + 'keyword.operator.decrement.cpp', + 'keyword.operator.bitwise.shift.cpp', + ], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: ['punctuation.separator.c', 'punctuation.separator.cpp'], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: [ + 'support.type.posix-reserved.c', + 'support.type.posix-reserved.cpp', + ], + settings: { foreground: c.syntax.operator }, + }, + { + scope: ['keyword.operator.sizeof.c', 'keyword.operator.sizeof.cpp'], + settings: { foreground: c.syntax.keyword }, + }, + { scope: 'variable.c', settings: { foreground: c.syntax.punctuation } }, + + // ======================================== + // JAVA SPECIFIC + // ======================================== + { + scope: [ + 'storage.type.annotation.java', + 'storage.type.object.array.java', + ], + settings: { foreground: c.syntax.namespace }, + }, + { scope: 'source.java', settings: { foreground: c.syntax.tag } }, + { + scope: [ + 'punctuation.section.block.begin.java', + 'punctuation.section.block.end.java', + 'punctuation.definition.method-parameters.begin.java', + 'punctuation.definition.method-parameters.end.java', + 'meta.method.identifier.java', + 'punctuation.section.method.begin.java', + 'punctuation.section.method.end.java', + 'punctuation.terminator.java', + 'punctuation.section.class.begin.java', + 'punctuation.section.class.end.java', + 'punctuation.section.inner-class.begin.java', + 'punctuation.section.inner-class.end.java', + 'meta.method-call.java', + 'punctuation.section.class.begin.bracket.curly.java', + 'punctuation.section.class.end.bracket.curly.java', + 'punctuation.section.method.begin.bracket.curly.java', + 'punctuation.section.method.end.bracket.curly.java', + 'punctuation.separator.period.java', + 'punctuation.bracket.angle.java', + 'punctuation.definition.annotation.java', + 'meta.method.body.java', + ], + settings: { foreground: c.syntax.punctuation }, + }, + { scope: 'meta.method.java', settings: { foreground: c.syntax.func } }, + { + scope: [ + 'storage.modifier.import.java', + 'storage.type.java', + 'storage.type.generic.java', + ], + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'keyword.operator.instanceof.java', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'meta.definition.variable.name.java', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'token.variable.parameter.java', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'import.storage.java', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'token.package.keyword', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'token.package', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'token.storage.type.java', + settings: { foreground: c.syntax.namespace }, + }, + + // ======================================== + // GO SPECIFIC + // ======================================== + { + scope: 'keyword.operator.assignment.go', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: [ + 'keyword.operator.arithmetic.go', + 'keyword.operator.address.go', + ], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'entity.name.package.go', + settings: { foreground: c.syntax.namespace }, + }, + + // ======================================== + // PHP SPECIFIC + // ======================================== + { + scope: [ + 'support.other.namespace.use.php', + 'support.other.namespace.use-as.php', + 'support.other.namespace.php', + 'entity.other.alias.php', + 'meta.interface.php', + ], + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'keyword.operator.error-control.php', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'keyword.operator.type.php', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: [ + 'punctuation.section.array.begin.php', + 'punctuation.section.array.end.php', + ], + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: [ + 'storage.type.php', + 'meta.other.type.phpdoc.php', + 'keyword.other.type.php', + 'keyword.other.array.phpdoc.php', + ], + settings: { foreground: c.syntax.namespace }, + }, + { + scope: [ + 'meta.function-call.php', + 'meta.function-call.object.php', + 'meta.function-call.static.php', + ], + settings: { foreground: c.syntax.func }, + }, + { + scope: [ + 'punctuation.definition.parameters.begin.bracket.round.php', + 'punctuation.definition.parameters.end.bracket.round.php', + 'punctuation.separator.delimiter.php', + 'punctuation.section.scope.begin.php', + 'punctuation.section.scope.end.php', + 'punctuation.terminator.expression.php', + 'punctuation.definition.arguments.begin.bracket.round.php', + 'punctuation.definition.arguments.end.bracket.round.php', + 'punctuation.definition.storage-type.begin.bracket.round.php', + 'punctuation.definition.storage-type.end.bracket.round.php', + 'punctuation.definition.array.begin.bracket.round.php', + 'punctuation.definition.array.end.bracket.round.php', + 'punctuation.definition.begin.bracket.round.php', + 'punctuation.definition.end.bracket.round.php', + 'punctuation.definition.begin.bracket.curly.php', + 'punctuation.definition.end.bracket.curly.php', + 'punctuation.definition.section.switch-block.end.bracket.curly.php', + 'punctuation.definition.section.switch-block.start.bracket.curly.php', + 'punctuation.definition.section.switch-block.begin.bracket.curly.php', + 'punctuation.definition.section.switch-block.end.bracket.curly.php', + ], + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: [ + 'support.constant.ext.php', + 'support.constant.std.php', + 'support.constant.core.php', + 'support.constant.parser-token.php', + ], + settings: { foreground: c.syntax.constant }, + }, + { + scope: ['entity.name.goto-label.php', 'support.other.php'], + settings: { foreground: c.syntax.func }, + }, + { + scope: [ + 'keyword.operator.logical.php', + 'keyword.operator.bitwise.php', + 'keyword.operator.arithmetic.php', + ], + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'keyword.operator.regexp.php', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'keyword.operator.comparison.php', + settings: { foreground: c.syntax.operator }, + }, + { + scope: ['keyword.operator.heredoc.php', 'keyword.operator.nowdoc.php'], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'variable.other.class.php', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'invalid.illegal.non-null-typehinted.php', + settings: { foreground: c.syntax.invalid }, + }, + + // ======================================== + // HASKELL SPECIFIC + // ======================================== + { + scope: 'variable.other.generic-type.haskell', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'storage.type.haskell', + settings: { foreground: c.syntax.constant }, + }, + + // ======================================== + // C# SPECIFIC + // ======================================== + { + scope: 'storage.type.cs', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'entity.name.variable.local.cs', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'entity.name.label.cs', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: [ + 'entity.name.scope-resolution.function.call', + 'entity.name.scope-resolution.function.definition', + ], + settings: { foreground: c.syntax.namespace }, + }, + + // ======================================== + // OTHER LANGUAGES + // ======================================== + // Unison + { + scope: [ + 'punctuation.definition.delayed.unison', + 'punctuation.definition.list.begin.unison', + 'punctuation.definition.list.end.unison', + 'punctuation.definition.ability.begin.unison', + 'punctuation.definition.ability.end.unison', + 'punctuation.operator.assignment.as.unison', + 'punctuation.separator.pipe.unison', + 'punctuation.separator.delimiter.unison', + 'punctuation.definition.hash.unison', + ], + settings: { foreground: c.syntax.tag }, + }, + + // Edge + { + scope: 'support.constant.edge', + settings: { foreground: c.syntax.keyword }, + }, + + // Elm + { + scope: 'support.type.prelude.elm', + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'support.constant.elm', + settings: { foreground: c.syntax.constant }, + }, + + // Clojure + { + scope: 'entity.global.clojure', + settings: { foreground: c.syntax.namespace }, + }, + { scope: 'meta.symbol.clojure', settings: { foreground: c.syntax.tag } }, + { + scope: 'constant.keyword.clojure', + settings: { foreground: c.syntax.operator }, + }, + + // CoffeeScript + { + scope: ['meta.arguments.coffee', 'variable.parameter.function.coffee'], + settings: { foreground: c.syntax.tag }, + }, + + // Groovy + { + scope: 'storage.modifier.import.groovy', + settings: { foreground: c.syntax.namespace }, + }, + { scope: 'meta.method.groovy', settings: { foreground: c.syntax.func } }, + { + scope: 'meta.definition.variable.name.groovy', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'meta.definition.class.inherited.classes.groovy', + settings: { foreground: c.syntax.string }, + }, + + // HLSL + { + scope: 'support.variable.semantic.hlsl', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: [ + 'support.type.texture.hlsl', + 'support.type.sampler.hlsl', + 'support.type.object.hlsl', + 'support.type.object.rw.hlsl', + 'support.type.fx.hlsl', + 'support.type.object.hlsl', + ], + settings: { foreground: c.syntax.keyword }, + }, + + // SQL + { + scope: ['text.variable', 'text.bracketed'], + settings: { foreground: c.syntax.tag }, + }, + + // Swift/VB + { + scope: ['support.type.swift', 'support.type.vb.asp'], + settings: { foreground: c.syntax.namespace }, + }, + + // Makefile + { + scope: 'meta.scope.prerequisites.makefile', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'source.makefile', + settings: { foreground: c.syntax.namespace }, + }, + + // Ini + { scope: 'source.ini', settings: { foreground: c.syntax.string } }, + + // Ruby + { + scope: 'constant.language.symbol.ruby', + settings: { foreground: c.syntax.operator }, + }, + { + scope: ['function.parameter.ruby', 'function.parameter.cs'], + settings: { foreground: c.syntax.punctuation }, + }, + + // Elixir + { + scope: 'constant.language.symbol.elixir', + settings: { foreground: c.syntax.operator }, + }, + + // Laravel Blade + { + scope: + 'text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: + 'text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade', + settings: { foreground: c.syntax.keyword }, + }, + + // Xi + { + scope: 'entity.name.function.xi', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'entity.name.class.xi', + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'constant.character.character-class.regexp.xi', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'constant.regexp.xi', + settings: { foreground: c.syntax.keyword }, + }, + { + scope: 'keyword.control.xi', + settings: { foreground: c.syntax.operator }, + }, + { scope: 'invalid.xi', settings: { foreground: c.syntax.punctuation } }, + { + scope: 'beginning.punctuation.definition.quote.markdown.xi', + settings: { foreground: c.syntax.string }, + }, + { + scope: 'beginning.punctuation.definition.list.markdown.xi', + settings: { foreground: c.syntax.comment }, + }, + { + scope: 'constant.character.xi', + settings: { foreground: c.syntax.func }, + }, + { scope: 'accent.xi', settings: { foreground: c.syntax.func } }, + { scope: 'wikiword.xi', settings: { foreground: c.syntax.constant } }, + { + scope: 'constant.other.color.rgb-value.xi', + settings: { foreground: c.syntax.invalid }, + }, + { + scope: 'punctuation.definition.tag.xi', + settings: { foreground: c.syntax.comment }, + }, + + // ======================================== + // CSS/SCSS/LESS + // ======================================== + { + scope: [ + 'support.constant.property-value.scss', + 'support.constant.property-value.css', + ], + settings: { foreground: c.syntax.constant }, + }, + { + scope: [ + 'keyword.operator.css', + 'keyword.operator.scss', + 'keyword.operator.less', + ], + settings: { foreground: c.syntax.operator }, + }, + { + scope: [ + 'support.constant.color.w3c-standard-color-name.css', + 'support.constant.color.w3c-standard-color-name.scss', + ], + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'punctuation.separator.list.comma.css', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'support.type.vendored.property-name.css', + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'support.type.property-name.css', + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'support.type.property-name', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'support.constant.property-value', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'support.constant.font-name', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'entity.other.attribute-name.class.css', + settings: { foreground: c.syntax.attribute, fontStyle: 'normal' }, + }, + { + scope: 'entity.other.attribute-name.id', + settings: { foreground: c.syntax.func, fontStyle: 'normal' }, + }, + { + scope: [ + 'entity.other.attribute-name.pseudo-element', + 'entity.other.attribute-name.pseudo-class', + ], + settings: { foreground: c.syntax.operator }, + }, + { scope: 'meta.selector', settings: { foreground: c.syntax.keyword } }, + { scope: 'selector.sass', settings: { foreground: c.syntax.tag } }, + { scope: 'rgb-value', settings: { foreground: c.syntax.operator } }, + { + scope: 'inline-color-decoration rgb-value', + settings: { foreground: c.syntax.constant }, + }, + { scope: 'less rgb-value', settings: { foreground: c.syntax.constant } }, + { + scope: 'control.elements', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'keyword.operator.less', + settings: { foreground: c.syntax.constant }, + }, + + // ======================================== + // HTML/XML + // ======================================== + { scope: 'entity.name.tag', settings: { foreground: c.syntax.tag } }, + { + scope: 'entity.other.attribute-name', + settings: { foreground: c.syntax.attribute, fontStyle: 'normal' }, + }, + { + scope: 'constant.character.entity', + settings: { foreground: c.syntax.tag }, + }, + { scope: 'meta.tag', settings: { foreground: c.syntax.punctuation } }, + { + scope: 'invalid.illegal.bad-ampersand.html', + settings: { foreground: c.syntax.punctuation }, + }, + + // ======================================== + // MARKDOWN + // ======================================== + { scope: 'markup.heading', settings: { foreground: c.syntax.tag } }, + { + scope: [ + 'markup.heading punctuation.definition.heading', + 'entity.name.section', + ], + settings: { foreground: c.syntax.func }, + }, + { + scope: 'entity.name.section.markdown', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'punctuation.definition.heading.markdown', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'markup.heading.setext', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: [ + 'markup.heading.setext.1.markdown', + 'markup.heading.setext.2.markdown', + ], + settings: { foreground: c.syntax.tag }, + }, + + { + scope: ['markup.bold', 'todo.bold'], + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'punctuation.definition.bold', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: 'punctuation.definition.bold.markdown', + settings: { foreground: c.syntax.constant }, + }, + + { + scope: [ + 'markup.italic', + 'punctuation.definition.italic', + 'todo.emphasis', + ], + settings: { foreground: c.syntax.keyword, fontStyle: 'italic' }, + }, + { scope: 'emphasis md', settings: { foreground: c.syntax.keyword } }, + { scope: 'markup.italic.markdown', settings: { fontStyle: 'italic' } }, + + { + scope: [ + 'markup.underline.link.markdown', + 'markup.underline.link.image.markdown', + ], + settings: { foreground: c.syntax.keyword }, + }, + { + scope: [ + 'string.other.link.title.markdown', + 'string.other.link.description.markdown', + ], + settings: { foreground: c.syntax.func }, + }, + { + scope: 'punctuation.definition.metadata.markdown', + settings: { foreground: c.syntax.tag }, + }, + + { + scope: [ + 'markup.inline.raw.markdown', + 'markup.inline.raw.string.markdown', + ], + settings: { foreground: c.syntax.string }, + }, + + { + scope: 'punctuation.definition.list.begin.markdown', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'punctuation.definition.list.markdown', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'beginning.punctuation.definition.list.markdown', + settings: { foreground: c.syntax.tag }, + }, + + { + scope: [ + 'punctuation.definition.string.begin.markdown', + 'punctuation.definition.string.end.markdown', + ], + settings: { foreground: c.syntax.tag }, + }, + + { + scope: 'markup.quote.markdown', + settings: { foreground: c.syntax.comment }, + }, + + { scope: 'keyword.other.unit', settings: { foreground: c.syntax.tag } }, + + // ======================================== + // DIFF/GIT + // ======================================== + { + scope: 'markup.changed.diff', + settings: { foreground: c.syntax.namespace }, + }, + { + scope: [ + 'meta.diff.header.from-file', + 'meta.diff.header.to-file', + 'punctuation.definition.from-file.diff', + 'punctuation.definition.to-file.diff', + ], + settings: { foreground: c.syntax.func }, + }, + { + scope: 'markup.inserted.diff', + settings: { foreground: c.syntax.string }, + }, + { scope: 'markup.deleted.diff', settings: { foreground: c.syntax.tag } }, + + // ======================================== + // REGULAR EXPRESSIONS + // ======================================== + { scope: 'string.regexp', settings: { foreground: c.syntax.regexp } }, + { + scope: 'constant.other.character-class.regexp', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'keyword.operator.quantifier.regexp', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'constant.character.escape', + settings: { foreground: c.syntax.escape }, + }, + + // ======================================== + // JSON + // ======================================== + { + scope: + 'source.json meta.structure.dictionary.json > string.quoted.json', + settings: { foreground: c.syntax.tag }, + }, + { + scope: + 'source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string', + settings: { foreground: c.syntax.tag }, + }, + { + scope: [ + 'source.json meta.structure.dictionary.json > value.json > string.quoted.json', + 'source.json meta.structure.array.json > value.json > string.quoted.json', + 'source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation', + 'source.json meta.structure.array.json > value.json > string.quoted.json > punctuation', + ], + settings: { foreground: c.syntax.string }, + }, + { + scope: [ + 'source.json meta.structure.dictionary.json > constant.language.json', + 'source.json meta.structure.array.json > constant.language.json', + ], + settings: { foreground: c.syntax.operator }, + }, + { + scope: 'support.type.property-name.json', + settings: { foreground: c.syntax.tag }, + }, + { + scope: 'support.type.property-name.json punctuation', + settings: { foreground: c.syntax.tag }, + }, + + // ======================================== + // YAML + // ======================================== + { + scope: 'punctuation.definition.block.sequence.item.yaml', + settings: { foreground: c.syntax.punctuation }, + }, + + // ======================================== + // SPECIAL/MISC + // ======================================== + { + scope: 'block.scope.end', + settings: { foreground: c.syntax.punctuation }, + }, + { + scope: 'block.scope.begin', + settings: { foreground: c.syntax.punctuation }, + }, + + { scope: 'token.info-token', settings: { foreground: c.syntax.func } }, + { + scope: 'token.warn-token', + settings: { foreground: c.syntax.constant }, + }, + { + scope: 'token.error-token', + settings: { foreground: c.syntax.invalid }, + }, + { + scope: 'token.debug-token', + settings: { foreground: c.syntax.keyword }, + }, + + // ======================================== + // INVALID/ERROR STATES + // ======================================== + { scope: 'invalid.illegal', settings: { foreground: c.syntax.invalid } }, + { scope: 'invalid.broken', settings: { foreground: c.syntax.invalid } }, + { + scope: 'invalid.deprecated', + settings: { foreground: c.syntax.invalid }, + }, + { + scope: 'invalid.unimplemented', + settings: { foreground: c.syntax.invalid }, + }, + ], + + semanticTokenColors: { + comment: c.syntax.comment, + string: c.syntax.string, + number: c.syntax.number, + regexp: c.syntax.regexp, + keyword: c.syntax.keyword, + // identifiers + variable: c.syntax.variable, + parameter: c.syntax.parameter, + property: c.syntax.variable, + // callables / types + function: c.syntax.func, + method: c.syntax.func, + type: c.syntax.type, + class: c.syntax.type, + namespace: c.syntax.namespace, + // constants and special + enumMember: c.syntax.operator, + 'variable.constant': c.syntax.constant, + 'variable.defaultLibrary': c.syntax.namespace, + decorator: c.syntax.decorator, + }, + }; +} + +// helpers +function alpha(color: string, opacity: number): string { + // Handle Display P3 color format + if (color.startsWith('color(display-p3')) { + // Extract the existing alpha if present, or insert new one + if (color.includes(' / ')) { + // Replace existing alpha + return color.replace(/ \/ [\d.]+\)$/, ` / ${opacity.toFixed(6)})`); + } else { + // Add alpha before closing paren + return color.replace(/\)$/, ` / ${opacity.toFixed(6)})`); + } + } + + // Handle hex color format + const alphaHex = Math.round(opacity * 255) + .toString(16) + .padStart(2, '0'); + return `${color}${alphaHex}`; +} + +function hexToRgb(hex: string): [number, number, number] { + const n = hex.replace('#', ''); + const v = parseInt( + n.length === 3 + ? n + .split('') + .map((x) => x + x) + .join('') + : n, + 16 + ); + return [(v >> 16) & 255, (v >> 8) & 255, v & 255]; +} + +function p3ToRgb(p3Color: string): [number, number, number] { + // Extract RGB values from color(display-p3 r g b) format + const match = p3Color.match( + /color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/ + ); + if (match !== null) { + return [ + parseFloat(match[1]) * 255, + parseFloat(match[2]) * 255, + parseFloat(match[3]) * 255, + ]; + } + return [0, 0, 0]; +} + +function mix(c1: string, c2: string, w = 0.5) { + // Handle Display P3 colors + if (c1.startsWith('color(display-p3') && c2.startsWith('color(display-p3')) { + const [r1, g1, b1] = p3ToRgb(c1); + const [r2, g2, b2] = p3ToRgb(c2); + const r = Math.round(r1 * (1 - w) + r2 * w), + g = Math.round(g1 * (1 - w) + g2 * w), + b = Math.round(b1 * (1 - w) + b2 * w); + // Convert back to P3 format (0-1 range) + return `color(display-p3 ${(r / 255).toFixed(6)} ${(g / 255).toFixed(6)} ${(b / 255).toFixed(6)})`; + } + + // Handle hex colors + const [r1, g1, b1] = hexToRgb(c1), + [r2, g2, b2] = hexToRgb(c2); + const r = Math.round(r1 * (1 - w) + r2 * w), + g = Math.round(g1 * (1 - w) + g2 * w), + b = Math.round(b1 * (1 - w) + b2 * w); + return `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`; +} diff --git a/packages/theme/src/createZedTheme.ts b/packages/theme/src/createZedTheme.ts new file mode 100644 index 000000000..cf9026341 --- /dev/null +++ b/packages/theme/src/createZedTheme.ts @@ -0,0 +1,650 @@ +import type { Roles } from './roles'; + +type ZedHighlightStyle = { + color?: string; + background_color?: string; + font_style?: 'normal' | 'italic' | 'oblique'; + font_weight?: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900; +}; + +type ZedPlayerColor = { + cursor?: string; + background?: string; + selection?: string; +}; + +type ZedThemeStyle = { + // Backgrounds + background: string; + 'background.appearance'?: 'opaque' | 'transparent' | 'blurred'; + 'surface.background': string; + 'elevated_surface.background': string; + 'drop_target.background': string; + + // Editor + 'editor.background': string; + 'editor.foreground': string; + 'editor.gutter.background': string; + 'editor.active_line.background': string; + 'editor.active_line_number': string; + 'editor.line_number': string; + 'editor.highlighted_line.background': string; + 'editor.indent_guide': string; + 'editor.indent_guide_active': string; + 'editor.invisible': string; + 'editor.wrap_guide': string; + 'editor.active_wrap_guide': string; + 'editor.document_highlight.read_background': string; + 'editor.document_highlight.write_background': string; + 'editor.document_highlight.bracket_background': string; + 'editor.subheader.background': string; + + // Text + text: string; + 'text.muted': string; + 'text.placeholder': string; + 'text.disabled': string; + 'text.accent': string; + + // Borders + border: string; + 'border.variant': string; + 'border.focused': string; + 'border.selected': string; + 'border.transparent': string; + 'border.disabled': string; + + // UI Elements + 'element.background': string; + 'element.hover': string; + 'element.active': string; + 'element.selected': string; + 'element.disabled': string; + 'ghost_element.background': string; + 'ghost_element.hover': string; + 'ghost_element.active': string; + 'ghost_element.selected': string; + 'ghost_element.disabled': string; + + // Icons & Links + icon: string; + 'icon.muted': string; + 'icon.disabled': string; + 'icon.placeholder': string; + 'icon.accent': string; + 'link_text.hover': string; + + // Status colors + error: string; + 'error.background': string; + 'error.border': string; + warning: string; + 'warning.background': string; + 'warning.border': string; + success: string; + 'success.background': string; + 'success.border': string; + info: string; + 'info.background': string; + 'info.border': string; + hint: string; + 'hint.background': string; + 'hint.border': string; + predictive: string; + 'predictive.background': string; + 'predictive.border': string; + unreachable: string; + 'unreachable.background': string; + 'unreachable.border': string; + + // Git status + created: string; + 'created.background': string; + 'created.border': string; + modified: string; + 'modified.background': string; + 'modified.border': string; + deleted: string; + 'deleted.background': string; + 'deleted.border': string; + conflict: string; + 'conflict.background': string; + 'conflict.border': string; + hidden: string; + 'hidden.background': string; + 'hidden.border': string; + ignored: string; + 'ignored.background': string; + 'ignored.border': string; + renamed: string; + 'renamed.background': string; + 'renamed.border': string; + + // Search + 'search.match_background': string; + + // Tabs + 'tab_bar.background': string; + 'tab.active_background': string; + 'tab.inactive_background': string; + + // Toolbar & Title bar + 'toolbar.background': string; + 'title_bar.background': string; + 'title_bar.inactive_background': string; + + // Panel & Status bar + 'panel.background': string; + 'panel.focused_border': string; + 'status_bar.background': string; + + // Scrollbar + 'scrollbar.thumb.background': string; + 'scrollbar.thumb.hover_background': string; + 'scrollbar.thumb.border': string; + 'scrollbar.track.background': string; + 'scrollbar.track.border': string; + + // Terminal + 'terminal.background': string; + 'terminal.foreground': string; + 'terminal.bright_foreground': string; + 'terminal.dim_foreground': string; + 'terminal.ansi.black': string; + 'terminal.ansi.red': string; + 'terminal.ansi.green': string; + 'terminal.ansi.yellow': string; + 'terminal.ansi.blue': string; + 'terminal.ansi.magenta': string; + 'terminal.ansi.cyan': string; + 'terminal.ansi.white': string; + 'terminal.ansi.bright_black': string; + 'terminal.ansi.bright_red': string; + 'terminal.ansi.bright_green': string; + 'terminal.ansi.bright_yellow': string; + 'terminal.ansi.bright_blue': string; + 'terminal.ansi.bright_magenta': string; + 'terminal.ansi.bright_cyan': string; + 'terminal.ansi.bright_white': string; + 'terminal.ansi.dim_black'?: string; + 'terminal.ansi.dim_red'?: string; + 'terminal.ansi.dim_green'?: string; + 'terminal.ansi.dim_yellow'?: string; + 'terminal.ansi.dim_blue'?: string; + 'terminal.ansi.dim_magenta'?: string; + 'terminal.ansi.dim_cyan'?: string; + 'terminal.ansi.dim_white'?: string; + + // Players (multiplayer cursors) + players: ZedPlayerColor[]; + + // Syntax highlighting + syntax: Record; +}; + +type ZedTheme = { + name: string; + appearance: 'light' | 'dark'; + style: ZedThemeStyle; +}; + +type ZedThemeFamilyContent = { + $schema: string; + name: string; + author: string; + themes: ZedTheme[]; +}; + +type ZedThemeVariant = { + name: string; + appearance: 'light' | 'dark'; + roles: Roles; +}; + +export function createZedTheme( + familyName: string, + author: string, + variants: ZedThemeVariant[] +): ZedThemeFamilyContent { + return { + $schema: 'https://zed.dev/schema/themes/v0.2.0.json', + name: familyName, + author, + themes: variants.map((v) => makeZedTheme(v.name, v.appearance, v.roles)), + }; +} + +function makeZedTheme( + name: string, + appearance: 'light' | 'dark', + c: Roles +): ZedTheme { + const isDark = appearance === 'dark'; + + return { + name, + appearance, + style: { + // Backgrounds + background: c.bg.window, + 'surface.background': c.bg.window, + 'elevated_surface.background': c.bg.elevated, + 'drop_target.background': alpha(c.accent.primary, 0.15), + + // Editor + 'editor.background': c.bg.editor, + 'editor.foreground': c.fg.base, + 'editor.gutter.background': c.bg.editor, + 'editor.active_line.background': alpha(c.accent.subtle, 0.55), + 'editor.active_line_number': c.fg.fg2, + 'editor.line_number': c.fg.fg3, + 'editor.highlighted_line.background': alpha(c.accent.subtle, 0.35), + 'editor.indent_guide': c.border.indentGuide, + 'editor.indent_guide_active': c.border.indentGuideActive, + 'editor.invisible': c.fg.fg4, + 'editor.wrap_guide': c.border.indentGuide, + 'editor.active_wrap_guide': c.border.indentGuideActive, + 'editor.document_highlight.read_background': alpha( + c.accent.primary, + isDark ? 0.15 : 0.1 + ), + 'editor.document_highlight.write_background': alpha( + c.accent.primary, + isDark ? 0.25 : 0.18 + ), + 'editor.document_highlight.bracket_background': alpha( + c.accent.primary, + 0.2 + ), + 'editor.subheader.background': c.bg.window, + + // Text + text: c.fg.base, + 'text.muted': c.fg.fg3, + 'text.placeholder': c.fg.fg4, + 'text.disabled': c.fg.fg4, + 'text.accent': c.accent.primary, + + // Borders - use darker borders for dark themes + border: isDark ? c.border.indentGuide : c.border.editor, + 'border.variant': isDark ? c.border.indentGuideActive : c.border.window, + 'border.focused': c.accent.primary, + 'border.selected': c.accent.primary, + 'border.transparent': 'transparent', + 'border.disabled': isDark ? c.border.indentGuideActive : c.border.inset, + + // UI Elements + 'element.background': c.bg.inset, + 'element.hover': alpha(c.accent.subtle, 0.5), + 'element.active': alpha(c.accent.subtle, 0.7), + 'element.selected': alpha(c.accent.subtle, isDark ? 0.6 : 0.8), + 'element.disabled': alpha(c.bg.inset, 0.5), + 'ghost_element.background': 'transparent', + 'ghost_element.hover': alpha(c.accent.subtle, 0.35), + 'ghost_element.active': alpha(c.accent.subtle, 0.55), + 'ghost_element.selected': alpha(c.accent.subtle, isDark ? 0.5 : 0.65), + 'ghost_element.disabled': 'transparent', + + // Icons & Links + icon: c.fg.fg2, + 'icon.muted': c.fg.fg3, + 'icon.disabled': c.fg.fg4, + 'icon.placeholder': c.fg.fg4, + 'icon.accent': c.accent.primary, + 'link_text.hover': c.accent.link, + + // Status colors + error: c.states.danger, + 'error.background': alpha(c.states.danger, 0.1), + 'error.border': alpha(c.states.danger, 0.3), + warning: c.accent.primary, + 'warning.background': alpha(c.accent.primary, 0.1), + 'warning.border': alpha(c.accent.primary, 0.3), + success: c.states.success, + 'success.background': alpha(c.states.success, 0.1), + 'success.border': alpha(c.states.success, 0.3), + info: c.states.info, + 'info.background': alpha(c.states.info, 0.1), + 'info.border': alpha(c.states.info, 0.3), + hint: c.fg.fg3, + 'hint.background': alpha(c.fg.fg3, 0.1), + 'hint.border': alpha(c.fg.fg3, 0.2), + predictive: c.fg.fg4, + 'predictive.background': alpha(c.fg.fg4, 0.1), + 'predictive.border': alpha(c.fg.fg4, 0.2), + unreachable: c.fg.fg4, + 'unreachable.background': alpha(c.fg.fg4, 0.05), + 'unreachable.border': alpha(c.fg.fg4, 0.1), + + // Git status + created: c.states.success, + 'created.background': alpha(c.states.success, 0.1), + 'created.border': alpha(c.states.success, 0.3), + modified: c.accent.primary, + 'modified.background': alpha(c.accent.primary, 0.1), + 'modified.border': alpha(c.accent.primary, 0.3), + deleted: c.states.danger, + 'deleted.background': alpha(c.states.danger, 0.1), + 'deleted.border': alpha(c.states.danger, 0.3), + conflict: c.states.merge, + 'conflict.background': alpha(c.states.merge, 0.1), + 'conflict.border': alpha(c.states.merge, 0.3), + hidden: c.fg.fg4, + 'hidden.background': alpha(c.fg.fg4, 0.05), + 'hidden.border': alpha(c.fg.fg4, 0.1), + ignored: c.fg.fg3, + 'ignored.background': alpha(c.fg.fg3, 0.05), + 'ignored.border': alpha(c.fg.fg3, 0.1), + renamed: c.states.info, + 'renamed.background': alpha(c.states.info, 0.1), + 'renamed.border': alpha(c.states.info, 0.3), + + // Search + 'search.match_background': alpha(c.states.warn, 0.3), + + // Tabs + 'tab_bar.background': c.bg.window, + 'tab.active_background': c.bg.window, + 'tab.inactive_background': c.bg.window, + + // Toolbar & Title bar + 'toolbar.background': c.bg.window, + 'title_bar.background': c.bg.window, + 'title_bar.inactive_background': c.bg.window, + + // Panel & Status bar + 'panel.background': c.bg.window, + 'panel.focused_border': c.accent.primary, + 'status_bar.background': c.bg.window, + + // Scrollbar + 'scrollbar.thumb.background': alpha(c.fg.fg4, 0.3), + 'scrollbar.thumb.hover_background': alpha(c.fg.fg4, 0.5), + 'scrollbar.thumb.border': 'transparent', + 'scrollbar.track.background': 'transparent', + 'scrollbar.track.border': 'transparent', + + // Terminal + 'terminal.background': c.bg.window, + 'terminal.foreground': c.fg.fg2, + 'terminal.bright_foreground': c.fg.base, + 'terminal.dim_foreground': c.fg.fg3, + 'terminal.ansi.black': c.ansi.black, + 'terminal.ansi.red': c.ansi.red, + 'terminal.ansi.green': c.ansi.green, + 'terminal.ansi.yellow': c.ansi.yellow, + 'terminal.ansi.blue': c.ansi.blue, + 'terminal.ansi.magenta': c.ansi.magenta, + 'terminal.ansi.cyan': c.ansi.cyan, + 'terminal.ansi.white': c.ansi.white, + 'terminal.ansi.bright_black': c.ansi.brightBlack, + 'terminal.ansi.bright_red': c.ansi.brightRed, + 'terminal.ansi.bright_green': c.ansi.brightGreen, + 'terminal.ansi.bright_yellow': c.ansi.brightYellow, + 'terminal.ansi.bright_blue': c.ansi.brightBlue, + 'terminal.ansi.bright_magenta': c.ansi.brightMagenta, + 'terminal.ansi.bright_cyan': c.ansi.brightCyan, + 'terminal.ansi.bright_white': c.ansi.brightWhite, + + // Players (multiplayer cursors) - use colors from the palette + players: [ + { + cursor: c.accent.primary, + background: c.accent.primary, + selection: alpha(c.accent.primary, 0.25), + }, + { + cursor: c.states.success, + background: c.states.success, + selection: alpha(c.states.success, 0.25), + }, + { + cursor: c.syntax.keyword, + background: c.syntax.keyword, + selection: alpha(c.syntax.keyword, 0.25), + }, + { + cursor: c.syntax.func, + background: c.syntax.func, + selection: alpha(c.syntax.func, 0.25), + }, + { + cursor: c.syntax.string, + background: c.syntax.string, + selection: alpha(c.syntax.string, 0.25), + }, + { + cursor: c.states.warn, + background: c.states.warn, + selection: alpha(c.states.warn, 0.25), + }, + { + cursor: c.syntax.type, + background: c.syntax.type, + selection: alpha(c.syntax.type, 0.25), + }, + { + cursor: c.states.info, + background: c.states.info, + selection: alpha(c.states.info, 0.25), + }, + ], + + // Syntax highlighting + syntax: { + // Comments + comment: { color: c.syntax.comment }, + 'comment.doc': { color: c.syntax.comment }, + + // Strings + string: { color: c.syntax.string }, + 'string.escape': { color: c.syntax.escape }, + 'string.regex': { color: c.syntax.regexp }, + 'string.special': { color: c.syntax.escape }, + 'string.special.symbol': { color: c.syntax.constant }, + + // Numbers & Constants + number: { color: c.syntax.number }, + constant: { color: c.syntax.constant }, + boolean: { color: c.syntax.number }, + + // Keywords + keyword: { color: c.syntax.keyword }, + 'keyword.operator': { color: c.syntax.operator }, + + // Functions + function: { color: c.syntax.func }, + 'function.method': { color: c.syntax.func }, + 'function.builtin': { color: c.syntax.func }, + 'function.special.definition': { color: c.syntax.func }, + // CSS/SCSS function calls like var(), calc(), light-dark() + 'function.call': { color: c.syntax.func }, + + // Types + type: { color: c.syntax.type }, + 'type.builtin': { color: c.syntax.type }, + constructor: { color: c.syntax.type }, + + // Variables + variable: { color: c.syntax.variable }, + 'variable.builtin': { color: c.syntax.namespace }, // this, self, super + 'variable.member': { color: c.syntax.variable }, + 'variable.parameter': { color: c.syntax.parameter }, + 'variable.special': { color: c.syntax.namespace }, + + // Properties - Used for JS object keys and property access + // Keep as variable color (orange) for JS compatibility + property: { color: c.syntax.variable }, + + // ======================================== + // CSS/SCSS SPECIFIC + // ======================================== + // CSS property names (e.g., position, display, margin) - blue + // These more specific scopes should override `property` for CSS + 'property.css': { color: c.accent.primary }, + 'property.definition': { color: c.accent.primary }, + property_name: { color: c.accent.primary }, + + // CSS property values that are keywords (e.g., relative, flex, auto, solid) + value: { color: c.syntax.number }, + 'constant.css': { color: c.syntax.constant }, + 'string.plain': { color: c.syntax.number }, + plain_value: { color: c.syntax.number }, + + // CSS selectors - element/tag selectors (p, ul, ol, div, table) + 'tag.css': { color: c.syntax.tag }, + tag_name: { color: c.syntax.tag }, + // Class selectors (.prose, .container) + class: { color: c.syntax.attribute }, + class_name: { color: c.syntax.attribute }, + 'selector.class': { color: c.syntax.attribute }, + // ID selectors (#main) + 'selector.id': { color: c.syntax.func }, + id_name: { color: c.syntax.func }, + // Pseudo-elements and pseudo-classes (::before, :hover) + 'selector.pseudo': { color: c.syntax.operator }, + pseudo_class_selector: { color: c.syntax.operator }, + pseudo_element_selector: { color: c.syntax.operator }, + + // @-rules (@use, @layer, @media, @mixin) + 'keyword.directive': { color: c.syntax.keyword }, + 'keyword.control.at-rule': { color: c.syntax.keyword }, + at_keyword: { color: c.syntax.keyword }, + + // SCSS/CSS variables - these should be orange (variable color) + // SCSS variables ($variable) + 'variable.scss': { color: c.syntax.variable }, + // CSS custom properties (--custom-prop) - orange + 'variable.css': { color: c.syntax.variable }, + 'property.custom': { color: c.syntax.variable }, + + // Units (px, em, %, rem) + unit: { color: c.syntax.number }, + 'number.unit': { color: c.syntax.number }, + + // Colors + color: { color: c.syntax.constant }, + 'constant.color': { color: c.syntax.constant }, + + // Important + 'keyword.important': { color: c.syntax.keyword }, + + // ======================================== + // END CSS/SCSS SPECIFIC + // ======================================== + + // ======================================== + // JAVASCRIPT/TYPESCRIPT SPECIFIC + // ======================================== + // `this`, `self`, `super` - namespace/yellow color + 'variable.language': { color: c.syntax.namespace }, + this: { color: c.syntax.namespace }, + self: { color: c.syntax.namespace }, + + // Class/Type names (Dropdown, BaseComponent, TypeError) + 'type.class': { color: c.syntax.type }, + // Note: class_name is defined in CSS section for CSS class selectors + + // Object literal keys + 'property.object': { color: c.syntax.variable }, + property_identifier: { color: c.syntax.variable }, + shorthand_property_identifier: { color: c.syntax.variable }, + shorthand_property_identifier_pattern: { color: c.syntax.variable }, + + // Method definitions and calls + method_definition: { color: c.syntax.func }, + 'function.method.call': { color: c.syntax.func }, + + // Template literal interpolation + 'string.template': { color: c.syntax.string }, + template_string: { color: c.syntax.string }, + + // JSX + 'tag.jsx': { color: c.syntax.tag }, + 'tag.component': { color: c.syntax.type }, + + // ======================================== + // END JAVASCRIPT/TYPESCRIPT SPECIFIC + // ======================================== + + // Punctuation + punctuation: { color: c.syntax.punctuation }, + 'punctuation.bracket': { color: c.syntax.punctuation }, + 'punctuation.delimiter': { color: c.syntax.punctuation }, + 'punctuation.list_marker': { color: c.syntax.punctuation }, + 'punctuation.special': { color: c.syntax.keyword }, + + // Operators + operator: { color: c.syntax.operator }, + + // Tags (HTML/XML/JSX) + tag: { color: c.syntax.tag }, + attribute: { color: c.syntax.attribute }, + + // Labels & Namespaces + label: { color: c.syntax.namespace }, + namespace: { color: c.syntax.namespace }, + + // Decorators + decorator: { color: c.syntax.decorator }, + 'attribute.builtin': { color: c.syntax.decorator }, + + // Embedded / Preprocessor + embedded: { color: c.fg.base }, + preproc: { color: c.syntax.keyword }, + + // Markup + 'text.literal': { color: c.syntax.string }, + 'markup.heading': { color: c.syntax.tag, font_weight: 700 }, + 'markup.bold': { color: c.syntax.constant, font_weight: 700 }, + 'markup.italic': { color: c.syntax.keyword, font_style: 'italic' }, + 'markup.strikethrough': { color: c.fg.fg3 }, + 'markup.link.url': { color: c.accent.link }, + 'markup.link.text': { color: c.syntax.func }, + 'markup.quote': { color: c.syntax.comment, font_style: 'italic' }, + 'markup.list': { color: c.syntax.tag }, + 'markup.list.numbered': { color: c.syntax.tag }, + 'markup.list.unnumbered': { color: c.syntax.tag }, + 'markup.raw': { color: c.syntax.string }, + 'markup.raw.inline': { color: c.syntax.string }, + 'markup.raw.block': { color: c.syntax.string }, + + // Diff + 'diff.plus': { color: c.states.success }, + 'diff.minus': { color: c.states.danger }, + 'diff.delta': { color: c.states.warn }, + + // Links + link_text: { color: c.accent.link }, + link_uri: { color: c.syntax.keyword }, + + // Emphasis & Primary + emphasis: { font_style: 'italic' }, + 'emphasis.strong': { font_weight: 700 }, + primary: { color: c.accent.primary }, + title: { color: c.syntax.tag, font_weight: 700 }, + + // Predictive / AI suggestions + predictive: { color: c.fg.fg4, font_style: 'italic' }, + }, + }, + }; +} + +// Helper: add alpha to hex color +function alpha(color: string, opacity: number): string { + // Handle Display P3 color format + if (color.startsWith('color(display-p3')) { + if (color.includes(' / ')) { + return color.replace(/ \/ [\d.]+\)$/, ` / ${opacity.toFixed(6)})`); + } else { + return color.replace(/\)$/, ` / ${opacity.toFixed(6)})`); + } + } + + // Handle hex color format + const alphaHex = Math.round(opacity * 255) + .toString(16) + .padStart(2, '0'); + return `${color}${alphaHex}`; +} diff --git a/packages/theme/src/palettes.ts b/packages/theme/src/palettes.ts new file mode 100644 index 000000000..d89cf2923 --- /dev/null +++ b/packages/theme/src/palettes.ts @@ -0,0 +1,337 @@ +// gray is a slightly blue-tinted neutral scale kept as a reference palette for consumers. +// It is not used in any built-in role; all four theme variants use `neutral` instead. +const gray = { + '020': '#fbfbfb', + '040': '#f9f9f9', + '060': '#f8f8f8', + '080': '#f2f2f3', + '100': '#eeeeef', + '200': '#dbdbdd', + '300': '#c6c6c8', + '400': '#adadb1', + '500': '#8E8E95', + '600': '#84848A', + '700': '#79797F', + '800': '#6C6C71', + '900': '#4A4A4E', + '920': '#424245', + '940': '#39393c', + '960': '#2e2e30', + '980': '#1F1F21', + '1000': '#141415', + '1020': '#0B0B0C', + '1040': '#070707', +}; + +const neutral = { + '020': '#fafafa', + '040': '#f7f7f7', + '060': '#f5f5f5', + '080': '#ededed', + '100': '#e5e5e5', + '200': '#d4d4d4', + '300': '#bcbcbc', + '400': '#a3a3a3', + '500': '#8a8a8a', + '600': '#737373', + '700': '#636363', + '800': '#525252', + '900': '#404040', + '920': '#363636', + '940': '#2c2c2c', + '960': '#262626', + '980': '#1d1d1d', + '1000': '#171717', + '1020': '#101010', + '1040': '#0a0a0a', +}; + +const red = { + '050': '#ffedea', + '100': '#ffdbd6', + '200': '#ffb7ae', + '300': '#ff9187', + '400': '#ff6762', + '500': '#ff2e3f', + '600': '#d52c36', + '700': '#ad292e', + '800': '#862425', + '900': '#611e1d', + '950': '#3e1715', +}; + +const vermillion = { + '050': '#fff0ea', + '100': '#ffe2d6', + '200': '#ffc4ad', + '300': '#ffa685', + '400': '#ff855e', + '500': '#ff5d36', + '600': '#d5512f', + '700': '#ad4529', + '800': '#863822', + '900': '#612b1b', + '950': '#3e1e14', +}; + +const orange = { + '050': '#fff3ea', + '100': '#ffe8d5', + '200': '#ffd1ab', + '300': '#ffba82', + '400': '#ffa359', + '500': '#fe8c2c', + '600': '#d47628', + '700': '#ac6023', + '800': '#854c1e', + '900': '#603819', + '950': '#3d2513', +}; + +const amber = { + '050': '#fff6ea', + '100': '#ffeed5', + '200': '#ffddab', + '300': '#ffcc81', + '400': '#ffbc56', + '500': '#ffab16', + '600': '#d5901c', + '700': '#ac741d', + '800': '#855b1b', + '900': '#604218', + '950': '#3d2b13', +}; + +const yellow = { + '050': '#fff9ea', + '100': '#fff4d5', + '200': '#ffe9ab', + '300': '#ffde80', + '400': '#ffd452', + '500': '#ffca00', + '600': '#d5a910', + '700': '#ac8816', + '800': '#856a17', + '900': '#604c16', + '950': '#3d3112', +}; + +const lime = { + '050': '#f6f9ec', + '100': '#edf4d8', + '200': '#dae8b1', + '300': '#c6dc8a', + '400': '#afd062', + '500': '#86c427', + '600': '#77a42a', + '700': '#658527', + '800': '#516723', + '900': '#3e4b1d', + '950': '#2a3016', +}; + +const green = { + '050': '#edf9ed', + '100': '#daf3db', + '200': '#b4e7b7', + '300': '#8cda94', + '400': '#5ecc71', + '500': '#0dbe4e', + '600': '#199f43', + '700': '#1d8138', + '800': '#1d642e', + '900': '#1b4923', + '950': '#162f19', +}; + +const jade = { + '050': '#edfaf2', + '100': '#dbf4e5', + '200': '#b6e9cb', + '300': '#8eddb2', + '400': '#60d199', + '500': '#07c480', + '600': '#18a46c', + '700': '#1d8558', + '800': '#1e6746', + '900': '#1c4b34', + '950': '#163023', +}; + +const mint = { + '050': '#edfaf7', + '100': '#dbf5ef', + '200': '#b7ebdf', + '300': '#8fe0d0', + '400': '#61d5c0', + '500': '#00cab1', + '600': '#16a994', + '700': '#1d8978', + '800': '#1e6a5e', + '900': '#1c4d44', + '950': '#16312c', +}; + +const teal = { + '050': '#eef9fa', + '100': '#ddf4f6', + '200': '#b9e8ed', + '300': '#92dde4', + '400': '#64d1db', + '500': '#00c5d2', + '600': '#17a5af', + '700': '#1e858e', + '800': '#1f686e', + '900': '#1d4b4f', + '950': '#173033', +}; + +const cyan = { + '050': '#eff9fe', + '100': '#def2fc', + '200': '#bce6f9', + '300': '#96d9f6', + '400': '#68cdf2', + '500': '#08c0ef', + '600': '#1ca1c7', + '700': '#2182a1', + '800': '#22657c', + '900': '#1e4959', + '950': '#182f38', +}; + +const blue = { + '050': '#eff5ff', + '100': '#dfebff', + '200': '#bdd7ff', + '300': '#97c4ff', + '400': '#69b1ff', + '500': '#009fff', + '600': '#1a85d4', + '700': '#216cab', + '800': '#215584', + '900': '#1f3e5e', + '950': '#19283c', +}; + +const indigo = { + '050': '#f5ecff', + '100': '#ead9ff', + '200': '#d3b4fe', + '300': '#ba8ffd', + '400': '#9d6afb', + '500': '#7b43f8', + '600': '#693acf', + '700': '#5731a7', + '800': '#462981', + '900': '#35205c', + '950': '#24173a', +}; + +const violet = { + '050': '#f8edfe', + '100': '#f1dafd', + '200': '#e1b5fa', + '300': '#ce90f7', + '400': '#b969f3', + '500': '#a13cee', + '600': '#8836c7', + '700': '#6f2ea1', + '800': '#58287c', + '900': '#412059', + '950': '#2b1738', +}; + +const purple = { + '050': '#fbedfd', + '100': '#f7dbfb', + '200': '#eeb6f6', + '300': '#e290f0', + '400': '#d568ea', + '500': '#c635e4', + '600': '#a631be', + '700': '#872b9a', + '800': '#692677', + '900': '#4d1f56', + '950': '#321736', +}; + +const magenta = { + '050': '#fdedf7', + '100': '#fbdbee', + '200': '#f7b7dd', + '300': '#f191cc', + '400': '#ea68bc', + '500': '#e130ac', + '600': '#bd2e90', + '700': '#992a75', + '800': '#77255b', + '900': '#561f43', + '950': '#38172b', +}; + +const pink = { + '050': '#ffedf0', + '100': '#ffdbe1', + '200': '#ffb7c4', + '300': '#ff91a8', + '400': '#ff678d', + '500': '#fc2b73', + '600': '#d32a61', + '700': '#aa2850', + '800': '#84243f', + '900': '#5f1e2f', + '950': '#3d1720', +}; + +const rose = { + '050': '#ffeded', + '100': '#ffdbdc', + '200': '#ffb7b9', + '300': '#ff9198', + '400': '#ff6778', + '500': '#fe2d59', + '600': '#d42b4c', + '700': '#ac293f', + '800': '#852432', + '900': '#601e26', + '950': '#3e171b', +}; + +const brown = { + '050': '#f8f2ee', + '100': '#f1e4dd', + '200': '#e3cabb', + '300': '#d3b19b', + '400': '#c3987b', + '500': '#b27f5c', + '600': '#956b4f', + '700': '#7a5841', + '800': '#5f4534', + '900': '#453327', + '950': '#2d221b', +}; + +export const palettes = { + gray, + neutral, + red, + vermillion, + orange, + amber, + yellow, + lime, + green, + jade, + mint, + teal, + cyan, + blue, + indigo, + violet, + purple, + magenta, + pink, + rose, + brown, +}; diff --git a/packages/theme/src/previews/cvd.ts b/packages/theme/src/previews/cvd.ts new file mode 100644 index 000000000..148b462b7 --- /dev/null +++ b/packages/theme/src/previews/cvd.ts @@ -0,0 +1,226 @@ +import { type CVDType, simulateCVD } from '../color'; +// src/previews/cvd.ts +// Builds preview/cvd.html (returned as a string; written by scripts/createPreviews.ts) — +// a human-eyeballing companion to the objective gate (test/cvd.test.ts). For each +// CVD (color-vision-deficiency) theme it shows, +// side by side: the colors as defined in the theme, and the same colors pushed +// through the Machado-2009 simulation for that deficiency — i.e. what a person +// with that CVD sees. If the design works, the simulated column still reads as +// "added vs deleted", "pass vs fail", "error vs warning", etc. +// +// The numbers are proven by the gate; this page is for sanity-checking that the +// proof matches intuition. Run with `moonx theme:preview --ignore-ci-checks`. +import { + protanDeutanDark, + protanDeutanLight, + type Roles, + tritanopiaDark, + tritanopiaLight, +} from '../roles'; + +type View = { + title: string; + roles: Roles; + cvd: CVDType; + type: 'light' | 'dark'; +}; +// The protan/deutan theme targets two deficiencies, so it gets one row per +// deficiency (protanopia and deuteranopia) — both are gated in tests. The +// "normal vision" column is the same in both rows, which is expected. +const VIEWS: View[] = [ + // Light + { + title: 'Pierre Light Protanopia & Deuteranopia', + roles: protanDeutanLight, + cvd: 'protan', + type: 'light', + }, + { + title: 'Pierre Light Protanopia & Deuteranopia', + roles: protanDeutanLight, + cvd: 'deutan', + type: 'light', + }, + { + title: 'Pierre Light Tritanopia', + roles: tritanopiaLight, + cvd: 'tritan', + type: 'light', + }, + // Dark + { + title: 'Pierre Dark Protanopia & Deuteranopia', + roles: protanDeutanDark, + cvd: 'protan', + type: 'dark', + }, + { + title: 'Pierre Dark Protanopia & Deuteranopia', + roles: protanDeutanDark, + cvd: 'deutan', + type: 'dark', + }, + { + title: 'Pierre Dark Tritanopia', + roles: tritanopiaDark, + cvd: 'tritan', + type: 'dark', + }, +]; + +// Simulate every hex in a Roles object → "what the CVD viewer sees". +function simulateRoles(r: Roles, cvd: CVDType): Roles { + const walk = (value: unknown): unknown => { + if (typeof value === 'string') { + return /^#[0-9a-fA-F]{6}$/.test(value) ? simulateCVD(value, cvd) : value; + } + if (value !== null && typeof value === 'object') { + const out: Record = {}; + for (const [key, child] of Object.entries(value)) out[key] = walk(child); + return out; + } + return value; + }; + return walk(r) as Roles; +} + +// Blend a foreground color over a background at the given alpha (for diff tints). +function mix(fg: string, bg: string, a: number): string { + const h = (c: string) => + [1, 3, 5].map((i) => parseInt(c.slice(i, i + 2), 16)); + const [r1, g1, b1] = h(fg), + [r2, g2, b2] = h(bg); + const m = (x: number, y: number) => Math.round(x * a + y * (1 - a)); + return `#${[m(r1, r2), m(g1, g2), m(b1, b2)].map((x) => x.toString(16).padStart(2, '0')).join('')}`; +} + +const swatch = (label: string, hex: string) => + `
${label}${hex}
`; + +// A mini code-review / editor mock built only from a theme's roles. +function mock(r: Roles): string { + const ed = r.bg.editor, + win = r.bg.window; + const addBg = mix(r.states.success, ed, 0.18); + const delBg = mix(r.states.danger, ed, 0.18); + const dot = (c: string, letter: string) => + `${letter}`; + return ` +
+
git
+
+
${dot(r.states.success, 'A')}added.ts
+
${dot(r.accent.primary, 'M')}changed.ts
+
${dot(r.states.danger, 'D')}removed.ts
+
${dot(r.states.merge, 'C')}conflict.ts
+
+
+
+ "inserted line"
+
- "deleted line"
+
+
+ const + total = + sum(42); + // note +
+
+ ✓ 12 passed + ✗ 3 failed + ⚠ 1 warning +
+
`; +} + +const CVD_LABEL: Record = { + protan: 'protanopia', + deutan: 'deuteranopia', + tritan: 'tritanopia', +}; + +function section(v: View): string { + const sim = simulateRoles(v.roles, v.cvd); + const roleList: [string, (r: Roles) => string][] = [ + ['success (added)', (r) => r.states.success], + ['danger (deleted)', (r) => r.states.danger], + ['warn', (r) => r.states.warn], + ['info', (r) => r.states.info], + ['merge', (r) => r.states.merge], + ['accent', (r) => r.accent.primary], + ['ansi.red', (r) => r.ansi.red], + ['ansi.green', (r) => r.ansi.green], + ['string', (r) => r.syntax.string], + ['keyword', (r) => r.syntax.keyword], + ['variable', (r) => r.syntax.variable], + ['func', (r) => r.syntax.func], + ]; + const swatches = (r: Roles) => + roleList.map(([n, sel]) => swatch(n, sel(r))).join(''); + return ` +
+

${v.title} ${v.type} · simulated as ${CVD_LABEL[v.cvd]}

+
+
+

Colors as defined

+
${swatches(v.roles)}
+ ${mock(v.roles)} +
+
+

Simulated (${CVD_LABEL[v.cvd]})

+
${swatches(sim)}
+ ${mock(sim)} +
+
+
`; +} + +/** Render the CVD normal-vs-simulated proof sheet as a standalone HTML document. */ +function renderCvdHtml(): string { + return ` +Pierre CVD Themes + + +
+

Pierre CVD Themes — proof sheet

+

Left = the colors as defined in the theme. Right = the same colors pushed through + the Machado-2009 simulation for that deficiency. If the design holds, the right column + still reads as added-vs-deleted, pass-vs-fail, and error-vs-warning. + Objective ΔE/contrast checks live in test/cvd.test.ts (run via moonx theme:test).

+
+
+ ${VIEWS.map(section).join('\n')} +
+ +`; +} + +export const cvd = { + filename: 'cvd.html', + render: renderCvdHtml, +}; diff --git a/packages/theme/src/previews/p3.ts b/packages/theme/src/previews/p3.ts new file mode 100644 index 000000000..25cd8b422 --- /dev/null +++ b/packages/theme/src/previews/p3.ts @@ -0,0 +1,113 @@ +// Builds preview/p3.html: a compact comparison of basic and enhanced Display P3 +// conversions for representative Pierre palette colors. +import { srgbHexToP3Color } from '../color'; + +const testColors = [ + { name: 'Blue', srgb: '#008cff' }, + { name: 'Green', srgb: '#0dbe4e' }, + { name: 'Red', srgb: '#ff2e3f' }, + { name: 'Purple', srgb: '#c635e4' }, + { name: 'Pink', srgb: '#fc2b73' }, + { name: 'Orange', srgb: '#fe8c2c' }, + { name: 'Cyan', srgb: '#08c0ef' }, + { name: 'Teal', srgb: '#00c5d2' }, +]; + +function renderP3Html(): string { + const rows = testColors + .map(({ name, srgb }) => { + const basic = srgbHexToP3Color(srgb, false); + const enhanced = srgbHexToP3Color(srgb, true); + return ` + ${name} + ${srgb} + ${basic} + ${enhanced} + `; + }) + .join('\n'); + + return ` + + + + Pierre Display P3 Preview + + + +
+
+

Pierre Display P3 Preview

+

Basic conversion maps sRGB into Display P3. Enhanced conversion applies the + saturation and luminance boost used by the vibrant theme roles.

+
+ + + + + + + + + + +${rows} + +
ColorsRGBDisplay P3 basicDisplay P3 enhanced
+
+ + +`; +} + +export const p3 = { + filename: 'p3.html', + render: renderP3Html, +}; diff --git a/packages/theme/src/previews/palette.ts b/packages/theme/src/previews/palette.ts new file mode 100644 index 000000000..d84d374eb --- /dev/null +++ b/packages/theme/src/previews/palette.ts @@ -0,0 +1,156 @@ +// Builds the palette swatch sheet (every scale in palettes.ts) and returns it as +// HTML. Writing to disk is done by scripts/createPreviews.ts. +import { palettes } from '../palettes'; + +/** Render the palette swatch sheet as a standalone HTML document. */ +function renderPaletteHtml(): string { + const sections = Object.entries(palettes) + .map(([name, scale]) => { + // JS reorders integer-indexed keys ahead of string keys, which would move + // "020" / "040" / "060" / "080" after "100". Sort numerically to restore + // the intended light-to-dark order. + const stops = Object.entries(scale).sort( + ([a], [b]) => Number(a) - Number(b) + ); + const swatches = stops + .map( + ([stop, hex]) => + `
` + + `${stop}` + + `${hex}` + + `
` + ) + .join('\n'); + return `
+
+ ${name} + ${stops.length} stops +
+
+${swatches} +
+
`; + }) + .join('\n'); + + const html = ` + + + + Pierre Palette + + + +
+

Pierre Palette

+
+
+${sections} +
+ + +`; + + return html; +} + +export const palette = { + filename: 'palette.html', + render: renderPaletteHtml, +}; diff --git a/packages/theme/src/roles/Roles.ts b/packages/theme/src/roles/Roles.ts new file mode 100644 index 000000000..87cc0324a --- /dev/null +++ b/packages/theme/src/roles/Roles.ts @@ -0,0 +1,69 @@ +export type Roles = { + bg: { + editor: string; // main editor background (brightest in light, darkest in dark) + window: string; // sidebar, activity bar, status bar, title bar, inactive tabs + inset: string; // inputs, dropdowns + elevated: string; // panels, hover backgrounds + }; + fg: { base: string; fg1: string; fg2: string; fg3: string; fg4: string }; + border: { + window: string; // borders for sidebar, activity bar, status bar, title bar + editor: string; // general editor borders + indentGuide: string; // indent guide lines + indentGuideActive: string; // active indent guide line + inset: string; // borders for inputs, dropdowns + elevated: string; // borders for panels + }; + accent: { + primary: string; + link: string; + subtle: string; + contrastOnAccent: string; + }; + states: { + merge: string; + success: string; + danger: string; + warn: string; + info: string; + }; + syntax: { + comment: string; + string: string; + number: string; + keyword: string; + regexp: string; + func: string; + type: string; + variable: string; + // Extended token types + operator: string; + punctuation: string; + constant: string; + parameter: string; + namespace: string; + decorator: string; + escape: string; + invalid: string; + tag: string; + attribute: string; + }; + ansi: { + black: string; + red: string; + green: string; + yellow: string; + blue: string; + magenta: string; + cyan: string; + white: string; + brightBlack: string; + brightRed: string; + brightGreen: string; + brightYellow: string; + brightBlue: string; + brightMagenta: string; + brightCyan: string; + brightWhite: string; + }; +}; diff --git a/packages/theme/src/roles/dark.ts b/packages/theme/src/roles/dark.ts new file mode 100644 index 000000000..035d42d1d --- /dev/null +++ b/packages/theme/src/roles/dark.ts @@ -0,0 +1,97 @@ +import { palettes } from '../palettes'; +import type { Roles } from './Roles'; +const { + neutral, + red, + vermillion, + orange, + amber, + yellow, + lime, + green, + jade, + mint, + teal, + cyan, + blue, + indigo, + purple, + magenta, + pink, +} = palettes; + +export const dark: Roles = { + bg: { + editor: neutral['1040'], + window: neutral['1000'], + inset: neutral['980'], + elevated: neutral['1020'], + }, + fg: { + base: neutral['020'], + fg1: neutral['200'], + fg2: neutral['400'], + fg3: neutral['600'], + fg4: neutral['700'], + }, + border: { + window: neutral['1040'], + editor: neutral['980'], + indentGuide: neutral['980'], + indentGuideActive: neutral['960'], + inset: neutral['980'], + elevated: neutral['980'], + }, + accent: { + primary: blue['500'], + link: blue['500'], + subtle: blue['950'], + contrastOnAccent: neutral['1040'], + }, + states: { + merge: indigo['500'], + success: jade['500'], + danger: red['500'], + warn: yellow['500'], + info: cyan['500'], + }, + syntax: { + comment: neutral['600'], + string: green['400'], + number: cyan['400'], + keyword: pink['400'], + regexp: teal['400'], + func: indigo['400'], + type: purple['400'], + variable: orange['400'], + // Extended token types + operator: cyan['500'], + punctuation: neutral['700'], + constant: yellow['400'], + parameter: neutral['400'], + namespace: amber['500'], + decorator: blue['400'], + escape: mint['400'], + invalid: neutral['020'], + tag: vermillion['400'], + attribute: jade['400'], + }, + ansi: { + black: neutral['1000'], + red: red['500'], + green: green['500'], + yellow: yellow['500'], + blue: blue['500'], + magenta: magenta['500'], + cyan: cyan['500'], + white: neutral['300'], + brightBlack: neutral['1000'], + brightRed: red['500'], + brightGreen: lime['500'], + brightYellow: yellow['500'], + brightBlue: blue['500'], + brightMagenta: magenta['500'], + brightCyan: cyan['500'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/src/roles/darkSoft.ts b/packages/theme/src/roles/darkSoft.ts new file mode 100644 index 000000000..81af9b007 --- /dev/null +++ b/packages/theme/src/roles/darkSoft.ts @@ -0,0 +1,97 @@ +import { palettes } from '../palettes'; +import type { Roles } from './Roles'; +const { + neutral, + red, + vermillion, + orange, + amber, + yellow, + lime, + green, + jade, + mint, + teal, + cyan, + blue, + indigo, + purple, + magenta, + pink, +} = palettes; + +export const darkSoft: Roles = { + bg: { + editor: neutral['1000'], + window: neutral['1020'], + inset: neutral['960'], + elevated: neutral['980'], + }, + fg: { + base: neutral['200'], + fg1: neutral['300'], + fg2: neutral['500'], + fg3: neutral['700'], + fg4: neutral['800'], + }, + border: { + window: neutral['980'], + editor: neutral['940'], + indentGuide: neutral['960'], + indentGuideActive: neutral['940'], + inset: neutral['940'], + elevated: neutral['960'], + }, + accent: { + primary: blue['400'], + link: blue['400'], + subtle: blue['900'], + contrastOnAccent: neutral['1000'], + }, + states: { + merge: indigo['400'], + success: jade['400'], + danger: red['400'], + warn: yellow['400'], + info: cyan['400'], + }, + syntax: { + comment: neutral['700'], + string: green['300'], + number: cyan['300'], + keyword: pink['300'], + regexp: teal['300'], + func: indigo['300'], + type: purple['300'], + variable: orange['300'], + // Extended token types + operator: cyan['400'], + punctuation: neutral['600'], + constant: yellow['300'], + parameter: neutral['500'], + namespace: amber['400'], + decorator: blue['300'], + escape: mint['300'], + invalid: neutral['200'], + tag: vermillion['300'], + attribute: jade['300'], + }, + ansi: { + black: neutral['1000'], + red: red['500'], + green: green['500'], + yellow: yellow['500'], + blue: blue['500'], + magenta: magenta['500'], + cyan: cyan['500'], + white: neutral['300'], + brightBlack: neutral['1000'], + brightRed: red['500'], + brightGreen: lime['500'], + brightYellow: yellow['500'], + brightBlue: blue['500'], + brightMagenta: magenta['500'], + brightCyan: cyan['500'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/src/roles/index.ts b/packages/theme/src/roles/index.ts new file mode 100644 index 000000000..f55339530 --- /dev/null +++ b/packages/theme/src/roles/index.ts @@ -0,0 +1,9 @@ +export type { Roles } from './Roles'; +export { light } from './light'; +export { lightSoft } from './lightSoft'; +export { dark } from './dark'; +export { darkSoft } from './darkSoft'; +export { protanDeutanLight } from './protanDeutanLight'; +export { protanDeutanDark } from './protanDeutanDark'; +export { tritanopiaLight } from './tritanopiaLight'; +export { tritanopiaDark } from './tritanopiaDark'; diff --git a/packages/theme/src/roles/light.ts b/packages/theme/src/roles/light.ts new file mode 100644 index 000000000..c5541234f --- /dev/null +++ b/packages/theme/src/roles/light.ts @@ -0,0 +1,98 @@ +import { palettes } from '../palettes'; +import type { Roles } from './Roles'; +const { + neutral, + red, + vermillion, + orange, + amber, + yellow, + lime, + green, + jade, + mint, + teal, + cyan, + blue, + indigo, + purple, + magenta, + pink, +} = palettes; + +export const light: Roles = { + bg: { + editor: '#ffffff', + window: neutral['060'], + inset: neutral['080'], + elevated: neutral['040'], + }, + fg: { + base: neutral['1040'], + fg1: neutral['900'], + fg2: neutral['800'], + fg3: neutral['600'], + fg4: neutral['500'], + }, + border: { + window: neutral['100'], + editor: neutral['200'], + indentGuide: neutral['100'], + indentGuideActive: neutral['200'], + inset: neutral['200'], + elevated: neutral['100'], + }, + accent: { + primary: blue['500'], + link: blue['500'], + subtle: blue['100'], + contrastOnAccent: '#ffffff', + }, + states: { + merge: indigo['600'], + success: jade['600'], + danger: red['600'], + warn: yellow['600'], + info: cyan['600'], + }, + syntax: { + comment: neutral['600'], + string: green['600'], + number: cyan['600'], + keyword: pink['600'], + regexp: teal['600'], + func: indigo['600'], + type: purple['600'], + variable: orange['600'], + // Extended token types + operator: cyan['500'], + punctuation: neutral['700'], + constant: yellow['600'], + parameter: neutral['700'], + namespace: amber['600'], + decorator: blue['600'], + escape: mint['600'], + invalid: neutral['1040'], + tag: vermillion['600'], + attribute: jade['600'], + }, + ansi: { + black: neutral['980'], + red: red['600'], + green: jade['600'], + yellow: yellow['600'], + blue: blue['600'], + magenta: magenta['600'], + cyan: cyan['600'], + white: neutral['300'], + // make bright colors match the non-bright counterparts + brightBlack: neutral['980'], + brightRed: red['600'], + brightGreen: lime['600'], + brightYellow: yellow['600'], + brightBlue: blue['600'], + brightMagenta: magenta['600'], + brightCyan: cyan['600'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/src/roles/lightSoft.ts b/packages/theme/src/roles/lightSoft.ts new file mode 100644 index 000000000..9239e0d5f --- /dev/null +++ b/packages/theme/src/roles/lightSoft.ts @@ -0,0 +1,97 @@ +import { palettes } from '../palettes'; +import type { Roles } from './Roles'; +const { + neutral, + red, + vermillion, + orange, + amber, + yellow, + lime, + green, + jade, + mint, + teal, + cyan, + blue, + indigo, + purple, + magenta, + pink, +} = palettes; + +export const lightSoft: Roles = { + bg: { + editor: '#ffffff', + window: neutral['040'], + inset: neutral['060'], + elevated: neutral['020'], + }, + fg: { + base: neutral['800'], + fg1: neutral['700'], + fg2: neutral['600'], + fg3: neutral['500'], + fg4: neutral['400'], + }, + border: { + window: neutral['080'], + editor: neutral['100'], + indentGuide: neutral['080'], + indentGuideActive: neutral['100'], + inset: neutral['200'], + elevated: neutral['100'], + }, + accent: { + primary: blue['500'], + link: blue['500'], + subtle: blue['100'], + contrastOnAccent: '#ffffff', + }, + states: { + merge: indigo['500'], + success: jade['500'], + danger: red['500'], + warn: yellow['500'], + info: cyan['500'], + }, + syntax: { + comment: neutral['500'], + string: green['500'], + number: cyan['500'], + keyword: pink['400'], + regexp: teal['500'], + func: indigo['400'], + type: purple['400'], + variable: orange['500'], + // Extended token types + operator: cyan['400'], + punctuation: neutral['600'], + constant: yellow['500'], + parameter: neutral['600'], + namespace: amber['500'], + decorator: blue['400'], + escape: mint['500'], + invalid: neutral['1000'], + tag: vermillion['500'], + attribute: jade['500'], + }, + ansi: { + black: neutral['980'], + red: red['500'], + green: green['500'], + yellow: yellow['500'], + blue: blue['500'], + magenta: magenta['500'], + cyan: cyan['500'], + white: neutral['300'], + brightBlack: neutral['980'], + brightRed: red['500'], + brightGreen: lime['500'], + brightYellow: yellow['500'], + brightBlue: blue['500'], + brightMagenta: magenta['500'], + brightCyan: cyan['500'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/src/roles/protanDeutanDark.ts b/packages/theme/src/roles/protanDeutanDark.ts new file mode 100644 index 000000000..60fc0b52e --- /dev/null +++ b/packages/theme/src/roles/protanDeutanDark.ts @@ -0,0 +1,72 @@ +import { palettes } from '../palettes'; +import { dark } from './dark'; +import type { Roles } from './Roles'; +const { + neutral, + orange, + amber, + yellow, + teal, + cyan, + blue, + indigo, + violet, + purple, +} = palettes; + +export const protanDeutanDark: Roles = { + bg: dark.bg, + fg: dark.fg, + border: dark.border, + accent: { + primary: blue['500'], + link: blue['500'], + subtle: blue['950'], + contrastOnAccent: neutral['1040'], + }, + states: { + success: blue['300'], // added → light blue (luminance-split from accent blue 500) + danger: orange['500'], // deleted/error → orange (deeper stop widens the luminance gap from warn yellow) + warn: yellow['300'], // bright caution yellow + info: cyan['400'], // cool side + merge: violet['400'], // blue-violet + }, + syntax: { + comment: neutral['600'], + string: blue['300'], // = diff inserted → blue + number: cyan['300'], + keyword: violet['400'], + regexp: cyan['400'], + func: indigo['300'], + type: purple['300'], + variable: orange['400'], // orange pole + operator: cyan['500'], + punctuation: neutral['700'], + constant: amber['300'], + parameter: neutral['400'], + namespace: amber['400'], + decorator: blue['400'], + escape: teal['400'], + invalid: neutral['020'], + tag: orange['400'], // = diff deleted → orange + attribute: amber['400'], + }, + ansi: { + black: neutral['1000'], + red: orange['400'], + green: blue['400'], + yellow: yellow['400'], + blue: blue['500'], + magenta: violet['400'], + cyan: cyan['400'], + white: neutral['300'], + brightBlack: neutral['1000'], + brightRed: orange['300'], + brightGreen: blue['300'], + brightYellow: yellow['300'], + brightBlue: blue['400'], + brightMagenta: violet['300'], + brightCyan: cyan['300'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/src/roles/protanDeutanLight.ts b/packages/theme/src/roles/protanDeutanLight.ts new file mode 100644 index 000000000..a2a703c20 --- /dev/null +++ b/packages/theme/src/roles/protanDeutanLight.ts @@ -0,0 +1,72 @@ +import { palettes } from '../palettes'; +import { light } from './light'; +import type { Roles } from './Roles'; +const { + neutral, + orange, + amber, + yellow, + teal, + cyan, + blue, + indigo, + violet, + purple, +} = palettes; + +export const protanDeutanLight: Roles = { + bg: light.bg, + fg: light.fg, + border: light.border, + accent: { + primary: blue['500'], // keep Pierre blue (brand). Intrinsically bright → + link: blue['500'], // contrast is report-only in the gate, like base Pierre. + subtle: blue['100'], + contrastOnAccent: '#ffffff', + }, + states: { + success: blue['700'], // added/positive → blue pole (diff-add bg, git "A") + danger: orange['700'], // deleted/error → orange pole (diff-del bg, git "D") + warn: yellow['500'], // bright "caution" yellow; ΔE-separated from danger by big luminance gap + info: cyan['700'], // cool side; pairs against merge in the conflict view + merge: violet['800'], // blue-violet conflict color; deep stop widens the luminance split from info + }, + syntax: { + comment: neutral['600'], // neutral — luminance only + string: blue['800'], // = diff "inserted" text → deep blue (≥8 ΔE from keyword) + number: cyan['700'], // cool side + keyword: violet['600'], // blue-violet + regexp: cyan['700'], + func: indigo['700'], // deep blue-violet + type: purple['600'], // reads blue-violet under red-green CVD + variable: orange['700'], // orange pole — workhorse identifier (deep stop clears 3:1 after simulation) + operator: cyan['700'], + punctuation: neutral['700'], + constant: amber['700'], // orange side, deep + parameter: neutral['700'], + namespace: amber['700'], + decorator: blue['700'], + escape: teal['700'], + invalid: neutral['1040'], + tag: orange['700'], // = diff "deleted" text → orange pole + attribute: amber['700'], + }, + ansi: { + black: neutral['980'], + red: orange['700'], // terminal "error red" → orange so red≠green + green: blue['700'], // terminal "success green" → blue + yellow: yellow['500'], + blue: blue['600'], + magenta: violet['600'], + cyan: cyan['700'], + white: neutral['300'], + brightBlack: neutral['980'], + brightRed: orange['600'], + brightGreen: blue['600'], + brightYellow: yellow['500'], + brightBlue: blue['500'], + brightMagenta: violet['500'], + brightCyan: cyan['600'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/src/roles/tritanopiaDark.ts b/packages/theme/src/roles/tritanopiaDark.ts new file mode 100644 index 000000000..043cbeba2 --- /dev/null +++ b/packages/theme/src/roles/tritanopiaDark.ts @@ -0,0 +1,61 @@ +import { palettes } from '../palettes'; +import { dark } from './dark'; +import type { Roles } from './Roles'; +const { neutral, vermillion, amber, teal, blue, purple, magenta } = palettes; + +export const tritanopiaDark: Roles = { + bg: dark.bg, + fg: dark.fg, + border: dark.border, + accent: { + primary: blue['500'], + link: blue['500'], + subtle: blue['950'], + contrastOnAccent: neutral['1040'], + }, + states: { + success: teal['300'], // added → teal + danger: vermillion['400'], // deleted/error → red + warn: amber['400'], // caution + info: blue['400'], // cyan side + merge: magenta['400'], // reddish-purple + }, + syntax: { + comment: neutral['600'], + string: teal['300'], // = diff inserted → teal + number: blue['400'], + keyword: purple['400'], // reddish-purple (≥8 ΔE from red variable) + regexp: teal['400'], + func: blue['300'], + type: magenta['400'], + variable: vermillion['400'], // red pole + operator: teal['500'], + punctuation: neutral['700'], + constant: amber['300'], + parameter: neutral['400'], + namespace: vermillion['400'], + decorator: blue['400'], + escape: teal['400'], + invalid: neutral['020'], + tag: vermillion['400'], // = diff deleted → red + attribute: teal['400'], + }, + ansi: { + black: neutral['1000'], + red: vermillion['400'], + green: teal['400'], + yellow: amber['400'], + blue: blue['400'], + magenta: magenta['400'], + cyan: teal['300'], + white: neutral['300'], + brightBlack: neutral['1000'], + brightRed: vermillion['300'], + brightGreen: teal['300'], + brightYellow: amber['300'], + brightBlue: blue['300'], + brightMagenta: magenta['300'], + brightCyan: teal['300'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/src/roles/tritanopiaLight.ts b/packages/theme/src/roles/tritanopiaLight.ts new file mode 100644 index 000000000..46956986b --- /dev/null +++ b/packages/theme/src/roles/tritanopiaLight.ts @@ -0,0 +1,61 @@ +import { palettes } from '../palettes'; +import { light } from './light'; +import type { Roles } from './Roles'; +const { neutral, vermillion, amber, teal, blue, purple, magenta } = palettes; + +export const tritanopiaLight: Roles = { + bg: light.bg, + fg: light.fg, + border: light.border, + accent: { + primary: blue['500'], // keep Pierre blue (reads cyan-blue, clearly ≠ red) + link: blue['500'], + subtle: blue['100'], + contrastOnAccent: '#ffffff', + }, + states: { + success: teal['700'], // added/positive → teal (cyan pole) + danger: vermillion['600'], // deleted/error → red (red pole preserved under tritanopia) + warn: amber['500'], // caution; brighter stop widens the luminance gap from danger vermillion (report-only contrast) + info: blue['600'], // cyan side + merge: magenta['700'], // reddish-purple — tritan-safe, far from blue/teal AND from vermillion + }, + syntax: { + comment: neutral['600'], + string: teal['700'], // = diff inserted → teal (cyan pole) + number: blue['600'], // cyan side + keyword: purple['600'], // reddish-purple (≥8 ΔE from red variable) + regexp: teal['700'], + func: blue['700'], // deep blue + type: magenta['600'], // reddish-purple + variable: vermillion['700'], // red pole — workhorse identifier + operator: teal['700'], + punctuation: neutral['700'], + constant: amber['700'], + parameter: neutral['700'], + namespace: vermillion['600'], + decorator: blue['600'], + escape: teal['700'], + invalid: neutral['1040'], + tag: vermillion['600'], // = diff deleted → red pole + attribute: teal['700'], + }, + ansi: { + black: neutral['980'], + red: vermillion['600'], // red preserved + green: teal['700'], // success green → teal so red≠green + yellow: amber['600'], + blue: blue['600'], + magenta: magenta['700'], + cyan: teal['600'], + white: neutral['300'], + brightBlack: neutral['980'], + brightRed: vermillion['500'], + brightGreen: teal['600'], + brightYellow: amber['500'], + brightBlue: blue['500'], + brightMagenta: magenta['600'], + brightCyan: teal['500'], + brightWhite: neutral['300'], + }, +}; diff --git a/packages/theme/test/build.test.ts b/packages/theme/test/build.test.ts new file mode 100644 index 000000000..851bfe4a6 --- /dev/null +++ b/packages/theme/test/build.test.ts @@ -0,0 +1,177 @@ +/** + * Guards the build *output* rather than theme design. After `theme:build` writes + * themes/*.json, this checks each expected file exists and carries the right + * metadata — catching build-step regressions (a missing, empty, or misnamed file). + */ +import { describe, test } from 'bun:test'; +import assert from 'node:assert/strict'; +import { existsSync, readFileSync } from 'node:fs'; + +type GeneratedFile = { + path: string; + expectedType: 'light' | 'dark'; + expectedName: string; + expectedDisplayName: string; +}; + +type GeneratedTheme = { + name?: unknown; + displayName?: unknown; + type?: unknown; + colors?: unknown; + tokenColors?: unknown; +}; + +const GENERATED_FILES: GeneratedFile[] = [ + { + path: 'themes/pierre-light.json', + expectedType: 'light', + expectedName: 'pierre-light', + expectedDisplayName: 'Pierre Light', + }, + { + path: 'themes/pierre-light-protanopia-deuteranopia.json', + expectedType: 'light', + expectedName: 'pierre-light-protanopia-deuteranopia', + expectedDisplayName: 'Pierre Light Protanopia & Deuteranopia', + }, + { + path: 'themes/pierre-light-soft.json', + expectedType: 'light', + expectedName: 'pierre-light-soft', + expectedDisplayName: 'Pierre Light Soft', + }, + { + path: 'themes/pierre-light-tritanopia.json', + expectedType: 'light', + expectedName: 'pierre-light-tritanopia', + expectedDisplayName: 'Pierre Light Tritanopia', + }, + { + path: 'themes/pierre-light-vibrant.json', + expectedType: 'light', + expectedName: 'pierre-light-vibrant', + expectedDisplayName: 'Pierre Light Vibrant', + }, + { + path: 'themes/pierre-dark.json', + expectedType: 'dark', + expectedName: 'pierre-dark', + expectedDisplayName: 'Pierre Dark', + }, + { + path: 'themes/pierre-dark-protanopia-deuteranopia.json', + expectedType: 'dark', + expectedName: 'pierre-dark-protanopia-deuteranopia', + expectedDisplayName: 'Pierre Dark Protanopia & Deuteranopia', + }, + { + path: 'themes/pierre-dark-soft.json', + expectedType: 'dark', + expectedName: 'pierre-dark-soft', + expectedDisplayName: 'Pierre Dark Soft', + }, + { + path: 'themes/pierre-dark-tritanopia.json', + expectedType: 'dark', + expectedName: 'pierre-dark-tritanopia', + expectedDisplayName: 'Pierre Dark Tritanopia', + }, + { + path: 'themes/pierre-dark-vibrant.json', + expectedType: 'dark', + expectedName: 'pierre-dark-vibrant', + expectedDisplayName: 'Pierre Dark Vibrant', + }, +]; + +describe('generated theme files', () => { + for (const file of GENERATED_FILES) { + describe(file.path, () => { + test('exists', () => { + assert.ok(existsSync(file.path), `file does not exist: ${file.path}`); + }); + + test('is non-empty, valid JSON with the expected metadata', () => { + const content = readFileSync(file.path, 'utf8'); + assert.notEqual(content.trim(), '', `file is empty: ${file.path}`); + + const theme = JSON.parse(content) as GeneratedTheme; + + assert.equal(typeof theme.name, 'string', `${file.path}: missing name`); + assert.equal( + typeof theme.displayName, + 'string', + `${file.path}: missing displayName` + ); + assert.equal( + theme.name, + file.expectedName, + `${file.path}: unexpected name` + ); + assert.equal( + theme.displayName, + file.expectedDisplayName, + `${file.path}: unexpected displayName` + ); + assert.equal(typeof theme.type, 'string', `${file.path}: missing type`); + assert.equal( + theme.type, + file.expectedType, + `${file.path}: unexpected type` + ); + assert.ok( + theme.colors !== null && + typeof theme.colors === 'object' && + Object.keys(theme.colors).length > 0, + `${file.path}: missing or empty colors object` + ); + assert.ok( + Array.isArray(theme.tokenColors) && theme.tokenColors.length > 0, + `${file.path}: missing or empty tokenColors array` + ); + }); + }); + } + + test('base themes are large enough to contain full color and token definitions', () => { + const lightSize = readFileSync('themes/pierre-light.json', 'utf8').length; + const darkSize = readFileSync('themes/pierre-dark.json', 'utf8').length; + + assert.ok( + lightSize >= 10_000, + `pierre-light.json seems too small (${lightSize} bytes)` + ); + assert.ok( + darkSize >= 10_000, + `pierre-dark.json seems too small (${darkSize} bytes)` + ); + }); +}); + +describe('generated ESM wrapper modules', () => { + for (const file of GENERATED_FILES) { + test(`${file.expectedName}.mjs exists`, () => { + assert.ok( + existsSync(`dist/${file.expectedName}.mjs`), + `file does not exist: dist/${file.expectedName}.mjs` + ); + }); + } + + test('index module exists', () => { + assert.ok( + existsSync('dist/index.mjs'), + 'file does not exist: dist/index.mjs' + ); + }); +}); + +describe('generated Zed theme files', () => { + test('theme family exists', () => { + assert.ok( + existsSync('zed/themes/pierre.json'), + 'file does not exist: zed/themes/pierre.json' + ); + }); +}); diff --git a/packages/theme/test/cvd.test.ts b/packages/theme/test/cvd.test.ts new file mode 100644 index 000000000..69315cb1d --- /dev/null +++ b/packages/theme/test/cvd.test.ts @@ -0,0 +1,384 @@ +/** + * OBJECTIVE GATE for the CVD (Color Vision Deficiency) themes. + * This file turns the design rules from src/roles into machine-checked assertions + * and is run as part of `theme:test` (via Bun's test runner). It fails the build + * if any Tier-1 or Tier-2 requirement regresses, so the themes cannot silently drift + * into an ambiguous state. + * + * How it works: + * 1. simulate — recolor each role as a protan/deutan/tritan viewer would see it + * (Machado 2009 model), at full dichromacy (severity 1.0). + * 2. distinguishability — for every pair of roles that co-occurs on screen, + * measure the perceptual distance (ΔE₀₀) between the simulated colors. If + * two signals (e.g. "added" vs "deleted") still look far apart, then they can + * be distinguished. ΔE₀₀ > ~10 ≈ "clearly different". + * 3. contrast — WCAG legibility of each foreground vs its background, checked + * both normally and after simulation (simulation shifts luminance). + * + * TIERS + * Graded by what carries the signal when color fails. Under full dichromacy there + * are only ~2 usable hue poles + luminance but ~20 chromatic roles, so not every + * pair can be hue-unique. We gate hardest where color is the only cue, and lean on + * the editor's built-in non-color cues elsewhere. + * • Tier 1 (hard gate, ΔE ≥ 11) — color is the SOLE disambiguator: + * diff add/delete backgrounds (success/danger), diff inserted/deleted TEXT + * (string/tag), merge-conflict backgrounds (merge/info), terminal pass/fail + * (ansi red/green). None of these has a glyph fallback. + * • Tier 2 (hard gate, ΔE ≥ 8) — color PLUS a non-color cue: + * diagnostics (error/warn/info — distinct icon SHAPES), and the + * highest-frequency syntax adjacencies + comment-vs-code. + * • Tier 3 (advisory, reported only) — color is tertiary: + * the git-tree group (every entry already carries an M/A/D/U/C letter + * badge) and extended syntax (bold/italic + position carry it). Reported + * via test diagnostics so regressions stay visible without blocking the build. + */ +import { describe, test } from 'bun:test'; +import assert from 'node:assert/strict'; + +import { contrastRatio, cvdSelfChecks, type CVDType } from '../src/color'; +import { + protanDeutanDark, + protanDeutanLight, + type Roles, + tritanopiaDark, + tritanopiaLight, +} from '../src/roles'; +import { + referenceCrossChecks, + simulatedContrast, + worstDeltaE, +} from './helpers/cvd'; + +// Thresholds (standards-derived, tuned empirically during build-out) +const TIER1_DELTA_E = 11; // co-occurring opposite-meaning signals +const TIER2_DELTA_E = 8; // critical syntax adjacencies +const TEXT_CONTRAST = 4.5; // WCAG 2.1 SC 1.4.3 normal text +const UI_CONTRAST = 3.0; // WCAG 2.1 SC 1.4.11 UI glyphs / SC 1.4.3 large text + +// The role-color pairs the gate checks +// A Selector plucks one concrete hex from a resolved Roles object, so a RolePair +// names two roles whose simulated colors we then compare. +type Selector = (r: Roles) => string; +type RolePair = { + tier: 1 | 2 | 3; + label: string; + a: Selector; + b: Selector; + group: string; +}; + +// Named selectors for every role the gate references, so the pair list below can +// say `selectors.success` instead of repeating `(r) => r.states.success`. +const selectors = { + success: (r: Roles) => r.states.success, + danger: (r: Roles) => r.states.danger, + warn: (r: Roles) => r.states.warn, + info: (r: Roles) => r.states.info, + merge: (r: Roles) => r.states.merge, + accent: (r: Roles) => r.accent.primary, + ansiRed: (r: Roles) => r.ansi.red, + ansiGreen: (r: Roles) => r.ansi.green, + comment: (r: Roles) => r.syntax.comment, + string: (r: Roles) => r.syntax.string, + keyword: (r: Roles) => r.syntax.keyword, + variable: (r: Roles) => r.syntax.variable, + func: (r: Roles) => r.syntax.func, + type: (r: Roles) => r.syntax.type, + number: (r: Roles) => r.syntax.number, + tag: (r: Roles) => r.syntax.tag, // = diff "deleted" text token +}; + +// Expand a group whose members must each be distinguishable from every other into +// one RolePair per unordered combination — e.g. [danger, warn, info] becomes +// danger·warn, danger·info, warn·info. +function allPairsWithin( + group: string, + tier: 1 | 2 | 3, + members: [string, Selector][] +): RolePair[] { + const out: RolePair[] = []; + for (let i = 0; i < members.length; i++) { + for (let j = i + 1; j < members.length; j++) { + out.push({ + tier, + group, + label: `${members[i][0]} vs ${members[j][0]}`, + a: members[i][1], + b: members[j][1], + }); + } + } + return out; +} + +// Every role-color pair the gate measures, grouped by tier (see the header for +// what each tier means and why). +const DISTINGUISHABILITY_PAIRS: RolePair[] = [ + // ── Tier 1 — color is the only cue (ΔE ≥ 11) ────────────────────────────── + // Diff gutter / overview ruler: added vs deleted backgrounds (no glyph). + { + tier: 1, + group: 'diff bg', + label: 'success(added) vs danger(deleted)', + a: selectors.success, + b: selectors.danger, + }, + // Diff TEXT tokens: inserted vs deleted, the semantic core of a review. + { + tier: 1, + group: 'diff text', + label: 'string(inserted) vs tag(deleted)', + a: selectors.string, + b: selectors.tag, + }, + // Merge conflict view: current(merge) vs incoming(info) tinted backgrounds. + { + tier: 1, + group: 'merge conflict', + label: 'merge vs info', + a: selectors.merge, + b: selectors.info, + }, + // Terminal pass/fail. + { + tier: 1, + group: 'terminal', + label: 'ansi.red vs ansi.green', + a: selectors.ansiRed, + b: selectors.ansiGreen, + }, + + // ── Tier 2 — color + a non-color cue (ΔE ≥ 8) ───────────────────────────── + // Diagnostics & notifications: error/warn/info — backed by distinct icon + // shapes (✕ / △ / ⓘ), so color is the secondary channel. + ...allPairsWithin('diagnostics', 2, [ + ['danger', selectors.danger], + ['warn', selectors.warn], + ['info', selectors.info], + ]), + // Comment must never be mistaken for live code, so pair it against each token + // kind it sits next to (we only care about comment-vs-X, not X-vs-Y here). + { + tier: 2, + group: 'comment vs code', + label: 'comment vs string', + a: selectors.comment, + b: selectors.string, + }, + { + tier: 2, + group: 'comment vs code', + label: 'comment vs keyword', + a: selectors.comment, + b: selectors.keyword, + }, + { + tier: 2, + group: 'comment vs code', + label: 'comment vs variable', + a: selectors.comment, + b: selectors.variable, + }, + // The three highest-frequency code tokens. + ...allPairsWithin('core syntax', 2, [ + ['keyword', selectors.keyword], + ['string', selectors.string], + ['variable', selectors.variable], + ]), + + // ── Tier 3 (advisory) ───────────────────────────────────────────────────── + // Git tree: added/modified/deleted/conflict — every entry has an M/A/D/U/C + // letter badge, so identical-looking colors are still unambiguous. Reported. + ...allPairsWithin('git tree', 3, [ + ['success', selectors.success], + ['danger', selectors.danger], + ['merge', selectors.merge], + ['accent.primary', selectors.accent], + ]), + ...allPairsWithin('extended syntax', 3, [ + ['func', selectors.func], + ['type', selectors.type], + ['number', selectors.number], + ['keyword', selectors.keyword], + ['string', selectors.string], + ['variable', selectors.variable], + ]), +]; + +// ── Theme registry ────────────────────────────────────────────────────────── +// Each protan/deutan theme must satisfy the gate under BOTH protan and deutan +// simulation; tritanopia themes under tritan. +type CvdThemeDef = { name: string; roles: Roles; cvds: CVDType[] }; +const THEMES: CvdThemeDef[] = [ + { + name: 'Pierre Light Protanopia & Deuteranopia', + roles: protanDeutanLight, + cvds: ['protan', 'deutan'], + }, + { + name: 'Pierre Dark Protanopia & Deuteranopia', + roles: protanDeutanDark, + cvds: ['protan', 'deutan'], + }, + { name: 'Pierre Light Tritanopia', roles: tritanopiaLight, cvds: ['tritan'] }, + { name: 'Pierre Dark Tritanopia', roles: tritanopiaDark, cvds: ['tritan'] }, +]; + +// ── Tests ───────────────────────────────────────────────────────────────────── + +// Color-science self-checks (prove the simulation/contrast/ΔE math itself). +describe('color-science self-checks (Machado 2009 / WCAG / CIEDE2000)', () => { + for (const c of cvdSelfChecks()) { + test(c.name, () => assert.ok(c.ok, c.detail)); + } +}); + +// Reference cross-validation vs culori (a dev-only oracle; ships nothing). +describe('reference cross-validation vs culori', () => { + for (const r of referenceCrossChecks()) { + test(r.name, () => assert.ok(r.ok, `${r.name}: ${r.detail}`)); + } +}); + +// CONTRAST POLICY. We hold the CVD themes to WCAG bars, but only the bar that fits +// how each color renders — and we do NOT impose a bar the *standard* Pierre themes +// never met (base Pierre LIGHT runs syntax/signal colors at 2–4.5:1 by design; see +// ACCESSIBILITY.md): +// • Body text (editor foreground) → 4.5:1 (SC 1.4.3 normal text) +// • Syntax tokens & meaningful signal colors → 3.0:1 (SC 1.4.11 UI / large text), +// checked NORMAL and AFTER simulation (simulation shifts luminance). +// • Report-only (printed, never fails): intrinsically-bright / brand colors that +// base Pierre itself keeps bright — their *distinguishability* (ΔE) is gated, +// not their raw contrast. +describe('CVD theme gate', () => { + for (const { name, roles, cvds } of THEMES) { + describe(`${name} [simulated as: ${cvds.join(', ')}]`, () => { + const bgEditor = roles.bg.editor; + const bgWindow = roles.bg.window; + + // Contrast (normal + simulated). The simulated check takes the worst case + // across both gamma conventions; backgrounds are near-neutral so they barely + // move, but we simulate them under each convention for correctness. + describe('contrast', () => { + // Syntax tokens are text-on-editor at the 3:1 bar; `invalid` is a + // background tint, not a foreground, so it's excluded (all others gated). + const syntaxForegrounds = Object.entries(roles.syntax).filter( + ([k]) => k !== 'invalid' + ); + // Signal colors gated at 3:1 (carry meaning): states except the bright + // `warn`, plus the terminal pass/fail pair. + const signalForegrounds: [string, string][] = [ + ['states.success', roles.states.success], + ['states.danger', roles.states.danger], + ['states.info', roles.states.info], + ['states.merge', roles.states.merge], + ['ansi.red', roles.ansi.red], + ['ansi.green', roles.ansi.green], + ]; + + for (const cvd of cvds) { + // Body text — the one role held to the full 4.5:1 text bar. + test(`fg.base on editor — body text ≥ ${TEXT_CONTRAST}:1 (${cvd})`, () => { + const normal = contrastRatio(roles.fg.base, bgEditor); + const sim = simulatedContrast(roles.fg.base, bgEditor, cvd); + assert.ok( + normal >= TEXT_CONTRAST && sim >= TEXT_CONTRAST, + `fg.base on editor — normal ${normal.toFixed(2)}, ${cvd} ${sim.toFixed(2)} (< ${TEXT_CONTRAST})` + ); + }); + + for (const [key, hex] of syntaxForegrounds) { + test(`syntax.${key} on editor ≥ ${UI_CONTRAST}:1 (${cvd})`, () => { + const normal = contrastRatio(hex, bgEditor); + const sim = simulatedContrast(hex, bgEditor, cvd); + assert.ok( + normal >= UI_CONTRAST && sim >= UI_CONTRAST, + `syntax.${key} on editor — normal ${normal.toFixed(2)}, ${cvd} ${sim.toFixed(2)} (< ${UI_CONTRAST})` + ); + }); + } + + for (const [key, hex] of signalForegrounds) { + test(`${key} on window ≥ ${UI_CONTRAST}:1 (${cvd})`, () => { + const normal = contrastRatio(hex, bgWindow); + const sim = simulatedContrast(hex, bgWindow, cvd); + assert.ok( + normal >= UI_CONTRAST && sim >= UI_CONTRAST, + `${key} on window — normal ${normal.toFixed(2)}, ${cvd} ${sim.toFixed(2)} (< ${UI_CONTRAST})` + ); + }); + } + } + + // Report-only: worst contrast seen for the intrinsically-bright / brand + // colors, surfaced as a diagnostic (never fails the build). + test('report-only contrast (intrinsically-bright / brand colors)', () => { + const reportOnlyForegrounds: [string, string][] = [ + ['accent.primary', roles.accent.primary], + ['states.warn', roles.states.warn], + ['ansi.yellow', roles.ansi.yellow], + ['ansi.blue', roles.ansi.blue], + ['ansi.cyan', roles.ansi.cyan], + ['ansi.magenta', roles.ansi.magenta], + ]; + const reportOnlyMin: Record = {}; + for (const cvd of cvds) { + for (const [key, hex] of reportOnlyForegrounds) { + const c = Math.min( + contrastRatio(hex, bgWindow), + simulatedContrast(hex, bgWindow, cvd) + ); + reportOnlyMin[key] = Math.min(reportOnlyMin[key] ?? Infinity, c); + } + } + console.log( + Object.entries(reportOnlyMin) + .map(([k, v]) => `${k} ${v.toFixed(2)}`) + .join(', ') + ); + }); + }); + + // Distinguishability under simulation. + describe('distinguishability under simulation', () => { + for (const tier of [1, 2] as const) { + const threshold = tier === 1 ? TIER1_DELTA_E : TIER2_DELTA_E; + describe(`Tier ${tier} (ΔE ≥ ${threshold})`, () => { + for (const p of DISTINGUISHABILITY_PAIRS.filter( + (p) => p.tier === tier + )) { + test(`[${p.group}] ${p.label}`, () => { + const { worst, worstCvd, worstConvention } = worstDeltaE( + p.a(roles), + p.b(roles), + cvds + ); + assert.ok( + worst >= threshold, + `${p.label} = ΔE ${worst.toFixed(1)} under ${worstCvd}/${worstConvention} (need ≥ ${threshold})` + ); + }); + } + }); + } + + // Tier 3 is advisory: reported via diagnostics so regressions stay visible + // without blocking the build. + test('Tier 3 (advisory — reported, never fails)', () => { + for (const p of DISTINGUISHABILITY_PAIRS.filter( + (p) => p.tier === 3 + )) { + const { worst, worstCvd, worstConvention } = worstDeltaE( + p.a(roles), + p.b(roles), + cvds + ); + console.log( + `[${p.group}] ${p.label} - DeltaE ${worst.toFixed(1)} (${worstCvd}, ${worstConvention})` + ); + } + }); + }); + }); + } +}); diff --git a/packages/theme/test/helpers/cvd.ts b/packages/theme/test/helpers/cvd.ts new file mode 100644 index 000000000..5a4318113 --- /dev/null +++ b/packages/theme/test/helpers/cvd.ts @@ -0,0 +1,164 @@ +import { + differenceCiede2000, + filterDeficiencyDeuter, + filterDeficiencyProt, + filterDeficiencyTrit, + formatHex, + wcagContrast, +} from 'culori'; + +/** + * Color-science utilities shared by the CVD accessibility gate: + * simulate a color as a dichromat sees it, measure WCAG contrast and CIEDE2000 + * separation after simulation, and cross-validate our hand-rolled math against + * culori. + */ +import { + contrastRatio, + type CVDType, + deltaE2000, + simulateCVD, +} from '../../src/color'; + +// The two common Machado gamma conventions: linear RGB (our implementation) and +// gamma-encoded sRGB (culori / the `colorspace` R package). The gate checks both. +export type SimulationConvention = 'linear' | 'gamma'; + +type CuloriColorInput = Parameters[0]; + +const gammaSim: Record CuloriColorInput> = { + protan: filterDeficiencyProt(1) as (c: string) => CuloriColorInput, + deutan: filterDeficiencyDeuter(1) as (c: string) => CuloriColorInput, + tritan: filterDeficiencyTrit(1) as (c: string) => CuloriColorInput, +}; + +export function simulateForConvention( + hex: string, + cvd: CVDType, + convention: SimulationConvention +): string { + if (convention === 'linear') return simulateCVD(hex, cvd); + const simulated = formatHex(gammaSim[cvd](hex)); + if (simulated === undefined) { + throw new Error(`culori could not simulate ${hex} for ${cvd}`); + } + return simulated; +} + +// Worst-case contrast of fg on bg after simulation, across both gamma conventions +// (the same linear + gamma pair the distinguishability check uses). +export function simulatedContrast( + fg: string, + bg: string, + cvd: CVDType +): number { + let worst = Infinity; + for (const convention of ['linear', 'gamma'] as const) { + worst = Math.min( + worst, + contrastRatio( + simulateForConvention(fg, cvd, convention), + simulateForConvention(bg, cvd, convention) + ) + ); + } + return worst; +} + +// Worst-case ΔE for a pair across every CVD type a theme targets and both Machado +// gamma conventions; reports which (cvd, convention) produced the minimum. +export function worstDeltaE(aHex: string, bHex: string, cvds: CVDType[]) { + let worst = Infinity; + let worstCvd: CVDType = cvds[0]; + let worstConvention: SimulationConvention = 'linear'; + for (const cvd of cvds) { + for (const convention of ['linear', 'gamma'] as const) { + const d = deltaE2000( + simulateForConvention(aHex, cvd, convention), + simulateForConvention(bHex, cvd, convention) + ); + if (d < worst) { + worst = d; + worstCvd = cvd; + worstConvention = convention; + } + } + } + return { worst, worstCvd, worstConvention }; +} + +// Cross-validate our hand-rolled color math against culori (dev-only oracle). We +// keep our own implementation (its CVD simulation uses the more-correct linear-RGB +// convention), but prove the standardized formulas agree with a vetted library: +// contrast and ΔE must match to floating-point noise, and our simulation must +// collapse the same confusable axes culori's does (it differs only in gamma +// convention, by design — see src/color/cvd.ts). +export function referenceCrossChecks(): { + name: string; + ok: boolean; + detail: string; +}[] { + const ciede = differenceCiede2000(); + // culori parses hex strings at runtime; its types want parsed Color objects, so + // we loosen the signatures here (dev-only oracle). + const samples = [ + '#009fff', + '#d52c36', + '#199f43', + '#ffca00', + '#1a85d4', + '#d47628', + '#a13cee', + '#00c5d2', + '#ff5d36', + '#737373', + '#ffffff', + '#0a0a0a', + ]; + + // contrast & ΔE: must match culori to floating-point noise. + let maxC = 0, + maxDe = 0; + for (let i = 0; i < samples.length; i++) { + for (let j = i + 1; j < samples.length; j++) { + const a = samples[i], + b = samples[j]; + maxC = Math.max(maxC, Math.abs(contrastRatio(a, b) - wcagContrast(a, b))); + maxDe = Math.max(maxDe, Math.abs(deltaE2000(a, b) - ciede(a, b))); + } + } + + // simulation: differs from culori only in gamma convention, but must collapse + // the same axis — verify each maps the confusable pair to a much smaller ΔE. + const axisOk = (['protan', 'deutan', 'tritan'] as CVDType[]).every((t) => { + const x = t === 'tritan' ? '#009fff' : '#ff2e3f'; // blue (tritan) / red (protan,deutan) + const y = '#199f43'; // green + const before = deltaE2000(x, y); + const ours = deltaE2000(simulateCVD(x, t), simulateCVD(y, t)); + const lib = ciede( + simulateForConvention(x, t, 'gamma'), + simulateForConvention(y, t, 'gamma') + ); + // Both implementations must collapse the confusable pair to under half its + // un-simulated separation (exact residual differs by gamma convention). + return ours < before * 0.5 && lib < before * 0.5; + }); + + return [ + { + name: 'contrast matches culori', + ok: maxC < 0.01, + detail: `max |Δ| ${maxC.toFixed(4)}`, + }, + { + name: 'ΔE2000 matches culori', + ok: maxDe < 0.1, + detail: `max |Δ| ${maxDe.toFixed(4)}`, + }, + { + name: 'simulation collapses same axis', + ok: axisOk, + detail: axisOk ? 'ours & culori agree' : 'axis mismatch', + }, + ]; +} diff --git a/packages/theme/test/theme.test.ts b/packages/theme/test/theme.test.ts new file mode 100644 index 000000000..a783e740b --- /dev/null +++ b/packages/theme/test/theme.test.ts @@ -0,0 +1,318 @@ +/** + * Structural validation for the themes: it proves that createTheme produces + * well-formed VS Code themes and that the palette role tables are valid hex. + */ +import { afterAll, describe, test } from 'bun:test'; +import assert from 'node:assert/strict'; + +import { convertRolesToP3 } from '../src/color'; +import { createTheme } from '../src/createTheme'; +import { + type Roles, + dark as rolesDark, + darkSoft as rolesDarkSoft, + light as rolesLight, + lightSoft as rolesLightSoft, + protanDeutanDark as rolesProtanDeutanDark, + protanDeutanLight as rolesProtanDeutanLight, + tritanopiaDark as rolesTritanopiaDark, + tritanopiaLight as rolesTritanopiaLight, +} from '../src/roles'; + +// ── Color-string validators (shared across the theme / token / semantic checks) ── +function isValidHexColor(color: string): boolean { + // Match #RGB, #RRGGBB, #RRGGBBAA formats + return /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/.test(color); +} + +function isValidColor(color: string): boolean { + // Hex, or a Display-P3 color() — color(display-p3 r g b) with optional / alpha. + return ( + isValidHexColor(color) || + /^color\(display-p3\s+[\d.]+\s+[\d.]+\s+[\d.]+(\s+\/\s+[\d.]+)?\)$/.test( + color + ) + ); +} + +// Every color string the suite touches — surfaced as a diagnostic at the end so +// the palette's breadth stays visible (the old runner printed this total). +const usedColors = new Set(); + +// ── Palette roles ───────────────────────────────────────────────────────────── +const REQUIRED_ROLE_CATEGORIES = [ + 'bg', + 'fg', + 'border', + 'accent', + 'states', + 'syntax', + 'ansi', +]; + +const ROLE_SETS: [string, Roles][] = [ + ['dark', rolesDark], + ['light', rolesLight], + ['darkSoft', rolesDarkSoft], + ['lightSoft', rolesLightSoft], + ['protanDeutanDark', rolesProtanDeutanDark], + ['protanDeutanLight', rolesProtanDeutanLight], + ['tritanopiaDark', rolesTritanopiaDark], + ['tritanopiaLight', rolesTritanopiaLight], +]; + +describe('palette roles', () => { + for (const [name, roles] of ROLE_SETS) { + describe(name, () => { + test('defines every required role category', () => { + for (const category of REQUIRED_ROLE_CATEGORIES) { + assert.ok( + (roles as Record)[category] !== undefined, + `${name}: missing "${category}" category` + ); + } + }); + + test('uses only valid hex colors', () => { + // Collect every role-table path whose value is not valid hex. Role tables + // are authored in hex; P3 conversion happens later, at build time. + const issues: string[] = []; + const collectRoleHexIssues = (obj: unknown, path: string) => { + for (const [key, value] of Object.entries( + obj as Record + )) { + const fullPath = `${path}.${key}`; + if (typeof value === 'string') { + if (!isValidHexColor(value)) + issues.push(`${fullPath}: invalid color "${value}"`); + } else if (value !== null && typeof value === 'object') { + collectRoleHexIssues(value, fullPath); + } + } + }; + collectRoleHexIssues(roles, name); + assert.deepEqual(issues, [], issues.join('\n')); + }); + }); + } +}); + +// ── Theme generation ────────────────────────────────────────────────────────── +const CRITICAL_COLORS = [ + 'editor.background', + 'editor.foreground', + 'foreground', + 'focusBorder', + 'sideBar.background', + 'activityBar.background', + 'statusBar.background', +]; + +type ThemeVariant = { + name: string; + displayName: string; + type: 'light' | 'dark'; + roles: Roles; +}; + +// CVD distinguishability is handled by the gate in cvd.test.ts; here we only +// validate the structure of each generated light/dark variant. +const THEME_VARIANTS: ThemeVariant[] = [ + { + name: 'pierre-dark', + displayName: 'Pierre Dark', + type: 'dark', + roles: rolesDark, + }, + { + name: 'pierre-dark-soft', + displayName: 'Pierre Dark Soft', + type: 'dark', + roles: rolesDarkSoft, + }, + { + name: 'pierre-dark-protanopia-deuteranopia', + displayName: 'Pierre Dark Protanopia & Deuteranopia', + type: 'dark', + roles: rolesProtanDeutanDark, + }, + { + name: 'pierre-dark-tritanopia', + displayName: 'Pierre Dark Tritanopia', + type: 'dark', + roles: rolesTritanopiaDark, + }, + { + name: 'pierre-dark-vibrant', + displayName: 'Pierre Dark Vibrant', + type: 'dark', + roles: convertRolesToP3(rolesDark), + }, + { + name: 'pierre-light', + displayName: 'Pierre Light', + type: 'light', + roles: rolesLight, + }, + { + name: 'pierre-light-soft', + displayName: 'Pierre Light Soft', + type: 'light', + roles: rolesLightSoft, + }, + { + name: 'pierre-light-protanopia-deuteranopia', + displayName: 'Pierre Light Protanopia & Deuteranopia', + type: 'light', + roles: rolesProtanDeutanLight, + }, + { + name: 'pierre-light-tritanopia', + displayName: 'Pierre Light Tritanopia', + type: 'light', + roles: rolesTritanopiaLight, + }, + { + name: 'pierre-light-vibrant', + displayName: 'Pierre Light Vibrant', + type: 'light', + roles: convertRolesToP3(rolesLight), + }, +]; + +describe('theme generation', () => { + for (const variant of THEME_VARIANTS) { + describe(variant.displayName, () => { + const theme = createTheme({ + name: variant.name, + displayName: variant.displayName, + type: variant.type, + roles: variant.roles, + }); + + test('has the required top-level properties', () => { + assert.notEqual(theme.name, '', 'missing theme name'); + assert.notEqual(theme.displayName, '', 'missing theme displayName'); + assert.notEqual(theme.type, '', 'missing theme type'); + assert.ok( + Object.keys(theme.colors).length > 0, + 'missing colors object' + ); + assert.ok(theme.tokenColors.length > 0, 'missing tokenColors array'); + assert.ok( + Object.keys(theme.semanticTokenColors).length > 0, + 'missing semanticTokenColors object' + ); + }); + + test('uses the expected package-safe name and display label', () => { + assert.equal(theme.name, variant.name); + assert.equal(theme.displayName, variant.displayName); + }); + + test(`has type "${variant.type}"`, () => { + assert.equal(theme.type, variant.type); + }); + + test('defines the critical editor colors', () => { + for (const key of CRITICAL_COLORS) { + assert.notEqual( + theme.colors[key], + undefined, + `missing critical color: ${key}` + ); + } + }); + + test('has only valid color values', () => { + // Walk the colors tree: record every color string (for the unique-color + // tally) and flag any malformed #hex / color() value. + const issues: string[] = []; + const collectColorIssues = (obj: unknown, path: string) => { + for (const [key, value] of Object.entries( + obj as Record + )) { + const currentPath = path !== '' ? `${path}.${key}` : key; + if (typeof value === 'string') { + usedColors.add(value); + if ( + (value.startsWith('#') || value.startsWith('color(')) && + !isValidColor(value) + ) { + issues.push(`Invalid color at ${currentPath}: ${value}`); + } + } else if (value !== null && typeof value === 'object') { + collectColorIssues(value, currentPath); + } + } + }; + collectColorIssues(theme.colors, ''); + assert.deepEqual(issues, [], issues.join('\n')); + }); + + test('has no undefined or null colors', () => { + for (const [key, value] of Object.entries(theme.colors)) { + assert.ok( + value !== undefined && value !== null, + `color "${key}" is ${value}` + ); + } + }); + + test('tokenColors is a non-empty array', () => { + assert.ok( + Array.isArray(theme.tokenColors), + 'tokenColors is not an array' + ); + assert.ok(theme.tokenColors.length > 0, 'tokenColors array is empty'); + }); + + test('every tokenColors entry is well-formed', () => { + theme.tokenColors.forEach((token, idx) => { + assert.notEqual( + token.scope, + undefined, + `tokenColors[${idx}] missing scope` + ); + assert.notEqual( + token.settings, + undefined, + `tokenColors[${idx}] missing settings` + ); + if (token.settings.foreground !== undefined) { + usedColors.add(token.settings.foreground); + assert.ok( + isValidColor(token.settings.foreground), + `tokenColors[${idx}] has invalid foreground color: ${token.settings.foreground}` + ); + } + }); + }); + + test('every semanticTokenColors entry is valid', () => { + for (const [key, value] of Object.entries(theme.semanticTokenColors)) { + if (typeof value === 'string') { + usedColors.add(value); + assert.ok( + isValidColor(value), + `semanticTokenColors["${key}"] has invalid color: ${value}` + ); + } else if (typeof value === 'object' && value !== null) { + const foreground = (value as { foreground?: string }).foreground; + if (foreground) { + usedColors.add(foreground); + assert.ok( + isValidColor(foreground), + `semanticTokenColors["${key}"].foreground has invalid color: ${foreground}` + ); + } + } + } + }); + }); + } +}); + +afterAll(() => { + console.log(`Total unique colors used: ${usedColors.size}`); +}); diff --git a/packages/theme/themes/pierre-dark-protanopia-deuteranopia.json b/packages/theme/themes/pierre-dark-protanopia-deuteranopia.json new file mode 100644 index 000000000..75567c511 --- /dev/null +++ b/packages/theme/themes/pierre-dark-protanopia-deuteranopia.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-dark-protanopia-deuteranopia", + "displayName": "Pierre Dark Protanopia & Deuteranopia", + "type": "dark", + "colors": { + "editor.background": "#0a0a0a", + "editor.foreground": "#fafafa", + "foreground": "#fafafa", + "focusBorder": "#009fff", + "selection.background": "#19283c", + "editor.selectionBackground": "#009fff4d", + "editor.lineHighlightBackground": "#19283c8c", + "editorCursor.foreground": "#009fff", + "editorLineNumber.foreground": "#737373", + "editorLineNumber.activeForeground": "#a3a3a3", + "editorIndentGuide.background": "#1d1d1d", + "editorIndentGuide.activeBackground": "#262626", + "diffEditor.insertedTextBackground": "#97c4ff1a", + "diffEditor.deletedTextBackground": "#fe8c2c1a", + "sideBar.background": "#171717", + "sideBar.foreground": "#a3a3a3", + "sideBar.border": "#0a0a0a", + "sideBarTitle.foreground": "#fafafa", + "sideBarSectionHeader.background": "#171717", + "sideBarSectionHeader.foreground": "#a3a3a3", + "sideBarSectionHeader.border": "#0a0a0a", + "activityBar.background": "#171717", + "activityBar.foreground": "#fafafa", + "activityBar.border": "#0a0a0a", + "activityBar.activeBorder": "#009fff", + "activityBarBadge.background": "#009fff", + "activityBarBadge.foreground": "#0a0a0a", + "titleBar.activeBackground": "#171717", + "titleBar.activeForeground": "#fafafa", + "titleBar.inactiveBackground": "#171717", + "titleBar.inactiveForeground": "#737373", + "titleBar.border": "#0a0a0a", + "list.activeSelectionBackground": "#19283c99", + "list.activeSelectionForeground": "#fafafa", + "list.inactiveSelectionBackground": "#19283c73", + "list.hoverBackground": "#19283c59", + "list.focusOutline": "#009fff", + "tab.activeBackground": "#0a0a0a", + "tab.activeForeground": "#fafafa", + "tab.activeBorderTop": "#009fff", + "tab.inactiveBackground": "#171717", + "tab.inactiveForeground": "#737373", + "tab.border": "#0a0a0a", + "editorGroupHeader.tabsBackground": "#171717", + "editorGroupHeader.tabsBorder": "#0a0a0a", + "panel.background": "#171717", + "panel.border": "#0a0a0a", + "panelTitle.activeBorder": "#009fff", + "panelTitle.activeForeground": "#fafafa", + "panelTitle.inactiveForeground": "#737373", + "statusBar.background": "#171717", + "statusBar.foreground": "#a3a3a3", + "statusBar.border": "#0a0a0a", + "statusBar.noFolderBackground": "#171717", + "statusBar.debuggingBackground": "#ffde80", + "statusBar.debuggingForeground": "#0a0a0a", + "statusBarItem.remoteBackground": "#171717", + "statusBarItem.remoteForeground": "#a3a3a3", + "input.background": "#1d1d1d", + "input.border": "#1d1d1d", + "input.foreground": "#fafafa", + "input.placeholderForeground": "#636363", + "dropdown.background": "#1d1d1d", + "dropdown.border": "#1d1d1d", + "dropdown.foreground": "#fafafa", + "button.background": "#009fff", + "button.foreground": "#0a0a0a", + "button.hoverBackground": "#0190e7", + "textLink.foreground": "#009fff", + "textLink.activeForeground": "#009fff", + "notifications.background": "#101010", + "notifications.foreground": "#fafafa", + "notifications.border": "#1d1d1d", + "notificationToast.border": "#1d1d1d", + "notificationCenter.border": "#1d1d1d", + "notificationCenterHeader.background": "#101010", + "notificationCenterHeader.foreground": "#a3a3a3", + "notificationLink.foreground": "#009fff", + "notificationsErrorIcon.foreground": "#fe8c2c", + "notificationsWarningIcon.foreground": "#ffde80", + "notificationsInfoIcon.foreground": "#68cdf2", + "quickInput.background": "#101010", + "quickInput.foreground": "#fafafa", + "quickInputTitle.background": "#101010", + "widget.border": "#1d1d1d", + "gitDecoration.addedResourceForeground": "#97c4ff", + "gitDecoration.conflictingResourceForeground": "#b969f3", + "gitDecoration.modifiedResourceForeground": "#009fff", + "gitDecoration.deletedResourceForeground": "#fe8c2c", + "gitDecoration.untrackedResourceForeground": "#97c4ff", + "gitDecoration.ignoredResourceForeground": "#737373", + "merge.currentHeaderBackground": "#b969f34d", + "merge.currentContentBackground": "#b969f31f", + "merge.incomingHeaderBackground": "#68cdf24d", + "merge.incomingContentBackground": "#68cdf21f", + "editorOverviewRuler.currentContentForeground": "#b969f3", + "editorOverviewRuler.incomingContentForeground": "#68cdf2", + "terminal.titleForeground": "#a3a3a3", + "terminal.titleInactiveForeground": "#737373", + "terminal.background": "#171717", + "terminal.foreground": "#a3a3a3", + "terminal.ansiBlack": "#171717", + "terminal.ansiRed": "#ffa359", + "terminal.ansiGreen": "#69b1ff", + "terminal.ansiYellow": "#ffd452", + "terminal.ansiBlue": "#009fff", + "terminal.ansiMagenta": "#b969f3", + "terminal.ansiCyan": "#68cdf2", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#171717", + "terminal.ansiBrightRed": "#ffba82", + "terminal.ansiBrightGreen": "#97c4ff", + "terminal.ansiBrightYellow": "#ffde80", + "terminal.ansiBrightBlue": "#69b1ff", + "terminal.ansiBrightMagenta": "#ce90f7", + "terminal.ansiBrightCyan": "#96d9f6", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#96d9f6" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#96d9f6" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#ffbc56", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#ba8ffd", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#ffbc56", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#b969f3", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#64d1db" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#b969f3" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#fafafa" + } + } + ], + "semanticTokenColors": { + "comment": "#737373", + "string": "#97c4ff", + "number": "#96d9f6", + "regexp": "#68cdf2", + "keyword": "#b969f3", + "variable": "#ffa359", + "parameter": "#a3a3a3", + "property": "#ffa359", + "function": "#ba8ffd", + "method": "#ba8ffd", + "type": "#e290f0", + "class": "#e290f0", + "namespace": "#ffbc56", + "enumMember": "#08c0ef", + "variable.constant": "#ffcc81", + "variable.defaultLibrary": "#ffbc56", + "decorator": "#69b1ff" + } +} diff --git a/packages/theme/themes/pierre-dark-soft.json b/packages/theme/themes/pierre-dark-soft.json new file mode 100644 index 000000000..f0164754a --- /dev/null +++ b/packages/theme/themes/pierre-dark-soft.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-dark-soft", + "displayName": "Pierre Dark Soft", + "type": "dark", + "colors": { + "editor.background": "#171717", + "editor.foreground": "#d4d4d4", + "foreground": "#d4d4d4", + "focusBorder": "#69b1ff", + "selection.background": "#1f3e5e", + "editor.selectionBackground": "#69b1ff4d", + "editor.lineHighlightBackground": "#1f3e5e8c", + "editorCursor.foreground": "#69b1ff", + "editorLineNumber.foreground": "#636363", + "editorLineNumber.activeForeground": "#8a8a8a", + "editorIndentGuide.background": "#262626", + "editorIndentGuide.activeBackground": "#2c2c2c", + "diffEditor.insertedTextBackground": "#60d1991a", + "diffEditor.deletedTextBackground": "#ff67621a", + "sideBar.background": "#101010", + "sideBar.foreground": "#8a8a8a", + "sideBar.border": "#1d1d1d", + "sideBarTitle.foreground": "#d4d4d4", + "sideBarSectionHeader.background": "#101010", + "sideBarSectionHeader.foreground": "#8a8a8a", + "sideBarSectionHeader.border": "#1d1d1d", + "activityBar.background": "#101010", + "activityBar.foreground": "#d4d4d4", + "activityBar.border": "#1d1d1d", + "activityBar.activeBorder": "#69b1ff", + "activityBarBadge.background": "#69b1ff", + "activityBarBadge.foreground": "#171717", + "titleBar.activeBackground": "#101010", + "titleBar.activeForeground": "#d4d4d4", + "titleBar.inactiveBackground": "#101010", + "titleBar.inactiveForeground": "#636363", + "titleBar.border": "#1d1d1d", + "list.activeSelectionBackground": "#1f3e5e99", + "list.activeSelectionForeground": "#d4d4d4", + "list.inactiveSelectionBackground": "#1f3e5e73", + "list.hoverBackground": "#1f3e5e59", + "list.focusOutline": "#69b1ff", + "tab.activeBackground": "#171717", + "tab.activeForeground": "#d4d4d4", + "tab.activeBorderTop": "#69b1ff", + "tab.inactiveBackground": "#101010", + "tab.inactiveForeground": "#636363", + "tab.border": "#1d1d1d", + "editorGroupHeader.tabsBackground": "#101010", + "editorGroupHeader.tabsBorder": "#1d1d1d", + "panel.background": "#101010", + "panel.border": "#1d1d1d", + "panelTitle.activeBorder": "#69b1ff", + "panelTitle.activeForeground": "#d4d4d4", + "panelTitle.inactiveForeground": "#636363", + "statusBar.background": "#101010", + "statusBar.foreground": "#8a8a8a", + "statusBar.border": "#1d1d1d", + "statusBar.noFolderBackground": "#101010", + "statusBar.debuggingBackground": "#ffd452", + "statusBar.debuggingForeground": "#171717", + "statusBarItem.remoteBackground": "#101010", + "statusBarItem.remoteForeground": "#8a8a8a", + "input.background": "#262626", + "input.border": "#2c2c2c", + "input.foreground": "#d4d4d4", + "input.placeholderForeground": "#525252", + "dropdown.background": "#262626", + "dropdown.border": "#2c2c2c", + "dropdown.foreground": "#d4d4d4", + "button.background": "#69b1ff", + "button.foreground": "#171717", + "button.hoverBackground": "#61a2e8", + "textLink.foreground": "#69b1ff", + "textLink.activeForeground": "#69b1ff", + "notifications.background": "#1d1d1d", + "notifications.foreground": "#d4d4d4", + "notifications.border": "#262626", + "notificationToast.border": "#262626", + "notificationCenter.border": "#262626", + "notificationCenterHeader.background": "#1d1d1d", + "notificationCenterHeader.foreground": "#8a8a8a", + "notificationLink.foreground": "#69b1ff", + "notificationsErrorIcon.foreground": "#ff6762", + "notificationsWarningIcon.foreground": "#ffd452", + "notificationsInfoIcon.foreground": "#68cdf2", + "quickInput.background": "#1d1d1d", + "quickInput.foreground": "#d4d4d4", + "quickInputTitle.background": "#1d1d1d", + "widget.border": "#262626", + "gitDecoration.addedResourceForeground": "#60d199", + "gitDecoration.conflictingResourceForeground": "#9d6afb", + "gitDecoration.modifiedResourceForeground": "#69b1ff", + "gitDecoration.deletedResourceForeground": "#ff6762", + "gitDecoration.untrackedResourceForeground": "#60d199", + "gitDecoration.ignoredResourceForeground": "#636363", + "merge.currentHeaderBackground": "#9d6afb4d", + "merge.currentContentBackground": "#9d6afb1f", + "merge.incomingHeaderBackground": "#68cdf24d", + "merge.incomingContentBackground": "#68cdf21f", + "editorOverviewRuler.currentContentForeground": "#9d6afb", + "editorOverviewRuler.incomingContentForeground": "#68cdf2", + "terminal.titleForeground": "#8a8a8a", + "terminal.titleInactiveForeground": "#636363", + "terminal.background": "#101010", + "terminal.foreground": "#8a8a8a", + "terminal.ansiBlack": "#171717", + "terminal.ansiRed": "#ff2e3f", + "terminal.ansiGreen": "#0dbe4e", + "terminal.ansiYellow": "#ffca00", + "terminal.ansiBlue": "#009fff", + "terminal.ansiMagenta": "#e130ac", + "terminal.ansiCyan": "#08c0ef", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#171717", + "terminal.ansiBrightRed": "#ff2e3f", + "terminal.ansiBrightGreen": "#86c427", + "terminal.ansiBrightYellow": "#ffca00", + "terminal.ansiBrightBlue": "#009fff", + "terminal.ansiBrightMagenta": "#e130ac", + "terminal.ansiBrightCyan": "#08c0ef", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#96d9f6" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#96d9f6" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#ffba82" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#e290f0" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#d4d4d4" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#d4d4d4" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#8eddb2", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#ba8ffd", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#8eddb2", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#ff91a8", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#ffbc56" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#8fe0d0" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#8cda94" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#ffa685" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#ba8ffd" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#ffde80" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#d4d4d4" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#ff91a8" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#d4d4d4" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#d4d4d4" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#d4d4d4" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#d4d4d4" + } + } + ], + "semanticTokenColors": { + "comment": "#636363", + "string": "#8cda94", + "number": "#96d9f6", + "regexp": "#92dde4", + "keyword": "#ff91a8", + "variable": "#ffba82", + "parameter": "#8a8a8a", + "property": "#ffba82", + "function": "#ba8ffd", + "method": "#ba8ffd", + "type": "#e290f0", + "class": "#e290f0", + "namespace": "#ffbc56", + "enumMember": "#68cdf2", + "variable.constant": "#ffde80", + "variable.defaultLibrary": "#ffbc56", + "decorator": "#97c4ff" + } +} diff --git a/packages/theme/themes/pierre-dark-tritanopia.json b/packages/theme/themes/pierre-dark-tritanopia.json new file mode 100644 index 000000000..78aa4190c --- /dev/null +++ b/packages/theme/themes/pierre-dark-tritanopia.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-dark-tritanopia", + "displayName": "Pierre Dark Tritanopia", + "type": "dark", + "colors": { + "editor.background": "#0a0a0a", + "editor.foreground": "#fafafa", + "foreground": "#fafafa", + "focusBorder": "#009fff", + "selection.background": "#19283c", + "editor.selectionBackground": "#009fff4d", + "editor.lineHighlightBackground": "#19283c8c", + "editorCursor.foreground": "#009fff", + "editorLineNumber.foreground": "#737373", + "editorLineNumber.activeForeground": "#a3a3a3", + "editorIndentGuide.background": "#1d1d1d", + "editorIndentGuide.activeBackground": "#262626", + "diffEditor.insertedTextBackground": "#92dde41a", + "diffEditor.deletedTextBackground": "#ff855e1a", + "sideBar.background": "#171717", + "sideBar.foreground": "#a3a3a3", + "sideBar.border": "#0a0a0a", + "sideBarTitle.foreground": "#fafafa", + "sideBarSectionHeader.background": "#171717", + "sideBarSectionHeader.foreground": "#a3a3a3", + "sideBarSectionHeader.border": "#0a0a0a", + "activityBar.background": "#171717", + "activityBar.foreground": "#fafafa", + "activityBar.border": "#0a0a0a", + "activityBar.activeBorder": "#009fff", + "activityBarBadge.background": "#009fff", + "activityBarBadge.foreground": "#0a0a0a", + "titleBar.activeBackground": "#171717", + "titleBar.activeForeground": "#fafafa", + "titleBar.inactiveBackground": "#171717", + "titleBar.inactiveForeground": "#737373", + "titleBar.border": "#0a0a0a", + "list.activeSelectionBackground": "#19283c99", + "list.activeSelectionForeground": "#fafafa", + "list.inactiveSelectionBackground": "#19283c73", + "list.hoverBackground": "#19283c59", + "list.focusOutline": "#009fff", + "tab.activeBackground": "#0a0a0a", + "tab.activeForeground": "#fafafa", + "tab.activeBorderTop": "#009fff", + "tab.inactiveBackground": "#171717", + "tab.inactiveForeground": "#737373", + "tab.border": "#0a0a0a", + "editorGroupHeader.tabsBackground": "#171717", + "editorGroupHeader.tabsBorder": "#0a0a0a", + "panel.background": "#171717", + "panel.border": "#0a0a0a", + "panelTitle.activeBorder": "#009fff", + "panelTitle.activeForeground": "#fafafa", + "panelTitle.inactiveForeground": "#737373", + "statusBar.background": "#171717", + "statusBar.foreground": "#a3a3a3", + "statusBar.border": "#0a0a0a", + "statusBar.noFolderBackground": "#171717", + "statusBar.debuggingBackground": "#ffbc56", + "statusBar.debuggingForeground": "#0a0a0a", + "statusBarItem.remoteBackground": "#171717", + "statusBarItem.remoteForeground": "#a3a3a3", + "input.background": "#1d1d1d", + "input.border": "#1d1d1d", + "input.foreground": "#fafafa", + "input.placeholderForeground": "#636363", + "dropdown.background": "#1d1d1d", + "dropdown.border": "#1d1d1d", + "dropdown.foreground": "#fafafa", + "button.background": "#009fff", + "button.foreground": "#0a0a0a", + "button.hoverBackground": "#0190e7", + "textLink.foreground": "#009fff", + "textLink.activeForeground": "#009fff", + "notifications.background": "#101010", + "notifications.foreground": "#fafafa", + "notifications.border": "#1d1d1d", + "notificationToast.border": "#1d1d1d", + "notificationCenter.border": "#1d1d1d", + "notificationCenterHeader.background": "#101010", + "notificationCenterHeader.foreground": "#a3a3a3", + "notificationLink.foreground": "#009fff", + "notificationsErrorIcon.foreground": "#ff855e", + "notificationsWarningIcon.foreground": "#ffbc56", + "notificationsInfoIcon.foreground": "#69b1ff", + "quickInput.background": "#101010", + "quickInput.foreground": "#fafafa", + "quickInputTitle.background": "#101010", + "widget.border": "#1d1d1d", + "gitDecoration.addedResourceForeground": "#92dde4", + "gitDecoration.conflictingResourceForeground": "#ea68bc", + "gitDecoration.modifiedResourceForeground": "#009fff", + "gitDecoration.deletedResourceForeground": "#ff855e", + "gitDecoration.untrackedResourceForeground": "#92dde4", + "gitDecoration.ignoredResourceForeground": "#737373", + "merge.currentHeaderBackground": "#ea68bc4d", + "merge.currentContentBackground": "#ea68bc1f", + "merge.incomingHeaderBackground": "#69b1ff4d", + "merge.incomingContentBackground": "#69b1ff1f", + "editorOverviewRuler.currentContentForeground": "#ea68bc", + "editorOverviewRuler.incomingContentForeground": "#69b1ff", + "terminal.titleForeground": "#a3a3a3", + "terminal.titleInactiveForeground": "#737373", + "terminal.background": "#171717", + "terminal.foreground": "#a3a3a3", + "terminal.ansiBlack": "#171717", + "terminal.ansiRed": "#ff855e", + "terminal.ansiGreen": "#64d1db", + "terminal.ansiYellow": "#ffbc56", + "terminal.ansiBlue": "#69b1ff", + "terminal.ansiMagenta": "#ea68bc", + "terminal.ansiCyan": "#92dde4", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#171717", + "terminal.ansiBrightRed": "#ffa685", + "terminal.ansiBrightGreen": "#92dde4", + "terminal.ansiBrightYellow": "#ffcc81", + "terminal.ansiBrightBlue": "#97c4ff", + "terminal.ansiBrightMagenta": "#f191cc", + "terminal.ansiBrightCyan": "#92dde4", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#ea68bc" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#ea68bc" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#ea68bc" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#ea68bc" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#ea68bc" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#ea68bc" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#ea68bc" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#64d1db", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#97c4ff", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#64d1db", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#d568ea", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#64d1db" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#64d1db" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#92dde4" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#97c4ff" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#ffcc81" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#fafafa" + } + } + ], + "semanticTokenColors": { + "comment": "#737373", + "string": "#92dde4", + "number": "#69b1ff", + "regexp": "#64d1db", + "keyword": "#d568ea", + "variable": "#ff855e", + "parameter": "#a3a3a3", + "property": "#ff855e", + "function": "#97c4ff", + "method": "#97c4ff", + "type": "#ea68bc", + "class": "#ea68bc", + "namespace": "#ff855e", + "enumMember": "#00c5d2", + "variable.constant": "#ffcc81", + "variable.defaultLibrary": "#ff855e", + "decorator": "#69b1ff" + } +} diff --git a/packages/theme/themes/pierre-dark-vibrant.json b/packages/theme/themes/pierre-dark-vibrant.json new file mode 100644 index 000000000..4f9131a83 --- /dev/null +++ b/packages/theme/themes/pierre-dark-vibrant.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-dark-vibrant", + "displayName": "Pierre Dark Vibrant", + "type": "dark", + "colors": { + "editor.background": "color(display-p3 0.039216 0.039216 0.039216)", + "editor.foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "focusBorder": "color(display-p3 0.308664 0.645271 1.000000)", + "selection.background": "color(display-p3 0.098734 0.152326 0.240886)", + "editor.selectionBackground": "color(display-p3 0.308664 0.645271 1.000000 / 0.300000)", + "editor.lineHighlightBackground": "color(display-p3 0.098734 0.152326 0.240886 / 0.550000)", + "editorCursor.foreground": "color(display-p3 0.308664 0.645271 1.000000)", + "editorLineNumber.foreground": "color(display-p3 0.450980 0.450980 0.450980)", + "editorLineNumber.activeForeground": "color(display-p3 0.639216 0.639216 0.639216)", + "editorIndentGuide.background": "color(display-p3 0.113725 0.113725 0.113725)", + "editorIndentGuide.activeBackground": "color(display-p3 0.149020 0.149020 0.149020)", + "diffEditor.insertedTextBackground": "color(display-p3 0.304148 0.801790 0.517191 / 0.100000)", + "diffEditor.deletedTextBackground": "color(display-p3 1.000000 0.250216 0.262337 / 0.100000)", + "sideBar.background": "color(display-p3 0.090196 0.090196 0.090196)", + "sideBar.foreground": "color(display-p3 0.639216 0.639216 0.639216)", + "sideBar.border": "color(display-p3 0.039216 0.039216 0.039216)", + "sideBarTitle.foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "sideBarSectionHeader.background": "color(display-p3 0.090196 0.090196 0.090196)", + "sideBarSectionHeader.foreground": "color(display-p3 0.639216 0.639216 0.639216)", + "sideBarSectionHeader.border": "color(display-p3 0.039216 0.039216 0.039216)", + "activityBar.background": "color(display-p3 0.090196 0.090196 0.090196)", + "activityBar.foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "activityBar.border": "color(display-p3 0.039216 0.039216 0.039216)", + "activityBar.activeBorder": "color(display-p3 0.308664 0.645271 1.000000)", + "activityBarBadge.background": "color(display-p3 0.308664 0.645271 1.000000)", + "activityBarBadge.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "titleBar.activeBackground": "color(display-p3 0.090196 0.090196 0.090196)", + "titleBar.activeForeground": "color(display-p3 0.980392 0.980392 0.980392)", + "titleBar.inactiveBackground": "color(display-p3 0.090196 0.090196 0.090196)", + "titleBar.inactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "titleBar.border": "color(display-p3 0.039216 0.039216 0.039216)", + "list.activeSelectionBackground": "color(display-p3 0.098734 0.152326 0.240886 / 0.600000)", + "list.activeSelectionForeground": "color(display-p3 0.980392 0.980392 0.980392)", + "list.inactiveSelectionBackground": "color(display-p3 0.098734 0.152326 0.240886 / 0.450000)", + "list.hoverBackground": "color(display-p3 0.098734 0.152326 0.240886 / 0.350000)", + "list.focusOutline": "color(display-p3 0.308664 0.645271 1.000000)", + "tab.activeBackground": "color(display-p3 0.039216 0.039216 0.039216)", + "tab.activeForeground": "color(display-p3 0.980392 0.980392 0.980392)", + "tab.activeBorderTop": "color(display-p3 0.308664 0.645271 1.000000)", + "tab.inactiveBackground": "color(display-p3 0.090196 0.090196 0.090196)", + "tab.inactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "tab.border": "color(display-p3 0.039216 0.039216 0.039216)", + "editorGroupHeader.tabsBackground": "color(display-p3 0.090196 0.090196 0.090196)", + "editorGroupHeader.tabsBorder": "color(display-p3 0.039216 0.039216 0.039216)", + "panel.background": "color(display-p3 0.090196 0.090196 0.090196)", + "panel.border": "color(display-p3 0.039216 0.039216 0.039216)", + "panelTitle.activeBorder": "color(display-p3 0.308664 0.645271 1.000000)", + "panelTitle.activeForeground": "color(display-p3 0.980392 0.980392 0.980392)", + "panelTitle.inactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "statusBar.background": "color(display-p3 0.090196 0.090196 0.090196)", + "statusBar.foreground": "color(display-p3 0.639216 0.639216 0.639216)", + "statusBar.border": "color(display-p3 0.039216 0.039216 0.039216)", + "statusBar.noFolderBackground": "color(display-p3 0.090196 0.090196 0.090196)", + "statusBar.debuggingBackground": "color(display-p3 1.000000 0.832068 0.300621)", + "statusBar.debuggingForeground": "color(display-p3 0.039216 0.039216 0.039216)", + "statusBarItem.remoteBackground": "color(display-p3 0.090196 0.090196 0.090196)", + "statusBarItem.remoteForeground": "color(display-p3 0.639216 0.639216 0.639216)", + "input.background": "color(display-p3 0.113725 0.113725 0.113725)", + "input.border": "color(display-p3 0.113725 0.113725 0.113725)", + "input.foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "input.placeholderForeground": "color(display-p3 0.388235 0.388235 0.388235)", + "dropdown.background": "color(display-p3 0.113725 0.113725 0.113725)", + "dropdown.border": "color(display-p3 0.113725 0.113725 0.113725)", + "dropdown.foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "button.background": "color(display-p3 0.308664 0.645271 1.000000)", + "button.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "button.hoverBackground": "color(display-p3 0.282353 0.584314 0.905882)", + "textLink.foreground": "color(display-p3 0.308664 0.645271 1.000000)", + "textLink.activeForeground": "color(display-p3 0.308664 0.645271 1.000000)", + "notifications.background": "color(display-p3 0.062745 0.062745 0.062745)", + "notifications.foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "notifications.border": "color(display-p3 0.113725 0.113725 0.113725)", + "notificationToast.border": "color(display-p3 0.113725 0.113725 0.113725)", + "notificationCenter.border": "color(display-p3 0.113725 0.113725 0.113725)", + "notificationCenterHeader.background": "color(display-p3 0.062745 0.062745 0.062745)", + "notificationCenterHeader.foreground": "color(display-p3 0.639216 0.639216 0.639216)", + "notificationLink.foreground": "color(display-p3 0.308664 0.645271 1.000000)", + "notificationsErrorIcon.foreground": "color(display-p3 1.000000 0.250216 0.262337)", + "notificationsWarningIcon.foreground": "color(display-p3 1.000000 0.832068 0.300621)", + "notificationsInfoIcon.foreground": "color(display-p3 0.327292 0.790977 0.995660)", + "quickInput.background": "color(display-p3 0.062745 0.062745 0.062745)", + "quickInput.foreground": "color(display-p3 0.980392 0.980392 0.980392)", + "quickInputTitle.background": "color(display-p3 0.062745 0.062745 0.062745)", + "widget.border": "color(display-p3 0.113725 0.113725 0.113725)", + "gitDecoration.addedResourceForeground": "color(display-p3 0.304148 0.801790 0.517191)", + "gitDecoration.conflictingResourceForeground": "color(display-p3 0.467832 0.270883 1.000000)", + "gitDecoration.modifiedResourceForeground": "color(display-p3 0.308664 0.645271 1.000000)", + "gitDecoration.deletedResourceForeground": "color(display-p3 1.000000 0.250216 0.262337)", + "gitDecoration.untrackedResourceForeground": "color(display-p3 0.304148 0.801790 0.517191)", + "gitDecoration.ignoredResourceForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "merge.currentHeaderBackground": "color(display-p3 0.467832 0.270883 1.000000 / 0.300000)", + "merge.currentContentBackground": "color(display-p3 0.467832 0.270883 1.000000 / 0.120000)", + "merge.incomingHeaderBackground": "color(display-p3 0.327292 0.790977 0.995660 / 0.300000)", + "merge.incomingContentBackground": "color(display-p3 0.327292 0.790977 0.995660 / 0.120000)", + "editorOverviewRuler.currentContentForeground": "color(display-p3 0.467832 0.270883 1.000000)", + "editorOverviewRuler.incomingContentForeground": "color(display-p3 0.327292 0.790977 0.995660)", + "terminal.titleForeground": "color(display-p3 0.639216 0.639216 0.639216)", + "terminal.titleInactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "terminal.background": "color(display-p3 0.090196 0.090196 0.090196)", + "terminal.foreground": "color(display-p3 0.639216 0.639216 0.639216)", + "terminal.ansiBlack": "color(display-p3 0.090196 0.090196 0.090196)", + "terminal.ansiRed": "color(display-p3 1.000000 0.250216 0.262337)", + "terminal.ansiGreen": "color(display-p3 0.298067 0.776115 0.322484)", + "terminal.ansiYellow": "color(display-p3 1.000000 0.832068 0.300621)", + "terminal.ansiBlue": "color(display-p3 0.308664 0.645271 1.000000)", + "terminal.ansiMagenta": "color(display-p3 0.885558 0.236588 0.705659)", + "terminal.ansiCyan": "color(display-p3 0.327292 0.790977 0.995660)", + "terminal.ansiWhite": "color(display-p3 0.737255 0.737255 0.737255)", + "terminal.ansiBrightBlack": "color(display-p3 0.090196 0.090196 0.090196)", + "terminal.ansiBrightRed": "color(display-p3 1.000000 0.250216 0.262337)", + "terminal.ansiBrightGreen": "color(display-p3 0.613906 0.826741 0.264677)", + "terminal.ansiBrightYellow": "color(display-p3 1.000000 0.832068 0.300621)", + "terminal.ansiBrightBlue": "color(display-p3 0.308664 0.645271 1.000000)", + "terminal.ansiBrightMagenta": "color(display-p3 0.885558 0.236588 0.705659)", + "terminal.ansiBrightCyan": "color(display-p3 0.327292 0.790977 0.995660)", + "terminal.ansiBrightWhite": "color(display-p3 0.737255 0.737255 0.737255)" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "color(display-p3 0.452682 0.814110 0.989434)" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "color(display-p3 0.452682 0.814110 0.989434)" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "color(display-p3 0.639216 0.639216 0.639216)" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "color(display-p3 0.639216 0.639216 0.639216)" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "color(display-p3 0.639216 0.639216 0.639216)" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "color(display-p3 0.829375 0.434619 0.954315)" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "color(display-p3 0.829375 0.434619 0.954315)" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "color(display-p3 0.829375 0.434619 0.954315)" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "color(display-p3 0.829375 0.434619 0.954315)" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "color(display-p3 0.829375 0.434619 0.954315)" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "color(display-p3 1.000000 0.688063 0.418777)" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "color(display-p3 0.829375 0.434619 0.954315)" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "color(display-p3 0.829375 0.434619 0.954315)" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "color(display-p3 0.453315 0.683106 1.000000)" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "color(display-p3 0.453315 0.683106 1.000000)" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "color(display-p3 0.453315 0.683106 1.000000)" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "color(display-p3 0.980392 0.980392 0.980392)" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "color(display-p3 0.980392 0.980392 0.980392)" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "color(display-p3 0.460672 0.843934 0.608755)", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "color(display-p3 0.460672 0.843934 0.608755)", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "color(display-p3 1.000000 0.719280 0.270071)" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "color(display-p3 0.520590 0.857139 0.902107)" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "color(display-p3 0.466798 0.860904 0.775090)" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "color(display-p3 0.451324 0.823458 0.446819)" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "color(display-p3 1.000000 0.566977 0.409224)" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "color(display-p3 0.615613 0.445256 1.000000)" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "color(display-p3 1.000000 0.868456 0.454295)" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "color(display-p3 0.980392 0.980392 0.980392)" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "color(display-p3 0.994741 0.445201 0.573499)" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "color(display-p3 0.980392 0.980392 0.980392)" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "color(display-p3 0.980392 0.980392 0.980392)" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "color(display-p3 0.980392 0.980392 0.980392)" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "color(display-p3 0.980392 0.980392 0.980392)" + } + } + ], + "semanticTokenColors": { + "comment": "color(display-p3 0.450980 0.450980 0.450980)", + "string": "color(display-p3 0.451324 0.823458 0.446819)", + "number": "color(display-p3 0.452682 0.814110 0.989434)", + "regexp": "color(display-p3 0.520590 0.857139 0.902107)", + "keyword": "color(display-p3 0.994741 0.445201 0.573499)", + "variable": "color(display-p3 1.000000 0.688063 0.418777)", + "parameter": "color(display-p3 0.639216 0.639216 0.639216)", + "property": "color(display-p3 1.000000 0.688063 0.418777)", + "function": "color(display-p3 0.615613 0.445256 1.000000)", + "method": "color(display-p3 0.615613 0.445256 1.000000)", + "type": "color(display-p3 0.829375 0.434619 0.954315)", + "class": "color(display-p3 0.829375 0.434619 0.954315)", + "namespace": "color(display-p3 1.000000 0.719280 0.270071)", + "enumMember": "color(display-p3 0.327292 0.790977 0.995660)", + "variable.constant": "color(display-p3 1.000000 0.868456 0.454295)", + "variable.defaultLibrary": "color(display-p3 1.000000 0.719280 0.270071)", + "decorator": "color(display-p3 0.453315 0.683106 1.000000)" + } +} diff --git a/packages/theme/themes/pierre-dark.json b/packages/theme/themes/pierre-dark.json new file mode 100644 index 000000000..eaf91f9bf --- /dev/null +++ b/packages/theme/themes/pierre-dark.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-dark", + "displayName": "Pierre Dark", + "type": "dark", + "colors": { + "editor.background": "#0a0a0a", + "editor.foreground": "#fafafa", + "foreground": "#fafafa", + "focusBorder": "#009fff", + "selection.background": "#19283c", + "editor.selectionBackground": "#009fff4d", + "editor.lineHighlightBackground": "#19283c8c", + "editorCursor.foreground": "#009fff", + "editorLineNumber.foreground": "#737373", + "editorLineNumber.activeForeground": "#a3a3a3", + "editorIndentGuide.background": "#1d1d1d", + "editorIndentGuide.activeBackground": "#262626", + "diffEditor.insertedTextBackground": "#07c4801a", + "diffEditor.deletedTextBackground": "#ff2e3f1a", + "sideBar.background": "#171717", + "sideBar.foreground": "#a3a3a3", + "sideBar.border": "#0a0a0a", + "sideBarTitle.foreground": "#fafafa", + "sideBarSectionHeader.background": "#171717", + "sideBarSectionHeader.foreground": "#a3a3a3", + "sideBarSectionHeader.border": "#0a0a0a", + "activityBar.background": "#171717", + "activityBar.foreground": "#fafafa", + "activityBar.border": "#0a0a0a", + "activityBar.activeBorder": "#009fff", + "activityBarBadge.background": "#009fff", + "activityBarBadge.foreground": "#0a0a0a", + "titleBar.activeBackground": "#171717", + "titleBar.activeForeground": "#fafafa", + "titleBar.inactiveBackground": "#171717", + "titleBar.inactiveForeground": "#737373", + "titleBar.border": "#0a0a0a", + "list.activeSelectionBackground": "#19283c99", + "list.activeSelectionForeground": "#fafafa", + "list.inactiveSelectionBackground": "#19283c73", + "list.hoverBackground": "#19283c59", + "list.focusOutline": "#009fff", + "tab.activeBackground": "#0a0a0a", + "tab.activeForeground": "#fafafa", + "tab.activeBorderTop": "#009fff", + "tab.inactiveBackground": "#171717", + "tab.inactiveForeground": "#737373", + "tab.border": "#0a0a0a", + "editorGroupHeader.tabsBackground": "#171717", + "editorGroupHeader.tabsBorder": "#0a0a0a", + "panel.background": "#171717", + "panel.border": "#0a0a0a", + "panelTitle.activeBorder": "#009fff", + "panelTitle.activeForeground": "#fafafa", + "panelTitle.inactiveForeground": "#737373", + "statusBar.background": "#171717", + "statusBar.foreground": "#a3a3a3", + "statusBar.border": "#0a0a0a", + "statusBar.noFolderBackground": "#171717", + "statusBar.debuggingBackground": "#ffca00", + "statusBar.debuggingForeground": "#0a0a0a", + "statusBarItem.remoteBackground": "#171717", + "statusBarItem.remoteForeground": "#a3a3a3", + "input.background": "#1d1d1d", + "input.border": "#1d1d1d", + "input.foreground": "#fafafa", + "input.placeholderForeground": "#636363", + "dropdown.background": "#1d1d1d", + "dropdown.border": "#1d1d1d", + "dropdown.foreground": "#fafafa", + "button.background": "#009fff", + "button.foreground": "#0a0a0a", + "button.hoverBackground": "#0190e7", + "textLink.foreground": "#009fff", + "textLink.activeForeground": "#009fff", + "notifications.background": "#101010", + "notifications.foreground": "#fafafa", + "notifications.border": "#1d1d1d", + "notificationToast.border": "#1d1d1d", + "notificationCenter.border": "#1d1d1d", + "notificationCenterHeader.background": "#101010", + "notificationCenterHeader.foreground": "#a3a3a3", + "notificationLink.foreground": "#009fff", + "notificationsErrorIcon.foreground": "#ff2e3f", + "notificationsWarningIcon.foreground": "#ffca00", + "notificationsInfoIcon.foreground": "#08c0ef", + "quickInput.background": "#101010", + "quickInput.foreground": "#fafafa", + "quickInputTitle.background": "#101010", + "widget.border": "#1d1d1d", + "gitDecoration.addedResourceForeground": "#07c480", + "gitDecoration.conflictingResourceForeground": "#7b43f8", + "gitDecoration.modifiedResourceForeground": "#009fff", + "gitDecoration.deletedResourceForeground": "#ff2e3f", + "gitDecoration.untrackedResourceForeground": "#07c480", + "gitDecoration.ignoredResourceForeground": "#737373", + "merge.currentHeaderBackground": "#7b43f84d", + "merge.currentContentBackground": "#7b43f81f", + "merge.incomingHeaderBackground": "#08c0ef4d", + "merge.incomingContentBackground": "#08c0ef1f", + "editorOverviewRuler.currentContentForeground": "#7b43f8", + "editorOverviewRuler.incomingContentForeground": "#08c0ef", + "terminal.titleForeground": "#a3a3a3", + "terminal.titleInactiveForeground": "#737373", + "terminal.background": "#171717", + "terminal.foreground": "#a3a3a3", + "terminal.ansiBlack": "#171717", + "terminal.ansiRed": "#ff2e3f", + "terminal.ansiGreen": "#0dbe4e", + "terminal.ansiYellow": "#ffca00", + "terminal.ansiBlue": "#009fff", + "terminal.ansiMagenta": "#e130ac", + "terminal.ansiCyan": "#08c0ef", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#171717", + "terminal.ansiBrightRed": "#ff2e3f", + "terminal.ansiBrightGreen": "#86c427", + "terminal.ansiBrightYellow": "#ffca00", + "terminal.ansiBrightBlue": "#009fff", + "terminal.ansiBrightMagenta": "#e130ac", + "terminal.ansiBrightCyan": "#08c0ef", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#a3a3a3" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#ffa359" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#60d199", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#9d6afb", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#60d199", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#ff678d", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#64d1db" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#61d5c0" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#5ecc71" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#ff855e" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#ffd452" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#fafafa" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#fafafa" + } + } + ], + "semanticTokenColors": { + "comment": "#737373", + "string": "#5ecc71", + "number": "#68cdf2", + "regexp": "#64d1db", + "keyword": "#ff678d", + "variable": "#ffa359", + "parameter": "#a3a3a3", + "property": "#ffa359", + "function": "#9d6afb", + "method": "#9d6afb", + "type": "#d568ea", + "class": "#d568ea", + "namespace": "#ffab16", + "enumMember": "#08c0ef", + "variable.constant": "#ffd452", + "variable.defaultLibrary": "#ffab16", + "decorator": "#69b1ff" + } +} diff --git a/packages/theme/themes/pierre-light-protanopia-deuteranopia.json b/packages/theme/themes/pierre-light-protanopia-deuteranopia.json new file mode 100644 index 000000000..5d702d71b --- /dev/null +++ b/packages/theme/themes/pierre-light-protanopia-deuteranopia.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-light-protanopia-deuteranopia", + "displayName": "Pierre Light Protanopia & Deuteranopia", + "type": "light", + "colors": { + "editor.background": "#ffffff", + "editor.foreground": "#0a0a0a", + "foreground": "#0a0a0a", + "focusBorder": "#009fff", + "selection.background": "#dfebff", + "editor.selectionBackground": "#009fff2e", + "editor.lineHighlightBackground": "#dfebff8c", + "editorCursor.foreground": "#009fff", + "editorLineNumber.foreground": "#737373", + "editorLineNumber.activeForeground": "#525252", + "editorIndentGuide.background": "#e5e5e5", + "editorIndentGuide.activeBackground": "#d4d4d4", + "diffEditor.insertedTextBackground": "#216cab33", + "diffEditor.deletedTextBackground": "#ac602333", + "sideBar.background": "#f5f5f5", + "sideBar.foreground": "#525252", + "sideBar.border": "#e5e5e5", + "sideBarTitle.foreground": "#0a0a0a", + "sideBarSectionHeader.background": "#f5f5f5", + "sideBarSectionHeader.foreground": "#525252", + "sideBarSectionHeader.border": "#e5e5e5", + "activityBar.background": "#f5f5f5", + "activityBar.foreground": "#0a0a0a", + "activityBar.border": "#e5e5e5", + "activityBar.activeBorder": "#009fff", + "activityBarBadge.background": "#009fff", + "activityBarBadge.foreground": "#ffffff", + "titleBar.activeBackground": "#f5f5f5", + "titleBar.activeForeground": "#0a0a0a", + "titleBar.inactiveBackground": "#f5f5f5", + "titleBar.inactiveForeground": "#737373", + "titleBar.border": "#e5e5e5", + "list.activeSelectionBackground": "#dfebffcc", + "list.activeSelectionForeground": "#0a0a0a", + "list.inactiveSelectionBackground": "#dfebff73", + "list.hoverBackground": "#dfebff59", + "list.focusOutline": "#009fff", + "tab.activeBackground": "#ffffff", + "tab.activeForeground": "#0a0a0a", + "tab.activeBorderTop": "#009fff", + "tab.inactiveBackground": "#f5f5f5", + "tab.inactiveForeground": "#737373", + "tab.border": "#e5e5e5", + "editorGroupHeader.tabsBackground": "#f5f5f5", + "editorGroupHeader.tabsBorder": "#e5e5e5", + "panel.background": "#f5f5f5", + "panel.border": "#e5e5e5", + "panelTitle.activeBorder": "#009fff", + "panelTitle.activeForeground": "#0a0a0a", + "panelTitle.inactiveForeground": "#737373", + "statusBar.background": "#f5f5f5", + "statusBar.foreground": "#525252", + "statusBar.border": "#e5e5e5", + "statusBar.noFolderBackground": "#f5f5f5", + "statusBar.debuggingBackground": "#ffca00", + "statusBar.debuggingForeground": "#ffffff", + "statusBarItem.remoteBackground": "#f5f5f5", + "statusBarItem.remoteForeground": "#525252", + "input.background": "#ededed", + "input.border": "#d4d4d4", + "input.foreground": "#0a0a0a", + "input.placeholderForeground": "#8a8a8a", + "dropdown.background": "#ededed", + "dropdown.border": "#d4d4d4", + "dropdown.foreground": "#0a0a0a", + "button.background": "#009fff", + "button.foreground": "#ffffff", + "button.hoverBackground": "#1aa9ff", + "textLink.foreground": "#009fff", + "textLink.activeForeground": "#009fff", + "notifications.background": "#f7f7f7", + "notifications.foreground": "#0a0a0a", + "notifications.border": "#e5e5e5", + "notificationToast.border": "#e5e5e5", + "notificationCenter.border": "#e5e5e5", + "notificationCenterHeader.background": "#f7f7f7", + "notificationCenterHeader.foreground": "#525252", + "notificationLink.foreground": "#009fff", + "notificationsErrorIcon.foreground": "#ac6023", + "notificationsWarningIcon.foreground": "#ffca00", + "notificationsInfoIcon.foreground": "#2182a1", + "quickInput.background": "#f7f7f7", + "quickInput.foreground": "#0a0a0a", + "quickInputTitle.background": "#f7f7f7", + "widget.border": "#e5e5e5", + "gitDecoration.addedResourceForeground": "#216cab", + "gitDecoration.conflictingResourceForeground": "#58287c", + "gitDecoration.modifiedResourceForeground": "#009fff", + "gitDecoration.deletedResourceForeground": "#ac6023", + "gitDecoration.untrackedResourceForeground": "#216cab", + "gitDecoration.ignoredResourceForeground": "#737373", + "merge.currentHeaderBackground": "#58287c33", + "merge.currentContentBackground": "#58287c14", + "merge.incomingHeaderBackground": "#2182a133", + "merge.incomingContentBackground": "#2182a114", + "editorOverviewRuler.currentContentForeground": "#58287c", + "editorOverviewRuler.incomingContentForeground": "#2182a1", + "terminal.titleForeground": "#525252", + "terminal.titleInactiveForeground": "#737373", + "terminal.background": "#f5f5f5", + "terminal.foreground": "#525252", + "terminal.ansiBlack": "#1d1d1d", + "terminal.ansiRed": "#ac6023", + "terminal.ansiGreen": "#216cab", + "terminal.ansiYellow": "#ffca00", + "terminal.ansiBlue": "#1a85d4", + "terminal.ansiMagenta": "#8836c7", + "terminal.ansiCyan": "#2182a1", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#1d1d1d", + "terminal.ansiBrightRed": "#d47628", + "terminal.ansiBrightGreen": "#1a85d4", + "terminal.ansiBrightYellow": "#ffca00", + "terminal.ansiBrightBlue": "#009fff", + "terminal.ansiBrightMagenta": "#a13cee", + "terminal.ansiBrightCyan": "#1ca1c7", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#215584" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#215584" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#215584" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#215584" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#215584" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#215584" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#215584" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#ac741d", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#5731a7", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#ac741d", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#8836c7", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#215584" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#215584" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#215584" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#2182a1" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#ac6023" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#5731a7" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#8836c7" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#0a0a0a" + } + } + ], + "semanticTokenColors": { + "comment": "#737373", + "string": "#215584", + "number": "#2182a1", + "regexp": "#2182a1", + "keyword": "#8836c7", + "variable": "#ac6023", + "parameter": "#636363", + "property": "#ac6023", + "function": "#5731a7", + "method": "#5731a7", + "type": "#a631be", + "class": "#a631be", + "namespace": "#ac741d", + "enumMember": "#2182a1", + "variable.constant": "#ac741d", + "variable.defaultLibrary": "#ac741d", + "decorator": "#216cab" + } +} diff --git a/packages/theme/themes/pierre-light-soft.json b/packages/theme/themes/pierre-light-soft.json new file mode 100644 index 000000000..bdc999f35 --- /dev/null +++ b/packages/theme/themes/pierre-light-soft.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-light-soft", + "displayName": "Pierre Light Soft", + "type": "light", + "colors": { + "editor.background": "#ffffff", + "editor.foreground": "#525252", + "foreground": "#525252", + "focusBorder": "#009fff", + "selection.background": "#dfebff", + "editor.selectionBackground": "#009fff2e", + "editor.lineHighlightBackground": "#dfebff8c", + "editorCursor.foreground": "#009fff", + "editorLineNumber.foreground": "#8a8a8a", + "editorLineNumber.activeForeground": "#737373", + "editorIndentGuide.background": "#ededed", + "editorIndentGuide.activeBackground": "#e5e5e5", + "diffEditor.insertedTextBackground": "#07c48033", + "diffEditor.deletedTextBackground": "#ff2e3f33", + "sideBar.background": "#f7f7f7", + "sideBar.foreground": "#737373", + "sideBar.border": "#ededed", + "sideBarTitle.foreground": "#525252", + "sideBarSectionHeader.background": "#f7f7f7", + "sideBarSectionHeader.foreground": "#737373", + "sideBarSectionHeader.border": "#ededed", + "activityBar.background": "#f7f7f7", + "activityBar.foreground": "#525252", + "activityBar.border": "#ededed", + "activityBar.activeBorder": "#009fff", + "activityBarBadge.background": "#009fff", + "activityBarBadge.foreground": "#ffffff", + "titleBar.activeBackground": "#f7f7f7", + "titleBar.activeForeground": "#525252", + "titleBar.inactiveBackground": "#f7f7f7", + "titleBar.inactiveForeground": "#8a8a8a", + "titleBar.border": "#ededed", + "list.activeSelectionBackground": "#dfebffcc", + "list.activeSelectionForeground": "#525252", + "list.inactiveSelectionBackground": "#dfebff73", + "list.hoverBackground": "#dfebff59", + "list.focusOutline": "#009fff", + "tab.activeBackground": "#ffffff", + "tab.activeForeground": "#525252", + "tab.activeBorderTop": "#009fff", + "tab.inactiveBackground": "#f7f7f7", + "tab.inactiveForeground": "#8a8a8a", + "tab.border": "#ededed", + "editorGroupHeader.tabsBackground": "#f7f7f7", + "editorGroupHeader.tabsBorder": "#ededed", + "panel.background": "#f7f7f7", + "panel.border": "#ededed", + "panelTitle.activeBorder": "#009fff", + "panelTitle.activeForeground": "#525252", + "panelTitle.inactiveForeground": "#8a8a8a", + "statusBar.background": "#f7f7f7", + "statusBar.foreground": "#737373", + "statusBar.border": "#ededed", + "statusBar.noFolderBackground": "#f7f7f7", + "statusBar.debuggingBackground": "#ffca00", + "statusBar.debuggingForeground": "#ffffff", + "statusBarItem.remoteBackground": "#f7f7f7", + "statusBarItem.remoteForeground": "#737373", + "input.background": "#f5f5f5", + "input.border": "#d4d4d4", + "input.foreground": "#525252", + "input.placeholderForeground": "#a3a3a3", + "dropdown.background": "#f5f5f5", + "dropdown.border": "#d4d4d4", + "dropdown.foreground": "#525252", + "button.background": "#009fff", + "button.foreground": "#ffffff", + "button.hoverBackground": "#1aa9ff", + "textLink.foreground": "#009fff", + "textLink.activeForeground": "#009fff", + "notifications.background": "#fafafa", + "notifications.foreground": "#525252", + "notifications.border": "#e5e5e5", + "notificationToast.border": "#e5e5e5", + "notificationCenter.border": "#e5e5e5", + "notificationCenterHeader.background": "#fafafa", + "notificationCenterHeader.foreground": "#737373", + "notificationLink.foreground": "#009fff", + "notificationsErrorIcon.foreground": "#ff2e3f", + "notificationsWarningIcon.foreground": "#ffca00", + "notificationsInfoIcon.foreground": "#08c0ef", + "quickInput.background": "#fafafa", + "quickInput.foreground": "#525252", + "quickInputTitle.background": "#fafafa", + "widget.border": "#e5e5e5", + "gitDecoration.addedResourceForeground": "#07c480", + "gitDecoration.conflictingResourceForeground": "#7b43f8", + "gitDecoration.modifiedResourceForeground": "#009fff", + "gitDecoration.deletedResourceForeground": "#ff2e3f", + "gitDecoration.untrackedResourceForeground": "#07c480", + "gitDecoration.ignoredResourceForeground": "#8a8a8a", + "merge.currentHeaderBackground": "#7b43f833", + "merge.currentContentBackground": "#7b43f814", + "merge.incomingHeaderBackground": "#08c0ef33", + "merge.incomingContentBackground": "#08c0ef14", + "editorOverviewRuler.currentContentForeground": "#7b43f8", + "editorOverviewRuler.incomingContentForeground": "#08c0ef", + "terminal.titleForeground": "#737373", + "terminal.titleInactiveForeground": "#8a8a8a", + "terminal.background": "#f7f7f7", + "terminal.foreground": "#737373", + "terminal.ansiBlack": "#1d1d1d", + "terminal.ansiRed": "#ff2e3f", + "terminal.ansiGreen": "#0dbe4e", + "terminal.ansiYellow": "#ffca00", + "terminal.ansiBlue": "#009fff", + "terminal.ansiMagenta": "#e130ac", + "terminal.ansiCyan": "#08c0ef", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#1d1d1d", + "terminal.ansiBrightRed": "#ff2e3f", + "terminal.ansiBrightGreen": "#86c427", + "terminal.ansiBrightYellow": "#ffca00", + "terminal.ansiBrightBlue": "#009fff", + "terminal.ansiBrightMagenta": "#e130ac", + "terminal.ansiBrightCyan": "#08c0ef", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#fe8c2c" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#d568ea" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#69b1ff" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#171717" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#171717" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#07c480", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#9d6afb", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#07c480", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#ff678d", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#8a8a8a" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#ffab16" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#00c5d2" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#00cab1" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#0dbe4e" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#68cdf2" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#ff5d36" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#9d6afb" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#ffca00" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#171717" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#ff678d" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#171717" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#171717" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#171717" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#171717" + } + } + ], + "semanticTokenColors": { + "comment": "#8a8a8a", + "string": "#0dbe4e", + "number": "#08c0ef", + "regexp": "#00c5d2", + "keyword": "#ff678d", + "variable": "#fe8c2c", + "parameter": "#737373", + "property": "#fe8c2c", + "function": "#9d6afb", + "method": "#9d6afb", + "type": "#d568ea", + "class": "#d568ea", + "namespace": "#ffab16", + "enumMember": "#68cdf2", + "variable.constant": "#ffca00", + "variable.defaultLibrary": "#ffab16", + "decorator": "#69b1ff" + } +} diff --git a/packages/theme/themes/pierre-light-tritanopia.json b/packages/theme/themes/pierre-light-tritanopia.json new file mode 100644 index 000000000..6be134717 --- /dev/null +++ b/packages/theme/themes/pierre-light-tritanopia.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-light-tritanopia", + "displayName": "Pierre Light Tritanopia", + "type": "light", + "colors": { + "editor.background": "#ffffff", + "editor.foreground": "#0a0a0a", + "foreground": "#0a0a0a", + "focusBorder": "#009fff", + "selection.background": "#dfebff", + "editor.selectionBackground": "#009fff2e", + "editor.lineHighlightBackground": "#dfebff8c", + "editorCursor.foreground": "#009fff", + "editorLineNumber.foreground": "#737373", + "editorLineNumber.activeForeground": "#525252", + "editorIndentGuide.background": "#e5e5e5", + "editorIndentGuide.activeBackground": "#d4d4d4", + "diffEditor.insertedTextBackground": "#1e858e33", + "diffEditor.deletedTextBackground": "#d5512f33", + "sideBar.background": "#f5f5f5", + "sideBar.foreground": "#525252", + "sideBar.border": "#e5e5e5", + "sideBarTitle.foreground": "#0a0a0a", + "sideBarSectionHeader.background": "#f5f5f5", + "sideBarSectionHeader.foreground": "#525252", + "sideBarSectionHeader.border": "#e5e5e5", + "activityBar.background": "#f5f5f5", + "activityBar.foreground": "#0a0a0a", + "activityBar.border": "#e5e5e5", + "activityBar.activeBorder": "#009fff", + "activityBarBadge.background": "#009fff", + "activityBarBadge.foreground": "#ffffff", + "titleBar.activeBackground": "#f5f5f5", + "titleBar.activeForeground": "#0a0a0a", + "titleBar.inactiveBackground": "#f5f5f5", + "titleBar.inactiveForeground": "#737373", + "titleBar.border": "#e5e5e5", + "list.activeSelectionBackground": "#dfebffcc", + "list.activeSelectionForeground": "#0a0a0a", + "list.inactiveSelectionBackground": "#dfebff73", + "list.hoverBackground": "#dfebff59", + "list.focusOutline": "#009fff", + "tab.activeBackground": "#ffffff", + "tab.activeForeground": "#0a0a0a", + "tab.activeBorderTop": "#009fff", + "tab.inactiveBackground": "#f5f5f5", + "tab.inactiveForeground": "#737373", + "tab.border": "#e5e5e5", + "editorGroupHeader.tabsBackground": "#f5f5f5", + "editorGroupHeader.tabsBorder": "#e5e5e5", + "panel.background": "#f5f5f5", + "panel.border": "#e5e5e5", + "panelTitle.activeBorder": "#009fff", + "panelTitle.activeForeground": "#0a0a0a", + "panelTitle.inactiveForeground": "#737373", + "statusBar.background": "#f5f5f5", + "statusBar.foreground": "#525252", + "statusBar.border": "#e5e5e5", + "statusBar.noFolderBackground": "#f5f5f5", + "statusBar.debuggingBackground": "#ffab16", + "statusBar.debuggingForeground": "#ffffff", + "statusBarItem.remoteBackground": "#f5f5f5", + "statusBarItem.remoteForeground": "#525252", + "input.background": "#ededed", + "input.border": "#d4d4d4", + "input.foreground": "#0a0a0a", + "input.placeholderForeground": "#8a8a8a", + "dropdown.background": "#ededed", + "dropdown.border": "#d4d4d4", + "dropdown.foreground": "#0a0a0a", + "button.background": "#009fff", + "button.foreground": "#ffffff", + "button.hoverBackground": "#1aa9ff", + "textLink.foreground": "#009fff", + "textLink.activeForeground": "#009fff", + "notifications.background": "#f7f7f7", + "notifications.foreground": "#0a0a0a", + "notifications.border": "#e5e5e5", + "notificationToast.border": "#e5e5e5", + "notificationCenter.border": "#e5e5e5", + "notificationCenterHeader.background": "#f7f7f7", + "notificationCenterHeader.foreground": "#525252", + "notificationLink.foreground": "#009fff", + "notificationsErrorIcon.foreground": "#d5512f", + "notificationsWarningIcon.foreground": "#ffab16", + "notificationsInfoIcon.foreground": "#1a85d4", + "quickInput.background": "#f7f7f7", + "quickInput.foreground": "#0a0a0a", + "quickInputTitle.background": "#f7f7f7", + "widget.border": "#e5e5e5", + "gitDecoration.addedResourceForeground": "#1e858e", + "gitDecoration.conflictingResourceForeground": "#992a75", + "gitDecoration.modifiedResourceForeground": "#009fff", + "gitDecoration.deletedResourceForeground": "#d5512f", + "gitDecoration.untrackedResourceForeground": "#1e858e", + "gitDecoration.ignoredResourceForeground": "#737373", + "merge.currentHeaderBackground": "#992a7533", + "merge.currentContentBackground": "#992a7514", + "merge.incomingHeaderBackground": "#1a85d433", + "merge.incomingContentBackground": "#1a85d414", + "editorOverviewRuler.currentContentForeground": "#992a75", + "editorOverviewRuler.incomingContentForeground": "#1a85d4", + "terminal.titleForeground": "#525252", + "terminal.titleInactiveForeground": "#737373", + "terminal.background": "#f5f5f5", + "terminal.foreground": "#525252", + "terminal.ansiBlack": "#1d1d1d", + "terminal.ansiRed": "#d5512f", + "terminal.ansiGreen": "#1e858e", + "terminal.ansiYellow": "#d5901c", + "terminal.ansiBlue": "#1a85d4", + "terminal.ansiMagenta": "#992a75", + "terminal.ansiCyan": "#17a5af", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#1d1d1d", + "terminal.ansiBrightRed": "#ff5d36", + "terminal.ansiBrightGreen": "#17a5af", + "terminal.ansiBrightYellow": "#ffab16", + "terminal.ansiBrightBlue": "#009fff", + "terminal.ansiBrightMagenta": "#bd2e90", + "terminal.ansiBrightCyan": "#00c5d2", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#bd2e90" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#bd2e90" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#bd2e90" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#bd2e90" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#bd2e90" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#ad4529" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#bd2e90" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#bd2e90" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#1e858e", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#216cab", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#1e858e", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#a631be", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#1e858e" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#216cab" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#ac741d" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#0a0a0a" + } + } + ], + "semanticTokenColors": { + "comment": "#737373", + "string": "#1e858e", + "number": "#1a85d4", + "regexp": "#1e858e", + "keyword": "#a631be", + "variable": "#ad4529", + "parameter": "#636363", + "property": "#ad4529", + "function": "#216cab", + "method": "#216cab", + "type": "#bd2e90", + "class": "#bd2e90", + "namespace": "#d5512f", + "enumMember": "#1e858e", + "variable.constant": "#ac741d", + "variable.defaultLibrary": "#d5512f", + "decorator": "#1a85d4" + } +} diff --git a/packages/theme/themes/pierre-light-vibrant.json b/packages/theme/themes/pierre-light-vibrant.json new file mode 100644 index 000000000..d97628a8a --- /dev/null +++ b/packages/theme/themes/pierre-light-vibrant.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-light-vibrant", + "displayName": "Pierre Light Vibrant", + "type": "light", + "colors": { + "editor.background": "color(display-p3 1.000000 1.000000 1.000000)", + "editor.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "focusBorder": "color(display-p3 0.308664 0.645271 1.000000)", + "selection.background": "color(display-p3 0.883107 0.920057 0.992610)", + "editor.selectionBackground": "color(display-p3 0.308664 0.645271 1.000000 / 0.180000)", + "editor.lineHighlightBackground": "color(display-p3 0.883107 0.920057 0.992610 / 0.550000)", + "editorCursor.foreground": "color(display-p3 0.308664 0.645271 1.000000)", + "editorLineNumber.foreground": "color(display-p3 0.450980 0.450980 0.450980)", + "editorLineNumber.activeForeground": "color(display-p3 0.321569 0.321569 0.321569)", + "editorIndentGuide.background": "color(display-p3 0.898039 0.898039 0.898039)", + "editorIndentGuide.activeBackground": "color(display-p3 0.831373 0.831373 0.831373)", + "diffEditor.insertedTextBackground": "color(display-p3 0.266455 0.667541 0.435918 / 0.200000)", + "diffEditor.deletedTextBackground": "color(display-p3 0.838044 0.219378 0.220424 / 0.200000)", + "sideBar.background": "color(display-p3 0.960784 0.960784 0.960784)", + "sideBar.foreground": "color(display-p3 0.321569 0.321569 0.321569)", + "sideBar.border": "color(display-p3 0.898039 0.898039 0.898039)", + "sideBarTitle.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "sideBarSectionHeader.background": "color(display-p3 0.960784 0.960784 0.960784)", + "sideBarSectionHeader.foreground": "color(display-p3 0.321569 0.321569 0.321569)", + "sideBarSectionHeader.border": "color(display-p3 0.898039 0.898039 0.898039)", + "activityBar.background": "color(display-p3 0.960784 0.960784 0.960784)", + "activityBar.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "activityBar.border": "color(display-p3 0.898039 0.898039 0.898039)", + "activityBar.activeBorder": "color(display-p3 0.308664 0.645271 1.000000)", + "activityBarBadge.background": "color(display-p3 0.308664 0.645271 1.000000)", + "activityBarBadge.foreground": "color(display-p3 1.000000 1.000000 1.000000)", + "titleBar.activeBackground": "color(display-p3 0.960784 0.960784 0.960784)", + "titleBar.activeForeground": "color(display-p3 0.039216 0.039216 0.039216)", + "titleBar.inactiveBackground": "color(display-p3 0.960784 0.960784 0.960784)", + "titleBar.inactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "titleBar.border": "color(display-p3 0.898039 0.898039 0.898039)", + "list.activeSelectionBackground": "color(display-p3 0.883107 0.920057 0.992610 / 0.800000)", + "list.activeSelectionForeground": "color(display-p3 0.039216 0.039216 0.039216)", + "list.inactiveSelectionBackground": "color(display-p3 0.883107 0.920057 0.992610 / 0.450000)", + "list.hoverBackground": "color(display-p3 0.883107 0.920057 0.992610 / 0.350000)", + "list.focusOutline": "color(display-p3 0.308664 0.645271 1.000000)", + "tab.activeBackground": "color(display-p3 1.000000 1.000000 1.000000)", + "tab.activeForeground": "color(display-p3 0.039216 0.039216 0.039216)", + "tab.activeBorderTop": "color(display-p3 0.308664 0.645271 1.000000)", + "tab.inactiveBackground": "color(display-p3 0.960784 0.960784 0.960784)", + "tab.inactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "tab.border": "color(display-p3 0.898039 0.898039 0.898039)", + "editorGroupHeader.tabsBackground": "color(display-p3 0.960784 0.960784 0.960784)", + "editorGroupHeader.tabsBorder": "color(display-p3 0.898039 0.898039 0.898039)", + "panel.background": "color(display-p3 0.960784 0.960784 0.960784)", + "panel.border": "color(display-p3 0.898039 0.898039 0.898039)", + "panelTitle.activeBorder": "color(display-p3 0.308664 0.645271 1.000000)", + "panelTitle.activeForeground": "color(display-p3 0.039216 0.039216 0.039216)", + "panelTitle.inactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "statusBar.background": "color(display-p3 0.960784 0.960784 0.960784)", + "statusBar.foreground": "color(display-p3 0.321569 0.321569 0.321569)", + "statusBar.border": "color(display-p3 0.898039 0.898039 0.898039)", + "statusBar.noFolderBackground": "color(display-p3 0.960784 0.960784 0.960784)", + "statusBar.debuggingBackground": "color(display-p3 0.883654 0.721037 0.210874)", + "statusBar.debuggingForeground": "color(display-p3 1.000000 1.000000 1.000000)", + "statusBarItem.remoteBackground": "color(display-p3 0.960784 0.960784 0.960784)", + "statusBarItem.remoteForeground": "color(display-p3 0.321569 0.321569 0.321569)", + "input.background": "color(display-p3 0.929412 0.929412 0.929412)", + "input.border": "color(display-p3 0.831373 0.831373 0.831373)", + "input.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "input.placeholderForeground": "color(display-p3 0.541176 0.541176 0.541176)", + "dropdown.background": "color(display-p3 0.929412 0.929412 0.929412)", + "dropdown.border": "color(display-p3 0.831373 0.831373 0.831373)", + "dropdown.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "button.background": "color(display-p3 0.308664 0.645271 1.000000)", + "button.foreground": "color(display-p3 1.000000 1.000000 1.000000)", + "button.hoverBackground": "color(display-p3 0.376471 0.682353 1.000000)", + "textLink.foreground": "color(display-p3 0.308664 0.645271 1.000000)", + "textLink.activeForeground": "color(display-p3 0.308664 0.645271 1.000000)", + "notifications.background": "color(display-p3 0.968627 0.968627 0.968627)", + "notifications.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "notifications.border": "color(display-p3 0.898039 0.898039 0.898039)", + "notificationToast.border": "color(display-p3 0.898039 0.898039 0.898039)", + "notificationCenter.border": "color(display-p3 0.898039 0.898039 0.898039)", + "notificationCenterHeader.background": "color(display-p3 0.968627 0.968627 0.968627)", + "notificationCenterHeader.foreground": "color(display-p3 0.321569 0.321569 0.321569)", + "notificationLink.foreground": "color(display-p3 0.308664 0.645271 1.000000)", + "notificationsErrorIcon.foreground": "color(display-p3 0.838044 0.219378 0.220424)", + "notificationsWarningIcon.foreground": "color(display-p3 0.883654 0.721037 0.210874)", + "notificationsInfoIcon.foreground": "color(display-p3 0.246852 0.642335 0.817202)", + "quickInput.background": "color(display-p3 0.968627 0.968627 0.968627)", + "quickInput.foreground": "color(display-p3 0.039216 0.039216 0.039216)", + "quickInputTitle.background": "color(display-p3 0.968627 0.968627 0.968627)", + "widget.border": "color(display-p3 0.898039 0.898039 0.898039)", + "gitDecoration.addedResourceForeground": "color(display-p3 0.266455 0.667541 0.435918)", + "gitDecoration.conflictingResourceForeground": "color(display-p3 0.391345 0.215644 0.853560)", + "gitDecoration.modifiedResourceForeground": "color(display-p3 0.308664 0.645271 1.000000)", + "gitDecoration.deletedResourceForeground": "color(display-p3 0.838044 0.219378 0.220424)", + "gitDecoration.untrackedResourceForeground": "color(display-p3 0.266455 0.667541 0.435918)", + "gitDecoration.ignoredResourceForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "merge.currentHeaderBackground": "color(display-p3 0.391345 0.215644 0.853560 / 0.200000)", + "merge.currentContentBackground": "color(display-p3 0.391345 0.215644 0.853560 / 0.080000)", + "merge.incomingHeaderBackground": "color(display-p3 0.246852 0.642335 0.817202 / 0.200000)", + "merge.incomingContentBackground": "color(display-p3 0.246852 0.642335 0.817202 / 0.080000)", + "editorOverviewRuler.currentContentForeground": "color(display-p3 0.391345 0.215644 0.853560)", + "editorOverviewRuler.incomingContentForeground": "color(display-p3 0.246852 0.642335 0.817202)", + "terminal.titleForeground": "color(display-p3 0.321569 0.321569 0.321569)", + "terminal.titleInactiveForeground": "color(display-p3 0.450980 0.450980 0.450980)", + "terminal.background": "color(display-p3 0.960784 0.960784 0.960784)", + "terminal.foreground": "color(display-p3 0.321569 0.321569 0.321569)", + "terminal.ansiBlack": "color(display-p3 0.113725 0.113725 0.113725)", + "terminal.ansiRed": "color(display-p3 0.838044 0.219378 0.220424)", + "terminal.ansiGreen": "color(display-p3 0.266455 0.667541 0.435918)", + "terminal.ansiYellow": "color(display-p3 0.883654 0.721037 0.210874)", + "terminal.ansiBlue": "color(display-p3 0.227104 0.537899 0.881328)", + "terminal.ansiMagenta": "color(display-p3 0.733164 0.179473 0.572580)", + "terminal.ansiCyan": "color(display-p3 0.246852 0.642335 0.817202)", + "terminal.ansiWhite": "color(display-p3 0.737255 0.737255 0.737255)", + "terminal.ansiBrightBlack": "color(display-p3 0.113725 0.113725 0.113725)", + "terminal.ansiBrightRed": "color(display-p3 0.838044 0.219378 0.220424)", + "terminal.ansiBrightGreen": "color(display-p3 0.516667 0.680013 0.208825)", + "terminal.ansiBrightYellow": "color(display-p3 0.883654 0.721037 0.210874)", + "terminal.ansiBrightBlue": "color(display-p3 0.227104 0.537899 0.881328)", + "terminal.ansiBrightMagenta": "color(display-p3 0.733164 0.179473 0.572580)", + "terminal.ansiBrightCyan": "color(display-p3 0.246852 0.642335 0.817202)", + "terminal.ansiBrightWhite": "color(display-p3 0.737255 0.737255 0.737255)" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "color(display-p3 0.246852 0.642335 0.817202)" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "color(display-p3 0.246852 0.642335 0.817202)" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "color(display-p3 0.660755 0.179954 0.815400)" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "color(display-p3 0.660755 0.179954 0.815400)" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "color(display-p3 0.660755 0.179954 0.815400)" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "color(display-p3 0.660755 0.179954 0.815400)" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "color(display-p3 0.660755 0.179954 0.815400)" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "color(display-p3 0.854172 0.502144 0.209646)" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "color(display-p3 0.660755 0.179954 0.815400)" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "color(display-p3 0.660755 0.179954 0.815400)" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "color(display-p3 0.227104 0.537899 0.881328)" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "color(display-p3 0.227104 0.537899 0.881328)" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "color(display-p3 0.227104 0.537899 0.881328)" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "color(display-p3 0.039216 0.039216 0.039216)" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "color(display-p3 0.039216 0.039216 0.039216)" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "color(display-p3 0.266455 0.667541 0.435918)", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "color(display-p3 0.266455 0.667541 0.435918)", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "color(display-p3 0.450980 0.450980 0.450980)" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "color(display-p3 0.870477 0.613222 0.203432)" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "color(display-p3 0.262058 0.668164 0.717478)" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "color(display-p3 0.272343 0.688141 0.603353)" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "color(display-p3 0.259723 0.647032 0.276349)" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "color(display-p3 0.327292 0.790977 0.995660)" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "color(display-p3 0.846123 0.351499 0.208754)" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "color(display-p3 0.388235 0.388235 0.388235)" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "color(display-p3 0.391345 0.215644 0.853560)" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "color(display-p3 0.883654 0.721037 0.210874)" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "color(display-p3 0.039216 0.039216 0.039216)" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "color(display-p3 0.834880 0.207921 0.387456)" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "color(display-p3 0.039216 0.039216 0.039216)" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "color(display-p3 0.039216 0.039216 0.039216)" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "color(display-p3 0.039216 0.039216 0.039216)" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "color(display-p3 0.039216 0.039216 0.039216)" + } + } + ], + "semanticTokenColors": { + "comment": "color(display-p3 0.450980 0.450980 0.450980)", + "string": "color(display-p3 0.259723 0.647032 0.276349)", + "number": "color(display-p3 0.246852 0.642335 0.817202)", + "regexp": "color(display-p3 0.262058 0.668164 0.717478)", + "keyword": "color(display-p3 0.834880 0.207921 0.387456)", + "variable": "color(display-p3 0.854172 0.502144 0.209646)", + "parameter": "color(display-p3 0.388235 0.388235 0.388235)", + "property": "color(display-p3 0.854172 0.502144 0.209646)", + "function": "color(display-p3 0.391345 0.215644 0.853560)", + "method": "color(display-p3 0.391345 0.215644 0.853560)", + "type": "color(display-p3 0.660755 0.179954 0.815400)", + "class": "color(display-p3 0.660755 0.179954 0.815400)", + "namespace": "color(display-p3 0.870477 0.613222 0.203432)", + "enumMember": "color(display-p3 0.327292 0.790977 0.995660)", + "variable.constant": "color(display-p3 0.883654 0.721037 0.210874)", + "variable.defaultLibrary": "color(display-p3 0.870477 0.613222 0.203432)", + "decorator": "color(display-p3 0.227104 0.537899 0.881328)" + } +} diff --git a/packages/theme/themes/pierre-light.json b/packages/theme/themes/pierre-light.json new file mode 100644 index 000000000..d39d57546 --- /dev/null +++ b/packages/theme/themes/pierre-light.json @@ -0,0 +1,1894 @@ +{ + "name": "pierre-light", + "displayName": "Pierre Light", + "type": "light", + "colors": { + "editor.background": "#ffffff", + "editor.foreground": "#0a0a0a", + "foreground": "#0a0a0a", + "focusBorder": "#009fff", + "selection.background": "#dfebff", + "editor.selectionBackground": "#009fff2e", + "editor.lineHighlightBackground": "#dfebff8c", + "editorCursor.foreground": "#009fff", + "editorLineNumber.foreground": "#737373", + "editorLineNumber.activeForeground": "#525252", + "editorIndentGuide.background": "#e5e5e5", + "editorIndentGuide.activeBackground": "#d4d4d4", + "diffEditor.insertedTextBackground": "#18a46c33", + "diffEditor.deletedTextBackground": "#d52c3633", + "sideBar.background": "#f5f5f5", + "sideBar.foreground": "#525252", + "sideBar.border": "#e5e5e5", + "sideBarTitle.foreground": "#0a0a0a", + "sideBarSectionHeader.background": "#f5f5f5", + "sideBarSectionHeader.foreground": "#525252", + "sideBarSectionHeader.border": "#e5e5e5", + "activityBar.background": "#f5f5f5", + "activityBar.foreground": "#0a0a0a", + "activityBar.border": "#e5e5e5", + "activityBar.activeBorder": "#009fff", + "activityBarBadge.background": "#009fff", + "activityBarBadge.foreground": "#ffffff", + "titleBar.activeBackground": "#f5f5f5", + "titleBar.activeForeground": "#0a0a0a", + "titleBar.inactiveBackground": "#f5f5f5", + "titleBar.inactiveForeground": "#737373", + "titleBar.border": "#e5e5e5", + "list.activeSelectionBackground": "#dfebffcc", + "list.activeSelectionForeground": "#0a0a0a", + "list.inactiveSelectionBackground": "#dfebff73", + "list.hoverBackground": "#dfebff59", + "list.focusOutline": "#009fff", + "tab.activeBackground": "#ffffff", + "tab.activeForeground": "#0a0a0a", + "tab.activeBorderTop": "#009fff", + "tab.inactiveBackground": "#f5f5f5", + "tab.inactiveForeground": "#737373", + "tab.border": "#e5e5e5", + "editorGroupHeader.tabsBackground": "#f5f5f5", + "editorGroupHeader.tabsBorder": "#e5e5e5", + "panel.background": "#f5f5f5", + "panel.border": "#e5e5e5", + "panelTitle.activeBorder": "#009fff", + "panelTitle.activeForeground": "#0a0a0a", + "panelTitle.inactiveForeground": "#737373", + "statusBar.background": "#f5f5f5", + "statusBar.foreground": "#525252", + "statusBar.border": "#e5e5e5", + "statusBar.noFolderBackground": "#f5f5f5", + "statusBar.debuggingBackground": "#d5a910", + "statusBar.debuggingForeground": "#ffffff", + "statusBarItem.remoteBackground": "#f5f5f5", + "statusBarItem.remoteForeground": "#525252", + "input.background": "#ededed", + "input.border": "#d4d4d4", + "input.foreground": "#0a0a0a", + "input.placeholderForeground": "#8a8a8a", + "dropdown.background": "#ededed", + "dropdown.border": "#d4d4d4", + "dropdown.foreground": "#0a0a0a", + "button.background": "#009fff", + "button.foreground": "#ffffff", + "button.hoverBackground": "#1aa9ff", + "textLink.foreground": "#009fff", + "textLink.activeForeground": "#009fff", + "notifications.background": "#f7f7f7", + "notifications.foreground": "#0a0a0a", + "notifications.border": "#e5e5e5", + "notificationToast.border": "#e5e5e5", + "notificationCenter.border": "#e5e5e5", + "notificationCenterHeader.background": "#f7f7f7", + "notificationCenterHeader.foreground": "#525252", + "notificationLink.foreground": "#009fff", + "notificationsErrorIcon.foreground": "#d52c36", + "notificationsWarningIcon.foreground": "#d5a910", + "notificationsInfoIcon.foreground": "#1ca1c7", + "quickInput.background": "#f7f7f7", + "quickInput.foreground": "#0a0a0a", + "quickInputTitle.background": "#f7f7f7", + "widget.border": "#e5e5e5", + "gitDecoration.addedResourceForeground": "#18a46c", + "gitDecoration.conflictingResourceForeground": "#693acf", + "gitDecoration.modifiedResourceForeground": "#009fff", + "gitDecoration.deletedResourceForeground": "#d52c36", + "gitDecoration.untrackedResourceForeground": "#18a46c", + "gitDecoration.ignoredResourceForeground": "#737373", + "merge.currentHeaderBackground": "#693acf33", + "merge.currentContentBackground": "#693acf14", + "merge.incomingHeaderBackground": "#1ca1c733", + "merge.incomingContentBackground": "#1ca1c714", + "editorOverviewRuler.currentContentForeground": "#693acf", + "editorOverviewRuler.incomingContentForeground": "#1ca1c7", + "terminal.titleForeground": "#525252", + "terminal.titleInactiveForeground": "#737373", + "terminal.background": "#f5f5f5", + "terminal.foreground": "#525252", + "terminal.ansiBlack": "#1d1d1d", + "terminal.ansiRed": "#d52c36", + "terminal.ansiGreen": "#18a46c", + "terminal.ansiYellow": "#d5a910", + "terminal.ansiBlue": "#1a85d4", + "terminal.ansiMagenta": "#bd2e90", + "terminal.ansiCyan": "#1ca1c7", + "terminal.ansiWhite": "#bcbcbc", + "terminal.ansiBrightBlack": "#1d1d1d", + "terminal.ansiBrightRed": "#d52c36", + "terminal.ansiBrightGreen": "#77a42a", + "terminal.ansiBrightYellow": "#d5a910", + "terminal.ansiBrightBlue": "#1a85d4", + "terminal.ansiBrightMagenta": "#bd2e90", + "terminal.ansiBrightCyan": "#1ca1c7", + "terminal.ansiBrightWhite": "#bcbcbc" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "comment markup.link", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": ["string", "constant.other.symbol"], + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": ["constant.numeric", "constant.language.boolean"], + "settings": { + "foreground": "#1ca1c7" + } + }, + { + "scope": "constant", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "punctuation.definition.constant", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "constant.language", + "settings": { + "foreground": "#1ca1c7" + } + }, + { + "scope": "variable.other.constant", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "keyword", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "keyword.control", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": ["storage", "storage.type", "storage.modifier"], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "token.storage", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": [ + "keyword.operator.new", + "keyword.operator.expression.instanceof", + "keyword.operator.expression.typeof", + "keyword.operator.expression.void", + "keyword.operator.expression.delete", + "keyword.operator.expression.in", + "keyword.operator.expression.of", + "keyword.operator.expression.keyof" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "keyword.operator.delete", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": ["variable", "identifier", "meta.definition.variable"], + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": [ + "variable.other.readwrite", + "meta.object-literal.key", + "support.variable.property", + "support.variable.object.process", + "support.variable.object.node" + ], + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": "variable.language", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "variable.parameter.function", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.parameter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "variable.parameter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "variable.parameter.function.language.python", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "variable.parameter.function.python", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": [ + "support.function", + "entity.name.function", + "meta.function-call", + "meta.require", + "support.function.any-method", + "variable.function" + ], + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "keyword.other.special-method", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "entity.name.function", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "support.function.console", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": [ + "support.type", + "entity.name.type", + "entity.name.class", + "storage.type" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["support.class", "entity.name.type.class"], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": [ + "entity.name.class", + "variable.other.class.js", + "variable.other.class.ts" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.class.identifier.namespace.type", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.type.namespace", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "entity.other.inherited-class", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "entity.name.namespace", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "keyword.operator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.logical", + "keyword.operator.bitwise", + "keyword.operator.channel" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": [ + "keyword.operator.arithmetic", + "keyword.operator.comparison", + "keyword.operator.relational", + "keyword.operator.increment", + "keyword.operator.decrement" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.assignment", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.assignment.compound", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": [ + "keyword.operator.assignment.compound.js", + "keyword.operator.assignment.compound.ts" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.ternary", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "keyword.operator.optional", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "punctuation", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.delimiter", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.separator.key-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.terminator", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.square", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.brace.round", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "function.brace", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.parameters", + "punctuation.definition.typeparameters" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["punctuation.definition.block", "punctuation.definition.tag"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": ["meta.tag.tsx", "meta.tag.jsx", "meta.tag.js", "meta.tag.ts"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.expression.import", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "keyword.operator.module", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "support.type.object.console", + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": [ + "support.module.node", + "support.type.object.module", + "entity.name.type.module" + ], + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "support.constant.math", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "support.constant.property.math", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "support.constant.json", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "support.type.object.dom", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["support.variable.dom", "support.variable.property.dom"], + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": "support.variable.property.process", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "meta.property.object", + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": "variable.parameter.function.js", + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": ["keyword.other.template.begin", "keyword.other.template.end"], + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": [ + "keyword.other.substitution.begin", + "keyword.other.substitution.end" + ], + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "meta.template.expression", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "punctuation.section.embedded", + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": "variable.interpolation", + "settings": { + "foreground": "#d47628" + } + }, + { + "scope": [ + "punctuation.section.embedded.begin", + "punctuation.section.embedded.end" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "punctuation.quasi.element", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": [ + "support.type.primitive.ts", + "support.type.builtin.ts", + "support.type.primitive.tsx", + "support.type.builtin.tsx" + ], + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": "support.type.type.flowtype", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "support.type.primitive", + "settings": { + "foreground": "#a631be" + } + }, + { + "scope": ["meta.decorator", "meta.decorator punctuation.decorator"], + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "entity.name.function.decorator", + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "punctuation.definition.decorator", + "settings": { + "foreground": "#1a85d4" + } + }, + { + "scope": "support.variable.magic.python", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "variable.parameter.function.language.special.self.python", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "punctuation.separator.period.python", + "punctuation.separator.element.python", + "punctuation.parenthesis.begin.python", + "punctuation.parenthesis.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "punctuation.definition.arguments.begin.python", + "punctuation.definition.arguments.end.python", + "punctuation.separator.arguments.python", + "punctuation.definition.list.begin.python", + "punctuation.definition.list.end.python" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.python", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.logical.python", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "meta.function-call.generic.python", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "meta.function.decorator.python", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "storage.modifier.lifetime.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.function.std.rust", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "entity.name.lifetime.rust", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "variable.language.rust", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator.misc.rust", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "keyword.operator.sigil.rust", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "support.constant.core.rust", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": ["meta.function.c", "meta.function.cpp"], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.section.block.begin.bracket.curly.cpp", + "punctuation.section.block.end.bracket.curly.cpp", + "punctuation.terminator.statement.c", + "punctuation.section.block.begin.bracket.curly.c", + "punctuation.section.block.end.bracket.curly.c", + "punctuation.section.parens.begin.bracket.round.c", + "punctuation.section.parens.end.bracket.round.c", + "punctuation.section.parameters.begin.bracket.round.c", + "punctuation.section.parameters.end.bracket.round.c" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "keyword.operator.assignment.c", + "keyword.operator.comparison.c", + "keyword.operator.c", + "keyword.operator.increment.c", + "keyword.operator.decrement.c", + "keyword.operator.bitwise.shift.c" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": [ + "keyword.operator.assignment.cpp", + "keyword.operator.comparison.cpp", + "keyword.operator.cpp", + "keyword.operator.increment.cpp", + "keyword.operator.decrement.cpp", + "keyword.operator.bitwise.shift.cpp" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": ["punctuation.separator.c", "punctuation.separator.cpp"], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": [ + "support.type.posix-reserved.c", + "support.type.posix-reserved.cpp" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["keyword.operator.sizeof.c", "keyword.operator.sizeof.cpp"], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "variable.c", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.annotation.java", + "storage.type.object.array.java" + ], + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "source.java", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.section.block.begin.java", + "punctuation.section.block.end.java", + "punctuation.definition.method-parameters.begin.java", + "punctuation.definition.method-parameters.end.java", + "meta.method.identifier.java", + "punctuation.section.method.begin.java", + "punctuation.section.method.end.java", + "punctuation.terminator.java", + "punctuation.section.class.begin.java", + "punctuation.section.class.end.java", + "punctuation.section.inner-class.begin.java", + "punctuation.section.inner-class.end.java", + "meta.method-call.java", + "punctuation.section.class.begin.bracket.curly.java", + "punctuation.section.class.end.bracket.curly.java", + "punctuation.section.method.begin.bracket.curly.java", + "punctuation.section.method.end.bracket.curly.java", + "punctuation.separator.period.java", + "punctuation.bracket.angle.java", + "punctuation.definition.annotation.java", + "meta.method.body.java" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "meta.method.java", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": [ + "storage.modifier.import.java", + "storage.type.java", + "storage.type.generic.java" + ], + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "keyword.operator.instanceof.java", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "meta.definition.variable.name.java", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "token.variable.parameter.java", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "import.storage.java", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "token.package.keyword", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "token.package", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.storage.type.java", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "keyword.operator.assignment.go", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "keyword.operator.arithmetic.go", + "keyword.operator.address.go" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "entity.name.package.go", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "support.other.namespace.use.php", + "support.other.namespace.use-as.php", + "support.other.namespace.php", + "entity.other.alias.php", + "meta.interface.php" + ], + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "keyword.operator.error-control.php", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "keyword.operator.type.php", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": [ + "punctuation.section.array.begin.php", + "punctuation.section.array.end.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "storage.type.php", + "meta.other.type.phpdoc.php", + "keyword.other.type.php", + "keyword.other.array.phpdoc.php" + ], + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "meta.function-call.php", + "meta.function-call.object.php", + "meta.function-call.static.php" + ], + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": [ + "punctuation.definition.parameters.begin.bracket.round.php", + "punctuation.definition.parameters.end.bracket.round.php", + "punctuation.separator.delimiter.php", + "punctuation.section.scope.begin.php", + "punctuation.section.scope.end.php", + "punctuation.terminator.expression.php", + "punctuation.definition.arguments.begin.bracket.round.php", + "punctuation.definition.arguments.end.bracket.round.php", + "punctuation.definition.storage-type.begin.bracket.round.php", + "punctuation.definition.storage-type.end.bracket.round.php", + "punctuation.definition.array.begin.bracket.round.php", + "punctuation.definition.array.end.bracket.round.php", + "punctuation.definition.begin.bracket.round.php", + "punctuation.definition.end.bracket.round.php", + "punctuation.definition.begin.bracket.curly.php", + "punctuation.definition.end.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php", + "punctuation.definition.section.switch-block.start.bracket.curly.php", + "punctuation.definition.section.switch-block.begin.bracket.curly.php", + "punctuation.definition.section.switch-block.end.bracket.curly.php" + ], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "support.constant.ext.php", + "support.constant.std.php", + "support.constant.core.php", + "support.constant.parser-token.php" + ], + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": ["entity.name.goto-label.php", "support.other.php"], + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": [ + "keyword.operator.logical.php", + "keyword.operator.bitwise.php", + "keyword.operator.arithmetic.php" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "keyword.operator.regexp.php", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "keyword.operator.comparison.php", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["keyword.operator.heredoc.php", "keyword.operator.nowdoc.php"], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "variable.other.class.php", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "invalid.illegal.non-null-typehinted.php", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "variable.other.generic-type.haskell", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "storage.type.haskell", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "storage.type.cs", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "entity.name.variable.local.cs", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "entity.name.label.cs", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "entity.name.scope-resolution.function.call", + "entity.name.scope-resolution.function.definition" + ], + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "punctuation.definition.delayed.unison", + "punctuation.definition.list.begin.unison", + "punctuation.definition.list.end.unison", + "punctuation.definition.ability.begin.unison", + "punctuation.definition.ability.end.unison", + "punctuation.operator.assignment.as.unison", + "punctuation.separator.pipe.unison", + "punctuation.separator.delimiter.unison", + "punctuation.definition.hash.unison" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "support.constant.edge", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "support.type.prelude.elm", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.constant.elm", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "entity.global.clojure", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "meta.symbol.clojure", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "constant.keyword.clojure", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "storage.modifier.import.groovy", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "meta.method.groovy", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "meta.definition.variable.name.groovy", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "meta.definition.class.inherited.classes.groovy", + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": "support.variable.semantic.hlsl", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "support.type.texture.hlsl", + "support.type.sampler.hlsl", + "support.type.object.hlsl", + "support.type.object.rw.hlsl", + "support.type.fx.hlsl", + "support.type.object.hlsl" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": ["text.variable", "text.bracketed"], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": ["support.type.swift", "support.type.vb.asp"], + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "meta.scope.prerequisites.makefile", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "source.makefile", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "source.ini", + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": "constant.language.symbol.ruby", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": ["function.parameter.ruby", "function.parameter.cs"], + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "constant.language.symbol.elixir", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "entity.name.function.xi", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "entity.name.class.xi", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "constant.character.character-class.regexp.xi", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "constant.regexp.xi", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "keyword.control.xi", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "invalid.xi", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "beginning.punctuation.definition.quote.markdown.xi", + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "constant.character.xi", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "accent.xi", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "wikiword.xi", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "constant.other.color.rgb-value.xi", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "punctuation.definition.tag.xi", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": [ + "support.constant.property-value.scss", + "support.constant.property-value.css" + ], + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": [ + "keyword.operator.css", + "keyword.operator.scss", + "keyword.operator.less" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": [ + "support.constant.color.w3c-standard-color-name.css", + "support.constant.color.w3c-standard-color-name.scss" + ], + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "punctuation.separator.list.comma.css", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.type.vendored.property-name.css", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.property-value", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "support.constant.font-name", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "entity.other.attribute-name.class.css", + "settings": { + "foreground": "#18a46c", + "fontStyle": "normal" + } + }, + { + "scope": "entity.other.attribute-name.id", + "settings": { + "foreground": "#693acf", + "fontStyle": "normal" + } + }, + { + "scope": [ + "entity.other.attribute-name.pseudo-element", + "entity.other.attribute-name.pseudo-class" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "meta.selector", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "selector.sass", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "rgb-value", + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "inline-color-decoration rgb-value", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "less rgb-value", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "control.elements", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "keyword.operator.less", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "entity.name.tag", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "entity.other.attribute-name", + "settings": { + "foreground": "#18a46c", + "fontStyle": "normal" + } + }, + { + "scope": "constant.character.entity", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "meta.tag", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "invalid.illegal.bad-ampersand.html", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "markup.heading", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "markup.heading punctuation.definition.heading", + "entity.name.section" + ], + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "entity.name.section.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "punctuation.definition.heading.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "markup.heading.setext", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": [ + "markup.heading.setext.1.markdown", + "markup.heading.setext.2.markdown" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": ["markup.bold", "todo.bold"], + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "punctuation.definition.bold", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": "punctuation.definition.bold.markdown", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": [ + "markup.italic", + "punctuation.definition.italic", + "todo.emphasis" + ], + "settings": { + "foreground": "#d32a61", + "fontStyle": "italic" + } + }, + { + "scope": "emphasis md", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "markup.italic.markdown", + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": [ + "markup.underline.link.markdown", + "markup.underline.link.image.markdown" + ], + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": [ + "string.other.link.title.markdown", + "string.other.link.description.markdown" + ], + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "punctuation.definition.metadata.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "markup.inline.raw.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": "punctuation.definition.list.begin.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "punctuation.definition.list.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "beginning.punctuation.definition.list.markdown", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "punctuation.definition.string.begin.markdown", + "punctuation.definition.string.end.markdown" + ], + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "markup.quote.markdown", + "settings": { + "foreground": "#737373" + } + }, + { + "scope": "keyword.other.unit", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "markup.changed.diff", + "settings": { + "foreground": "#d5901c" + } + }, + { + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "string.regexp", + "settings": { + "foreground": "#17a5af" + } + }, + { + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#16a994" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > value.json > string.quoted.json", + "source.json meta.structure.array.json > value.json > string.quoted.json", + "source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation", + "source.json meta.structure.array.json > value.json > string.quoted.json > punctuation" + ], + "settings": { + "foreground": "#199f43" + } + }, + { + "scope": [ + "source.json meta.structure.dictionary.json > constant.language.json", + "source.json meta.structure.array.json > constant.language.json" + ], + "settings": { + "foreground": "#08c0ef" + } + }, + { + "scope": "support.type.property-name.json", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "support.type.property-name.json punctuation", + "settings": { + "foreground": "#d5512f" + } + }, + { + "scope": "punctuation.definition.block.sequence.item.yaml", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.end", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "block.scope.begin", + "settings": { + "foreground": "#636363" + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground": "#693acf" + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground": "#d5a910" + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground": "#d32a61" + } + }, + { + "scope": "invalid.illegal", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.broken", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.deprecated", + "settings": { + "foreground": "#0a0a0a" + } + }, + { + "scope": "invalid.unimplemented", + "settings": { + "foreground": "#0a0a0a" + } + } + ], + "semanticTokenColors": { + "comment": "#737373", + "string": "#199f43", + "number": "#1ca1c7", + "regexp": "#17a5af", + "keyword": "#d32a61", + "variable": "#d47628", + "parameter": "#636363", + "property": "#d47628", + "function": "#693acf", + "method": "#693acf", + "type": "#a631be", + "class": "#a631be", + "namespace": "#d5901c", + "enumMember": "#08c0ef", + "variable.constant": "#d5a910", + "variable.defaultLibrary": "#d5901c", + "decorator": "#1a85d4" + } +} diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json new file mode 100644 index 000000000..d29166c45 --- /dev/null +++ b/packages/theme/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.options.json", + "include": ["src/**/*.ts", "scripts/**/*.ts", "test/**/*.ts"], + "exclude": ["node_modules", "dist", "preview"], + "compilerOptions": { + "allowJs": false, + "checkJs": false, + "emitDeclarationOnly": true, + "outDir": "dist", + "lib": ["ES2023"], + "types": ["bun"], + "target": "esnext", + "module": "esnext", + "moduleResolution": "bundler", + "rootDir": ".", + "tsBuildInfoFile": "tsconfig.tsbuildinfo", + "resolveJsonModule": true + } +} diff --git a/packages/theme/zed/LICENSE.md b/packages/theme/zed/LICENSE.md new file mode 100644 index 000000000..751c01b75 --- /dev/null +++ b/packages/theme/zed/LICENSE.md @@ -0,0 +1,20 @@ +MIT License + +Copyright (c) 2026 The Pierre Computer Company + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/theme/zed/README.md b/packages/theme/zed/README.md new file mode 100644 index 000000000..d7b54f339 --- /dev/null +++ b/packages/theme/zed/README.md @@ -0,0 +1,28 @@ +# Pierre Theme for Zed + +Custom themes for [Zed](https://zed.dev) from the team that built +[Diffs.com](https://diffs.com), [The Pierre Computer +Company]{https://pierre.computer}. + +## Variants + +- **Pierre Light** — Light theme with warm orange accents +- **Pierre Dark** — Dark theme with warm orange accents + +## Installation + +Search for "Pierre" in Zed's extension manager (`Cmd+Shift+X` or +`Ctrl+Shift+X`). + +## Manual Installation + +Copy `themes/pierre.json` to your Zed themes directory: + +- **macOS/Linux:** `~/.config/zed/themes/` +- **Windows:** `%USERPROFILE%\AppData\Roaming\Zed\themes\` + +Then select the theme via the theme selector (`Cmd+K Cmd+T` or `Ctrl+K Ctrl+T`). + +## License + +MIT diff --git a/packages/theme/zed/extension.toml b/packages/theme/zed/extension.toml new file mode 100644 index 000000000..58ab0fd97 --- /dev/null +++ b/packages/theme/zed/extension.toml @@ -0,0 +1,7 @@ +id = "pierre-theme" +name = "Pierre" +description = "Modern light and dark color themes built by Pierre for Diffs.com, and now for you." +version = "0.0.30" +schema_version = 1 +authors = ["pierrecomputer"] +repository = "https://github.com/pierrecomputer/pierre-theme" diff --git a/packages/theme/zed/themes/pierre.json b/packages/theme/zed/themes/pierre.json new file mode 100644 index 000000000..73148ca69 --- /dev/null +++ b/packages/theme/zed/themes/pierre.json @@ -0,0 +1,3991 @@ +{ + "$schema": "https://zed.dev/schema/themes/v0.2.0.json", + "name": "Pierre", + "author": "pierrecomputer", + "themes": [ + { + "name": "Pierre Light", + "appearance": "light", + "style": { + "background": "#f5f5f5", + "surface.background": "#f5f5f5", + "elevated_surface.background": "#f7f7f7", + "drop_target.background": "#009fff26", + "editor.background": "#ffffff", + "editor.foreground": "#0a0a0a", + "editor.gutter.background": "#ffffff", + "editor.active_line.background": "#dfebff8c", + "editor.active_line_number": "#525252", + "editor.line_number": "#737373", + "editor.highlighted_line.background": "#dfebff59", + "editor.indent_guide": "#e5e5e5", + "editor.indent_guide_active": "#d4d4d4", + "editor.invisible": "#8a8a8a", + "editor.wrap_guide": "#e5e5e5", + "editor.active_wrap_guide": "#d4d4d4", + "editor.document_highlight.read_background": "#009fff1a", + "editor.document_highlight.write_background": "#009fff2e", + "editor.document_highlight.bracket_background": "#009fff33", + "editor.subheader.background": "#f5f5f5", + "text": "#0a0a0a", + "text.muted": "#737373", + "text.placeholder": "#8a8a8a", + "text.disabled": "#8a8a8a", + "text.accent": "#009fff", + "border": "#d4d4d4", + "border.variant": "#e5e5e5", + "border.focused": "#009fff", + "border.selected": "#009fff", + "border.transparent": "transparent", + "border.disabled": "#d4d4d4", + "element.background": "#ededed", + "element.hover": "#dfebff80", + "element.active": "#dfebffb3", + "element.selected": "#dfebffcc", + "element.disabled": "#ededed80", + "ghost_element.background": "transparent", + "ghost_element.hover": "#dfebff59", + "ghost_element.active": "#dfebff8c", + "ghost_element.selected": "#dfebffa6", + "ghost_element.disabled": "transparent", + "icon": "#525252", + "icon.muted": "#737373", + "icon.disabled": "#8a8a8a", + "icon.placeholder": "#8a8a8a", + "icon.accent": "#009fff", + "link_text.hover": "#009fff", + "error": "#d52c36", + "error.background": "#d52c361a", + "error.border": "#d52c364d", + "warning": "#009fff", + "warning.background": "#009fff1a", + "warning.border": "#009fff4d", + "success": "#18a46c", + "success.background": "#18a46c1a", + "success.border": "#18a46c4d", + "info": "#1ca1c7", + "info.background": "#1ca1c71a", + "info.border": "#1ca1c74d", + "hint": "#737373", + "hint.background": "#7373731a", + "hint.border": "#73737333", + "predictive": "#8a8a8a", + "predictive.background": "#8a8a8a1a", + "predictive.border": "#8a8a8a33", + "unreachable": "#8a8a8a", + "unreachable.background": "#8a8a8a0d", + "unreachable.border": "#8a8a8a1a", + "created": "#18a46c", + "created.background": "#18a46c1a", + "created.border": "#18a46c4d", + "modified": "#009fff", + "modified.background": "#009fff1a", + "modified.border": "#009fff4d", + "deleted": "#d52c36", + "deleted.background": "#d52c361a", + "deleted.border": "#d52c364d", + "conflict": "#693acf", + "conflict.background": "#693acf1a", + "conflict.border": "#693acf4d", + "hidden": "#8a8a8a", + "hidden.background": "#8a8a8a0d", + "hidden.border": "#8a8a8a1a", + "ignored": "#737373", + "ignored.background": "#7373730d", + "ignored.border": "#7373731a", + "renamed": "#1ca1c7", + "renamed.background": "#1ca1c71a", + "renamed.border": "#1ca1c74d", + "search.match_background": "#d5a9104d", + "tab_bar.background": "#f5f5f5", + "tab.active_background": "#f5f5f5", + "tab.inactive_background": "#f5f5f5", + "toolbar.background": "#f5f5f5", + "title_bar.background": "#f5f5f5", + "title_bar.inactive_background": "#f5f5f5", + "panel.background": "#f5f5f5", + "panel.focused_border": "#009fff", + "status_bar.background": "#f5f5f5", + "scrollbar.thumb.background": "#8a8a8a4d", + "scrollbar.thumb.hover_background": "#8a8a8a80", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#f5f5f5", + "terminal.foreground": "#525252", + "terminal.bright_foreground": "#0a0a0a", + "terminal.dim_foreground": "#737373", + "terminal.ansi.black": "#1d1d1d", + "terminal.ansi.red": "#d52c36", + "terminal.ansi.green": "#18a46c", + "terminal.ansi.yellow": "#d5a910", + "terminal.ansi.blue": "#1a85d4", + "terminal.ansi.magenta": "#bd2e90", + "terminal.ansi.cyan": "#1ca1c7", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#1d1d1d", + "terminal.ansi.bright_red": "#d52c36", + "terminal.ansi.bright_green": "#77a42a", + "terminal.ansi.bright_yellow": "#d5a910", + "terminal.ansi.bright_blue": "#1a85d4", + "terminal.ansi.bright_magenta": "#bd2e90", + "terminal.ansi.bright_cyan": "#1ca1c7", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#009fff", + "background": "#009fff", + "selection": "#009fff40" + }, + { + "cursor": "#18a46c", + "background": "#18a46c", + "selection": "#18a46c40" + }, + { + "cursor": "#d32a61", + "background": "#d32a61", + "selection": "#d32a6140" + }, + { + "cursor": "#693acf", + "background": "#693acf", + "selection": "#693acf40" + }, + { + "cursor": "#199f43", + "background": "#199f43", + "selection": "#199f4340" + }, + { + "cursor": "#d5a910", + "background": "#d5a910", + "selection": "#d5a91040" + }, + { + "cursor": "#a631be", + "background": "#a631be", + "selection": "#a631be40" + }, + { + "cursor": "#1ca1c7", + "background": "#1ca1c7", + "selection": "#1ca1c740" + } + ], + "syntax": { + "comment": { + "color": "#737373" + }, + "comment.doc": { + "color": "#737373" + }, + "string": { + "color": "#199f43" + }, + "string.escape": { + "color": "#16a994" + }, + "string.regex": { + "color": "#17a5af" + }, + "string.special": { + "color": "#16a994" + }, + "string.special.symbol": { + "color": "#d5a910" + }, + "number": { + "color": "#1ca1c7" + }, + "constant": { + "color": "#d5a910" + }, + "boolean": { + "color": "#1ca1c7" + }, + "keyword": { + "color": "#d32a61" + }, + "keyword.operator": { + "color": "#08c0ef" + }, + "function": { + "color": "#693acf" + }, + "function.method": { + "color": "#693acf" + }, + "function.builtin": { + "color": "#693acf" + }, + "function.special.definition": { + "color": "#693acf" + }, + "function.call": { + "color": "#693acf" + }, + "type": { + "color": "#a631be" + }, + "type.builtin": { + "color": "#a631be" + }, + "constructor": { + "color": "#a631be" + }, + "variable": { + "color": "#d47628" + }, + "variable.builtin": { + "color": "#d5901c" + }, + "variable.member": { + "color": "#d47628" + }, + "variable.parameter": { + "color": "#636363" + }, + "variable.special": { + "color": "#d5901c" + }, + "property": { + "color": "#d47628" + }, + "property.css": { + "color": "#009fff" + }, + "property.definition": { + "color": "#009fff" + }, + "property_name": { + "color": "#009fff" + }, + "value": { + "color": "#1ca1c7" + }, + "constant.css": { + "color": "#d5a910" + }, + "string.plain": { + "color": "#1ca1c7" + }, + "plain_value": { + "color": "#1ca1c7" + }, + "tag.css": { + "color": "#d5512f" + }, + "tag_name": { + "color": "#d5512f" + }, + "class": { + "color": "#18a46c" + }, + "class_name": { + "color": "#18a46c" + }, + "selector.class": { + "color": "#18a46c" + }, + "selector.id": { + "color": "#693acf" + }, + "id_name": { + "color": "#693acf" + }, + "selector.pseudo": { + "color": "#08c0ef" + }, + "pseudo_class_selector": { + "color": "#08c0ef" + }, + "pseudo_element_selector": { + "color": "#08c0ef" + }, + "keyword.directive": { + "color": "#d32a61" + }, + "keyword.control.at-rule": { + "color": "#d32a61" + }, + "at_keyword": { + "color": "#d32a61" + }, + "variable.scss": { + "color": "#d47628" + }, + "variable.css": { + "color": "#d47628" + }, + "property.custom": { + "color": "#d47628" + }, + "unit": { + "color": "#1ca1c7" + }, + "number.unit": { + "color": "#1ca1c7" + }, + "color": { + "color": "#d5a910" + }, + "constant.color": { + "color": "#d5a910" + }, + "keyword.important": { + "color": "#d32a61" + }, + "variable.language": { + "color": "#d5901c" + }, + "this": { + "color": "#d5901c" + }, + "self": { + "color": "#d5901c" + }, + "type.class": { + "color": "#a631be" + }, + "property.object": { + "color": "#d47628" + }, + "property_identifier": { + "color": "#d47628" + }, + "shorthand_property_identifier": { + "color": "#d47628" + }, + "shorthand_property_identifier_pattern": { + "color": "#d47628" + }, + "method_definition": { + "color": "#693acf" + }, + "function.method.call": { + "color": "#693acf" + }, + "string.template": { + "color": "#199f43" + }, + "template_string": { + "color": "#199f43" + }, + "tag.jsx": { + "color": "#d5512f" + }, + "tag.component": { + "color": "#a631be" + }, + "punctuation": { + "color": "#636363" + }, + "punctuation.bracket": { + "color": "#636363" + }, + "punctuation.delimiter": { + "color": "#636363" + }, + "punctuation.list_marker": { + "color": "#636363" + }, + "punctuation.special": { + "color": "#d32a61" + }, + "operator": { + "color": "#08c0ef" + }, + "tag": { + "color": "#d5512f" + }, + "attribute": { + "color": "#18a46c" + }, + "label": { + "color": "#d5901c" + }, + "namespace": { + "color": "#d5901c" + }, + "decorator": { + "color": "#1a85d4" + }, + "attribute.builtin": { + "color": "#1a85d4" + }, + "embedded": { + "color": "#0a0a0a" + }, + "preproc": { + "color": "#d32a61" + }, + "text.literal": { + "color": "#199f43" + }, + "markup.heading": { + "color": "#d5512f", + "font_weight": 700 + }, + "markup.bold": { + "color": "#d5a910", + "font_weight": 700 + }, + "markup.italic": { + "color": "#d32a61", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#737373" + }, + "markup.link.url": { + "color": "#009fff" + }, + "markup.link.text": { + "color": "#693acf" + }, + "markup.quote": { + "color": "#737373", + "font_style": "italic" + }, + "markup.list": { + "color": "#d5512f" + }, + "markup.list.numbered": { + "color": "#d5512f" + }, + "markup.list.unnumbered": { + "color": "#d5512f" + }, + "markup.raw": { + "color": "#199f43" + }, + "markup.raw.inline": { + "color": "#199f43" + }, + "markup.raw.block": { + "color": "#199f43" + }, + "diff.plus": { + "color": "#18a46c" + }, + "diff.minus": { + "color": "#d52c36" + }, + "diff.delta": { + "color": "#d5a910" + }, + "link_text": { + "color": "#009fff" + }, + "link_uri": { + "color": "#d32a61" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#009fff" + }, + "title": { + "color": "#d5512f", + "font_weight": 700 + }, + "predictive": { + "color": "#8a8a8a", + "font_style": "italic" + } + } + } + }, + { + "name": "Pierre Light Protanopia & Deuteranopia", + "appearance": "light", + "style": { + "background": "#f5f5f5", + "surface.background": "#f5f5f5", + "elevated_surface.background": "#f7f7f7", + "drop_target.background": "#009fff26", + "editor.background": "#ffffff", + "editor.foreground": "#0a0a0a", + "editor.gutter.background": "#ffffff", + "editor.active_line.background": "#dfebff8c", + "editor.active_line_number": "#525252", + "editor.line_number": "#737373", + "editor.highlighted_line.background": "#dfebff59", + "editor.indent_guide": "#e5e5e5", + "editor.indent_guide_active": "#d4d4d4", + "editor.invisible": "#8a8a8a", + "editor.wrap_guide": "#e5e5e5", + "editor.active_wrap_guide": "#d4d4d4", + "editor.document_highlight.read_background": "#009fff1a", + "editor.document_highlight.write_background": "#009fff2e", + "editor.document_highlight.bracket_background": "#009fff33", + "editor.subheader.background": "#f5f5f5", + "text": "#0a0a0a", + "text.muted": "#737373", + "text.placeholder": "#8a8a8a", + "text.disabled": "#8a8a8a", + "text.accent": "#009fff", + "border": "#d4d4d4", + "border.variant": "#e5e5e5", + "border.focused": "#009fff", + "border.selected": "#009fff", + "border.transparent": "transparent", + "border.disabled": "#d4d4d4", + "element.background": "#ededed", + "element.hover": "#dfebff80", + "element.active": "#dfebffb3", + "element.selected": "#dfebffcc", + "element.disabled": "#ededed80", + "ghost_element.background": "transparent", + "ghost_element.hover": "#dfebff59", + "ghost_element.active": "#dfebff8c", + "ghost_element.selected": "#dfebffa6", + "ghost_element.disabled": "transparent", + "icon": "#525252", + "icon.muted": "#737373", + "icon.disabled": "#8a8a8a", + "icon.placeholder": "#8a8a8a", + "icon.accent": "#009fff", + "link_text.hover": "#009fff", + "error": "#ac6023", + "error.background": "#ac60231a", + "error.border": "#ac60234d", + "warning": "#009fff", + "warning.background": "#009fff1a", + "warning.border": "#009fff4d", + "success": "#216cab", + "success.background": "#216cab1a", + "success.border": "#216cab4d", + "info": "#2182a1", + "info.background": "#2182a11a", + "info.border": "#2182a14d", + "hint": "#737373", + "hint.background": "#7373731a", + "hint.border": "#73737333", + "predictive": "#8a8a8a", + "predictive.background": "#8a8a8a1a", + "predictive.border": "#8a8a8a33", + "unreachable": "#8a8a8a", + "unreachable.background": "#8a8a8a0d", + "unreachable.border": "#8a8a8a1a", + "created": "#216cab", + "created.background": "#216cab1a", + "created.border": "#216cab4d", + "modified": "#009fff", + "modified.background": "#009fff1a", + "modified.border": "#009fff4d", + "deleted": "#ac6023", + "deleted.background": "#ac60231a", + "deleted.border": "#ac60234d", + "conflict": "#58287c", + "conflict.background": "#58287c1a", + "conflict.border": "#58287c4d", + "hidden": "#8a8a8a", + "hidden.background": "#8a8a8a0d", + "hidden.border": "#8a8a8a1a", + "ignored": "#737373", + "ignored.background": "#7373730d", + "ignored.border": "#7373731a", + "renamed": "#2182a1", + "renamed.background": "#2182a11a", + "renamed.border": "#2182a14d", + "search.match_background": "#ffca004d", + "tab_bar.background": "#f5f5f5", + "tab.active_background": "#f5f5f5", + "tab.inactive_background": "#f5f5f5", + "toolbar.background": "#f5f5f5", + "title_bar.background": "#f5f5f5", + "title_bar.inactive_background": "#f5f5f5", + "panel.background": "#f5f5f5", + "panel.focused_border": "#009fff", + "status_bar.background": "#f5f5f5", + "scrollbar.thumb.background": "#8a8a8a4d", + "scrollbar.thumb.hover_background": "#8a8a8a80", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#f5f5f5", + "terminal.foreground": "#525252", + "terminal.bright_foreground": "#0a0a0a", + "terminal.dim_foreground": "#737373", + "terminal.ansi.black": "#1d1d1d", + "terminal.ansi.red": "#ac6023", + "terminal.ansi.green": "#216cab", + "terminal.ansi.yellow": "#ffca00", + "terminal.ansi.blue": "#1a85d4", + "terminal.ansi.magenta": "#8836c7", + "terminal.ansi.cyan": "#2182a1", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#1d1d1d", + "terminal.ansi.bright_red": "#d47628", + "terminal.ansi.bright_green": "#1a85d4", + "terminal.ansi.bright_yellow": "#ffca00", + "terminal.ansi.bright_blue": "#009fff", + "terminal.ansi.bright_magenta": "#a13cee", + "terminal.ansi.bright_cyan": "#1ca1c7", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#009fff", + "background": "#009fff", + "selection": "#009fff40" + }, + { + "cursor": "#216cab", + "background": "#216cab", + "selection": "#216cab40" + }, + { + "cursor": "#8836c7", + "background": "#8836c7", + "selection": "#8836c740" + }, + { + "cursor": "#5731a7", + "background": "#5731a7", + "selection": "#5731a740" + }, + { + "cursor": "#215584", + "background": "#215584", + "selection": "#21558440" + }, + { + "cursor": "#ffca00", + "background": "#ffca00", + "selection": "#ffca0040" + }, + { + "cursor": "#a631be", + "background": "#a631be", + "selection": "#a631be40" + }, + { + "cursor": "#2182a1", + "background": "#2182a1", + "selection": "#2182a140" + } + ], + "syntax": { + "comment": { + "color": "#737373" + }, + "comment.doc": { + "color": "#737373" + }, + "string": { + "color": "#215584" + }, + "string.escape": { + "color": "#1e858e" + }, + "string.regex": { + "color": "#2182a1" + }, + "string.special": { + "color": "#1e858e" + }, + "string.special.symbol": { + "color": "#ac741d" + }, + "number": { + "color": "#2182a1" + }, + "constant": { + "color": "#ac741d" + }, + "boolean": { + "color": "#2182a1" + }, + "keyword": { + "color": "#8836c7" + }, + "keyword.operator": { + "color": "#2182a1" + }, + "function": { + "color": "#5731a7" + }, + "function.method": { + "color": "#5731a7" + }, + "function.builtin": { + "color": "#5731a7" + }, + "function.special.definition": { + "color": "#5731a7" + }, + "function.call": { + "color": "#5731a7" + }, + "type": { + "color": "#a631be" + }, + "type.builtin": { + "color": "#a631be" + }, + "constructor": { + "color": "#a631be" + }, + "variable": { + "color": "#ac6023" + }, + "variable.builtin": { + "color": "#ac741d" + }, + "variable.member": { + "color": "#ac6023" + }, + "variable.parameter": { + "color": "#636363" + }, + "variable.special": { + "color": "#ac741d" + }, + "property": { + "color": "#ac6023" + }, + "property.css": { + "color": "#009fff" + }, + "property.definition": { + "color": "#009fff" + }, + "property_name": { + "color": "#009fff" + }, + "value": { + "color": "#2182a1" + }, + "constant.css": { + "color": "#ac741d" + }, + "string.plain": { + "color": "#2182a1" + }, + "plain_value": { + "color": "#2182a1" + }, + "tag.css": { + "color": "#ac6023" + }, + "tag_name": { + "color": "#ac6023" + }, + "class": { + "color": "#ac741d" + }, + "class_name": { + "color": "#ac741d" + }, + "selector.class": { + "color": "#ac741d" + }, + "selector.id": { + "color": "#5731a7" + }, + "id_name": { + "color": "#5731a7" + }, + "selector.pseudo": { + "color": "#2182a1" + }, + "pseudo_class_selector": { + "color": "#2182a1" + }, + "pseudo_element_selector": { + "color": "#2182a1" + }, + "keyword.directive": { + "color": "#8836c7" + }, + "keyword.control.at-rule": { + "color": "#8836c7" + }, + "at_keyword": { + "color": "#8836c7" + }, + "variable.scss": { + "color": "#ac6023" + }, + "variable.css": { + "color": "#ac6023" + }, + "property.custom": { + "color": "#ac6023" + }, + "unit": { + "color": "#2182a1" + }, + "number.unit": { + "color": "#2182a1" + }, + "color": { + "color": "#ac741d" + }, + "constant.color": { + "color": "#ac741d" + }, + "keyword.important": { + "color": "#8836c7" + }, + "variable.language": { + "color": "#ac741d" + }, + "this": { + "color": "#ac741d" + }, + "self": { + "color": "#ac741d" + }, + "type.class": { + "color": "#a631be" + }, + "property.object": { + "color": "#ac6023" + }, + "property_identifier": { + "color": "#ac6023" + }, + "shorthand_property_identifier": { + "color": "#ac6023" + }, + "shorthand_property_identifier_pattern": { + "color": "#ac6023" + }, + "method_definition": { + "color": "#5731a7" + }, + "function.method.call": { + "color": "#5731a7" + }, + "string.template": { + "color": "#215584" + }, + "template_string": { + "color": "#215584" + }, + "tag.jsx": { + "color": "#ac6023" + }, + "tag.component": { + "color": "#a631be" + }, + "punctuation": { + "color": "#636363" + }, + "punctuation.bracket": { + "color": "#636363" + }, + "punctuation.delimiter": { + "color": "#636363" + }, + "punctuation.list_marker": { + "color": "#636363" + }, + "punctuation.special": { + "color": "#8836c7" + }, + "operator": { + "color": "#2182a1" + }, + "tag": { + "color": "#ac6023" + }, + "attribute": { + "color": "#ac741d" + }, + "label": { + "color": "#ac741d" + }, + "namespace": { + "color": "#ac741d" + }, + "decorator": { + "color": "#216cab" + }, + "attribute.builtin": { + "color": "#216cab" + }, + "embedded": { + "color": "#0a0a0a" + }, + "preproc": { + "color": "#8836c7" + }, + "text.literal": { + "color": "#215584" + }, + "markup.heading": { + "color": "#ac6023", + "font_weight": 700 + }, + "markup.bold": { + "color": "#ac741d", + "font_weight": 700 + }, + "markup.italic": { + "color": "#8836c7", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#737373" + }, + "markup.link.url": { + "color": "#009fff" + }, + "markup.link.text": { + "color": "#5731a7" + }, + "markup.quote": { + "color": "#737373", + "font_style": "italic" + }, + "markup.list": { + "color": "#ac6023" + }, + "markup.list.numbered": { + "color": "#ac6023" + }, + "markup.list.unnumbered": { + "color": "#ac6023" + }, + "markup.raw": { + "color": "#215584" + }, + "markup.raw.inline": { + "color": "#215584" + }, + "markup.raw.block": { + "color": "#215584" + }, + "diff.plus": { + "color": "#216cab" + }, + "diff.minus": { + "color": "#ac6023" + }, + "diff.delta": { + "color": "#ffca00" + }, + "link_text": { + "color": "#009fff" + }, + "link_uri": { + "color": "#8836c7" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#009fff" + }, + "title": { + "color": "#ac6023", + "font_weight": 700 + }, + "predictive": { + "color": "#8a8a8a", + "font_style": "italic" + } + } + } + }, + { + "name": "Pierre Light Soft", + "appearance": "light", + "style": { + "background": "#f7f7f7", + "surface.background": "#f7f7f7", + "elevated_surface.background": "#fafafa", + "drop_target.background": "#009fff26", + "editor.background": "#ffffff", + "editor.foreground": "#525252", + "editor.gutter.background": "#ffffff", + "editor.active_line.background": "#dfebff8c", + "editor.active_line_number": "#737373", + "editor.line_number": "#8a8a8a", + "editor.highlighted_line.background": "#dfebff59", + "editor.indent_guide": "#ededed", + "editor.indent_guide_active": "#e5e5e5", + "editor.invisible": "#a3a3a3", + "editor.wrap_guide": "#ededed", + "editor.active_wrap_guide": "#e5e5e5", + "editor.document_highlight.read_background": "#009fff1a", + "editor.document_highlight.write_background": "#009fff2e", + "editor.document_highlight.bracket_background": "#009fff33", + "editor.subheader.background": "#f7f7f7", + "text": "#525252", + "text.muted": "#8a8a8a", + "text.placeholder": "#a3a3a3", + "text.disabled": "#a3a3a3", + "text.accent": "#009fff", + "border": "#e5e5e5", + "border.variant": "#ededed", + "border.focused": "#009fff", + "border.selected": "#009fff", + "border.transparent": "transparent", + "border.disabled": "#d4d4d4", + "element.background": "#f5f5f5", + "element.hover": "#dfebff80", + "element.active": "#dfebffb3", + "element.selected": "#dfebffcc", + "element.disabled": "#f5f5f580", + "ghost_element.background": "transparent", + "ghost_element.hover": "#dfebff59", + "ghost_element.active": "#dfebff8c", + "ghost_element.selected": "#dfebffa6", + "ghost_element.disabled": "transparent", + "icon": "#737373", + "icon.muted": "#8a8a8a", + "icon.disabled": "#a3a3a3", + "icon.placeholder": "#a3a3a3", + "icon.accent": "#009fff", + "link_text.hover": "#009fff", + "error": "#ff2e3f", + "error.background": "#ff2e3f1a", + "error.border": "#ff2e3f4d", + "warning": "#009fff", + "warning.background": "#009fff1a", + "warning.border": "#009fff4d", + "success": "#07c480", + "success.background": "#07c4801a", + "success.border": "#07c4804d", + "info": "#08c0ef", + "info.background": "#08c0ef1a", + "info.border": "#08c0ef4d", + "hint": "#8a8a8a", + "hint.background": "#8a8a8a1a", + "hint.border": "#8a8a8a33", + "predictive": "#a3a3a3", + "predictive.background": "#a3a3a31a", + "predictive.border": "#a3a3a333", + "unreachable": "#a3a3a3", + "unreachable.background": "#a3a3a30d", + "unreachable.border": "#a3a3a31a", + "created": "#07c480", + "created.background": "#07c4801a", + "created.border": "#07c4804d", + "modified": "#009fff", + "modified.background": "#009fff1a", + "modified.border": "#009fff4d", + "deleted": "#ff2e3f", + "deleted.background": "#ff2e3f1a", + "deleted.border": "#ff2e3f4d", + "conflict": "#7b43f8", + "conflict.background": "#7b43f81a", + "conflict.border": "#7b43f84d", + "hidden": "#a3a3a3", + "hidden.background": "#a3a3a30d", + "hidden.border": "#a3a3a31a", + "ignored": "#8a8a8a", + "ignored.background": "#8a8a8a0d", + "ignored.border": "#8a8a8a1a", + "renamed": "#08c0ef", + "renamed.background": "#08c0ef1a", + "renamed.border": "#08c0ef4d", + "search.match_background": "#ffca004d", + "tab_bar.background": "#f7f7f7", + "tab.active_background": "#f7f7f7", + "tab.inactive_background": "#f7f7f7", + "toolbar.background": "#f7f7f7", + "title_bar.background": "#f7f7f7", + "title_bar.inactive_background": "#f7f7f7", + "panel.background": "#f7f7f7", + "panel.focused_border": "#009fff", + "status_bar.background": "#f7f7f7", + "scrollbar.thumb.background": "#a3a3a34d", + "scrollbar.thumb.hover_background": "#a3a3a380", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#f7f7f7", + "terminal.foreground": "#737373", + "terminal.bright_foreground": "#525252", + "terminal.dim_foreground": "#8a8a8a", + "terminal.ansi.black": "#1d1d1d", + "terminal.ansi.red": "#ff2e3f", + "terminal.ansi.green": "#0dbe4e", + "terminal.ansi.yellow": "#ffca00", + "terminal.ansi.blue": "#009fff", + "terminal.ansi.magenta": "#e130ac", + "terminal.ansi.cyan": "#08c0ef", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#1d1d1d", + "terminal.ansi.bright_red": "#ff2e3f", + "terminal.ansi.bright_green": "#86c427", + "terminal.ansi.bright_yellow": "#ffca00", + "terminal.ansi.bright_blue": "#009fff", + "terminal.ansi.bright_magenta": "#e130ac", + "terminal.ansi.bright_cyan": "#08c0ef", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#009fff", + "background": "#009fff", + "selection": "#009fff40" + }, + { + "cursor": "#07c480", + "background": "#07c480", + "selection": "#07c48040" + }, + { + "cursor": "#ff678d", + "background": "#ff678d", + "selection": "#ff678d40" + }, + { + "cursor": "#9d6afb", + "background": "#9d6afb", + "selection": "#9d6afb40" + }, + { + "cursor": "#0dbe4e", + "background": "#0dbe4e", + "selection": "#0dbe4e40" + }, + { + "cursor": "#ffca00", + "background": "#ffca00", + "selection": "#ffca0040" + }, + { + "cursor": "#d568ea", + "background": "#d568ea", + "selection": "#d568ea40" + }, + { + "cursor": "#08c0ef", + "background": "#08c0ef", + "selection": "#08c0ef40" + } + ], + "syntax": { + "comment": { + "color": "#8a8a8a" + }, + "comment.doc": { + "color": "#8a8a8a" + }, + "string": { + "color": "#0dbe4e" + }, + "string.escape": { + "color": "#00cab1" + }, + "string.regex": { + "color": "#00c5d2" + }, + "string.special": { + "color": "#00cab1" + }, + "string.special.symbol": { + "color": "#ffca00" + }, + "number": { + "color": "#08c0ef" + }, + "constant": { + "color": "#ffca00" + }, + "boolean": { + "color": "#08c0ef" + }, + "keyword": { + "color": "#ff678d" + }, + "keyword.operator": { + "color": "#68cdf2" + }, + "function": { + "color": "#9d6afb" + }, + "function.method": { + "color": "#9d6afb" + }, + "function.builtin": { + "color": "#9d6afb" + }, + "function.special.definition": { + "color": "#9d6afb" + }, + "function.call": { + "color": "#9d6afb" + }, + "type": { + "color": "#d568ea" + }, + "type.builtin": { + "color": "#d568ea" + }, + "constructor": { + "color": "#d568ea" + }, + "variable": { + "color": "#fe8c2c" + }, + "variable.builtin": { + "color": "#ffab16" + }, + "variable.member": { + "color": "#fe8c2c" + }, + "variable.parameter": { + "color": "#737373" + }, + "variable.special": { + "color": "#ffab16" + }, + "property": { + "color": "#fe8c2c" + }, + "property.css": { + "color": "#009fff" + }, + "property.definition": { + "color": "#009fff" + }, + "property_name": { + "color": "#009fff" + }, + "value": { + "color": "#08c0ef" + }, + "constant.css": { + "color": "#ffca00" + }, + "string.plain": { + "color": "#08c0ef" + }, + "plain_value": { + "color": "#08c0ef" + }, + "tag.css": { + "color": "#ff5d36" + }, + "tag_name": { + "color": "#ff5d36" + }, + "class": { + "color": "#07c480" + }, + "class_name": { + "color": "#07c480" + }, + "selector.class": { + "color": "#07c480" + }, + "selector.id": { + "color": "#9d6afb" + }, + "id_name": { + "color": "#9d6afb" + }, + "selector.pseudo": { + "color": "#68cdf2" + }, + "pseudo_class_selector": { + "color": "#68cdf2" + }, + "pseudo_element_selector": { + "color": "#68cdf2" + }, + "keyword.directive": { + "color": "#ff678d" + }, + "keyword.control.at-rule": { + "color": "#ff678d" + }, + "at_keyword": { + "color": "#ff678d" + }, + "variable.scss": { + "color": "#fe8c2c" + }, + "variable.css": { + "color": "#fe8c2c" + }, + "property.custom": { + "color": "#fe8c2c" + }, + "unit": { + "color": "#08c0ef" + }, + "number.unit": { + "color": "#08c0ef" + }, + "color": { + "color": "#ffca00" + }, + "constant.color": { + "color": "#ffca00" + }, + "keyword.important": { + "color": "#ff678d" + }, + "variable.language": { + "color": "#ffab16" + }, + "this": { + "color": "#ffab16" + }, + "self": { + "color": "#ffab16" + }, + "type.class": { + "color": "#d568ea" + }, + "property.object": { + "color": "#fe8c2c" + }, + "property_identifier": { + "color": "#fe8c2c" + }, + "shorthand_property_identifier": { + "color": "#fe8c2c" + }, + "shorthand_property_identifier_pattern": { + "color": "#fe8c2c" + }, + "method_definition": { + "color": "#9d6afb" + }, + "function.method.call": { + "color": "#9d6afb" + }, + "string.template": { + "color": "#0dbe4e" + }, + "template_string": { + "color": "#0dbe4e" + }, + "tag.jsx": { + "color": "#ff5d36" + }, + "tag.component": { + "color": "#d568ea" + }, + "punctuation": { + "color": "#737373" + }, + "punctuation.bracket": { + "color": "#737373" + }, + "punctuation.delimiter": { + "color": "#737373" + }, + "punctuation.list_marker": { + "color": "#737373" + }, + "punctuation.special": { + "color": "#ff678d" + }, + "operator": { + "color": "#68cdf2" + }, + "tag": { + "color": "#ff5d36" + }, + "attribute": { + "color": "#07c480" + }, + "label": { + "color": "#ffab16" + }, + "namespace": { + "color": "#ffab16" + }, + "decorator": { + "color": "#69b1ff" + }, + "attribute.builtin": { + "color": "#69b1ff" + }, + "embedded": { + "color": "#525252" + }, + "preproc": { + "color": "#ff678d" + }, + "text.literal": { + "color": "#0dbe4e" + }, + "markup.heading": { + "color": "#ff5d36", + "font_weight": 700 + }, + "markup.bold": { + "color": "#ffca00", + "font_weight": 700 + }, + "markup.italic": { + "color": "#ff678d", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#8a8a8a" + }, + "markup.link.url": { + "color": "#009fff" + }, + "markup.link.text": { + "color": "#9d6afb" + }, + "markup.quote": { + "color": "#8a8a8a", + "font_style": "italic" + }, + "markup.list": { + "color": "#ff5d36" + }, + "markup.list.numbered": { + "color": "#ff5d36" + }, + "markup.list.unnumbered": { + "color": "#ff5d36" + }, + "markup.raw": { + "color": "#0dbe4e" + }, + "markup.raw.inline": { + "color": "#0dbe4e" + }, + "markup.raw.block": { + "color": "#0dbe4e" + }, + "diff.plus": { + "color": "#07c480" + }, + "diff.minus": { + "color": "#ff2e3f" + }, + "diff.delta": { + "color": "#ffca00" + }, + "link_text": { + "color": "#009fff" + }, + "link_uri": { + "color": "#ff678d" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#009fff" + }, + "title": { + "color": "#ff5d36", + "font_weight": 700 + }, + "predictive": { + "color": "#a3a3a3", + "font_style": "italic" + } + } + } + }, + { + "name": "Pierre Light Tritanopia", + "appearance": "light", + "style": { + "background": "#f5f5f5", + "surface.background": "#f5f5f5", + "elevated_surface.background": "#f7f7f7", + "drop_target.background": "#009fff26", + "editor.background": "#ffffff", + "editor.foreground": "#0a0a0a", + "editor.gutter.background": "#ffffff", + "editor.active_line.background": "#dfebff8c", + "editor.active_line_number": "#525252", + "editor.line_number": "#737373", + "editor.highlighted_line.background": "#dfebff59", + "editor.indent_guide": "#e5e5e5", + "editor.indent_guide_active": "#d4d4d4", + "editor.invisible": "#8a8a8a", + "editor.wrap_guide": "#e5e5e5", + "editor.active_wrap_guide": "#d4d4d4", + "editor.document_highlight.read_background": "#009fff1a", + "editor.document_highlight.write_background": "#009fff2e", + "editor.document_highlight.bracket_background": "#009fff33", + "editor.subheader.background": "#f5f5f5", + "text": "#0a0a0a", + "text.muted": "#737373", + "text.placeholder": "#8a8a8a", + "text.disabled": "#8a8a8a", + "text.accent": "#009fff", + "border": "#d4d4d4", + "border.variant": "#e5e5e5", + "border.focused": "#009fff", + "border.selected": "#009fff", + "border.transparent": "transparent", + "border.disabled": "#d4d4d4", + "element.background": "#ededed", + "element.hover": "#dfebff80", + "element.active": "#dfebffb3", + "element.selected": "#dfebffcc", + "element.disabled": "#ededed80", + "ghost_element.background": "transparent", + "ghost_element.hover": "#dfebff59", + "ghost_element.active": "#dfebff8c", + "ghost_element.selected": "#dfebffa6", + "ghost_element.disabled": "transparent", + "icon": "#525252", + "icon.muted": "#737373", + "icon.disabled": "#8a8a8a", + "icon.placeholder": "#8a8a8a", + "icon.accent": "#009fff", + "link_text.hover": "#009fff", + "error": "#d5512f", + "error.background": "#d5512f1a", + "error.border": "#d5512f4d", + "warning": "#009fff", + "warning.background": "#009fff1a", + "warning.border": "#009fff4d", + "success": "#1e858e", + "success.background": "#1e858e1a", + "success.border": "#1e858e4d", + "info": "#1a85d4", + "info.background": "#1a85d41a", + "info.border": "#1a85d44d", + "hint": "#737373", + "hint.background": "#7373731a", + "hint.border": "#73737333", + "predictive": "#8a8a8a", + "predictive.background": "#8a8a8a1a", + "predictive.border": "#8a8a8a33", + "unreachable": "#8a8a8a", + "unreachable.background": "#8a8a8a0d", + "unreachable.border": "#8a8a8a1a", + "created": "#1e858e", + "created.background": "#1e858e1a", + "created.border": "#1e858e4d", + "modified": "#009fff", + "modified.background": "#009fff1a", + "modified.border": "#009fff4d", + "deleted": "#d5512f", + "deleted.background": "#d5512f1a", + "deleted.border": "#d5512f4d", + "conflict": "#992a75", + "conflict.background": "#992a751a", + "conflict.border": "#992a754d", + "hidden": "#8a8a8a", + "hidden.background": "#8a8a8a0d", + "hidden.border": "#8a8a8a1a", + "ignored": "#737373", + "ignored.background": "#7373730d", + "ignored.border": "#7373731a", + "renamed": "#1a85d4", + "renamed.background": "#1a85d41a", + "renamed.border": "#1a85d44d", + "search.match_background": "#ffab164d", + "tab_bar.background": "#f5f5f5", + "tab.active_background": "#f5f5f5", + "tab.inactive_background": "#f5f5f5", + "toolbar.background": "#f5f5f5", + "title_bar.background": "#f5f5f5", + "title_bar.inactive_background": "#f5f5f5", + "panel.background": "#f5f5f5", + "panel.focused_border": "#009fff", + "status_bar.background": "#f5f5f5", + "scrollbar.thumb.background": "#8a8a8a4d", + "scrollbar.thumb.hover_background": "#8a8a8a80", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#f5f5f5", + "terminal.foreground": "#525252", + "terminal.bright_foreground": "#0a0a0a", + "terminal.dim_foreground": "#737373", + "terminal.ansi.black": "#1d1d1d", + "terminal.ansi.red": "#d5512f", + "terminal.ansi.green": "#1e858e", + "terminal.ansi.yellow": "#d5901c", + "terminal.ansi.blue": "#1a85d4", + "terminal.ansi.magenta": "#992a75", + "terminal.ansi.cyan": "#17a5af", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#1d1d1d", + "terminal.ansi.bright_red": "#ff5d36", + "terminal.ansi.bright_green": "#17a5af", + "terminal.ansi.bright_yellow": "#ffab16", + "terminal.ansi.bright_blue": "#009fff", + "terminal.ansi.bright_magenta": "#bd2e90", + "terminal.ansi.bright_cyan": "#00c5d2", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#009fff", + "background": "#009fff", + "selection": "#009fff40" + }, + { + "cursor": "#1e858e", + "background": "#1e858e", + "selection": "#1e858e40" + }, + { + "cursor": "#a631be", + "background": "#a631be", + "selection": "#a631be40" + }, + { + "cursor": "#216cab", + "background": "#216cab", + "selection": "#216cab40" + }, + { + "cursor": "#1e858e", + "background": "#1e858e", + "selection": "#1e858e40" + }, + { + "cursor": "#ffab16", + "background": "#ffab16", + "selection": "#ffab1640" + }, + { + "cursor": "#bd2e90", + "background": "#bd2e90", + "selection": "#bd2e9040" + }, + { + "cursor": "#1a85d4", + "background": "#1a85d4", + "selection": "#1a85d440" + } + ], + "syntax": { + "comment": { + "color": "#737373" + }, + "comment.doc": { + "color": "#737373" + }, + "string": { + "color": "#1e858e" + }, + "string.escape": { + "color": "#1e858e" + }, + "string.regex": { + "color": "#1e858e" + }, + "string.special": { + "color": "#1e858e" + }, + "string.special.symbol": { + "color": "#ac741d" + }, + "number": { + "color": "#1a85d4" + }, + "constant": { + "color": "#ac741d" + }, + "boolean": { + "color": "#1a85d4" + }, + "keyword": { + "color": "#a631be" + }, + "keyword.operator": { + "color": "#1e858e" + }, + "function": { + "color": "#216cab" + }, + "function.method": { + "color": "#216cab" + }, + "function.builtin": { + "color": "#216cab" + }, + "function.special.definition": { + "color": "#216cab" + }, + "function.call": { + "color": "#216cab" + }, + "type": { + "color": "#bd2e90" + }, + "type.builtin": { + "color": "#bd2e90" + }, + "constructor": { + "color": "#bd2e90" + }, + "variable": { + "color": "#ad4529" + }, + "variable.builtin": { + "color": "#d5512f" + }, + "variable.member": { + "color": "#ad4529" + }, + "variable.parameter": { + "color": "#636363" + }, + "variable.special": { + "color": "#d5512f" + }, + "property": { + "color": "#ad4529" + }, + "property.css": { + "color": "#009fff" + }, + "property.definition": { + "color": "#009fff" + }, + "property_name": { + "color": "#009fff" + }, + "value": { + "color": "#1a85d4" + }, + "constant.css": { + "color": "#ac741d" + }, + "string.plain": { + "color": "#1a85d4" + }, + "plain_value": { + "color": "#1a85d4" + }, + "tag.css": { + "color": "#d5512f" + }, + "tag_name": { + "color": "#d5512f" + }, + "class": { + "color": "#1e858e" + }, + "class_name": { + "color": "#1e858e" + }, + "selector.class": { + "color": "#1e858e" + }, + "selector.id": { + "color": "#216cab" + }, + "id_name": { + "color": "#216cab" + }, + "selector.pseudo": { + "color": "#1e858e" + }, + "pseudo_class_selector": { + "color": "#1e858e" + }, + "pseudo_element_selector": { + "color": "#1e858e" + }, + "keyword.directive": { + "color": "#a631be" + }, + "keyword.control.at-rule": { + "color": "#a631be" + }, + "at_keyword": { + "color": "#a631be" + }, + "variable.scss": { + "color": "#ad4529" + }, + "variable.css": { + "color": "#ad4529" + }, + "property.custom": { + "color": "#ad4529" + }, + "unit": { + "color": "#1a85d4" + }, + "number.unit": { + "color": "#1a85d4" + }, + "color": { + "color": "#ac741d" + }, + "constant.color": { + "color": "#ac741d" + }, + "keyword.important": { + "color": "#a631be" + }, + "variable.language": { + "color": "#d5512f" + }, + "this": { + "color": "#d5512f" + }, + "self": { + "color": "#d5512f" + }, + "type.class": { + "color": "#bd2e90" + }, + "property.object": { + "color": "#ad4529" + }, + "property_identifier": { + "color": "#ad4529" + }, + "shorthand_property_identifier": { + "color": "#ad4529" + }, + "shorthand_property_identifier_pattern": { + "color": "#ad4529" + }, + "method_definition": { + "color": "#216cab" + }, + "function.method.call": { + "color": "#216cab" + }, + "string.template": { + "color": "#1e858e" + }, + "template_string": { + "color": "#1e858e" + }, + "tag.jsx": { + "color": "#d5512f" + }, + "tag.component": { + "color": "#bd2e90" + }, + "punctuation": { + "color": "#636363" + }, + "punctuation.bracket": { + "color": "#636363" + }, + "punctuation.delimiter": { + "color": "#636363" + }, + "punctuation.list_marker": { + "color": "#636363" + }, + "punctuation.special": { + "color": "#a631be" + }, + "operator": { + "color": "#1e858e" + }, + "tag": { + "color": "#d5512f" + }, + "attribute": { + "color": "#1e858e" + }, + "label": { + "color": "#d5512f" + }, + "namespace": { + "color": "#d5512f" + }, + "decorator": { + "color": "#1a85d4" + }, + "attribute.builtin": { + "color": "#1a85d4" + }, + "embedded": { + "color": "#0a0a0a" + }, + "preproc": { + "color": "#a631be" + }, + "text.literal": { + "color": "#1e858e" + }, + "markup.heading": { + "color": "#d5512f", + "font_weight": 700 + }, + "markup.bold": { + "color": "#ac741d", + "font_weight": 700 + }, + "markup.italic": { + "color": "#a631be", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#737373" + }, + "markup.link.url": { + "color": "#009fff" + }, + "markup.link.text": { + "color": "#216cab" + }, + "markup.quote": { + "color": "#737373", + "font_style": "italic" + }, + "markup.list": { + "color": "#d5512f" + }, + "markup.list.numbered": { + "color": "#d5512f" + }, + "markup.list.unnumbered": { + "color": "#d5512f" + }, + "markup.raw": { + "color": "#1e858e" + }, + "markup.raw.inline": { + "color": "#1e858e" + }, + "markup.raw.block": { + "color": "#1e858e" + }, + "diff.plus": { + "color": "#1e858e" + }, + "diff.minus": { + "color": "#d5512f" + }, + "diff.delta": { + "color": "#ffab16" + }, + "link_text": { + "color": "#009fff" + }, + "link_uri": { + "color": "#a631be" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#009fff" + }, + "title": { + "color": "#d5512f", + "font_weight": 700 + }, + "predictive": { + "color": "#8a8a8a", + "font_style": "italic" + } + } + } + }, + { + "name": "Pierre Dark", + "appearance": "dark", + "style": { + "background": "#171717", + "surface.background": "#171717", + "elevated_surface.background": "#101010", + "drop_target.background": "#009fff26", + "editor.background": "#0a0a0a", + "editor.foreground": "#fafafa", + "editor.gutter.background": "#0a0a0a", + "editor.active_line.background": "#19283c8c", + "editor.active_line_number": "#a3a3a3", + "editor.line_number": "#737373", + "editor.highlighted_line.background": "#19283c59", + "editor.indent_guide": "#1d1d1d", + "editor.indent_guide_active": "#262626", + "editor.invisible": "#636363", + "editor.wrap_guide": "#1d1d1d", + "editor.active_wrap_guide": "#262626", + "editor.document_highlight.read_background": "#009fff26", + "editor.document_highlight.write_background": "#009fff40", + "editor.document_highlight.bracket_background": "#009fff33", + "editor.subheader.background": "#171717", + "text": "#fafafa", + "text.muted": "#737373", + "text.placeholder": "#636363", + "text.disabled": "#636363", + "text.accent": "#009fff", + "border": "#1d1d1d", + "border.variant": "#262626", + "border.focused": "#009fff", + "border.selected": "#009fff", + "border.transparent": "transparent", + "border.disabled": "#262626", + "element.background": "#1d1d1d", + "element.hover": "#19283c80", + "element.active": "#19283cb3", + "element.selected": "#19283c99", + "element.disabled": "#1d1d1d80", + "ghost_element.background": "transparent", + "ghost_element.hover": "#19283c59", + "ghost_element.active": "#19283c8c", + "ghost_element.selected": "#19283c80", + "ghost_element.disabled": "transparent", + "icon": "#a3a3a3", + "icon.muted": "#737373", + "icon.disabled": "#636363", + "icon.placeholder": "#636363", + "icon.accent": "#009fff", + "link_text.hover": "#009fff", + "error": "#ff2e3f", + "error.background": "#ff2e3f1a", + "error.border": "#ff2e3f4d", + "warning": "#009fff", + "warning.background": "#009fff1a", + "warning.border": "#009fff4d", + "success": "#07c480", + "success.background": "#07c4801a", + "success.border": "#07c4804d", + "info": "#08c0ef", + "info.background": "#08c0ef1a", + "info.border": "#08c0ef4d", + "hint": "#737373", + "hint.background": "#7373731a", + "hint.border": "#73737333", + "predictive": "#636363", + "predictive.background": "#6363631a", + "predictive.border": "#63636333", + "unreachable": "#636363", + "unreachable.background": "#6363630d", + "unreachable.border": "#6363631a", + "created": "#07c480", + "created.background": "#07c4801a", + "created.border": "#07c4804d", + "modified": "#009fff", + "modified.background": "#009fff1a", + "modified.border": "#009fff4d", + "deleted": "#ff2e3f", + "deleted.background": "#ff2e3f1a", + "deleted.border": "#ff2e3f4d", + "conflict": "#7b43f8", + "conflict.background": "#7b43f81a", + "conflict.border": "#7b43f84d", + "hidden": "#636363", + "hidden.background": "#6363630d", + "hidden.border": "#6363631a", + "ignored": "#737373", + "ignored.background": "#7373730d", + "ignored.border": "#7373731a", + "renamed": "#08c0ef", + "renamed.background": "#08c0ef1a", + "renamed.border": "#08c0ef4d", + "search.match_background": "#ffca004d", + "tab_bar.background": "#171717", + "tab.active_background": "#171717", + "tab.inactive_background": "#171717", + "toolbar.background": "#171717", + "title_bar.background": "#171717", + "title_bar.inactive_background": "#171717", + "panel.background": "#171717", + "panel.focused_border": "#009fff", + "status_bar.background": "#171717", + "scrollbar.thumb.background": "#6363634d", + "scrollbar.thumb.hover_background": "#63636380", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#171717", + "terminal.foreground": "#a3a3a3", + "terminal.bright_foreground": "#fafafa", + "terminal.dim_foreground": "#737373", + "terminal.ansi.black": "#171717", + "terminal.ansi.red": "#ff2e3f", + "terminal.ansi.green": "#0dbe4e", + "terminal.ansi.yellow": "#ffca00", + "terminal.ansi.blue": "#009fff", + "terminal.ansi.magenta": "#e130ac", + "terminal.ansi.cyan": "#08c0ef", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#171717", + "terminal.ansi.bright_red": "#ff2e3f", + "terminal.ansi.bright_green": "#86c427", + "terminal.ansi.bright_yellow": "#ffca00", + "terminal.ansi.bright_blue": "#009fff", + "terminal.ansi.bright_magenta": "#e130ac", + "terminal.ansi.bright_cyan": "#08c0ef", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#009fff", + "background": "#009fff", + "selection": "#009fff40" + }, + { + "cursor": "#07c480", + "background": "#07c480", + "selection": "#07c48040" + }, + { + "cursor": "#ff678d", + "background": "#ff678d", + "selection": "#ff678d40" + }, + { + "cursor": "#9d6afb", + "background": "#9d6afb", + "selection": "#9d6afb40" + }, + { + "cursor": "#5ecc71", + "background": "#5ecc71", + "selection": "#5ecc7140" + }, + { + "cursor": "#ffca00", + "background": "#ffca00", + "selection": "#ffca0040" + }, + { + "cursor": "#d568ea", + "background": "#d568ea", + "selection": "#d568ea40" + }, + { + "cursor": "#08c0ef", + "background": "#08c0ef", + "selection": "#08c0ef40" + } + ], + "syntax": { + "comment": { + "color": "#737373" + }, + "comment.doc": { + "color": "#737373" + }, + "string": { + "color": "#5ecc71" + }, + "string.escape": { + "color": "#61d5c0" + }, + "string.regex": { + "color": "#64d1db" + }, + "string.special": { + "color": "#61d5c0" + }, + "string.special.symbol": { + "color": "#ffd452" + }, + "number": { + "color": "#68cdf2" + }, + "constant": { + "color": "#ffd452" + }, + "boolean": { + "color": "#68cdf2" + }, + "keyword": { + "color": "#ff678d" + }, + "keyword.operator": { + "color": "#08c0ef" + }, + "function": { + "color": "#9d6afb" + }, + "function.method": { + "color": "#9d6afb" + }, + "function.builtin": { + "color": "#9d6afb" + }, + "function.special.definition": { + "color": "#9d6afb" + }, + "function.call": { + "color": "#9d6afb" + }, + "type": { + "color": "#d568ea" + }, + "type.builtin": { + "color": "#d568ea" + }, + "constructor": { + "color": "#d568ea" + }, + "variable": { + "color": "#ffa359" + }, + "variable.builtin": { + "color": "#ffab16" + }, + "variable.member": { + "color": "#ffa359" + }, + "variable.parameter": { + "color": "#a3a3a3" + }, + "variable.special": { + "color": "#ffab16" + }, + "property": { + "color": "#ffa359" + }, + "property.css": { + "color": "#009fff" + }, + "property.definition": { + "color": "#009fff" + }, + "property_name": { + "color": "#009fff" + }, + "value": { + "color": "#68cdf2" + }, + "constant.css": { + "color": "#ffd452" + }, + "string.plain": { + "color": "#68cdf2" + }, + "plain_value": { + "color": "#68cdf2" + }, + "tag.css": { + "color": "#ff855e" + }, + "tag_name": { + "color": "#ff855e" + }, + "class": { + "color": "#60d199" + }, + "class_name": { + "color": "#60d199" + }, + "selector.class": { + "color": "#60d199" + }, + "selector.id": { + "color": "#9d6afb" + }, + "id_name": { + "color": "#9d6afb" + }, + "selector.pseudo": { + "color": "#08c0ef" + }, + "pseudo_class_selector": { + "color": "#08c0ef" + }, + "pseudo_element_selector": { + "color": "#08c0ef" + }, + "keyword.directive": { + "color": "#ff678d" + }, + "keyword.control.at-rule": { + "color": "#ff678d" + }, + "at_keyword": { + "color": "#ff678d" + }, + "variable.scss": { + "color": "#ffa359" + }, + "variable.css": { + "color": "#ffa359" + }, + "property.custom": { + "color": "#ffa359" + }, + "unit": { + "color": "#68cdf2" + }, + "number.unit": { + "color": "#68cdf2" + }, + "color": { + "color": "#ffd452" + }, + "constant.color": { + "color": "#ffd452" + }, + "keyword.important": { + "color": "#ff678d" + }, + "variable.language": { + "color": "#ffab16" + }, + "this": { + "color": "#ffab16" + }, + "self": { + "color": "#ffab16" + }, + "type.class": { + "color": "#d568ea" + }, + "property.object": { + "color": "#ffa359" + }, + "property_identifier": { + "color": "#ffa359" + }, + "shorthand_property_identifier": { + "color": "#ffa359" + }, + "shorthand_property_identifier_pattern": { + "color": "#ffa359" + }, + "method_definition": { + "color": "#9d6afb" + }, + "function.method.call": { + "color": "#9d6afb" + }, + "string.template": { + "color": "#5ecc71" + }, + "template_string": { + "color": "#5ecc71" + }, + "tag.jsx": { + "color": "#ff855e" + }, + "tag.component": { + "color": "#d568ea" + }, + "punctuation": { + "color": "#636363" + }, + "punctuation.bracket": { + "color": "#636363" + }, + "punctuation.delimiter": { + "color": "#636363" + }, + "punctuation.list_marker": { + "color": "#636363" + }, + "punctuation.special": { + "color": "#ff678d" + }, + "operator": { + "color": "#08c0ef" + }, + "tag": { + "color": "#ff855e" + }, + "attribute": { + "color": "#60d199" + }, + "label": { + "color": "#ffab16" + }, + "namespace": { + "color": "#ffab16" + }, + "decorator": { + "color": "#69b1ff" + }, + "attribute.builtin": { + "color": "#69b1ff" + }, + "embedded": { + "color": "#fafafa" + }, + "preproc": { + "color": "#ff678d" + }, + "text.literal": { + "color": "#5ecc71" + }, + "markup.heading": { + "color": "#ff855e", + "font_weight": 700 + }, + "markup.bold": { + "color": "#ffd452", + "font_weight": 700 + }, + "markup.italic": { + "color": "#ff678d", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#737373" + }, + "markup.link.url": { + "color": "#009fff" + }, + "markup.link.text": { + "color": "#9d6afb" + }, + "markup.quote": { + "color": "#737373", + "font_style": "italic" + }, + "markup.list": { + "color": "#ff855e" + }, + "markup.list.numbered": { + "color": "#ff855e" + }, + "markup.list.unnumbered": { + "color": "#ff855e" + }, + "markup.raw": { + "color": "#5ecc71" + }, + "markup.raw.inline": { + "color": "#5ecc71" + }, + "markup.raw.block": { + "color": "#5ecc71" + }, + "diff.plus": { + "color": "#07c480" + }, + "diff.minus": { + "color": "#ff2e3f" + }, + "diff.delta": { + "color": "#ffca00" + }, + "link_text": { + "color": "#009fff" + }, + "link_uri": { + "color": "#ff678d" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#009fff" + }, + "title": { + "color": "#ff855e", + "font_weight": 700 + }, + "predictive": { + "color": "#636363", + "font_style": "italic" + } + } + } + }, + { + "name": "Pierre Dark Protanopia & Deuteranopia", + "appearance": "dark", + "style": { + "background": "#171717", + "surface.background": "#171717", + "elevated_surface.background": "#101010", + "drop_target.background": "#009fff26", + "editor.background": "#0a0a0a", + "editor.foreground": "#fafafa", + "editor.gutter.background": "#0a0a0a", + "editor.active_line.background": "#19283c8c", + "editor.active_line_number": "#a3a3a3", + "editor.line_number": "#737373", + "editor.highlighted_line.background": "#19283c59", + "editor.indent_guide": "#1d1d1d", + "editor.indent_guide_active": "#262626", + "editor.invisible": "#636363", + "editor.wrap_guide": "#1d1d1d", + "editor.active_wrap_guide": "#262626", + "editor.document_highlight.read_background": "#009fff26", + "editor.document_highlight.write_background": "#009fff40", + "editor.document_highlight.bracket_background": "#009fff33", + "editor.subheader.background": "#171717", + "text": "#fafafa", + "text.muted": "#737373", + "text.placeholder": "#636363", + "text.disabled": "#636363", + "text.accent": "#009fff", + "border": "#1d1d1d", + "border.variant": "#262626", + "border.focused": "#009fff", + "border.selected": "#009fff", + "border.transparent": "transparent", + "border.disabled": "#262626", + "element.background": "#1d1d1d", + "element.hover": "#19283c80", + "element.active": "#19283cb3", + "element.selected": "#19283c99", + "element.disabled": "#1d1d1d80", + "ghost_element.background": "transparent", + "ghost_element.hover": "#19283c59", + "ghost_element.active": "#19283c8c", + "ghost_element.selected": "#19283c80", + "ghost_element.disabled": "transparent", + "icon": "#a3a3a3", + "icon.muted": "#737373", + "icon.disabled": "#636363", + "icon.placeholder": "#636363", + "icon.accent": "#009fff", + "link_text.hover": "#009fff", + "error": "#fe8c2c", + "error.background": "#fe8c2c1a", + "error.border": "#fe8c2c4d", + "warning": "#009fff", + "warning.background": "#009fff1a", + "warning.border": "#009fff4d", + "success": "#97c4ff", + "success.background": "#97c4ff1a", + "success.border": "#97c4ff4d", + "info": "#68cdf2", + "info.background": "#68cdf21a", + "info.border": "#68cdf24d", + "hint": "#737373", + "hint.background": "#7373731a", + "hint.border": "#73737333", + "predictive": "#636363", + "predictive.background": "#6363631a", + "predictive.border": "#63636333", + "unreachable": "#636363", + "unreachable.background": "#6363630d", + "unreachable.border": "#6363631a", + "created": "#97c4ff", + "created.background": "#97c4ff1a", + "created.border": "#97c4ff4d", + "modified": "#009fff", + "modified.background": "#009fff1a", + "modified.border": "#009fff4d", + "deleted": "#fe8c2c", + "deleted.background": "#fe8c2c1a", + "deleted.border": "#fe8c2c4d", + "conflict": "#b969f3", + "conflict.background": "#b969f31a", + "conflict.border": "#b969f34d", + "hidden": "#636363", + "hidden.background": "#6363630d", + "hidden.border": "#6363631a", + "ignored": "#737373", + "ignored.background": "#7373730d", + "ignored.border": "#7373731a", + "renamed": "#68cdf2", + "renamed.background": "#68cdf21a", + "renamed.border": "#68cdf24d", + "search.match_background": "#ffde804d", + "tab_bar.background": "#171717", + "tab.active_background": "#171717", + "tab.inactive_background": "#171717", + "toolbar.background": "#171717", + "title_bar.background": "#171717", + "title_bar.inactive_background": "#171717", + "panel.background": "#171717", + "panel.focused_border": "#009fff", + "status_bar.background": "#171717", + "scrollbar.thumb.background": "#6363634d", + "scrollbar.thumb.hover_background": "#63636380", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#171717", + "terminal.foreground": "#a3a3a3", + "terminal.bright_foreground": "#fafafa", + "terminal.dim_foreground": "#737373", + "terminal.ansi.black": "#171717", + "terminal.ansi.red": "#ffa359", + "terminal.ansi.green": "#69b1ff", + "terminal.ansi.yellow": "#ffd452", + "terminal.ansi.blue": "#009fff", + "terminal.ansi.magenta": "#b969f3", + "terminal.ansi.cyan": "#68cdf2", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#171717", + "terminal.ansi.bright_red": "#ffba82", + "terminal.ansi.bright_green": "#97c4ff", + "terminal.ansi.bright_yellow": "#ffde80", + "terminal.ansi.bright_blue": "#69b1ff", + "terminal.ansi.bright_magenta": "#ce90f7", + "terminal.ansi.bright_cyan": "#96d9f6", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#009fff", + "background": "#009fff", + "selection": "#009fff40" + }, + { + "cursor": "#97c4ff", + "background": "#97c4ff", + "selection": "#97c4ff40" + }, + { + "cursor": "#b969f3", + "background": "#b969f3", + "selection": "#b969f340" + }, + { + "cursor": "#ba8ffd", + "background": "#ba8ffd", + "selection": "#ba8ffd40" + }, + { + "cursor": "#97c4ff", + "background": "#97c4ff", + "selection": "#97c4ff40" + }, + { + "cursor": "#ffde80", + "background": "#ffde80", + "selection": "#ffde8040" + }, + { + "cursor": "#e290f0", + "background": "#e290f0", + "selection": "#e290f040" + }, + { + "cursor": "#68cdf2", + "background": "#68cdf2", + "selection": "#68cdf240" + } + ], + "syntax": { + "comment": { + "color": "#737373" + }, + "comment.doc": { + "color": "#737373" + }, + "string": { + "color": "#97c4ff" + }, + "string.escape": { + "color": "#64d1db" + }, + "string.regex": { + "color": "#68cdf2" + }, + "string.special": { + "color": "#64d1db" + }, + "string.special.symbol": { + "color": "#ffcc81" + }, + "number": { + "color": "#96d9f6" + }, + "constant": { + "color": "#ffcc81" + }, + "boolean": { + "color": "#96d9f6" + }, + "keyword": { + "color": "#b969f3" + }, + "keyword.operator": { + "color": "#08c0ef" + }, + "function": { + "color": "#ba8ffd" + }, + "function.method": { + "color": "#ba8ffd" + }, + "function.builtin": { + "color": "#ba8ffd" + }, + "function.special.definition": { + "color": "#ba8ffd" + }, + "function.call": { + "color": "#ba8ffd" + }, + "type": { + "color": "#e290f0" + }, + "type.builtin": { + "color": "#e290f0" + }, + "constructor": { + "color": "#e290f0" + }, + "variable": { + "color": "#ffa359" + }, + "variable.builtin": { + "color": "#ffbc56" + }, + "variable.member": { + "color": "#ffa359" + }, + "variable.parameter": { + "color": "#a3a3a3" + }, + "variable.special": { + "color": "#ffbc56" + }, + "property": { + "color": "#ffa359" + }, + "property.css": { + "color": "#009fff" + }, + "property.definition": { + "color": "#009fff" + }, + "property_name": { + "color": "#009fff" + }, + "value": { + "color": "#96d9f6" + }, + "constant.css": { + "color": "#ffcc81" + }, + "string.plain": { + "color": "#96d9f6" + }, + "plain_value": { + "color": "#96d9f6" + }, + "tag.css": { + "color": "#ffa359" + }, + "tag_name": { + "color": "#ffa359" + }, + "class": { + "color": "#ffbc56" + }, + "class_name": { + "color": "#ffbc56" + }, + "selector.class": { + "color": "#ffbc56" + }, + "selector.id": { + "color": "#ba8ffd" + }, + "id_name": { + "color": "#ba8ffd" + }, + "selector.pseudo": { + "color": "#08c0ef" + }, + "pseudo_class_selector": { + "color": "#08c0ef" + }, + "pseudo_element_selector": { + "color": "#08c0ef" + }, + "keyword.directive": { + "color": "#b969f3" + }, + "keyword.control.at-rule": { + "color": "#b969f3" + }, + "at_keyword": { + "color": "#b969f3" + }, + "variable.scss": { + "color": "#ffa359" + }, + "variable.css": { + "color": "#ffa359" + }, + "property.custom": { + "color": "#ffa359" + }, + "unit": { + "color": "#96d9f6" + }, + "number.unit": { + "color": "#96d9f6" + }, + "color": { + "color": "#ffcc81" + }, + "constant.color": { + "color": "#ffcc81" + }, + "keyword.important": { + "color": "#b969f3" + }, + "variable.language": { + "color": "#ffbc56" + }, + "this": { + "color": "#ffbc56" + }, + "self": { + "color": "#ffbc56" + }, + "type.class": { + "color": "#e290f0" + }, + "property.object": { + "color": "#ffa359" + }, + "property_identifier": { + "color": "#ffa359" + }, + "shorthand_property_identifier": { + "color": "#ffa359" + }, + "shorthand_property_identifier_pattern": { + "color": "#ffa359" + }, + "method_definition": { + "color": "#ba8ffd" + }, + "function.method.call": { + "color": "#ba8ffd" + }, + "string.template": { + "color": "#97c4ff" + }, + "template_string": { + "color": "#97c4ff" + }, + "tag.jsx": { + "color": "#ffa359" + }, + "tag.component": { + "color": "#e290f0" + }, + "punctuation": { + "color": "#636363" + }, + "punctuation.bracket": { + "color": "#636363" + }, + "punctuation.delimiter": { + "color": "#636363" + }, + "punctuation.list_marker": { + "color": "#636363" + }, + "punctuation.special": { + "color": "#b969f3" + }, + "operator": { + "color": "#08c0ef" + }, + "tag": { + "color": "#ffa359" + }, + "attribute": { + "color": "#ffbc56" + }, + "label": { + "color": "#ffbc56" + }, + "namespace": { + "color": "#ffbc56" + }, + "decorator": { + "color": "#69b1ff" + }, + "attribute.builtin": { + "color": "#69b1ff" + }, + "embedded": { + "color": "#fafafa" + }, + "preproc": { + "color": "#b969f3" + }, + "text.literal": { + "color": "#97c4ff" + }, + "markup.heading": { + "color": "#ffa359", + "font_weight": 700 + }, + "markup.bold": { + "color": "#ffcc81", + "font_weight": 700 + }, + "markup.italic": { + "color": "#b969f3", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#737373" + }, + "markup.link.url": { + "color": "#009fff" + }, + "markup.link.text": { + "color": "#ba8ffd" + }, + "markup.quote": { + "color": "#737373", + "font_style": "italic" + }, + "markup.list": { + "color": "#ffa359" + }, + "markup.list.numbered": { + "color": "#ffa359" + }, + "markup.list.unnumbered": { + "color": "#ffa359" + }, + "markup.raw": { + "color": "#97c4ff" + }, + "markup.raw.inline": { + "color": "#97c4ff" + }, + "markup.raw.block": { + "color": "#97c4ff" + }, + "diff.plus": { + "color": "#97c4ff" + }, + "diff.minus": { + "color": "#fe8c2c" + }, + "diff.delta": { + "color": "#ffde80" + }, + "link_text": { + "color": "#009fff" + }, + "link_uri": { + "color": "#b969f3" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#009fff" + }, + "title": { + "color": "#ffa359", + "font_weight": 700 + }, + "predictive": { + "color": "#636363", + "font_style": "italic" + } + } + } + }, + { + "name": "Pierre Dark Soft", + "appearance": "dark", + "style": { + "background": "#101010", + "surface.background": "#101010", + "elevated_surface.background": "#1d1d1d", + "drop_target.background": "#69b1ff26", + "editor.background": "#171717", + "editor.foreground": "#d4d4d4", + "editor.gutter.background": "#171717", + "editor.active_line.background": "#1f3e5e8c", + "editor.active_line_number": "#8a8a8a", + "editor.line_number": "#636363", + "editor.highlighted_line.background": "#1f3e5e59", + "editor.indent_guide": "#262626", + "editor.indent_guide_active": "#2c2c2c", + "editor.invisible": "#525252", + "editor.wrap_guide": "#262626", + "editor.active_wrap_guide": "#2c2c2c", + "editor.document_highlight.read_background": "#69b1ff26", + "editor.document_highlight.write_background": "#69b1ff40", + "editor.document_highlight.bracket_background": "#69b1ff33", + "editor.subheader.background": "#101010", + "text": "#d4d4d4", + "text.muted": "#636363", + "text.placeholder": "#525252", + "text.disabled": "#525252", + "text.accent": "#69b1ff", + "border": "#262626", + "border.variant": "#2c2c2c", + "border.focused": "#69b1ff", + "border.selected": "#69b1ff", + "border.transparent": "transparent", + "border.disabled": "#2c2c2c", + "element.background": "#262626", + "element.hover": "#1f3e5e80", + "element.active": "#1f3e5eb3", + "element.selected": "#1f3e5e99", + "element.disabled": "#26262680", + "ghost_element.background": "transparent", + "ghost_element.hover": "#1f3e5e59", + "ghost_element.active": "#1f3e5e8c", + "ghost_element.selected": "#1f3e5e80", + "ghost_element.disabled": "transparent", + "icon": "#8a8a8a", + "icon.muted": "#636363", + "icon.disabled": "#525252", + "icon.placeholder": "#525252", + "icon.accent": "#69b1ff", + "link_text.hover": "#69b1ff", + "error": "#ff6762", + "error.background": "#ff67621a", + "error.border": "#ff67624d", + "warning": "#69b1ff", + "warning.background": "#69b1ff1a", + "warning.border": "#69b1ff4d", + "success": "#60d199", + "success.background": "#60d1991a", + "success.border": "#60d1994d", + "info": "#68cdf2", + "info.background": "#68cdf21a", + "info.border": "#68cdf24d", + "hint": "#636363", + "hint.background": "#6363631a", + "hint.border": "#63636333", + "predictive": "#525252", + "predictive.background": "#5252521a", + "predictive.border": "#52525233", + "unreachable": "#525252", + "unreachable.background": "#5252520d", + "unreachable.border": "#5252521a", + "created": "#60d199", + "created.background": "#60d1991a", + "created.border": "#60d1994d", + "modified": "#69b1ff", + "modified.background": "#69b1ff1a", + "modified.border": "#69b1ff4d", + "deleted": "#ff6762", + "deleted.background": "#ff67621a", + "deleted.border": "#ff67624d", + "conflict": "#9d6afb", + "conflict.background": "#9d6afb1a", + "conflict.border": "#9d6afb4d", + "hidden": "#525252", + "hidden.background": "#5252520d", + "hidden.border": "#5252521a", + "ignored": "#636363", + "ignored.background": "#6363630d", + "ignored.border": "#6363631a", + "renamed": "#68cdf2", + "renamed.background": "#68cdf21a", + "renamed.border": "#68cdf24d", + "search.match_background": "#ffd4524d", + "tab_bar.background": "#101010", + "tab.active_background": "#101010", + "tab.inactive_background": "#101010", + "toolbar.background": "#101010", + "title_bar.background": "#101010", + "title_bar.inactive_background": "#101010", + "panel.background": "#101010", + "panel.focused_border": "#69b1ff", + "status_bar.background": "#101010", + "scrollbar.thumb.background": "#5252524d", + "scrollbar.thumb.hover_background": "#52525280", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#101010", + "terminal.foreground": "#8a8a8a", + "terminal.bright_foreground": "#d4d4d4", + "terminal.dim_foreground": "#636363", + "terminal.ansi.black": "#171717", + "terminal.ansi.red": "#ff2e3f", + "terminal.ansi.green": "#0dbe4e", + "terminal.ansi.yellow": "#ffca00", + "terminal.ansi.blue": "#009fff", + "terminal.ansi.magenta": "#e130ac", + "terminal.ansi.cyan": "#08c0ef", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#171717", + "terminal.ansi.bright_red": "#ff2e3f", + "terminal.ansi.bright_green": "#86c427", + "terminal.ansi.bright_yellow": "#ffca00", + "terminal.ansi.bright_blue": "#009fff", + "terminal.ansi.bright_magenta": "#e130ac", + "terminal.ansi.bright_cyan": "#08c0ef", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#69b1ff", + "background": "#69b1ff", + "selection": "#69b1ff40" + }, + { + "cursor": "#60d199", + "background": "#60d199", + "selection": "#60d19940" + }, + { + "cursor": "#ff91a8", + "background": "#ff91a8", + "selection": "#ff91a840" + }, + { + "cursor": "#ba8ffd", + "background": "#ba8ffd", + "selection": "#ba8ffd40" + }, + { + "cursor": "#8cda94", + "background": "#8cda94", + "selection": "#8cda9440" + }, + { + "cursor": "#ffd452", + "background": "#ffd452", + "selection": "#ffd45240" + }, + { + "cursor": "#e290f0", + "background": "#e290f0", + "selection": "#e290f040" + }, + { + "cursor": "#68cdf2", + "background": "#68cdf2", + "selection": "#68cdf240" + } + ], + "syntax": { + "comment": { + "color": "#636363" + }, + "comment.doc": { + "color": "#636363" + }, + "string": { + "color": "#8cda94" + }, + "string.escape": { + "color": "#8fe0d0" + }, + "string.regex": { + "color": "#92dde4" + }, + "string.special": { + "color": "#8fe0d0" + }, + "string.special.symbol": { + "color": "#ffde80" + }, + "number": { + "color": "#96d9f6" + }, + "constant": { + "color": "#ffde80" + }, + "boolean": { + "color": "#96d9f6" + }, + "keyword": { + "color": "#ff91a8" + }, + "keyword.operator": { + "color": "#68cdf2" + }, + "function": { + "color": "#ba8ffd" + }, + "function.method": { + "color": "#ba8ffd" + }, + "function.builtin": { + "color": "#ba8ffd" + }, + "function.special.definition": { + "color": "#ba8ffd" + }, + "function.call": { + "color": "#ba8ffd" + }, + "type": { + "color": "#e290f0" + }, + "type.builtin": { + "color": "#e290f0" + }, + "constructor": { + "color": "#e290f0" + }, + "variable": { + "color": "#ffba82" + }, + "variable.builtin": { + "color": "#ffbc56" + }, + "variable.member": { + "color": "#ffba82" + }, + "variable.parameter": { + "color": "#8a8a8a" + }, + "variable.special": { + "color": "#ffbc56" + }, + "property": { + "color": "#ffba82" + }, + "property.css": { + "color": "#69b1ff" + }, + "property.definition": { + "color": "#69b1ff" + }, + "property_name": { + "color": "#69b1ff" + }, + "value": { + "color": "#96d9f6" + }, + "constant.css": { + "color": "#ffde80" + }, + "string.plain": { + "color": "#96d9f6" + }, + "plain_value": { + "color": "#96d9f6" + }, + "tag.css": { + "color": "#ffa685" + }, + "tag_name": { + "color": "#ffa685" + }, + "class": { + "color": "#8eddb2" + }, + "class_name": { + "color": "#8eddb2" + }, + "selector.class": { + "color": "#8eddb2" + }, + "selector.id": { + "color": "#ba8ffd" + }, + "id_name": { + "color": "#ba8ffd" + }, + "selector.pseudo": { + "color": "#68cdf2" + }, + "pseudo_class_selector": { + "color": "#68cdf2" + }, + "pseudo_element_selector": { + "color": "#68cdf2" + }, + "keyword.directive": { + "color": "#ff91a8" + }, + "keyword.control.at-rule": { + "color": "#ff91a8" + }, + "at_keyword": { + "color": "#ff91a8" + }, + "variable.scss": { + "color": "#ffba82" + }, + "variable.css": { + "color": "#ffba82" + }, + "property.custom": { + "color": "#ffba82" + }, + "unit": { + "color": "#96d9f6" + }, + "number.unit": { + "color": "#96d9f6" + }, + "color": { + "color": "#ffde80" + }, + "constant.color": { + "color": "#ffde80" + }, + "keyword.important": { + "color": "#ff91a8" + }, + "variable.language": { + "color": "#ffbc56" + }, + "this": { + "color": "#ffbc56" + }, + "self": { + "color": "#ffbc56" + }, + "type.class": { + "color": "#e290f0" + }, + "property.object": { + "color": "#ffba82" + }, + "property_identifier": { + "color": "#ffba82" + }, + "shorthand_property_identifier": { + "color": "#ffba82" + }, + "shorthand_property_identifier_pattern": { + "color": "#ffba82" + }, + "method_definition": { + "color": "#ba8ffd" + }, + "function.method.call": { + "color": "#ba8ffd" + }, + "string.template": { + "color": "#8cda94" + }, + "template_string": { + "color": "#8cda94" + }, + "tag.jsx": { + "color": "#ffa685" + }, + "tag.component": { + "color": "#e290f0" + }, + "punctuation": { + "color": "#737373" + }, + "punctuation.bracket": { + "color": "#737373" + }, + "punctuation.delimiter": { + "color": "#737373" + }, + "punctuation.list_marker": { + "color": "#737373" + }, + "punctuation.special": { + "color": "#ff91a8" + }, + "operator": { + "color": "#68cdf2" + }, + "tag": { + "color": "#ffa685" + }, + "attribute": { + "color": "#8eddb2" + }, + "label": { + "color": "#ffbc56" + }, + "namespace": { + "color": "#ffbc56" + }, + "decorator": { + "color": "#97c4ff" + }, + "attribute.builtin": { + "color": "#97c4ff" + }, + "embedded": { + "color": "#d4d4d4" + }, + "preproc": { + "color": "#ff91a8" + }, + "text.literal": { + "color": "#8cda94" + }, + "markup.heading": { + "color": "#ffa685", + "font_weight": 700 + }, + "markup.bold": { + "color": "#ffde80", + "font_weight": 700 + }, + "markup.italic": { + "color": "#ff91a8", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#636363" + }, + "markup.link.url": { + "color": "#69b1ff" + }, + "markup.link.text": { + "color": "#ba8ffd" + }, + "markup.quote": { + "color": "#636363", + "font_style": "italic" + }, + "markup.list": { + "color": "#ffa685" + }, + "markup.list.numbered": { + "color": "#ffa685" + }, + "markup.list.unnumbered": { + "color": "#ffa685" + }, + "markup.raw": { + "color": "#8cda94" + }, + "markup.raw.inline": { + "color": "#8cda94" + }, + "markup.raw.block": { + "color": "#8cda94" + }, + "diff.plus": { + "color": "#60d199" + }, + "diff.minus": { + "color": "#ff6762" + }, + "diff.delta": { + "color": "#ffd452" + }, + "link_text": { + "color": "#69b1ff" + }, + "link_uri": { + "color": "#ff91a8" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#69b1ff" + }, + "title": { + "color": "#ffa685", + "font_weight": 700 + }, + "predictive": { + "color": "#525252", + "font_style": "italic" + } + } + } + }, + { + "name": "Pierre Dark Tritanopia", + "appearance": "dark", + "style": { + "background": "#171717", + "surface.background": "#171717", + "elevated_surface.background": "#101010", + "drop_target.background": "#009fff26", + "editor.background": "#0a0a0a", + "editor.foreground": "#fafafa", + "editor.gutter.background": "#0a0a0a", + "editor.active_line.background": "#19283c8c", + "editor.active_line_number": "#a3a3a3", + "editor.line_number": "#737373", + "editor.highlighted_line.background": "#19283c59", + "editor.indent_guide": "#1d1d1d", + "editor.indent_guide_active": "#262626", + "editor.invisible": "#636363", + "editor.wrap_guide": "#1d1d1d", + "editor.active_wrap_guide": "#262626", + "editor.document_highlight.read_background": "#009fff26", + "editor.document_highlight.write_background": "#009fff40", + "editor.document_highlight.bracket_background": "#009fff33", + "editor.subheader.background": "#171717", + "text": "#fafafa", + "text.muted": "#737373", + "text.placeholder": "#636363", + "text.disabled": "#636363", + "text.accent": "#009fff", + "border": "#1d1d1d", + "border.variant": "#262626", + "border.focused": "#009fff", + "border.selected": "#009fff", + "border.transparent": "transparent", + "border.disabled": "#262626", + "element.background": "#1d1d1d", + "element.hover": "#19283c80", + "element.active": "#19283cb3", + "element.selected": "#19283c99", + "element.disabled": "#1d1d1d80", + "ghost_element.background": "transparent", + "ghost_element.hover": "#19283c59", + "ghost_element.active": "#19283c8c", + "ghost_element.selected": "#19283c80", + "ghost_element.disabled": "transparent", + "icon": "#a3a3a3", + "icon.muted": "#737373", + "icon.disabled": "#636363", + "icon.placeholder": "#636363", + "icon.accent": "#009fff", + "link_text.hover": "#009fff", + "error": "#ff855e", + "error.background": "#ff855e1a", + "error.border": "#ff855e4d", + "warning": "#009fff", + "warning.background": "#009fff1a", + "warning.border": "#009fff4d", + "success": "#92dde4", + "success.background": "#92dde41a", + "success.border": "#92dde44d", + "info": "#69b1ff", + "info.background": "#69b1ff1a", + "info.border": "#69b1ff4d", + "hint": "#737373", + "hint.background": "#7373731a", + "hint.border": "#73737333", + "predictive": "#636363", + "predictive.background": "#6363631a", + "predictive.border": "#63636333", + "unreachable": "#636363", + "unreachable.background": "#6363630d", + "unreachable.border": "#6363631a", + "created": "#92dde4", + "created.background": "#92dde41a", + "created.border": "#92dde44d", + "modified": "#009fff", + "modified.background": "#009fff1a", + "modified.border": "#009fff4d", + "deleted": "#ff855e", + "deleted.background": "#ff855e1a", + "deleted.border": "#ff855e4d", + "conflict": "#ea68bc", + "conflict.background": "#ea68bc1a", + "conflict.border": "#ea68bc4d", + "hidden": "#636363", + "hidden.background": "#6363630d", + "hidden.border": "#6363631a", + "ignored": "#737373", + "ignored.background": "#7373730d", + "ignored.border": "#7373731a", + "renamed": "#69b1ff", + "renamed.background": "#69b1ff1a", + "renamed.border": "#69b1ff4d", + "search.match_background": "#ffbc564d", + "tab_bar.background": "#171717", + "tab.active_background": "#171717", + "tab.inactive_background": "#171717", + "toolbar.background": "#171717", + "title_bar.background": "#171717", + "title_bar.inactive_background": "#171717", + "panel.background": "#171717", + "panel.focused_border": "#009fff", + "status_bar.background": "#171717", + "scrollbar.thumb.background": "#6363634d", + "scrollbar.thumb.hover_background": "#63636380", + "scrollbar.thumb.border": "transparent", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "transparent", + "terminal.background": "#171717", + "terminal.foreground": "#a3a3a3", + "terminal.bright_foreground": "#fafafa", + "terminal.dim_foreground": "#737373", + "terminal.ansi.black": "#171717", + "terminal.ansi.red": "#ff855e", + "terminal.ansi.green": "#64d1db", + "terminal.ansi.yellow": "#ffbc56", + "terminal.ansi.blue": "#69b1ff", + "terminal.ansi.magenta": "#ea68bc", + "terminal.ansi.cyan": "#92dde4", + "terminal.ansi.white": "#bcbcbc", + "terminal.ansi.bright_black": "#171717", + "terminal.ansi.bright_red": "#ffa685", + "terminal.ansi.bright_green": "#92dde4", + "terminal.ansi.bright_yellow": "#ffcc81", + "terminal.ansi.bright_blue": "#97c4ff", + "terminal.ansi.bright_magenta": "#f191cc", + "terminal.ansi.bright_cyan": "#92dde4", + "terminal.ansi.bright_white": "#bcbcbc", + "players": [ + { + "cursor": "#009fff", + "background": "#009fff", + "selection": "#009fff40" + }, + { + "cursor": "#92dde4", + "background": "#92dde4", + "selection": "#92dde440" + }, + { + "cursor": "#d568ea", + "background": "#d568ea", + "selection": "#d568ea40" + }, + { + "cursor": "#97c4ff", + "background": "#97c4ff", + "selection": "#97c4ff40" + }, + { + "cursor": "#92dde4", + "background": "#92dde4", + "selection": "#92dde440" + }, + { + "cursor": "#ffbc56", + "background": "#ffbc56", + "selection": "#ffbc5640" + }, + { + "cursor": "#ea68bc", + "background": "#ea68bc", + "selection": "#ea68bc40" + }, + { + "cursor": "#69b1ff", + "background": "#69b1ff", + "selection": "#69b1ff40" + } + ], + "syntax": { + "comment": { + "color": "#737373" + }, + "comment.doc": { + "color": "#737373" + }, + "string": { + "color": "#92dde4" + }, + "string.escape": { + "color": "#64d1db" + }, + "string.regex": { + "color": "#64d1db" + }, + "string.special": { + "color": "#64d1db" + }, + "string.special.symbol": { + "color": "#ffcc81" + }, + "number": { + "color": "#69b1ff" + }, + "constant": { + "color": "#ffcc81" + }, + "boolean": { + "color": "#69b1ff" + }, + "keyword": { + "color": "#d568ea" + }, + "keyword.operator": { + "color": "#00c5d2" + }, + "function": { + "color": "#97c4ff" + }, + "function.method": { + "color": "#97c4ff" + }, + "function.builtin": { + "color": "#97c4ff" + }, + "function.special.definition": { + "color": "#97c4ff" + }, + "function.call": { + "color": "#97c4ff" + }, + "type": { + "color": "#ea68bc" + }, + "type.builtin": { + "color": "#ea68bc" + }, + "constructor": { + "color": "#ea68bc" + }, + "variable": { + "color": "#ff855e" + }, + "variable.builtin": { + "color": "#ff855e" + }, + "variable.member": { + "color": "#ff855e" + }, + "variable.parameter": { + "color": "#a3a3a3" + }, + "variable.special": { + "color": "#ff855e" + }, + "property": { + "color": "#ff855e" + }, + "property.css": { + "color": "#009fff" + }, + "property.definition": { + "color": "#009fff" + }, + "property_name": { + "color": "#009fff" + }, + "value": { + "color": "#69b1ff" + }, + "constant.css": { + "color": "#ffcc81" + }, + "string.plain": { + "color": "#69b1ff" + }, + "plain_value": { + "color": "#69b1ff" + }, + "tag.css": { + "color": "#ff855e" + }, + "tag_name": { + "color": "#ff855e" + }, + "class": { + "color": "#64d1db" + }, + "class_name": { + "color": "#64d1db" + }, + "selector.class": { + "color": "#64d1db" + }, + "selector.id": { + "color": "#97c4ff" + }, + "id_name": { + "color": "#97c4ff" + }, + "selector.pseudo": { + "color": "#00c5d2" + }, + "pseudo_class_selector": { + "color": "#00c5d2" + }, + "pseudo_element_selector": { + "color": "#00c5d2" + }, + "keyword.directive": { + "color": "#d568ea" + }, + "keyword.control.at-rule": { + "color": "#d568ea" + }, + "at_keyword": { + "color": "#d568ea" + }, + "variable.scss": { + "color": "#ff855e" + }, + "variable.css": { + "color": "#ff855e" + }, + "property.custom": { + "color": "#ff855e" + }, + "unit": { + "color": "#69b1ff" + }, + "number.unit": { + "color": "#69b1ff" + }, + "color": { + "color": "#ffcc81" + }, + "constant.color": { + "color": "#ffcc81" + }, + "keyword.important": { + "color": "#d568ea" + }, + "variable.language": { + "color": "#ff855e" + }, + "this": { + "color": "#ff855e" + }, + "self": { + "color": "#ff855e" + }, + "type.class": { + "color": "#ea68bc" + }, + "property.object": { + "color": "#ff855e" + }, + "property_identifier": { + "color": "#ff855e" + }, + "shorthand_property_identifier": { + "color": "#ff855e" + }, + "shorthand_property_identifier_pattern": { + "color": "#ff855e" + }, + "method_definition": { + "color": "#97c4ff" + }, + "function.method.call": { + "color": "#97c4ff" + }, + "string.template": { + "color": "#92dde4" + }, + "template_string": { + "color": "#92dde4" + }, + "tag.jsx": { + "color": "#ff855e" + }, + "tag.component": { + "color": "#ea68bc" + }, + "punctuation": { + "color": "#636363" + }, + "punctuation.bracket": { + "color": "#636363" + }, + "punctuation.delimiter": { + "color": "#636363" + }, + "punctuation.list_marker": { + "color": "#636363" + }, + "punctuation.special": { + "color": "#d568ea" + }, + "operator": { + "color": "#00c5d2" + }, + "tag": { + "color": "#ff855e" + }, + "attribute": { + "color": "#64d1db" + }, + "label": { + "color": "#ff855e" + }, + "namespace": { + "color": "#ff855e" + }, + "decorator": { + "color": "#69b1ff" + }, + "attribute.builtin": { + "color": "#69b1ff" + }, + "embedded": { + "color": "#fafafa" + }, + "preproc": { + "color": "#d568ea" + }, + "text.literal": { + "color": "#92dde4" + }, + "markup.heading": { + "color": "#ff855e", + "font_weight": 700 + }, + "markup.bold": { + "color": "#ffcc81", + "font_weight": 700 + }, + "markup.italic": { + "color": "#d568ea", + "font_style": "italic" + }, + "markup.strikethrough": { + "color": "#737373" + }, + "markup.link.url": { + "color": "#009fff" + }, + "markup.link.text": { + "color": "#97c4ff" + }, + "markup.quote": { + "color": "#737373", + "font_style": "italic" + }, + "markup.list": { + "color": "#ff855e" + }, + "markup.list.numbered": { + "color": "#ff855e" + }, + "markup.list.unnumbered": { + "color": "#ff855e" + }, + "markup.raw": { + "color": "#92dde4" + }, + "markup.raw.inline": { + "color": "#92dde4" + }, + "markup.raw.block": { + "color": "#92dde4" + }, + "diff.plus": { + "color": "#92dde4" + }, + "diff.minus": { + "color": "#ff855e" + }, + "diff.delta": { + "color": "#ffbc56" + }, + "link_text": { + "color": "#009fff" + }, + "link_uri": { + "color": "#d568ea" + }, + "emphasis": { + "font_style": "italic" + }, + "emphasis.strong": { + "font_weight": 700 + }, + "primary": { + "color": "#009fff" + }, + "title": { + "color": "#ff855e", + "font_weight": 700 + }, + "predictive": { + "color": "#636363", + "font_style": "italic" + } + } + } + } + ] +} diff --git a/packages/theming/package.json b/packages/theming/package.json index 1a99ef5f4..0c04fbbf5 100644 --- a/packages/theming/package.json +++ b/packages/theming/package.json @@ -51,7 +51,7 @@ }, "dependencies": {}, "devDependencies": { - "@pierre/theme": "catalog:", + "@pierre/theme": "workspace:*", "@shikijs/themes": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", @@ -62,7 +62,7 @@ "typescript": "catalog:" }, "peerDependencies": { - "@pierre/theme": "^1.0.0", + "@pierre/theme": "^1.1.0", "@shikijs/themes": "^3.0.0 || ^4.0.0", "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0", diff --git a/packages/theming/src/collections/pierre.ts b/packages/theming/src/collections/pierre.ts index 176008a69..0cc029c24 100644 --- a/packages/theming/src/collections/pierre.ts +++ b/packages/theming/src/collections/pierre.ts @@ -12,23 +12,23 @@ const PIERRE_COLLECTION = 'pierre'; * Pierre theme order */ -const LIGHT_PIERRE_THEMES = [ - 'pierre-light', - 'pierre-light-soft', - // 'pierre-light-vibrant', -] as const; const DARK_PIERRE_THEMES = [ 'pierre-dark', 'pierre-dark-soft', - // 'pierre-dark-vibrant', + 'pierre-dark-vibrant', + 'pierre-dark-protanopia-deuteranopia', + 'pierre-dark-tritanopia', +] as const; +const LIGHT_PIERRE_THEMES = [ + 'pierre-light', + 'pierre-light-soft', + 'pierre-light-vibrant', + 'pierre-light-protanopia-deuteranopia', + 'pierre-light-tritanopia', ] as const; const PIERRE_THEMES = [...LIGHT_PIERRE_THEMES, ...DARK_PIERRE_THEMES] as const; type PierreThemeName = (typeof PIERRE_THEMES)[number]; -type AvailablePierreThemeName = - | PierreThemeName - | 'pierre-dark-vibrant' - | 'pierre-light-vibrant'; const LIGHT_PIERRE_THEME_NAMES = new Set(LIGHT_PIERRE_THEMES); @@ -45,10 +45,16 @@ const PIERRE_THEME_DISPLAY_NAMES = { 'pierre-dark': 'Pierre Dark', 'pierre-dark-soft': 'Pierre Dark Soft', 'pierre-dark-vibrant': 'Pierre Dark Vibrant', + 'pierre-dark-protanopia-deuteranopia': + 'Pierre Dark Protanopia & Deuteranopia', + 'pierre-dark-tritanopia': 'Pierre Dark Tritanopia', 'pierre-light': 'Pierre Light', 'pierre-light-soft': 'Pierre Light Soft', 'pierre-light-vibrant': 'Pierre Light Vibrant', -} as const satisfies Record; + 'pierre-light-protanopia-deuteranopia': + 'Pierre Light Protanopia & Deuteranopia', + 'pierre-light-tritanopia': 'Pierre Light Tritanopia', +} as const satisfies Record; /* * Pierre theme loaders @@ -58,32 +64,29 @@ const PIERRE_THEME_IMPORTS = { 'pierre-dark': () => import('@pierre/theme/pierre-dark'), 'pierre-dark-soft': () => import('@pierre/theme/pierre-dark-soft'), 'pierre-dark-vibrant': () => import('@pierre/theme/pierre-dark-vibrant'), + 'pierre-dark-protanopia-deuteranopia': () => + import('@pierre/theme/pierre-dark-protanopia-deuteranopia'), + 'pierre-dark-tritanopia': () => + import('@pierre/theme/pierre-dark-tritanopia'), 'pierre-light': () => import('@pierre/theme/pierre-light'), 'pierre-light-soft': () => import('@pierre/theme/pierre-light-soft'), 'pierre-light-vibrant': () => import('@pierre/theme/pierre-light-vibrant'), + 'pierre-light-protanopia-deuteranopia': () => + import('@pierre/theme/pierre-light-protanopia-deuteranopia'), + 'pierre-light-tritanopia': () => + import('@pierre/theme/pierre-light-tritanopia'), } as const satisfies Record< - AvailablePierreThemeName, + PierreThemeName, () => Promise<{ default: ThemeLike }> >; -function loadPierreTheme(name: PierreThemeName) { - return async () => { - const m = await PIERRE_THEME_IMPORTS[name](); - // TODO(@pierre/theme): publish each first-party theme with `name` set to - // its registry slug (e.g. "pierre-dark") instead of its display label - // ("Pierre Dark"). Until then, preserve the label as displayName metadata - // and patch the resolved theme's machine name before Shiki normalizes it. - return { ...m.default, name }; - }; -} - function createPierreTheme(name: PierreThemeName): ThemeDescriptor { return createTheme({ name, collection: PIERRE_COLLECTION, colorScheme: pierreColorScheme(name), displayName: PIERRE_THEME_DISPLAY_NAMES[name], - load: loadPierreTheme(name), + load: PIERRE_THEME_IMPORTS[name], }); } diff --git a/packages/theming/test/pierre.test.ts b/packages/theming/test/pierre.test.ts index 499ffd8ee..13042e214 100644 --- a/packages/theming/test/pierre.test.ts +++ b/packages/theming/test/pierre.test.ts @@ -8,16 +8,28 @@ describe('pierreThemes', () => { expect(pierreThemes.getThemeNames()).toEqual([ 'pierre-light', 'pierre-light-soft', + 'pierre-light-vibrant', + 'pierre-light-protanopia-deuteranopia', + 'pierre-light-tritanopia', 'pierre-dark', 'pierre-dark-soft', + 'pierre-dark-vibrant', + 'pierre-dark-protanopia-deuteranopia', + 'pierre-dark-tritanopia', ]); expect(pierreThemes.getThemeNames({ colorScheme: 'light' })).toEqual([ 'pierre-light', 'pierre-light-soft', + 'pierre-light-vibrant', + 'pierre-light-protanopia-deuteranopia', + 'pierre-light-tritanopia', ]); expect(pierreThemes.getThemeNames({ colorScheme: 'dark' })).toEqual([ 'pierre-dark', 'pierre-dark-soft', + 'pierre-dark-vibrant', + 'pierre-dark-protanopia-deuteranopia', + 'pierre-dark-tritanopia', ]); expect(pierreThemes.getThemes()[0]).toMatchObject({ name: 'pierre-light', diff --git a/packages/theming/test/shiki.test.ts b/packages/theming/test/shiki.test.ts index 866140882..7fc81ddd2 100644 --- a/packages/theming/test/shiki.test.ts +++ b/packages/theming/test/shiki.test.ts @@ -133,31 +133,49 @@ describe('shikiThemes descriptors', () => { describe('themes', () => { test('combines Pierre first, then Shiki, preserving filtered order', () => { - expect(themes.getThemeNames().slice(0, 6)).toEqual([ + expect(themes.getThemeNames().slice(0, 12)).toEqual([ 'pierre-light', 'pierre-light-soft', + 'pierre-light-vibrant', + 'pierre-light-protanopia-deuteranopia', + 'pierre-light-tritanopia', 'pierre-dark', 'pierre-dark-soft', + 'pierre-dark-vibrant', + 'pierre-dark-protanopia-deuteranopia', + 'pierre-dark-tritanopia', 'ayu-light', 'catppuccin-latte', ]); - expect(themes.getThemeNames({ colorScheme: 'light' }).slice(0, 4)).toEqual([ + expect(themes.getThemeNames({ colorScheme: 'light' }).slice(0, 7)).toEqual([ 'pierre-light', 'pierre-light-soft', + 'pierre-light-vibrant', + 'pierre-light-protanopia-deuteranopia', + 'pierre-light-tritanopia', 'ayu-light', 'catppuccin-latte', ]); - expect(themes.getThemeNames({ colorScheme: 'dark' }).slice(0, 4)).toEqual([ + expect(themes.getThemeNames({ colorScheme: 'dark' }).slice(0, 7)).toEqual([ 'pierre-dark', 'pierre-dark-soft', + 'pierre-dark-vibrant', + 'pierre-dark-protanopia-deuteranopia', + 'pierre-dark-tritanopia', 'andromeeda', 'aurora-x', ]); expect(themes.getThemeNames({ collection: 'pierre' })).toEqual([ 'pierre-light', 'pierre-light-soft', + 'pierre-light-vibrant', + 'pierre-light-protanopia-deuteranopia', + 'pierre-light-tritanopia', 'pierre-dark', 'pierre-dark-soft', + 'pierre-dark-vibrant', + 'pierre-dark-protanopia-deuteranopia', + 'pierre-dark-tritanopia', ]); }); diff --git a/tsconfig.json b/tsconfig.json index 44b91dd0b..3c5e8a248 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,9 @@ { "path": "packages/path-store/tsconfig.json" }, + { + "path": "packages/theme/tsconfig.json" + }, { "path": "packages/theming/tsconfig.json" }, From afce62f729ba32972ac7cb0b04b373b760f87bad Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher <239676+necolas@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:23:28 -0700 Subject: [PATCH 2/2] ci(theme): publish manually instead of on release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the release-triggered publish workflow so the theme package is never published automatically. The other publishable packages here already release this way — a deliberate, local `moon run` — which keeps marketplace and npm credentials out of any automated path. Replace it with manual moon tasks, one per target, each requiring only its own token: - `theme:publish-npm` publishes @pierre/theme to npm. - `theme:publish-vsce` publishes the VS Code extension (needs VSCE_PAT). - `theme:publish-ovsx` publishes to Open VSX (needs OVSX_PAT). Split the former combined publish-extensions script into publishVsce.ts and publishOvsx.ts so each marketplace can be released on its own, and document the flow in CONTRIBUTING. --- .github/workflows/theme-publish.yml | 51 ------------------- packages/theme/CONTRIBUTING.md | 15 ++++++ packages/theme/moon.yml | 32 ++++++++++-- .../{publishExtensions.ts => publishOvsx.ts} | 17 ++----- packages/theme/scripts/publishVsce.ts | 20 ++++++++ 5 files changed, 68 insertions(+), 67 deletions(-) delete mode 100644 .github/workflows/theme-publish.yml rename packages/theme/scripts/{publishExtensions.ts => publishOvsx.ts} (54%) create mode 100644 packages/theme/scripts/publishVsce.ts diff --git a/.github/workflows/theme-publish.yml b/.github/workflows/theme-publish.yml deleted file mode 100644 index ccfea9866..000000000 --- a/.github/workflows/theme-publish.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Publish Theme - -on: - release: - types: [published] - -permissions: - contents: read - -jobs: - extensions: - name: Publish VS Code and Open VSX extensions - runs-on: blacksmith-4vcpu-ubuntu-2404 - steps: - - name: Checkout code - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - - name: Set up moon and caches - uses: ./.github/actions/setup - - - name: Publish extensions - env: - OVSX_PAT: ${{ secrets.OPEN_VSX_TOKEN }} - VSCE_PAT: ${{ secrets.VSCE_PAT }} - run: moonx theme:publish-extensions --ignore-ci-checks - - npm: - name: Publish @pierre/theme to npm - runs-on: blacksmith-4vcpu-ubuntu-2404 - permissions: - contents: read - id-token: write - steps: - - name: Checkout code - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - - name: Set up moon and caches - uses: ./.github/actions/setup - - - name: Configure npm token - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: - printf '//registry.npmjs.org/:_authToken=%s\n' "$NODE_AUTH_TOKEN" > - ~/.npmrc - - - name: Publish to npm - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - working-directory: packages/theme - run: CI= bun publish --access public --provenance diff --git a/packages/theme/CONTRIBUTING.md b/packages/theme/CONTRIBUTING.md index 8793fcd6a..e8775fab2 100644 --- a/packages/theme/CONTRIBUTING.md +++ b/packages/theme/CONTRIBUTING.md @@ -103,6 +103,21 @@ normal-vs-simulated CVD proof sheet. | `moonx theme:package-vsix --ignore-ci-checks` | Temporarily applies the VSIX package name/README shim, then writes the `.vsix` file at the project root | | `moonx theme:dev --ignore-ci-checks` | Rebuilds themes on file change | +## Publishing + +Publishing is manual and deliberate: there is no release-triggered workflow, so +nothing ships without a maintainer running it. Release each target on its own +with the relevant token in the environment: + +- [ ] Bump the version in `package.json` +- [ ] **npm** — `moonx theme:publish-npm` +- [ ] **VS Marketplace** — `VSCE_PAT= moonx theme:publish-vsce` +- [ ] **Open VSX** — `OVSX_PAT= moonx theme:publish-ovsx` + +`build` runs automatically as a dependency of each task. The two extension +targets reuse the VSIX shim, so they publish the unscoped `pierre-theme` +extension with the package README. + ## Credit This theme was built on top of diff --git a/packages/theme/moon.yml b/packages/theme/moon.yml index b11787030..12ab75144 100644 --- a/packages/theme/moon.yml +++ b/packages/theme/moon.yml @@ -58,13 +58,39 @@ tasks: options: runInCI: 'skip' - publish-extensions: - command: 'bun scripts/publishExtensions.ts' + # Publishing is manual: there is no release-triggered workflow. A maintainer + # runs these directly with the relevant token in the environment. + publish-npm: + command: 'bun publish --access public' + deps: + - 'build' + options: + cache: false + runInCI: 'skip' + + publish-vsce: + command: 'bun scripts/publishVsce.ts' + deps: + - 'build' + inputs: + - 'package.json' + - 'scripts/publishVsce.ts' + - 'scripts/vsixPackageShim.ts' + - 'scripts/README.package.md' + - '.vscodeignore' + - 'themes/*.json' + - 'icon.png' + options: + cache: false + runInCI: 'skip' + + publish-ovsx: + command: 'bun scripts/publishOvsx.ts' deps: - 'build' inputs: - 'package.json' - - 'scripts/publishExtensions.ts' + - 'scripts/publishOvsx.ts' - 'scripts/vsixPackageShim.ts' - 'scripts/README.package.md' - '.vscodeignore' diff --git a/packages/theme/scripts/publishExtensions.ts b/packages/theme/scripts/publishOvsx.ts similarity index 54% rename from packages/theme/scripts/publishExtensions.ts rename to packages/theme/scripts/publishOvsx.ts index 555f45a62..5ae82ee81 100644 --- a/packages/theme/scripts/publishExtensions.ts +++ b/packages/theme/scripts/publishOvsx.ts @@ -2,28 +2,19 @@ import { execFileSync } from 'node:child_process'; import { packageRoot, withVsixPackageShim } from './vsixPackageShim'; -const vscePat = process.env.VSCE_PAT; +// Manual Open VSX publish. Publishing is intentionally not automated on release: +// it runs only when a maintainer invokes `moon run theme:publish-ovsx` with an +// Open VSX token in OVSX_PAT. const ovsxPat = process.env.OVSX_PAT; -if (vscePat === undefined || vscePat.length === 0) { - throw new Error('VSCE_PAT must be set to publish the VS Code extension'); -} - if (ovsxPat === undefined || ovsxPat.length === 0) { throw new Error('OVSX_PAT must be set to publish the Open VSX extension'); } withVsixPackageShim(() => { - const env = { ...process.env, OVSX_PAT: ovsxPat, VSCE_PAT: vscePat }; - - execFileSync('bunx', ['vsce', 'publish', '--no-dependencies'], { - cwd: packageRoot, - env, - stdio: 'inherit', - }); execFileSync('bunx', ['ovsx', 'publish', '--no-dependencies'], { cwd: packageRoot, - env, + env: { ...process.env, OVSX_PAT: ovsxPat }, stdio: 'inherit', }); }); diff --git a/packages/theme/scripts/publishVsce.ts b/packages/theme/scripts/publishVsce.ts new file mode 100644 index 000000000..40d31aaf5 --- /dev/null +++ b/packages/theme/scripts/publishVsce.ts @@ -0,0 +1,20 @@ +import { execFileSync } from 'node:child_process'; + +import { packageRoot, withVsixPackageShim } from './vsixPackageShim'; + +// Manual VS Marketplace publish. Publishing is intentionally not automated on +// release: it runs only when a maintainer invokes `moon run theme:publish-vsce` +// with a VS Marketplace token in VSCE_PAT. +const vscePat = process.env.VSCE_PAT; + +if (vscePat === undefined || vscePat.length === 0) { + throw new Error('VSCE_PAT must be set to publish the VS Code extension'); +} + +withVsixPackageShim(() => { + execFileSync('bunx', ['vsce', 'publish', '--no-dependencies'], { + cwd: packageRoot, + env: { ...process.env, VSCE_PAT: vscePat }, + stdio: 'inherit', + }); +});