diff --git a/.all-contributorsrc b/.all-contributorsrc index 2acbb310..79fec7ab 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -129,6 +129,15 @@ "contributions": [ "translation" ] + }, + { + "login": "Secret-Peter", + "name": "Secret-Peter", + "avatar_url": "https://avatars.githubusercontent.com/u/166921574?v=4", + "profile": "https://github.com/Secret-Peter", + "contributions": [ + "translation" + ] } ] } diff --git a/.eslintrc b/.eslintrc index 490f6b11..5a90fe4f 100644 --- a/.eslintrc +++ b/.eslintrc @@ -12,7 +12,9 @@ "plugin:import/typescript", "plugin:tailwindcss/recommended", "plugin:promise/recommended", - "plugin:perfectionist/recommended-natural" + "plugin:perfectionist/recommended-natural", + "plugin:react-hooks/recommended", + "plugin:prettier/recommended" ], "root": true, "parser": "@typescript-eslint/parser", @@ -31,6 +33,7 @@ "@typescript-eslint/no-unused-vars": ["error"], "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/restrict-template-expressions": "off", "quotes": ["error", "double", { "avoidEscape": true, "allowTemplateLiterals": true }], "semi": ["error", "always"], "prefer-const": [ @@ -54,7 +57,7 @@ "no-empty": ["error", { "allowEmptyCatch": true }], "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], "import/first": ["error"], - "no-secrets/no-secrets": "error", + "no-secrets/no-secrets": ["error", { "tolerance": 5.0 }], "import/no-unresolved": "off", "tailwindcss/no-custom-classname": "off", "tailwindcss/classnames-order": "error", diff --git a/.prettierignore b/.prettierignore index f06235c4..8212fd4b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,8 @@ node_modules dist +.all-contributorsrc +CHANGELOG.md +README.md +package.json +package-lock.json +yarn.lock diff --git a/.vscode/settings.json b/.vscode/settings.json index 0f9e1c25..8bbb6365 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,7 @@ "source.fixAll": "always" }, "eslint.codeActionsOnSave.mode": "all", - "editor.snippets.codeActions.enabled": true + "editor.snippets.codeActions.enabled": true, + "typescript.validate.enable": true, + "typescript.tsserver.experimental.enableProjectDiagnostics": true } diff --git a/README.md b/README.md index c26ba005..49a92b30 100755 --- a/README.md +++ b/README.md @@ -40,9 +40,11 @@ YouTube Enhancer is a browser extension that aims to improve your YouTube experi - **Remaining Time:** Keep track of the time remaining on your video with a dynamic display. +- **Pause background players:** Pauses video players in background tabs when you start a new player in the foreground. + - **Loop Button:** Adds a dedicated button to toggle the video player loop. -- **Hide Scrollbar:** Hides the pages scroll bar +- **Hide Scrollbar:** Hides the pages scroll bar. - **Automatic Theater Mode:** Automatically enables theater mode when you load a video @@ -54,6 +56,8 @@ YouTube Enhancer is a browser extension that aims to improve your YouTube experi - **Shorten YouTube video share link**: Enhance your shared YouTube links with a shortened and cleaner appearance, intelligently excluding unnecessary query parameters like `si`, `pp`, and `feature` for a more user-friendly experience. +- **Skip "Video is paused. Continue watching?" popup**: Skips the idle dialog that pauses video playback. + - **Shorts auto scroll**: Enjoy seamless viewing with automatic scrolling through YouTube Shorts. - **Hide shorts**: Enhance your browsing experience by hiding distracting YouTube Shorts content. @@ -105,8 +109,12 @@ YouTube Enhancer is a browser extension that aims to improve your YouTube experi - **Forced Playback Speed:** Allows users to force videos to play at a specific speed. +- **Playback speed buttons:** Adds buttons to adjust the playback speed. + - **Player Speed:** Define the playback speed for videos. +- **Playback buttons speed:** Define the speed adjustment per button press. + ### Volume Boost Settings - **Volume Boost:** Enables the volume boost feature. @@ -123,6 +131,26 @@ YouTube Enhancer is a browser extension that aims to improve your YouTube experi - **Screenshot Format:** Define the format in which screenshots should be saved (PNG, JPEG, or WEBP). +### YouTube Deep Dark Settings + +- **Enable selected theme:** Enables the selected YouTube Deep Dark theme. + +- **Select theme:** Select the YouTube Deep Dark theme to use (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). + +- **Accent color:** Select the accent color for the "Custom" theme. + +- **Main background color:** Select the main background color for the "Custom" theme. + +- **Secondary background color:** Select the secondary background color for the "Custom" theme. + +- **Hover background color:** Select the hover background color for the "Custom" theme. + +- **Main text color:** Select the main text color for the "Custom" theme. + +- **Secondary text color:** Select the secondary text color for the "Custom" theme. + +- **Shadow color:** Select the shadow color for the "Custom" theme. + ### Custom CSS Settings - **Enable custom CSS:** Applies the custom CSS from the editor to the YouTube page. @@ -266,6 +294,7 @@ Contributions to the YouTube Enhancer Extension are welcome! If you'd like to co rado84
rado84

🐛 pulsar2105
pulsar2105

🌍 Granberg
Granberg

🌍 + Secret-Peter
Secret-Peter

🌍 @@ -293,6 +322,8 @@ We welcome contributions to improve translations and make the extension accessib The YouTube Enhancer Extension is open-source and available under the [MIT License](LICENSE). Feel free to explore, modify, and share it as needed. +![Alt](https://repobeats.axiom.co/api/embed/5f047f2fde5309f072dda1602645f76bb8e74cdc.svg "Repobeats analytics image") + ## 🌟 Star History diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 00000000..e1e730a0 Binary files /dev/null and b/bun.lockb differ diff --git a/extension screenshots/Options Popup/Button_Position_Select.png b/extension screenshots/Options Popup/Button_Position_Select.png new file mode 100644 index 00000000..c6b7fd82 Binary files /dev/null and b/extension screenshots/Options Popup/Button_Position_Select.png differ diff --git a/extension screenshots/Options Popup/Color_Selection.png b/extension screenshots/Options Popup/Color_Selection.png new file mode 100644 index 00000000..00054f8c Binary files /dev/null and b/extension screenshots/Options Popup/Color_Selection.png differ diff --git a/extension screenshots/Options Popup/Main.png b/extension screenshots/Options Popup/Main.png new file mode 100644 index 00000000..73e23fdf Binary files /dev/null and b/extension screenshots/Options Popup/Main.png differ diff --git a/extension screenshots/Options Popup/Settings.png b/extension screenshots/Options Popup/Settings.png new file mode 100644 index 00000000..9ef0fb74 Binary files /dev/null and b/extension screenshots/Options Popup/Settings.png differ diff --git a/extension screenshots/Options/Options_1.png b/extension screenshots/Options/Options_1.png new file mode 100644 index 00000000..d6cefd68 Binary files /dev/null and b/extension screenshots/Options/Options_1.png differ diff --git a/extension screenshots/Options/Options_2.png b/extension screenshots/Options/Options_2.png new file mode 100644 index 00000000..6858c72b Binary files /dev/null and b/extension screenshots/Options/Options_2.png differ diff --git a/extension screenshots/YouTube Page/Buttons_Below_Player.png b/extension screenshots/YouTube Page/Buttons_Below_Player.png new file mode 100644 index 00000000..51cf0306 Binary files /dev/null and b/extension screenshots/YouTube Page/Buttons_Below_Player.png differ diff --git a/extension screenshots/YouTube Page/Decrease_Speed_Left_Control.png b/extension screenshots/YouTube Page/Decrease_Speed_Left_Control.png new file mode 100644 index 00000000..e001f6b0 Binary files /dev/null and b/extension screenshots/YouTube Page/Decrease_Speed_Left_Control.png differ diff --git a/extension screenshots/YouTube Page/Feature_Menu.png b/extension screenshots/YouTube Page/Feature_Menu.png new file mode 100644 index 00000000..62cbc992 Binary files /dev/null and b/extension screenshots/YouTube Page/Feature_Menu.png differ diff --git a/extension screenshots/YouTube Page/OSD_Speed.png b/extension screenshots/YouTube Page/OSD_Speed.png new file mode 100644 index 00000000..106b7e19 Binary files /dev/null and b/extension screenshots/YouTube Page/OSD_Speed.png differ diff --git a/extension screenshots/YouTube Page/OSD_Volume.png b/extension screenshots/YouTube Page/OSD_Volume.png new file mode 100644 index 00000000..542c784b Binary files /dev/null and b/extension screenshots/YouTube Page/OSD_Volume.png differ diff --git a/extension screenshots/YouTube Page/Player_Fullscreen.png b/extension screenshots/YouTube Page/Player_Fullscreen.png new file mode 100644 index 00000000..b39e101f Binary files /dev/null and b/extension screenshots/YouTube Page/Player_Fullscreen.png differ diff --git a/extension screenshots/YouTube Page/Screenshot.png b/extension screenshots/YouTube Page/Screenshot.png new file mode 100644 index 00000000..7d024e5d Binary files /dev/null and b/extension screenshots/YouTube Page/Screenshot.png differ diff --git a/extension screenshots/YouTube Page/Volume_Boost_Below_Player.png b/extension screenshots/YouTube Page/Volume_Boost_Below_Player.png new file mode 100644 index 00000000..91087e53 Binary files /dev/null and b/extension screenshots/YouTube Page/Volume_Boost_Below_Player.png differ diff --git a/package-lock.json b/package-lock.json index e8453303..5837ba66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "youtube-enhancer", - "version": "1.22.0", + "version": "1.23.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "youtube-enhancer", - "version": "1.22.0", + "version": "1.23.3", "license": "MIT", "dependencies": { "@formkit/auto-animate": "^0.8.1", @@ -14,9 +14,12 @@ "@tanstack/react-query": "^5.18.0", "dotenv": "^16.3.1", "i18next": "^23.7.3", - "monaco-editor": "^0.45.0", + "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" }, @@ -27,16 +30,16 @@ "@thedutchcoder/postcss-rem-to-px": "^0.0.2", "@total-typescript/ts-reset": "^0.5.1", "@types/archiver": "^6.0.1", - "@types/chrome": "^0.0.260", + "@types/chrome": "^0.0.266", "@types/node": "^20.9.0", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", "@types/webextension-polyfill": "^0.10.6", "@types/youtube-player": "^5.5.10", - "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^6.10.0", "@vitejs/plugin-react-swc": "^3.4.1", - "archiver": "^6.0.1", + "archiver": "^7.0.1", "autoprefixer": "^10.4.16", "clsx": "^2.0.0", "concurrently": "^8.2.2", @@ -267,9 +270,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", + "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -316,9 +319,9 @@ "dev": true }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", - "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", "cpu": [ "ppc64" ], @@ -331,9 +334,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", - "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "cpu": [ "arm" ], @@ -346,9 +349,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", - "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "cpu": [ "arm64" ], @@ -361,9 +364,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", - "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "cpu": [ "x64" ], @@ -376,9 +379,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -391,9 +394,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", - "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "cpu": [ "x64" ], @@ -406,9 +409,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", - "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "cpu": [ "arm64" ], @@ -421,9 +424,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", - "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "cpu": [ "x64" ], @@ -436,9 +439,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", - "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "cpu": [ "arm" ], @@ -451,9 +454,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", - "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "cpu": [ "arm64" ], @@ -466,9 +469,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", - "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "cpu": [ "ia32" ], @@ -481,9 +484,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", - "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "cpu": [ "loong64" ], @@ -496,9 +499,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", - "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "cpu": [ "mips64el" ], @@ -511,9 +514,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", - "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "cpu": [ "ppc64" ], @@ -526,9 +529,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", - "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "cpu": [ "riscv64" ], @@ -541,9 +544,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", - "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "cpu": [ "s390x" ], @@ -556,9 +559,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", - "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "cpu": [ "x64" ], @@ -571,9 +574,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", - "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "cpu": [ "x64" ], @@ -586,9 +589,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", - "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "cpu": [ "x64" ], @@ -601,9 +604,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", - "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "cpu": [ "x64" ], @@ -616,9 +619,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", - "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "cpu": [ "arm64" ], @@ -631,9 +634,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", - "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "cpu": [ "ia32" ], @@ -646,9 +649,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", - "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "cpu": [ "x64" ], @@ -708,27 +711,27 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@formkit/auto-animate": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.8.1.tgz", - "integrity": "sha512-0/Z2cuNXWVVIG/l0SpcHAWFhGdvLJ8DRvEfRWvmojtmRWfEy+LWNwgDazbZqY0qQYtkHcoEK3jBLkhiZaB/4Ig==" + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.8.2.tgz", + "integrity": "sha512-SwPWfeRa5veb1hOIBMdzI+73te5puUBHmqqaF1Bu7FjvxlYSz/kJcZKSa9Cg60zL0uRNeJL2SbRxV6Jp6Q1nFQ==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -749,11 +752,101 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -868,151 +961,157 @@ } }, "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.0.1.tgz", + "integrity": "sha512-RTmWsLfig8SBoiSdgvCht4BXl1CHU89Co5xiQ5JF19my/sIRDFCQ1RPrmK0exgqUZuNm39C/bV8+/83+MJEjGg==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.0.tgz", - "integrity": "sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.0.1.tgz", + "integrity": "sha512-MIpPQXu8Y8GjHwXM81JLveiV+DHJZtLMcB5nKekBGOl3iAtk0HT3i12Xl8Biybu+bCS1+k4qbuKEq5d0RxNRnQ==", "dev": true, "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.0.0", + "@octokit/request": "^9.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^12.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz", - "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.0.0.tgz", + "integrity": "sha512-emBcNDxBdC1y3+knJonS5zhUB/CG6TihubxM2U1/pG/Z1y3a4oV0Gzz3lmkCvWWQI6h3tqBAX9MgCBFp+M68Jw==", "dev": true, "dependencies": { - "@octokit/types": "^11.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^12.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.1.tgz", - "integrity": "sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.0.1.tgz", + "integrity": "sha512-lLDb6LhC1gBj2CxEDa5Xk10+H/boonhs+3Mi6jpRyetskDKNHe6crMeKmUE2efoLofMP8ruannLlCUgpTFmVzQ==", "dev": true, "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^11.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^9.0.0", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-8.0.0.tgz", - "integrity": "sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-10.0.0.tgz", + "integrity": "sha512-G1Z67qOiFneKDJyMafHQkWnKm1kU3FfbRZLzxgsFg4dOa3pRNdABbdk+xo/oev6P88lnbt7GKdBNB6dJZuPphA==", "dev": true, "dependencies": { - "@octokit/types": "^11.0.0" + "@octokit/types": "^12.6.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-retry": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.0.tgz", - "integrity": "sha512-a1/A4A+PB1QoAHQfLJxGHhLfSAT03bR1jJz3GgQJZvty2ozawFWs93MiBQXO7SL2YbO7CIq0Goj4qLOBj8JeMQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.0.3.tgz", + "integrity": "sha512-T9l5Z7XnDZ7dkyNmhJPSUq0YjbqUT/xn4yQbhcSuv4WGC/LqM73/mKwkl68VDPoLw20e8oz4L7qQopWt9v6sow==", "dev": true, "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.0.0", + "@octokit/request-error": "^6.0.0", + "@octokit/types": "^12.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-throttling": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-7.0.0.tgz", - "integrity": "sha512-KL2k/d0uANc8XqP5S64YcNFCudR3F5AaKO39XWdUtlJIjT9Ni79ekWJ6Kj5xvAw87udkOMEPcVf9xEge2+ahew==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.0.3.tgz", + "integrity": "sha512-DReKamrLBJOzld73dmmxV2H137QKJfsxszAczEZXeAJQ/Po6bzQacKajPdodA6T1jfmP9+waImus+d/R2j+R7Q==", "dev": true, "dependencies": { - "@octokit/types": "^11.0.0", + "@octokit/types": "^12.6.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "^5.0.0" + "@octokit/core": "^6.0.0" } }, "node_modules/@octokit/request": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz", - "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.0.1.tgz", + "integrity": "sha512-kL+cAcbSl3dctYLuJmLfx6Iku2MXXy0jszhaEIjQNaCp4zjHXrhVAHeuaRdNvJjW9qjl3u1MJ72+OuBP0YW/pg==", "dev": true, "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.1.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^10.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz", - "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.0.2.tgz", + "integrity": "sha512-WtRVpoHcNXs84+s9s/wqfHaxM68NGMg8Av7h59B50OVO0PwwMx+2GgQ/OliUd0iQBSNWgR6N8afi/KjSHbXHWw==", "dev": true, "dependencies": { - "@octokit/types": "^11.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^12.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/types": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz", - "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==", + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" } }, "node_modules/@pkgr/core": { @@ -1069,9 +1168,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", - "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.2.tgz", + "integrity": "sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==", "cpu": [ "arm" ], @@ -1081,9 +1180,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", - "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.2.tgz", + "integrity": "sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==", "cpu": [ "arm64" ], @@ -1093,9 +1192,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", - "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.2.tgz", + "integrity": "sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==", "cpu": [ "arm64" ], @@ -1105,9 +1204,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", - "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.2.tgz", + "integrity": "sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==", "cpu": [ "x64" ], @@ -1117,9 +1216,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", - "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.2.tgz", + "integrity": "sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==", "cpu": [ "arm" ], @@ -1129,9 +1228,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", - "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.2.tgz", + "integrity": "sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==", "cpu": [ "arm64" ], @@ -1141,9 +1240,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", - "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.2.tgz", + "integrity": "sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==", "cpu": [ "arm64" ], @@ -1152,10 +1251,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.13.2.tgz", + "integrity": "sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==", + "cpu": [ + "ppc64le" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", - "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.2.tgz", + "integrity": "sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==", "cpu": [ "riscv64" ], @@ -1164,10 +1275,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.13.2.tgz", + "integrity": "sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", - "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.2.tgz", + "integrity": "sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==", "cpu": [ "x64" ], @@ -1177,9 +1300,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", - "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.2.tgz", + "integrity": "sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==", "cpu": [ "x64" ], @@ -1189,9 +1312,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", - "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.2.tgz", + "integrity": "sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==", "cpu": [ "arm64" ], @@ -1201,9 +1324,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", - "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.2.tgz", + "integrity": "sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==", "cpu": [ "ia32" ], @@ -1213,9 +1336,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", - "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.2.tgz", + "integrity": "sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==", "cpu": [ "x64" ], @@ -1243,9 +1366,9 @@ } }, "node_modules/@semantic-release/commit-analyzer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", - "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz", + "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==", "dev": true, "dependencies": { "conventional-changelog-angular": "^7.0.0", @@ -1257,7 +1380,7 @@ "micromatch": "^4.0.2" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -1315,30 +1438,30 @@ } }, "node_modules/@semantic-release/github": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.0.4.tgz", - "integrity": "sha512-kQCGFAsBErvCR6hzNuzu63cj4erQN2krm9zQlg8vl4j5X0mL0d/Ras0wmL5Gkr1TuSS2lweME7M4J5zvtDDDSA==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.0.2.tgz", + "integrity": "sha512-SP5ihhv/uQa8vPuWKmbJrrzfv8lRUkDFC6qwgaWoorrflN1DEW0IGCa9w/PxUp8Ad3dbvXZPmpXdGiP3eyTzhg==", "dev": true, "dependencies": { - "@octokit/core": "^5.0.0", - "@octokit/plugin-paginate-rest": "^8.0.0", - "@octokit/plugin-retry": "^6.0.0", - "@octokit/plugin-throttling": "^7.0.0", + "@octokit/core": "^6.0.0", + "@octokit/plugin-paginate-rest": "^10.0.0", + "@octokit/plugin-retry": "^7.0.0", + "@octokit/plugin-throttling": "^9.0.0", "@semantic-release/error": "^4.0.0", - "aggregate-error": "^4.0.1", + "aggregate-error": "^5.0.0", "debug": "^4.3.4", "dir-glob": "^3.0.1", - "globby": "^13.1.4", + "globby": "^14.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", + "issue-parser": "^7.0.0", "lodash-es": "^4.17.21", - "mime": "^3.0.0", - "p-filter": "^3.0.0", + "mime": "^4.0.0", + "p-filter": "^4.0.0", "url-join": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -1354,31 +1477,31 @@ } }, "node_modules/@semantic-release/github/node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "dependencies": { - "clean-stack": "^4.0.0", + "clean-stack": "^5.2.0", "indent-string": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/github/node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, "dependencies": { "escape-string-regexp": "5.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1397,19 +1520,20 @@ } }, "node_modules/@semantic-release/github/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", + "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1427,10 +1551,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/github/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/@semantic-release/github/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, "engines": { "node": ">=12" @@ -1439,10 +1563,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/github/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/npm": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.1.tgz", - "integrity": "sha512-nFcT0pgVwpXsPkzjqP3ObH+pILeN1AbYscCDuYwgZEPZukL+RsGhrtdT4HA1Gjb/y1bVbE90JNtMIcgRi5z/Fg==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.0.tgz", + "integrity": "sha512-72TVYQCH9NvVsO/y13eF8vE4bNnfls518+4KcFwJUKi7AtA/ZXoNgSg9gTTfw5eMZMkiH0izUrpGXgZE/cSQhA==", "dev": true, "dependencies": { "@semantic-release/error": "^4.0.0", @@ -1452,7 +1588,7 @@ "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.0.0", + "npm": "^10.5.0", "rc": "^1.2.8", "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", @@ -1460,7 +1596,7 @@ "tempy": "^3.0.0" }, "engines": { - "node": "^18.17 || >=20" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -1599,9 +1735,9 @@ } }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -1665,9 +1801,9 @@ } }, "node_modules/@semantic-release/release-notes-generator": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", - "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz", + "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==", "dev": true, "dependencies": { "conventional-changelog-angular": "^7.0.0", @@ -1682,7 +1818,7 @@ "read-pkg-up": "^11.0.0" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -1712,14 +1848,26 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@swc/core": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.96.tgz", - "integrity": "sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.1.tgz", + "integrity": "sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "@swc/counter": "^0.1.1", + "@swc/counter": "^0.1.2", "@swc/types": "^0.1.5" }, "engines": { @@ -1730,16 +1878,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.96", - "@swc/core-darwin-x64": "1.3.96", - "@swc/core-linux-arm-gnueabihf": "1.3.96", - "@swc/core-linux-arm64-gnu": "1.3.96", - "@swc/core-linux-arm64-musl": "1.3.96", - "@swc/core-linux-x64-gnu": "1.3.96", - "@swc/core-linux-x64-musl": "1.3.96", - "@swc/core-win32-arm64-msvc": "1.3.96", - "@swc/core-win32-ia32-msvc": "1.3.96", - "@swc/core-win32-x64-msvc": "1.3.96" + "@swc/core-darwin-arm64": "1.4.1", + "@swc/core-darwin-x64": "1.4.1", + "@swc/core-linux-arm-gnueabihf": "1.4.1", + "@swc/core-linux-arm64-gnu": "1.4.1", + "@swc/core-linux-arm64-musl": "1.4.1", + "@swc/core-linux-x64-gnu": "1.4.1", + "@swc/core-linux-x64-musl": "1.4.1", + "@swc/core-win32-arm64-msvc": "1.4.1", + "@swc/core-win32-ia32-msvc": "1.4.1", + "@swc/core-win32-x64-msvc": "1.4.1" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -1751,9 +1899,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.96.tgz", - "integrity": "sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.1.tgz", + "integrity": "sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA==", "cpu": [ "arm64" ], @@ -1767,9 +1915,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.96.tgz", - "integrity": "sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.1.tgz", + "integrity": "sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA==", "cpu": [ "x64" ], @@ -1783,9 +1931,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.96.tgz", - "integrity": "sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.1.tgz", + "integrity": "sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ==", "cpu": [ "arm" ], @@ -1799,9 +1947,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.96.tgz", - "integrity": "sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.1.tgz", + "integrity": "sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw==", "cpu": [ "arm64" ], @@ -1815,9 +1963,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.96.tgz", - "integrity": "sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.1.tgz", + "integrity": "sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA==", "cpu": [ "arm64" ], @@ -1831,9 +1979,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.96.tgz", - "integrity": "sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.1.tgz", + "integrity": "sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ==", "cpu": [ "x64" ], @@ -1847,9 +1995,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.96.tgz", - "integrity": "sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.1.tgz", + "integrity": "sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg==", "cpu": [ "x64" ], @@ -1863,9 +2011,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.96.tgz", - "integrity": "sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.1.tgz", + "integrity": "sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA==", "cpu": [ "arm64" ], @@ -1879,9 +2027,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.96.tgz", - "integrity": "sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.1.tgz", + "integrity": "sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA==", "cpu": [ "ia32" ], @@ -1895,9 +2043,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.96.tgz", - "integrity": "sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.1.tgz", + "integrity": "sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw==", "cpu": [ "x64" ], @@ -1923,20 +2071,20 @@ "dev": true }, "node_modules/@tanstack/query-core": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.18.0.tgz", - "integrity": "sha512-8c6nxeAnGHxIDZIyDmHdmgFt4D+LprAQaJmjsnM4szcIjsWOyFlzxdqQUuQ/XuQRvUgqYaqlJTtDADlSS7pTPQ==", + "version": "5.28.9", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.28.9.tgz", + "integrity": "sha512-hNlfCiqZevr3GRVPXS3MhaGW5hjcxvCsIQ4q6ff7EPlvFwYZaS+0d9EIIgofnegDaU2BbCDlyURoYfRl5rmzow==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.18.0.tgz", - "integrity": "sha512-7FKxNfxxKEL7n3ADpwp81Fy4FX85hNkYVzQQVQsF0JAPl93c3d1gmNZMIbEtOqgYfom1/ontGh3FiZGYj3xyWA==", + "version": "5.28.9", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.28.9.tgz", + "integrity": "sha512-vwifBkGXsydsLxFOBMe3+f8kvtDoqDRDwUNjPHVDDt+FoBetCbOWAUHgZn4k+CVeZgLmy7bx6aKeDbe3e8koOQ==", "dependencies": { - "@tanstack/query-core": "5.18.0" + "@tanstack/query-core": "5.28.9" }, "funding": { "type": "github", @@ -1998,9 +2146,9 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.260", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.260.tgz", - "integrity": "sha512-lX6QpgfsZRTDpNcCJ+3vzfFnFXq9bScFRTlfhbK5oecSAjamsno+ejFTCbNtc5O/TPnVK9Tja/PyecvWQe0F2w==", + "version": "0.0.266", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.266.tgz", + "integrity": "sha512-QSQWJTL7NjZElvq/6/E5C1+pHgEP8UAJzwoz7M4vSJ7AECt6NNehJ+tU6snnvuTqZOBjFCivvitYo5+8tNPmhg==", "dev": true, "dependencies": { "@types/filesystem": "*", @@ -2046,9 +2194,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", - "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "devOptional": true, "dependencies": { "undici-types": "~5.26.4" @@ -2067,20 +2215,19 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz", - "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==", + "version": "18.2.78", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.78.tgz", + "integrity": "sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==", "dev": true, "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", - "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "version": "18.2.24", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.24.tgz", + "integrity": "sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==", "dev": true, "dependencies": { "@types/react": "*" @@ -2095,12 +2242,6 @@ "@types/node": "*" } }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, "node_modules/@types/semver": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz", @@ -2120,16 +2261,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.0.tgz", + "integrity": "sha512-M72SJ0DkcQVmmsbqlzc6EJgb/3Oz2Wdm6AyESB4YkGgCxP8u5jt5jn4/OBMPK3HLOxcttZq5xbBBU7e2By4SZQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "7.0.0", + "@typescript-eslint/type-utils": "7.0.0", + "@typescript-eslint/utils": "7.0.0", + "@typescript-eslint/visitor-keys": "7.0.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -2146,7 +2287,7 @@ }, "peerDependencies": { "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2155,13 +2296,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.0.0.tgz", + "integrity": "sha512-IxTStwhNDPO07CCrYuAqjuJ3Xf5MrMaNgbAZPxFXAUpAtwqFxiuItxUaVtP/SJQeCdJjwDGh9/lMOluAndkKeg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "7.0.0", + "@typescript-eslint/visitor-keys": "7.0.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2172,9 +2313,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.0.0.tgz", + "integrity": "sha512-9ZIJDqagK1TTs4W9IyeB2sH/s1fFhN9958ycW8NRTg1vXGzzH5PQNzq6KbsbVGMT+oyyfa17DfchHDidcmf5cg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2184,14 +2325,20 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.0.tgz", + "integrity": "sha512-JzsOzhJJm74aQ3c9um/aDryHgSHfaX8SHFIu9x4Gpik/+qxLvxUylhTsO9abcNu39JIdhY2LgYrFxTii3IajLA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.0.0", + "@typescript-eslint/visitor-keys": "7.0.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2199,10 +2346,81 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.18.1", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.0.0.tgz", + "integrity": "sha512-kuPZcPAdGcDBAyqDn/JVeJVhySvpkxzfXjJq1X1BFSTYo1TTuo4iyb937u457q4K0In84p6u2VHQGaFnv7VYqg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.0.0", + "@typescript-eslint/types": "7.0.0", + "@typescript-eslint/typescript-estree": "7.0.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.0.tgz", + "integrity": "sha512-JZP0uw59PRHp7sHQl3aF/lFgwOW2rgNVnXUksj1d932PMita9wFBd3621vHQRDvHwPsSY9FMAAHVc8gTvLYY4w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.0.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.18.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.18.1.tgz", "integrity": "sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==", "dev": true, @@ -2247,13 +2465,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.0.0.tgz", + "integrity": "sha512-FIM8HPxj1P2G7qfrpiXvbHeHypgo2mFpFGoh5I73ZlqmJOsloSa1x0ZyXCer43++P1doxCgNqIOLqmZR6SOT8g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/typescript-estree": "7.0.0", + "@typescript-eslint/utils": "7.0.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -2265,7 +2483,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2273,10 +2491,27 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.0.0.tgz", + "integrity": "sha512-IxTStwhNDPO07CCrYuAqjuJ3Xf5MrMaNgbAZPxFXAUpAtwqFxiuItxUaVtP/SJQeCdJjwDGh9/lMOluAndkKeg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.0.0", + "@typescript-eslint/visitor-keys": "7.0.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.0.0.tgz", + "integrity": "sha512-9ZIJDqagK1TTs4W9IyeB2sH/s1fFhN9958ycW8NRTg1vXGzzH5PQNzq6KbsbVGMT+oyyfa17DfchHDidcmf5cg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2287,13 +2522,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.0.tgz", + "integrity": "sha512-JzsOzhJJm74aQ3c9um/aDryHgSHfaX8SHFIu9x4Gpik/+qxLvxUylhTsO9abcNu39JIdhY2LgYrFxTii3IajLA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "7.0.0", + "@typescript-eslint/visitor-keys": "7.0.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2314,13 +2549,38 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.0.0.tgz", + "integrity": "sha512-kuPZcPAdGcDBAyqDn/JVeJVhySvpkxzfXjJq1X1BFSTYo1TTuo4iyb937u457q4K0In84p6u2VHQGaFnv7VYqg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.0.0", + "@typescript-eslint/types": "7.0.0", + "@typescript-eslint/typescript-estree": "7.0.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.0.tgz", + "integrity": "sha512-JZP0uw59PRHp7sHQl3aF/lFgwOW2rgNVnXUksj1d932PMita9wFBd3621vHQRDvHwPsSY9FMAAHVc8gTvLYY4w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/types": "7.0.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2568,12 +2828,12 @@ "dev": true }, "node_modules/@vitejs/plugin-react-swc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.5.0.tgz", - "integrity": "sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", + "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", "dev": true, "dependencies": { - "@swc/core": "^1.3.96" + "@swc/core": "^1.3.107" }, "peerDependencies": { "vite": "^4 || ^5" @@ -2585,6 +2845,18 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/acorn": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", @@ -2727,38 +2999,39 @@ } }, "node_modules/archiver": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz", - "integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", "dev": true, "dependencies": { - "archiver-utils": "^4.0.1", + "archiver-utils": "^5.0.2", "async": "^3.2.4", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", "readdir-glob": "^1.1.2", "tar-stream": "^3.0.0", - "zip-stream": "^5.0.1" + "zip-stream": "^6.0.1" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14" } }, "node_modules/archiver-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz", - "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", "dev": true, "dependencies": { - "glob": "^8.0.0", + "glob": "^10.0.0", "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", "lazystream": "^1.0.0", "lodash": "^4.17.15", "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "readable-stream": "^4.0.0" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14" } }, "node_modules/archiver-utils/node_modules/brace-expansion": { @@ -2771,62 +3044,130 @@ } }, "node_modules/archiver-utils/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/archiver-utils/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/archiver/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/archiver/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/arg": { @@ -2857,13 +3198,16 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2903,6 +3247,25 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", + "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.findlastindex": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", @@ -2958,31 +3321,44 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -3004,19 +3380,10 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, "node_modules/autoprefixer": { - "version": "10.4.17", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", - "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "dev": true, "funding": [ { @@ -3033,8 +3400,8 @@ } ], "dependencies": { - "browserslist": "^4.22.2", - "caniuse-lite": "^1.0.30001578", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -3051,10 +3418,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3092,10 +3462,30 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", "dev": true }, "node_modules/binary-extensions": { @@ -3136,9 +3526,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", - "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -3155,8 +3545,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -3167,24 +3557,53 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", "dev": true, "engines": { - "node": "*" + "node": ">=8.0.0" } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3209,9 +3628,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001581", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", - "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", + "version": "1.0.30001600", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", + "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", "dev": true, "funding": [ { @@ -3427,32 +3846,64 @@ } }, "node_modules/compress-commons": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz", - "integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", "dev": true, "dependencies": { "crc-32": "^1.2.0", - "crc32-stream": "^5.0.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "readable-stream": "^4.0.0" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14" } }, "node_modules/compress-commons/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/compress-commons/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/compress-commons/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/concat-map": { @@ -3572,6 +4023,18 @@ "node": ">=16" } }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -3617,30 +4080,61 @@ } }, "node_modules/crc32-stream": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz", - "integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", "dev": true, "dependencies": { "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" + "readable-stream": "^4.0.0" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14" } }, "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/crc32-stream/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/crc32-stream/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/create-require": { @@ -3714,6 +4208,57 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -3763,17 +4308,20 @@ "dev": true }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -3793,12 +4341,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -3866,14 +4408,14 @@ } }, "node_modules/dotenv": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.1.tgz", - "integrity": "sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" } }, "node_modules/duplexer2": { @@ -3885,10 +4427,16 @@ "readable-stream": "^2.0.2" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/electron-to-chromium": { - "version": "1.4.648", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz", - "integrity": "sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg==", + "version": "1.4.699", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", + "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==", "dev": true }, "node_modules/emoji-regex": { @@ -4069,50 +4617,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", + "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -4121,49 +4676,85 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", + "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", "dev": true, "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -4184,9 +4775,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -4195,29 +4786,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/escalade": { @@ -4242,16 +4833,16 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -4459,9 +5050,9 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.5.0.tgz", - "integrity": "sha512-F6XXcq4mKKUe/SREoMGQqzgw6cgCgf3pFzkFfQVIGtqD1yXVpQjnhTepzhBeZfxZwgMzR9HO4yH4CUhIQ2WBcQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.9.0.tgz", + "integrity": "sha512-ipFtDrqtF99qVVo+FE1fo6aHyLLp7hg6PNGfzY5KxQjcl0XCbyEFvjtR1NfkHDTN9rdFeEDxg59LLOv3VOAHAw==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^6.13.0", @@ -4557,27 +5148,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.17", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.10" }, "engines": { "node": ">=4" @@ -4611,12 +5204,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4637,9 +5230,9 @@ } }, "node_modules/eslint-plugin-tailwindcss": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.14.2.tgz", - "integrity": "sha512-fNzdf4poZP2yQC0xC2prQxMuArMSb5mnellLQvwb9HC3NcLzxs+0IVKWIg1BqUqyui0c+bbjMmhWcKUWK67SLQ==", + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.14.3.tgz", + "integrity": "sha512-1MKT8CrVuqVJleHxb7ICHsF2QwO0G+VJ28athTtlcOkccp0qmwK7nCUa1C9paCZ+VVgQU4fonsjLz/wUxoMHJQ==", "dev": true, "dependencies": { "fast-glob": "^3.2.5", @@ -4739,6 +5332,24 @@ "node": ">=0.10.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -4781,9 +5392,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -4897,15 +5508,16 @@ } }, "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "dev": true, "dependencies": { - "semver-regex": "^4.0.5" + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4939,6 +5551,34 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -5004,6 +5644,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function-timeout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.1.tgz", + "integrity": "sha512-6yPMImFFuaMPNaTMTBuolA8EanHJWF5Vju0NHpObRURT105J6x1Mf2a7J4P7Sqk2xDxv24N5L0RatEhTBhNmdA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/function.prototype.name": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", @@ -5047,16 +5699,20 @@ "dev": true }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5080,13 +5736,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -5245,18 +5902,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -5276,21 +5921,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -5312,12 +5957,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -5327,9 +5972,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { "function-bind": "^1.1.2" @@ -5384,9 +6029,9 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "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, "dependencies": { "agent-base": "^7.1.0", @@ -5397,9 +6042,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", - "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -5419,9 +6064,9 @@ } }, "node_modules/i18next": { - "version": "23.7.7", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.7.tgz", - "integrity": "sha512-peTvdT+Lma+o0LfLFD7IC2M37N9DJ04dH0IJYOyOHRhDfLo6nK36v7LkrQH35C2l8NHiiXZqGirhKESlEb/5PA==", + "version": "23.11.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.2.tgz", + "integrity": "sha512-qMBm7+qT8jdpmmDw/kQD16VpmkL9BdL+XNAK5MNbNFaf1iQQq35ZbPrSlqmnNPOSUY4m342+c0t0evinF5l7sA==", "funding": [ { "type": "individual", @@ -5440,6 +6085,26 @@ "@babel/runtime": "^7.23.2" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -5547,13 +6212,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -5577,14 +6242,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5675,6 +6342,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -5757,9 +6439,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -5810,15 +6492,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -5857,12 +6530,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5923,12 +6599,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -6008,9 +6684,9 @@ "dev": true }, "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.0.tgz", + "integrity": "sha512-jgAw78HO3gs9UrKqJNQvfDj9Ouy8Mhu40fbEJ8yXff4MW8+/Fcn9iFjyWUQ6SKbX8ipPk3X5A3AyfYHRu6uVLw==", "dev": true, "dependencies": { "lodash.capitalize": "^4.2.1", @@ -6020,7 +6696,7 @@ "lodash.uniqby": "^4.7.0" }, "engines": { - "node": ">=10.13" + "node": "^18.17 || >=20.6.1" } }, "node_modules/iterator.prototype": { @@ -6036,6 +6712,24 @@ "set-function-name": "^2.0.1" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -6437,15 +7131,18 @@ } }, "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", + "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], "bin": { - "mime": "cli.js" + "mime": "bin/cli.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=16" } }, "node_modules/mimic-fn": { @@ -6478,10 +7175,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/monaco-editor": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.45.0.tgz", - "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==" + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.47.0.tgz", + "integrity": "sha512-VabVvHvQ9QmMwXu4du008ZDuyLnHs9j7ThVFsiJoXSOQk18+LF89N4ADzPbFenm0W4V2bGHnFBztIRQTgBfxzw==" }, "node_modules/ms": { "version": "2.1.2", @@ -6563,9 +7269,9 @@ "dev": true }, "node_modules/nodemon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", - "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", "dev": true, "dependencies": { "chokidar": "^3.5.2", @@ -6660,9 +7366,9 @@ } }, "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, "engines": { "node": ">=14.16" @@ -6672,9 +7378,9 @@ } }, "node_modules/npm": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.3.tgz", - "integrity": "sha512-GbUui/rHTl0mW8HhJSn4A0Xg89yCR3I9otgJT1i0z1QBPOVlgbh6rlcUTpHT8Gut9O1SJjWRUU0nEcAymhG2tQ==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.0.tgz", + "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -6738,7 +7444,6 @@ "semver", "spdx-expression-parse", "ssri", - "strip-ansi", "supports-color", "tar", "text-table", @@ -6752,18 +7457,18 @@ "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/arborist": "^7.2.1", - "@npmcli/config": "^8.0.1", + "@npmcli/config": "^8.0.2", "@npmcli/fs": "^3.1.0", "@npmcli/map-workspaces": "^3.0.4", "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.2", - "@sigstore/tuf": "^2.1.0", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.1", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.0", + "cacache": "^18.0.2", "chalk": "^5.3.0", - "ci-info": "^3.9.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", "cli-table3": "^0.6.3", "columnify": "^1.6.0", @@ -6774,16 +7479,16 @@ "hosted-git-info": "^7.0.1", "ini": "^4.1.1", "init-package-json": "^6.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", "libnpmaccess": "^8.0.1", "libnpmdiff": "^6.0.3", - "libnpmexec": "^7.0.3", + "libnpmexec": "^7.0.4", "libnpmfund": "^5.0.1", "libnpmhook": "^10.0.0", "libnpmorg": "^6.0.1", "libnpmpack": "^6.0.3", - "libnpmpublish": "^9.0.1", + "libnpmpublish": "^9.0.2", "libnpmsearch": "^7.0.0", "libnpmteam": "^6.0.0", "libnpmversion": "^5.0.1", @@ -6804,15 +7509,14 @@ "npm-user-validate": "^2.0.0", "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.4", + "pacote": "^17.0.6", "parse-conflict-json": "^3.0.1", "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", "read": "^2.1.0", - "semver": "^7.5.4", + "semver": "^7.6.0", "spdx-expression-parse": "^3.0.1", "ssri": "^10.0.5", - "strip-ansi": "^6.0.1", "supports-color": "^9.4.0", "tar": "^6.2.0", "text-table": "~0.2.0", @@ -6929,92 +7633,32 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", - "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.2", + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true, "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } + "license": "ISC" }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/socks-proxy-agent": { - "version": "8.0.2", + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.1", "dev": true, "inBundle": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" }, "engines": { - "node": ">= 14" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.2.1.tgz", - "integrity": "sha512-o1QIAX56FC8HEPF+Hf4V4/hck9j0a3UiLnMX4aDHPbtU4Po1tUOUSmc2GAx947VWT+acrdMYTDkqUt2CaSXt7A==", + "version": "7.4.0", "dev": true, "inBundle": true, "license": "ISC", @@ -7027,7 +7671,7 @@ "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.1", + "@npmcli/query": "^3.1.0", "@npmcli/run-script": "^7.0.2", "bin-links": "^4.0.1", "cacache": "^18.0.0", @@ -7046,7 +7690,7 @@ "parse-conflict-json": "^3.0.0", "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", + "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "ssri": "^10.0.5", @@ -7061,15 +7705,15 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.0.1.tgz", - "integrity": "sha512-NKGmMYv/YTLwJr+qK9CvADSe82NTM9AFwFFpsZpVcPCT3XTdxvJBdXi8xvXWjHSCMb0Cb+7FtU/a5qqguCOhxA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.2.0.tgz", + "integrity": "sha512-YoEYZFg0hRSRP/Chmq+J4FvULFvji6SORUYWQc10FiJ+ReAnViXcDCENg6kM6dID04bAoKNUygrby798+gYBbQ==", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "ini": "^4.1.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", @@ -7095,6 +7739,21 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", @@ -7110,9 +7769,7 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.3.tgz", - "integrity": "sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==", + "version": "5.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -7225,9 +7882,9 @@ } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.0.tgz", - "integrity": "sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", + "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", "dev": true, "inBundle": true, "license": "ISC", @@ -7239,9 +7896,7 @@ } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.1.tgz", - "integrity": "sha512-0jE8iHBogf/+bFDj+ju6/UMLbJ39c8h6nSe6qile+dB7PJ0iV3gNqcb2vtt6WWCBrxv9uAjzUT/8vroluulidA==", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -7253,17 +7908,17 @@ } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.2.tgz", - "integrity": "sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", - "read-package-json-fast": "^3.0.0", "which": "^4.0.0" }, "engines": { @@ -7283,23 +7938,34 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.0.tgz", - "integrity": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.2.0.tgz", + "integrity": "sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1" + "@sigstore/protobuf-specs": "^0.3.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.0.0.tgz", + "integrity": "sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw==", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", - "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.0.tgz", + "integrity": "sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA==", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -7308,13 +7974,16 @@ } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.1.0", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.3.tgz", + "integrity": "sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", "make-fetch-happen": "^13.0.0" }, "engines": { @@ -7322,13 +7991,31 @@ } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.1.0", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.1.tgz", + "integrity": "sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.1.0.tgz", + "integrity": "sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg==", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.1.0" + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -7371,18 +8058,18 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "debug": "^4.3.4" }, "engines": { - "node": ">=6.5" + "node": ">= 14" } }, "node_modules/npm/node_modules/aggregate-error": { @@ -7412,17 +8099,14 @@ } }, "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -7445,16 +8129,10 @@ "license": "MIT" }, "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.1.tgz", - "integrity": "sha512-2zuA+jpOYBRgoBCfa+fB87Rk0oGJjDX6pxGzqH6f33NzUhG25Xur6R0u0Z9VVAq8Z5JvQpQI6j6rtonuivC8QA==", + "version": "4.0.2", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7467,28 +8145,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/bin-links": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.3.tgz", @@ -7528,32 +8184,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/npm/node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -7566,9 +8196,9 @@ } }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.0.tgz", - "integrity": "sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==", + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", "dev": true, "inBundle": true, "license": "ISC", @@ -7578,7 +8208,7 @@ "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -7616,9 +8246,9 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", "dev": true, "funding": [ { @@ -7633,17 +8263,17 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-3.1.1.tgz", - "integrity": "sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-4.0.3.tgz", + "integrity": "sha512-HOwDIy/rhKeMf6uOzxtv7FAbrz8zPjmVKfSpM+U7/bNBXC5rtOyr758jxcptiSx6ZZn5LOhPJT5WWxPAGDV8dw==", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/clean-stack": { @@ -7793,8 +8423,6 @@ }, "node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "inBundle": true, "license": "ISC", @@ -7843,8 +8471,6 @@ }, "node_modules/npm/node_modules/debug/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, "inBundle": true, "license": "MIT" @@ -7863,18 +8489,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -7929,28 +8545,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", @@ -8003,10 +8597,15 @@ } }, "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/npm/node_modules/gauge": { "version": "5.0.1", @@ -8061,20 +8660,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -8083,6 +8668,18 @@ "inBundle": true, "license": "ISC" }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/npm/node_modules/hosted-git-info": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", @@ -8105,47 +8702,51 @@ "inBundle": true, "license": "BSD-2-Clause" }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "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", - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/npm/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "inBundle": true, - "license": "BSD-3-Clause" + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "version": "6.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -8209,46 +8810,62 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-4.0.2.tgz", - "integrity": "sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-5.0.3.tgz", + "integrity": "sha512-lKkM0tmz07dAxNsr8Ii9MGreExa9ZR34N9j8mTG5op824kcwBqinZPowNjcVWWc7j+jR8XAMMItOmBkniN0jOA==", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^3.1.1" + "cidr-regex": "4.0.3" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.0", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8301,10 +8918,16 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "dev": true, "inBundle": true, "license": "MIT", @@ -8351,9 +8974,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-8.0.1.tgz", - "integrity": "sha512-MWbnWIfxLKol+BgC1NR1as1JwM5ufZASd6CaENJjNe4JpJ0gx71xhpYY5SvNMZnVBahocYZWP6+SPQdyD0abEQ==", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -8366,9 +8987,7 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/libnpmdiff/-/libnpmdiff-6.0.3.tgz", - "integrity": "sha512-Xy4ZFueaYb7CNMxH7i/SoQDg7VyDOESFWZp/MU3f3qtAasEWhdTYBSHmb18ehp8MxTjox7c7U6ws7l3r+LTBFA==", + "version": "6.0.7", "dev": true, "inBundle": true, "license": "ISC", @@ -8388,16 +9007,16 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-7.0.3.tgz", - "integrity": "sha512-hEVk4RHhBpvKAoDCFhq66yXFy9T4aQZ5WpvLnlaavMFKNmvD6azid/7nLQtQqnAigUyQcpKTRowoMKzNBF4Ogw==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-7.0.8.tgz", + "integrity": "sha512-xDzWoYpV1Ok0TIdrY4wuWGxriEv/O3/d8QG924yErBE0sMkkzKsin2dAmlEBsSlR7YRilObs8q+5uNtxKNQHAQ==", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/arborist": "^7.2.1", "@npmcli/run-script": "^7.0.2", - "ci-info": "^3.7.1", + "ci-info": "^4.0.0", "npm-package-arg": "^11.0.1", "npmlog": "^7.0.1", "pacote": "^17.0.4", @@ -8412,9 +9031,7 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/libnpmfund/-/libnpmfund-5.0.1.tgz", - "integrity": "sha512-4s7jdjiYE4SCf87n5UOrRlsUpF0Xw8DWtBwP53EaNQdvqR1579nOv1nwakMLmkq5HFKNOJyZcAH/rf5wVRRz5A==", + "version": "5.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -8426,9 +9043,7 @@ } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/libnpmhook/-/libnpmhook-10.0.0.tgz", - "integrity": "sha512-PdEuOC1woGbrmxsvMdZCLYFirwtroIaxCzire/h55BfnqHOC73yQylIe9V2T9/1WL6f+PXIoZETR0dhJpLLFWQ==", + "version": "10.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8441,9 +9056,7 @@ } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/libnpmorg/-/libnpmorg-6.0.1.tgz", - "integrity": "sha512-yP3Moge82n3va2Y2dm7qWqwUGp2oZr+vPCyOr+YChGQx6zMtmUYdQA3nGMyF1mWWEmx2QCzyp2N6HmdTUnvRmQ==", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -8456,9 +9069,7 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/libnpmpack/-/libnpmpack-6.0.3.tgz", - "integrity": "sha512-+XV6/KVGYJ2TvqeJfBhSJgrXWV3OiFPYCKGavNwNBFmAtRRrj7OoV6a/+C0HDo7D0PFEDktdBHW47EciUgHx+g==", + "version": "6.0.7", "dev": true, "inBundle": true, "license": "ISC", @@ -8473,20 +9084,20 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-9.0.1.tgz", - "integrity": "sha512-w5Ev46SnPaEpjfa0a5+p2vYSB19nONF/mRX8RcIRp2gpPxMWldFVZy/fXei/uflMLQq33mjKMqiVoNcz6ZJCYg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-9.0.4.tgz", + "integrity": "sha512-330o6pVsCCg77jQ/+kidyG/RiohXYQKpqmzOC4BjUDWcimb+mXptRBh1Kvy27/Zb/CStZLVrfgGc6tXf5+PE3Q==", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ci-info": "^3.6.1", + "ci-info": "^4.0.0", "normalize-package-data": "^6.0.0", "npm-package-arg": "^11.0.1", "npm-registry-fetch": "^16.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7", - "sigstore": "^2.1.0", + "sigstore": "^2.2.0", "ssri": "^10.0.5" }, "engines": { @@ -8494,9 +9105,7 @@ } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/libnpmsearch/-/libnpmsearch-7.0.0.tgz", - "integrity": "sha512-gMSev/ZYP96C/73vVJSBfc/dfK65xKHs1QS/u/0NHmos19Td+XopKaMFbY4Xkfbdsau21DRTwM5kQdjuj9DbIw==", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8508,9 +9117,7 @@ } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/libnpmteam/-/libnpmteam-6.0.0.tgz", - "integrity": "sha512-d63ahIq7cZy3ZO8hhXiIigZTjaeV5WGfz1HkTbh6IfqNYNDhGiVLKu5ehOGdUQgUHcjxkdAwUzNNjMS1VJQ/mQ==", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8523,9 +9130,7 @@ } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/libnpmversion/-/libnpmversion-5.0.1.tgz", - "integrity": "sha512-OXiju5vvL22QUBKizAyo5d+FOUkt9xN9+UOPE8alsZw+O9gLjnJrMmRW8P8uxMLS6/K415em15meVEbjG26Fzg==", + "version": "5.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -8541,9 +9146,7 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -8604,29 +9207,17 @@ } }, "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-fetch": { @@ -8949,14 +9540,12 @@ } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.0.tgz", - "integrity": "sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw==", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -9060,9 +9649,9 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.4.tgz", - "integrity": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==", + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", + "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", "dev": true, "inBundle": true, "license": "ISC", @@ -9082,7 +9671,7 @@ "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", + "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, @@ -9139,9 +9728,7 @@ } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.15", "dev": true, "inBundle": true, "license": "MIT", @@ -9164,17 +9751,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", @@ -9187,9 +9763,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", - "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -9301,24 +9875,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -9330,28 +9886,6 @@ "node": ">= 4" } }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -9362,9 +9896,9 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "inBundle": true, "license": "ISC", @@ -9380,8 +9914,6 @@ }, "node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "inBundle": true, "license": "ISC", @@ -9426,7 +9958,9 @@ } }, "node_modules/npm/node_modules/signal-exit": { - "version": "4.0.2", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "inBundle": true, "license": "ISC", @@ -9438,17 +9972,19 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.1.0.tgz", - "integrity": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.2.2.tgz", + "integrity": "sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", + "@sigstore/sign": "^2.2.3", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.1.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -9467,21 +10003,35 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 16.0.0", "npm": ">= 3.0.0" } }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -9495,9 +10045,7 @@ } }, "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", "dev": true, "inBundle": true, "license": "CC-BY-3.0" @@ -9515,9 +10063,7 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "version": "3.0.17", "dev": true, "inBundle": true, "license": "CC0-1.0" @@ -9536,17 +10082,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/npm/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -9703,9 +10238,9 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.1.0.tgz", - "integrity": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", + "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", "dev": true, "inBundle": true, "license": "MIT", @@ -9875,22 +10410,25 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "inBundle": true, "license": "MIT", @@ -9898,7 +10436,7 @@ "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { @@ -10003,13 +10541,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -10064,13 +10602,13 @@ } }, "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10147,15 +10685,15 @@ } }, "node_modules/p-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", - "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, "dependencies": { - "p-map": "^5.1.0" + "p-map": "^7.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10200,71 +10738,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", - "dev": true, - "dependencies": { - "aggregate-error": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", - "dev": true, - "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "node_modules/p-map": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.1.tgz", + "integrity": "sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==", "dev": true, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10363,6 +10843,31 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -10487,10 +10992,19 @@ "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -10508,7 +11022,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -10653,6 +11167,15 @@ "node": ">=6.0.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -10752,6 +11275,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", @@ -10764,6 +11296,14 @@ "react": "^18.2.0" } }, + "node_modules/react-icons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz", + "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -10779,6 +11319,35 @@ "pify": "^2.3.0" } }, + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", + "dev": true, + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", + "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/read-pkg": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.0.tgz", @@ -10816,9 +11385,9 @@ } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.7.1.tgz", - "integrity": "sha512-iWr8RUmzAJRfhZugX9O7nZE6pCxDU8CZ3QxsLuTnGcBLJpCaP2ll3s4eMTBoFnU/CeXY/5rfQSuAEsTGJO4y8A==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", + "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", "dev": true, "engines": { "node": ">=16" @@ -10955,14 +11524,15 @@ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -11044,9 +11614,9 @@ } }, "node_modules/rollup": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", - "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.2.tgz", + "integrity": "sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==", "dependencies": { "@types/estree": "1.0.5" }, @@ -11058,19 +11628,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.5", - "@rollup/rollup-android-arm64": "4.9.5", - "@rollup/rollup-darwin-arm64": "4.9.5", - "@rollup/rollup-darwin-x64": "4.9.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.5", - "@rollup/rollup-linux-arm64-gnu": "4.9.5", - "@rollup/rollup-linux-arm64-musl": "4.9.5", - "@rollup/rollup-linux-riscv64-gnu": "4.9.5", - "@rollup/rollup-linux-x64-gnu": "4.9.5", - "@rollup/rollup-linux-x64-musl": "4.9.5", - "@rollup/rollup-win32-arm64-msvc": "4.9.5", - "@rollup/rollup-win32-ia32-msvc": "4.9.5", - "@rollup/rollup-win32-x64-msvc": "4.9.5", + "@rollup/rollup-android-arm-eabi": "4.13.2", + "@rollup/rollup-android-arm64": "4.13.2", + "@rollup/rollup-darwin-arm64": "4.13.2", + "@rollup/rollup-darwin-x64": "4.13.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.2", + "@rollup/rollup-linux-arm64-gnu": "4.13.2", + "@rollup/rollup-linux-arm64-musl": "4.13.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.13.2", + "@rollup/rollup-linux-riscv64-gnu": "4.13.2", + "@rollup/rollup-linux-s390x-gnu": "4.13.2", + "@rollup/rollup-linux-x64-gnu": "4.13.2", + "@rollup/rollup-linux-x64-musl": "4.13.2", + "@rollup/rollup-win32-arm64-msvc": "4.13.2", + "@rollup/rollup-win32-ia32-msvc": "4.13.2", + "@rollup/rollup-win32-x64-msvc": "4.13.2", "fsevents": "~2.3.2" } }, @@ -11107,13 +11679,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -11131,15 +11703,18 @@ "dev": true }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11153,23 +11728,23 @@ } }, "node_modules/semantic-release": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.2.tgz", - "integrity": "sha512-OnVYJ6Xgzwe1x8MKswba7RU9+5djS1MWRTrTn5qsq3xZYpslroZkV9Pt0dA2YcIuieeuSZWJhn+yUWoBUHO5Fw==", + "version": "23.0.8", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.8.tgz", + "integrity": "sha512-yZkuWcTTfh5h/DrR4Q4QvJSARJdb6wjwn/sN0qKMYEkvwaVFek8YWfrgtL8oWaRdl0fLte0Y1wWMzLbwoaII1g==", "dev": true, "dependencies": { - "@semantic-release/commit-analyzer": "^11.0.0", + "@semantic-release/commit-analyzer": "^12.0.0", "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^9.0.0", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", + "@semantic-release/github": "^10.0.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^13.0.0", "aggregate-error": "^5.0.0", "cosmiconfig": "^9.0.0", "debug": "^4.0.0", "env-ci": "^11.0.0", "execa": "^8.0.0", "figures": "^6.0.0", - "find-versions": "^5.1.0", + "find-versions": "^6.0.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", "hook-std": "^3.0.0", @@ -11181,7 +11756,7 @@ "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", - "read-pkg-up": "^11.0.0", + "read-package-up": "^11.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", "semver-diff": "^4.0.0", @@ -11457,15 +12032,17 @@ } }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11675,9 +12252,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -11783,6 +12360,27 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -11790,18 +12388,19 @@ "dev": true }, "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" }, "funding": { @@ -11809,14 +12408,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11826,14 +12426,14 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11891,6 +12491,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -11963,6 +12576,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/super-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "dev": true, + "dependencies": { + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12017,12 +12646,12 @@ } }, "node_modules/tailwind-merge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.1.tgz", - "integrity": "sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.2.tgz", + "integrity": "sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.7" + "@babel/runtime": "^7.24.0" }, "funding": { "type": "github", @@ -12030,9 +12659,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", - "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -12043,7 +12672,7 @@ "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.19.1", + "jiti": "^1.21.0", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -12183,6 +12812,21 @@ "xtend": "~4.0.1" } }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12365,29 +13009,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12397,16 +13042,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12416,23 +13062,29 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -12491,6 +13143,18 @@ "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -12507,9 +13171,9 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", "dev": true }, "node_modules/universalify": { @@ -12569,6 +13233,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", @@ -12592,13 +13264,13 @@ } }, "node_modules/vite": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", - "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", + "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -12646,9 +13318,9 @@ } }, "node_modules/vite-plugin-css-injected-by-js": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.4.0.tgz", - "integrity": "sha512-wS5+UYtJXQ/vNornsqTQxOLBVO/UjXU54ZsYMeX0mj2OrbStMQ4GLgvneVDQGPwyGJcm/ntBPawc2lA7xx+Lpg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.5.0.tgz", + "integrity": "sha512-d0QaHH9kS93J25SwRqJNEfE29PSuQS5jn51y9N9i2Yoq0FRO7rjuTeLvjM5zwklZlRrIn6SUdtOEDKyHokgJZg==", "peerDependencies": { "vite": ">2.0.0-0" } @@ -12731,16 +13403,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12772,6 +13444,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -12869,31 +13559,62 @@ } }, "node_modules/zip-stream": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz", - "integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", "dev": true, "dependencies": { - "archiver-utils": "^4.0.1", - "compress-commons": "^5.0.1", - "readable-stream": "^3.6.0" + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14" } }, "node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/zip-stream/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/zip-stream/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/zod": { diff --git a/package.json b/package.json index ceea0018..62dc150c 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,12 @@ "@tanstack/react-query": "^5.18.0", "dotenv": "^16.3.1", "i18next": "^23.7.3", - "monaco-editor": "^0.45.0", + "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" }, @@ -38,16 +41,16 @@ "@thedutchcoder/postcss-rem-to-px": "^0.0.2", "@total-typescript/ts-reset": "^0.5.1", "@types/archiver": "^6.0.1", - "@types/chrome": "^0.0.260", + "@types/chrome": "^0.0.266", "@types/node": "^20.9.0", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", "@types/webextension-polyfill": "^0.10.6", "@types/youtube-player": "^5.5.10", - "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^6.10.0", "@vitejs/plugin-react-swc": "^3.4.1", - "archiver": "^6.0.1", + "archiver": "^7.0.1", "autoprefixer": "^10.4.16", "clsx": "^2.0.0", "concurrently": "^8.2.2", @@ -77,4 +80,4 @@ "zod": "^3.22.4", "zod-error": "^1.5.0" } -} \ No newline at end of file +} diff --git a/postcss.config.cjs b/postcss.config.cjs index aae0c6e6..a291f2f4 100644 --- a/postcss.config.cjs +++ b/postcss.config.cjs @@ -1,6 +1,8 @@ +/* eslint-disable perfectionist/sort-objects */ module.exports = { plugins: { "@thedutchcoder/postcss-rem-to-px": {}, + "tailwindcss/nesting": {}, autoprefixer: {}, tailwindcss: {} } diff --git a/public/contentStyle.css b/public/contentStyle.css index ba0f4d38..a4f5e061 100644 --- a/public/contentStyle.css +++ b/public/contentStyle.css @@ -67,4 +67,4 @@ body.no-scroll .yte-button-tooltip { .yte-hide-shorts { display: none !important; -} \ No newline at end of file +} diff --git a/public/locales/ca-ES.json b/public/locales/ca-ES.json index 98bab5b4..dfa29b72 100644 --- a/public/locales/ca-ES.json +++ b/public/locales/ca-ES.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot copied to clipboard", - "label": "Screenshot" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot copied to clipboard" }, "videoHistory": { "resumeButton": "Resume", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirm setting reset", "value": "Confirm" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Resets all settings to their defaults, Click the confirm button to save the changes", "value": "Reset" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Remaining time", "title": "Shows the remaining time of the video you're watching" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Miscellaneous settings" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Forced playback speed", "title": "Sets the video speed to what you choose below" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Player speed", "title": "The speed to set the video to" @@ -390,6 +433,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 color", + "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 color", + "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 8d54ca80..2407ac6b 100644 --- a/public/locales/cs-CZ.json +++ b/public/locales/cs-CZ.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot copied to clipboard", - "label": "Screenshot" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot copied to clipboard" }, "videoHistory": { "resumeButton": "Resume", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirm setting reset", "value": "Confirm" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Resets all settings to their defaults, Click the confirm button to save the changes", "value": "Reset" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Remaining time", "title": "Shows the remaining time of the video you're watching" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Miscellaneous settings" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Forced playback speed", "title": "Sets the video speed to what you choose below" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Player speed", "title": "The speed to set the video to" @@ -390,6 +433,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 color", + "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 color", + "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 05f53cbb..5d80b262 100644 --- a/public/locales/de-DE.json +++ b/public/locales/de-DE.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Funktions-Menü" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Dauerschleife", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Vergrößern", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot in Zwischenablage kopiert", - "label": "Bildschirmfoto" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot in Zwischenablage kopiert" }, "videoHistory": { "resumeButton": "Fortsetzen", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Lautsärke Verstärkung", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Einstellungen zurücksetzen", "value": "Bestätigen" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Setzt alle Einstellungen auf ihre Standardwerte zurück. Klicken Sie auf die Bestätigungs-Schaltfläche, um die Änderungen zu speichern", "value": "Zurücksetzen" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Verbleibende Zeit", "title": "Zeigt die verbleibende Zeit des Videos, das du siehst" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Weitere Einstellungen" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Erzwungene Wiedergabegeschwindigkeit", "title": "Setzt die Videogeschwindigkeit auf das, was du unten wählst" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Video Geschwindigkeit", "title": "Die Geschwindigkeit auf die das Video gestellt wird" @@ -390,6 +433,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 color", + "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 color", + "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-GB.json b/public/locales/en-GB.json new file mode 100644 index 00000000..16aac3d0 --- /dev/null +++ b/public/locales/en-GB.json @@ -0,0 +1,482 @@ +{ + "langCode": "en-UK", + "langName": "English (UK)", + "messages": { + "resumingVideo": "Resuming video at {{VIDEO_TIME}}", + "settingVolume": "Setting volume boost to {{VOLUME_BOOST_AMOUNT}}" + }, + "pages": { + "content": { + "features": { + "featureMenu": { + "button": { + "label": "Feature menu" + } + }, + "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" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } + }, + "screenshotButton": { + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot copied to clipboard" + }, + "videoHistory": { + "resumeButton": "Resume", + "resumePrompt": { + "close": "Close" + } + }, + "volumeBoostButton": { + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } + } + } + } + }, + "options": { + "notifications": { + "error": { + "scrollWheelHoldModifierKey": { + "sameKey": { + "speedControl": "The scroll wheel speed control modifier key cannot be the same as the scroll wheel volume control modifier key.", + "volumeControl": "The scroll wheel volume control modifier key cannot be the same as the scroll wheel speed control modifier key." + } + } + }, + "info": { + "reset": "All options have been reset to their default values.\nYou can now save the changes by clicking the \"Confirm\" button or discard them by closing this page or ignore this notification." + }, + "success": { + "saved": "Options saved." + } + } + } + }, + "settings": { + "clearData": { + "allDataDeleted": "All data has been deleted.", + "confirmAlert": "This will delete all extension data related to options. Continue?" + }, + "sections": { + "automaticQuality": { + "enable": { + "label": "Automatic quality adjustment", + "title": "Automatically adjusts the video quality to the selected level." + }, + "select": { + "label": "Player quality", + "title": "The quality to set the video to" + }, + "title": "Automatic quality settings" + }, + "bottomButtons": { + "clear": { + "title": "Clears all data this extension has stored on your machine", + "value": "Clear Data" + }, + "confirm": { + "title": "Confirm setting reset", + "value": "Confirm" + }, + "openTab": { + "title": "Open extension settings in a new tab" + }, + "reset": { + "title": "Resets all settings to their defaults, Click the confirm button to save the changes", + "value": "Reset" + } + }, + "buttonPlacement": { + "select": { + "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", + "loopButton": "Loop button", + "maximizePlayerButton": "Maximize button", + "openTranscriptButton": "Open Transcript button", + "screenshotButton": "Screenshot button", + "volumeBoostButton": "Volume Boost button" + }, + "options": { + "below_player": { + "placement": "below the player controls", + "value": "Below Player" + }, + "feature_menu": { + "placement": "in the feature menu", + "value": "Feature Menu" + }, + "player_controls_left": { + "placement": "on the left side of player controls", + "value": "Left Controls" + }, + "player_controls_right": { + "placement": "on the right side of player controls", + "value": "Right Controls" + } + }, + "title": "Place the {{BUTTON_NAME}} {{PLACEMENT}}" + }, + "title": "Button Placement Settings" + }, + "customCSS": { + "editor": { + "collapse": "Collapse Editor", + "expand": "Expand Editor", + "noProblems": "No problems found." + }, + "enable": { + "label": "Enable custom CSS", + "title": "Enables custom CSS to be applied to the page" + }, + "title": "Custom CSS Settings" + }, + "featureMenu": { + "openType": { + "select": { + "label": "Menu Activation Type", + "options": { + "click": "Click", + "hover": "Hover" + }, + "title": "Select the method to activate the feature menu" + }, + "title": "Feature menu settings" + } + }, + "importExportSettings": { + "exportButton": { + "success": "Settings successfully exported", + "title": "Export settings to a JSON file", + "value": "Export Settings" + }, + "importButton": { + "error": { + "unknown": "Error importing settings. Please check the file format.\nAn unknown error occurred.", + "validation": "Error importing settings. Please check the file format.\n{{ERROR_MESSAGE}}" + }, + "success": "Settings imported successfully", + "title": "Import settings from a JSON file", + "value": "Import Settings" + } + }, + "language": { + "select": { + "label": "Language", + "title": "The language to use for the extension" + }, + "title": "Language" + }, + "miscellaneous": { + "features": { + "automaticTheaterMode": { + "label": "Automatic theatre mode", + "title": "Automatically enables theatre mode when you load a video" + }, + "hideScrollbar": { + "label": "Hide scrollbar", + "title": "Hides the pages scrollbar" + }, + "hideShorts": { + "label": "Hide shorts", + "title": "Hides all shorts" + }, + "loopButton": { + "label": "Loop button", + "title": "Adds a button to the feature menu to loop the video you're watching" + }, + "maximizePlayerButton": { + "label": "Maximize player button", + "title": "Adds a button to the feature menu to maximize the player" + }, + "openTranscriptButton": { + "label": "Open transcript button", + "title": "Adds a button to the feature menu to open the transcript of the video you're watching" + }, + "openYouTubeSettingsOnHover": { + "label": "Open YouTube settings on hover", + "title": "Opens the YouTube settings menu when you hover over the settings button" + }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, + "remainingTime": { + "label": "Remaining time", + "title": "Shows the remaining time of the video you're watching" + }, + "rememberLastVolume": { + "label": "Remember last volume", + "title": "Remembers the volume of the last video you were watching and sets it when you open a new video" + }, + "removeRedirect": { + "label": "Remove YouTube /redirect URLs", + "title": "Replaces YouTube redirect by actual URLs, skipping redirect warning dialogue" + }, + "shareShortener": { + "label": "Shorten YouTube video share link", + "title": "Shortens YouTube video share link (youtu.be) by stripping si/feature parameters from it" + }, + "shortsAutoScroll": { + "label": "Shorts auto scroll", + "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" + } + }, + "title": "Miscellaneous settings" + }, + "onScreenDisplaySettings": { + "color": { + "label": "Colour", + "options": { + "blue": "Blue", + "green": "Green", + "orange": "Orange", + "pink": "Pink", + "purple": "Purple", + "red": "Red", + "white": "White", + "yellow": "Yellow" + }, + "title": "Select the colour for the On-Screen Display" + }, + "hide": { + "label": "Hide Delay", + "title": "Specify the time, in milliseconds, before automatically hiding the On-Screen Display" + }, + "opacity": { + "label": "Opacity", + "title": "Adjust the transparency of the On-Screen Display" + }, + "padding": { + "label": "Padding", + "title": "Adjust the spacing around the On-Screen Display in pixels. This applies specifically to corner On-Screen Display." + }, + "position": { + "label": "Position", + "options": { + "bottom_left": "Bottom Left", + "bottom_right": "Bottom Right", + "center": "Centre", + "top_left": "Top Left", + "top_right": "Top Right" + }, + "title": "Select the position of the On-Screen Display" + }, + "title": "On-Screen Display Settings", + "type": { + "label": "Type", + "options": { + "circle": "Circle", + "line": "Line", + "no_display": "No display", + "text": "Text" + }, + "title": "Select the type of On-Screen Display" + } + }, + "playbackSpeed": { + "enable": { + "label": "Forced playback speed", + "title": "Sets the video speed to what you choose below" + }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, + "select": { + "label": "Player speed", + "title": "The speed to set the video to" + }, + "title": "Playback speed settings" + }, + "screenshotButton": { + "enable": { + "label": "Screenshot button", + "title": "Adds a button to the player to take a screenshot of the video" + }, + "saveAs": { + "clipboard": "Clipboard", + "file": "File" + }, + "selectFormat": { + "label": "Screenshot format", + "title": "The format to save the screenshot in" + }, + "selectSaveAs": { + "label": "Screenshot save type", + "title": "The screenshot save type" + }, + "title": "Screenshot settings" + }, + "scrollWheelSpeedControl": { + "adjustmentSteps": { + "label": "Speed Change Per Scroll", + "title": "Adjust the speed change per scroll" + }, + "enable": { + "label": "Scroll wheel speed control", + "title": "Press a modifier key to enable speed adjustment with the scroll wheel." + }, + "optionLabel": "{{KEY}} key", + "select": { + "label": "Modifier key", + "title": "The modifier key to use" + }, + "title": "Scroll wheel speed control settings" + }, + "scrollWheelVolumeControl": { + "adjustmentSteps": { + "label": "Volume Change Per Scroll", + "title": "Adjust the volume change per scroll" + }, + "enable": { + "label": "Scroll wheel volume control", + "title": "Lets you use the scroll wheel to control the volume of the video you're watching" + }, + "holdModifierKey": { + "enable": { + "label": "Enable when holding modifier key", + "title": "Press a modifier key to enable volume adjustment with the scroll wheel." + }, + "optionLabel": "{{KEY}} key", + "select": { + "label": "Modifier key", + "title": "The modifier key to use" + } + }, + "holdRightClick": { + "enable": { + "label": "Enable when holding right click", + "title": "Hold right click to enable scroll wheel volume control" + } + }, + "title": "Scroll wheel volume control settings" + }, + "videoHistory": { + "enable": { + "label": "Track watched videos", + "title": "Keeps track of where you left off on videos you were watching and enables resuming playback" + }, + "resumeType": { + "select": { + "label": "Resume type", + "options": { + "automatic": "Automatic", + "prompt": "Prompt" + }, + "title": "Select how you want to resume videos" + } + }, + "title": "Video history settings" + }, + "volumeBoost": { + "boostAmount": { + "label": "Volume boost amount (dB)", + "title": "The amount to boost the volume by" + }, + "enable": { + "label": "Volume boost", + "title": "Enable volume boost" + }, + "mode": { + "select": { + "label": "Volume boost mode", + "options": { + "global": "Global", + "perVideo": "Per video" + }, + "title": "Choose how volume boost is applied. 'Per video' allows enabling boost for each video individually in the feature menu. 'Global' applies boost to all videos when volume boost is enabled." + } + }, + "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 color", + "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 color", + "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 9dfbe38c..1856ca1f 100644 --- a/public/locales/en-US.json +++ b/public/locales/en-US.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot copied to clipboard", - "label": "Screenshot" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot copied to clipboard" }, "videoHistory": { "resumeButton": "Resume", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirm setting reset", "value": "Confirm" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Resets all settings to their defaults, Click the confirm button to save the changes", "value": "Reset" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Remaining time", "title": "Shows the remaining time of the video you're watching" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Miscellaneous settings" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Forced playback speed", "title": "Sets the video speed to what you choose below" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Player speed", "title": "The speed to set the video to" @@ -390,6 +433,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 color", + "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 color", + "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 0ea41e80..a0a08474 100644 --- a/public/locales/en-US.json.d.ts +++ b/public/locales/en-US.json.d.ts @@ -8,15 +8,26 @@ interface EnUS { pages: { content: { features: { - featureMenu: { label: "Feature menu" }; - loopButton: { label: "Loop"; toggle: { off: "Loop off"; on: "Loop on" } }; - maximizePlayerButton: { label: "Maximize"; toggle: { off: "Maximize off"; on: "Maximize on" } }; - openTranscriptButton: { label: "Open transcript" }; - screenshotButton: { copiedToClipboard: "Screenshot copied to clipboard"; label: "Screenshot" }; + featureMenu: { button: { label: "Feature menu" } }; + 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" } }; + playbackSpeedButtons: { + buttons: { + decreasePlaybackSpeedButton: { label: "Decrease Speed by {{SPEED}}" }; + increasePlaybackSpeedButton: { label: "Increase Speed by {{SPEED}}" }; + }; + }; + screenshotButton: { + button: { label: "Screenshot" }; + copiedToClipboard: "Screenshot copied to clipboard"; + }; videoHistory: { resumeButton: "Resume"; resumePrompt: { close: "Close" } }; volumeBoostButton: { - label: "Volume Boost"; - toggle: { off: "Volume boost off"; on: "Volume boost on" }; + button: { + label: "Volume Boost"; + toggle: { off: "Volume boost off"; on: "Volume boost on" }; + }; }; }; }; @@ -57,6 +68,7 @@ interface EnUS { value: "Clear Data"; }; confirm: { title: "Confirm setting reset"; value: "Confirm" }; + openTab: { title: "Open extension settings in a new tab" }; reset: { title: "Resets all settings to their defaults, Click the confirm button to save the changes"; value: "Reset"; @@ -65,6 +77,8 @@ interface EnUS { buttonPlacement: { select: { buttonNames: { + decreasePlaybackSpeedButton: "Decrease Speed button"; + increasePlaybackSpeedButton: "Increase Speed button"; loopButton: "Loop button"; maximizePlayerButton: "Maximize button"; openTranscriptButton: "Open Transcript button"; @@ -147,6 +161,10 @@ interface EnUS { label: "Open YouTube settings on hover"; title: "Opens the YouTube settings menu when you hover over the settings button"; }; + pauseBackgroundPlayers: { + label: "Pause background players"; + title: "Pauses video players in background tabs when you start a new player in foreground tab"; + }; remainingTime: { label: "Remaining time"; title: "Shows the remaining time of the video you're watching"; @@ -164,6 +182,10 @@ interface EnUS { title: "Shortens YouTube video share link (youtu.be) by stripping si/feature parameters from it"; }; shortsAutoScroll: { label: "Shorts auto scroll"; title: "Automatically scrolls to the next short" }; + skipContinueWatching: { + label: 'Skip "Video is paused. Continue watching?"'; + title: "Skips the idle dialog that pauses video playback"; + }; }; title: "Miscellaneous settings"; }; @@ -205,7 +227,7 @@ interface EnUS { title: "On-Screen Display Settings"; type: { label: "Type"; - options: { line: "Line"; no_display: "No display"; round: "Round"; text: "Text" }; + options: { circle: "Circle"; line: "Line"; no_display: "No display"; text: "Text" }; title: "Select the type of On-Screen Display"; }; }; @@ -214,6 +236,14 @@ interface EnUS { label: "Forced playback speed"; title: "Sets the video speed to what you choose below"; }; + playbackSpeedButtons: { + label: "Playback speed buttons"; + select: { + label: "Playback buttons speed"; + title: "Amount of speed to be changed per click"; + }; + title: "Adds buttons to increase or decrease the playback speed of the video you're watching"; + }; select: { label: "Player speed"; title: "The speed to set the video to" }; title: "Playback speed settings"; }; @@ -288,6 +318,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 color"; 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 color"; 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 d6f4e450..5dcaae51 100644 --- a/public/locales/es-ES.json +++ b/public/locales/es-ES.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Menú de funciones" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Bucle", - "toggle": { - "off": "Desactivar repetición", - "on": "Activar repetición" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximizar", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Abrir transcripción" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Captura de pantalla copiada al portapapeles", - "label": "Capturar pantalla" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Captura de pantalla copiada al portapapeles" }, "videoHistory": { "resumeButton": "Reanudar", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Potenciar volumen", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirma el restablecimiento de los ajustes", "value": "Confirmar" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Restablece todos los ajustes a sus valores predeterminados, haga clic en el botón de confirmar para guardar los cambios", "value": "Reestablecer" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Botón de repetición", "maximizePlayerButton": "Maximizar botón", "openTranscriptButton": "Abrir botón de transcripción", @@ -206,6 +233,10 @@ "label": "Abrir ajustes de YouTube al pasar el cursor", "title": "Abre el menú de configuración de YouTube cuando pasa el cursor por encima del botón de ajustes" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Tiempo restante", "title": "Muestra el tiempo restante del vídeo que estás viendo" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Ajustes varios" @@ -271,9 +306,9 @@ "type": { "label": "Tipo", "options": { + "circle": "Circle", "line": "Línea", "no_display": "No mostrar", - "round": "Round", "text": "Texto" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Velocidad de reproducción forzada", "title": "Establece la velocidad del video a lo que elijas a continuación" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Velocidad del reproductor", "title": "La velocidad a la que ajustar el vídeo" @@ -390,6 +433,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 color", + "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 color", + "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 4b53f597..e103ed93 100644 --- a/public/locales/fa-IR.json +++ b/public/locales/fa-IR.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot copied to clipboard", - "label": "Screenshot" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot copied to clipboard" }, "videoHistory": { "resumeButton": "Resume", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirm setting reset", "value": "Confirm" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Resets all settings to their defaults, Click the confirm button to save the changes", "value": "Reset" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Remaining time", "title": "Shows the remaining time of the video you're watching" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Miscellaneous settings" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Forced playback speed", "title": "Sets the video speed to what you choose below" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Player speed", "title": "The speed to set the video to" @@ -390,6 +433,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 color", + "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 color", + "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 bc23e0c4..424519b5 100644 --- a/public/locales/fr-FR.json +++ b/public/locales/fr-FR.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Menu des fonctionnalités" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Lire en boucle", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Agrandir", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Ouvrir la transcription" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Capture d'écran copiée dans le presse-papiers", - "label": "Capture d'écran" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Capture d'écran copiée dans le presse-papiers" }, "videoHistory": { "resumeButton": "Reprendre", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Gain sonore", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirmer la réinitialisation des réglages", "value": "Confirmer" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Réinitialise tous les paramètres par défaut, cliquez sur le bouton de confirmation pour enregistrer les modifications", "value": "Réinitialiser" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Ouvrir les paramètres YouTube au survol", "title": "Ouvre le menu des paramètres YouTube lorsque vous survolez le bouton des paramètres" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Temps restant", "title": "Affiche le temps restant de la vidéo que vous regardez" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Autre paramètres" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Ligne", "no_display": "Cacher", - "round": "Arrondi", "text": "Texte" }, "title": "Sélectionnez le type d'affichage à l'écran" @@ -284,6 +319,14 @@ "label": "Vitesse de lecture forcée", "title": "Définit la vitesse de la vidéo comme choisie ci-dessous" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Vitesse de la vidéo", "title": "La vitesse à laquelle la vidéo est définie" @@ -390,6 +433,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 color", + "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 color", + "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 5a972baa..3a5cab63 100644 --- a/public/locales/he-IL.json +++ b/public/locales/he-IL.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot copied to clipboard", - "label": "Screenshot" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot copied to clipboard" }, "videoHistory": { "resumeButton": "Resume", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirm setting reset", "value": "Confirm" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Resets all settings to their defaults, Click the confirm button to save the changes", "value": "Reset" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Remaining time", "title": "Shows the remaining time of the video you're watching" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Miscellaneous settings" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Forced playback speed", "title": "Sets the video speed to what you choose below" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Player speed", "title": "The speed to set the video to" @@ -390,6 +433,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 color", + "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 color", + "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 d8290dcb..4d9b7256 100644 --- a/public/locales/hi-IN.json +++ b/public/locales/hi-IN.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot copied to clipboard", - "label": "Screenshot" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Screenshot copied to clipboard" }, "videoHistory": { "resumeButton": "Resume", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirm setting reset", "value": "Confirm" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Resets all settings to their defaults, Click the confirm button to save the changes", "value": "Reset" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Remaining time", "title": "Shows the remaining time of the video you're watching" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Miscellaneous settings" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Forced playback speed", "title": "Sets the video speed to what you choose below" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Player speed", "title": "The speed to set the video to" @@ -390,6 +433,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 color", + "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 color", + "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 85b23f30..e8c36e4d 100644 --- a/public/locales/it-IT.json +++ b/public/locales/it-IT.json @@ -2,47 +2,69 @@ "langCode": "it-IT", "langName": "Italiano", "messages": { - "resumingVideo": "Resuming video at {{VIDEO_TIME}}", - "settingVolume": "Setting volume boost to {{VOLUME_BOOST_AMOUNT}}" + "resumingVideo": "Video a {{VIDEO_TIME}} in ripresa", + "settingVolume": "Impostazione aumento volume a {{VOLUME_BOOST_AMOUNT}}" }, "pages": { "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Menu' funzioni" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Ripeti", + "toggle": { + "off": "Ripetizione NO", + "on": "Ripetizione SÌ" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Ingrandisci", + "toggle": { + "off": "Massimizza NO", + "on": "Massimizza SÌ" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Apri trascrizione" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Diminuisci velocità di {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Aumenta velocità di {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Screenshot copied to clipboard", - "label": "Screenshot" + "button": { + "label": "Schermata" + }, + "copiedToClipboard": "Schermata copiata negli Appunti" }, "videoHistory": { - "resumeButton": "Resume", + "resumeButton": "Riprendi", "resumePrompt": { - "close": "Close" + "close": "Chiudi" } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Aumento volume", + "toggle": { + "off": "Aumento volume NO", + "on": "Aumento volume SÌ" + } } } } @@ -52,344 +74,408 @@ "error": { "scrollWheelHoldModifierKey": { "sameKey": { - "speedControl": "The scroll wheel speed control modifier key cannot be the same as the scroll wheel volume control modifier key.", - "volumeControl": "The scroll wheel volume control modifier key cannot be the same as the scroll wheel speed control modifier key." + "speedControl": "Il tasto per modificare la velocità della rotellina del mouse non può essere lo stesso che modifica il volume con la rotellina del mouse.", + "volumeControl": "Il tasto che modifica il volume con la rotellina del mouse non può essere lo stesso che modifica la velocità della rotellina del mouse." } } }, "info": { - "reset": "All options have been reset to their default values.\nYou can now save the changes by clicking the \"Confirm\" button or discard them by closing this page or ignore this notification." + "reset": "Le opzioni sono state reimpostate ai valori predefiniti.\nPuoi salvare le modifiche cliccando il pulsante \"Conferma\" o scartarle chiudendo la pagina oppure ignorando questa notifica." }, "success": { - "saved": "Options saved." + "saved": "Opzioni salvate." } } } }, "settings": { "clearData": { - "allDataDeleted": "All data has been deleted.", - "confirmAlert": "This will delete all extension data related to options. Continue?" + "allDataDeleted": "Tutti i dati sono stati eliminati.", + "confirmAlert": "Questo eliminerà tutti i dati delle estensioni relativi alle opzioni. Continuare?" }, "sections": { "automaticQuality": { "enable": { - "label": "Automatic quality adjustment", - "title": "Automatically adjusts the video quality to the selected level." + "label": "Regolazione automatica qualità", + "title": "Regola automaticamente la qualità video al livello selezionato." }, "select": { - "label": "Player quality", - "title": "The quality to set the video to" + "label": "Qualità riproduttore", + "title": "La qualità alla quale impostare il video" }, - "title": "Automatic quality settings" + "title": "Impostazioni qualità automatiche" }, "bottomButtons": { "clear": { - "title": "Clears all data this extension has stored on your machine", - "value": "Clear Data" + "title": "Cancella tutti i dati che questa estensione ha memorizzato sulla tua macchina", + "value": "Cancella dati" }, "confirm": { - "title": "Confirm setting reset", - "value": "Confirm" + "title": "Conferma ripristino impostazioni", + "value": "Conferma" + }, + "openTab": { + "title": "Apri impostazioni estensione in una nuova scheda" }, "reset": { - "title": "Resets all settings to their defaults, Click the confirm button to save the changes", - "value": "Reset" + "title": "Reimposta le impostazioni ai valori predefiniti, clicca il pulsante di conferma per salvare le modifiche", + "value": "Reimposta" } }, "buttonPlacement": { "select": { "buttonNames": { - "loopButton": "Loop button", - "maximizePlayerButton": "Maximize button", - "openTranscriptButton": "Open Transcript button", - "screenshotButton": "Screenshot button", - "volumeBoostButton": "Volume Boost button" + "decreasePlaybackSpeedButton": "Pulsante Riduci velocità", + "increasePlaybackSpeedButton": "Pulsante Aumenta velocità", + "loopButton": "Pulsante Ripeti", + "maximizePlayerButton": "Pulsante Massimizza", + "openTranscriptButton": "Pulsante Apri trascrizione", + "screenshotButton": "Pulsante Schermata", + "volumeBoostButton": "Pulsante Aumento volume" }, "options": { "below_player": { - "placement": "below the player controls", - "value": "Below Player" + "placement": "sotto i controlli del riproduttore", + "value": "Sotto il riproduttore" }, "feature_menu": { - "placement": "in the feature menu", - "value": "Feature Menu" + "placement": "nel menu' delle funzioni", + "value": "Menu' funzioni" }, "player_controls_left": { - "placement": "on the left side of player controls", - "value": "Left Controls" + "placement": "alla sinistra dei controlli di riproduzione", + "value": "A sinistra" }, "player_controls_right": { - "placement": "on the right side of player controls", - "value": "Right Controls" + "placement": "alla destra dei controlli di riproduzione", + "value": "A destra" } }, - "title": "Place the {{BUTTON_NAME}} {{PLACEMENT}}" + "title": "Posiziona {{BUTTON_NAME}} {{PLACEMENT}}" }, - "title": "Button Placement Settings" + "title": "Impostazioni posizione pulsante" }, "customCSS": { "editor": { - "collapse": "Collapse Editor", - "expand": "Expand Editor", - "noProblems": "No problems found." + "collapse": "Comprimi editor", + "expand": "Espandi editor", + "noProblems": "Nessun problema trovato." }, "enable": { - "label": "Enable custom CSS", - "title": "Enables custom CSS to be applied to the page" + "label": "Abilita CSS personalizzato", + "title": "Abilita il CSS personalizzato da applicare alla pagina" }, - "title": "Custom CSS Settings" + "title": "Impostazioni CSS personalizzate" }, "featureMenu": { "openType": { "select": { - "label": "Menu Activation Type", + "label": "Tipo attivazione menu'", "options": { - "click": "Click", - "hover": "Hover" + "click": "Clic", + "hover": "Sorvola" }, - "title": "Select the method to activate the feature menu" + "title": "Seleziona il metodo per attivare il menu' funzioni" }, - "title": "Feature menu settings" + "title": "Impostazioni menu' funzioni" } }, "importExportSettings": { "exportButton": { - "success": "Settings successfully exported", - "title": "Export settings to a JSON file", - "value": "Export Settings" + "success": "Impostazioni esportate correttamente", + "title": "Esporta impostazioni in un file JSON", + "value": "Esporta impostazioni" }, "importButton": { "error": { - "unknown": "Error importing settings. Please check the file format.\nAn unknown error occurred.", - "validation": "Error importing settings. Please check the file format.\n{{ERROR_MESSAGE}}" + "unknown": "Errore nell'importazione delle impostazioni. Controllare il formato del file.\nSi è verificato un errore sconosciuto.", + "validation": "Errore nell'importazione delle impostazioni. Controllare il formato del file.\n{{ERROR_MESSAGE}}" }, - "success": "Settings imported successfully", - "title": "Import settings from a JSON file", - "value": "Import Settings" + "success": "Impostazioni importate correttamente", + "title": "Importa impostazioni da un file JSON", + "value": "Importa impostazioni" } }, "language": { "select": { - "label": "Language", - "title": "The language to use for the extension" + "label": "Lingua", + "title": "La lingua da usare per l'estensione" }, - "title": "Language" + "title": "Lingua" }, "miscellaneous": { "features": { "automaticTheaterMode": { - "label": "Automatic theater mode", - "title": "Automatically enables theater mode when you load a video" + "label": "Modalità teatro automatica", + "title": "Attiva automaticamente la modalità teatro quando carichi un video" }, "hideScrollbar": { - "label": "Hide scrollbar", - "title": "Hides the pages scrollbar" + "label": "Nascondi barra scorrimento", + "title": "Nasconde la barra di scorrimento delle pagine" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "Nascondi blocchi", + "title": "Nasconde tutti i blocchi" }, "loopButton": { - "label": "Loop button", - "title": "Adds a button to the feature menu to loop the video you're watching" + "label": "Pulsante Ripeti", + "title": "Aggiunge un pulsante al menu' funzioni per ripetere il video che stai guardando" }, "maximizePlayerButton": { - "label": "Maximize player button", - "title": "Adds a button to the feature menu to maximize the player" + "label": "Pulsante Ingrandisci riproduttore", + "title": "Aggiunge un pulsante al menu' funzioni per ingrandire il riproduttore" }, "openTranscriptButton": { - "label": "Open transcript button", - "title": "Adds a button to the feature menu to open the transcript of the video you're watching" + "label": "Pulsante Apri trascrizione", + "title": "Aggiunge un pulsante al menu' funzioni per aprire la trascrizione del video che stai guardando" }, "openYouTubeSettingsOnHover": { - "label": "Open YouTube settings on hover", - "title": "Opens the YouTube settings menu when you hover over the settings button" + "label": "Apri le impostazioni di YouTube al sorvolo", + "title": "Apre il menu' delle impostazioni di YouTube quando si passa sopra il pulsante delle impostazioni" + }, + "pauseBackgroundPlayers": { + "label": "Metti in pausa riproduttori in secondo piano", + "title": "Mette in pausa i riproduttori video nelle schede nascoste quando si avvia un nuovo riproduttore nella scheda aperta" }, "remainingTime": { - "label": "Remaining time", - "title": "Shows the remaining time of the video you're watching" + "label": "Tempo rimanente", + "title": "Mostra il tempo rimanente per il video che stai guardando" }, "rememberLastVolume": { - "label": "Remember last volume", - "title": "Remembers the volume of the last video you were watching and sets it when you open a new video" + "label": "Ricorda l'ultimo volume", + "title": "Ricorda il volume dell'ultimo video che hai guardato e lo imposta quando apri un nuovo video" }, "removeRedirect": { - "label": "Remove YouTube /redirect URLs", - "title": "Replaces YouTube redirect by actual URLs, skipping redirect warning dialogue" + "label": "Rimuovi URL /redirect di YouTube", + "title": "Rimpiazza il reindirizzamento di YouTube con gli URL attuali saltando il dialogo di avviso di reindirizzamento" }, "shareShortener": { - "label": "Shorten YouTube video share link", - "title": "Shortens YouTube video share link (youtu.be) by stripping si/feature parameters from it" + "label": "Abbrevia il collegamento di condivisione video di YouTube", + "title": "Riduce il collegamento di condivisione video di YouTube (youtu.be) eliminando da esso i parametri si/feature" }, "shortsAutoScroll": { - "label": "Shorts auto scroll", - "title": "Automatically scrolls to the next short" + "label": "Scorri al blocco", + "title": "Scorri automaticamente al prossimo blocco" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, - "title": "Miscellaneous settings" + "title": "Impostazioni varie" }, "onScreenDisplaySettings": { "color": { - "label": "Color", + "label": "Colore", "options": { - "blue": "Blue", - "green": "Green", - "orange": "Orange", - "pink": "Pink", - "purple": "Purple", - "red": "Red", - "white": "White", - "yellow": "Yellow" + "blue": "Blu", + "green": "Verde", + "orange": "Arancione", + "pink": "Rosa", + "purple": "Viola", + "red": "Rosso", + "white": "Bianco", + "yellow": "Giallo" }, - "title": "Select the color for the On-Screen Display" + "title": "Seleziona il colore per lo schermo interattivo" }, "hide": { - "label": "Hide Delay", - "title": "Specify the time, in milliseconds, before automatically hiding the On-Screen Display" + "label": "Ritardo sparizione", + "title": "Specifica il tempo, in millisecondi, prima di nascondere automaticamente le parti interattive" }, "opacity": { - "label": "Opacity", - "title": "Adjust the transparency of the On-Screen Display" + "label": "Opacità", + "title": "Regola l'opacità delle parti interattive" }, "padding": { - "label": "Padding", - "title": "Adjust the spacing around the On-Screen Display in pixels. This applies specifically to corner On-Screen Display." + "label": "Bordatura", + "title": "Regola la bordatura dello schermo in pixel. Questo si applica specificamente agli angoli dello schermo." }, "position": { - "label": "Position", + "label": "Posizione", "options": { - "bottom_left": "Bottom Left", - "bottom_right": "Bottom Right", - "center": "Center", - "top_left": "Top Left", - "top_right": "Top Right" + "bottom_left": "In basso a sinistra", + "bottom_right": "In basso a destra", + "center": "Centro", + "top_left": "Alto a sinistra", + "top_right": "In alto a destra" }, - "title": "Select the position of the On-Screen Display" + "title": "Seleziona la posizione dello schermo interattivo" }, - "title": "On-Screen Display Settings", + "title": "Impostazioni schermo interattivo", "type": { - "label": "Type", + "label": "Tipo", "options": { - "line": "Line", - "no_display": "No display", - "round": "Round", - "text": "Text" + "circle": "Cerchio", + "line": "Linea", + "no_display": "Nessuno schermo", + "text": "Testuale" }, - "title": "Select the type of On-Screen Display" + "title": "Seleziona il tipo di schermo interattivo" } }, "playbackSpeed": { "enable": { - "label": "Forced playback speed", - "title": "Sets the video speed to what you choose below" + "label": "Velocità forzata riproduzione", + "title": "Imposta la velocità del video a quella che scegli qui sotto" + }, + "playbackSpeedButtons": { + "label": "Pulsanti velocità riproduzione", + "select": { + "label": "Velocità ai pulsanti di riproduzione", + "title": "Quantità di velocità che il clic modifica" + }, + "title": "Aggiunge pulsanti per aumentare o diminuire la velocità di riproduzione del video che stai guardando" }, "select": { - "label": "Player speed", - "title": "The speed to set the video to" + "label": "Velocità riproduttore", + "title": "La velocità alla quale impostare il video" }, - "title": "Playback speed settings" + "title": "Impostazioni velocità riproduzione" }, "screenshotButton": { "enable": { - "label": "Screenshot button", - "title": "Adds a button to the player to take a screenshot of the video" + "label": "Pulsante Schermata", + "title": "Aggiunge un pulsante al riproduttore per catturare una schermata del video" }, "saveAs": { - "clipboard": "Clipboard", + "clipboard": "Appunti", "file": "File" }, "selectFormat": { - "label": "Screenshot format", - "title": "The format to save the screenshot in" + "label": "Formato schermata", + "title": "Il formato nel quale salvare la schermata" }, "selectSaveAs": { - "label": "Screenshot save type", - "title": "The screenshot save type" + "label": "Tipo salvataggio schermata", + "title": "Il tipo di salvataggio della schermata" }, - "title": "Screenshot settings" + "title": "Impostazioni schermata" }, "scrollWheelSpeedControl": { "adjustmentSteps": { - "label": "Speed Change Per Scroll", - "title": "Adjust the speed change per scroll" + "label": "Cambio velocità con scorrimento", + "title": "Regola il cambio di velocità tramite scorrimento" }, "enable": { - "label": "Scroll wheel speed control", - "title": "Press a modifier key to enable speed adjustment with the scroll wheel." + "label": "Controllo velocità con scorrimento rotellina", + "title": "Premi un tasto modificatore per abilitare la regolazione della velocità con la rotellina." }, - "optionLabel": "{{KEY}} key", + "optionLabel": "Tasto {{KEY}}", "select": { - "label": "Modifier key", - "title": "The modifier key to use" + "label": "Tasto modificatore", + "title": "Il tasto modificatore da usare" }, - "title": "Scroll wheel speed control settings" + "title": "Impostazioni controllo velocità con rotellina" }, "scrollWheelVolumeControl": { "adjustmentSteps": { - "label": "Volume Change Per Scroll", - "title": "Adjust the volume change per scroll" + "label": "Cambio volume con scorrimento", + "title": "Regola il cambio di volume tramite scorrimento" }, "enable": { - "label": "Scroll wheel volume control", - "title": "Lets you use the scroll wheel to control the volume of the video you're watching" + "label": "Controllo volume con rotellina", + "title": "Permette di usare la rotellina di scorrimento per controllare il volume del video che stai guardando" }, "holdModifierKey": { "enable": { - "label": "Enable when holding modifier key", - "title": "Press a modifier key to enable volume adjustment with the scroll wheel." + "label": "Abilita tenendo premuto il tasto modificatore", + "title": "Premi un tasto modificatore per abilitare la regolazione del volume con la rotellina." }, - "optionLabel": "{{KEY}} key", + "optionLabel": "Tasto {{KEY}}", "select": { - "label": "Modifier key", - "title": "The modifier key to use" + "label": "Tasto modificatore", + "title": "Il tasto modificatore da usare" } }, "holdRightClick": { "enable": { - "label": "Enable when holding right click", - "title": "Hold right click to enable scroll wheel volume control" + "label": "Abilita tenendo premuto il tasto destro", + "title": "Tieni premuto il tasto destro per abilitare il controllo del volume con la rotellina" } }, - "title": "Scroll wheel volume control settings" + "title": "Impostazioni controllo volume con rotellina" }, "videoHistory": { "enable": { - "label": "Track watched videos", - "title": "Keeps track of where you left off on videos you were watching and enables resuming playback" + "label": "Traccia i video visti", + "title": "Tiene traccia di dove hai lasciato i video che stavi guardando e abilita la ripresa della riproduzione" }, "resumeType": { "select": { - "label": "Resume type", + "label": "Tipo ripresa", "options": { - "automatic": "Automatic", - "prompt": "Prompt" + "automatic": "Automatico", + "prompt": "Mostra" }, - "title": "Select how you want to resume videos" + "title": "Seleziona come vuoi riprendere i video" } }, - "title": "Video history settings" + "title": "Impostazioni cronologia video" }, "volumeBoost": { "boostAmount": { - "label": "Volume boost amount (dB)", - "title": "The amount to boost the volume by" + "label": "Aumento volume (dB)", + "title": "La quantità da aggiungere al volume" }, "enable": { - "label": "Volume boost", - "title": "Enable volume boost" + "label": "Aumento volume", + "title": "Abilita aumento volume" }, "mode": { "select": { - "label": "Volume boost mode", + "label": "Modalità aumento volume", "options": { - "global": "Global", + "global": "Globale", "perVideo": "Per video" }, - "title": "Choose how volume boost is applied. 'Per video' allows enabling boost for each video individually in the feature menu. 'Global' applies boost to all videos when volume boost is enabled." + "title": "Scegli come l'aumento del volume è applicato. 'Per video' permette di abilitare la spinta per ogni video singolarmente nel menu' delle funzioni. 'Globale' applica la spinta a tutti i video quando l'amplificazione del volume è abilitata." + } + }, + "title": "Impostazioni aumento volume" + }, + "youtubeDeepDark": { + "author": "Autore", + "co-authors": "Co-autori", + "colors": { + "colorShadow": { + "label": "Colore ombra", + "title": "Colore per le ombre" + }, + "dimmerText": { + "label": "Colore secondario del testo", + "title": "Colore del testo secondario" + }, + "hoverBackground": { + "label": "Colore sfondo quando puntato", + "title": "Colore per lo sfondo al passaggio" + }, + "mainBackground": { + "label": "Colore sfondo principale", + "title": "Colore per lo sfondo principale" + }, + "mainColor": { + "label": "Colore accento", + "title": "Colore per accento" + }, + "mainText": { + "label": "Colore testo principale", + "title": "Colore per il testo principale" + }, + "secondBackground": { + "label": "Colore sfondo secondario", + "title": "Colore per lo sfondo secondario" } }, - "title": "Volume boost settings" + "enable": { + "label": "Abilita tema selezionato", + "title": "Abilita il tema selezionato per la pagina" + }, + "select": { + "label": "Seleziona tema", + "title": "Seleziona un tema da applicare alla pagina" + }, + "title": "Impostazioni sfondo scuro di YouTube" } } } diff --git a/public/locales/ja-JP.json b/public/locales/ja-JP.json index 0ef22f68..66309143 100644 --- a/public/locales/ja-JP.json +++ b/public/locales/ja-JP.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "フィーチャー・メニュー" + "button": { + "label": "フィーチャー・メニュー" + } }, "loopButton": { - "label": "ループ", - "toggle": { - "off": "ループオフ", - "on": "ループオン" + "button": { + "label": "ループ", + "toggle": { + "off": "ループオフ", + "on": "ループオン" + } } }, "maximizePlayerButton": { - "label": "最大表示", - "toggle": { - "off": "最大表示オフ", - "on": "最大表示オン" + "button": { + "label": "最大表示", + "toggle": { + "off": "最大表示オフ", + "on": "最大表示オン" + } } }, "openTranscriptButton": { - "label": "文字起こしを見せる" + "button": { + "label": "文字起こしを見せる" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "再生速度を{{SPEED}}で下げする" + }, + "increasePlaybackSpeedButton": { + "label": "再生速度を{{SPEED}}で上げする" + } + } }, "screenshotButton": { - "copiedToClipboard": "スクリーンショットをクリップボードにコピーしました", - "label": "スクリーンショット" + "button": { + "label": "スクリーンショット" + }, + "copiedToClipboard": "スクリーンショットをクリップボードにコピーしました" }, "videoHistory": { "resumeButton": "レジューム", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "音量ブースト", - "toggle": { - "off": "音量ブーストオフ", - "on": "音量ブーストオン" + "button": { + "label": "音量ブースト", + "toggle": { + "off": "音量ブーストオフ", + "on": "音量ブーストオン" + } } } } @@ -92,6 +114,9 @@ "title": "設定リセットを確認する", "value": "確認" }, + "openTab": { + "title": "新しいブラウザタブに拡張機能設定を開けるする" + }, "reset": { "title": "すべての設定をデフォルトにリセットします。「確認」ボタンをクリックして変更を保存します。", "value": "リセット" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "速度を下げるボタン", + "increasePlaybackSpeedButton": "速度を上げるボタン", "loopButton": "ループボタン", "maximizePlayerButton": "最大表示ボタン", "openTranscriptButton": "文字起こしを見せるボタン", @@ -187,8 +214,8 @@ "title": "ページのスクロールバーを隠す" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "ショートを隠す", + "title": "全ショートを隠す" }, "loopButton": { "label": "動画ループボタン", @@ -206,6 +233,10 @@ "label": "マウスを合わせでYouTubeの設定を開ける", "title": "設定ボタンにマウスを合わせたときにYouTubeの設定メニューを開けてする" }, + "pauseBackgroundPlayers": { + "label": "背後タブのビデオプレイヤーを一時停止", + "title": "前景タブに新規プレイヤー開始にして、背後タブのビデオプレイヤーを一時停止します" + }, "remainingTime": { "label": "残り時間", "title": "動画の残り時間を表示します" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "ショートの自動スクロール", "title": "次のショートを自動にスクロールする" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "他の設定" @@ -271,9 +306,9 @@ "type": { "label": "OSD型", "options": { + "circle": "Circle", "line": "ライン", "no_display": "見せない", - "round": "丸い", "text": "テキスト" }, "title": "オンスクリーンディスプレイ(OSD)型を選択選ぶ" @@ -284,6 +319,14 @@ "label": "強制再生速度", "title": "強制再生速度を可能にする" }, + "playbackSpeedButtons": { + "label": "再生速度ボタン", + "select": { + "label": "再生ボタン速度", + "title": "マウスクリックに速度を変化する量" + }, + "title": "動画の再生速度を上げか下げボタンに追加する" + }, "select": { "label": "動画の再生速度", "title": "動画の速度に設定する" @@ -390,6 +433,49 @@ } }, "title": "音量ブーストの設定" + }, + "youtubeDeepDark": { + "author": "作家", + "co-authors": "共同作家", + "colors": { + "colorShadow": { + "label": "陰の色", + "title": "陰の色" + }, + "dimmerText": { + "label": "二の次テキストの色", + "title": "二の次テキストの色" + }, + "hoverBackground": { + "label": "背景マウスホバーの色", + "title": "背景マウスホバーの色" + }, + "mainBackground": { + "label": "主背景色", + "title": "主背景の色" + }, + "mainColor": { + "label": "アクセント色", + "title": "アクセントの色" + }, + "mainText": { + "label": "メインテキスト色", + "title": "メインテキストの色" + }, + "secondBackground": { + "label": "二次背景色", + "title": "二次背景の色" + } + }, + "enable": { + "label": "選択中テーマを可能にする", + "title": "選択中ページにテーマを可能にする" + }, + "select": { + "label": "テーマを選択", + "title": "ページのテーマを選択選べしてください" + }, + "title": "YouTubeディープダーク設定" } } } diff --git a/public/locales/pl-PL.json b/public/locales/pl-PL.json index 78248c0e..e9476dfb 100644 --- a/public/locales/pl-PL.json +++ b/public/locales/pl-PL.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Feature menu" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Loop", - "toggle": { - "off": "Loop off", - "on": "Loop on" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximize", - "toggle": { - "off": "Maximize off", - "on": "Maximize on" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Open transcript" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Zrzut ekranu skopiowany do schowka", - "label": "Zrzut ekranu" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Zrzut ekranu skopiowany do schowka" }, "videoHistory": { "resumeButton": "Wznów", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volume Boost", - "toggle": { - "off": "Volume boost off", - "on": "Volume boost on" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirm setting reset", "value": "Confirm" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Resets all settings to their defaults, Click the confirm button to save the changes", "value": "Reset" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Loop button", "maximizePlayerButton": "Maximize button", "openTranscriptButton": "Open Transcript button", @@ -206,6 +233,10 @@ "label": "Open YouTube settings on hover", "title": "Opens the YouTube settings menu when you hover over the settings button" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Remaining time", "title": "Shows the remaining time of the video you're watching" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Miscellaneous settings" @@ -271,9 +306,9 @@ "type": { "label": "Type", "options": { + "circle": "Circle", "line": "Line", "no_display": "No display", - "round": "Round", "text": "Text" }, "title": "Select the type of On-Screen Display" @@ -284,6 +319,14 @@ "label": "Forced playback speed", "title": "Sets the video speed to what you choose below" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Player speed", "title": "The speed to set the video to" @@ -390,6 +433,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 color", + "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 color", + "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 3fb12c57..3ee9550b 100644 --- a/public/locales/pt-BR.json +++ b/public/locales/pt-BR.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Menu de recursos" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "Repetir", - "toggle": { - "off": "Repetição inativa", - "on": "Repetição ativa" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "Maximizar", - "toggle": { - "off": "Maximização inativa", - "on": "Maximização ativa" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "Abrir Transcrição" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Captura de tela copiada para a área de transferência", - "label": "Captura de tela" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Captura de tela copiada para a área de transferência" }, "videoHistory": { "resumeButton": "Continuar", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Impulsionador de volume", - "toggle": { - "off": "Impulso de Volume inativo", - "on": "Impulso de Volume ativo" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Confirmar redefinição de configuração", "value": "Confirmar" }, + "openTab": { + "title": "Open extension settings in a new tab" + }, "reset": { "title": "Redefinir todas as configurações para seus padrões, Clique no botão confirmar para salvar as alterações", "value": "Redefinir" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Botão de Repetir", "maximizePlayerButton": "Botão de Maximizar", "openTranscriptButton": "Abrir botão de transcrição", @@ -206,6 +233,10 @@ "label": "Abrir configurações do YouTube ao passar o mouse", "title": "Abre o menu de configurações do YouTube ao passar o mouse sobre o botão de configurações" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "Tempo restante", "title": "Mostra o tempo restante do vídeo que você está assistindo" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts auto scroll", "title": "Automatically scrolls to the next short" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Configurações diversas" @@ -271,9 +306,9 @@ "type": { "label": "Tipo", "options": { + "circle": "Circle", "line": "Linha", "no_display": "Sem exibição", - "round": "Arredondado", "text": "Texto" }, "title": "Selecione o tipo de informações na tela" @@ -284,6 +319,14 @@ "label": "Velocidade de reprodução forçada", "title": "Define a velocidade do vídeo para a que você escolher abaixo" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Velocidade do reprodutor", "title": "A velocidade a ser definida para o vídeo" @@ -390,6 +433,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 color", + "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 color", + "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 c9b04ab5..d9d53098 100644 --- a/public/locales/ru-RU.json +++ b/public/locales/ru-RU.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Меню функций" + "button": { + "label": "Меню функций" + } }, "loopButton": { - "label": "Зациклить", - "toggle": { - "off": "Зацикливание выключено", - "on": "Зацикливание включено" + "button": { + "label": "Зациклить", + "toggle": { + "off": "Зацикливание выключено", + "on": "Зацикливание включено" + } } }, "maximizePlayerButton": { - "label": "Развернуть", - "toggle": { - "off": "Проигрыватель свернут", - "on": "Проигрыватель развернут" + "button": { + "label": "Развернуть", + "toggle": { + "off": "Проигрыватель свернут", + "on": "Проигрыватель развернут" + } } }, "openTranscriptButton": { - "label": "Открыть стенограмму" + "button": { + "label": "Открыть стенограмму" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Уменьшить скорость на {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Увеличить скорость на {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Скриншот скопирован в буфер обмена", - "label": "Скриншот" + "button": { + "label": "Скриншот" + }, + "copiedToClipboard": "Скриншот скопирован в буфер обмена" }, "videoHistory": { "resumeButton": "Возобновить", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Усиление громкости", - "toggle": { - "off": "Увеличение громкости выключено", - "on": "Увеличение громкости включено" + "button": { + "label": "Усиление громкости", + "toggle": { + "off": "Увеличение громкости выключено", + "on": "Увеличение громкости включено" + } } } } @@ -52,8 +74,8 @@ "error": { "scrollWheelHoldModifierKey": { "sameKey": { - "speedControl": "Клавиша-модификатор для управления скоростью воспроизведения с помощью колеса прокрутки не может совпадать с клавишей-модификатором для управления громкостью.", - "volumeControl": "Клавиша-модификатор для управления громкостью с помощью колеса прокрутки не может совпадать с клавишей-модификатором для управления скоростью воспроизведения." + "speedControl": "Клавиша-модификатор для управления скоростью воспроизведения с помощью колеса мыши не может совпадать с клавишей-модификатором для управления громкостью.", + "volumeControl": "Клавиша-модификатор для управления громкостью с помощью колеса мыши не может совпадать с клавишей-модификатором для управления скоростью воспроизведения." } } }, @@ -92,6 +114,9 @@ "title": "Подтвердить сброс настроек", "value": "Подтвердить" }, + "openTab": { + "title": "Открывать настройки расширения в новой вкладке" + }, "reset": { "title": "Сбрасывает все параметры до значений по умолчанию. Нажмите \"Подтвердить\", чтобы сохранить изменения", "value": "Сброс" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Кнопка уменьшения скорости видео", + "increasePlaybackSpeedButton": "Кнопка увеличения скорости видео", "loopButton": "Кнопка «Зациклить»", "maximizePlayerButton": "Кнопка «Развернуть»", "openTranscriptButton": "Кнопка «Открыть стенограмму»", @@ -187,8 +214,8 @@ "title": "Скрывает полосу прокрутки страницы" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "Скрыть Shorts", + "title": "Скрывает все Shorts" }, "loopButton": { "label": "Включить кнопку «Зациклить»", @@ -206,6 +233,10 @@ "label": "Открывать настройки YouTube при наведении курсора", "title": "Открывает меню настроек YouTube при наведении на кнопку меню" }, + "pauseBackgroundPlayers": { + "label": "Ставить на паузу видео в фоновых вкладках", + "title": "Ставит на паузу видео в фоновых вкладках при запуске видео в активной (текущей) вкладке" + }, "remainingTime": { "label": "Включить отображение оставшегося времени", "title": "Показывает оставшееся время просмотра видео" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Автоматическая прокрутка Shorts", "title": "Автоматически скроллит до следующего Shorts" + }, + "skipContinueWatching": { + "label": "Пропускать \"Воспроизведение приостановлено. Продолжить?\"", + "title": "Автоматически пропускает диалог простоя, который приостанавливает воспроизведение" } }, "title": "Прочие параметры" @@ -271,9 +306,9 @@ "type": { "label": "Тип", "options": { + "circle": "Круг", "line": "Линия", "no_display": "Не показывать", - "round": "Круг", "text": "Текст" }, "title": "Выберите тип отображения на экране (OSD)" @@ -284,6 +319,14 @@ "label": "Включить принудительную скорость воспроизведения", "title": "Устанавливает скорость проигрывания видео на ту, что вы выбрали ниже" }, + "playbackSpeedButtons": { + "label": "Кнопки регулирования скорости видео", + "select": { + "label": "Дельта кнопок регулирования скорости", + "title": "Число, на которое будет изменена скорость за клик" + }, + "title": "Добавляет кнопки для увеличения или уменьшения скорости воспроизведения просматриваемого видео" + }, "select": { "label": "Скорость проигрывателя", "title": "Скорость, которая будет задаваться для видео" @@ -315,15 +358,15 @@ "title": "Регулировка значения, на которое изменяется скорость воспроизведения за прокрутку" }, "enable": { - "label": "Включить управление скоростью воспроизведения с помощью колеса прокрутки", - "title": "Нажмите клавишу-модификатор, чтобы включить управление скоростью воспроизведения с помощью колеса прокрутки." + "label": "Включить управление скоростью воспроизведения с помощью колеса мыши", + "title": "Нажмите клавишу-модификатор, чтобы включить управление скоростью воспроизведения с помощью колеса мыши." }, "optionLabel": "Клавиша {{KEY}}", "select": { "label": "Клавиша-модификатор", "title": "Используемая клавиша-модификатор" }, - "title": "Настройки управления скоростью воспроизведения с помощью колеса прокрутки" + "title": "Настройки управления скоростью воспроизведения с помощью колеса мыши" }, "scrollWheelVolumeControl": { "adjustmentSteps": { @@ -331,13 +374,13 @@ "title": "Регулировка значения, на которое изменяется громкость за прокрутку" }, "enable": { - "label": "Включить управление громкостью с помощью колеса прокрутки", - "title": "Позволяет использовать колесо прокрутки для управления громкостью видео, которое вы просматриваете" + "label": "Включить управление громкостью с помощью колеса мыши", + "title": "Позволяет использовать колесо мыши для управления громкостью видео, которое вы просматриваете" }, "holdModifierKey": { "enable": { "label": "Включить при удержании клавиши-модификатора", - "title": "Нажмите клавишу-модификатор, чтобы включить управление громкостью с помощью колеса прокрутки." + "title": "Нажмите клавишу-модификатор, чтобы включить управление громкостью с помощью колеса мыши." }, "optionLabel": "Клавиша {{KEY}}", "select": { @@ -348,10 +391,10 @@ "holdRightClick": { "enable": { "label": "Включить при удержании правой кнопки мыши", - "title": "Удерживайте правую кнопку мыши, чтобы включить управление громкостью с помощью колеса прокрутки" + "title": "Удерживайте правую кнопку мыши, чтобы включить управление громкостью с помощью колеса мыши" } }, - "title": "Настройки управления громкостью с помощью колеса прокрутки" + "title": "Настройки управления громкостью с помощью колеса мыши" }, "videoHistory": { "enable": { @@ -390,6 +433,49 @@ } }, "title": "Настройки усиления громкости" + }, + "youtubeDeepDark": { + "author": "Автор", + "co-authors": "Соавторы", + "colors": { + "colorShadow": { + "label": "Цвет тени", + "title": "Цвет теней" + }, + "dimmerText": { + "label": "Цвет вторичного текста", + "title": "Цвет для вторичного текста" + }, + "hoverBackground": { + "label": "Цвет фона при наведении", + "title": "Цвет, который будет задаваться фону при наведении" + }, + "mainBackground": { + "label": "Основной цвет фона", + "title": "Цвет для основного фона" + }, + "mainColor": { + "label": "Цвет акцента", + "title": "Цвет для акцента" + }, + "mainText": { + "label": "Цвет основного текста", + "title": "Цвет для основного текста" + }, + "secondBackground": { + "label": "Дополнительный цвет фона", + "title": "Цвет для вторичного фона" + } + }, + "enable": { + "label": "Включить выбранную тему", + "title": "Активировать выбранную тему для страницы" + }, + "select": { + "label": "Выбрать тему", + "title": "Выберите тему для применения к странице" + }, + "title": "Настройки YouTube Deep Dark" } } } diff --git a/public/locales/sv-SE.json b/public/locales/sv-SE.json index f39b9585..74fa7151 100644 --- a/public/locales/sv-SE.json +++ b/public/locales/sv-SE.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "Funktionsmeny" + "button": { + "label": "Funktionsmeny" + } }, "loopButton": { - "label": "Slinga", - "toggle": { - "off": "Slinga av", - "on": "Slinga på" + "button": { + "label": "Slinga", + "toggle": { + "off": "Slinga av", + "on": "Slinga på" + } } }, "maximizePlayerButton": { - "label": "Maximera", - "toggle": { - "off": "Maximera av", - "on": "Maximera på" + "button": { + "label": "Maximera", + "toggle": { + "off": "Maximera av", + "on": "Maximera på" + } } }, "openTranscriptButton": { - "label": "Öppna transkript" + "button": { + "label": "Öppna transkript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Minska hastigheten med {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Öka hastigheten med {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Skärmbild kopierad till urklipp", - "label": "Skärmbild" + "button": { + "label": "Skärmbild" + }, + "copiedToClipboard": "Skärmbild kopierad till urklipp" }, "videoHistory": { "resumeButton": "Återuppta", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Volymökning", - "toggle": { - "off": "Volymökning av", - "on": "Volymökning på" + "button": { + "label": "Volymökning", + "toggle": { + "off": "Volymökning av", + "on": "Volymökning på" + } } } } @@ -92,6 +114,9 @@ "title": "Bekräfta återställning av inställningar", "value": "Bekräfta" }, + "openTab": { + "title": "Öppna tilläggsinställningar i en ny flik" + }, "reset": { "title": "Återställer alla inställningar till sina standardinställningar, Klicka på bekräftelseknappen för att spara ändringarna", "value": "Återställ" @@ -100,9 +125,11 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Knapp för att mindska hastigheten", + "increasePlaybackSpeedButton": "Knapp för att öka hastigheten", "loopButton": "Slingknapp", "maximizePlayerButton": "Maximeraknapp", - "openTranscriptButton": "Öppna transkriptknapp", + "openTranscriptButton": "Transkriptknapp", "screenshotButton": "Skärmbildsknapp", "volumeBoostButton": "Volymökningsknapp" }, @@ -187,8 +214,8 @@ "title": "Döljer sidornas rullningsfält" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "Dölj shorts", + "title": "Döljer alla shorts" }, "loopButton": { "label": "Slingknapp", @@ -206,6 +233,10 @@ "label": "Öppna YouTube-inställningar vid musöver", "title": "Öppnar YouTube-inställningsmenyn när du håller muspekaren över inställningsknappen" }, + "pauseBackgroundPlayers": { + "label": "Pausa spelare i bakgrunden", + "title": "Pausar videospelare i bakgrundsflikar när du startar en ny videospelare i en förgrundsflik" + }, "remainingTime": { "label": "Återstående tid", "title": "Visar återstående tid för videon du tittar på" @@ -215,16 +246,20 @@ "title": "Kommer ihåg volymen på den senaste videon du tittade på och ställer in den när du öppnar en ny video" }, "removeRedirect": { - "label": "Ta bort YouTube /omdirigeringswebbadresser", + "label": "Ta bort YouTube-omdirigeringswebbadresser", "title": "Ersätter YouTube-omdirigering genom faktiska webbadresser, hoppar över omdirigeringsvarningsdialog" }, "shareShortener": { "label": "Förkorta YouTube-videons delningslänk", - "title": "Förkortar YouTube-videons delningslänk (youtu.be) genom att ta bort si/funktionsparametrar från den" + "title": "Förkortar YouTube-videons delningslänk (youtu.be) genom att ta bort funktionsparametrar från den" }, "shortsAutoScroll": { "label": "Automatisk rullning för shorts", "title": "Rullar automatiskt till nästa shorts" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Övriga inställningar" @@ -245,7 +280,7 @@ "title": "Välj färgen för On-Screen Display" }, "hide": { - "label": "Dölj fördröjning", + "label": "Döljfördröjning", "title": "Ange tiden i millisekunder innan On-Screen Display automatiskt döljs" }, "opacity": { @@ -271,9 +306,9 @@ "type": { "label": "Typ", "options": { + "circle": "Circle", "line": "Rad", "no_display": "Ingen visning", - "round": "Rund", "text": "Text" }, "title": "Välj typ av On-Screen Display" @@ -284,6 +319,14 @@ "label": "Tvingad uppspelningshastighet", "title": "Ställer in videohastigheten till det du väljer nedan" }, + "playbackSpeedButtons": { + "label": "Knapp för uppspelningshastigheten", + "select": { + "label": "Knapp för uppspelningshastigheten", + "title": "Hastighetsändring per klick" + }, + "title": "Lägger till knappar för att öka eller minska uppspelningshastigheten på videon du tittar på" + }, "select": { "label": "Uppspelningshastighet", "title": "Hastigheten att spela upp videon i" @@ -390,6 +433,49 @@ } }, "title": "Inställningar för volymökning" + }, + "youtubeDeepDark": { + "author": "Skapare", + "co-authors": "Medskapare", + "colors": { + "colorShadow": { + "label": "Skuggfärg", + "title": "Färg för skuggor" + }, + "dimmerText": { + "label": "Sekundär textfärg", + "title": "Färg för sekundärtext" + }, + "hoverBackground": { + "label": "Bakgrundsfärg för musöver", + "title": "Bakgrundsfärg för musöver" + }, + "mainBackground": { + "label": "Primär bakgrundsfärg", + "title": "Färg för primär bakgrund" + }, + "mainColor": { + "label": "Accentfärg", + "title": "Färg för accent" + }, + "mainText": { + "label": "Primär textfärg", + "title": "Färg för primär text" + }, + "secondBackground": { + "label": "Sekundär bakgrundsfärg", + "title": "Färg för sekundär bakgrund" + } + }, + "enable": { + "label": "Aktivera valt tema", + "title": "Aktivera det valda temat för sidan" + }, + "select": { + "label": "Välj tema", + "title": "Välj ett tema som ska tillämpas på sidan" + }, + "title": "Deep Dark-inställningar för YouTube" } } } diff --git a/public/locales/tr-TR.json b/public/locales/tr-TR.json index 73c2ff87..6d4428e2 100644 --- a/public/locales/tr-TR.json +++ b/public/locales/tr-TR.json @@ -3,34 +3,54 @@ "langName": "Türkçe", "messages": { "resumingVideo": "{{VIDEO_TIME}} tarihinde videoyu devam ettir", - "settingVolume": "Setting volume boost to {{VOLUME_BOOST_AMOUNT}}" + "settingVolume": "Ses güçlendirmesini {{VOLUME_BOOST_AMOUNT}} olarak ayarla" }, "pages": { "content": { "features": { "featureMenu": { - "label": "Özellik menüsü" + "button": { + "label": "Özellik menüsü" + } }, "loopButton": { - "label": "Döngü", - "toggle": { - "off": "Döngü kapalı", - "on": "Düngü açık" + "button": { + "label": "Tekrarla", + "toggle": { + "off": "Tekrarlama kapalı", + "on": "Tekrarlama açık" + } } }, "maximizePlayerButton": { - "label": "Ekranı Kapla", - "toggle": { - "off": "Tam ekran kapalı", - "on": "Tam ekran açık" + "button": { + "label": "Ekranı kapla", + "toggle": { + "off": "Tam ekran kapalı", + "on": "Tam ekran açıl" + } } }, "openTranscriptButton": { - "label": "Not dökümünü aç" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "Decrease Speed by {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "Increase Speed by {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "Ekran görüntüsü panoya kopyalandı", - "label": "Ekran Görüntüsü" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "Ekran görüntüsü panoya kopyalandı" }, "videoHistory": { "resumeButton": "Devam Et", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "Ses Güçlendirmesi", - "toggle": { - "off": "Ses güçlendirmesi kapalı", - "on": "Ses güçlendirmesi açık" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "Ayarı sıfırlamayı onayla", "value": "Onayla" }, + "openTab": { + "title": "Uzantı ayarlarını yeni bir sekmede açın" + }, "reset": { "title": "Tüm ayarları varsayılan değerlerine sıfırlar. Değişiklikleri kaydetmek için onayla düğmesine tıklayın", "value": "Sıfırla" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "Decrease Speed button", + "increasePlaybackSpeedButton": "Increase Speed button", "loopButton": "Döngü düğmesi", "maximizePlayerButton": "Tam ekran düğmesi", "openTranscriptButton": "Open Transcript button", @@ -136,7 +163,7 @@ }, "enable": { "label": "Özel CSS'yi etkinleştir", - "title": "Enables custom CSS to be applied to the page" + "title": "Özel CSS'nin sayfaya uygulanmasını sağlar" }, "title": "Özel CSS Ayarları" }, @@ -187,8 +214,8 @@ "title": "Sayfa kaydırma çubuğunu gizler" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "Kısa videoları gizle", + "title": "Tüm kısa videoları gizler" }, "loopButton": { "label": "Tekrarlama düğmesi", @@ -200,19 +227,23 @@ }, "openTranscriptButton": { "label": "Not dökümü düğmesini gizle", - "title": "Adds a button to the feature menu to open the transcript of the video you're watching" + "title": "İzlediğiniz videonun metnini açmak için özellik menüsüne bir düğme ekler" }, "openYouTubeSettingsOnHover": { "label": "Fare ile üzerine gelerek Youtube ayarlarını açın", "title": "Ayarlar düğmesinin üzerine gelindiğinde YouTube ayarlar menüsünü açar" }, + "pauseBackgroundPlayers": { + "label": "Arka plan oynatıcılarını duraklat", + "title": "Ön plan sekmesinde yeni bir oynatıcı başlattığınızda arka plan sekmelerindeki video oynatıcıları duraklatır" + }, "remainingTime": { "label": "Kalan süre", - "title": "Shows the remaining time of the video you're watching" + "title": "İzlediğiniz videonun kalan süresini gösterir" }, "rememberLastVolume": { "label": "Son ses hacmini hatırla", - "title": "Remembers the volume of the last video you were watching and sets it when you open a new video" + "title": "İzlediğiniz son videonun ses seviyesini hatırlar ve yeni bir video açtığınızda bu ses seviyesine ayarlar" }, "removeRedirect": { "label": "YouTube yönlendirme bağlantılarını kaldır", @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Kısa videoya otomatik kaydır", "title": "Bir sonraki kısa videoya otomatik kaydır" + }, + "skipContinueWatching": { + "label": "Skip \"Video is paused. Continue watching?\"", + "title": "Skips the idle dialog that pauses video playback" } }, "title": "Çeşitli ayarlar" @@ -242,7 +277,7 @@ "white": "Beyaz", "yellow": "Sarı" }, - "title": "Select the color for the On-Screen Display" + "title": "Ekran göstergesinin rengini seçin" }, "hide": { "label": "Gecikmeyi Gizle", @@ -271,9 +306,9 @@ "type": { "label": "Tür", "options": { + "circle": "Circle", "line": "Satır", "no_display": "Ekran yok", - "round": "Tur", "text": "Metin" }, "title": "Select the type of On-Screen Display" @@ -284,9 +319,17 @@ "label": "Zorunlu oynatma hızını etkinleştir", "title": "Video hızını aşağıda seçtiğiniz hıza ayarlar" }, + "playbackSpeedButtons": { + "label": "Playback speed buttons", + "select": { + "label": "Playback buttons speed", + "title": "Amount of speed to be changed per click" + }, + "title": "Adds buttons to increase or decrease the playback speed of the video you're watching" + }, "select": { "label": "Oynatma hızı", - "title": "The speed to set the video to" + "title": "Video oynatma hızını ayarlar" }, "title": "Oynatma hızı ayarları" }, @@ -311,38 +354,38 @@ }, "scrollWheelSpeedControl": { "adjustmentSteps": { - "label": "Speed Change Per Scroll", - "title": "Adjust the speed change per scroll" + "label": "Kaydırma başına hız değişimi", + "title": "Kaydırma başına hız değiştirmeyi ayarlar" }, "enable": { "label": "Kaydırma tekerleği hız kontrolü", - "title": "Press a modifier key to enable speed adjustment with the scroll wheel." + "title": "Kaydırma tekerleği ile hız ayarını etkinleştirmek için değiştirici tuşlarından birine basın." }, "optionLabel": "{{KEY}} anahtarı", "select": { "label": "Düzenleyici anahtar", - "title": "The modifier key to use" + "title": "Kullanılacak kısayol düğmesi" }, "title": "Scroll wheel speed control settings" }, "scrollWheelVolumeControl": { "adjustmentSteps": { - "label": "Volume Change Per Scroll", - "title": "Adjust the volume change per scroll" + "label": "Her kaydırmada değiştirilecek ses düzeyi", + "title": "Her kaydırmada değiştirilecek ses düzeyini ayarlayın" }, "enable": { "label": "Kaydırma tekerleği ile ses kontrolü", - "title": "Lets you use the scroll wheel to control the volume of the video you're watching" + "title": "İzlediğiniz videonun ses düzeyini kontrol etmek için kaydırma tekerleğini kullanmanızı sağlar" }, "holdModifierKey": { "enable": { "label": "Enable when holding modifier key", - "title": "Press a modifier key to enable volume adjustment with the scroll wheel." + "title": "Kaydırma tekerleği ile ses düzeyi ayarını etkinleştirmek için değiştirici tuşlardan birine basın" }, "optionLabel": "{{KEY}} anahtarı", "select": { "label": "Düzenleyici anahtar", - "title": "The modifier key to use" + "title": "Kullanılacak kısayol düğmesi" } }, "holdRightClick": { @@ -355,25 +398,25 @@ }, "videoHistory": { "enable": { - "label": "Track watched videos", - "title": "Keeps track of where you left off on videos you were watching and enables resuming playback" + "label": "İzlenen videoları takip edin", + "title": "İzlediğiniz videolarda en son nerede kaldığınızı takip eder ve oynatmaya oradan devam etmenizi sağlar" }, "resumeType": { "select": { - "label": "Resume type", + "label": "Devam etme türü", "options": { - "automatic": "Automatic", + "automatic": "Otomatik", "prompt": "Prompt" }, - "title": "Select how you want to resume videos" + "title": "Videoları nasıl devam ettirmek istediğinizi seçin" } }, - "title": "Video history settings" + "title": "Video geçmişi ayarları" }, "volumeBoost": { "boostAmount": { - "label": "Volume boost amount (dB)", - "title": "The amount to boost the volume by" + "label": "Ses güçlendirme miktarı (dB)", + "title": "Ses güçlendirme miktarı" }, "enable": { "label": "Ses güçlendirmeyi etkinleştir", @@ -390,6 +433,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 color", + "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 color", + "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 766c1aa8..134214c5 100644 --- a/public/locales/zh-CN.json +++ b/public/locales/zh-CN.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "功能单" + "button": { + "label": "功能菜单" + } }, "loopButton": { - "label": "循环播放", - "toggle": { - "off": "取消循环", - "on": "启用循环" + "button": { + "label": "循环播放", + "toggle": { + "off": "取消循环", + "on": "启用循环" + } } }, "maximizePlayerButton": { - "label": "网页全屏", - "toggle": { - "off": "最大化关闭", - "on": "最大化开启" + "button": { + "label": "最大化", + "toggle": { + "off": "最大化关闭", + "on": "最大化开启" + } } }, "openTranscriptButton": { - "label": "打开转写文稿" + "button": { + "label": "打开转写文稿" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "降低 {{SPEED}} 播放速度" + }, + "increasePlaybackSpeedButton": { + "label": "增加 {{SPEED}} 播放速度" + } + } }, "screenshotButton": { - "copiedToClipboard": "截图已复制到剪贴板", - "label": "截图" + "button": { + "label": "屏幕截图" + }, + "copiedToClipboard": "截图已复制到剪贴板" }, "videoHistory": { "resumeButton": "继续播放", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "音量增强", - "toggle": { - "off": "关闭音量增强", - "on": "开启音量增强" + "button": { + "label": "音量增强", + "toggle": { + "off": "关闭音量增强", + "on": "开启音量增强" + } } } } @@ -92,6 +114,9 @@ "title": "确认重置设置", "value": "确认" }, + "openTab": { + "title": "在新标签中打开扩展设置" + }, "reset": { "title": "重置所有设置为默认设置,点击确认按钮以保存更改", "value": "重新开始" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "降低速度按钮", + "increasePlaybackSpeedButton": "增加速度按钮", "loopButton": "循环按钮", "maximizePlayerButton": "最大化按钮", "openTranscriptButton": "转写文稿按钮", @@ -187,8 +214,8 @@ "title": "隐藏页面滚动条" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "隐藏短视频", + "title": "隐藏所有短视频" }, "loopButton": { "label": "循环按钮", @@ -206,6 +233,10 @@ "label": "悬停时打开 YouTube 设置", "title": "当您悬停在设置按钮上时打开 YouTube 设置菜单" }, + "pauseBackgroundPlayers": { + "label": "暂停后台播放", + "title": "当您在前台标签中启用一个新播放器时,暂停后台标签中的视频播放器" + }, "remainingTime": { "label": "剩余时间", "title": "显示您观看的视频的剩余时间" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "短视频自动下滑", "title": "短视频播完后,自动下滑播放下一个" + }, + "skipContinueWatching": { + "label": "跳过\"视频已暂停。继续观看吗?\"", + "title": "跳过暂停视频播放的闲置对话框" } }, "title": "其他设置" @@ -271,9 +306,9 @@ "type": { "label": "类型", "options": { + "circle": "圆形图标", "line": "直线", "no_display": "无显示", - "round": "圆角", "text": "文本" }, "title": "选择屏幕提示文本颜色" @@ -284,6 +319,14 @@ "label": "强制播放速度", "title": "将视频速度设置为您在下面选择的内容" }, + "playbackSpeedButtons": { + "label": "播放速度按钮", + "select": { + "label": "播放按钮的速度", + "title": "每次点击要更改的速度量" + }, + "title": "添加按钮以增加或降低您观看的视频的播放速度" + }, "select": { "label": "播放速度", "title": "将视频播放速度设为" @@ -390,6 +433,49 @@ } }, "title": "音量增强设置" + }, + "youtubeDeepDark": { + "author": "作者", + "co-authors": "合作作者", + "colors": { + "colorShadow": { + "label": "阴影颜色", + "title": "阴影颜色" + }, + "dimmerText": { + "label": "次要文本颜色", + "title": "为次要文本使用的颜色" + }, + "hoverBackground": { + "label": "悬停背景颜色", + "title": "为悬停背景使用的颜色" + }, + "mainBackground": { + "label": "主要背景颜色", + "title": "为主要背景使用的颜色" + }, + "mainColor": { + "label": "强调颜色", + "title": "为强调使用的颜色" + }, + "mainText": { + "label": "主要文本颜色", + "title": "为主要文本使用的颜色" + }, + "secondBackground": { + "label": "次要背景颜色", + "title": "为次要背景使用的颜色" + } + }, + "enable": { + "label": "启用所选主题", + "title": "在页面上应用所选主题" + }, + "select": { + "label": "选择主题", + "title": "选择要应用到页面的主题" + }, + "title": "YouTube 暗黑模式设置" } } } diff --git a/public/locales/zh-TW.json b/public/locales/zh-TW.json index d101e2f8..c4be87e2 100644 --- a/public/locales/zh-TW.json +++ b/public/locales/zh-TW.json @@ -9,28 +9,48 @@ "content": { "features": { "featureMenu": { - "label": "功能選單" + "button": { + "label": "Feature menu" + } }, "loopButton": { - "label": "循環播放", - "toggle": { - "off": "關閉循環播放", - "on": "啟用循環播放" + "button": { + "label": "Loop", + "toggle": { + "off": "Loop off", + "on": "Loop on" + } } }, "maximizePlayerButton": { - "label": "最大化", - "toggle": { - "off": "關閉最大化", - "on": "啟用最大化" + "button": { + "label": "Maximize", + "toggle": { + "off": "Maximize off", + "on": "Maximize on" + } } }, "openTranscriptButton": { - "label": "打開文字記錄" + "button": { + "label": "Open transcript" + } + }, + "playbackSpeedButtons": { + "buttons": { + "decreasePlaybackSpeedButton": { + "label": "減慢播放速度 {{SPEED}}" + }, + "increasePlaybackSpeedButton": { + "label": "加快播放速度 {{SPEED}}" + } + } }, "screenshotButton": { - "copiedToClipboard": "螢幕截圖已複製剪貼簿", - "label": "螢幕截圖" + "button": { + "label": "Screenshot" + }, + "copiedToClipboard": "螢幕截圖已複製剪貼簿" }, "videoHistory": { "resumeButton": "繼續", @@ -39,10 +59,12 @@ } }, "volumeBoostButton": { - "label": "音量增強", - "toggle": { - "off": "關閉音量增強", - "on": "啟用音量增強" + "button": { + "label": "Volume Boost", + "toggle": { + "off": "Volume boost off", + "on": "Volume boost on" + } } } } @@ -92,6 +114,9 @@ "title": "確認重設設定", "value": "確認" }, + "openTab": { + "title": "於新頁面開啟擴充套件設定" + }, "reset": { "title": "將所以設定回復到初始值,按確認儲存變更", "value": "重置" @@ -100,6 +125,8 @@ "buttonPlacement": { "select": { "buttonNames": { + "decreasePlaybackSpeedButton": "減慢速度按鈕", + "increasePlaybackSpeedButton": "加快速度按妞", "loopButton": "循環播放按鈕", "maximizePlayerButton": "最大化按鈕", "openTranscriptButton": "開啟文字記錄按鈕", @@ -187,8 +214,8 @@ "title": "隱藏頁面捲軸" }, "hideShorts": { - "label": "Hide shorts", - "title": "Hides all shorts" + "label": "隱藏 Shorts", + "title": "隱藏全部 Shorts" }, "loopButton": { "label": "循環按鈕", @@ -206,6 +233,10 @@ "label": "懸浮時開啟設定選單", "title": "鼠標懸浮在設定按鈕時開啟選單" }, + "pauseBackgroundPlayers": { + "label": "Pause background players", + "title": "Pauses video players in background tabs when you start a new player in foreground tab" + }, "remainingTime": { "label": "剩餘時間", "title": "顥示現時影片的剩餘時間" @@ -225,6 +256,10 @@ "shortsAutoScroll": { "label": "Shorts 自動滾動", "title": "自動滾動到下一段 Short" + }, + "skipContinueWatching": { + "label": "跳過「影片已暫停,繼續觀看?」", + "title": "跳過暫停影片播放的閒置對話框" } }, "title": "其他設定" @@ -271,9 +306,9 @@ "type": { "label": "類型", "options": { + "circle": "圓形", "line": "線條", "no_display": "不顯示", - "round": "圓形", "text": "文字" }, "title": "選擇屏幕顥示風格" @@ -284,6 +319,14 @@ "label": "強制播放速度", "title": "設定影片播放速度如下" }, + "playbackSpeedButtons": { + "label": "播放速度按鈕", + "select": { + "label": "Playback buttons speed", + "title": "每次按下時改變的速度" + }, + "title": "加入加快或減慢播放速度按鈕" + }, "select": { "label": "播放速度", "title": "設定影片播放速度為" @@ -390,6 +433,49 @@ } }, "title": "音量增強設定" + }, + "youtubeDeepDark": { + "author": "作者", + "co-authors": "共同作者", + "colors": { + "colorShadow": { + "label": "陰影顏色", + "title": "陰影的顏色" + }, + "dimmerText": { + "label": "次要文字顏色", + "title": "次要文字的顏色" + }, + "hoverBackground": { + "label": "Hover background color", + "title": "滑過背景顏色" + }, + "mainBackground": { + "label": "主要背景顏色", + "title": "主要背景的顏色" + }, + "mainColor": { + "label": "重點色調", + "title": "重點色調的顏色" + }, + "mainText": { + "label": "主要文字顏色", + "title": "主要文字的顏色" + }, + "secondBackground": { + "label": "Secondary background color", + "title": "次要背景顏色" + } + }, + "enable": { + "label": "啟用已選主題", + "title": "啟用頁面的已選主題" + }, + "select": { + "label": "選擇主題", + "title": "選擇套用到頁面的主題" + }, + "title": "YouTube Deep Dark 設定" } } } diff --git a/src/components/Inputs/CSSEditor/CSSEditor.tsx b/src/components/Inputs/CSSEditor/CSSEditor.tsx index b16296d4..6048c25d 100644 --- a/src/components/Inputs/CSSEditor/CSSEditor.tsx +++ b/src/components/Inputs/CSSEditor/CSSEditor.tsx @@ -1,3 +1,4 @@ +import { type Nullable } from "@/src/types"; import { type editor, monaco } from "@/src/utils/monaco"; import { cn, debounce } from "@/src/utils/utilities"; import { Editor, type Monaco } from "@monaco-editor/react"; @@ -26,11 +27,12 @@ type CSSEditorState = { cursorPosition: CursorPosition; }; // TODO: add share custom css button with integration with yt-enhancer.dev + const CSSEditor: React.FC = ({ className, id, onChange, value }) => { - const editorRef = useRef(null); - const monacoRef = useRef(null); - const editorProblemsRef = useRef(null); - const expandButtonRef = useRef(null); + const editorRef = useRef>(null); + const monacoRef = useRef>(null); + const editorProblemsRef = useRef>(null); + const expandButtonRef = useRef>(null); const [isEditorExpanded, setEditorExpanded] = useState(false); const [editorState, setEditorState] = useState({ @@ -39,7 +41,8 @@ const CSSEditor: React.FC = ({ className, id, onChange, value }) const [pageScrollPosition, setPageScrollPosition] = useState({ x: 0, y: 0 }); const [problems, setProblems] = useState([]); const [editorHeight, setEditorHeight] = useState(700); - + const editorPosition = editorRef.current?.getPosition(); + const editorScrollTop = editorRef.current?.getScrollTop(); const getEditorHeight = () => { const { documentElement: { clientHeight: documentHeight } @@ -54,7 +57,10 @@ const CSSEditor: React.FC = ({ className, id, onChange, value }) monacoRef.current = monaco; setEditorHeight(getEditorHeight()); }; - const handleEditorChange = useCallback(debounce(onChange, 250), []); + const handleEditorChange = useCallback( + (value: string | undefined, ev: editor.IModelContentChangedEvent) => debounce(onChange, 250)(value, ev), + [onChange] + ); const expandEditor = () => { const currentScrollPosition = { x: window.scrollX, y: window.scrollY }; @@ -85,12 +91,12 @@ const CSSEditor: React.FC = ({ className, id, onChange, value }) } }); } - }, [editorRef.current?.getPosition(), editorRef.current?.getScrollTop()]); + }, [editorPosition, editorScrollTop]); useLayoutEffect(() => { if (!isEditorExpanded) { window.scrollTo(pageScrollPosition.x, pageScrollPosition.y); } - }, [isEditorExpanded]); + }, [isEditorExpanded, pageScrollPosition]); useEffect(() => { if (editorRef.current) { const { current: editor } = editorRef; @@ -100,7 +106,7 @@ const CSSEditor: React.FC = ({ className, id, onChange, value }) const position = new monaco.Position(lineNumber, columnNumber); editor.setPosition(position); } - }, [value]); + }, [value, editorState]); useEffect(() => { if (editorProblemsRef.current && expandButtonRef.current) { setEditorHeight(getEditorHeight()); @@ -142,7 +148,7 @@ const CSSEditor: React.FC = ({ className, id, onChange, value }) ref={expandButtonRef} /> ; problems: editor.IMarker[]; }; const EditorProblems = forwardRef(({ className, editor, problems }, ref) => { diff --git a/src/components/Inputs/CSSEditor/ExpandButton/index.tsx b/src/components/Inputs/CSSEditor/ExpandButton/index.tsx index 52972304..529b2b1d 100644 --- a/src/components/Inputs/CSSEditor/ExpandButton/index.tsx +++ b/src/components/Inputs/CSSEditor/ExpandButton/index.tsx @@ -13,7 +13,7 @@ const ExpandButton = forwardRef(({ isExpand return ( = ({ checked, className, id, label, onCh
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..37b2eafd --- /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; +} 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/Number/Arrow.tsx b/src/components/Inputs/Number/Arrow.tsx index f8e3a470..b7e9dbe7 100644 --- a/src/components/Inputs/Number/Arrow.tsx +++ b/src/components/Inputs/Number/Arrow.tsx @@ -4,7 +4,7 @@ type RotationDirection = "down" | "left" | "right" | "up"; export default function Arrow({ rotation }: { rotation: RotationDirection }) { return ( = ({ className, disabled, id, label, max = undefined, min = 0, onChange, step = 1, value }) => { - const inputElement: MutableRefObject = useRef(null); - const inputDiv: MutableRefObject = useRef(null); + const inputElement = useRef>(null); + const inputDiv = useRef>(null); const { direction } = useSettings(); const NumberPlus = () => { if (inputElement.current) { diff --git a/src/components/Inputs/Select/Select.tsx b/src/components/Inputs/Select/Select.tsx index ff640ce2..2c6e27aa 100644 --- a/src/components/Inputs/Select/Select.tsx +++ b/src/components/Inputs/Select/Select.tsx @@ -1,9 +1,10 @@ +import type { PathValue, configuration, configurationId } from "@/src/types"; import type { ClassValue } from "clsx"; import type { ChangeEvent } from "react"; import { useComponentVisible } from "@/hooks"; import { cn } from "@/src/utils/utilities"; -import React from "react"; +import React, { useRef } from "react"; import Loader from "../../Loader"; import Arrow from "../Number/Arrow"; @@ -14,31 +15,36 @@ interface SelectOptionProps { id?: string; value: string; } - -export type SelectOption = { +export type SelectOption = { element?: React.ReactElement; label: string; - value: string; + value: Extract, string>; }; -export type SelectProps = { +export type SelectProps = { className?: string; disabled?: boolean; id?: string; label: string; loading?: boolean; onChange: (value: ChangeEvent) => void; - options: SelectOption[]; + options: SelectOption[]; selectedOption: string | undefined; title: string; }; -const Select: React.FC = ({ className, disabled = false, id, label, loading = false, onChange, options, selectedOption }) => { - const { - isComponentVisible: isSelectVisible, - ref: selectRef, - setIsComponentVisible: setIsSelectVisible - } = useComponentVisible(false); +const Select = ({ + className, + disabled = false, + id, + label, + loading = false, + onChange, + options, + selectedOption +}: SelectProps) => { + const selectRef = useRef(null); + const { isComponentVisible: isSelectVisible, setIsComponentVisible: setIsSelectVisible } = useComponentVisible(selectRef, false); const toggleSelect = () => { setIsSelectVisible(!isSelectVisible); @@ -53,16 +59,19 @@ const Select: React.FC = ({ className, disabled = false, id, label, return (
- -
+ +
<> {isSelectVisible && ( -
+
{options.map((option, index) => (
, HTMLAnchorElement>; +export default function Link({ children, className, ...props }: LinkProps) { + return ( + + {children} + + ); +} diff --git a/src/components/Loader.tsx b/src/components/Loader.tsx index 9496b9ec..a47cd0c4 100644 --- a/src/components/Loader.tsx +++ b/src/components/Loader.tsx @@ -7,6 +7,6 @@ type LoaderProps = { }; export default function Loader({ className }: LoaderProps) { return ( -
+
); } diff --git a/src/components/Settings/Settings.css b/src/components/Settings/Settings.css index e09bffb4..c9197bb0 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 */ @@ -93,10 +94,6 @@ fieldset { padding-left: 0 !important; } -fieldset + fieldset { - margin-top: 12px !important; -} - fieldset > p:first-of-type { margin-top: 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); } @@ -180,6 +187,7 @@ hr { /* inputs */ input[type="text"], input[type="button"], +button[id="openinnewtab_button"], select { border-radius: var(--border-radius-md); margin-bottom: 4px; @@ -187,6 +195,7 @@ select { } input[type="text"], +button[id="openinnewtab_button"], select { border: 0; background: var(--input-background); @@ -199,36 +208,46 @@ select { } input[type="button"], +button[id="openinnewtab_button"], input[type="checkbox"] { cursor: pointer; } -input[type="button"] { +input[type="button"], +button[id="openinnewtab_button"] { min-width: 50px; color: var(--neutral-lightest); border: 0; padding: 8px 12px; transition: var(--transition-background); } + input[type="button"]:disabled { cursor: help; opacity: 0.6; } + input[type="button"].loading:disabled { cursor: wait; } /* accent */ -input[type="button"].accent { +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 { +input[type="button"].accent:active, +button[id="openinnewtab_button"].accent:hover, +button[id="openinnewtab_button"].accent:focus, +button[id="openinnewtab_button"].accent:active { background: var(--accent); } -input[type="button"].accent.ghost { +input[type="button"].accent.ghost, +button[id="openinnewtab_button"].accent.ghost { border: 2px solid var(--accent); background: var(--neutral-lightest); color: var(--accent); @@ -239,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 { @@ -257,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 { @@ -275,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 { @@ -320,7 +342,8 @@ input[type="color"] { width: 80px; } -input[type="button"] { +input[type="button"], +button[id="openinnewtab_button"] { min-width: 60px; } diff --git a/src/components/Settings/Settings.tsx b/src/components/Settings/Settings.tsx index 8fd36948..0f0f1393 100644 --- a/src/components/Settings/Settings.tsx +++ b/src/components/Settings/Settings.tsx @@ -1,37 +1,38 @@ -import type { ButtonPlacement, ModifierKey, Path, VideoHistoryResumeType, VolumeBoostMode, configuration, configurationKeys } from "@/src/types"; +import type { AllButtonNames, Nullable, Path, configuration, configurationKeys } from "@/src/types"; import type EnUS from "public/locales/en-US.json"; 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 { featuresThatHaveButtons, youtubePlayerSpeedRate } from "@/src/types"; +import { buttonNames, youtubePlaybackSpeedButtonsRates, youtubePlayerSpeedRates } from "@/src/types"; import { configurationImportSchema, defaultConfiguration as defaultSettings } from "@/src/utils/constants"; -import { cn, getPathValue, parseStoredValue } from "@/src/utils/utilities"; +import { cn, deepMerge, formatDateForFileName, getPathValue, parseStoredValue } from "@/src/utils/utilities"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { Suspense, createContext, useContext, useEffect, useRef, useState } from "react"; +import { MdOutlineOpenInNew } from "react-icons/md"; import { generateErrorMessage } from "zod-error"; import type { SelectOption } from "../Inputs"; -import { defaultConfiguration } from "../../utils/constants"; -import { formatDateForFileName } from "../../utils/utilities"; import Loader from "../Loader"; import Setting from "./components/Setting"; import SettingsNotifications from "./components/SettingNotifications"; import SettingSection from "./components/SettingSection"; import SettingTitle from "./components/SettingTitle"; - async function getLanguageOptions() { const promises = availableLocales.map(async (locale) => { try { const response = await fetch(`${chrome.runtime.getURL("")}locales/${locale}.json`); const localeData = await response.json(); - return Promise.resolve({ - label: `${(localeData as EnUS).langName} (${localePercentages[locale]}%)`, + const languageOption: SelectOption<"language"> = { + label: `${(localeData as EnUS).langName} (${localePercentages[locale] ?? 0}%)`, value: locale - } as SelectOption); + }; + return Promise.resolve(languageOption); } catch (err) { return Promise.reject(err); } @@ -39,8 +40,8 @@ async function getLanguageOptions() { const results = await Promise.allSettled(promises); - const languageOptions: SelectOption[] = results - .filter((result): result is PromiseFulfilledResult => result.status === "fulfilled") + const languageOptions: SelectOption<"language">[] = results + .filter((result): result is PromiseFulfilledResult> => result.status === "fulfilled") .map((result) => result.value); return languageOptions; @@ -54,7 +55,7 @@ function LanguageOptions({ setValueOption: (key: configurationKeys) => ({ currentTarget }: ChangeEvent) => void; t: i18nInstanceType["t"]; }) { - const [languageOptions, setLanguageOptions] = useState([]); + const [languageOptions, setLanguageOptions] = useState[]>([]); const [languagesLoading, setLanguagesLoading] = useState(true); useEffect(() => { void (async () => { @@ -107,7 +108,7 @@ async function fetchSettings() { return settings; } catch (error) { console.error("Failed to get settings:", error); - throw new Error("Failed to fetch settings"); // + throw new Error("Failed to fetch settings"); } } async function setSettings(settings: configuration) { @@ -136,7 +137,7 @@ export default function Settings() { addNotification("success", "pages.options.notifications.success.saved"); } }); - const [i18nInstance, setI18nInstance] = useState(null); + const [i18nInstance, setI18nInstance] = useState>(null); const settingsImportRef = useRef(null); const { addNotification, notifications, removeNotification } = useNotifications(); @@ -206,69 +207,70 @@ export default function Settings() { addNotification("success", "settings.clearData.allDataDeleted"); } } - const scrollWheelControlModifierKeyOptions = [ - { - label: t("settings.sections.scrollWheelVolumeControl.holdModifierKey.optionLabel", { - KEY: "Alt" - }), - value: "altKey" - }, - { - label: t("settings.sections.scrollWheelVolumeControl.holdModifierKey.optionLabel", { - KEY: "Ctrl" - }), - value: "ctrlKey" - }, - { - label: t("settings.sections.scrollWheelVolumeControl.holdModifierKey.optionLabel", { - KEY: "Shift" - }), - value: "shiftKey" - } - ] as { label: string; value: ModifierKey }[] as SelectOption[]; - const colorOptions: SelectOption[] = [ + const scrollWheelControlModifierKeyOptions: SelectOption<"scroll_wheel_speed_control_modifier_key" | "scroll_wheel_volume_control_modifier_key">[] = + [ + { + label: t("settings.sections.scrollWheelVolumeControl.holdModifierKey.optionLabel", { + KEY: "Alt" + }), + value: "altKey" + }, + { + label: t("settings.sections.scrollWheelVolumeControl.holdModifierKey.optionLabel", { + KEY: "Ctrl" + }), + value: "ctrlKey" + }, + { + label: t("settings.sections.scrollWheelVolumeControl.holdModifierKey.optionLabel", { + KEY: "Shift" + }), + value: "shiftKey" + } + ]; + const colorOptions: SelectOption<"osd_display_color">[] = [ { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.red"), value: "red" }, { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.green"), value: "green" }, { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.blue"), value: "blue" }, { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.yellow"), value: "yellow" }, { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.orange"), value: "orange" }, { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.purple"), value: "purple" }, { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.pink"), value: "pink" }, { - element:
, + element:
, label: t("settings.sections.onScreenDisplaySettings.color.options.white"), value: "white" } ]; - const OSD_DisplayTypeOptions: SelectOption[] = [ + const OSD_DisplayTypeOptions: SelectOption<"osd_display_type">[] = [ { label: t("settings.sections.onScreenDisplaySettings.type.options.no_display"), value: "no_display" @@ -282,11 +284,11 @@ export default function Settings() { value: "line" }, { - label: t("settings.sections.onScreenDisplaySettings.type.options.round"), - value: "round" + label: t("settings.sections.onScreenDisplaySettings.type.options.circle"), + value: "circle" } ]; - const OSD_PositionOptions: SelectOption[] = [ + const OSD_PositionOptions: SelectOption<"osd_display_position">[] = [ { label: t("settings.sections.onScreenDisplaySettings.position.options.top_left"), value: "top_left" @@ -308,7 +310,7 @@ export default function Settings() { value: "center" } ]; - const YouTubePlayerQualityOptions: SelectOption[] = [ + const YouTubePlayerQualityOptions = [ { label: "144p", value: "tiny" }, { label: "240p", value: "small" }, { label: "360p", value: "medium" }, @@ -320,18 +322,28 @@ export default function Settings() { { label: "2880p", value: "hd2880" }, { label: "4320p", value: "highres" }, { label: "auto", value: "auto" } - ].reverse(); - const YouTubePlayerSpeedOptions: SelectOption[] = youtubePlayerSpeedRate.map((rate) => ({ label: rate?.toString(), value: rate?.toString() })); - const ScreenshotFormatOptions: SelectOption[] = [ + // This cast is here because otherwise it would require marking all the options 'as const' + ].reverse() as SelectOption<"player_quality">[]; + const YouTubePlayerSpeedOptions = youtubePlayerSpeedRates.map((rate) => ({ + label: rate?.toString(), + value: rate?.toString() + // This cast is here because I'm not sure what the proper type is + })) as SelectOption<"player_speed">[]; + const YouTubePlaybackSpeedButtonsOptions = youtubePlaybackSpeedButtonsRates.map((rate) => ({ + label: rate?.toString(), + value: rate?.toString() + // This cast is here because I'm not sure what the proper type is + })) as SelectOption<"playback_buttons_speed">[]; + const ScreenshotFormatOptions: SelectOption<"screenshot_format">[] = [ { label: "PNG", value: "png" }, { label: "JPEG", value: "jpeg" }, { label: "WebP", value: "webp" } ]; - const ScreenshotSaveAsOptions: SelectOption[] = [ + const ScreenshotSaveAsOptions: SelectOption<"screenshot_save_as">[] = [ { label: t("settings.sections.screenshotButton.saveAs.file"), value: "file" }, { label: t("settings.sections.screenshotButton.saveAs.clipboard"), value: "clipboard" } ]; - const VolumeBoostModeOptions: SelectOption[] = [ + const VolumeBoostModeOptions: SelectOption<"volume_boost_mode">[] = [ { label: t("settings.sections.volumeBoost.mode.select.options.global"), value: "global" @@ -340,8 +352,16 @@ export default function Settings() { label: t("settings.sections.volumeBoost.mode.select.options.perVideo"), value: "per_video" } - ] as { label: string; value: VolumeBoostMode }[] as SelectOption[]; - const buttonPlacementOptions: SelectOption[] = [ + ]; + const buttonPlacementOptions: SelectOption< + | "button_placements.decreasePlaybackSpeedButton" + | "button_placements.increasePlaybackSpeedButton" + | "button_placements.loopButton" + | "button_placements.maximizePlayerButton" + | "button_placements.openTranscriptButton" + | "button_placements.screenshotButton" + | "button_placements.volumeBoostButton" + >[] = [ { label: t("settings.sections.buttonPlacement.select.options.below_player.value"), value: "below_player" }, { label: t("settings.sections.buttonPlacement.select.options.feature_menu.value"), value: "feature_menu" }, { @@ -352,11 +372,8 @@ export default function Settings() { label: t("settings.sections.buttonPlacement.select.options.player_controls_right.value"), value: "player_controls_right" } - ] as { - label: string; - value: ButtonPlacement; - }[] as SelectOption[]; - const videoHistoryResumeTypeOptions: SelectOption[] = [ + ]; + const videoHistoryResumeTypeOptions: SelectOption<"video_history_resume_type">[] = [ { label: t("settings.sections.videoHistory.resumeType.select.options.automatic"), value: "automatic" @@ -365,7 +382,13 @@ export default function Settings() { label: t("settings.sections.videoHistory.resumeType.select.options.prompt"), value: "prompt" } - ] as { label: string; value: VideoHistoryResumeType }[] as SelectOption[]; + ]; + const youtubeDeepDarkThemeOptions: SelectOption<"deep_dark_preset">[] = deepDarkPreset.map((value) => { + return { + label: value, + value + }; + }); const settingsImportChange: ChangeEventHandler = (event): void => { void (async () => { const { target } = event; @@ -387,9 +410,7 @@ export default function Settings() { }) ); } else { - const castSettings = { ...defaultConfiguration, ...(importedSettings as configuration) }; - // Set the imported settings in your state. - settingsMutate.mutate(castSettings); + const castSettings = deepMerge(defaultSettings, importedSettings as configuration) as configuration; for (const key of Object.keys(castSettings)) { if (typeof castSettings[key] !== "string") { localStorage.setItem(key, JSON.stringify(castSettings[key])); @@ -399,6 +420,8 @@ export default function Settings() { void chrome.storage.local.set({ [key]: castSettings[key] as string }); } } + // Set the imported settings in your state. + settingsMutate.mutate(castSettings); // Show a success notification. addNotification("success", "settings.sections.importExportSettings.importButton.success"); } @@ -413,6 +436,13 @@ export default function Settings() { // Import settings from a JSON file. function importSettings() { if (settingsImportRef.current === null) return; + const isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") > -1; + if (isFirefox && isPopup) { + // If user is currently on a popup, opens extensions page in a new tab to prevent settings not being imported. + openInNewTab("src/pages/options/index.html"); + window.close(); + return; + } // Trigger the file input dialog. settingsImportRef.current.click(); } @@ -447,12 +477,21 @@ export default function Settings() { addNotification("success", "settings.sections.importExportSettings.exportButton.success"); } }; + const isPopup = window.location.href.match(/.+\/src\/pages\/popup\/index\.html/g); + const openInNewTab = (path: string) => { + const url = chrome.runtime.getURL(path); + void chrome.tabs.create({ url }); + }; + const isOSDDisabled = + settings.enable_scroll_wheel_volume_control?.toString() !== "true" && + settings.enable_scroll_wheel_speed_control?.toString() !== "true" && + settings.enable_playback_speed_buttons?.toString() !== "true"; // TODO: add "default player mode" setting (theater, fullscreen, etc.) feature return ( -
+

- + YouTube Enhancer v{chrome.runtime.getManifest().version}

@@ -477,12 +516,12 @@ export default function Settings() { - {featuresThatHaveButtons.map((feature) => { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + {buttonNames.map((feature) => { const label = t(`settings.sections.buttonPlacement.select.buttonNames.${feature}`) as string; return ( + + + + @@ -922,6 +985,100 @@ export default function Settings() { value={settings.custom_css_code} /> + + + + + + RaitaroH + + + + MechaLynx + + + + + + + + + + + +
+ {isPopup && ( + + )} ; +type SettingInputProps = { + id: ID; title?: string; } & ( | ({ type: "checkbox" } & CheckboxProps) + | ({ type: "color-picker" } & ColorPickerProps) | ({ type: "css-editor" } & CSSEditorProps) | ({ type: "number" } & NumberInputProps) - | ({ type: "select" } & SelectProps) + | ({ type: "select" } & SelectProps) | ({ type: "slider" } & SliderProps) ); -function SettingInput(settingProps: SettingInputProps) { +function SettingInput(settingProps: SettingInputProps) { const { type } = settingProps; switch (type) { case "checkbox": { @@ -65,9 +67,13 @@ function SettingInput(settingProps: SettingInputProps) { 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) { +export default function Setting(settingProps: SettingInputProps) { return (
diff --git a/src/components/Settings/components/SettingNotifications.tsx b/src/components/Settings/components/SettingNotifications.tsx index 3f481e9d..4ce5bef5 100644 --- a/src/components/Settings/components/SettingNotifications.tsx +++ b/src/components/Settings/components/SettingNotifications.tsx @@ -1,56 +1,64 @@ +import type { Notification } from "@/src/types"; + import { useNotifications } from "@/src/hooks"; import { cn } from "@/src/utils/utilities"; import { useAutoAnimate } from "@formkit/auto-animate/react"; import { useSettings } from "../Settings"; - -export default function SettingsNotifications() { - const { notifications, removeNotification } = useNotifications(); - const [parentRef] = useAutoAnimate({ duration: 300 }); +function NotificationCloseButton({ notification }: { notification: Notification }) { + const { removeNotification } = useNotifications(); + return ( + + ); +} +function ToastNotification({ key, notification }: { key: number; notification: Notification }) { const { i18nInstance: { t } } = useSettings(); + const message: string = t(notification.message); return ( -
- {notifications.map((notification, index) => { - const message: string = t(notification.message); - return ( -
- {notification.action ? - notification.action === "reset_settings" ? - <> - {message.split("\n").map((line, index) => ( -

{line}

- ))} - - - : null - : <> - {message} - - - } -
-
- ); +
+ {notification.action ? + notification.action === "reset_settings" ? + <> + {message.split("\n").map((line, index) => ( +

{line}

+ ))} + + + : null + : <> + {message} + + + } +
+
+ ); +} +export default function SettingsNotifications() { + const { notifications } = useNotifications(); + const [parentRef] = useAutoAnimate({ duration: 300 }); + return ( +
+ {notifications.map((notification, index) => ( + + ))}
); } diff --git a/src/components/Settings/components/SettingSection.tsx b/src/components/Settings/components/SettingSection.tsx index 58ecf4d4..e3a2b775 100644 --- a/src/components/Settings/components/SettingSection.tsx +++ b/src/components/Settings/components/SettingSection.tsx @@ -1,6 +1,9 @@ +import { cn } from "@/src/utils/utilities"; + interface SettingSectionProps { children: React.ReactNode; + className?: string; } -export default function SettingSection({ children }: SettingSectionProps) { - return
{children}
; +export default function SettingSection({ children, className }: SettingSectionProps) { + return
{children}
; } diff --git a/src/deepDarkMaterialCSS.ts b/src/deepDarkMaterialCSS.ts new file mode 100644 index 00000000..3facd007 --- /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 + * Repository: https://github.com/RaitaroH/YouTube-DeepDark + */ +export const deepDarkMaterial = ` +/* Author : Theme made by RaitaroH */ +/* Co-authors : https://github.com/MechaLynx */ +/* 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..cf9daff5 --- /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 + * 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 + * 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/defaults.ts b/src/defaults.ts index af235a85..26a11801 100644 --- a/src/defaults.ts +++ b/src/defaults.ts @@ -1,17 +1,45 @@ -import type { configuration } from "./types"; +import { deepMerge } from "@/src/utils/utilities"; import { defaultConfiguration } from "./utils/constants"; -Object.keys(defaultConfiguration).forEach((option) => { - // If the option was not previously stored in localStorage - if (localStorage[option] === undefined) { - // then set it to the default value +function setDefaultValues() { + // Iterate over each option in the default configuration + for (const option of Object.keys(defaultConfiguration)) { + // Get the stored value from local storage + const storedValueString = localStorage.getItem(option); + // Destructure the default value for the current option const { [option]: defaultValue } = defaultConfiguration; - localStorage[option] = typeof defaultValue === "string" ? defaultValue : JSON.stringify(defaultValue); - - // and also set it in the Chrome Storage API. - void chrome.storage.local.set({ - [option]: localStorage[option] as configuration[typeof option] - }); + // Check if the stored value is missing or an empty string + if (storedValueString === null) { + // Set the default value in localStorage after stringifying + localStorage.setItem(option, typeof defaultValue === "string" ? defaultValue : JSON.stringify(defaultValue)); + // Set the default value in chrome storage + void chrome.storage.local.set({ [option]: defaultValue }); + } else { + try { + // Parse the stored value to check its type + const storedValue = + ( + typeof defaultConfiguration[option] === "object" || + typeof defaultConfiguration[option] === "boolean" || + typeof defaultConfiguration[option] === "number" + ) ? + JSON.parse(storedValueString) + : storedValueString; + // Check if the parsed value is an object and has properties + if (typeof storedValue === "object" && storedValue !== null) { + // Deep merge missing keys with their default values + const updatedValue = deepMerge(defaultValue as Record, storedValue as Record); + // Set the updated value in localStorage + localStorage.setItem(option, JSON.stringify(updatedValue)); + // Set the updated value in chrome storage + void chrome.storage.local.set({ [option]: updatedValue }); + } + } catch (error) { + // Handle errors during JSON parsing + console.error(`Error parsing stored value for option ${option}:`, error); + } + } } -}); +} +setDefaultValues(); diff --git a/src/features/buttonPlacement/index.ts b/src/features/buttonPlacement/index.ts index dbfaefe1..d093cfee 100644 --- a/src/features/buttonPlacement/index.ts +++ b/src/features/buttonPlacement/index.ts @@ -1,57 +1,60 @@ import type { GetIconType } from "@/src/icons"; -import type { ButtonPlacement, FeaturesThatHaveButtons } from "@/src/types"; +import type { AllButtonNames, ButtonPlacement, MultiButtonNames, SingleButtonFeatureNames } from "@/src/types"; import { addFeatureItemToMenu, removeFeatureItemFromMenu } from "@/src/features/featureMenu/utils"; -import { removeTooltip, waitForSpecificMessage } from "@/src/utils/utilities"; +import { findKeyByValue, removeTooltip, waitForSpecificMessage } from "@/src/utils/utilities"; import { type ListenerType, getFeatureButtonId, makeFeatureButton, placeButton } from "./utils"; -export const featuresInControls = new Set(); +export const featuresInControls = new Set(); -export async function addFeatureButton< - Name extends FeaturesThatHaveButtons, - Placement extends ButtonPlacement, - Label extends string, - Toggle extends boolean ->(featureName: Name, placement: Placement, label: Label, icon: GetIconType, listener: ListenerType, isToggle: boolean) { +export async function addFeatureButton( + buttonName: Name, + placement: Placement, + label: Label, + icon: GetIconType, + listener: ListenerType, + isToggle: boolean +) { switch (placement) { case "feature_menu": { - if (icon instanceof SVGSVGElement) await addFeatureItemToMenu(featureName, label, icon, listener, isToggle); + if (icon instanceof SVGSVGElement) await addFeatureItemToMenu(buttonName, label, icon, listener, isToggle); break; } case "below_player": case "player_controls_left": case "player_controls_right": { // Add the feature name to the set of features in the controls - featuresInControls.add(featureName); - const button = makeFeatureButton(featureName, placement, label, icon, listener, isToggle); + featuresInControls.add(buttonName); + const button = makeFeatureButton(buttonName, placement, label, icon, listener, isToggle); placeButton(button, placement); break; } } } -export async function removeFeatureButton(featureName: Name, placement?: ButtonPlacement) { +export async function removeFeatureButton(buttonName: Name, placement?: ButtonPlacement) { + const featureName = findKeyByValue(buttonName as MultiButtonNames) ?? (buttonName as SingleButtonFeatureNames); if (placement === undefined) { // Wait for the "options" message from the content script const optionsData = await waitForSpecificMessage("options", "request_data", "content"); ({ data: { options: { - button_placements: { [featureName]: placement } + button_placements: { [buttonName]: placement } } } } = optionsData); } switch (placement) { case "feature_menu": { - removeFeatureItemFromMenu(featureName); + removeFeatureItemFromMenu(buttonName); break; } case "below_player": case "player_controls_left": case "player_controls_right": { // Remove the feature name from the set of features in the controls - featuresInControls.delete(featureName); - const button = document.querySelector(`#${getFeatureButtonId(featureName)}`); + featuresInControls.delete(buttonName); + const button = document.querySelector(`#${getFeatureButtonId(buttonName)}`); if (!button) return; button.remove(); removeTooltip(`yte-feature-${featureName}-tooltip`); diff --git a/src/features/buttonPlacement/utils.ts b/src/features/buttonPlacement/utils.ts index 4d312be9..0e7bb3a4 100644 --- a/src/features/buttonPlacement/utils.ts +++ b/src/features/buttonPlacement/utils.ts @@ -1,12 +1,12 @@ import { getFeatureIds, getFeatureMenuItem } from "@/src/features/featureMenu/utils"; import { type GetIconType } from "@/src/icons"; -import { type ButtonPlacement, type FeaturesThatHaveButtons } from "@/src/types"; +import { type AllButtonNames, type ButtonPlacement, type MultiButtonNames, type SingleButtonFeatureNames } from "@/src/types"; import eventManager from "@/src/utils/EventManager"; -import { createStyledElement, createTooltip } from "@/src/utils/utilities"; +import { createStyledElement, createTooltip, findKeyByValue } from "@/src/utils/utilities"; export type ListenerType = Toggle extends true ? (checked?: boolean) => void : () => void; -function buttonClickListener( +function buttonClickListener( button: HTMLButtonElement, icon: GetIconType, listener: ListenerType, @@ -25,19 +25,20 @@ function buttonClickListener( - featureName: Name, +export function makeFeatureButton( + buttonName: Name, placement: Placement, label: string, icon: GetIconType, listener: ListenerType, isToggle: boolean ) { + const featureName = findKeyByValue(buttonName as MultiButtonNames) ?? (buttonName as SingleButtonFeatureNames); if (placement === "feature_menu") throw new Error("Cannot make a feature button for the feature menu"); - const buttonExists = document.querySelector(`button#${getFeatureButtonId(featureName)}`) !== null; + const buttonExists = document.querySelector(`button#${getFeatureButtonId(buttonName)}`) !== null; const button = createStyledElement({ classlist: ["ytp-button"], - elementId: `${getFeatureButtonId(featureName)}`, + elementId: `${getFeatureButtonId(buttonName)}`, elementType: "button", styles: { alignContent: "center", @@ -46,10 +47,12 @@ export function makeFeatureButton(`#${getFeatureButtonId(featureName)}`); +export function updateFeatureButtonTitle(buttonName: AllButtonNames, title: string) { + const button = document.querySelector(`#${getFeatureButtonId(buttonName)}`); if (!button) return; button.dataset.title = title; } @@ -142,34 +145,34 @@ export function placeButton(button: HTMLButtonElement, placement: Exclude