From 7dfc58cfa7ca771eb2ed19260efd626a66245158 Mon Sep 17 00:00:00 2001 From: VampireChicken12 Date: Fri, 29 Mar 2024 04:38:02 -0400 Subject: [PATCH] feat: YouTube DeepDark built in themes #381 --- bun.lockb | Bin 0 -> 303038 bytes package-lock.json | 21 + package.json | 4 +- public/locales/ca-ES.json | 43 + public/locales/cs-CZ.json | 43 + public/locales/de-DE.json | 43 + public/locales/en-US.json | 43 + public/locales/en-US.json.d.ts | 23 +- public/locales/es-ES.json | 43 + public/locales/fa-IR.json | 43 + public/locales/fr-FR.json | 43 + public/locales/he-IL.json | 43 + public/locales/hi-IN.json | 43 + public/locales/it-IT.json | 43 + public/locales/ja-JP.json | 43 + public/locales/pl-PL.json | 43 + public/locales/pt-BR.json | 43 + public/locales/ru-RU.json | 89 +- public/locales/sv-SE.json | 43 + public/locales/tr-TR.json | 57 +- public/locales/zh-CN.json | 43 + public/locales/zh-TW.json | 43 + .../Inputs/ColorPicker/ColorPicker.tsx | 70 + src/components/Inputs/ColorPicker/index.css | 30 + src/components/Inputs/ColorPicker/index.tsx | 3 + src/components/Inputs/index.tsx | 3 +- src/components/Settings/Settings.css | 33 +- src/components/Settings/Settings.tsx | 103 + .../Settings/components/Setting.tsx | 8 +- src/deepDarkMaterialCSS.ts | 4298 +++++++++++++++++ src/deepDarkPresets.ts | 349 ++ src/features/deepDarkCSS/index.ts | 35 + src/features/deepDarkCSS/utils.ts | 46 + src/i18n/index.ts | 72 +- src/pages/content/index.tsx | 23 +- src/pages/inject/index.tsx | 21 + src/types/index.ts | 17 + src/utils/constants.ts | 25 + yarn.lock | 18 + 39 files changed, 5952 insertions(+), 84 deletions(-) create mode 100644 bun.lockb create mode 100644 src/components/Inputs/ColorPicker/ColorPicker.tsx create mode 100644 src/components/Inputs/ColorPicker/index.css create mode 100644 src/components/Inputs/ColorPicker/index.tsx create mode 100644 src/deepDarkMaterialCSS.ts create mode 100644 src/deepDarkPresets.ts create mode 100644 src/features/deepDarkCSS/index.ts create mode 100644 src/features/deepDarkCSS/utils.ts diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..c970158513bf1d10d28b1a17843b630a00ee8233 GIT binary patch literal 303038 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%0Ax09EkWe7kMD+TL^3^>e~tIBFb$9b`{u- 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 *oTQfCefx@+r@uQwg=9f!)Jtl1C{rrE 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 E1p(=|-T(jq literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 18f47404..520d4412 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,8 +16,10 @@ "i18next": "^23.7.3", "monaco-editor": "^0.47.0", "react": "^18.2.0", + "react-colorful": "^5.6.1", "react-dom": "^18.2.0", "react-icons": "^5.0.1", + "use-debouncy": "^5.0.1", "vite-plugin-css-injected-by-js": "^3.3.0", "webextension-polyfill": "^0.10.0" }, @@ -8273,6 +8275,8 @@ }, "node_modules/npm/node_modules/http-proxy-agent": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "inBundle": true, "license": "MIT", @@ -10808,6 +10812,15 @@ "node": ">=0.10.0" } }, + "node_modules/react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -12661,6 +12674,14 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/use-debouncy": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/use-debouncy/-/use-debouncy-5.0.1.tgz", + "integrity": "sha512-Y67Ms+feWonusFVKm/AgajoyHHTmtjpC6lBaNAAK65oe1dB59G3JoQzKedFzb6DCeJm71epHBrTsNTev37YO3g==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index a31687e2..fac662aa 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,10 @@ "i18next": "^23.7.3", "monaco-editor": "^0.47.0", "react": "^18.2.0", + "react-colorful": "^5.6.1", "react-dom": "^18.2.0", "react-icons": "^5.0.1", + "use-debouncy": "^5.0.1", "vite-plugin-css-injected-by-js": "^3.3.0", "webextension-polyfill": "^0.10.0" }, @@ -78,4 +80,4 @@ "zod": "^3.22.4", "zod-error": "^1.5.0" } -} \ No newline at end of file +} diff --git a/public/locales/ca-ES.json b/public/locales/ca-ES.json index 43eef665..18baf266 100644 --- a/public/locales/ca-ES.json +++ b/public/locales/ca-ES.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/cs-CZ.json b/public/locales/cs-CZ.json index bd8177e1..debeee0c 100644 --- a/public/locales/cs-CZ.json +++ b/public/locales/cs-CZ.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/de-DE.json b/public/locales/de-DE.json index a229ea52..cce4ff33 100644 --- a/public/locales/de-DE.json +++ b/public/locales/de-DE.json @@ -425,6 +425,49 @@ } }, "title": "´Lautstärke-Boost Einstellungen" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/en-US.json b/public/locales/en-US.json index f459fc2a..21e49dac 100644 --- a/public/locales/en-US.json +++ b/public/locales/en-US.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/en-US.json.d.ts b/public/locales/en-US.json.d.ts index 39610451..f55ee651 100644 --- a/public/locales/en-US.json.d.ts +++ b/public/locales/en-US.json.d.ts @@ -8,9 +8,7 @@ interface EnUS { pages: { content: { features: { - decreasePlaybackSpeed: { label: "Decrease playback speed" }; featureMenu: { button: { label: "Feature menu" } }; - increasePlaybackSpeed: { label: "Increase playback speed" }; loopButton: { button: { label: "Loop"; toggle: { off: "Loop off"; on: "Loop on" } } }; maximizePlayerButton: { button: { label: "Maximize"; toggle: { off: "Maximize off"; on: "Maximize on" } } }; openTranscriptButton: { button: { label: "Open transcript" } }; @@ -79,9 +77,7 @@ interface EnUS { buttonPlacement: { select: { buttonNames: { - decreasePlaybackSpeed: "Decrease Playback Speed button"; decreasePlaybackSpeedButton: "Decrease Speed button"; - increasePlaybackSpeed: "Increase Playback Speed button"; increasePlaybackSpeedButton: "Increase Speed button"; loopButton: "Loop button"; maximizePlayerButton: "Maximize button"; @@ -314,6 +310,25 @@ interface EnUS { }; title: "Volume boost settings"; }; + youtubeDeepDark: { + author: "Author"; + "co-authors": "Co-authors"; + colors: { + colorShadow: { label: "Shadow color"; title: "Color for shadows" }; + dimmerText: { label: "Secondary text color"; title: "Color for secondary text" }; + hoverBackground: { label: "Hover background"; title: "Color for hover background" }; + mainBackground: { label: "Main background color"; title: "Color for main background" }; + mainColor: { label: "Accent color"; title: "Color for accent" }; + mainText: { label: "Main text color"; title: "Color for main text" }; + secondBackground: { label: "Secondary background"; title: "Color for secondary background" }; + }; + enable: { + label: "Enable selected theme"; + title: "Activate the selected theme for the page"; + }; + select: { label: "Select theme"; title: "Select a theme to be applied to the page" }; + title: "YouTube Deep Dark Settings"; + }; }; }; } diff --git a/public/locales/es-ES.json b/public/locales/es-ES.json index fb1730a2..d2e794d4 100644 --- a/public/locales/es-ES.json +++ b/public/locales/es-ES.json @@ -425,6 +425,49 @@ } }, "title": "Ajustes de potenciado de volumen" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/fa-IR.json b/public/locales/fa-IR.json index 1c359814..7d3c8cd9 100644 --- a/public/locales/fa-IR.json +++ b/public/locales/fa-IR.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/fr-FR.json b/public/locales/fr-FR.json index 33050ed0..2084acea 100644 --- a/public/locales/fr-FR.json +++ b/public/locales/fr-FR.json @@ -425,6 +425,49 @@ } }, "title": "Réglages de du gain du volume" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/he-IL.json b/public/locales/he-IL.json index 120fc2d7..77e0deb0 100644 --- a/public/locales/he-IL.json +++ b/public/locales/he-IL.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/hi-IN.json b/public/locales/hi-IN.json index 82ee86ed..59f830e9 100644 --- a/public/locales/hi-IN.json +++ b/public/locales/hi-IN.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/it-IT.json b/public/locales/it-IT.json index e227cf12..a29aa737 100644 --- a/public/locales/it-IT.json +++ b/public/locales/it-IT.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/ja-JP.json b/public/locales/ja-JP.json index 0bf2143d..428d0981 100644 --- a/public/locales/ja-JP.json +++ b/public/locales/ja-JP.json @@ -425,6 +425,49 @@ } }, "title": "音量ブーストの設定" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/pl-PL.json b/public/locales/pl-PL.json index 000346d0..dd4df04f 100644 --- a/public/locales/pl-PL.json +++ b/public/locales/pl-PL.json @@ -425,6 +425,49 @@ } }, "title": "Volume boost settings" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/pt-BR.json b/public/locales/pt-BR.json index dea8d33d..f24171c7 100644 --- a/public/locales/pt-BR.json +++ b/public/locales/pt-BR.json @@ -425,6 +425,49 @@ } }, "title": "Configurações de impulso de volume" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/ru-RU.json b/public/locales/ru-RU.json index 51696b63..c41fccae 100644 --- a/public/locales/ru-RU.json +++ b/public/locales/ru-RU.json @@ -10,45 +10,45 @@ "features": { "featureMenu": { "button": { - "label": "Feature menu" + "label": "Меню функций" } }, "loopButton": { "button": { - "label": "Loop", + "label": "Зациклить", "toggle": { - "off": "Loop off", - "on": "Loop on" + "off": "Зацикливание выключено", + "on": "Зацикливание включено" } } }, "maximizePlayerButton": { "button": { - "label": "Maximize", + "label": "Развернуть", "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "off": "Проигрыватель свернут", + "on": "Проигрыватель развернут" } } }, "openTranscriptButton": { "button": { - "label": "Open transcript" + "label": "Открыть стенограмму" } }, "playbackSpeedButtons": { "buttons": { "decreasePlaybackSpeedButton": { - "label": "Decrease Speed by {{SPEED}}" + "label": "Уменьшить скорость на {{SPEED}}" }, "increasePlaybackSpeedButton": { - "label": "Increase Speed by {{SPEED}}" + "label": "Увеличить скорость на {{SPEED}}" } } }, "screenshotButton": { "button": { - "label": "Screenshot" + "label": "Скриншот" }, "copiedToClipboard": "Скриншот скопирован в буфер обмена" }, @@ -60,10 +60,10 @@ }, "volumeBoostButton": { "button": { - "label": "Volume Boost", + "label": "Усиление громкости", "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "off": "Увеличение громкости выключено", + "on": "Увеличение громкости включено" } } } @@ -115,7 +115,7 @@ "value": "Подтвердить" }, "openTab": { - "title": "Open extension settings in a new tab" + "title": "Открывать настройки расширения в новой вкладке" }, "reset": { "title": "Сбрасывает все параметры до значений по умолчанию. Нажмите \"Подтвердить\", чтобы сохранить изменения", @@ -125,8 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { - "decreasePlaybackSpeedButton": "Decrease Speed button", - "increasePlaybackSpeedButton": "Increase Speed button", + "decreasePlaybackSpeedButton": "Кнопка уменьшения скорости видео", + "increasePlaybackSpeedButton": "Кнопка увеличения скорости видео", "loopButton": "Кнопка «Зациклить»", "maximizePlayerButton": "Кнопка «Развернуть»", "openTranscriptButton": "Кнопка «Открыть стенограмму»", @@ -214,8 +214,8 @@ "title": "Скрывает полосу прокрутки страницы" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "Скрыть Shorts", + "title": "Скрывает все Shorts" }, "loopButton": { "label": "Включить кнопку «Зациклить»", @@ -312,12 +312,12 @@ "title": "Устанавливает скорость проигрывания видео на ту, что вы выбрали ниже" }, "playbackSpeedButtons": { - "label": "Playback speed buttons", + "label": "Кнопки регулирования скорости видео", "select": { - "label": "Playback buttons speed", - "title": "Amount of speed to be changed per click" + "label": "Дельта кнопок регулирования скорости", + "title": "Число, на которое будет изменена скорость за клик" }, - "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + "title": "Добавляет кнопки для увеличения или уменьшения скорости воспроизведения просматриваемого видео" }, "select": { "label": "Скорость проигрывателя", @@ -425,6 +425,49 @@ } }, "title": "Настройки усиления громкости" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/sv-SE.json b/public/locales/sv-SE.json index c2dc3c04..7ff45920 100644 --- a/public/locales/sv-SE.json +++ b/public/locales/sv-SE.json @@ -425,6 +425,49 @@ } }, "title": "Inställningar för volymökning" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/tr-TR.json b/public/locales/tr-TR.json index fb3cb57d..c8081484 100644 --- a/public/locales/tr-TR.json +++ b/public/locales/tr-TR.json @@ -10,24 +10,24 @@ "features": { "featureMenu": { "button": { - "label": "Feature menu" + "label": "Özellik menüsü" } }, "loopButton": { "button": { - "label": "Loop", + "label": "Tekrarla", "toggle": { - "off": "Loop off", - "on": "Loop on" + "off": "Tekrarlama kapalı", + "on": "Tekrarlama açık" } } }, "maximizePlayerButton": { "button": { - "label": "Maximize", + "label": "Ekranı kapla", "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "off": "Tam ekran kapalı", + "on": "Tam ekran açıl" } } }, @@ -425,6 +425,49 @@ } }, "title": "Ses güçlendirme ayarları" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/zh-CN.json b/public/locales/zh-CN.json index f16d4cfc..bf536a60 100644 --- a/public/locales/zh-CN.json +++ b/public/locales/zh-CN.json @@ -425,6 +425,49 @@ } }, "title": "音量增强设置" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/public/locales/zh-TW.json b/public/locales/zh-TW.json index 93fc0869..a5a8ffd0 100644 --- a/public/locales/zh-TW.json +++ b/public/locales/zh-TW.json @@ -425,6 +425,49 @@ } }, "title": "音量增強設定" + }, + "youtubeDeepDark": { + "author": "Author", + "co-authors": "Co-authors", + "colors": { + "colorShadow": { + "label": "Shadow color", + "title": "Color for shadows" + }, + "dimmerText": { + "label": "Secondary text color", + "title": "Color for secondary text" + }, + "hoverBackground": { + "label": "Hover background", + "title": "Color for hover background" + }, + "mainBackground": { + "label": "Main background color", + "title": "Color for main background" + }, + "mainColor": { + "label": "Accent color", + "title": "Color for accent" + }, + "mainText": { + "label": "Main text color", + "title": "Color for main text" + }, + "secondBackground": { + "label": "Secondary background", + "title": "Color for secondary background" + } + }, + "enable": { + "label": "Enable selected theme", + "title": "Activate the selected theme for the page" + }, + "select": { + "label": "Select theme", + "title": "Select a theme to be applied to the page" + }, + "title": "YouTube Deep Dark Settings" } } } diff --git a/src/components/Inputs/ColorPicker/ColorPicker.tsx b/src/components/Inputs/ColorPicker/ColorPicker.tsx new file mode 100644 index 00000000..6a7e0e07 --- /dev/null +++ b/src/components/Inputs/ColorPicker/ColorPicker.tsx @@ -0,0 +1,70 @@ +import { useComponentVisible } from "@/src/hooks"; +import useClickOutside from "@/src/hooks/useClickOutside"; +import { cn } from "@/src/utils/utilities"; +import React, { type ChangeEvent, useRef } from "react"; +import { HexAlphaColorPicker, HexColorInput } from "react-colorful"; +import { useDebouncyFn } from "use-debouncy"; + +import "./index.css"; +export type ColorPickerProps = { + className?: string; + disabled: boolean; + id?: string; + label: string; + onChange: (event: ChangeEvent) => void; + title: string; + value: string; +}; +const ColorPicker: React.FC = ({ className, disabled, id, label, onChange, title, value }) => { + const handleChange = useDebouncyFn((value: string) => onChange({ currentTarget: { value } } as ChangeEvent), 200); + const colorPickerRef = useRef(null); + const { isComponentVisible: isColorPickerVisible, setIsComponentVisible: setIsColorPickerVisible } = useComponentVisible( + colorPickerRef, + false + ); + const togglePickerVisibility = () => setIsColorPickerVisible(!isColorPickerVisible); + useClickOutside(colorPickerRef, togglePickerVisibility); + return ( +
+ +
+ <> + + {isColorPickerVisible && ( +
+ + +
+ )} + +
+
+ ); +}; +export default ColorPicker; diff --git a/src/components/Inputs/ColorPicker/index.css b/src/components/Inputs/ColorPicker/index.css new file mode 100644 index 00000000..2b550d9a --- /dev/null +++ b/src/components/Inputs/ColorPicker/index.css @@ -0,0 +1,30 @@ +.react-colorful { + cursor: pointer !important; + width: 150px !important; + height: 150px !important; + margin: 4px !important; +} + +.react-colorful__saturation { + border-radius: 6px 6px 0 0 !important; +} + +.react-colorful__hue, +.react-colorful__alpha { + height: 16px !important; +} + +.react-colorful__alpha { + border-radius: 0 0 6px 6px !important; +} + +.react-colorful__pointer { + height: 18px !important; + width: 18px !important; + border: 1px solid #fff !important; +} + +input#color-picker-input { + margin: 4px; + width: 150px; +} \ No newline at end of file diff --git a/src/components/Inputs/ColorPicker/index.tsx b/src/components/Inputs/ColorPicker/index.tsx new file mode 100644 index 00000000..c3a5739d --- /dev/null +++ b/src/components/Inputs/ColorPicker/index.tsx @@ -0,0 +1,3 @@ +import ColorPicker from "./ColorPicker"; + +export { ColorPicker }; diff --git a/src/components/Inputs/index.tsx b/src/components/Inputs/index.tsx index d15a2565..65be5a81 100644 --- a/src/components/Inputs/index.tsx +++ b/src/components/Inputs/index.tsx @@ -2,7 +2,8 @@ import type { SelectOption } from "./Select/Select"; import { CSSEditor } from "./CSSEditor"; import { Checkbox } from "./CheckBox"; +import { ColorPicker } from "./ColorPicker"; import { NumberInput } from "./Number"; import { Select } from "./Select"; import { Slider } from "./Slider"; -export { CSSEditor, Checkbox, NumberInput, Select, type SelectOption, Slider }; +export { CSSEditor, Checkbox, ColorPicker, NumberInput, Select, type SelectOption, Slider }; diff --git a/src/components/Settings/Settings.css b/src/components/Settings/Settings.css index 33c46773..64e4d808 100644 --- a/src/components/Settings/Settings.css +++ b/src/components/Settings/Settings.css @@ -51,7 +51,8 @@ --transition-border-color: border-color 200ms var(--transition-timing-ease-out); --transition-box-shadow: box-shadow 200ms var(--transition-timing-ease-out); --transition-color: color 200ms var(--transition-timing-ease-out); - --transition-opacity: opacity 200ms var(--transition-timing-linear); /* Timing opacity looks weird */ + --transition-opacity: opacity 200ms var(--transition-timing-linear); + /* Timing opacity looks weird */ --transition-transform: transform 200ms var(--transition-timing-ease-out); /* Misc */ @@ -73,7 +74,7 @@ html { } /* https://stackoverflow.com/questions/11243337/a-taller-than-its-img-child */ -a > img { +a>img { display: block; } @@ -93,15 +94,11 @@ fieldset { padding-left: 0 !important; } -fieldset + fieldset { - margin-top: 12px !important; -} - -fieldset > p:first-of-type { +fieldset>p:first-of-type { margin-top: 0 !important; } -fieldset > p:last-of-type { +fieldset>p:last-of-type { margin-bottom: 0 !important; } @@ -114,9 +111,11 @@ legend { .left { float: left; } + .right { float: right; } + .clear { clear: both; } @@ -129,18 +128,23 @@ legend { .accent { color: var(--accent); } + .success { color: var(--success); } + .warning { color: var(--warning); } + .danger { color: var(--danger); } + .light { color: var(--foreground-light); } + .inverse { color: var(--foreground-inverse); } @@ -149,12 +153,15 @@ legend { .bg-accent { background: var(--accent); } + .bg-success { background: var(--success); } + .bg-warning { background: var(--warning); } + .bg-danger { background: var(--danger); } @@ -214,10 +221,12 @@ button[id="openinnewtab_button"] { padding: 8px 12px; transition: var(--transition-background); } + input[type="button"]:disabled { cursor: help; opacity: 0.6; } + input[type="button"].loading:disabled { cursor: wait; } @@ -227,6 +236,7 @@ input[type="button"].accent, button[id="openinnewtab_button"].accent { background: var(--accent); } + input[type="button"].accent:hover, input[type="button"].accent:focus, input[type="button"].accent:active, @@ -248,6 +258,7 @@ input[type="button"].success { border: 2px solid var(--success-light); background: var(--success-light); } + input[type="button"].success:hover, input[type="button"].success:focus, input[type="button"].success:active { @@ -266,6 +277,7 @@ input[type="button"].warning { border: 2px solid var(--warning-light); background: var(--warning-light); } + input[type="button"].warning:hover, input[type="button"].warning:focus, input[type="button"].warning:active { @@ -284,6 +296,7 @@ input[type="button"].danger { border: 2px solid var(--danger-light); background: var(--danger-light); } + input[type="button"].danger:hover, input[type="button"].danger:focus, input[type="button"].danger:active { @@ -346,7 +359,7 @@ button[id="openinnewtab_button"] { z-index: 100; } -#notifications > .notification { +#notifications>.notification { border-radius: var(--border-radius-md); padding: 10px 14px; -} +} \ No newline at end of file diff --git a/src/components/Settings/Settings.tsx b/src/components/Settings/Settings.tsx index bc421322..c23ee30c 100644 --- a/src/components/Settings/Settings.tsx +++ b/src/components/Settings/Settings.tsx @@ -5,6 +5,8 @@ import type { ChangeEvent, ChangeEventHandler } from "react"; import "@/assets/styles/tailwind.css"; import "@/components/Settings/Settings.css"; import { useNotifications } from "@/hooks"; +import Link from "@/src/components/Link"; +import { deepDarkPreset } from "@/src/deepDarkPresets"; import { availableLocales, type i18nInstanceType, i18nService, localeDirection, localePercentages } from "@/src/i18n"; import { buttonNames, youtubePlaybackSpeedButtonsRates, youtubePlayerSpeedRates } from "@/src/types"; import { configurationImportSchema, defaultConfiguration as defaultSettings } from "@/src/utils/constants"; @@ -381,6 +383,12 @@ export default function Settings() { value: "prompt" } ]; + const youtubeDeepDarkThemeOptions: SelectOption<"deep_dark_preset">[] = deepDarkPreset.map((value) => { + return { + label: value, + value + }; + }); const settingsImportChange: ChangeEventHandler = (event): void => { void (async () => { const { target } = event; @@ -961,6 +969,101 @@ export default function Settings() { value={settings.custom_css_code} /> + + + + + + RaitaroH + + + + MechaLynx + MaximeRF + + + + + + + + + + + +
= { id: ID; title?: string; } & ( | ({ type: "checkbox" } & CheckboxProps) + | ({ type: "color-picker" } & ColorPickerProps) | ({ type: "css-editor" } & CSSEditorProps) | ({ type: "number" } & NumberInputProps) | ({ type: "select" } & SelectProps) @@ -65,6 +67,10 @@ function SettingInput(settingProps: SettingInputProp const { className, id, onChange, value } = settingProps; return ; } + case "color-picker": { + const { className, disabled, id, label, onChange, title, value } = settingProps; + return ; + } } } export default function Setting(settingProps: SettingInputProps) { diff --git a/src/deepDarkMaterialCSS.ts b/src/deepDarkMaterialCSS.ts new file mode 100644 index 00000000..388ee494 --- /dev/null +++ b/src/deepDarkMaterialCSS.ts @@ -0,0 +1,4298 @@ +/** + * Version 4.1.8 + * Author: https://github.com/RaitaroH + * Co-authors: https://github.com/MechaLynx https://github.com/MaximeRF + * Repository: https://github.com/RaitaroH/YouTube-DeepDark + */ +export const deepDarkMaterial = ` +/* Author : Theme made by RaitaroH */ +/* Co-authors : https://github.com/MechaLynx https://github.com/MaximeRF */ +/* Home : https://github.com/RaitaroH/YouTube-DeepDark */ +/* License : GNU General Public License v3.0 */ + +/*Error page*/ +#error-page { + background-color: var(--main-background) !important; + color: var(--main-text) !important; +} + +* { + /*Scrollbar for firefox*/ + scrollbar-color: rgba(79, 80, 85, 1) transparent !important; + scrollbar-width: 8px !important; + + --yt-spec-text-primary: var(--main-text) !important; + --yt-spec-text-secondary: var(--dimmer-text) !important; + --paper-spinner-color: var(--dimmer-text) !important; + + --paper-input-container-color: var(--dimmer-text) !important; + + --paper-radio-button-unchecked-color: var(--dimmer-text) !important; + --paper-radio-button-unchecked-background-color: transparent !important; + --paper-radio-button-checked-color: var(--main-color) !important; + --paper-radio-button-checked-ink-color: var(--main-color) !important; + --paper-radio-button-unchecked-ink-color: var(--main-color) !important; + + --paper-checkbox-unchecked-color: var(--dimmer-text) !important; + --paper-checkbox-checked-color: var(--main-color) !important; + --paper-checkbox-checkmark-color: none !important; + --paper-checkbox-checked-ink-color: var(--main-color) !important; + --paper-checkbox-unchecked-ink-color: var(--main-color) !important; + --yt-spec-call-to-action: var(--main-color) !important; + --yt-spec-suggested-action: var(--hover-background) !important; + --yt-spec-outline: var(--hover-background) !important; + --yt-spec-brand-button-background: var(--main-color) !important; + /*in incognito this may be used as subscribe button but is inconsistent .yt-spec-button-shape-next--brand.yt-spec-button-shape-next--filled*/ + + --yt-formatted-string-bold-color: var(--dimmer-text) !important; + /*this affects number of views*/ + + --yt-lightsource-section1-color: var(--main-background) !important; + /* watch history header */ + + /*clip icon hover*/ + --yt-spec-icon-active-other: var(--main-text) !important; + --iron-icon-fill-color: var(--main-text) !important; + + --yt-spec-base-background: var(--second-background) !important; +} + +/*Scrollbar fix for chrome*/ +*:not([hide-scrollbar]) ::-webkit-scrollbar-thumb { + background: rgba(79, 80, 85, 1) !important; +} + +*:not([hide-scrollbar]) ::-webkit-scrollbar { + width: 8px !important; +} + +::-webkit-scrollbar-track { + background: transparent !important; +} + +::-webkit-scrollbar-thumb { + background: var(--main-color) !important; +} + +/*Background for the entire page*/ +html, +ytd-browse, +ytd-watch, +ytd-search, +ytd-app, +ytd-app[is-watch-page], +[class*="ytd-watch-flexy"]:not(#engagement-panel-scrim), +.style-scope.ytd-page-manager.hide-skeleton, +.account-container { + background-color: var(--main-background) !important; +} + +/*Border for the sidemenu*/ +#guide-content.ytd-app { + border-right: 1px solid var(--yt-border-color) !important; +} + +/*Changed text highlight*/ +::selection { + background: var(--main-color) !important; + color: var(--main-text) !important; +} + +::-moz-selection { + background: var(--main-color) !important; + color: var(--main-text) !important; +} + +/*Outline for links*/ +a { + outline-color: var(--main-color) !important; +} + +a:hover { + color: var(--main-color) !important; + fill: var(--main-color) !important; +} + +/*Outline for comments*/ +#content-text.ytd-comment-renderer { + outline: none !important; +} + +/*Placeholder image on pages that need an account - such as Subscriptions*/ +ytd-background-promo-renderer .image.ytd-background-promo-renderer, +ytd-message-renderer yt-icon.ytd-message-renderer { + color: var(--main-text) !important; +} + +/*Nav bar*/ +ytd-masthead, +#yt-masthead-container, +#masthead-positioner-height-offset + +/*account page*/ + { + background-color: var(--second-background) !important; + border-bottom-color: var(--hover-background) !important; +} + +yt-icon-button svg { + fill: var(--dimmer-text) !important; +} + +yt-icon-button:hover svg { + fill: var(--main-color) !important; +} + +#logo-icon-container.ytd-topbar-logo-renderer #youtube-paths.ytd-topbar-logo-renderer path.ytd-topbar-logo-renderer, +#youtube-red-paths + +/*premium*/ + { + fill: var(--main-text) !important; +} + +/*acount settings page*/ +/*logo*/ +.exp-invert-logo.inverted-hdpi #header::before, +.exp-invert-logo.inverted-hdpi .ypc-join-family-header .logo, +.exp-invert-logo.inverted-hdpi #footer-logo .footer-logo-icon, +.exp-invert-logo.inverted-hdpi #yt-masthead #logo-container .logo, +.exp-invert-logo.inverted-hdpi #masthead #logo-container, +.exp-invert-logo.inverted-hdpi .admin-masthead-logo a, +.exp-invert-logo.inverted-hdpi #yt-sidebar-styleguide-logo #logo { + filter: invert(1) grayscale(1); +} + +/*buttons*/ +#yt-masthead-creation-button { + filter: brightness(220%); +} + +#yt-masthead-notifications .yt-uix-button-icon-bell { + filter: invert(1) brightness(720%); +} + +#sections.ytd-multi-page-menu-renderer>.ytd-multi-page-menu-renderer:not(:last-child) { + border-color: var(--hover-background) !important; +} + +/*Chat in the header*/ +ytd-conversation-switcher-item-renderer { + border-color: var(--hover-background) !important; +} + +#last-post.ytd-conversation-switcher-item-renderer { + color: var(--dimmer-text) !important; +} + +/*invite friends*/ +#bar.ytd-copy-connection-invite-url-renderer { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +#icon.ytd-copy-connection-invite-url-renderer { + color: var(--main-text) !important; +} + +/*chat popup*/ +ytd-conversation-section-renderer { + background: var(--second-background) !important; +} + +#title-bar.ytd-conversation-section-renderer { + border-color: var(--hover-background) !important; +} + +ytd-conversation-text-item-renderer[justification-style="JUSTIFICATION_START"] #post-text.ytd-conversation-text-item-renderer, +ytd-conversation-link-item-renderer[justification-style="JUSTIFICATION_START"] #link.ytd-conversation-link-item-renderer, +#bar.ytd-conversation-link-item-renderer, +#thumbnail.ytd-inline-playback-renderer, +#video-data.ytd-inline-playback-renderer { + border-color: var(--hover-background) !important; + background: var(--hover-background) !important; +} + +#post-text.ytd-conversation-text-item-renderer, +textarea.iron-autogrow-textarea { + color: var(--main-text) !important; +} + +#displayed-text.ytd-conversation-link-item-renderer, +#icon.ytd-conversation-link-item-renderer { + color: var(--main-color) !important; +} + +#metadata.ytd-conversation-metadata-item-renderer { + color: var(--dimmer-text) !important; +} + +/*Backgrounds*/ +#like-bar.ytd-sentiment-bar-renderer, +#progress.ytd-thumbnail-overlay-resume-playback-renderer, +#selectionBar.paper-tabs { + background-color: var(--main-color) !important; +} + +/*Sidebar*/ +#guide-content.ytd-app, +#contentContainer.app-drawer, +#guide-wrapper.ytd-app { + background: var(--second-background) !important; +} + +#endpoint.yt-simple-endpoint.ytd-guide-entry-renderer, +#guide-section-title.ytd-guide-section-renderer { + color: var(--main-text) !important; +} + +ytd-guide-entry-renderer:hover #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer, +ytd-guide-entry-renderer:hover svg { + color: var(--main-color) !important; + fill: var(--main-color) !important; +} + +ytd-guide-entry-renderer[active] { + background-color: var(--hover-background) !important; +} + +#sections.ytd-guide-renderer>.ytd-guide-renderer:not(:last-child), +#guide-links-primary.ytd-guide-renderer, +#guide-content.ytd-app { + border-color: var(--hover-background) !important; +} + +#guide-links-primary.ytd-guide-renderer>a, +#guide-links-secondary.ytd-guide-renderer>a, +#footer.ytd-guide-renderer>#copyright, +yt-formatted-string.ytd-guide-signin-promo-renderer { + color: var(--dimmer-text) !important; +} + +#guide-links-primary.ytd-guide-renderer>a:hover, +#guide-links-secondary.ytd-guide-renderer>a:hover { + color: var(--main-color) !important; +} + +/*Compact sidebar fix*/ +ytd-mini-guide-renderer, +a.ytd-mini-guide-entry-renderer, +a.ytd-mini-guide-entry-renderer:hover, +a.ytd-mini-guide-entry-renderer:focus { + background-color: var(--second-background) !important; +} + +ytd-mini-guide-entry-renderer .guide-icon.ytd-mini-guide-entry-renderer, +a.ytd-mini-guide-entry-renderer .guide-icon, +a.ytd-mini-guide-entry-renderer.title.ytd-mini-guide-entry-renderer, +ytd-mini-guide-entry-renderer .title.ytd-mini-guide-entry-renderer { + color: var(--main-text) !important; +} + +ytd-mini-guide-entry-renderer[active] .guide-icon.ytd-mini-guide-entry-renderer, +a.ytd-mini-guide-entry-renderer:hover .guide-icon, +a.ytd-mini-guide-entry-renderer:hover .title.ytd-mini-guide-entry-renderer, +ytd-mini-guide-entry-renderer[active] .title.ytd-mini-guide-entry-renderer { + color: var(--main-color) !important; +} + +#newness-dot.ytd-guide-entry-renderer { + background-color: var(--main-color) !important; +} + +/*Latest YouTube posts*/ +ytd-post-renderer[surface_="backstage-surface-type-home"], +ytd-post-renderer[uses-compact-lockup] { + background-color: var(--second-background) !important; +} + +ytd-post-renderer[surface_="backstage-surface-type-home"] #home-content-text.ytd-post-renderer, +ytd-post-renderer[surface_="backstage-surface-type-home"][attachment="poll"] #vote-count-text.ytd-post-renderer, +ytd-post-renderer[uses-compact-lockup] #home-content-text.ytd-post-renderer { + color: var(--main-text) !important; +} + +ytd-post-renderer[surface_="backstage-surface-type-home"] #author-text.yt-simple-endpoint.ytd-post-renderer { + color: var(--main-color) !important; +} + +ytd-post-renderer[uses-compact-lockup][attachment="poll"] #vote-count-text.ytd-post-renderer { + color: var(--dimmer-text) !important; +} + +/*vote now button*/ +ytd-post-renderer[uses-compact-lockup] ytd-button-renderer.style-suggestive[is-paper-button] #button.ytd-button-renderer { + background-color: var(--main-color) !important; +} + +/*Main page video hover preview*/ +#video-preview-container.ytd-video-preview { + background: var(--second-background) !important; +} + +/*Feed filter*/ +#home-chips + +/*skeleton*/ +, +#chips-wrapper.ytd-feed-filter-chip-bar-renderer { + background-color: var(--main-background) !important; + border-color: var(--hover-background) !important; +} + +yt-chip-cloud-chip-renderer:not([selected]) { + background-color: var(--main-background) !important; + border-color: var(--hover-background) !important; +} + +yt-chip-cloud-chip-renderer[selected], +yt-chip-cloud-chip-renderer:hover { + background-color: var(--hover-background) !important; +} + +yt-chip-cloud-renderer { + background: transparent !important; +} + +#text.yt-chip-cloud-chip-renderer { + color: var(--main-text) !important; +} + +#scroll-container.ytd-feed-filter-chip-bar-renderer::after, +#scroll-container.ytd-feed-filter-chip-bar-renderer::before { + background: transparent !important; +} + +#left-arrow-button.ytd-feed-filter-chip-bar-renderer, +#right-arrow-button.ytd-feed-filter-chip-bar-renderer, +#left-arrow.yt-chip-cloud-renderer, +#right-arrow.yt-chip-cloud-renderer, +#left-arrow-button.yt-chip-cloud-renderer, +#right-arrow-button.yt-chip-cloud-renderer { + background: var(--main-background) !important; +} + +#left-arrow.ytd-feed-filter-chip-bar-renderer::after, +#right-arrow.ytd-feed-filter-chip-bar-renderer::before, +yt-chip-cloud-renderer #right-arrow.yt-chip-cloud-renderer::before, +yt-chip-cloud-renderer #left-arrow.yt-chip-cloud-renderer::after { + display: none; +} + +/*new to you filter on video*/ +#content-wrapper.ytd-feed-nudge-renderer { + background-color: var(--second-background) !important; +} + +yt-chip-cloud-chip-renderer[chip-style="STYLE_REFRESH_TO_NOVEL_CHIP"][selected] { + background-image: none !important; +} + +/*Covid19 big posts aka rich shelves*/ +/*also other borders*/ +ytd-rich-shelf-renderer, +#show-more-button.ytd-rich-shelf-renderer, +ytd-rich-shelf-renderer[is-show-more-hidden] #dismissible.ytd-rich-shelf-renderer, +#contents.ytd-rich-shelf-renderer, +ytd-compact-promoted-item-renderer[view-style="COMPACT_PROMOTED_ITEM_STYLE_RICH_GRID"] #dismissible.ytd-compact-promoted-item-renderer { + border-color: var(--hover-background) !important; +} + +/* poll results */ +/*your selection*/ +tp-yt-paper-item.ytd-backstage-poll-renderer[selected] .progress-bar.ytd-backstage-poll-renderer { + background-color: var(--main-color) !important; +} + +/*other bars*/ +.progress-bar.ytd-backstage-poll-renderer { + background-color: var(--second-background) !important; +} + +ytd-backstage-poll-renderer:not([is-image-poll]) tp-yt-paper-item.ytd-backstage-poll-renderer .choice-info.ytd-backstage-poll-renderer { + border-color: transparent !important; +} + +#title.ytd-grid-channel-renderer { + color: var(--dimmer-text) !important; +} + +/*Channel page*/ +/*header*/ +#channel-header.ytd-c4-tabbed-header-renderer, +#tabs-inner-container.ytd-c4-tabbed-header-renderer { + background: var(--hover-background) !important; +} + +#channel-title.ytd-c4-tabbed-header-renderer { + color: var(--main-text) !important; +} + +#subscriber-count.ytd-c4-tabbed-header-renderer { + color: var(--dimmer-text) !important; +} + +.tab-content.paper-tab, +.tab-content.tp-yt-paper-tab, +.yt-tab-shape-wiz__tab { + color: var(--main-text) !important; +} + +paper-tab:hover .tab-content.paper-tab, +tp-yt-paper-tab:hover>.tab-content.tp-yt-paper-tab, +.yt-tab-shape-wiz__tab--tab-selected { + color: var(--main-color) !important; +} + +tp-yt-paper-tabs { + --paper-tabs-selection-bar-color: var(--main-color) !important; +} + +/* for tab selected */ +.yt-tab-group-shape-wiz__slider { + background-color: var(--main-color) !important; +} + +/* Join button, Sign In, Show Transcript */ +.yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--outline { + color: var(--main-text); + background-color: var(--second-background) !important; +} + +/* vote now / answer now posts */ +.style-scope.ytd-post-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--outline { + background: var(--hover-background) !important; +} + +/*search*/ +.input-content.paper-input-container label, +.input-content.paper-input-container .paper-input-label, +#subtitle, +.style-scope.tp-yt-paper-input { + color: var(--dimmer-text) !important; +} + +/*arrow button*/ +iron-icon { + fill: var(--main-text) !important; +} + +iron-icon:hover { + fill: var(--main-color) !important; +} + +/*side channels*/ +#title:not([class*="ytd-labs"]):not([class*="upsell-offer"]) { + color: var(--main-text) !important; +} + +.title { + color: var(--main-text) !important; +} + +.title:hover { + color: var(--main-color) !important; +} + +#contents>.ytd-browse-secondary-contents-renderer:not(:first-child) { + border-color: var(--hover-background) !important; +} + +/*videos - uploads*/ +#label-text.yt-dropdown-menu { + color: var(--main-text) !important; +} + +paper-menu-button.yt-dropdown-menu:hover #label-text.yt-dropdown-menu, +paper-menu-button.yt-dropdown-menu:hover #label-icon.yt-dropdown-menu svg, +paper-menu-button.yt-dropdown-menu:hover #icon-label.yt-dropdown-menu { + color: var(--main-color) !important; + fill: var(--main-color) !important; +} + +/*community*/ +#message.ytd-message-renderer, +#content-text.ytd-backstage-post-renderer, +#repost-content-text.ytd-shared-post-renderer { + color: var(--dimmer-text) !important; +} + +#author-text, +.more-button, +.less-button, +.align-by-text.ytd-backstage-comments-renderer, +#toggle.ytd-grid-renderer, +#repost-author-text.yt-simple-endpoint.ytd-shared-post-renderer { + color: var(--main-text) !important; +} + +.more-button:hover, +.less-button:hover, +.align-by-text.ytd-backstage-comments-renderer:hover, +#toggle.ytd-grid-renderer:hover, +#author-text.yt-simple-endpoint.ytd-backstage-post-renderer:hover, +#repost-author-text.yt-simple-endpoint.ytd-shared-post-renderer:hover { + color: var(--main-color) !important; +} + +#content-attachment.ytd-backstage-post-renderer ytd-video-renderer.ytd-backstage-post-renderer, +/*normal video*/ +#content-attachment.ytd-backstage-post-renderer ytd-playlist-renderer.ytd-backstage-post-renderer, +/*playlist*/ +#content-attachment.ytd-post-renderer ytd-video-renderer.ytd-post-renderer, +/*normal video, but in cards on home page*/ +#content-attachment.ytd-post-renderer ytd-playlist-renderer.ytd-post-renderer + +/*playlist, but in cards on home page*/ + { + background: var(--hover-background) !important; +} + +#poll-votes.ytd-backstage-poll-renderer { + background: transparent !important; +} + +.vote-percentage.ytd-backstage-poll-renderer, +.choice-text.ytd-backstage-poll-renderer, +#poll-choice-text.ytd-commentbox, +yt-icon.ytd-backstage-poll-renderer { + color: var(--main-text) !important; +} + +paper-item[selected].ytd-backstage-poll-renderer #progress-bar.ytd-backstage-poll-renderer { + background: var(--main-color) !important; +} + +/*about*/ +.subheadline, +#right-column .subheadline { + color: var(--main-text) !important; +} + +#description:not([class*="yt-music"]), +#bio, +#right-column>yt-formatted-string { + color: var(--dimmer-text) !important; +} + +#right-column>yt-formatted-string, +#description-container.ytd-channel-about-metadata-renderer, +#bio-container.ytd-channel-about-metadata-renderer, +#photos-container.ytd-channel-about-metadata-renderer, +#details-container.ytd-channel-about-metadata-renderer, +#links-container.ytd-channel-about-metadata-renderer { + border-color: var(--hover-background) !important; +} + +#link-list-container a { + color: var(--main-color) !important; +} + +#link-list-container:hover a { + filter: brightness(110%); +} + +/*private message*/ +ytd-form-popup-renderer[dialog][dialog][dialog] { + background: var(--main-background) !important; +} + +#buttons.ytd-form-popup-renderer { + border-color: var(--hover-background) !important; +} + +ytd-toggle-menu-service-item-renderer { + color: var(--main-text) !important; +} + +ytd-toggle-menu-service-item-renderer:hover .style-scope.ytd-toggle-menu-service-item-renderer { + color: var(--main-color) !important; +} + +ytd-toggle-menu-service-item-renderer:hover { + background: var(--hover-background) !important; +} + +/*Video page*/ +/*title*/ +.title.ytd-video-primary-info-renderer yt-formatted-string.ytd-video-primary-info-renderer { + color: var(--main-text) !important; +} + +/*views*/ +span.yt-view-count-renderer, +span.ytd-video-view-count-renderer { + color: var(--dimmer-text) !important; +} + +/*published date*/ +#date.ytd-video-primary-info-renderer { + color: var(--dimmer-text) !important; +} + +ytd-video-primary-info-renderer { + border-color: var(--hover-background) !important; +} + +.content-text.ytd-metadata-with-image-row-renderer { + color: var(--main-text) !important; +} + +/*Share*/ +paper-dialog, +tp-yt-paper-dialog { + background: var(--main-background) !important; +} + +#share-url { + color: var(--main-text) !important; +} + +#copy-button:hover #text { + color: var(--main-color) !important; +} + +#bar.yt-copy-link-renderer { + background-color: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +ytd-third-party-network-section-renderer ytd-copy-link-renderer.ytd-third-party-network-section-renderer, +yt-start-at-renderer.yt-third-party-network-section-renderer { + border-color: var(--hover-background) !important; +} + +yt-formatted-string.yt-start-at-renderer, +#text.ytd-sender-id-section-renderer { + color: var(--main-text) !important; +} + +/*share embed*/ +#embed-panel.yt-sharing-embed-renderer { + background: var(--second-background) !important; +} + +#close-panel-icon.yt-sharing-embed-renderer { + color: var(--main-text) !important; +} + +#close-panel-icon.yt-sharing-embed-renderer:hover { + color: var(--main-color) !important; +} + +#title-bar.yt-sharing-embed-renderer, +#additional-info.yt-sharing-embed-renderer, +#action-buttons.yt-sharing-embed-renderer { + border-color: var(--hover-background) !important; +} + +#privacy-mode-info.yt-sharing-embed-renderer { + color: var(--dimmer-text) !important; +} + +/*search for people*/ +#to-field-header.ytd-contact-search-renderer { + color: var(--dimmer-text) !important; +} + +#name.ytd-suggested-contact-renderer { + color: var(--main-text) !important; +} + +/*Make a clip*/ +#container.yt-clip-creation-renderer { + background-color: transparent !important; +} + +input.yt-clip-creation-scrubber-renderer + +/*time*/ + { + border-color: var(--dimmer-text) !important; +} + +#handles.yt-clip-creation-scrubber-view + +/*preview*/ + { + border-color: var(--main-color) !important; +} + +.handle.yt-clip-creation-scrubber-view + +/*preview*/ + { + background-color: var(--main-color) !important; +} + +/*buttons*/ +#footer.yt-clip-creation-renderer { + background-color: var(--second-background) !important; +} + +yt-clip-section-renderer yt-button-renderer.style-primary[is-paper-button], +yt-clip-creation-renderer yt-button-renderer.style-primary[is-paper-button], +yt-clip-section-footer-renderer yt-button-renderer.style-primary[is-paper-button] { + background-color: transparent !important; +} + +yt-button-renderer.style-primary[disabled][is-paper-button] yt-formatted-string.yt-button-renderer { + color: var(--dimmer-text) !important; +} + +yt-button-renderer.yt-clip-creation-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled, +ytd-button-renderer.ytd-clip-section-footer-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + background-color: var(--main-color) !important; + color: var(--main-text) !important; +} + +/*Join this channel panel > Join button, + Settings > Advanced settings > Copy button*/ +yt-button-renderer.ytd-sponsorships-tier-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled, +yt-button-renderer.yt-copy-link-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + background-color: var(--main-color) !important; +} + +/*Playlist creation*/ +#subtext.yt-live-chat-message-renderer, +#label.yt-live-chat-text-input-field-renderer, +.input-content.paper-input-container input, +.input-content.paper-input-container textarea, +.input-content.paper-input-container iron-autogrow-textarea, +.input-content.paper-input-container .paper-input-input { + color: var(--dimmer-text) !important; +} + +.add-on-content.is-highlighted.paper-input-container *, +paper-input-char-counter { + color: var(--dimmer-text) !important; +} + +/*Video cards*/ +/*ttile*/ +ytd-grid-video-renderer.use-ellipsis #details.ytd-grid-video-renderer a.ytd-grid-video-renderer, +ytd-compact-video-renderer.use-ellipsis #video-title.ytd-compact-video-renderer, +#video-title.ytd-video-renderer, +h3.ytd-playlist-renderer, +#video-title.ytd-child-video-renderer, +#length.ytd-child-video-renderer, +#video-title, +#unplayableText, +#length, +#details { + color: var(--main-text) !important; +} + +#items.yt-horizontal-list-renderer>.yt-horizontal-list-renderer:hover a.ytd-grid-video-renderer, +ytd-compact-video-renderer:hover #video-title.ytd-compact-video-renderer, +ytd-video-renderer:hover #video-title.ytd-video-renderer, +ytd-playlist-renderer:hover h3.ytd-playlist-renderer, +#content.ytd-playlist-video-renderer:hover #video-title, +a.yt-simple-endpoint.ytd-playlist-panel-video-renderer:hover #video-title, +a.yt-simple-endpoint.ytd-playlist-panel-video-renderer:hover #unplayableText, +.style-scope.ytd-grid-renderer.use-ellipsis:hover #video-title, +#video-title:hover, +ytd-grid-video-renderer:hover #video-title.yt-simple-endpoint.ytd-grid-video-renderer { + color: var(--main-color) !important; +} + +/*author*/ +yt-formatted-string[ellipsis-truncate] a.yt-formatted-string:last-child, +#byline.ytd-video-meta-block, +#channel-title.ytd-channel-renderer span.ytd-channel-renderer, +#text.ytd-channel-name { + color: var(--main-color) !important; +} + +/*metadata*/ +#metadata-line.ytd-grid-video-renderer, +#metadata-line.ytd-video-meta-block span.ytd-video-meta-block, +#metadata.ytd-channel-renderer, +#description.ytd-channel-renderer, +#thumbnail-attribution.ytd-grid-channel-renderer { + color: var(--dimmer-text) !important; +} + +/*2022 Nov like button*/ +/*not liked yet*/ +yt-animated-icon[animated-icon-type="LIKE"]>ytd-lottie-player>lottie-component>svg>g:nth-child(2)>g:nth-child(2)>g:nth-child(2)>path:nth-child(1), +yt-animated-icon[animated-icon-type="LIKE"]>ytd-lottie-player>lottie-component>svg>g:nth-child(2)>g:nth-child(2)>g:nth-child(4)>path:nth-child(1) { + stroke: var(--main-text) !important; +} + +/*liked*/ +yt-animated-icon[animated-icon-type="LIKE"]>ytd-lottie-player>lottie-component>svg>g:nth-child(2)>g:nth-child(2)>g:nth-child(1)>path:nth-child(1), +yt-animated-icon[animated-icon-type="LIKE"]>ytd-lottie-player>lottie-component>svg>g:nth-child(2)>g:nth-child(2)>g:nth-child(3)>path:nth-child(1) { + fill: var(--main-color) !important; +} + +yt-animated-icon[animated-icon-type="LIKE"]>ytd-lottie-player>lottie-component>svg>g:nth-child(2)>g:nth-child(2)>g:nth-child(1)>path:nth-child(2), +yt-animated-icon[animated-icon-type="LIKE"]>ytd-lottie-player>lottie-component>svg>g:nth-child(2)>g:nth-child(2)>g:nth-child(3)>path:nth-child(2) { + stroke: var(--main-color) !important +} + +/*on shorts - so here is filled by default, thus above I am using main-color instead to keep it consistent*/ +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--filled>div>yt-icon>svg>g>path { + fill: var(--main-color) !important; +} + +/*description and other metadata*/ +ytd-watch-metadata[modern-metapanel] #description.ytd-watch-metadata { + background: var(--second-background) !important; + /*--yt-spec-button-chip-background-hover*/ +} + +ytd-watch-metadata[clickable-description][description-collapsed] #description.ytd-watch-metadata:hover { + background: var(--hover-background) !important; + /*--yt-spec-badge-chip-background*/ +} + +ytd-watch-metadata[modern-metapanel] #description.ytd-watch-metadata .yt-simple-endpoint.style-scope.yt-formatted-string, +.yt-core-attributed-string__link--call-to-action-color { + color: var(--main-color) !important; +} + +/*show more / less*/ +#expand.ytd-text-inline-expander:hover, +#collapse.ytd-text-inline-expander:hover { + color: var(--main-color) !important; +} + +/*Recommandation page*/ +/*author*/ +#title.ytd-shelf-renderer { + color: var(--main-color) !important; +} + +#title-annotation.ytd-shelf-renderer { + color: var(--dimmer-text) !important; +} + +a.yt-simple-endpoint.yt-formatted-string:only-of-type:hover { + color: var(--main-color) !important; +} + +a.yt-simple-endpoint.yt-formatted-string:only-of-type { + color: var(--main-text) !important; +} + +/*Borders*/ +#contents.ytd-section-list-renderer>.ytd-section-list-renderer:not(:last-child):not(ytd-page-introduction-renderer) { + border-color: var(--hover-background) !important; +} + +/*Next and prev buttons*/ +.arrow.yt-horizontal-list-renderer, +#scroll-button-forward, +.arrow.ytd-horizontal-card-list-renderer, +.ytd-horizontal-card-list-renderer[arrow], +.scroll-button.yt-third-party-share-target-section-renderer + +/*share link*/ + { + background-color: var(--hover-background) !important; +} + +/*For the outline around the channel name*/ +.style-scope.ytd-comment-renderer.creator { + background-color: var(--main-color) !important; +} + +.style-scope.ytd-comment-renderer.creator:hover { + background-color: var(--hover-background) !important; +} + +#name.ytd-author-comment-badge-renderer { + color: var(--main-text) !important; +} + +#name:hover { + color: var(--main-color) !important; +} + +/*Accounts*/ +yt-formatted-string.ytd-account-item-section-header-renderer a { + color: var(--dimmer-text) !important; +} + +.style-scope.ytd-account-item-section-renderer:hover #channel-title.ytd-account-item-renderer { + color: var(--main-color) !important; +} + +app-drawer.ytd-app:not([persistent]) #header.ytd-app { + border-color: var(--main-color) !important; +} + +/*How is youtube today*/ +ytd-single-option-survey-renderer[dialog][dialog][dialog], +ytd-single-option-survey-renderer, +ytd-survey-follow-up-renderer[dialog][dialog][dialog], +ytd-survey-follow-up-renderer, +ytd-checkbox-survey-renderer[dialog][dialog][dialog] + +/*TODO: forgot to test if the [dialog] is even needed*/ + { + background-color: var(--hover-background) !important; + box-shadow: var(--shadow) !important; +} + +#header.ytd-single-option-survey-renderer, +#header.ytd-survey-follow-up-renderer, +#header.ytd-checkbox-survey-renderer { + color: var(--main-color) !important; +} + +ytd-single-option-survey-option-renderer, +#checkboxLabel.paper-checkbox { + color: var(--main-text) !important; +} + +ytd-single-option-survey-option-renderer:hover { + background-color: var(--hover-background) !important; +} + +/*rate a video to improve youtube*/ +#star-survey.ytd-inline-survey-renderer, +.survey-wrapper.ytd-inline-survey-renderer { + background-color: var(--second-background) !important; +} + +#inline-survey-compact-video-renderer.ytd-inline-survey-renderer { + background-color: var(--hover-background) !important; +} + +ytd-primetime-promo-renderer.ytd-rich-section-renderer, +ytd-inline-survey-renderer.ytd-rich-section-renderer { + border-color: var(--hover-background) !important; +} + +#follow-up-survey.ytd-inline-survey-renderer { + border-left: 4px solid var(--hover-background) !important; +} + +/*submit button*/ +#submit-btn-footer.ytd-inline-survey-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + background-color: var(--main-color) !important; +} + +/*not sure tell us why followup*/ +#title.ytd-inline-survey-renderer, +#follow-up-title.ytd-inline-survey-renderer, +#selected-response-text.ytd-rating-survey-renderer { + color: var(--main-color) !important; +} + +/*checkboxes cards*/ +tp-yt-paper-checkbox.ytd-checkbox-survey-option-renderer { + background-color: var(--hover-background) !important; +} + +/*background and close button*/ +ytd-inline-survey-renderer[expanded] #dismissable.ytd-inline-survey-renderer, +#dismiss-button.ytd-inline-survey-renderer { + background-color: var(--second-background) !important; +} + +paper-checkbox.ytd-checkbox-survey-option-renderer { + background-color: var(--hover-background) !important; +} + +/*thanks*/ +#dismissed.ytd-inline-survey-renderer ytd-message-renderer.ytd-inline-survey-renderer { + background-color: var(--hover-background) !important; +} + +/*info warning - covid19*/ +ytd-clarification-renderer { + background-color: var(--hover-background) !important; +} + +ytd-clarification-renderer[has-action-button] .content.ytd-clarification-renderer, +ytd-clarification-renderer[background-style="info"] { + border-color: var(--hover-background) !important; +} + +.content-title.ytd-clarification-renderer { + color: var(--main-text) !important; +} + +ytd-clarification-renderer[clarify-style="medium"] .description.ytd-clarification-renderer { + color: var(--dimmer-text) !important; +} + +.source.ytd-clarification-renderer { + color: var(--main-color) !important; +} + +ytd-clarification-renderer yt-button-renderer.style-suggestive[is-paper-button] paper-button.yt-button-renderer { + border-color: var(--main-color) !important; +} + +/*Change subtitles settings tooltip*/ +.ytp-promotooltip-container { + background-color: var(--hover-background) !important; + box-shadow: var(--shadow) !important; + color: var(--main-text) !important; +} + +.ytp-promotooltip-pointer { + border-color: var(--hover-background) !important; +} + +/*You are not logged in tooltip*/ +#tooltip.tp-yt-paper-tooltip, +yt-tooltip-renderer { + background-color: var(--hover-background) !important; + box-shadow: var(--shadow) !important; + color: var(--main-text) !important; +} + +yt-tooltip-renderer::before { + border-color: transparent transparent var(--hover-background) transparent !important; +} + +/*Join button tooltip*/ +yt-bubble-hint-renderer[style_="BUBBLE_HINT_STYLE_BLUE_TOOLTIP"] { + background-color: var(--second-background) !important; + box-shadow: var(--shadow) !important; +} + +yt-bubble-hint-renderer[style_="BUBBLE_HINT_STYLE_BLUE_TOOLTIP"] #text.yt-bubble-hint-renderer:not(:empty), +yt-bubble-hint-renderer[style_="BUBBLE_HINT_STYLE_BLUE_TOOLTIP"] #details-text.yt-bubble-hint-renderer { + background-color: var(--second-background) !important; +} + +yt-bubble-hint-renderer[position-type="OPEN_POPUP_POSITION_LEFT"][style_="BUBBLE_HINT_STYLE_BLUE_TOOLTIP"]::before { + border-color: transparent transparent transparent var(--second-background) !important; +} + +/*window*/ +ytd-sponsorships-offer-renderer[dialog][dialog][dialog] { + background-color: var(--main-background) !important; +} + +#background-image-layer.ytd-sponsorships-offer-renderer { + background-image: unset !important; + background-color: var(--hover-background) !important; +} + +/*title*/ +#top-bar.ytd-sponsorships-offer-renderer { + color: var(--main-text) !important; +} + +/*price*/ +#above-purchase-button-text.ytd-sponsorships-tier-renderer { + color: var(--main-color) !important; +} + +/*fine print*/ +.disclaimer.ytd-sponsorships-tier-renderer { + color: var(--main-text) !important; +} + +/*Super Thanks donations*/ +ytd-pdg-buy-flow-renderer { + background-color: var(--main-background) !important; +} + +/*remove white image in the header*/ +yt-pdg-buy-flow-header-renderer { + background: transparent !important; +} + +#container.ytd-pdg-comment-preview-renderer { + border-color: var(--hover-background) !important; +} + +#container.ytd-pdg-comment-preview-renderer:focus-within { + border-color: var(--main-color) !important; +} + +/*bonus*/ +#title-background.ytd-pdg-comment-preview-renderer { + background-color: var(--hover-background) !important; +} + +/*Progress bar*/ +#progress { + background-color: var(--main-color) !important; + border-color: var(--main-color) !important; +} + +yt-page-navigation-progress { + background-color: transparent !important; +} + +/*Button tooltips*/ +#tooltip.paper-tooltip { + background-color: var(--hover-background) !important; + color: var(--main-color) !important; +} + +/*Active grid icon*/ +button.ytd-button-renderer[is="paper-icon-button-light"][disabled] { + color: rgb(255, 255, 255) !important; +} + +/*2022 Nov changes*/ +/*subscribe button*/ +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--filled, +/*Show more on home page*/ +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--outline, +/* as of oct 2023 */ +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal, +/*NOTE: this affects other material buttons - I would say desired effect*/ +.yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--filled, +.yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--filled:hover, +/*on shorts*/ +.yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--tonal, +.yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--tonal:hover, +/*on shorts*/ +.ytp-sb-subscribe, +a.ytp-sb-subscribe + +/*in cards... why yt why*/ + { + background-color: var(--second-background) !important; + border-color: var(--second-background) !important; + box-shadow: var(--shadow) !important; + color: var(--main-text) !important; +} + +/*2024 March*/ +ytd-live-chat-frame #show-hide-button.ytd-live-chat-frame>ytd-button-renderer.ytd-live-chat-frame { + background-color: transparent !important; +} + +/*fix black "personalized" icon*/ +.yt-spec-button-shape-next--icon-leading-trailing svg>g:nth-child(2)>g>g:nth-child(2)>path:nth-child(2) { + fill: var(--main-text) !important; +} + +/* to fix white corners for .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--filled */ +.button-container.ytd-rich-shelf-renderer { + background-color: transparent; +} + +/*unsubscribe confirm dialog*/ +.yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--text { + color: var(--main-color) !important; +} + +.yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--text:hover, +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal:hover { + background-color: var(--yt-spec-10-percent-layer) !important; +} + +/*join button*/ +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal[aria-label="Join this channel"], +.yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled + +/*in window*/ + { + background-color: var(--second-background) !important; + border-color: var(--second-background) !important; +} + +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--outline:hover { + background-color: var(--yt-spec-10-percent-layer) !important; +} + +/*comment button*/ +ytd-button-renderer#submit-button.ytd-commentbox .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + background-color: var(--main-color) !important; + color: var(--main-text) !important; +} + +/* button labels */ +.yt-spec-button-shape-with-label__label { + color: var(--main-text) !important; +} + +/*download panel > get trial button*/ +/*share panel > copy button*/ +ytd-offline-promo-renderer.ytd-popup-container yt-button-renderer#action-button .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled, +yt-third-party-network-section-renderer.ytd-unified-share-panel-renderer yt-button-renderer#copy-button .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + background-color: var(--main-color) !important; + color: var(--main-text) !important; +} + +/*Thanks panel > "Buy and Send" button*/ +/*Thanks panel > About Super Thanks panel > "Got it" button*/ +ytd-button-renderer#buy-button.yt-super-vod-buy-flow-content-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled, +yt-button-renderer#confirm-button.yt-confirm-dialog-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + background-color: var(--main-color) !important; + color: var(--main-text) !important; +} + +/*Toast notification*/ +yt-notification-action-renderer yt-button-renderer.yt-notification-action-renderer .yt-spec-button-shape-next--call-to-action-inverse.yt-spec-button-shape-next--text { + color: var(--main-color) !important; +} + +/*Toast notification hover*/ +yt-notification-action-renderer yt-button-renderer.yt-notification-action-renderer .yt-spec-button-shape-next--call-to-action-inverse.yt-spec-button-shape-next--text:hover { + background-color: var(--main-background) !important; +} + +if join-color + +/*overwriting the above*/ + { + + .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal[aria-label="Join this channel"], + yt-button-shape:nth-child(1)>.yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--outline { + background-color: var(--main-color) !important; + border-color: var(--main-color) !important; + } +} + +if subscribe-color + +/*overwriting the above*/ + { + .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--filled, + .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--filled, + .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--filled:hover, + /*on shorts*/ + .ytp-sb-subscribe, + a.ytp-sb-subscribe + + /*in cards*/ + { + background-color: var(--main-color) !important; + border-color: var(--main-color) !important; + } +} + +ytd-button-renderer.style-primary[is-paper-button] { + background-color: transparent !important; +} + +/*Sponsor button*/ +ytd-modal-with-title-and-button-renderer { + background: var(--second-background) !important; +} + +#content.ytd-modal-with-title-and-button-renderer { + color: var(--dimmer-text) !important; +} + +.buttons.ytd-modal-with-title-and-button-renderer { + border-color: var(--hover-background) !important; +} + +/*sponsor popup*/ +#sponsor-button.ytd-membership-offer-renderer ytd-button-renderer.ytd-membership-offer-renderer { + background-color: var(--main-color) !important; +} + +#sponsor-button.ytd-membership-offer-renderer ytd-button-renderer.ytd-membership-offer-renderer:hover { + filter: brightness(110%) !important; +} + +#header.ytd-membership-offer-renderer { + background: var(--main-background) !important; +} + +ytd-perks-section-renderer, +ytd-membership-offer-renderer[dialog][dialog][dialog], +paper-dialog-scrollable.can-scroll:not(.scrolled-to-bottom):not(:last-child)::after, +paper-dialog-scrollable.is-scrolled:not(:first-child)::before { + background: var(--second-background) !important; +} + +.extra-content.ytd-offer-perk-extra { + border-color: var(--hover-background) !important; + background: var(--hover-background) !important; + color: var(--dimmer-text) !important; +} + +.footer.ytd-membership-offer-renderer { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +ytd-membership-offer-renderer * { + border-color: var(--hover-background) !important; +} + +.price.ytd-membership-offer-renderer { + color: var(--main-color) !important; +} + +.style-title.ytd-offer-text-item, +.style-subtitle.ytd-offer-text-item, +.payment-clause.ytd-membership-offer-renderer { + color: var(--main-text) !important; +} + +.perk-item-title.ytd-perk-item-renderer, +.perk-item-public-description.ytd-perk-item-renderer { + color: var(--dimmer-text) !important; +} + +/*Edit button in channel page*/ +#edit-buttons.ytd-c4-tabbed-header-renderer ytd-button-renderer.ytd-c4-tabbed-header-renderer { + background-color: transparent !important; +} + +/*Toggle button to play next*/ +paper-toggle-button[checked]:not([disabled]) .toggle-bar.paper-toggle-button { + background-color: var(--main-color) !important; + opacity: 0.9 !important; +} + +paper-toggle-button[checked]:not([disabled]) .toggle-button.paper-toggle-button { + --paper-toggle-button-checked-button-color: rgb(255, 255, 255) !important; +} + +/*Hover for toggle button*/ +.toggle-button.paper-toggle-button:hover, +paper-toggle-button[checked]:not([disabled]) .toggle-button.paper-toggle-button:hover { + background-color: var(--main-color) !important; +} + +yt-bubble-hint-renderer { + background: var(--hover-background) !important; +} + +yt-bubble-hint-renderer::after { + border-top-color: var(--second-background) !important; +} + +#text.yt-bubble-hint-renderer { + background: var(--hover-background) !important; + color: var(--main-text) !important; +} + +#details-text.yt-bubble-hint-renderer { + background: var(--hover-background) !important; + color: var(--dimmer-text) !important; +} + +.buttons.yt-bubble-hint-renderer { + border-color: var(--hover-background) !important; +} + +/*Filter active*/ +paper-button.ytd-toggle-button-renderer { + color: rgba(255, 255, 255, 0.5) !important; +} + +/*Badges*/ +.badge-style-type-simple.ytd-badge-supported-renderer, +.badge-style-type-disabled.ytd-badge-supported-renderer, +yt-icon.ytd-badge-supported-renderer { + background: transparent !important; + color: var(--main-color) !important; + padding-left: 0px !important; + opacity: .7 !important; +} + +.badge-style-type-simple-strikethrough.ytd-badge-supported-renderer { + color: var(--dimmer-text) !important; +} + +/*Trending badge*/ +.badge-style-type-featured.ytd-badge-supported-renderer { + background: var(--main-color) !important; +} + +/*Author verified badge in comments*/ +ytd-author-comment-badge-renderer:not(.creator) #icon.ytd-author-comment-badge-renderer { + fill: var(--main-color) !important; +} + +/*Live now badge*/ +.badge-style-type-live-now.ytd-badge-supported-renderer, +.badge-style-type-live-now-alternate.ytd-badge-supported-renderer { + color: var(--main-color) !important; + background: transparent !important; + border-color: var(--main-color) !important; +} + +/*Premium*/ +.badge-style-type-red.ytd-badge-supported-renderer { + color: #DA4453 !important; + background: transparent !important; + border-color: var(--main-color) !important; +} + +/*Series name*/ +.badge-style-type-collection.ytd-badge-supported-renderer { + color: var(--main-color) !important; +} + +.yt-simple-endpoint.style-scope.yt-formatted-string { + color: var(--dimmer-text) !important; +} + +/*video hashtags & links in settings page*/ +#super-title .yt-simple-endpoint.style-scope.yt-formatted-string, +ytd-section-list-renderer[page-subtype="WEB_PAGE_TYPE_SETTINGS"] .yt-simple-endpoint.style-scope.yt-formatted-string { + color: var(--main-color) !important; +} + +/*panel links*/ +tp-yt-paper-dialog.ytd-popup-container .yt-simple-endpoint.style-scope.yt-formatted-string { + color: var(--main-color) !important; +} + +/*Dropdown*/ +.dropdown-content.style-scope.ytd-popup-container>*, +tp-yt-paper-listbox, +ytd-menu-popup-renderer { + background: var(--second-background) !important; + color: var(--main-text) !important; +} + +ytd-menu-service-item-renderer:hover, +a.ytd-menu-navigation-item-renderer:hover, +tp-yt-paper-listbox.yt-dropdown-menu .iron-selected.yt-dropdown-menu, +tp-yt-paper-listbox.yt-dropdown-menu tp-yt-paper-item.yt-dropdown-menu:hover, +ytd-menu-service-item-renderer[is-selected] { + background: var(--hover-background) !important; +} + +yt-formatted-string.ytd-menu-service-item-renderer, +yt-formatted-string.ytd-menu-navigation-item-renderer { + color: var(--main-text) !important; +} + +ytd-menu-service-item-renderer:hover yt-formatted-string.ytd-menu-service-item-renderer, +a.ytd-menu-navigation-item-renderer:hover yt-formatted-string.ytd-menu-navigation-item-renderer, +tp-yt-paper-listbox a.yt-simple-endpoint.yt-dropdown-menu:hover .item.yt-dropdown-menu { + color: var(--main-color) !important; +} + +#owner-name.ytd-video-owner-renderer a { + color: var(--main-color) !important; + opacity: .9; +} + +/*share*/ +#header.ytd-add-to-playlist-renderer { + color: var(--main-text) !important; +} + +#label.ytd-playlist-add-to-option-renderer, +paper-item.ytd-compact-link-renderer { + color: var(--dimmer-text) !important; +} + +#header.ytd-add-to-playlist-renderer, +#playlists.ytd-add-to-playlist-renderer { + border-color: var(--hover-background) !important; +} + +paper-item.ytd-compact-link-renderer:hover #label.ytd-compact-link-renderer, +paper-item.ytd-compact-link-renderer:hover yt-icon.ytd-compact-link-renderer { + color: var(--main-color) !important; + fill: var(--main-color) !important; +} + +ytd-playlist-add-to-option-renderer paper-checkbox:hover #label.ytd-playlist-add-to-option-renderer, +ytd-playlist-add-to-option-renderer paper-checkbox[checked] #label.ytd-playlist-add-to-option-renderer, +yt-icon.ytd-playlist-add-to-option-renderer { + color: var(--main-color) !important; +} + +/*Avatars and thumbnails opacity */ +img.yt-img-shadow { + opacity: 0.9 !important; +} + +img.yt-img-shadow:hover { + opacity: 1 !important; +} + +/*Very specific hover for thumbnails*/ +#dismissable.ytd-compact-video-renderer:hover img.yt-img-shadow, +#items.yt-horizontal-list-renderer>.yt-horizontal-list-renderer:hover img.yt-img-shadow, +#items.ytd-grid-renderer>ytd-grid-video-renderer.ytd-grid-renderer:hover img.yt-img-shadow, +ytd-video-renderer.ytd-item-section-renderer:hover img.yt-img-shadow, +.style-scope.ytd-channel-featured-content-renderer:hover img.yt-img-shadow, +#grid-container.ytd-expanded-shelf-contents-renderer>.ytd-expanded-shelf-contents-renderer:hover img.yt-img-shadow, +ytd-playlist-video-renderer:hover img.yt-img-shadow, +iron-list:not([grid]) #items.iron-list>*:hover img.yt-img-shadow { + opacity: 1 !important; +} + +/*Video section*/ +/*2022 Nov*/ +/*this seems to be only in dark mode? */ +#cinematics.ytd-watch-flexy { + display: none !important; +} + +/*Video title hover in html5 video*/ +.html5-video-player a:hover { + color: var(--main-text) !important; + text-shadow: none !important; +} + +/* Code takken from https://userstyles.org/styles/95280 */ +/* scrubber button */ +.html5-scrubber-button:hover, +.ytp-chrome-controls .ytp-button[aria-pressed]::after, +.ytp-scrubber-button:hover, +.html5-video-player:not(.ytp-color-party) .ytp-swatch-background-color, +.ytp-swatch-background-color-secondary, +.PlayerControlsProgressBarHostProgressBarPlayheadDot + +/*shorts*/ + { + background: var(--main-color) !important; +} + +/* progress bar */ +.html5-video-player:not(.ytp-color-party) .html5-play-progress, +.html5-video-player:not(.ytp-color-party) .ytp-play-progress, +.progress-bar-played.ytd-progress-bar-line, +.PlayerControlsProgressBarHostProgressBarPlayed + +/* on shorts*/ + { + background: var(--main-color) !important; +} + +.ytp-volume-slider-track, +.ytp-volume-slider-handle:before { + background: var(--main-color) !important; + z-index: -117; +} + +.ytp-settings-button.ytp-hd-quality-badge::after, +.ytp-settings-button.ytp-4k-quality-badge::after, +.ytp-settings-button.ytp-5k-quality-badge::after, +.ytp-settings-button.ytp-8k-quality-badge::after, +.ytp-settings-button.ytp-3d-badge::after { + background-color: var(--main-color) !important; +} + +.ytp-swatch-color { + color: var(--main-color) !important; +} + +.ytp-menuitem[aria-checked="true"] .ytp-menuitem-toggle-checkbox { + background-color: var(--main-color) !important; +} + +.ytp-chrome-controls .ytp-button.ytp-youtube-button:hover:not([aria-disabled="true"]):not([disabled]) .ytp-svg-fill-logo-tube-lozenge { + fill: var(--main-color) !important; +} + +.ytp-cued-thumbnail-overlay:hover .ytp-large-play-button-bg, +.ytp-large-play-button.ytp-touch-device .ytp-large-play-button-bg { + fill: var(--main-color) !important; +} + +.ytp-large-play-button.ytp-button.ytp-red2:hover, +.ytp-cued-thumbnail-overlay:hover .ytp-large-play-button.ytp-button.ytp-red2 { + /*background-image: url(https://github.com/RaitaroH/YouTube-DeepDark/raw/master/YT_Images/large_play_button_hover_ringo-vfl7vEehF.png) !important;*/ + background-image: url(https://s.ytimg.com/yts/img/large_play_button_ringo-vfljWXIdx.png) !important; + filter: invert(100%) brightness(300%); +} + +.resume-playback-progress-bar { + background: var(--main-color) !important; +} + +/*Added because of this: https://forum.userstyles.org/discussion/53368/solved-fix-this-annoying-youtube-tab-select-bug-thats-been-there-forever#latest*/ +.ytp-keyboard-focus .ytp-progress-bar:focus { + box-shadow: none !important; +} + +/*Video menu - might have issues with lighter colors*/ +.ytp-popup { + background: var(--second-background) !important; + opacity: .9 !important; +} + +.ytp-menuitem:hover:not([aria-disabled="true"]) { + background-color: var(--hover-background) !important; +} + +/*Text*/ +.iv-branding .iv-branding-context-name, +.ytp-menuitem-label, +.ytp-menuitem-label-count, +.ytp-menuitem-content, +.ytp-menu-label-secondary, +.ytp-panel-header { + color: var(--main-text) !important; + text-shadow: none !important; +} + +/*Keyboard focus*/ +.ytp-probably-keyboard-focus .ytp-menuitem:focus .ytp-menuitem-content, +.ytp-probably-keyboard-focus .ytp-menuitem:focus .ytp-menuitem-label { + box-shadow: inset -2px -2px 0 var(--main-color), inset 0 2px 0 var(--main-color) !important; +} + +.ytp-probably-keyboard-focus .ytp-button:focus { + box-shadow: inset 0 0 0 2px var(--main-color) !important; +} + +.ytp-probably-keyboard-focus .ytp-progress-bar:focus { + box-shadow: 0 0 0 2px var(--main-color) !important; +} + +/*Miniplayer*/ +#info-bar.ytd-miniplayer .metadata.ytd-miniplayer, +#info-bar.ytd-miniplayer { + background-color: var(--main-background) !important; +} + +#info-bar.ytd-miniplayer .channel.ytd-miniplayer { + color: var(--main-color) !important; +} + +.ytd-miniplayer .ytp-button:not([aria-disabled="true"]):not([disabled]):not([aria-hidden="true"]):hover svg path { + fill: var(--main-color) !important; +} + +/*added to queue*/ +ytd-miniplayer-toast[opened] { + background-color: var(--second-background) !important; +} + +#label.ytd-miniplayer-toast { + color: var(--main-color) !important; +} + +/*queue / playlist panel closed*/ +ytd-playlist-panel-renderer[collapsible][collapsed][use-color-palette] .title.ytd-playlist-panel-renderer, +ytd-playlist-panel-renderer[collapsible][collapsed][use-color-palette] #next-video-title.ytd-playlist-panel-renderer { + color: var(--main-text) !important; +} + +ytd-playlist-panel-renderer[collapsible][collapsed][use-color-palette] .byline-title.ytd-playlist-panel-renderer, +ytd-playlist-panel-renderer[collapsible][collapsed][use-color-palette] .publisher.ytd-playlist-panel-renderer, +ytd-playlist-panel-renderer[collapsible][collapsed][use-color-palette] .publisher.ytd-playlist-panel-renderer:not([is-empty]).ytd-playlist-panel-renderer+.index-message-wrapper.ytd-playlist-panel-renderer::before, +ytd-playlist-panel-renderer[collapsible][collapsed][use-color-palette] .index-message-wrapper.ytd-playlist-panel-renderer { + color: var(--main-color) !important; +} + +/*Watch later svg*/ +.style-scope.ytd-thumbnail-overlay-toggle-button-renderer:hover { + fill: var(--main-color) !important; +} + +ytd-thumbnail-overlay-toggle-button-renderer:focus yt-icon.ytd-thumbnail-overlay-toggle-button-renderer { + outline-color: var(--main-color) !important; +} + +/*This channel is watched by others*/ +ytd-thumbnail-overlay-endorsement-renderer { + background-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +/*Popup for when you hover over the channel avatar in the video*/ +.iv-branding .branding-context-container-inner { + background-color: var(--main-background) !important; +} + +/*Changing icon for unavailable video*/ +#img.ytd-player-error-message-renderer { + display: block !important; + -moz-box-sizing: border-box !important; + box-sizing: border-box !important; + background: url(https://github.com/RaitaroH/YouTube-DeepDark/raw/master/YT_Images/404.png) no-repeat !important; + width: 140px !important; + height: 100px !important; + padding-left: 140px !important; + position: relative !important; +} + +/*Changing icon for unavailable page (404)*/ +#error-page-hh-illustration { + display: block !important; + -moz-box-sizing: border-box !important; + box-sizing: border-box !important; + background: url(https://github.com/RaitaroH/YouTube-DeepDark/raw/master/YT_Images/404.png) no-repeat !important; + width: 140px !important; + height: 100px !important; + padding-left: 140px !important; + right: -175px !important; + position: relative !important; +} + +/*Some spacing for the logo*/ +#yt-masthead #logo-container { + margin-right: 20px !important; +} + +/*consent page (cookie page)*/ +/*cookies consent dialog*/ +ytd-consent-bump-v2-lightbox ytd-button-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + color: var(--main-color) !important; +} + +ytd-consent-bump-v2-lightbox[darker-dark-theme] .loading-overlay.ytd-consent-bump-v2-lightbox { + background: var(--hover-background) !important; +} + +/*Border color for terms and conditions*/ +ytd-consent-bump-renderer { + border-bottom: 1px solid var(--main-color) !important; +} + +/*New logo*/ +#logo-icon-container.ytd-topbar-logo-renderer svg g path[fill*="#FF0000"], +ytd-topbar-logo-renderer.style-scope>a>div>ytd-logo>yt-icon>yt-icon-shape>icon-shape>div>svg>svg:nth-child(1)>g:nth-child(1)>path:nth-child(1), +/*cookie version*/ +svg.ytd-consent-bump-v2-lightbox>g:nth-child(1)>g:nth-child(1)>path:nth-child(1) { + fill: var(--main-color) !important; +} + +ytd-topbar-logo-renderer.style-scope>a>div>ytd-logo>yt-icon>yt-icon-shape>icon-shape>div>svg>svg:nth-child(1)>g:nth-child(2) + +/*cookie version*/ +g.ytd-consent-bump-v2-lightbox:nth-child(2)>g:nth-child(1)>* { + fill: var(--main-text) !important; +} + +ytd-topbar-logo-renderer.style-scope a svg>g>g:nth-child(2)>g, +#country-code.ytd-topbar-logo-renderer { + color: var(--main-text) !important; +} + +/*Logo hover*/ +#logo-icon:hover { + --yt-swatch-logo-override: var(--main-color) !important; +} + +/*Rewind logo*/ +#animated-yoodle { + filter: invert(90%) grayscale(1); +} + +/*Shorts logo*/ +/*on home page*/ +ytd-rich-section-renderer.style-scope>div>ytd-rich-shelf-renderer yt-icon-shape>icon-shape>div>svg>g>path:nth-child(1), +/*on video page*/ +yt-icon.ytd-reel-shelf-renderer>yt-icon-shape>icon-shape>div>svg>g>path:nth-child(1) { + fill: var(--main-color) !important; +} + +/*Playlist page*/ +/*sidebar*/ +ytd-playlist-sidebar-renderer { + background-color: var(--hover-background) !important; +} + +#stats.ytd-playlist-sidebar-primary-info-renderer, +#description.ytd-playlist-sidebar-primary-info-renderer .bold.yt-formatted-string, +#owner-sub-count.ytd-video-owner-renderer { + color: var(--dimmer-text) !important; +} + +#items.ytd-playlist-sidebar-renderer>.ytd-playlist-sidebar-renderer:not(:last-child) { + border-color: var(--hover-background) !important; +} + +#primary.ytd-two-column-browse-results-renderer { + background-color: var(--main-background) !important; +} + +ytd-button-renderer[is-paper-button] yt-icon.ytd-button-renderer { + color: var(--dimmer-text) !important; +} + +#content.ytd-playlist-video-renderer { + border-color: var(--hover-background) !important; +} + +/*buttons*/ +ytd-playlist-sidebar-renderer ytd-toggle-button-renderer.style-suggestive[is-paper-button], +ytd-playlist-sidebar-renderer paper-button.ytd-toggle-button-renderer { + background-color: var(--hover-background) !important; + border-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +a.yt-simple-endpoint.ytd-button-renderer:hover *, +ytd-playlist-sidebar-renderer ytd-button-renderer #button.ytd-button-renderer:hover, +ytd-playlist-sidebar-renderer ytd-button-renderer #button.ytd-button-renderer:hover>yt-formatted-string.ytd-button-renderer { + color: var(--main-color) !important; +} + +/*playlist page*/ +ytd-browse[page-subtype="playlist"] ytd-two-column-browse-results-renderer.ytd-browse { + background-color: var(--main-background) !important; +} + +.index-message.ytd-playlist-panel-renderer, +.light-text.ytd-playlist-segment-renderer, +#contributor.ytd-playlist-video-renderer { + color: var(--dimmer-text) !important; +} + +#title-container.ytd-playlist-segment-renderer { + border-color: var(--hover-background) !important; +} + +#title-container.ytd-playlist-segment-renderer:hover #title.ytd-playlist-segment-renderer { + color: var(--main-color) !important; +} + +/*Playlist changes*/ +ytd-playlist-panel-video-renderer:hover { + background-color: var(--hover-background) !important; +} + +ytd-playlist-panel-video-renderer[selected] #index.ytd-playlist-panel-video-renderer, +#byline.ytd-playlist-panel-video-renderer, +.ytp-video-menu-item[aria-checked="true"] .ytp-video-menu-item-now-playing, +.ytp-video-menu-item-author { + color: var(--main-color) !important; +} + +ytd-playlist-video-renderer:hover, +ytd-playlist-video-renderer:hover:not(.dragging) { + background-color: var(--second-background) !important; +} + +ytd-playlist-panel-video-renderer[selected][use-color-palette], +ytd-playlist-panel-video-renderer[selected][use-color-palette]:hover:not(.dragging) { + background-color: var(--hover-background) !important; +} + +.header.ytd-playlist-panel-renderer, +.playlist-items.ytd-playlist-panel-renderer, +#header.ytd-engagement-panel-title-header-renderer, +#content.ytd-engagement-panel-section-list-renderer, +ytd-transcript-footer-renderer, +ytd-transcript-segment-list-renderer { + background-color: var(--second-background) !important; +} + +.cue.ytd-transcript-body-renderer, +.cue-group-start-offset.ytd-transcript-body-renderer { + color: var(--dimmer-text) !important; +} + +.cue-group.active.ytd-transcript-body-renderer { + border-left-color: var(--main-color) !important; + background-color: var(--hover-background) !important; +} + +.cue-group.active.ytd-transcript-body-renderer .cue-group-start-offset.ytd-transcript-body-renderer, +.cue.ytd-transcript-body-renderer.active { + color: var(--main-text) !important; +} + +.cue-group.ytd-transcript-body-renderer:hover .cue-group-start-offset.ytd-transcript-body-renderer, +.cue-group.ytd-transcript-body-renderer:hover .cue.ytd-transcript-body-renderer { + color: var(--main-color) !important; +} + +.cue.ytd-transcript-body-renderer:hover, +ytd-transcript-body-renderer:not([refresh]) .cue.active.ytd-transcript-body-renderer { + background-color: transparent !important; + color: var(--main-color) !important +} + +.segment-timestamp.ytd-transcript-segment-renderer { + background-color: var(--hover-background) !important; + color: var(--main-color) !important +} + +/*search transcript*/ +ytd-transcript-search-panel-renderer, +ytd-transcript-search-box-renderer { + background-color: var(--second-background) !important; +} + +.input-container.ytd-transcript-search-box-renderer { + background-color: var(--hover-background) !important; +} + +/*magnifing glass icon*/ +.icon.ytd-transcript-search-box-renderer { + --iron-icon-fill-color: var(--dimmer-text) !important; + --iron-icon-stroke-color: var(--dimmer-text) !important; +} + +#transcript-search-box-input.ytd-transcript-search-box-renderer { + color: var(--main-text) !important; + caret-color: var(--main-color) !important; +} + +.ytp-video-menu-item[aria-checked="true"] .ytp-video-menu-item-thumbnail { + border-color: var(--main-color) !important; +} + +#index.ytd-playlist-video-renderer, +#index.ytd-playlist-panel-video-renderer, +.badge-style-type-medium-grey.ytd-badge-supported-renderer + +/*unlisted*/ + { + color: var(--dimmer-text) !important; +} + +#container.ytd-playlist-panel-renderer { + border-color: var(--second-background) !important; +} + +/*Playlist creation*/ +#create-playlist-form .input-content.paper-input-container label { + color: var(--main-text) !important; +} + +#create-playlist-form input.style-scope.paper-input::placeholder { + color: var(--dimmer-text) !important; +} + +#create-playlist-form .underline.is-highlighted.paper-input-container .focused-line.paper-input-container { + border-bottom-color: var(--main-text) !important; +} + +#create-playlist-form #label.ytd-privacy-dropdown-item-renderer { + color: var(--main-text) !important; +} + +#create-playlist-form ytd-privacy-dropdown-item-renderer.iron-selected { + background-color: var(--hover-background) !important; +} + +/*Chapters*/ +/*title*/ +h4.ytd-macro-markers-list-item-renderer { + color: var(--main-text) !important; +} + +/*timestamp*/ +#time.ytd-macro-markers-list-item-renderer { + color: var(--main-color) !important; + background-color: transparent !important; + padding: 0px !important; +} + +/*show current chapter*/ +#sync-button.ytd-macro-markers-list-renderer { + background-color: var(--main-background) !important; + color: var(--main-text) !important; +} + +#sync-button.ytd-macro-markers-list-renderer:hover { + color: var(--main-color) !important; +} + +/*active indicators*/ +ytd-macro-markers-list-item-renderer[active] #thumbnail.ytd-macro-markers-list-item-renderer { + outline-color: var(--main-color) !important; +} + +#active-indicator.ytd-macro-markers-list-item-renderer { + background-color: var(--main-color) !important; +} + +/*hover for item*/ +ytd-macro-markers-list-item-renderer:hover, +ytd-macro-markers-list-item-renderer[active] { + background-color: var(--hover-background) !important; +} + +ytd-macro-markers-list-item-renderer:hover { + box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.4); +} + +ytd-macro-markers-list-item-renderer:hover h4.ytd-macro-markers-list-item-renderer { + color: var(--main-color) !important; +} + +/*chapter images in description*/ +ytd-macro-markers-list-item-renderer[active][layout="MACRO_MARKERS_LIST_ITEM_RENDERER_LAYOUT_VERTICAL"] { + border-color: var(--main-color) !important; +} + +ytd-horizontal-card-list-renderer.ytd-structured-description-content-renderer:not(:first-child), +ytd-metadata-row-container-renderer.ytd-structured-description-content-renderer:not(:first-child), +ytd-structured-description-content-renderer[inline-structured-description] ytd-horizontal-card-list-renderer.ytd-structured-description-content-renderer { + border-color: var(--hover-background) !important; +} + +/*chapter times in search description*/ +.metadata-snippet-container-one-line.ytd-video-renderer #time.ytd-video-renderer { + color: var(--main-color) !important; + background: var(--second-background) !important; +} + +/*chapter metadata in search results*/ +ytd-expandable-metadata-renderer { + /*this is used on hover, might as well*/ + background-color: var(--yt-spec-badge-chip-background) !important; +} + +/*expanded chapters in search results*/ +ytd-macro-markers-list-item-renderer[layout="MACRO_MARKERS_LIST_ITEM_RENDERER_LAYOUT_VERTICAL"] { + border-color: var(--second-background) !important; +} + +/*chapter buttons button, 🔁 and close*/ +ytd-engagement-panel-section-list-renderer .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--text yt-icon { + fill: var(--dimmer-text) !important; + stroke: var(--dimmer-text) !important; +} + +/*Search bar*/ +ytd-searchbox[mode="legacy"] #container.ytd-searchbox, +ytd-searchbox[mode="material-centered"] #container.ytd-searchbox, +ytd-searchbox[mode="legacy"] #container.ytd-searchbox, +ytd-searchbox[mode="legacy-centered"] #container.ytd-searchbox, +#container.ytd-searchbox, +#masthead-search-terms + +/*account settings page*/ + { + background: var(--main-background) !important; + border-color: var(--main-background) !important; + box-shadow: none !important; +} + +ytd-searchbox[mode="legacy"] #container.ytd-searchbox:hover, +ytd-searchbox[mode=legacy][has-focus] #container.ytd-searchbox, +ytd-searchbox[mode="material-left"] #container.ytd-searchbox, +ytd-searchbox.style-scope[has-focus=""] #container.ytd-searchbox, +ytd-searchbox[mode="material-centered"]:hover #container.ytd-searchbox, +#masthead-search-terms.masthead-search-terms-border + +/*error page*/ + { + border: 1px solid var(--main-color) !important; + box-shadow: none !important; +} + +ytd-searchbox[mode="legacy"] #container.ytd-searchbox input.ytd-searchbox, +#container.ytd-searchbox>input, +ytd-searchbox input, +#masthead-search-terms.masthead-search-terms-border input + +/*error page*/ + { + color: var(--main-text) !important; +} + +/*Right search icon 🔎 */ +#search-icon-legacy.ytd-searchbox, +#masthead-search .search-btn-component, +#masthead-search .search-btn-component .start + +/*account*/ + { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +#search-icon-legacy.ytd-searchbox:hover yt-icon.ytd-searchbox { + color: var(--main-color) !important; +} + +#masthead-search .search-btn-component .yt-uix-button-content + +/*account*/ + { + filter: invert(1); +} + +/*left 🔎 icon - shown on focus*/ +#search-icon.ytd-searchbox { + color: var(--main-text) !important; +} + +#search-icon.ytd-searchbox:hover, +#search-icon.ytd-searchbox:hover { + color: var(--main-color) !important; +} + +/*results 🔎 icon*/ +.sbqs_c::before { + filter: invert(1); +} + +/*Results backgrounds*/ +.sbsb_a, +.sbdd_b { + background: var(--second-background) !important; + border: none !important; +} + +/*Text color*/ +.gsfs { + color: var(--dimmer-text) !important; +} + +/*Hover and keyboard select background*/ +.sbsb_c.gsfs:hover, +.sbsb_d { + background-color: var(--hover-background) !important; +} + +.sbfl_b { + background-color: var(--second-background) !important; +} + +.sbfl_b:hover { + background-color: var(--hover-background) !important; + color: var(--main-color) !important; +} + +.sbpqs_a { + color: var(--main-color) !important; +} + +/*Keyboard select text color and hover text color*/ +.sbsb_c:hover .sbqs_c, +.sbsb_c.gsfs.sbsb_d .sbqs_c { + color: var(--main-color) !important; +} + +/*Keyboard icon in the search bar*/ +#gs_ok50 { + filter: invert(100%); +} + +/*Microphone search*/ +ytd-masthead #voice-search-button.ytd-masthead { + background-color: var(--hover-background) !important; +} + +ytd-voice-search-dialog-renderer[dialog] { + background-color: var(--second-background) !important; +} + +#header-text.ytd-voice-search-dialog-renderer, +#microphone-label.ytd-voice-search-dialog-renderer, +#microphone.ytd-voice-search-dialog-renderer[state="try-again"] #microphone-circle.ytd-voice-search-dialog-renderer yt-icon.ytd-voice-search-dialog-renderer .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--text { + color: var(--main-text) !important; +} + +/*Search results correction*/ +.style-scope.yt-search-query-correction { + color: var(--main-text) !important; +} + +.style-scope.yt-search-query-correction .italic.yt-formatted-string, +.style-scope.yt-search-query-correction:hover { + color: var(--main-color) !important; +} + +/*Similar results*/ +#title.ytd-exploratory-results-renderer { + color: var(--dimmer-text) !important; +} + +/*search results filter border*/ +#filter-menu.ytd-search-sub-menu-renderer { + border-color: var(--hover-background) !important; +} + +#watch-card-header.ytd-generic-watch-card, +#img-endpoint.ytd-watch-card-collage-renderer #overlay-button.ytd-watch-card-collage-renderer { + background: var(--main-color) !important; + color: var(--main-text) !important; +} + +paper-tab, +paper-tab.iron-selected.ytd-generic-watch-card { + color: var(--main-color) !important; +} + +paper-item:hover { + background-color: var(--second-background) !important; +} + +#img-endpoint.ytd-watch-card-collage-renderer #overlay-button.ytd-watch-card-collage-renderer { + opacity: .9; +} + +#img-endpoint.ytd-watch-card-collage-renderer #overlay-button.ytd-watch-card-collage-renderer:hover { + opacity: 1 !important; +} + +/*album*/ +#watch-card-subtitle.ytd-watch-card-rich-header-renderer { + color: var(--main-text) !important; +} + +.duration.ytd-watch-card-compact-video-renderer { + color: var(--dimmer-text) !important; +} + +/*Buttom border for different fields*/ +.unfocused-line.paper-input-container { + background-color: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +.focused-line.paper-input-container { + background-color: var(--main-color) !important; + border-color: var(--main-color) !important; +} + +/*Search page*/ +#result-count.ytd-search-sub-menu-renderer { + color: var(--dimmer-text) !important; +} + +ytd-search-sub-menu-renderer, +ytd-exploratory-results-renderer.ytd-item-section-renderer, +ytd-shelf-renderer.ytd-item-section-renderer { + border-color: var(--hover-background) !important; +} + +/*no results*/ +.promo-title.ytd-background-promo-renderer, +.promo-body-text.ytd-background-promo-renderer { + color: var(--main-text) !important; +} + +/*show more*/ +#more.ytd-vertical-list-renderer yt-formatted-string.ytd-vertical-list-renderer, +#all.ytd-vertical-list-renderer yt-formatted-string.ytd-vertical-list-renderer { + color: var(--main-text) !important; +} + +#more.ytd-vertical-list-renderer yt-formatted-string.ytd-vertical-list-renderer:hover, +#all.ytd-vertical-list-renderer yt-formatted-string.ytd-vertical-list-renderer:hover { + color: var(--main-color) !important; +} + +ytd-search-filter-renderer yt-formatted-string.ytd-search-filter-renderer { + color: var(--dimmer-text) !important; +} + +ytd-search-filter-renderer.selected yt-formatted-string.ytd-search-filter-renderer, +ytd-search-filter-renderer.selected #dismiss-x.ytd-search-filter-renderer, +ytd-search-filter-renderer yt-formatted-string.ytd-search-filter-renderer:hover { + color: var(--main-color) !important; +} + +/*Search music suggestions*/ +ytd-watch-card-rich-header-renderer { + background: var(--hover-background) !important; +} + +#overlay-button { + background: var(--main-color) !important; +} + +#overlay-button:hover { + filter: brightness(110%) !important; +} + +#watch-card-title, +#view-all-endpoint:hover { + color: var(--main-color) !important; +} + +ytd-watch-card-compact-video-renderer[is-condensed], +#view-all-endpoint { + border-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +/*Search results related to item searched*/ +a.ytd-search-refinement-card-renderer { + background-color: var(--second-background) !important; + border-color: var(--hover-background) !important; + border-radius: 8px !important; +} + +a.ytd-search-refinement-card-renderer:hover #card-title.ytd-search-refinement-card-renderer div.ytd-search-refinement-card-renderer { + color: var(--main-color) !important; +} + +#card-title.ytd-search-refinement-card-renderer div.ytd-search-refinement-card-renderer { + color: var(--main-text) !important; +} + +/*Next button*/ +.center-aligned.ytd-horizontal-card-list-renderer { + background-color: var(--second-background) !important; + color: var(--main-text) !important; +} + +.center-aligned.ytd-horizontal-card-list-renderer:hover { + color: var(--main-color) !important; +} + +/*filter*/ +a.yt-simple-endpoint.ytd-toggle-button-renderer:hover * { + color: var(--main-color) !important; + /* fill: var(--main-color) !important; */ +} + +#filter-group-name.ytd-search-filter-group-renderer { + color: var(--main-text) !important; + border-color: var(--hover-background) !important; +} + +#description-text.ytd-video-renderer { + color: var(--dimmer-text) !important; +} + +/*Comments*/ +yt-formatted-string.ytd-comments-header-renderer, +#contenteditable-root.yt-formatted-string[aria-label].yt-formatted-string:empty::before, +#contenteditable-textarea.ytd-commentbox { + color: var(--dimmer-text) !important; +} + +/*sort by*/ +#icon-label.yt-dropdown-menu, +#label-icon.yt-dropdown-menu { + color: var(--main-text) !important; + fill: var(--main-text) !important; +} + +yt-sort-filter-sub-menu-renderer.ytd-comments-header-renderer:hover #icon-label.yt-dropdown-menu, +yt-sort-filter-sub-menu-renderer.ytd-comments-header-renderer:hover #label-icon.yt-dropdown-menu { + color: var(--main-color) !important; + fill: var(--main-color) !important; +} + +/*sort by dropdown*/ +paper-listbox.yt-dropdown-menu { + background: var(--second-background) !important; +} + +.item.yt-dropdown-menu { + color: var(--main-text) !important; +} + +paper-listbox.yt-dropdown-menu paper-item.yt-dropdown-menu:hover, +paper-listbox.yt-dropdown-menu paper-item.yt-dropdown-menu:hover .item.yt-dropdown-menu { + background: var(--hover-background) !important; + color: var(--main-color) !important; +} + +paper-listbox.yt-dropdown-menu .yt-dropdown-menu.iron-selected { + background-color: var(--second-background) !important; +} + +paper-listbox.yt-dropdown-menu .yt-dropdown-menu.iron-selected .item.yt-dropdown-menu { + color: var(--main-color) !important; +} + +/*text box*/ +#simplebox-placeholder.ytd-comment-simplebox-renderer { + color: var(--dimmer-text) !important; +} + +#placeholder-area.ytd-comment-simplebox-renderer { + border-color: var(--hover-background) !important; +} + +#input-container.ytd-commentbox, +ytd-commentbox { + --paper-input-container-underline-color: var(--hover-background) !important; + --paper-input-container-underline-focus-color: var(--main-color) !important; +} + +.focused-line.tp-yt-paper-input-container { + border-color: var(--main-color) !important; +} + +.unfocused-line.tp-yt-paper-input-container { + border-color: var(--dimmer-text) !important; +} + +/*emoji selector*/ +#emojis.ytd-commentbox { + background-color: var(--second-background) !important; +} + +/*comments themselves*/ +#author-text.yt-simple-endpoint.ytd-comment-renderer { + color: var(--main-text) !important; +} + +#author-text.yt-simple-endpoint.ytd-comment-renderer:hover { + color: var(--main-color) !important; +} + +ytd-author-comment-badge-renderer { + background-color: var(--hover-background) !important; +} + +#content-text.ytd-comment-renderer, +ytd-expander[should-use-number-of-lines][collapsed]>#content.ytd-expander { + color: var(--dimmer-text) !important; +} + +/*read more*/ +.more-button-exp.ytd-comment-renderer, +.less-button-exp.ytd-comment-renderer { + color: var(--main-text) !important; +} + +.more-button-exp.ytd-comment-renderer:hover, +.less-button-exp.ytd-comment-renderer:hover { + color: var(--main-color) !important; +} + +/*view replies*/ +paper-button.ytd-comment-replies-renderer, +yt-next-continuation.ytd-comment-replies-renderer, +yt-icon.ytd-comment-replies-renderer { + color: var(--main-text) !important; +} + +.more-button.style-scope.ytd-comment-replies-renderer:hover paper-button.ytd-comment-replies-renderer, +.more-button.style-scope.ytd-comment-replies-renderer:hover yt-next-continuation.ytd-comment-replies-renderer, +.more-button.style-scope.ytd-comment-replies-renderer:hover yt-icon.ytd-comment-replies-renderer { + color: var(--main-color) !important; +} + +/*likes*/ +#vote-count-middle.ytd-comment-action-buttons-renderer { + color: var(--dimmer-text) !important; +} + +ytd-button-renderer yt-formatted-string.ytd-button-renderer:hover { + color: var(--main-color) !important; +} + +.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--text:hover { + /*background-color: var(--hover-background) !important;*/ + background-color: var(--yt-spec-10-percent-layer) !important; +} + +/*Show more videos*/ +yt-next-continuation.ytd-watch-next-secondary-results-renderer { + --paper-button_-_background-color: transparent !important; + --paper-button_-_color: var(--dimmer-text) !important; +} + +.style-scope.yt-next-continuation { + border-color: transparent !important; +} + +.style-scope.yt-next-continuation:hover { + background-color: transparent !important; + color: var(--main-color) !important; +} + +yt-formatted-string.ytd-expanded-shelf-contents-renderer { + color: var(--dimmer-text) !important; +} + +yt-formatted-string.ytd-expanded-shelf-contents-renderer:hover { + color: var(--main-color) !important; +} + +/*View more comments*/ +paper-button.yt-next-continuation { + color: var(--dimmer-text) !important; +} + +/*Links in description and published date for comments*/ +#content.ytd-expander a, +.yt-core-attributed-string--link-inherit-color .yt-core-attributed-string__link--call-to-action-color { + color: var(--main-color) !important; + opacity: 0.9; +} + +#published-time-text.ytd-comment-renderer, +#published-time-text.ytd-comment-renderer a { + --yt-endpoint-color: var(--dimmer-text) !important; + color: var(--dimmer-text) !important; + opacity: .8; +} + +#content.ytd-expander a:hover, +#published-time-text.ytd-comment-renderer a:hover, +#content.ytd-expander #name.ytd-author-comment-badge-renderer:hover, +.yt-core-attributed-string--link-inherit-color .yt-core-attributed-string__link--call-to-action-color:hover { + color: var(--main-color) !important; + opacity: 1 !important; +} + +#content.ytd-expander #name.ytd-author-comment-badge-renderer { + color: var(--main-text) !important; +} + +/*video description text*/ +.yt-core-attributed-string--link-inherit-color { + color: var(--dimmer-text) !important; +} + +/*Heart icon in comments*/ +#hearted-border.ytd-creator-heart-renderer, +#hearted.ytd-creator-heart-renderer { + color: var(--main-color) !important; + fill: var(--main-color) !important; +} + +yt-icon-button#creator-heart-button svg { + fill: var(--main-color) !important; +} + +/*Pinned by*/ +#label.ytd-pinned-comment-badge-renderer { + color: var(--main-color) !important; + opacity: 0.5; +} + +yt-icon.ytd-pinned-comment-badge-renderer { + fill: var(--main-color) !important; + opacity: 0.5; +} + +/*shorts comments background*/ +.watch-while-engagement-panel.ytd-reel-video-renderer, +/*comment window background*/ +ytd-item-section-renderer[static-comments-header] #header.ytd-item-section-renderer + +/*add comment background*/ + { + background-color: var(--second-background) !important; +} + +/*Fundraiser message*/ +#wrapper.ytd-donation-unavailable-renderer { + background-color: var(--hover-background) !important; +} + +/*Chat*/ +/*header*/ +yt-live-chat-header-renderer, +#header.yt-live-chat-participant-list-renderer, +yt-live-chat-message-renderer, +yt-live-chat-ticker-renderer { + background: var(--hover-background) !important; +} + +yt-live-chat-banner-manager[has-active-banner] { + background: linear-gradient(var(--hover-background) 0%, var(--second-background) 100%) !important; +} + +/*live replay*/ +#card.yt-live-chat-viewer-engagement-message-renderer, +yt-live-chat-text-message-renderer[is-highlighted] { + background: var(--hover-background) !important; +} + +#chat, +#participants, +yt-live-chat-renderer { + background: var(--second-background) !important; +} + +/*show mode was enabled*/ +#container.yt-live-chat-restricted-participation-renderer { + background: var(--second-background) !important; +} + +#contents.yt-live-chat-mode-change-message-renderer { + background: var(--hover-background) !important; +} + +#contents.yt-live-chat-mode-change-message-renderer, +#subtext.yt-live-chat-mode-change-message-renderer { + color: var(--dimmer-text) !important; +} + +yt-live-chat-toast-renderer[is-showing-message] + +/*info for show mode*/ + { + background: var(--hover-background) !important; +} + +/*dropmenu*/ +#menu.yt-live-chat-text-message-renderer { + background: transparent !important; +} + +paper-listbox { + background: var(--second-background) !important; +} + +yt-icon.ytd-menu-navigation-item-renderer, +yt-icon.ytd-menu-service-item-renderer, +#header.yt-live-chat-participant-list-renderer, +#author-name.yt-live-chat-author-chip:not(.member):not(.moderator), +.style-scope.yt-live-chat-ninja-message-renderer { + color: var(--main-text) !important; +} + +#deleted-state, +#show-original, +yt-live-chat-text-message-renderer[is-deleted] #message.yt-live-chat-text-message-renderer, +#timestamp { + color: var(--dimmer-text) !important; +} + +/*paid messages*/ +#content.yt-live-chat-paid-message-renderer #message { + color: black !important; +} + +#message.yt-live-chat-text-message-renderer a.yt-live-chat-text-message-renderer { + color: var(--main-color) !important; + text-decoration: none !important; +} + +yt-live-chat-author-chip[is-highlighted] #author-name { + background: var(--main-color) !important; +} + +/*paid arrows*/ +yt-icon.yt-live-chat-ticker-renderer { + background: var(--main-background) !important; + color: var(--main-text) !important; +} + +yt-icon.yt-live-chat-ticker-renderer:hover { + color: var(--main-color) !important; +} + +#right-arrow-container.yt-live-chat-ticker-renderer, +#left-arrow-container.yt-live-chat-ticker-renderer { + background: transparent !important; +} + +/*channel messages*/ +yt-live-chat-text-message-renderer[author-is-owner] { + background: var(--hover-background) !important; + color: var(--main-text) !important; +} + +/*pinned*/ +yt-live-chat-banner-manager[has-visible-banner] { + background: var(--second-background) !important; +} + +#contents.yt-live-chat-banner-renderer>.yt-live-chat-banner-renderer { + background: transparent !important; +} + +/*Confirmantion popup*/ +paper-toast { + background-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +/*button*/ +yt-icon-button.yt-live-chat-item-list-renderer, +yt-live-chat-ninja-message-renderer.yt-live-chat-renderer paper-button.yt-button-renderer, +yt-live-chat-message-renderer.yt-live-chat-message-input-renderer yt-button-renderer.style-dark[is-paper-button] { + background: var(--main-background) !important; + color: var(--main-text) !important; +} + +/*input*/ +yt-live-chat-message-input-renderer { + background-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +#focused.yt-live-chat-text-input-field-renderer { + background: var(--main-color) !important; +} + +#count { + color: var(--dimmer-text) !important; +} + +/*hide chat*/ +#show-hide-button.ytd-live-chat-frame>ytd-toggle-button-renderer.ytd-live-chat-frame { + background: var(--hover-background) !important; +} + +/*emoji*/ +yt-formatted-string.yt-emoji-picker-category-renderer { + background: var(--hover-background) !important; +} + +#search-panel.yt-emoji-picker-renderer { + background: var(--main-background) !important; + color: var(--main-text) !important; +} + +#search-empty { + color: var(--dimmer-text) !important; +} + +/*donations superchats cards*/ +#card.yt-live-chat-donation-announcement-renderer { + background-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +#menu.yt-live-chat-donation-announcement-renderer { + background: transparent !important; +} + +/*for actually donating*/ +#subtext.yt-live-chat-product-button-renderer { + color: var(--dimmer-text) !important; +} + +#container.yt-live-chat-product-button-renderer .yt-icon { + fill: var(--dimmer-text) !important; +} + +/*Fund raiser*/ +#header-section.ytd-donation-shelf-renderer, +#collapse-controls-section.ytd-donation-shelf-renderer { + background-color: var(--hover-background) !important; +} + +#header-text.ytd-donation-shelf-renderer, +#collapse-controls-section.ytd-donation-shelf-renderer { + color: var(--main-text) !important; +} + +#collapse-controls-section.ytd-donation-shelf-renderer:hover { + color: var(--main-color) !important; +} + +#header-section.ytd-donation-shelf-renderer .style-scope.ytd-donation-shelf-renderer.no-transition { + filter: invert(.8); +} + +#donate-section.ytd-donation-shelf-renderer, +#creator-messages-section.ytd-donation-shelf-renderer, +#nonprofit-section.ytd-donation-shelf-renderer, +#nonprofit-title.ytd-donation-shelf-renderer { + background-color: var(--second-background) !important; + border-color: var(--hover-background) !important; +} + +#campaign-title.ytd-donation-shelf-renderer, +.creator-message.ytd-donation-shelf-renderer, +#campaign-subtitle.ytd-donation-shelf-renderer, +.creator-message-name.ytd-donation-shelf-renderer, +#nonprofit-title.ytd-donation-shelf-renderer { + color: var(--main-text) !important; +} + +.creator-message.ytd-donation-shelf-renderer, +#campaign-subtitle.ytd-donation-shelf-renderer, +#nonprofit-subtitle.ytd-donation-shelf-renderer, +#nonprofit-description.ytd-donation-shelf-renderer { + color: var(--dimmer-text) !important; +} + +#amount-raised.ytd-donation-shelf-renderer, +#nonprofit-title.ytd-donation-shelf-renderer yt-icon.ytd-donation-shelf-renderer { + color: var(--main-color) !important; +} + +#nonprofit-link.ytd-donation-shelf-renderer .inline-icon.ytd-donation-shelf-renderer { + fill: var(--main-color) !important; +} + +/*progress*/ +#progress-bar-start.ytd-donation-shelf-renderer, +#progress-bar-end.ytd-donation-shelf-renderer { + color: var(--main-text) !important; +} + +#matching-label.ytd-donation-shelf-renderer { + color: var(--dimmer-text) !important; +} + +#progress-bar.ytd-donation-shelf-renderer { + background-color: var(--dimmer-text) !important; +} + +#progress-bar-fill.ytd-donation-shelf-renderer { + background-color: var(--main-color) !important; +} + +/*donate button*/ +.style-scope.ytd-donation-shelf-renderer .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { + background-color: var(--main-color) !important; + color: var(--main-text) !important; +} + +/*donate window*/ +#top-box.ytd-donation-amount-picker-renderer { + background-color: var(--second-background) !important; +} + +#campaign-title.ytd-donation-amount-picker-renderer, +#nonprofit-title.ytd-donation-amount-picker-renderer { + color: var(--main-color) !important; +} + +#campaign-subtitle.ytd-donation-amount-picker-renderer, +#nonprofit-subtitle.ytd-donation-amount-picker-renderer { + color: var(--main-text) !important; +} + +/*amount buttons*/ +#suggested-amount-buttons-row.ytd-donation-amount-picker-renderer ytd-button-renderer.ytd-donation-amount-picker-renderer[is-paper-button] paper-button.ytd-button-renderer { + background-color: var(--second-background) !important; +} + +#suggested-amount-buttons-row.ytd-donation-amount-picker-renderer ytd-button-renderer.ytd-donation-amount-picker-renderer[is-paper-button] paper-button.ytd-button-renderer { + background-color: var(--second-background) !important; + border-color: var(--second-background) !important; +} + +#suggested-amount-buttons-row.ytd-donation-amount-picker-renderer ytd-button-renderer.ytd-donation-amount-picker-renderer[is-paper-button][selected] paper-button.ytd-button-renderer, +.ytd-donation-amount-picker-renderer ytd-button-renderer.style-primary[is-paper-button] { + background-color: var(--main-color) !important; +} + +/*curency for other amount*/ +span.prefix.style-scope.paper-input-container>div.ytd-donation-amount-picker-renderer { + color: var(--main-text) !important; +} + +/*Payment window*/ +.popup-mode .b3-page-header { + background-color: var(--main-background) !important; +} + +.b3-line-items-mundane-items-container, +.b3-line-items-mundane-items-container { + background-color: var(--hover-background) !important; +} + +.b3-separator { + display: none !important; +} + +.b3-line-item-value { + color: var(--main-color) !important; +} + +.b3-line-item-name, +.b3-line-item-infomessage, +.b3-line-item-subvalue { + color: var(--main-text) !important; +} + +.b3-single-option-form-selector-option-content .b3-existing-instrument-option-label-without-image, +.b3-dropdown-form-selector .b3-existing-instrument-option-label-without-image, +.b3-single-option-form-selector-option-content .b3-additional-instrument-option-label, +.b3-dropdown-form-selector .b3-additional-instrument-option-label, +.b3-input.focused .b3-input-label, +.b3-input.focused .b3-input-label-text, +.b3-input input[type="tel"], +.b3-input input[type="text"], +.b3-input input[type="password"], +.b3-input input[type="email"], +.b3-input.populated .b3-input-label, +.b3-input.invalid .b3-input-label, +.b3-input.autofilled .b3-input-label, +.b3-input-field>.b3-input-label, +.b3-input-field>.b3-input-label.accessible, +.b3-collapsing-form-placeholder-text { + color: var(--main-text) !important; +} + +.countryselector .goog-flat-menu-button-caption, +.countryselector .goog-flat-menu-button-caption .goog-menuitem-content { + color: var(--dimmer-text) !important; +} + +/*icons*/ +.b3-single-option-form-selector-icon, +.b3-collapsing-form-icon { + fill: var(--main-text) !important; +} + +.b3-collapsing-form.focused .b3-collapsing-form-icon { + fill: var(--main-color) !important; +} + +.b3-tooltip-icon { + filter: invert(1) !important; +} + +/*border*/ +.b3-input-status-indicator { + background-color: var(--main-color) !important; +} + +.b3-input-accent { + border-color: var(--hover-background) !important; +} + +/*tooltip*/ +.b3-inline-tooltip-popup-wrapper, +.help-Helpwidgets-TooltipWidget-content-html { + background-color: var(--hover-background) !important; + color: var(--dimmer-text) !important; +} + +.b3-inline-tooltip-popup-wrapper a, +.help-Helpwidgets-TooltipWidget-content-html a { + color: var(--main-color) !important; +} + +/*country choice*/ +.goog-menu, +.goog-menuitem:hover { + background-color: var(--hover-background) !important; +} + +.goog-menuitem, +.goog-tristatemenuitem, +.goog-filterobsmenuitem { + color: var(--main-text) !important; +} + +.goog-menuitem-highlight .goog-menuitem-content { + color: var(--main-color) !important; +} + +.goog-menuitem .countryselector-flag { + border-radius: 4px !important; + /*hiding ugly white corners*/ +} + +/*footer*/ +.b3-legal-message-content, +.b3-info-message-list.b3-buyflow-extra-messages .b3-info-message-component.b3-info-message-unknown, +.b3-info-message-component.b3-info-message-unknown.b3-buyflow-extra-messages .b3-info-message-html { + color: var(--dimmer-text) !important; +} + +.b3-legal-message-content a, +.b3-info-message-component.b3-info-message-unknown.b3-buyflow-extra-messages .b3-info-message-html a { + color: var(--main-color) !important; +} + +/*Notification*/ +/*bell icon notification count*/ +.yt-spec-icon-badge-shape--type-notification .yt-spec-icon-badge-shape__badge { + background-color: var(--main-color) !important; + border: none !important; +} + +button.yt-icon-button:hover .yt-spec-icon-badge-shape--type-notification .yt-spec-icon-badge-shape__badge { + color: var(--main-text) !important; +} + +/*load spinner - also for comments*/ +.spinner-layer.layer-1.tp-yt-paper-spinner, +.spinner-layer.layer-2.tp-yt-paper-spinner, +.spinner-layer.layer-3.tp-yt-paper-spinner, +.spinner-layer.layer-4.tp-yt-paper-spinner { + color: var(--dimmer-text) !important; +} + +#notification-count.ytd-notification-topbar-button-renderer, +ytd-notification-renderer.unread #new.ytd-notification-renderer, +.yt-lockup-notification .unread-dot + +/*account settings*/ + { + background: var(--main-color) !important; + border-color: var(--main-color) !important; +} + +.text.ytd-notification-renderer, +.message.ytd-notification-renderer #yt-masthead-notifications-title, +.yt-lockup-notification .yt-lockup-title a +/*account settings*/ +h2.yt-multi-page-menu-section-renderer + +/*comments and notifications headers*/ + { + color: var(--main-text) !important; +} + +/*gear icon*/ +ytd-simple-menu-header-renderer .yt-spec-button-shape-next__icon { + color: var(--main-text) !important; +} + +ytd-simple-menu-header-renderer .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--text:hover .yt-spec-button-shape-next__icon { + color: var(--main-color) !important; +} + +.metadata.ytd-notification-renderer, +.exp-responsive .yt-lockup-tile .yt-lockup-byline + +/*account settings*/ + { + color: var(--dimmer-text) !important; +} + +ytd-notification-renderer:hover .message.ytd-notification-renderer { + color: var(--main-color) !important; +} + +ytd-watch:not([flexy-fit-to-video_]) #chat.ytd-watch, +ytd-watch:not([flexy-fit-to-video_]) #transcript.ytd-watch { + padding-left: 0 !important; +} + +ytd-simple-menu-header-renderer { + background-color: var(--hover-background) !important; +} + +h2.ytd-simple-menu-header-renderer { + color: var(--main-text) !important; +} + +#sections.ytd-multi-page-menu-renderer>ytd-background-promo-renderer.ytd-multi-page-menu-renderer, +ytd-multi-page-menu-renderer, +#yt-masthead-notifications-content .item-section>li>.yt-lockup-tile, +#yt-masthead-notifications-content .yt-ui-ellipsis, +/*account settings*/ +#yt-masthead-notifications-content + +/*bottom thing - account settings*/ + { + background: var(--second-background) !important; + border-color: var(--second-background) !important; +} + +.browse-items-load-more-button { + background-color: var(--main-background) !important; + border-color: var(--main-background) !important; + color: var(--main-text) !important; +} + +.browse-items-load-more-button:hover { + color: var(--main-color) !important; +} + +.promo-message.ytd-background-promo-renderer, +#message:not([class*="yt-music"]) { + color: var(--dimmer-text) !important; +} + +/*triangle*/ +.yt-uix-clickcard-card-reverse .yt-uix-card-body-arrow-vertical, +.yt-uix-hovercard-card-reverse .yt-uix-card-body-arrow-vertical + +/*account settings*/ + { + border-bottom-color: var(--hover-background) !important; +} + +/*menu*/ +.yt-ui-menu-content + +/*account settings*/ + { + background-color: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +.yt-ui-menu-item + +/*account settings*/ + { + background-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +.yt-ui-menu-item:hover + +/*account settings*/ + { + color: var(--main-color) !important; +} + +/*gear icon*/ +.yt-uix-button-icon-icon-account-settings + +/*account settings*/ + { + filter: brightness(250%) invert(1); +} + +/*Cards*/ +.iv-card-content, +.ytp-ce-expanding-overlay-background, +.ytp-cards-teaser .ytp-cards-teaser-text, +.ytp-cards-teaser .ytp-cards-teaser-box { + background-color: var(--main-background) !important; +} + +.ytp-cards-teaser .ytp-cards-teaser-box, +.iv-card-image { + border: 0px !important; +} + +.iv-card-content> :first-child, +.html5-video-player a, +.iv-card h2, +.ytp-cards-teaser .ytp-cards-teaser-text { + color: var(--main-text) !important; +} + +.iv-card:hover .iv-card-primary-link, +.ytp-ce-website-title { + color: var(--main-color) !important; +} + +.ytp-ce-element:hover { + border-color: var(--main-color) !important; +} + +.ytp-ce-channel-title.ytp-ce-link { + color: var(--main-color) !important; + opacity: 0.9 !important; +} + +.ytp-ce-channel-title.ytp-ce-link:hover, +.ytp-cards-teaser .ytp-cards-teaser-text:hover { + color: var(--main-color) !important; + opacity: 1 !important; +} + +.ytp-ce-channel-metadata.yt-ui-ellipsis.yt-ui-ellipsis-3 { + background: transparent; + color: var(--dimmer-text) !important; +} + +/*Cards border color*/ +.iv-card-message { + border-bottom: 1px solid var(--main-color) !important; +} + +.ytp-ce-channel-this .ytp-ce-channel-metadata { + border-color: var(--hover-background) !important; +} + +/*Poll*/ +.iv-card-poll label, +.iv-card-poll.iv-card-poll-voted label.iv-card-poll-choice-checked, +.iv-card-poll.iv-card-poll-voted label { + color: var(--main-text) !important; +} + +#vote-info.ytd-backstage-poll-renderer { + color: var(--dimmer-text) !important; +} + +.iv-card-poll .iv-card-poll-result .iv-card-poll-result-bar { + background-color: var(--main-color) !important; +} + +ytd-backstage-post-thread-renderer { + border-color: var(--hover-background) !important; +} + +ytd-backstage-poll-renderer[show-poll-choice-border] .choice-info.ytd-backstage-poll-renderer { + border-color: transparent !important; +} + +/*Account menu header*/ +ytd-active-account-header-renderer { + background: var(--second-background) !important; +} + +ytd-active-account-header-renderer:hover { + background-color: var(--hover-background) !important; +} + +#account-name.ytd-active-account-header-renderer, +#channel-title.ytd-account-item-renderer { + color: var(--main-text) !important; +} + +#email.ytd-active-account-header-renderer { + color: var(--dimmer-text) !important; +} + +/*subentries*/ +#label.ytd-toggle-theme-compact-link-renderer, +tp-yt-paper-item.ytd-compact-link-renderer { + color: var(--dimmer-text) !important; +} + +ytd-toggle-theme-compact-link-renderer:hover #label.ytd-toggle-theme-compact-link-renderer, +ytd-toggle-theme-compact-link-renderer:hover yt-icon, +paper-item.ytd-compact-link-renderer:hover #subtitle, +paper-item.ytd-compact-link-renderer:hover .deemphasize.yt-formatted-string, +tp-yt-paper-item.ytd-compact-link-renderer:hover *, +tp-yt-paper-item.ytd-compact-link-renderer:hover #subtitle.ytd-compact-link-renderer { + color: var(--main-color) !important; +} + +#footer.ytd-multi-page-menu-renderer>.ytd-multi-page-menu-renderer { + border-color: var(--hover-background) !important; +} + +.description.ytd-toggle-item-renderer, +#caption.ytd-toggle-item-renderer { + color: var(--dimmer-text) !important; +} + +/*language*/ +#language.ytd-account-settings, +#country.ytd-account-settings, +#restricted.ytd-account-settings, +.container.ytd-account-settings { + background-color: var(--second-background) !important; +} + +paper-item.ytd-account-settings { + color: var(--dimmer-text) !important; +} + +paper-item.ytd-account-settings:hover { + color: var(--main-color) !important; +} + +/*swich account*/ +yt-formatted-string.ytd-account-item-renderer[secondary] { + color: var(--dimmer-text) !important; +} + +#selected.ytd-account-item-renderer { + color: var(--main-color) !important; +} + +/*theme*/ +ytd-compact-link-renderer[compact-link-style="compact-link-style-type-disclaimer"] #label.ytd-compact-link-renderer { + color: var(--dimmer-text) !important; +} + +/*Live background color*/ +ytd-thumbnail-overlay-time-status-renderer[overlay-style="LIVE"] { + background-color: var(--main-color) !important; +} + +.guide-entry-badge.ytd-guide-entry-renderer { + color: var(--main-color) !important; + fill: var(--main-color) !important; +} + +.ytp-live-badge[disabled]:before { + background: var(--main-color) !important; +} + +/*Recolored sidepane icons, menu icons and filter button*/ +.guide-icon.ytd-guide-entry-renderer, +paper-button.ytd-toggle-button-renderer, +yt-icon.ytd-compact-link-renderer, +yt-icon.ytd-toggle-theme-compact-link-renderer { + color: var(--dimmer-text) !important; +} + +/*Sidepane titles*/ +#guide-section-title a { + color: var(--dimmer-text) !important; +} + +#guide-section-title a:hover { + color: var(--main-color) !important; +} + + +/*Autoplay text*/ +#upnext.ytd-compact-autoplay-renderer, +#autoplay.ytd-compact-autoplay-renderer { + color: var(--dimmer-text) !important; + opacity: .8; +} + +ytd-compact-autoplay-renderer { + border-color: var(--hover-background) !important; +} + +/*Video was removed by user - not interested*/ +#text.ytd-notification-multi-action-renderer { + color: var(--dimmer-text) !important; +} + +/*Video was added/removed to/from a playlist by user*/ +yt-notification-action-renderer[ui-refresh] #text.yt-notification-action-renderer, +yt-notification-action-renderer[ui-refresh] #sub-text.yt-notification-action-renderer { + color: var(--dimmer-text) !important; +} + +/*Links in video description*/ +.description.ytd-video-secondary-info-renderer a { + color: var(--main-color) !important; + opacity: .9; +} + +/*Game cards*/ +ytd-rich-metadata-renderer { + background-color: var(--second-background) !important; +} + +#call-to-action.ytd-rich-metadata-renderer { + color: var(--main-text) !important; +} + +#title.ytd-rich-metadata-renderer, +#call-to-action.ytd-rich-metadata-renderer:hover { + color: var(--main-color) !important; +} + +/*Movie cards*/ +#header.ytd-movie-offer-module-renderer { + background-color: var(--second-background) !important; +} + +ytd-button-renderer.ytd-movie-offer-module-renderer.style-primary[is-paper-button] { + background-color: var(--main-color) !important; +} + +#wide-clickable-area.ytd-movie-offer-module-renderer { + background-color: var(--hover-background) !important; +} + +#info.ytd-movie-offer-module-renderer { + color: var(--main-text) !important; +} + +h3.ytd-compact-movie-renderer { + color: var(--main-text) !important; +} + +/*Tour/ticket cards*/ +ytd-ticket-shelf-renderer { + background-color: var(--second-background) !important; +} + +#primary-event.ytd-ticket-shelf-renderer #meta.ytd-ticket-shelf-renderer #tickets-button.ytd-ticket-shelf-renderer { + background: var(--main-color) !important; + color: var(--main-text) !important; +} + +#primary-event.ytd-ticket-shelf-renderer #meta-info.ytd-ticket-shelf-renderer #nearest.ytd-ticket-shelf-renderer, +#primary-event.ytd-ticket-shelf-renderer #meta-info.ytd-ticket-shelf-renderer #subtitle1.ytd-ticket-shelf-renderer, +#primary-event.ytd-ticket-shelf-renderer #meta-info.ytd-ticket-shelf-renderer #subtitle2.ytd-ticket-shelf-renderer, +.where-column-td.ytd-ticket-shelf-renderer .where-column.ytd-ticket-shelf-renderer { + color: var(--main-text) !important; +} + +.when-date-column.ytd-ticket-shelf-renderer, +.link.ytd-ticket-shelf-renderer, +.when-weekday-column.ytd-ticket-shelf-renderer { + color: var(--main-color) !important; +} + +/*separator*/ +#seperator.ytd-ticket-shelf-renderer, +ytd-ticket-shelf-renderer { + border-color: var(--hover-background) !important; +} + + +/*Author name*/ +#owner-name.ytd-video-owner-renderer { + opacity: .9; +} + +#owner-name.ytd-video-owner-renderer:hover { + opacity: 1 !important; +} + +/*Set a memento*/ +ytd-toggle-button-renderer.style-compact-gray[is-paper-button] { + background-color: var(--second-background) !important; + color: var(--dimmer-text) !important; +} + +/*Series name*/ +.super-title.ytd-video-primary-info-renderer a, +#additional-metadata-line.ytd-video-meta-block { + color: var(--dimmer-text) !important; + opacity: .8; +} + +#selectionBar.paper-tabs { + border-color: var(--main-color) !important; +} + +/*"Best" of YouTube icons in sidepane*/ +/*.style-scope.ytd-guide-entry-renderer.no-transition + { + filter: grayscale(100%); + }*/ + +/* Promo page */ +body.yt-new-promo-page-use-launched-copy .yt-new-promo-page-header { + background: var(--main-background) !important; +} + +.yt-new-promo-page-section-text, +.yt-new-promo-page-header { + color: var(--dimmer-text); +} + +.yt-new-promo-page-button { + background-color: var(--main-color) !important; + color: var(--main-text) !important; + opacity: .9; +} + +.yt-new-promo-page-button:hover { + opacity: 1; +} + +/* Crude logo fix */ +.yt-new-promo-page-logo { + filter: grayscale(100%) invert(100%); +} + +/* Fix for active like/dislike buttons */ +ytd-toggle-button-renderer.style-grey-text[is-icon-button] { + color: var(--yt-button-color); +} + +ytd-toggle-button-renderer #button.ytd-toggle-button-renderer { + color: inherit; +} + +/*like/dislike buttons in nested replies*/ +/*.style-scope.ytd-toggle-button-renderer svg + { + fill: var(--dimmer-text) !important; + } + .style-scope.ytd-toggle-button-renderer yt-icon-button.style-default-active svg + { + fill: var(--main-color) !important; + }*/ +ytd-toggle-button-renderer.ytd-comment-action-buttons-renderer #button.ytd-toggle-button-renderer { + color: var(--yt-button-color); +} + +ytd-toggle-button-renderer.ytd-comment-action-buttons-renderer .style-default-active { + color: var(--main-color) !important; +} + +/* Fix for placeholders/skeletons */ +/*ytd-masthead.shell + { + background-color: var(--main-background); + } + ytd-masthead.shell [class*='skeleton'], [id*='skeleton'] [class*='skeleton'], [id*='skeleton'], .shelf-videos, .skeleton-bg-color + { + background-color: var(--hover-background) !important; + border-color: var(--hover-background) !important; + }*/ +/*homepage skeleton*/ +#home-container-skeleton, +html[dark] #home-container-skeleton { + background-color: var(--main-background) !important; +} + +/*sidebar skeleton*/ +#guide-skeleton, +html[dark] #guide-skeleton { + background-color: var(--second-background) !important; +} + +/*homepage videos skeleton*/ +#home-page-skeleton .skeleton-bg-color, +html[dark] #home-page-skeleton .skeleton-bg-color { + background-color: var(--hover-background) !important; +} + +.masthead-skeleton-icon, +html[dark] .masthead-skeleton-icon, +/*ytd-masthead.shell [class*='skeleton'], html[dark] ytd-masthead.shell, + .shelf-videos, html[dark] .shelf-videos,*/ +.skeleton-bg-color, +html[dark] .skeleton-bg-color { + background-color: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +.skeleton-light-border-bottom, +html[dark] .skeleton-light-border-bottom { + border-bottom: 1px solid var(--hover-background) !important; +} + +ytd-alert-with-button-renderer[type="INFO"], +#content-wrapper.yt-alert-with-actions-renderer + +/*TOS*/ + { + background-color: var(--hover-background) !important; +} + +#content-wrapper.yt-alert-with-actions-renderer yt-button-renderer[is-paper-button] yt-icon.yt-button-renderer { + color: var(--main-color) !important; +} + +ytd-alert-with-button-renderer[type="INFO"] #text.ytd-alert-with-button-renderer { + color: var(--main-text) !important; +} + +#alert-message.ytd-consent-bump-renderer { + color: var(--dimmer-text) !important; +} + +/*Paid membership*/ +yt-subscription-product-header-renderer.ytd-item-section-renderer { + color: var(--main-text) !important; +} + +/*Reporting*/ +.introduction-header { + color: var(--main-text) !important; +} + +.introduction-body, +.introduction-bullet-items { + color: var(--dimmer-text) !important; +} + +yt-report-form-modal-renderer[dialog][dialog][dialog] { + background: var(--main-background) !important; +} + +yt-options-renderer[increased-tooltip-target] yt-icon.yt-options-renderer { + color: var(--main-text) !important; +} + +/*Help*/ +.ghp-header-searchBox, +.ghp-autocomplete-label { + color: var(--dimmer-text) !important; +} + +/* + .ghp-header-searchIcon.ghpv-loaded, .ghp-iconTextComponent-icon, .ghp-autocomplete-icon + { + filter: invert(100%) grayscale(100%) brightness(150%); + } + .ghp-autocompleteGlass + { + background: rgba(0,0,0,3) !important; + } + .ghp-card-title + { + color: var(--main-text) !important; + } + .ghp-card, .ghp-content, .ghp-iconTextComponent, .ghp-contentFrame, .hcfe + { + background-color: var(--second-background) !important; + border-color: var(--hover-background) !important; + } + .ghp-iconTextComponent:hover .ghp-iconTextComponent-label, + .ghp-iconTextComponent:hover .ghp-separator + { + color: var(--main-color) !important; + border-color: var(--hover-background) !important; + } + .ghp-separator + { + border-color: var(--hover-background) !important; + } + .ghp-iconTextComponent-label, .hcfe + { + color: var(--dimmer-text) !important; + } + */ + +/*Trending page*/ +ytd-destination-button-renderer { + background-color: var(--hover-background) !important; +} + +#destination-label.ytd-destination-button-renderer { + color: var(--main-text) !important; +} + +ytd-destination-button-renderer:hover #destination-label.ytd-destination-button-renderer { + color: var(--main-color) !important; +} + +/*more - shown on low width*/ +ytd-destination-shelf-renderer[is-show-more-visible] #show-more-button.ytd-destination-shelf-renderer, +#show-more-button.ytd-destination-shelf-renderer { + background: var(--hover-background) !important; +} + +#show-more-button-icon.ytd-destination-shelf-renderer { + color: var(--main-text) !important; +} + +ytd-destination-shelf-renderer[is-show-more-visible] #show-more-button.ytd-destination-shelf-renderer:hover #show-more-button-icon.ytd-destination-shelf-renderer { + color: var(--main-color) !important; +} + +/*Learning*/ +ytd-carousel-header-renderer { + background: var(--main-background) !important; +} + +/*Music*/ +.flex-container.ytd-compact-station-renderer { + background-color: var(--second-background) !important; +} + +h3.ytd-compact-station-renderer { + color: var(--main-text) !important; +} + +.flex-container.ytd-compact-station-renderer:hover h3.ytd-compact-station-renderer { + color: var(--main-color) !important; +} + +#video-count-text.ytd-compact-station-renderer { + color: var(--dimmer-text) !important; +} + +/*Gaming*/ +#live-viewers-count.ytd-game-details-renderer { + color: var(--dimmer-text) !important; +} + +/*History*/ +.page-header-view-model-wiz__page-header-title { + color: var(--main-text) !important; +} + +#channel-header.ytd-tabbed-page-header { + --yt-lightsource-section1-color: var(--main-background); +} + +#channel-header.ytd-tabbed-page-header h1 { + color: var(--main-text) !important; +} + +yt-formatted-string.ytd-sub-feed-option-renderer { + color: var(--dimmer-text) !important; +} + +#title.ytd-sub-feed-selector-renderer, +ytd-sub-feed-option-renderer.ytd-sub-feed-selector-renderer { + border-color: var(--hover-background) !important; +} + +ytd-two-column-browse-results-renderer #secondary.ytd-two-column-browse-results-renderer { + background-color: var(--second-background) !important; +} + +ytd-two-column-browse-results-renderer #primary ytd-text-header-renderer { + color: var(--main-text) !important; +} + +/*dialog confirm*/ +yt-confirm-dialog-renderer[dialog][dialog][dialog] { + background-color: var(--second-background) !important; +} + +#scroller.yt-confirm-dialog-renderer { + color: var(--dimmer-text) !important; +} + +#cancel-button.yt-confirm-dialog-renderer { + color: var(--main-text) !important; +} + +.buttons.yt-confirm-dialog-renderer { + border-color: var(--hover-background) !important; +} + +/*Premium*/ +/*video*/ +#main-title.ytd-unlimited-offer-module-renderer { + color: var(--main-text) !important; +} + +#sub-title.ytd-unlimited-offer-module-renderer { + color: var(--dimmer-text) !important; +} + +/*popup*/ +.ytd-mealbar-promo-renderer-message-title.ytd-mealbar-promo-renderer { + color: var(--main-text) !important; +} + +.ytd-mealbar-promo-renderer-message-text.ytd-mealbar-promo-renderer { + color: var(--dimmer-text) !important; +} + +.button-container.ytd-mealbar-promo-renderer { + border-color: var(--hover-background) !important; +} + +ytd-grid-video-renderer[is-dismissed] #dismissed { + border-color: var(--hover-background) !important; +} + +ytd-grid-video-renderer[is-dismissed] #dismissed .ytd-notification-multi-action-renderer { + color: var(--dimmer-text) !important; +} + +ytd-dismissal-follow-up-renderer[dialog][dialog][dialog] { + background: var(--main-background) !important; +} + +#content.ytd-dismissal-follow-up-renderer #checkboxLabel.paper-checkbox, +#content.ytd-dismissal-follow-up-renderer #label.ytd-dismissal-reason-video-renderer { + color: var(--dimmer-text) !important; +} + +#buttons.ytd-dismissal-follow-up-renderer { + border-top-color: var(--hover-background) !important; +} + +/*New TOS*/ +yt-alert-with-actions-renderer { + background-color: var(--hover-background) !important; +} + +#text.yt-alert-with-actions-renderer, +#alert-message.yt-alert-with-actions-renderer { + color: var(--main-text) !important; +} + +yt-button-renderer yt-formatted-string.yt-button-renderer, +#icon.yt-alert-with-actions-renderer { + color: var(--main-color) !important; +} + +/*actual page for TOS*/ +#yts-article #article-container.ytg-box #summary { + background-color: var(--hover-background) !important; +} + +.separator, +.with-divider, +.header, +#yts-article #header, +#yts-nav { + border-color: var(--hover-background) !important; +} + +#yts-nav .indented .sub-level a, +#yts-nav .top-level a, +#yts-article #header { + color: var(--main-text) !important; +} + +/*Premium page (https://www.youtube.com/premium)*/ +yt-button-renderer#manage-subscription-button yt-formatted-string.yt-button-renderer { + color: inherit !important; +} + +.yt-unlimited-page-header-renderer a.yt-simple-endpoint.yt-formatted-string { + color: var(--main-color) !important; +} + +#header.yt-music-pass-small-feature-info-renderer, +.question.yt-generic-faq-question-renderer, +.answer-arrow.yt-generic-faq-question-renderer { + color: var(--main-text) !important; +} + +#description.yt-music-pass-small-feature-info-renderer, +.container.yt-faq-section-renderer, +.answer.yt-generic-faq-question-renderer, +.text.ytd-simple-text-section-renderer { + color: var(--dimmer-text) !important; +} + +yt-generic-faq-question-renderer .yt-simple-endpoint.style-scope.yt-formatted-string, +yt-generic-faq-question-renderer a.yt-simple-endpoint.yt-formatted-string:only-of-type, +.text.ytd-simple-text-section-renderer a.yt-simple-endpoint.yt-formatted-string:only-of-type { + color: var(--main-color) !important; +} + +/*Paid memberships*/ +paper-card.yt-subscription-product-upsell-offer-renderer { + background-color: var(--second-background) !important; +} + +#title.yt-subscription-product-upsell-offer-renderer, +#description.yt-subscription-product-upsell-offer-renderer, +#additional-info.yt-subscription-product-upsell-offer-renderer { + color: var(--dimmer-text) !important; +} + +/*Gaming page (https://www.youtube.com/gaming) and gaming channels*/ +#channel-details.ytd-carousel-header-renderer, +#channel-header-container.ytd-topic-channel-details-renderer { + background-color: var(--main-background) !important; +} + +#bg.ytd-interactive-tabbed-header-renderer { + fill: var(--main-background) !important; +} + +#tabs-inner-container.ytd-interactive-tabbed-header-renderer { + background-color: transparent !important; +} + +/*Acount page specific*/ +/*Sidebar*/ +#creator-page.account-page, +ytd-settings-sidebar-renderer { + background-color: var(--second-background) !important; +} + +.exp-kevlar-settings .account-page #creator-sidebar h3 { + color: var(--main-text) !important; +} + +.exp-kevlar-settings .account-page #creator-sidebar .creator-sidebar-item a { + color: var(--dimmer-text) !important; +} + +.exp-kevlar-settings .account-page #creator-sidebar .creator-sidebar-item.selected>a, +.exp-kevlar-settings .account-page #creator-sidebar .creator-sidebar-item.selected>a:hover, +.exp-kevlar-settings .account-page #creator-sidebar .creator-sidebar-item:hover a { + background-color: var(--hover-background) !important; + color: var(--main-color) !important; +} + +ytd-compact-link-renderer[compact-link-style="compact-link-style-type-settings-sidebar"][active], +ytd-compact-link-renderer[compact-link-style="compact-link-style-type-settings-sidebar"][active]:hover { + background-color: var(--hover-background) !important; +} + +/*Burger sidebar*/ +#appbar-guide-menu, +.guide-flyout { + background-color: var(--second-background) !important; +} + +#guide-container .guide-item { + color: var(--main-text) !important; +} + +#guide-container .guide-item:hover { + background-color: var(--hover-background) !important; + color: var(--main-color) !important; +} + +/*headers*/ +.exp-invert-logo li.guide-section h3, +.exp-invert-logo li.guide-section h3 a { + color: var(--main-color) !important; +} + +.guide-section-separator + +/*divider*/ + { + border-color: var(--hover-background) !important; +} + +/*Contents - account*/ +.account-page-header, +ytd-section-list-renderer[page-subtype="account-settings"] a.yt-simple-endpoint.yt-formatted-string { + color: var(--main-color) !important; +} + +#account-page-header-title, +h2.account-section-header { + color: var(--main-text) !important; +} + +/*title of the page*/ +#name.ytd-page-introduction-renderer, +#name.ytd-channel-options-renderer, +ytd-settings-options-renderer .yt-formatted-string:not(a).bold { + color: var(--main-text) !important; +} + +.exp-kevlar-settings #account-page-header-subtitle, +.account-info-item .account-info-label, +.account-section .account-email, +.account-content, +.account-section-subtext { + color: var(--dimmer-text) !important; +} + +/*other text*/ +#text.ytd-page-introduction-renderer, +/*email*/ +#text.ytd-settings-options-renderer, +/*descriptions, metadata, below text*/ +#label.ytd-settings-checkbox-renderer, +#label.ytd-settings-radio-option-renderer, +/*playback*/ +#text.ytd-connected-app-renderer + +/*connected accounts*/ + { + color: var(--dimmer-text) !important; +} + +.yt-horizontal-rule + +/*divider*/ + { + border-color: var(--hover-background) !important; +} + +.account-info .account-photo .yt-thumb + +/*avatar*/ + { + border-radius: 100%; +} + +.account-content a, +.account-header a + +/*various links*/ + { + color: var(--main-color) !important; +} + +.yt-thumb { + background-color: var(--hover-background) !important; +} + +/*Notifications*/ +.setting-reminder, +h3.account-section-header { + color: var(--main-text) !important; +} + +.yt-uix-form-input-checkbox-container input:checked+.yt-uix-form-input-checkbox-element { + border-color: #000; + filter: invert(1); +} + +.desktop-notifications .browser { + background-color: var(--hover-background) !important; + color: var(--main-color) !important; + border-color: var(--hover-background) !important; +} + +.desktop-notifications .browser .yt-uix-button.turn-on, +.desktop-notifications .browser .yt-uix-button.turn-off, +.resume-setting-button, +.undo-setting-button-section, +.resume-all-settings-button + +/*turn off*/ + { + background: var(--main-background) !important; + border-color: var(--main-background) !important; + color: var(--main-color) !important; +} + +.yt-uix-form-input-select + +/*dropdowns*/ + { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +/*checkboxes*/ +tp-yt-paper-toggle-button[checked]:not([disabled]) .toggle-bar.tp-yt-paper-toggle-button { + background-color: var(--main-color) !important; + opacity: 1 !important; +} + +tp-yt-paper-toggle-button[checked]:not([disabled]) .toggle-button.tp-yt-paper-toggle-button { + background-color: var(--main-text) !important; +} + +/*language*/ +ytd-dropdown-renderer[has-background] tp-yt-paper-dropdown-menu-light.ytd-dropdown-renderer { + background-color: var(--hover-background) !important; +} + +label.label-is-floating.tp-yt-paper-dropdown-menu-light, +#label.ytd-dropdown-item-renderer { + color: var(--main-text) !important; +} + +#input.tp-yt-paper-dropdown-menu-light { + color: var(--dimmer-text) !important; +} + +/*Playback*/ +.yt-help-icon { + filter: invert(1); +} + +.yt-uix-clickcard-card-content, +.yt-uix-hovercard-card-content { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +.yt-uix-clickcard-card-border, +.yt-uix-hovercard-card-border { + border-color: var(--hover-background) !important; +} + +.yt-uix-clickcard-card-flip .yt-uix-card-body-arrow-horizontal, +.yt-uix-hovercard-card-flip .yt-uix-card-body-arrow-horizontal { + border-right-color: var(--hover-background) !important; +} + +.exp-kevlar-settings .account-page .yt-uix-button + +/*save buttons*/ + { + background: var(--main-color) !important; + border-color: var(--main-color) !important; + color: var(--main-text) !important; + opacity: .9; +} + +.exp-kevlar-settings .account-page .yt-uix-button:hover { + opacity: 1 !important; +} + +/*Social*/ +.social-connector { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +/*TV*/ +.howto-circle { + background-color: var(--hover-background) !important; + color: var(--main-color) !important; +} + +.howto-text { + color: var(--dimmer-text) !important; +} + +.remote-icon { + filter: invert(1) brightness(200%); +} + +h3.pairing-section-header { + color: var(--main-text) +} + +.yt-uix-form-input-select, +.yt-uix-form-input-text, +.yt-uix-form-input-textarea { + border-color: var(--hover-background) !important; +} + +#account-page-header-avatar.howto-promo-image { + filter: invert(1) grayscale(1); +} + +/*TV code*/ +.yt-uix-form-input-select, +.yt-uix-form-input-text, +.yt-uix-form-input-textarea { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +/*Footer*/ +body #footer-container { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; + color: var(--main-text) !important; +} + +#footer-main + +/*divider*/ + { + border-color: var(--hover-background) !important; +} + +/*links*/ +#footer-links-primary a { + color: var(--main-text) !important; +} + +#footer-links-secondary a { + color: var(--dimmer-text) !important; +} + +#footer-links-primary a:hover, +#footer-links-secondary a:hover { + color: var(--main-color) !important; +} + +/*buttons*/ +#footer .yt-uix-button-group .yt-uix-button, +#footer .pickers li, +#footer .footer-history, +#footer #google-help { + background: var(--second-background) !important; + border-color: var(--second-background) !important; + color: var(--main-text) !important; + box-shadow: none !important; +} + +.yt-uix-button-default.yt-uix-button-toggled:hover { + box-shadow: none !important; +} + +#footer .yt-uix-button-icon-footer-language, +#footer .yt-uix-button-icon-footer-history, +#footer .yt-uix-button-icon-questionmark { + filter: invert(1); +} + +.yt-uix-button-arrow { + border-top-color: var(--main-text) !important; +} + +#yt-picker-country-footer, +#yt-picker-language-footer, +#yt-picker-safetymode-footer { + background: var(--second-background) !important; + border-color: var(--second-background) !important; + color: var(--main-text) !important; +} + +.yt-picker-header, +#safety-form p.safety-submit + +/*divider*/ + { + border-color: var(--hover-background) !important; +} + +.yt-picker-header h3.yt, +.yt-picker-content strong { + color: var(--main-text) !important; +} + +#yt-picker-country-footer .yt-default .yt-notes, +p.yt-notes, +#safety-mode-description li { + color: var(--dimmer-text) !important; +} + +#yt-picker-country-footer .yt-picker-content a, +.yt-picker-content button { + color: var(--main-color) !important; +} + +#yt-picker-safetymode-footer button + +/*save*/ + { + background: var(--main-color) !important; + border-color: var(--main-color) !important; + color: var(--main-text) !important; + opacity: .9; +} + +/*Notification buttom corner - for settings, watch later etc*/ +tp-yt-paper-toast { + background: var(--hover-background) !important; + color: var(--main-text) !important; + box-shadow: var(--shadow) !important; +} + +/*Topic auto-generated by youtube*/ +#auto-generated.ytd-interactive-tabbed-header-renderer, +#metadata.ytd-interactive-tabbed-header-renderer { + color: var(--dimmer-text) !important; +} + +/*Keyboard shortcuts Shift-/ */ +ytd-hotkey-dialog-renderer[dialog][dialog][dialog] { + background-color: var(--main-background) !important; +} + +ytd-hotkey-dialog-section-option-renderer { + border-color: var(--hover-background) !important; +} + + +/*SponsorBlock*/ +/*logo change*/ +#sponsorBlockPopupLogo, +.sponsorSkipLogo { + display: block !important; + -moz-box-sizing: border-box !important; + box-sizing: border-box !important; + background: url(https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png) top left no-repeat !important; + background-size: 100% !important; + position: relative !important; +} + +#sponsorBlockPopupLogo { + width: 40px !important; + height: 40px !important; + padding-left: 40px !important; +} + +/*for overlays*/ +.sponsorSkipLogo { + width: 18px !important; + height: 18px !important; + padding-left: 18px !important; +} + +.sponsorBlockTooltip { + background-color: var(--hover-background) !important; +} + +/*Are you sure you want to leave YouTube? redirect*/ +/*seems like youtube will never update this page so, yeah*/ +#invalid-token-redirect-warning-text + +/*h1*/ + { + color: var(--main-text) !important; +} + +/*span*/ +#redirect-main-text { + color: var(--dimmer-text) !important; +} + +#redirect-main-text .bolded { + color: var(--main-color); +} + +/*search*/ +#masthead-search-terms-border { + border-color: var(--hover-background) !important; + background-color: var(--hover-background) !important; + box-shadow: var(--shadow) !important; +} + +#masthead-search-terms { + color: var(--main-text); +} + +.search-button { + background: var(--hover-background) !important; + border-color: var(--hover-background) !important; +} + +/*🔍 is missing, nice*/ +.search-button-content { + background: no-repeat url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNy4zOTE3IDE2LjgwODNMMTIuNzMzMyAxMi4xNUMxMy42MjUgMTEuMTI1IDE0LjE2NjcgOS43OTE2NyAxNC4xNjY3IDguMzMzMzNDMTQuMTY2NyA1LjEwODMzIDExLjU1ODMgMi41IDguMzMzMzMgMi41QzUuMTA4MzMgMi41IDIuNSA1LjEwODMzIDIuNSA4LjMzMzMzQzIuNSAxMS41NTgzIDUuMTA4MzMgMTQuMTY2NyA4LjMzMzMzIDE0LjE2NjdDOS43OTE2NyAxNC4xNjY3IDExLjEyNSAxMy42MjUgMTIuMTUgMTIuNzQxN0wxNi44MDgzIDE3LjRMMTcuMzkxNyAxNi44MDgzWk04LjMzMzMzIDEzLjMzMzNDNS41NzUgMTMuMzMzMyAzLjMzMzMzIDExLjA5MTcgMy4zMzMzMyA4LjMzMzMzQzMuMzMzMzMgNS41NzUgNS41NzUgMy4zMzMzMyA4LjMzMzMzIDMuMzMzMzNDMTEuMDkxNyAzLjMzMzMzIDEzLjMzMzMgNS41NzUgMTMuMzMzMyA4LjMzMzMzQzEzLjMzMzMgMTEuMDkxNyAxMS4wOTE3IDEzLjMzMzMgOC4zMzMzMyAxMy4zMzMzWiIgZmlsbD0iIzAzMDMwMyIvPjwvc3ZnPg==") !important; + filter: invert(1); +} + +#redirect-backto-safety-button:hover { + color: var(--main-text) !important; +} + +/*logo icon is also missing, but this __should__ change in the future*/ +.logo { + background: no-repeat url("https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/Logo.png") !important; + background-size: 70% !important; + padding: 10px; + width: 120px !important; + height: 33px !important; + box-sizing: border-box !important; + position: relative; + right: -30px; +} + +#logo-container .content-region { + color: var(--main-text) !important; +}`; diff --git a/src/deepDarkPresets.ts b/src/deepDarkPresets.ts new file mode 100644 index 00000000..6393eb20 --- /dev/null +++ b/src/deepDarkPresets.ts @@ -0,0 +1,349 @@ +/** + * Theme presets are adapted from the "YouTube DeepDark" Stylus theme by RaitaroH. + * Author: https://github.com/RaitaroH + * Co-authors: https://github.com/MechaLynx https://github.com/MaximeRF + * Repository: https://github.com/RaitaroH/YouTube-DeepDark + */ +export const deepDarkPreset = [ + "9anime", + "Adapta-Breath-Nokto", + "Adapta-Nokto", + "Arc-Dark", + "Black-and-White", + "Breeze-Dark", + "Custom", + "Deep-Dark", + "Discord", + "Dracula", + "Firefox-57", + "Firefox-Alpenglow-Dark", + "Firefox-Dark", + "Firefox-Dark-91", + "Gruvbox-Dark", + "Gruvbox-Light", + "HavocOS", + "Inspired-Dark", + "Jisho", + "Mint-Y-Dark", + "NierAutomata-Dark", + "NierAutomata-Light", + "Orange", + "Solarized-Dark", + "Solarized-Light", + "Ubuntu-Grey", + "Ubuntu-Purple", + "Vertex-Dark", + "Yellow", + "Yellow-2", + "YouTube-Dark" +] as const; +export type DeepDarkPreset = (typeof deepDarkPreset)[number]; +export type DeepDarkPresets = Record, string>; +/** + * Theme presets are adapted from the "YouTube DeepDark" Stylus theme by RaitaroH. + * Author: RaitaroH + * Co-authors: https://github.com/MechaLynx https://github.com/MaximeRF + * Repository: https://github.com/RaitaroH/YouTube-DeepDark + */ +export const deepDarkPresets = { + "9anime": ` + :root { + --main-color: #723f8c; + --main-background: #0b0a0d; + --second-background: #17151c; + --hover-background: #1E1c25; + --main-text: #f9f6fb; + --dimmer-text: #cac0cf; + --shadow: 0 1px 0.5px rgba(54, 54, 54, .13); + }`, + "Adapta-Breath-Nokto": ` + :root { + --main-color: #1abc9c; + --main-background: #222d32; + --second-background: #263238; + --hover-background: #2a353b; + --main-text: #fff; + --dimmer-text: #9b9b9b; + --shadow: 0 1px 0.5px rgba(42, 53, 59, .32); + }`, + "Adapta-Nokto": ` + :root { + --main-color: #00bcd4; + --main-background: #222d32; + --second-background: #263238; + --hover-background: #2a353b; + --main-text: #fff; + --dimmer-text: #9b9b9b; + --shadow: 0 1px 0.5px rgba(61, 77, 86, .2); + }`, + "Arc-Dark": ` + :root { + --main-color: #5294e2; + --main-background: #343944; + --second-background: #383c4a; + --hover-background: #414a59; + --main-text: #c1c8d1; + --dimmer-text: #b3bac5; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .13); + }`, + "Black-and-White": ` + :root { + --main-color: #fff; + --main-background: #000; + --second-background: #1e1e1e; + --hover-background: #313131; + --main-text: #fff; + --dimmer-text: #aaa; + --shadow: 0 1px 0.5px rgba(54 ,54 ,54, .2); + }`, + "Breeze-Dark": ` + :root { + --main-color: #3daee9; + --main-background: #232629; + --second-background: #2a2e32; + --hover-background: #31363b; + --main-text: #eff0f1; + --dimmer-text: #bdc3c7; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .13); + }`, + "Deep-Dark": ` + :root { + --main-color: #00adee; + --main-background: #111; + --second-background: #181818; + --hover-background: #232323; + --main-text: #eff0f1; + --dimmer-text: #ccc; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .3); + }`, + Discord: ` + :root { + --main-color: #7289da; + --main-background: #1e2124; + --second-background: #2f3136; + --hover-background: #484b51; + --main-text: #fff; + --dimmer-text: #ada8aa; + --shadow: 0 1px 0.5px rgba(47, 49, 54, .23); + }`, + Dracula: ` + :root { + --main-color: #bd93f9; /*Purple*/ + --main-background: hsl(231, 15%, 18%); /*Background*/ + --second-background: hsl(231, 15%, 22%); /*Manually generated from Background*/ + --hover-background: #44475a; /*Selection*/ + --main-text:#f8f8f2; /*Foreground*/ + --dimmer-text: #bcc2cd; /*From .app-title https://draculatheme.com/*/ + --shadow: 0 1px 0.5px rgba(0, 0, 0, .15); + }`, + "Firefox-57": ` + :root { + --main-color: #4080fb; + --main-background: #0c0c0d; + --second-background: #252526; + --hover-background: #323234; + --main-text: #f9f9fa; + --dimmer-text: #d0d0d0; + --shadow: 0 1px 0.5px rgba(54, 54, 54, .2); + }`, + "Firefox-Alpenglow-Dark": ` + :root { + --main-color: #C488FC; + --main-background: #21133d; + --second-background: #2a1e52; + --hover-background: #2d245b; + --main-text: #ffffff; + --dimmer-text: #E3DBFA; + --shadow: 0 1px .5px rgba(35, 22, 65, .5); + }`, + "Firefox-Dark": ` + :root { + --main-color: #5675b9; + --main-background: #272b35; + --second-background: #181d20; + --hover-background: #353a44; + --main-text: #e3eef9; + --dimmer-text: #bec0cc; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .13); + }`, + "Firefox-Dark-91": ` + :root { + --main-color: #00ddff; + --main-background: #1c1b22; + --second-background: #23222b; + --hover-background: #2b2a33; + --main-text: #fbfbfe; + --dimmer-text: #b8b7bb; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .13); + }`, + "Gruvbox-Dark": ` + :root { + --main-color: #fe8019; + --main-background: #1d2021; + --second-background: #282828; + --hover-background: #3c3836; + --main-text: #fbf1c7; + --dimmer-text: #ebdbb2; + --shadow: 0 1px 0.5px rgba(60, 56, 54, .22); + }`, + "Gruvbox-Light": ` + :root { + --main-color: #af3a03; + --main-background: #f9f5d7; + --second-background: #fbf1c7; + --hover-background: #ebdbb2; + --main-text: #282828; + --dimmer-text: #3c3836; + --shadow: 0 1px 0.5px rgba(235, 219, 178, .33); + }`, + HavocOS: ` + :root { + --main-color: #0794d4; + --main-background: #141618; + --second-background: #1c1e20; + --hover-background: #212528; + --main-text: #fff; + --dimmer-text: #b9baba; + --shadow: 0 1px 0.5px rgba(185, 186, 186, .04); + }`, + "Inspired-Dark": ` + :root { + --main-color: #5e8acc; + --main-background: #232629; + --second-background: #181818; + --hover-background: #515254; + --main-text: #eee; + --dimmer-text: #ccc; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .13); + }`, + Jisho: ` + :root { + --main-color: #ef7d6c; + --main-background: #332222; + --second-background: #2a1b1b; + --hover-background: #863b2f; + --main-text: #EFB26C; + --dimmer-text: #986E3F; + --shadow: 0 1px 0.5px rgba(37, 19, 5, .19); + }`, + "Mint-Y-Dark": ` + :root { + --main-color: #9ab87c; + --main-background: #2f2f2f; + --second-background: #383838; + --hover-background: #404040; + --main-text: #fff; + --dimmer-text: #d5dada; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .13); + }`, + "NierAutomata-Dark": ` + :root { + --main-color: #fe8019; + --main-background: #33302a; + --second-background: #48453c; + --hover-background: #7c6f64; + --main-text: #dad4bb; + --dimmer-text: #bab5a1; + --shadow: 0 1px 0.5px rgba(124, 111, 100, .15); + }`, + "NierAutomata-Light": ` + :root { + --main-color: #fe8019; + --main-background: #d1cdb7; + --second-background: #dcd8c0; + --hover-background: #bab5a1; + --main-text: #48453c; + --dimmer-text: #33302a; + --shadow: 0 1px 0.5px rgba(186, 181, 161, 2); + }`, + Orange: ` + :root { + --main-color: #ff6905; + --main-background: #0a0400; + --second-background: #0e0702; + --hover-background: #110903; + --main-text: #fff9f5; + --dimmer-text: #ffede1; + --shadow: 0 1px 0.5px rgba(255, 105, 5, .1); + }`, + "Solarized-Dark": ` + :root { + --main-color: #268bd2; + --main-background: #073642; + --second-background: #03303c; + --hover-background: #002b36; + --main-text: #fdf6E3; + --dimmer-text: #eee8d5; + --shadow: 0 1px 0.5px rgba(0, 43, 54, .3); + }`, + "Solarized-Light": ` + :root { + --main-color: #268bd2; + --main-background: #fdf6e3; + --second-background: #f5efdc; + --hover-background: #eee8d5; + --main-text: #073642; + --dimmer-text: #586e75; + --shadow: 0 1px 0.5px rgba(222, 216, 196, .2); + }`, + "Ubuntu-Grey": ` + :root { + --main-color: #ef7847; + --main-background: #312d2a; + --second-background: #3d3c38; + --hover-background: #59564d; + --main-text: #f2f1ef; + --dimmer-text: #e6e5e3; + --shadow: 0 1px 0.5px rgba(89, 86, 77, .12); + }`, + "Ubuntu-Purple": ` + :root { + --main-color: #ef7847; + --main-background: #2c071a; + --second-background: #430b28; + --hover-background: #520D30; + --main-text: #f2f1ef; + --dimmer-text: #e6e5e3; + --shadow: 0 1px 0.5px rgba(82, 13, 48, .2); + }`, + "Vertex-Dark": ` + :root { + --main-color: #4080fb; + --main-background: #2b2b2c; + --second-background: #353638; + --hover-background: #515254; + --main-text: #f3f3f5; + --dimmer-text: #aeafb0; + --shadow: 0 1px 0.5px rgba(0, 0, 0, .13); + }`, + Yellow: ` + :root { + --main-color: #ffc700; + --main-background: #141414; + --second-background: #202222; + --hover-background: #353838; + --main-text: #eff0f1; + --dimmer-text: #9f9999; + --shadow: 0 1px 0.5px rgba(34, 34, 34, .2); + }`, + "Yellow-2": ` + :root { + --main-color: #ffc700; + --main-background: #0a0800; + --second-background: #0c0a04; + --hover-background: #0f0d05; + --main-text: #fffdf5; + --dimmer-text: #fff8e1; + --shadow: 0 1px 0.5px rgba(34, 34, 34, .2); + }`, + "YouTube-Dark": ` + :root { + --main-color: #e52117; + --main-background: #111; + --second-background: #232323; + --hover-background: #343434; + --main-text: #e1e1e1; + --dimmer-text: #7f7f7f; + --shadow: 0 1px 0.5px rgba(54, 54, 54, .2); + }` +} as const satisfies DeepDarkPresets; diff --git a/src/features/deepDarkCSS/index.ts b/src/features/deepDarkCSS/index.ts new file mode 100644 index 00000000..118c5320 --- /dev/null +++ b/src/features/deepDarkCSS/index.ts @@ -0,0 +1,35 @@ +import { deepDarkPresets } from "@/src/deepDarkPresets"; +import { waitForSpecificMessage } from "@/src/utils/utilities"; + +import { createDeepDarkCSSElement, deepDarkCSSExists, getDeepDarkCustomThemeStyle, updateDeepDarkCSS } from "./utils"; +export const deepDarkCssID = "yte-deep-dark-css"; +export async function enableDeepDarkCSS() { + // Wait for the "options" message from the content script + const optionsData = await waitForSpecificMessage("options", "request_data", "content"); + const { + data: { + options: { deep_dark_custom_theme_colors, deep_dark_preset, enable_deep_dark_theme } + } + } = optionsData; + // Check if deep dark theme is enabled + if (!enable_deep_dark_theme) return; + if (deepDarkCSSExists()) { + updateDeepDarkCSS(deep_dark_preset === "Custom" ? getDeepDarkCustomThemeStyle(deep_dark_custom_theme_colors) : deepDarkPresets[deep_dark_preset]); + return; + } + // Create the deep dark theme style element + const deepDarkThemeStyleElement = createDeepDarkCSSElement( + deep_dark_preset === "Custom" ? getDeepDarkCustomThemeStyle(deep_dark_custom_theme_colors) : deepDarkPresets[deep_dark_preset] + ); + // Insert the deep dark theme style element + document.head.appendChild(deepDarkThemeStyleElement); +} + +export function disableDeepDarkCSS() { + // Get the deep dark theme style element + const deepDarkThemeStyleElement = document.querySelector(`#${deepDarkCssID}`); + // Check if the deep dark theme style element exists + if (!deepDarkThemeStyleElement) return; + // Remove the deep dark theme style element + deepDarkThemeStyleElement.remove(); +} diff --git a/src/features/deepDarkCSS/utils.ts b/src/features/deepDarkCSS/utils.ts new file mode 100644 index 00000000..75c9c32c --- /dev/null +++ b/src/features/deepDarkCSS/utils.ts @@ -0,0 +1,46 @@ +import type { DeepDarkCustomThemeColors } from "@/src/types"; + +import { deepDarkMaterial } from "@/src/deepDarkMaterialCSS"; +import { deepDarkCssID } from "@/src/features/deepDarkCSS"; + +export function updateDeepDarkCSS(css_code: string) { + // Get the custom CSS style element + const customCSSStyleElement = document.querySelector(`#${deepDarkCssID}`); + // Check if the custom CSS style element exists + if (!customCSSStyleElement) return; + customCSSStyleElement.replaceWith(createDeepDarkCSSElement(css_code)); +} +export function createDeepDarkCSSElement(css_code: string) { + // Create the custom CSS style element + const customCSSStyleElement = document.createElement("style"); + customCSSStyleElement.id = deepDarkCssID; + customCSSStyleElement.textContent = `${deepDarkMaterial}\n${css_code}`; + return customCSSStyleElement; +} +export function deepDarkCSSExists() { + // Get the custom CSS style element + const customCSSStyleElement = document.querySelector(`#${deepDarkCssID}`); + // Check if the custom CSS style element exists + if (!customCSSStyleElement) return false; + return true; +} + +export function getDeepDarkCustomThemeStyle({ + colorShadow, + dimmerText, + hoverBackground, + mainBackground, + mainColor, + mainText, + secondBackground +}: DeepDarkCustomThemeColors) { + return `:root { + --main-color: ${mainColor}; + --main-background: ${mainBackground}; + --second-background: ${secondBackground}; + --hover-background: ${hoverBackground}; + --main-text: ${mainText}; + --dimmer-text: ${dimmerText}; + --shadow: 0 1px 0.5px ${colorShadow}; + }`; +} diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 9f1ff5eb..48d5fa0e 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -2,44 +2,44 @@ import { type Resource, createInstance } from "i18next"; import { waitForSpecificMessage } from "../utils/utilities"; export const availableLocales = [ - "ca-ES", - "cs-CZ", - "de-DE", - "en-US", - "es-ES", - "fa-IR", - "fr-FR", - "he-IL", - "hi-IN", - "it-IT", - "ja-JP", - "pl-PL", - "pt-BR", - "ru-RU", - "sv-SE", - "tr-TR", - "zh-CN", - "zh-TW" + "ca-ES", + "cs-CZ", + "de-DE", + "en-US", + "es-ES", + "fa-IR", + "fr-FR", + "he-IL", + "hi-IN", + "it-IT", + "ja-JP", + "pl-PL", + "pt-BR", + "ru-RU", + "sv-SE", + "tr-TR", + "zh-CN", + "zh-TW" ] as const; export const localePercentages: Record = { - "ca-ES": 0, - "cs-CZ": 0, - "de-DE": 40, - "en-US": 100, - "es-ES": 71, - "fa-IR": 0, - "fr-FR": 75, - "he-IL": 0, - "hi-IN": 0, - "it-IT": 0, - "ja-JP": 100, - "pl-PL": 1, - "pt-BR": 82, - "ru-RU": 91, - "sv-SE": 92, - "tr-TR": 80, - "zh-CN": 100, - "zh-TW": 97 + "en-US": 100, + "ca-ES": 0, + "cs-CZ": 0, + "de-DE": 37, + "es-ES": 65, + "fa-IR": 0, + "fr-FR": 69, + "he-IL": 0, + "hi-IN": 0, + "it-IT": 0, + "ja-JP": 92, + "pl-PL": 0, + "pt-BR": 76, + "ru-RU": 92, + "sv-SE": 85, + "tr-TR": 74, + "zh-CN": 92, + "zh-TW": 89 }; export const localeDirection: Record = { "ca-ES": "ltr", diff --git a/src/pages/content/index.tsx b/src/pages/content/index.tsx index 644e537f..ff6049e9 100644 --- a/src/pages/content/index.tsx +++ b/src/pages/content/index.tsx @@ -1,10 +1,13 @@ /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */ +import { deepDarkPresets } from "@/src/deepDarkPresets"; import { type FeatureFuncRecord, featureButtonFunctions } from "@/src/features"; import { automaticTheaterMode } from "@/src/features/automaticTheaterMode"; import { featuresInControls } from "@/src/features/buttonPlacement"; import { checkIfFeatureButtonExists, getFeatureButton, updateFeatureButtonTitle } from "@/src/features/buttonPlacement/utils"; import { disableCustomCSS, enableCustomCSS } from "@/src/features/customCSS"; import { customCSSExists, updateCustomCSS } from "@/src/features/customCSS/utils"; +import { disableDeepDarkCSS, enableDeepDarkCSS } from "@/src/features/deepDarkCSS"; +import { deepDarkCSSExists, getDeepDarkCustomThemeStyle, updateDeepDarkCSS } from "@/src/features/deepDarkCSS/utils"; import { enableFeatureMenu, setupFeatureMenuEventListeners } from "@/src/features/featureMenu"; import { featuresInMenu, updateFeatureMenuItemLabel, updateFeatureMenuTitle } from "@/src/features/featureMenu/utils"; import { enableHideScrollBar } from "@/src/features/hideScrollBar"; @@ -124,7 +127,8 @@ const enableFeatures = () => { enableShareShortener(), enableRememberVolume(), enableHideScrollBar(), - enableCustomCSS() + enableCustomCSS(), + enableDeepDarkCSS() ]); // Use a guard clause to reduce amount of times nesting code happens @@ -486,6 +490,23 @@ window.addEventListener("DOMContentLoaded", function () { } break; } + case "deepDarkThemeChange": { + const { + data: { deepDarkCustomThemeColors, deepDarkPreset, deepDarkThemeEnabled } + } = message; + if (deepDarkThemeEnabled) { + if (deepDarkCSSExists()) { + updateDeepDarkCSS( + deepDarkPreset === "Custom" ? getDeepDarkCustomThemeStyle(deepDarkCustomThemeColors) : deepDarkPresets[deepDarkPreset] + ); + } else { + await enableDeepDarkCSS(); + } + } else { + disableDeepDarkCSS(); + } + break; + } case "customCSSChange": { const { data: { customCSSCode, customCSSEnabled } diff --git a/src/pages/inject/index.tsx b/src/pages/inject/index.tsx index f254d2c4..4f684d95 100644 --- a/src/pages/inject/index.tsx +++ b/src/pages/inject/index.tsx @@ -222,6 +222,20 @@ const storageChangeHandler = async (changes: StorageChanges, areaName: string) = customCSSEnabled: options.enable_custom_css }); }, + deep_dark_custom_theme_colors: (__oldValue, newValue) => { + sendExtensionOnlyMessage("deepDarkThemeChange", { + deepDarkCustomThemeColors: newValue, + deepDarkPreset: options.deep_dark_preset, + deepDarkThemeEnabled: options.enable_deep_dark_theme + }); + }, + deep_dark_preset: (__oldValue, newValue) => { + sendExtensionOnlyMessage("deepDarkThemeChange", { + deepDarkCustomThemeColors: options.deep_dark_custom_theme_colors, + deepDarkPreset: newValue, + deepDarkThemeEnabled: options.enable_deep_dark_theme + }); + }, enable_automatic_theater_mode: (__oldValue, newValue) => { sendExtensionOnlyMessage("automaticTheaterModeChange", { automaticTheaterModeEnabled: newValue @@ -230,6 +244,13 @@ const storageChangeHandler = async (changes: StorageChanges, areaName: string) = enable_custom_css: (__oldValue, newValue) => { sendExtensionOnlyMessage("customCSSChange", { customCSSCode: options.custom_css_code, customCSSEnabled: newValue }); }, + enable_deep_dark_theme: (__oldValue, newValue) => { + sendExtensionOnlyMessage("deepDarkThemeChange", { + deepDarkCustomThemeColors: options.deep_dark_custom_theme_colors, + deepDarkPreset: options.deep_dark_preset, + deepDarkThemeEnabled: newValue + }); + }, enable_forced_playback_speed: (__oldValue, newValue) => { sendExtensionOnlyMessage("playerSpeedChange", { enableForcedPlaybackSpeed: newValue, diff --git a/src/types/index.ts b/src/types/index.ts index 7e2c9d9e..a5e10253 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -3,6 +3,7 @@ import type { YouTubePlayer } from "youtube-player/dist/types"; import z, { ZodType } from "zod"; +import type { DeepDarkPreset } from "../deepDarkPresets"; import type { AvailableLocales } from "../i18n"; // #region Utility types export type Nullable = T | null; @@ -116,6 +117,15 @@ export const buttonPlacements = ["below_player", "feature_menu", "player_control export type ButtonPlacement = (typeof buttonPlacements)[number]; export const featureMenuOpenTypes = ["click", "hover"] as const; export type FeatureMenuOpenType = (typeof featureMenuOpenTypes)[number]; +export type DeepDarkCustomThemeColors = { + colorShadow: string; + dimmerText: string; + hoverBackground: string; + mainBackground: string; + mainColor: string; + mainText: string; + secondBackground: string; +}; type TOptionsKeys = ParseKeys<"en-US", TOptions, undefined>; export type AllButtonNames = Exclude, "featureMenu">; export type SingleButtonNames = Exclude; @@ -248,6 +258,10 @@ export type ExtensionSendOnlyMessageMappings = { } >; customCSSChange: DataResponseMessage<"customCSSChange", { customCSSCode: string; customCSSEnabled: boolean }>; + deepDarkThemeChange: DataResponseMessage< + "deepDarkThemeChange", + { deepDarkCustomThemeColors: DeepDarkCustomThemeColors; deepDarkPreset: DeepDarkPreset; deepDarkThemeEnabled: boolean } + >; featureMenuOpenTypeChange: DataResponseMessage<"featureMenuOpenTypeChange", { featureMenuOpenType: FeatureMenuOpenType }>; hideScrollBarChange: DataResponseMessage<"hideScrollBarChange", { hideScrollBarEnabled: boolean }>; hideShortsChange: DataResponseMessage<"hideShortsChange", { hideShortsEnabled: boolean }>; @@ -316,9 +330,12 @@ export type Messages = MessageMappings[keyof MessageMappings]; export type configuration = { button_placements: ButtonPlacementConfigurationMap; custom_css_code: string; + deep_dark_custom_theme_colors: DeepDarkCustomThemeColors; + deep_dark_preset: DeepDarkPreset; enable_automatic_theater_mode: boolean; enable_automatically_set_quality: boolean; enable_custom_css: boolean; + enable_deep_dark_theme: boolean; enable_forced_playback_speed: boolean; enable_hide_scrollbar: boolean; enable_hide_shorts: boolean; diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 255d7954..2ca8ad5b 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -2,6 +2,7 @@ import z, { ZodEnum, ZodObject } from "zod"; import type { AllButtonNames, ButtonPlacement, TypeToPartialZodSchema, configuration } from "../types"; +import { deepDarkPreset } from "../deepDarkPresets"; import { availableLocales } from "../i18n/index"; import { buttonNames, @@ -30,9 +31,20 @@ export const defaultConfiguration = { volumeBoostButton: "feature_menu" }, custom_css_code: "", + deep_dark_custom_theme_colors: { + colorShadow: "#383c4a4d", + dimmerText: "#cccccc", + hoverBackground: "#4e5467", + mainBackground: "#22242d", + mainColor: "#367bf0", + mainText: "#eeeeee", + secondBackground: "#242730" + }, + deep_dark_preset: "Deep-Dark", enable_automatic_theater_mode: false, enable_automatically_set_quality: false, enable_custom_css: false, + enable_deep_dark_theme: false, enable_forced_playback_speed: false, enable_hide_scrollbar: false, enable_hide_shorts: false, @@ -95,9 +107,22 @@ export const configurationImportSchema: TypeToPartialZodSchema< ) }), custom_css_code: z.string().optional(), + deep_dark_custom_theme_colors: z + .object({ + colorShadow: z.string(), + dimmerText: z.string(), + hoverBackground: z.string(), + mainBackground: z.string(), + mainColor: z.string(), + mainText: z.string(), + secondBackground: z.string() + }) + .optional(), + deep_dark_preset: z.enum(deepDarkPreset).optional(), enable_automatic_theater_mode: z.boolean().optional(), enable_automatically_set_quality: z.boolean().optional(), enable_custom_css: z.boolean().optional(), + enable_deep_dark_theme: z.boolean().optional(), enable_forced_playback_speed: z.boolean().optional(), enable_hide_scrollbar: z.boolean().optional(), enable_hide_shorts: z.boolean().optional(), diff --git a/yarn.lock b/yarn.lock index 0b02ed3f..f5bd95d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4777,7 +4777,16 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +<<<<<<< Updated upstream "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.2.0: +======= +react-colorful@^5.6.1: + version "5.6.1" + resolved "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz" + integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== + +"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.2.0, react-dom@>=16.8.0: +>>>>>>> Stashed changes version "18.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -4795,7 +4804,11 @@ react-is@^16.13.1: resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +<<<<<<< Updated upstream react@*, "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0: +======= +react@*, "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, react@>=16.8.0: +>>>>>>> Stashed changes version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -5927,6 +5940,11 @@ url-join@^5.0.0: resolved "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz" integrity sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA== +use-debouncy@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/use-debouncy/-/use-debouncy-5.0.1.tgz" + integrity sha512-Y67Ms+feWonusFVKm/AgajoyHHTmtjpC6lBaNAAK65oe1dB59G3JoQzKedFzb6DCeJm71epHBrTsNTev37YO3g== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"