diff --git a/src/ui/scss/main.scss b/src/ui/scss/main.scss index 8a4a6f4..92bccce 100644 --- a/src/ui/scss/main.scss +++ b/src/ui/scss/main.scss @@ -3,8 +3,8 @@ html { } body { - background-color: var(--background-color); - color: var(--color); + background-color: var(--color-background); + color: var(--color-foreground); font-family: var(--font-family); height: 100%; line-height: 1.4; @@ -35,7 +35,7 @@ canvas.snow { a { border: 0; - color: var(--link-color); + color: var(--color-link-foreground); font-weight: 400; outline: none; text-decoration: none; @@ -47,7 +47,7 @@ a { } &:focus { - outline-color: var(--focus-border-color); + outline-color: var(--color-focus-border); } } @@ -58,18 +58,18 @@ b { code, .shortcut-key { border-radius: 4px; - color: var(--color); + color: var(--color-foreground); padding: 2px 6px 0 6px; vertical-align: baseline; .vscode-dark & { - background-color: var(--background-color--lighten-15); - border-bottom: 2px solid var(--background-color--lighten-15); + background-color: var(--color-background--lighten-15); + border-bottom: 2px solid var(--color-background--lighten-15); } .vscode-light & { - background-color: var(--background-color--darken-15); - border-bottom: 2px solid var(--background-color--darken-15); + background-color: var(--color-background--darken-15); + border-bottom: 2px solid var(--color-background--darken-15); } } @@ -81,13 +81,13 @@ code, vertical-align: text-top; .vscode-dark & { - background-color: var(--background-color--lighten-15); - border-bottom: 2px solid var(--background-color--lighten-15); + background-color: var(--color-background--lighten-15); + border-bottom: 2px solid var(--color-background--lighten-15); } .vscode-light & { - background-color: var(--background-color--darken-15); - border-bottom: 2px solid var(--background-color--darken-15); + background-color: var(--color-background--darken-15); + border-bottom: 2px solid var(--color-background--darken-15); } } @@ -153,7 +153,7 @@ input[type='checkbox'] { } &[disabled] { - color: var(--color--75); + color: var(--color-foreground--75); cursor: default; } } @@ -161,7 +161,7 @@ input[type='checkbox'] { input[type='text'], input:not([type]) { background: none; - color: var(--color); + color: var(--color-foreground); margin: 0 0.75em; max-width: 300px; padding: 4px; @@ -176,7 +176,7 @@ input:not([type]) { } &:focus { - outline-color: var(--focus-border-color); + outline-color: var(--color-focus-border); .vscode-light & { background-color: rgba(255, 255, 255, 0.4); @@ -188,7 +188,7 @@ input:not([type]) { } &[disabled] { - color: var(--color--75); + color: var(--color-foreground--75); cursor: default; } @@ -208,17 +208,17 @@ section { padding: 1rem; .vscode-light & { - background-color: var(--background-color--darken-05); + background-color: var(--color-background--darken-05); } .vscode-dark & { - background-color: var(--background-color--lighten-05); + background-color: var(--color-background--lighten-05); } } select { background: none; - color: var(--color); + color: var(--color-foreground); cursor: pointer; margin: 0 0.75em; padding: 2px; @@ -232,7 +232,7 @@ select { } &:focus { - outline-color: var(--focus-border-color); + outline-color: var(--color-focus-border); .vscode-light & { background-color: rgba(255, 255, 255, 0.4); } @@ -243,22 +243,22 @@ select { } &[disabled] { - color: var(--color--75); + color: var(--color-foreground--75); cursor: default; } } select option { .vscode-light & { - background-color: var(--background-color--darken-05); + background-color: var(--color-background--darken-05); } .vscode-dark & { - background-color: var(--background-color--lighten-05); + background-color: var(--color-background--lighten-05); } &:focus { - outline-color: var(--focus-border-color); + outline-color: var(--color-focus-border); .vscode-light & { background-color: rgba(255, 255, 255, 0.4); } @@ -313,8 +313,8 @@ ul { &:hover { .vscode-light & { - background-color: var(--button-background-color--darken-30); - border-color: var(--button-background-color--darken-30); + background-color: var(--color-button-background--darken-30); + border-color: var(--color-button-background--darken-30); color: white !important; } .vscode-dark & { @@ -348,16 +348,16 @@ ul { } .button--flat-primary { - background-color: var(--button-background-color); - border: 1px solid var(--button-background-color); - color: var(--button-color) !important; + background-color: var(--color-button-background); + border: 1px solid var(--color-button-background); + color: var(--color-button-foreground) !important; font-weight: 600; transition: background-color 250ms, border-color 250ms, color 250ms; &:hover { .vscode-light & { - background-color: var(--button-background-color--darken-30); - border-color: var(--button-background-color--darken-30); + background-color: var(--color-button-background--darken-30); + border-color: var(--color-button-background--darken-30); color: white !important; } .vscode-dark & { @@ -405,11 +405,11 @@ ul { .about { font-size: 1em; - color: var(--color--75); + color: var(--color-foreground--75); margin: 3em 1em; b { - color: var(--color--85); + color: var(--color-foreground--85); } } @@ -418,12 +418,12 @@ ul { margin: 2em; .vscode-light & { - background-color: var(--background-color--darken-05); + background-color: var(--color-background--darken-05); box-shadow: inset 0 0 6px 0px rgba(0, 0, 0, 0.05); } .vscode-dark & { - background-color: var(--background-color--lighten-075); + background-color: var(--color-background--lighten-075); box-shadow: inset 0 0 6px 0px rgba(255, 255, 255, 0.075); } } @@ -498,7 +498,7 @@ ul { } .changelog__hint { - color: var(--color--75); + color: var(--color-foreground--75); font-weight: 200; margin: 1em; } @@ -533,11 +533,11 @@ ul { padding-top: 2em; .vscode-dark & { - border-top: 1px solid var(--background-color--lighten-30); + border-top: 1px solid var(--color-background--lighten-30); } .vscode-light & { - border-top: 1px solid var(--background-color--darken-30); + border-top: 1px solid var(--color-background--darken-30); } } @@ -630,7 +630,7 @@ ul { } .header__blurb { - color: var(--color--75); + color: var(--color-foreground--75); flex: 55% 2 1; font-size: 1.2em; font-weight: 200; @@ -643,13 +643,13 @@ ul { } .header__link { - color: var(--color); + color: var(--color-foreground); outline: none; &:hover, &:active, &:focus { - color: var(--color); + color: var(--color-foreground); outline: none; } } @@ -664,7 +664,7 @@ ul { } .header__subtitle { - color: var(--color--50); + color: var(--color-foreground--50); display: block; font-size: 2em; font-weight: 100; @@ -673,7 +673,7 @@ ul { } .icon { - background-color: var(--color); + background-color: var(--color-foreground); display: inline-block; height: 24px; margin-bottom: -9px; @@ -711,7 +711,7 @@ ul { } .label__hint { - color: var(--color--75); + color: var(--color-foreground--75); display: block; font-weight: 200; margin: 1em 2em; @@ -719,7 +719,7 @@ ul { .list-button { border: none; - color: var(--color); + color: var(--color-foreground); cursor: pointer; font-size: 1em; height: 5em; @@ -730,21 +730,21 @@ ul { width: calc(100% - 2px); .vscode-light & { - background-color: var(--background-color--darken-05); + background-color: var(--color-background--darken-05); } .vscode-dark & { - background-color: var(--background-color--lighten-05); + background-color: var(--color-background--lighten-05); } &:hover, &:focus { .vscode-light & { - background-color: var(--background-color--darken-075); + background-color: var(--color-background--darken-075); } .vscode-dark & { - background-color: var(--background-color--lighten-075); + background-color: var(--color-background--lighten-075); } } @@ -752,11 +752,11 @@ ul { outline: 0; .vscode-light & { - border: 1px solid var(--background-color--darken-15); + border: 1px solid var(--color-background--darken-15); } .vscode-dark & { - border: 1px solid var(--background-color--lighten-15); + border: 1px solid var(--color-background--lighten-15); } } } @@ -771,7 +771,7 @@ ul { } .list-button__detail { - color: var(--color--75); + color: var(--color-foreground--75); display: inline-block; overflow: hidden; text-overflow: ellipsis; @@ -785,7 +785,7 @@ ul { } .page-header--sticky { - background: var(--background-color); + background: var(--color-background); margin: 1em 0 1em 0; padding-bottom: 1em; position: sticky; @@ -823,12 +823,12 @@ ul { select, option { - background-color: var(--background-color) !important; + background-color: var(--color-background) !important; } } .page-header__subtitle { - color: var(--color--75); + color: var(--color-foreground--75); font-size: 1.2em; margin: 0.25em 0 0 0; } @@ -865,7 +865,7 @@ ul { position: relative; &:after { - background-color: var(--color--75); + background-color: var(--color-foreground--75); content: ''; height: 40px; -webkit-mask-image: url('data:image/svg+xml;utf8,'); @@ -900,7 +900,7 @@ ul { } .section__title-hint { - color: var(--color--75); + color: var(--color-foreground--75); font-weight: 200; margin: 0.25em 0; } @@ -985,13 +985,13 @@ ul { } .settings-group__header-hint { - color: var(--color--75); + color: var(--color-foreground--75); font-weight: 200; margin-top: -1em; } .settings-group__hint { - color: var(--color--75); + color: var(--color-foreground--75); font-weight: 200; margin-left: 2.3em; text-indent: -2.75em; @@ -1027,14 +1027,14 @@ ul { &[disabled] { label { - color: var(--color--75); + color: var(--color-foreground--75); cursor: default; } } } .settings-group__setting--small { - color: var(--color--75); + color: var(--color-foreground--75); font-size: 0.8em; margin-top: -0.75em; @@ -1049,7 +1049,7 @@ ul { } .setting__hint { - color: var(--color--50); + color: var(--color-foreground--50); font-size: 0.9em; margin: -1em 0 1em 1em; } diff --git a/src/ui/scss/popup.scss b/src/ui/scss/popup.scss index b3ef48d..237fce6 100644 --- a/src/ui/scss/popup.scss +++ b/src/ui/scss/popup.scss @@ -10,7 +10,7 @@ &:before { background: transparent; border: 12px solid transparent; - content: ""; + content: ''; left: 50%; position: absolute; pointer-events: none; @@ -18,32 +18,32 @@ z-index: 1001; .vscode-light & { - border-bottom-color: var(--background-color--darken-075); + border-bottom-color: var(--color-background--darken-075); } .vscode-dark & { - border-bottom-color: var(--background-color--lighten-075); + border-bottom-color: var(--color-background--lighten-075); } } .vscode-light & { - background: var(--background-color--darken-075); + background: var(--color-background--darken-075); } .vscode-dark & { - background: var(--background-color--lighten-075); + background: var(--color-background--lighten-075); } } .token-popup__hint { - color: var(--color--75); + color: var(--color-foreground--75); display: inline-block; font-weight: 200; margin: 1.25em 0.5em 0 0.25em; } .token-popup__title { - color: var(--color); + color: var(--color-foreground); font-weight: 400; margin: 0.25em 0 1em 0; text-align: center; @@ -51,7 +51,7 @@ .token-popup__table { border-collapse: collapse; - color: var(--color--75); + color: var(--color-foreground--75); table-layout: fixed; & tr:nth-child(even) { @@ -82,8 +82,8 @@ } .token { - background: var(--link-color--darken-20); - border-bottom: 2px solid var(--link-color--darken-20); + background: var(--color-link-foreground--darken-20); + border-bottom: 2px solid var(--color-link-foreground--darken-20); border-radius: 3px; color: white; cursor: pointer; @@ -91,10 +91,10 @@ padding: 1px 8px !important; &:before { - content: "${" + content: '${'; } &:after { - content: "}" + content: '}'; } } diff --git a/src/ui/shared/app-base.ts b/src/ui/shared/app-base.ts index 2d901ca..3a5b705 100644 --- a/src/ui/shared/app-base.ts +++ b/src/ui/shared/app-base.ts @@ -307,36 +307,50 @@ export abstract class App { const computedStyle = getComputedStyle(body); const bodyStyle = body.style; - let color = computedStyle.getPropertyValue('--color').trim(); - bodyStyle.setProperty('--color--85', opacity(color, 85)); - bodyStyle.setProperty('--color--75', opacity(color, 75)); - bodyStyle.setProperty('--color--50', opacity(color, 50)); - - color = computedStyle.getPropertyValue('--background-color').trim(); - bodyStyle.setProperty('--background-color--lighten-05', lighten(color, 5)); - bodyStyle.setProperty('--background-color--darken-05', darken(color, 5)); - bodyStyle.setProperty('--background-color--lighten-075', lighten(color, 7.5)); - bodyStyle.setProperty('--background-color--darken-075', darken(color, 7.5)); - bodyStyle.setProperty('--background-color--lighten-15', lighten(color, 15)); - bodyStyle.setProperty('--background-color--darken-15', darken(color, 15)); - bodyStyle.setProperty('--background-color--lighten-30', lighten(color, 30)); - bodyStyle.setProperty('--background-color--darken-30', darken(color, 30)); - - color = computedStyle.getPropertyValue('--link-color').trim(); - bodyStyle.setProperty('--link-color--darken-20', darken(color, 20)); + bodyStyle.setProperty('--font-size', computedStyle.getPropertyValue('--vscode-editor-font-size').trim()); bodyStyle.setProperty( - '--focus-border-color', - computedStyle.getPropertyValue('--vscode-focusBorder').trim() + '--font-family', + computedStyle.getPropertyValue('--vscode-editor-font-family').trim() ); - - color = computedStyle.getPropertyValue('--vscode-button-background').trim(); - bodyStyle.setProperty('--button-background-color', color); - bodyStyle.setProperty('--button-background-color--darken-30', darken(color, 30)); bodyStyle.setProperty( - '--button-color', - computedStyle.getPropertyValue('--vscode-button-foreground').trim() + '--font-weight', + computedStyle.getPropertyValue('--vscode-editor-font-weight').trim() ); + + let color = computedStyle.getPropertyValue('--vscode-editor-background').trim(); + bodyStyle.setProperty('--color-background', color); + bodyStyle.setProperty('--color-background--lighten-05', lighten(color, 5)); + bodyStyle.setProperty('--color-background--darken-05', darken(color, 5)); + bodyStyle.setProperty('--color-background--lighten-075', lighten(color, 7.5)); + bodyStyle.setProperty('--color-background--darken-075', darken(color, 7.5)); + bodyStyle.setProperty('--color-background--lighten-15', lighten(color, 15)); + bodyStyle.setProperty('--color-background--darken-15', darken(color, 15)); + bodyStyle.setProperty('--color-background--lighten-30', lighten(color, 30)); + bodyStyle.setProperty('--color-background--darken-30', darken(color, 30)); + + color = computedStyle.getPropertyValue('--vscode-button-background').trim(); + bodyStyle.setProperty('--color-button-background', color); + bodyStyle.setProperty('--color-button-background--darken-30', darken(color, 30)); + + color = computedStyle.getPropertyValue('--vscode-button-foreground').trim(); + bodyStyle.setProperty('--color-button-foreground', color); + + color = computedStyle.getPropertyValue('--vscode-editor-foreground').trim(); + if (!color) { + color = computedStyle.getPropertyValue('--vscode-foreground').trim(); + } + bodyStyle.setProperty('--color-foreground', color); + bodyStyle.setProperty('--color-foreground--85', opacity(color, 85)); + bodyStyle.setProperty('--color-foreground--75', opacity(color, 75)); + bodyStyle.setProperty('--color-foreground--50', opacity(color, 50)); + + color = computedStyle.getPropertyValue('--vscode-focusBorder').trim(); + bodyStyle.setProperty('--color-focus-border', color); + + color = computedStyle.getPropertyValue('--vscode-textLink-foreground').trim(); + bodyStyle.setProperty('--color-link-foreground', color); + bodyStyle.setProperty('--color-link-foreground--darken-20', darken(color, 20)); }; const observer = new MutationObserver(onColorThemeChanged);