diff --git a/Grayjay.ClientServer/Settings/GrayjaySettings.cs b/Grayjay.ClientServer/Settings/GrayjaySettings.cs index 8aac7fd5..0ae661a3 100644 --- a/Grayjay.ClientServer/Settings/GrayjaySettings.cs +++ b/Grayjay.ClientServer/Settings/GrayjaySettings.cs @@ -19,6 +19,15 @@ public class LanguageSettings public int AppLanguage { get; set; } = 0; } + [SettingsField("Appearance", "group", "Configure the application appearance", 1)] + public AppearanceSettings Appearance { get; set; } = new AppearanceSettings(); + public class AppearanceSettings + { + [SettingsField("Theme", SettingsField.DROPDOWN, "Choose whether Grayjay follows the system theme or uses a fixed theme", 0)] + [SettingsDropdownOptions("System", "Dark", "Light")] + public int Theme { get; set; } = 0; + } + //Home public HomeSettings Home { get; set; } = new HomeSettings(); public class HomeSettings diff --git a/Grayjay.Desktop.CEF/CEFWindowProvider.cs b/Grayjay.Desktop.CEF/CEFWindowProvider.cs index 8915af4a..8c938c8d 100644 --- a/Grayjay.Desktop.CEF/CEFWindowProvider.cs +++ b/Grayjay.Desktop.CEF/CEFWindowProvider.cs @@ -2,6 +2,7 @@ using Grayjay.ClientServer; using Grayjay.ClientServer.Browser; using Grayjay.ClientServer.Dialogs; +using Grayjay.ClientServer.Settings; using Grayjay.Desktop.POC; using Microsoft.AspNetCore.Mvc.Formatters; using System; @@ -44,7 +45,7 @@ public async Task CreateWindowAsync(string url, string title, int prefe if(beforeLoad != null) await beforeLoad(windowResult); await window.SetDevelopmentToolsEnabledAsync(true); - await window.LoadUrlAsync($"{GrayjayServer.Instance.BaseUrl}{GrayjayServer.Instance.GetIndexUrl()}"); + await window.LoadUrlAsync(StartupSplash.CreateThemedWebUrl(GrayjayServer.Instance.BaseUrl, GrayjayServer.Instance.GetIndexUrl(), GrayjaySettings.Instance.Appearance.Theme)); return windowResult; } diff --git a/Grayjay.Desktop.CEF/Program.cs b/Grayjay.Desktop.CEF/Program.cs index d794c92b..19fdd76c 100644 --- a/Grayjay.Desktop.CEF/Program.cs +++ b/Grayjay.Desktop.CEF/Program.cs @@ -1,4 +1,4 @@ -using JustCef; +using JustCef; using Grayjay.ClientServer; using Grayjay.ClientServer.Constants; using Grayjay.ClientServer.Controllers; @@ -409,7 +409,7 @@ static async Task EntryPoint(string[] args) Stopwatch startWindowWatch = Stopwatch.StartNew(); Logger.i(nameof(Program), "Main: Starting window."); window = await cef.CreateWindowAsync( - url: """data:text/html;base64,PHN0eWxlPkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9Um9ib3RvOndnaHRANDAwOzcwMCZkaXNwbGF5PXN3YXApO2JvZHl7YmFja2dyb3VuZC1jb2xvcjojMWIxYjFiO21hcmdpbjowO2ZvbnQtZmFtaWx5OlJvYm90byxzYW5zLXNlcmlmfS5sb2FkZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwdmh9LmxvYWRlci1zdmd7d2lkdGg6MjAwcHg7aGVpZ2h0OjIwMHB4O2FuaW1hdGlvbjpnZW50bGUtcHVsc2UgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmxvYWRpbmctdGV4dHtjb2xvcjojZmZmO2ZvbnQtc2l6ZToyNHB4O21hcmdpbi10b3A6MjBweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6MXB4fS5sb2FkaW5nLXRleHQgc3BhbntvcGFjaXR5OjA7YW5pbWF0aW9uOmRvdCAxLjVzIGluZmluaXRlfS5sb2FkaW5nLXRleHQgc3BhbjpudGgtY2hpbGQoMSl7YW5pbWF0aW9uLWRlbGF5OjBzfS5sb2FkaW5nLXRleHQgc3BhbjpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi41c30ubG9hZGluZy10ZXh0IHNwYW46bnRoLWNoaWxkKDMpe2FuaW1hdGlvbi1kZWxheToxc31Aa2V5ZnJhbWVzIGdlbnRsZS1wdWxzZXswJSwxMDAle3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5Oi44fTUwJXt0cmFuc2Zvcm06c2NhbGUoMS4xKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZG90ezAle29wYWNpdHk6MH01MCV7b3BhY2l0eToxfTEwMCV7b3BhY2l0eTowfX08L3N0eWxlPjxkaXYgY2xhc3M9bG9hZGVyLWNvbnRhaW5lcj48c3ZnIGNsYXNzPWxvYWRlci1zdmcgZmlsbD1ub25lIGhlaWdodD0yMDAgdmlld0JveD0iMCAwIDQ4IDQ4IndpZHRoPTIwMCB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPSJNMjMuODYxMiA0MS4yNTE2TDQ2LjIyMjUgNy4wMDIySDEuNUwyMy44NjEyIDQxLjI1MTZaImZpbGw9dXJsKCNwYWludDBfbGluZWFyXzgyOF85NTA2KSAvPjxwYXRoIGQ9Ik02LjgxMjUgMzAuODcxNUM3LjcyMzgxIDI5Ljg5OTQgOS45ODM4OSAyNy42NzU4IDExLjczMzYgMjYuNTU3OUMxMy40ODMzIDI1LjQ0MDEgMTUuNTgxNCAyMi4yNDQ0IDE2LjQxMTcgMjAuNzg2M0MxOC45NDMxIDE3LjA2IDI0LjYxMzUgOS4yNzk0NSAyNy4wNDM3IDcuOTY3MTNDMjcuNDgxMSA3LjYyNjg5IDI4LjExNyA3LjA5NjMyIDI4LjM4MDMgNi44NzM1OEMyOS4yOTE2IDQuODQ4NCAzMi4zOTAxIDEuNDA1NjYgMzcuNDkzNCAzLjgzNTg2QzM3LjkzMDkgMy42OTAwMyAzOS4wMTIzIDMuNjUzNTggMzkuNDk4MyAzLjY1MzU4QzM5LjExMzUgMy45MTY4NiAzOC4zMDc1IDQuNjg2NCAzOC4xNjE3IDUuNjU4NDhDMzcuNzcyOSA4LjMzMTY0IDM2LjI5ODYgOS44OTEwMyAzNS42MSAxMC4zMzY1QzM1LjEyNCAxMy40MzUgMzQuNDU1NyAxNi4xNjkgMzIuOTk3NiAxNy4xNDFMMzQuMzM0MiAxOS41MTA0QzM2LjMzOTEgMjEuNjM2OSA0MC40OTQ3IDI2LjIyOTkgNDEuMDc3NyAyNy41OTA4QzM5LjEzMzggMjYuOTU4OSAzNy44NzgyIDI2LjM1NTQgMzcuNDkzNCAyNi4xMzI3TDQxLjA3NzcgMzEuMDUzOEMzOC45NzE4IDMwLjg5MTggMzQuMjM3IDI5LjUyMjggMzIuMTQ3MSAyNS4zNDI5QzMyLjk3MzMgMjcuNTc4NiAzMy43ODc0IDMwLjM2NTIgMzQuMDkxMiAzMS40NzlDMzIuOTU3MSAzMC41NDc1IDMwLjUxODggMjcuODQ1OSAyOS44Mzg0IDI0LjQ5MjNDMzAuMDMyOCAyNy43NDg3IDMwLjAwMDQgMzAuMDYxNCAyOS45NTk5IDMwLjgxMDdDMjkuNDEzMSAzMC4zMDQ1IDI4LjE0OTQgMjguNzMyOSAyNy40Njg5IDI2LjQ5NzJWMzAuMjY0QzI2LjY1MjkgMjkuMTI5NCAyNS4wMTEyIDI2LjM3NSAyNC44NjI5IDI0LjI5NjZDMjQuOTk5OCAyNi42NTI0IDI0LjkxNjQgMjcuNzU2NyAyNC44NTY1IDI4LjAxNkwyMS43NTgxIDI1LjA5OTlDMjAuOTI3NyAyNS41NDU0IDE4LjY5NjEgMjYuNTU3OSAxNi40MTE3IDI3LjA0NEMxNC44NTY0IDI4LjM1NjMgMTIuOTY4OSAzMS42NDExIDEyLjIxOTYgMzMuMTE5NFYzMS4yMzZMMTAuMTU0IDMzLjMwMTdMMTAuODgzIDMxLjExNDVMOS41NDY0NCAzMi4yNjg5QzkuMjQyNjUgMzIuNDUxMSA4LjUzNzkgMzIuODE1NiA4LjE0OTEgMzIuODE1NkM4LjI5NDg5IDMyLjQ3NTQgOC41NzQzOSAzMi4xMDY4IDguNjk1OSAzMS45NjUxTDYuOTM0MDEgMzIuNjMzNEM3LjEzNjUxIDMyLjA0NjEgNy43NzI0MiAzMC43NSA4LjY5NTkgMzAuMjY0QzcuNDMyMTkgMzAuNzUgNi45MTM3OCAzMC44NzE1IDYuODEyNSAzMC44NzE1WiJmaWxsPXdoaXRlIC8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2UgaWQ9cGFpbnQwX2xpbmVhcl84MjhfOTUwNiB4MT0yMy44NjEyIHgyPTIzLjg2MTIgeTE9NDEuMjUxNiB5Mj0tNC40MTQyOD48c3RvcCBzdG9wLWNvbG9yPSMwMUQ2RTYgLz48c3RvcCBzdG9wLWNvbG9yPSMwMTgyRTcgb2Zmc2V0PTEgLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz48cCBjbGFzcz1sb2FkaW5nLXRleHQ+TG9hZGluZzxzcGFuPi48L3NwYW4+PHNwYW4+Ljwvc3Bhbj48c3Bhbj4uPC9zcGFuPjwvZGl2Pg==""", + url: StartupSplash.CreateDataUrl(GrayjaySettings.Instance.Appearance.Theme), minimumWidth: 900, minimumHeight: 550, preferredWidth: 1300, @@ -512,9 +512,9 @@ static async Task EntryPoint(string[] args) Logger.i(nameof(Program), "Main: Navigate."); if (window != null) - await window.LoadUrlAsync($"{server.BaseUrl}/web/index.html"); + await window.LoadUrlAsync(StartupSplash.CreateThemedWebUrl(server.BaseUrl, "/web/index.html", GrayjaySettings.Instance.Appearance.Theme)); else if (!isServer) - OSHelper.OpenUrl($"{server.BaseUrl}/web/index.html"); + OSHelper.OpenUrl(StartupSplash.CreateThemedWebUrl(server.BaseUrl, "/web/index.html", GrayjaySettings.Instance.Appearance.Theme)); if (window != null) StateApp.SetMainWindow(new CEFWindowProvider.Window(window)); diff --git a/Grayjay.Desktop.CEF/StartupSplash.cs b/Grayjay.Desktop.CEF/StartupSplash.cs new file mode 100644 index 00000000..a1a0937e --- /dev/null +++ b/Grayjay.Desktop.CEF/StartupSplash.cs @@ -0,0 +1,117 @@ +using System; +using System.Text; + +namespace Grayjay.Desktop +{ + internal static class StartupSplash + { + private const int ThemeSystem = 0; + private const int ThemeDark = 1; + private const int ThemeLight = 2; + + private const string DarkBackground = "#141414"; + private const string LightBackground = "#f5f5f3"; + private const string DarkText = "#ffffff"; + private const string LightText = "#141414"; + private const string DarkLoaderGlow = "rgba(1, 155, 231, 0.35)"; + private const string LightLoaderGlow = "rgba(20, 20, 20, 0.10)"; + private const string Accent = "#019be7"; + private const string AccentGradientStop = "#01D6E6"; + + public static string CreateDataUrl(int theme) + { + var html = CreateHtml(theme); + return "data:text/html;base64," + Convert.ToBase64String(Encoding.UTF8.GetBytes(html)); + } + + + public static string CreateThemedWebUrl(string baseUrl, string indexUrl, int theme) + { + return AppendStartupThemeQuery(baseUrl + indexUrl, theme); + } + + public static string AppendStartupThemeQuery(string url, int theme) + { + var fragmentStart = url.IndexOf('#'); + var mainUrl = fragmentStart >= 0 ? url[..fragmentStart] : url; + var fragment = fragmentStart >= 0 ? url[fragmentStart..] : string.Empty; + var separator = mainUrl.Contains('?') ? "&" : "?"; + + return mainUrl + separator + "gjStartupTheme=" + GetStartupThemeSource(theme) + fragment; + } + + private static string GetStartupThemeSource(int theme) + { + if (theme == ThemeLight) + return "light"; + + if (theme == ThemeSystem) + return "system"; + + return "dark"; + } + + private static string CreateHtml(int theme) + { + return "
" + + CreateLogoSvg() + + "

Loading...

" + + "
"; + } + + private static string CreateThemeCss(int theme) + { + if (theme == ThemeLight) + return CreateRootCss("light", LightBackground, LightText, LightLoaderGlow); + + if (theme == ThemeSystem) + { + return CreateRootCss("dark", DarkBackground, DarkText, DarkLoaderGlow) + + "@media (prefers-color-scheme: light){" + + CreateRootCss("light", LightBackground, LightText, LightLoaderGlow) + + "}"; + } + + if (theme == ThemeDark) + return CreateRootCss("dark", DarkBackground, DarkText, DarkLoaderGlow); + + return CreateRootCss("dark", DarkBackground, DarkText, DarkLoaderGlow); + } + + private static string CreateRootCss(string colorScheme, string background, string text, string loaderGlow) + { + return ":root{" + + "color-scheme:" + colorScheme + ";" + + "--gj-bg-root:" + background + ";" + + "--gj-text-primary:" + text + ";" + + "--gj-loader-glow:" + loaderGlow + ";" + + "--gj-accent:" + Accent + ";" + + "--gj-accent-grad:linear-gradient(267deg," + AccentGradientStop + " -100.57%,var(--gj-accent) 90.96%);" + + "}"; + } + + private static string CreateLogoSvg() + { + return "" + + "" + + "" + + "" + + "" + + "" + + ""; + } + } +} diff --git a/Grayjay.Desktop.Web/index.html b/Grayjay.Desktop.Web/index.html index fded2a8f..fe6b7c40 100644 --- a/Grayjay.Desktop.Web/index.html +++ b/Grayjay.Desktop.Web/index.html @@ -1,9 +1,29 @@ - + - + + + + diff --git a/Grayjay.Desktop.Web/src/assets/icons/icon_nav_settings.svg b/Grayjay.Desktop.Web/src/assets/icons/icon_nav_settings.svg index 0b009b7c..9b6dcf31 100644 --- a/Grayjay.Desktop.Web/src/assets/icons/icon_nav_settings.svg +++ b/Grayjay.Desktop.Web/src/assets/icons/icon_nav_settings.svg @@ -1,3 +1,3 @@ - + diff --git a/Grayjay.Desktop.Web/src/components/ButtonGroup/index.module.css b/Grayjay.Desktop.Web/src/components/ButtonGroup/index.module.css index eab256b3..6115497d 100644 --- a/Grayjay.Desktop.Web/src/components/ButtonGroup/index.module.css +++ b/Grayjay.Desktop.Web/src/components/ButtonGroup/index.module.css @@ -15,9 +15,9 @@ padding: 0px 8px; gap: 4px; border-radius: 99px; - border: 1px solid rgba(255, 255, 255, 0.07); - background: rgba(99, 101, 240, 0.00); - color: #8C8C8C; + border: 1px solid var(--gj-border); + background: transparent; + color: var(--gj-text-tertiary); font-feature-settings: 'clig' off, 'liga' off; font-family: Inter; font-size: 16px; @@ -28,9 +28,11 @@ .containerButton:hover { cursor: pointer; + background: var(--gj-bg-hover); + color: var(--gj-text-primary); } .containerButton.active { - background: rgba(255, 255, 255, 0.06); - color: #FFF; + background: var(--gj-bg-selected); + color: var(--gj-text-primary); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/CommentView/index.module.css b/Grayjay.Desktop.Web/src/components/CommentView/index.module.css index 92b15462..f7012d42 100644 --- a/Grayjay.Desktop.Web/src/components/CommentView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/CommentView/index.module.css @@ -6,7 +6,7 @@ } .container:focus-visible { - background-color: #2e2e2e; + background-color: var(--gj-bg-hover); border-radius: 6px; outline: unset; } @@ -25,7 +25,7 @@ } .text { - color: #D9D9D9; + color: var(--gj-text-secondary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -41,7 +41,7 @@ } .text > a { - color: #019BE7; + color: var(--gj-accent); text-decoration: none; } @@ -66,7 +66,7 @@ .containerAuthorThumbnail svg { width: 100%; height: 100%; - background-color: #000; + background-color: var(--gj-bg-card); border-radius: 50%; } @@ -77,7 +77,7 @@ } .authorName { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -88,7 +88,7 @@ } .metadata { - color: #888; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -106,9 +106,9 @@ align-items: center; gap: 4px; border-radius: 99px; - border: 1px solid #454545; + border: 1px solid var(--gj-border-strong); overflow: hidden; - color: #FFF; + color: var(--gj-text-primary); text-align: center; font-family: Inter; font-size: 14px; @@ -116,4 +116,12 @@ font-weight: 500; line-height: 140%; cursor: pointer; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .buttonList img { + filter: brightness(0) saturate(100%); +} + +:global(:root[data-theme="light"]) .repiesButton img { + filter: brightness(0) saturate(100%); +} diff --git a/Grayjay.Desktop.Web/src/components/DonationOverlay/index.module.css b/Grayjay.Desktop.Web/src/components/DonationOverlay/index.module.css index 590ec922..66178b21 100644 --- a/Grayjay.Desktop.Web/src/components/DonationOverlay/index.module.css +++ b/Grayjay.Desktop.Web/src/components/DonationOverlay/index.module.css @@ -1,7 +1,7 @@ .backdrop { position: absolute; inset: 0; - background: rgba(0,0,0,0.5); + background: var(--gj-bg-backdrop); display: flex; align-items: flex-start; justify-content: center; @@ -15,8 +15,8 @@ width: 100%; max-width: none; padding: 16px; - border-radius: 0; - box-shadow: 0 4px 12px rgba(0,0,0,0.5); + border-radius: 6px; + box-shadow: var(--gj-shadow); background-color: var(--bg-color); color: var(--fg-color); display: flex; @@ -24,7 +24,6 @@ gap: 8px; animation: fadeIn 200ms ease-out forwards; z-index: 11; - border-radius: 6px; } .header { @@ -65,10 +64,10 @@ @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } - to { opacity: 1; transform: translateY(0); } + to { opacity: 1; transform: translateY(0); } } @keyframes fadeOut { from { opacity: 1; } - to { opacity: 0; } -} \ No newline at end of file + to { opacity: 0; } +} diff --git a/Grayjay.Desktop.Web/src/components/EmptyContentView/index.module.css b/Grayjay.Desktop.Web/src/components/EmptyContentView/index.module.css index 9346f498..40fb83bf 100644 --- a/Grayjay.Desktop.Web/src/components/EmptyContentView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/EmptyContentView/index.module.css @@ -7,7 +7,7 @@ } .noSubs .title { margin-top: 16px; - color: #FFF; + color: var(--gj-text-primary); text-align: center; font-family: Inter; @@ -18,7 +18,7 @@ } .noSubs .description { margin-top: 8px; - color: #575757; + color: var(--gj-text-secondary); text-align: center; font-family: Inter; font-size: 18px; @@ -28,4 +28,9 @@ } .noSubs .buttons { margin-top: 24px; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .container :global(.icon) img { + filter: brightness(0) saturate(100%); + opacity: 0.42 !important; +} diff --git a/Grayjay.Desktop.Web/src/components/GlobalContextMenu/index.module.css b/Grayjay.Desktop.Web/src/components/GlobalContextMenu/index.module.css index 7f731979..6ea1e9bd 100644 --- a/Grayjay.Desktop.Web/src/components/GlobalContextMenu/index.module.css +++ b/Grayjay.Desktop.Web/src/components/GlobalContextMenu/index.module.css @@ -1,8 +1,8 @@ .menu{ - background-color: #141414; + background-color: var(--gj-bg-elevated); padding: 12px; border-radius: 10px; border-radius: 10px; - border: 1px solid #2E2E2E; - box-shadow: 0px 1.852px 3.148px 0px rgba(0, 0, 0, 0.06), 0px 8.148px 6.519px 0px rgba(0, 0, 0, 0.10), 0px 20px 13px 0px rgba(0, 0, 0, 0.13), 0px 38.519px 25.481px 0px rgba(0, 0, 0, 0.15), 0px 64.815px 46.852px 0px rgba(0, 0, 0, 0.19), 0px 100px 80px 0px rgba(0, 0, 0, 0.25); + border: 1px solid var(--gj-border); + box-shadow: var(--gj-shadow); } diff --git a/Grayjay.Desktop.Web/src/components/LiveChatRemoteWindow/index.module.css b/Grayjay.Desktop.Web/src/components/LiveChatRemoteWindow/index.module.css index ad7e6433..9dbe82d6 100644 --- a/Grayjay.Desktop.Web/src/components/LiveChatRemoteWindow/index.module.css +++ b/Grayjay.Desktop.Web/src/components/LiveChatRemoteWindow/index.module.css @@ -1,5 +1,3 @@ - - .container { width: 100%; height: 640px; @@ -9,14 +7,17 @@ .window { height: 100%; padding: 10px; - background-color: #111; + background-color: var(--gj-bg-panel); border-radius: 10px; - border: 2px solid #222; + border: 1px solid var(--gj-border); box-sizing: border-box; + box-shadow: var(--gj-shadow); } + .window iframe { width: 100%; height: 100%; - border: 1px solid black; + border: 1px solid var(--gj-border); border-radius: 10px; -} \ No newline at end of file + background: var(--gj-bg-panel); +} diff --git a/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.module.css b/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.module.css index 8547e5b8..781744b3 100644 --- a/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.module.css +++ b/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.module.css @@ -2,7 +2,9 @@ width: 100%; height: 640px; border-radius: 6px; - border: #2E2E2E 1px solid; + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + color: var(--gj-text-primary); display: flex; flex-direction: column; } @@ -10,11 +12,10 @@ .containerHeader { width: 100%; height: 48px; - - border-bottom: #2E2E2E 1px solid; - background: rgb(15, 15, 15); + border-bottom: 1px solid var(--gj-border); + background: var(--gj-bg-panel-strong); + color: var(--gj-text-primary); box-sizing: border-box; - display: flex; flex-direction: row; align-items: center; @@ -28,9 +29,8 @@ width: 100%; flex-grow: 1; overflow: hidden; - - border: #2E2E2E 1px solid; - background: #1B1B1B; + background: var(--gj-bg-panel); + color: var(--gj-text-primary); box-sizing: border-box; } @@ -43,7 +43,7 @@ } .liveChatItem:hover { - background: rgba(255, 255, 255, 0.1); + background: var(--gj-bg-hover); } .liveChatAuthorImage { @@ -58,7 +58,7 @@ .liveChatContent { display: inline; font-size: 13px; - color: white; + color: var(--gj-text-primary); line-height: 1.4; word-break: break-word; flex: 1; @@ -67,14 +67,16 @@ .liveChatAuthorName { font-weight: 500; - color: rgba(255, 255, 255, 0.7); + color: var(--gj-text-secondary); white-space: nowrap; margin-right: 8px; } .donationStripWrapper { - position: relative; - padding: 8px 16px; + position: relative; + padding: 8px 16px; + border-bottom: 1px solid var(--gj-border); + background: var(--gj-bg-soft); } .donationStrip { @@ -85,31 +87,38 @@ -ms-overflow-style: none; scrollbar-width: none; } + .donationStrip::-webkit-scrollbar { display: none; } + .chevron { position: absolute; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; - border: none; - background: rgba(0, 0, 0, 0.5); - color: white; + border: 1px solid var(--gj-border); + border-radius: 999px; + background: var(--gj-bg-panel); + color: var(--gj-text-primary); font-size: 20px; cursor: pointer; z-index: 10; display: flex; align-items: center; justify-content: center; + box-shadow: var(--gj-shadow); } + .chevron.left { left: 8px; } + .chevron.right { right: 8px; } + .hidden { display: none; -} \ No newline at end of file +} diff --git a/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.tsx b/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.tsx index 52cf3785..78c1b969 100644 --- a/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.tsx +++ b/Grayjay.Desktop.Web/src/components/LiveChatWindow/index.tsx @@ -104,7 +104,7 @@ const LiveChatWindow: Component = (props) => { }}>
Chat - + {toHumanNumber((store.viewerCount == 0 ? (props.viewCount ?? 0) : store.viewerCount))} viewers
@@ -153,7 +153,7 @@ const LiveChatWindow: Component = (props) => {
- + {renderBadges(event.name.trim(), event.badges || [], store.emojis)} {renderEmojis(event.message.trim(), store.emojis)} diff --git a/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.module.css b/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.module.css index b9464b2b..368cbe20 100644 --- a/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.module.css +++ b/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.module.css @@ -1,6 +1,6 @@ .containerPlaybackQueue { border-radius: 12px; - border: 1px solid rgba(255, 255, 255, 0.13); + border: 1px solid var(--gj-border-muted); padding-top: 32px; padding-left: 12px; @@ -9,7 +9,7 @@ .title { overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); text-overflow: ellipsis; font-family: Inter; font-size: 24px; @@ -20,7 +20,7 @@ .metadata { overflow: hidden; - color: #8C8C8C; + color: var(--gj-text-tertiary); text-overflow: ellipsis; font-family: Inter; font-size: 14px; @@ -30,7 +30,7 @@ } .itemNumber { - color: #8C8C8C; + color: var(--gj-text-tertiary); text-align: center; font-family: Inter; font-size: 12px; @@ -43,13 +43,13 @@ } .itemNumber:hover { - color: #fff; + color: var(--gj-text-primary); } .itemTitle { overflow: hidden; - color: #D9D9D9; + color: var(--gj-text-secondary); text-overflow: ellipsis; font-family: Inter; font-size: 14px; @@ -61,7 +61,7 @@ } .itemAuthor { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -90,4 +90,76 @@ .itemDrag:hover .iconDrag { opacity: 1; -} \ No newline at end of file +} + +.queueItem { + height: 80px; + margin-bottom: 8px; + margin-right: 12px; + display: flex; + flex-direction: row; + width: calc(100% - 12px); + align-items: center; + overflow: hidden; + gap: 8px; + border-radius: 8px; + color: var(--gj-text-primary); +} + +.queueItemActive { + background-color: var(--gj-bg-card-active); + color: var(--gj-text-primary); +} + +.queueItem:hover { + background-color: var(--gj-bg-card-hover); +} + +.queueItemActive:hover { + background-color: var(--gj-bg-selected); +} + +.queueThumbnail { + border-radius: 3px; + height: 56px; + width: 100px; + cursor: pointer; +} + +.iconPlay, +.queueRemoveIcon, +.iconDrag { + filter: var(--gj-theme-icon-filter); +} + + +:global(:root[data-theme="light"]) .containerPlaybackQueue { + border-color: var(--gj-border); +} + +:global(:root[data-theme="light"]) .title { + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .metadata, +:global(:root[data-theme="light"]) .itemNumber, +:global(:root[data-theme="light"]) .itemAuthor { + color: var(--gj-text-tertiary); +} + +:global(:root[data-theme="light"]) .itemTitle { + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .itemNumber:hover { + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .queueItemActive { + background-color: var(--gj-bg-card-active); + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .queueItemActive:hover { + background-color: var(--gj-bg-selected); +} diff --git a/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.tsx b/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.tsx index f742e47b..877ad9c0 100644 --- a/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.tsx +++ b/Grayjay.Desktop.Web/src/components/PlaybackQueue/index.tsx @@ -75,19 +75,7 @@ const PlaybackQueue: Component = (props) => { }); return ( -
{ +
{ const v = video(); if (!v) return; props.onVideoClick?.(v); @@ -129,16 +117,15 @@ const PlaybackQueue: Component = (props) => { }> - +
- +
{video()?.name}
{video()?.author?.name}
- { + { const i = index(); if (i !== undefined) { handleRemove(ev, i); diff --git a/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.module.css b/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.module.css index 0e15009e..c62c812e 100644 --- a/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.module.css @@ -6,7 +6,7 @@ } .header { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 29px; font-style: normal; @@ -24,4 +24,13 @@ gap: 12px; margin-top: 24px; margin-bottom: 12px; -} \ No newline at end of file +} + +.metadata { + color: var(--gj-text-tertiary); + font-family: Inter; + font-size: 18px; + font-style: normal; + font-weight: 500; + line-height: normal; +} diff --git a/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.tsx b/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.tsx index d0f83142..38b45a80 100644 --- a/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.tsx +++ b/Grayjay.Desktop.Web/src/components/PlaylistDetailView/index.tsx @@ -140,7 +140,7 @@ const PlaylistDetailView: Component = (props) => { showClearButton={true} inputContainerStyle={{ "height": "48px", - "background": "#141414" + "background": "var(--gj-bg-input)" }} onTextChanged={(v) => { setFilterText(v); @@ -150,7 +150,7 @@ const PlaylistDetailView: Component = (props) => { text="Play all" icon={iconPlay} style={{ - background: "linear-gradient(267deg, #01D6E6 -100.57%, #0182E7 90.96%)", + background: "var(--gj-accent-grad)", "flex-shrink": 0 }} onClick={() => props.onPlayAll()} @@ -160,8 +160,10 @@ const PlaylistDetailView: Component = (props) => { props.onShuffleAll()} diff --git a/Grayjay.Desktop.Web/src/components/PlaylistItemView/index.module.css b/Grayjay.Desktop.Web/src/components/PlaylistItemView/index.module.css index d746fbfb..27d074d5 100644 --- a/Grayjay.Desktop.Web/src/components/PlaylistItemView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/PlaylistItemView/index.module.css @@ -6,18 +6,18 @@ height: 100%; padding-top: 12px; padding-bottom: 12px; - border-bottom: 1px solid #2E2E2E; + border-bottom: 1px solid var(--gj-border); box-sizing: border-box; - background-color: #141414 + background-color: var(--gj-bg-root) } .container:focus-visible { - background-color: #2E2E2E; + background-color: var(--gj-bg-hover); outline: unset; } .metadata { - color: rgba(255, 255, 255, 0.60); + color: var(--gj-text-tertiary); font-family: Inter; font-size: 16px; font-style: normal; @@ -29,7 +29,7 @@ display: flex; flex-direction: row; font-size: 16px; - color: #808080; + color: var(--gj-text-tertiary); align-items: center; } @@ -52,6 +52,7 @@ } .authorName { + color: var(--gj-text-secondary); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -67,11 +68,14 @@ -webkit-line-clamp: 2; flex: 1 0 0; overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); text-overflow: ellipsis; font-family: Inter; font-size: 16px; font-style: normal; font-weight: 500; line-height: 20px; /* 125% */ -} \ No newline at end of file +} +:global(:root[data-theme="light"]) .container > img:first-child { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/RaidOverlay/index.module.css b/Grayjay.Desktop.Web/src/components/RaidOverlay/index.module.css index f8c69494..3b388eab 100644 --- a/Grayjay.Desktop.Web/src/components/RaidOverlay/index.module.css +++ b/Grayjay.Desktop.Web/src/components/RaidOverlay/index.module.css @@ -1,7 +1,7 @@ .backdrop { position: absolute; inset: 0; - background: rgba(0,0,0,0.5); + background: var(--gj-bg-backdrop); display: flex; align-items: flex-start; justify-content: center; @@ -15,15 +15,16 @@ width: 100%; max-width: none; padding: 16px; - border-radius: 0; - box-shadow: 0 4px 12px rgba(0,0,0,0.5); - background-color: #2A2A2A; + border-radius: 6px; + box-shadow: var(--gj-shadow); + background-color: var(--gj-bg-panel); + color: var(--gj-text-primary); + border: 1px solid var(--gj-border); display: flex; flex-direction: column; gap: 8px; animation: fadeIn 200ms ease-out forwards; z-index: 11; - border-radius: 6px; } .raidHeader { @@ -34,7 +35,7 @@ } .raidMessage { - color: #737070; + color: var(--gj-text-tertiary); font-size: 14px; text-align: center; } @@ -54,7 +55,7 @@ .raidName { font-size: 15px; - color: #fff; + color: var(--gj-text-primary); } .raidButtons { @@ -68,17 +69,23 @@ flex: 1; padding: 10px 0; font-size: 13px; - border: none; + border: 1px solid var(--gj-border); border-radius: 4px; cursor: pointer; } .goButton { - background: #2f2f2f; - color: #fff; + background: var(--gj-bg-button-secondary); + color: var(--gj-text-primary); } .preventButton { - background: #481414; - color: #fff; + background: var(--gj-danger); + color: var(--gj-text-inverse); + border-color: var(--gj-danger); +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(-10px); } + to { opacity: 1; transform: translateY(0); } } diff --git a/Grayjay.Desktop.Web/src/components/RatingView/index.module.css b/Grayjay.Desktop.Web/src/components/RatingView/index.module.css index 294a67c1..1eb0b5c6 100644 --- a/Grayjay.Desktop.Web/src/components/RatingView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/RatingView/index.module.css @@ -14,7 +14,7 @@ .text { margin-left: 4px; - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 14px; font-style: normal; @@ -23,9 +23,23 @@ } .text.active { - color: #019BE7; + color: var(--gj-accent); } .text.editable { cursor: pointer; -} \ No newline at end of file +} + +.icon { +} + +.activeIcon { +} + +:global(:root[data-theme="light"]) .icon { + filter: brightness(0) saturate(100%); +} + +:global(:root[data-theme="light"]) .activeIcon { + filter: none; +} diff --git a/Grayjay.Desktop.Web/src/components/RatingView/index.tsx b/Grayjay.Desktop.Web/src/components/RatingView/index.tsx index 66d24c50..1f9494ad 100644 --- a/Grayjay.Desktop.Web/src/components/RatingView/index.tsx +++ b/Grayjay.Desktop.Web/src/components/RatingView/index.tsx @@ -21,7 +21,7 @@ const RatingView: Component = (props) => { const renderLikes = (rating: IRatingLikes) => { return (
- +
{toHumanNumber(rating.likes ?? 0)}
); @@ -32,11 +32,11 @@ const RatingView: Component = (props) => { <>
- +
{toHumanNumber(rating.likes ?? 0)}
- +
{toHumanNumber(rating.dislikes ?? 0)}
diff --git a/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.module.css b/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.module.css index eebaae11..389e1a27 100644 --- a/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.module.css @@ -6,10 +6,19 @@ } .header { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 29px; font-style: normal; font-weight: 700; line-height: normal; -} \ No newline at end of file +} + +.metadata { + color: var(--gj-text-tertiary); + font-family: Inter; + font-size: 18px; + font-style: normal; + font-weight: 500; + line-height: normal; +} diff --git a/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.tsx b/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.tsx index 76356d4a..a9106c51 100644 --- a/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.tsx +++ b/Grayjay.Desktop.Web/src/components/RemotePlaylistDetailView/index.tsx @@ -59,7 +59,7 @@ const RemotePlaylistDetailView: Component = (prop text="Play all" icon={iconPlay} style={{ - background: "linear-gradient(267deg, #01D6E6 -100.57%, #0182E7 90.96%)", + background: "var(--gj-accent-grad)", "flex-shrink": 0 }} onClick={() => props?.onInteract?.()} @@ -73,7 +73,8 @@ const RemotePlaylistDetailView: Component = (prop text="Shuffle" icon={iconShuffle} style={{ - border: "1px solid #2E2E2E", + border: "1px solid var(--gj-border)", + background: "var(--gj-bg-button-secondary)", "flex-shrink": 0 }} onClick={() => props?.onInteract?.()} diff --git a/Grayjay.Desktop.Web/src/components/RepliesOverlay/index.module.css b/Grayjay.Desktop.Web/src/components/RepliesOverlay/index.module.css index 2d42e14e..7f59b004 100644 --- a/Grayjay.Desktop.Web/src/components/RepliesOverlay/index.module.css +++ b/Grayjay.Desktop.Web/src/components/RepliesOverlay/index.module.css @@ -19,7 +19,7 @@ } .text { - color: #D9D9D9; + color: var(--gj-text-secondary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -56,7 +56,7 @@ .containerAuthorThumbnail svg { width: 100%; height: 100%; - background-color: #000; + background-color: var(--gj-bg-card); border-radius: 50%; } @@ -67,7 +67,7 @@ } .authorName { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -78,7 +78,7 @@ } .metadata { - color: #888; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -96,9 +96,9 @@ align-items: center; gap: 4px; border-radius: 99px; - border: 1px solid #454545; + border: 1px solid var(--gj-border-strong); overflow: hidden; - color: #FFF; + color: var(--gj-text-primary); text-align: center; font-family: Inter; font-size: 14px; @@ -106,4 +106,12 @@ font-weight: 500; line-height: 140%; cursor: pointer; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .buttonList img { + filter: brightness(0) saturate(100%); +} + +:global(:root[data-theme="light"]) .repiesButton img { + filter: brightness(0) saturate(100%); +} diff --git a/Grayjay.Desktop.Web/src/components/ToggleButtonGroup/index.module.css b/Grayjay.Desktop.Web/src/components/ToggleButtonGroup/index.module.css index 2067e078..5e3a820b 100644 --- a/Grayjay.Desktop.Web/src/components/ToggleButtonGroup/index.module.css +++ b/Grayjay.Desktop.Web/src/components/ToggleButtonGroup/index.module.css @@ -3,7 +3,7 @@ align-items: flex-start; justify-content: center; border-radius: 8px; - border: 1px solid #454545; + border: 1px solid var(--gj-border-strong); overflow: hidden; height: 40px; } @@ -23,10 +23,10 @@ display: flex; justify-content: center; align-items: center; - color: #8C8C8C; + color: var(--gj-text-tertiary); } .containerButton.active { - background: rgba(255, 255, 255, 0.06); - color: #FFF; + background: var(--gj-bg-hover); + color: var(--gj-text-primary); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/ToggleItemBigButtonGroupMulti/index.module.css b/Grayjay.Desktop.Web/src/components/ToggleItemBigButtonGroupMulti/index.module.css index d68dea10..ecd68c3f 100644 --- a/Grayjay.Desktop.Web/src/components/ToggleItemBigButtonGroupMulti/index.module.css +++ b/Grayjay.Desktop.Web/src/components/ToggleItemBigButtonGroupMulti/index.module.css @@ -26,44 +26,45 @@ align-items: center; flex-direction: column; - color: #FFF; + color: var(--gj-text-primary); gap: 4px; padding: 10px; border-radius: 6px; box-sizing: border-box; - background: #1B1B1B; + background: var(--gj-bg-card); + border: 1px solid var(--gj-border); overflow: hidden; } .containerButton:hover { cursor: pointer; - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); outline: unset; } .containerButton:focus-visible { - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); outline: unset; } .containerButton.active { - background: #2E2E2E; - color: #FFF; + background: var(--gj-bg-card-active); + color: var(--gj-text-primary); } .containerButton.active:hover { - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); outline: unset; } .containerButton.active:focus-visible { - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); outline: unset; } diff --git a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.module.css b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.module.css index 993a4161..56f74a0d 100644 --- a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.module.css +++ b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.module.css @@ -3,7 +3,7 @@ align-items: flex-start; justify-content: center; border-radius: 8px; - border: 1px solid #353535; + border: 1px solid var(--gj-border); overflow: hidden; height: 44px; width: fit-content; @@ -23,21 +23,21 @@ display: flex; justify-content: center; align-items: center; - color: #8C8C8C; + color: var(--gj-text-tertiary); gap: 12px; padding-left: 24px; padding-right: 24px; } .containerButton.active { - background: rgba(255, 255, 255, 0.06); - color: #FFF; + background: var(--gj-bg-card-active); + color: var(--gj-text-primary); } .containerButton:hover { cursor: pointer; - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); } .containerButton:hover .icon { @@ -49,11 +49,22 @@ } .containerButton:focus-visible { - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); outline: unset; } .containerButton:focus-visible .icon { filter: var(--ib-icon-filter-focus, brightness(0) saturate(100%)); } + + +.separator { + height: 100%; + width: 1px; + background-color: var(--gj-border); +} + +:global(:root[data-theme="light"]) .icon { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.tsx b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.tsx index b1617108..46bef33e 100644 --- a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.tsx +++ b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroup/index.tsx @@ -40,7 +40,7 @@ const ToggleItemButtonGroup: Component = (props) => {(item, i) => <> 0}> -
+
toggleItem(item)} use:focusable={props.focusable ? { onPress: () => toggleItem(item), diff --git a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.module.css b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.module.css index ffa2040a..00421bf4 100644 --- a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.module.css +++ b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.module.css @@ -26,22 +26,22 @@ padding-left: 24px; padding-right: 24px; align-items: center; - color: #FFF; + color: var(--gj-text-primary); gap: 4px; border-radius: 6px; - border: 1px solid #454545; + border: 1px solid var(--gj-border-strong); box-sizing: border-box; } .containerButton.active { - background: #2E2E2E; - border: 1px solid #2E2E2E; + background: var(--gj-bg-card-active); + border: 1px solid var(--gj-border-strong); } .containerButton:hover { cursor: pointer; - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); outline: unset; } @@ -50,8 +50,8 @@ } .containerButton:focus-visible { - background: white; - color: #141414; + background: var(--btn-bg-focus); + color: var(--btn-text-focus); outline: unset; } @@ -65,4 +65,8 @@ object-fit: contain; flex-shrink: 0; display: block; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .icon { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.tsx b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.tsx index 338882a5..abffa4d6 100644 --- a/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.tsx +++ b/Grayjay.Desktop.Web/src/components/ToggleItemButtonGroupMulti/index.tsx @@ -51,7 +51,7 @@ const ToggleItemButtonGroupMulti: Component = ( ... props.focusableGroupOpts } : undefined}> - +
{item.text}
diff --git a/Grayjay.Desktop.Web/src/components/basics/AnimatedImage/index.module.css b/Grayjay.Desktop.Web/src/components/basics/AnimatedImage/index.module.css index ca6846fd..e1e5577b 100644 --- a/Grayjay.Desktop.Web/src/components/basics/AnimatedImage/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/AnimatedImage/index.module.css @@ -12,7 +12,7 @@ } .errorText { - color: white; + color: var(--gj-text-primary); width: 100%; height: 100%; display: flex; diff --git a/Grayjay.Desktop.Web/src/components/basics/ViewTypeToggles/index.module.css b/Grayjay.Desktop.Web/src/components/basics/ViewTypeToggles/index.module.css index 53327aa2..d2f5ce76 100644 --- a/Grayjay.Desktop.Web/src/components/basics/ViewTypeToggles/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/ViewTypeToggles/index.module.css @@ -2,7 +2,7 @@ height: 36px; margin: 4px; border-radius: 6px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); overflow: hidden; flex-shrink: 0; } @@ -11,14 +11,26 @@ display: inline-block; align-items: center; justify-content: center; - background-color: #1B1B1B; + background-color: var(--gj-bg-panel); } .toggleViewType.enabled { - background-color: #262626 !important; + background-color: var(--gj-bg-card-active); } .toggleViewType img { padding: 10px; width: 16px; height: 16px; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .toggleViewType { + background-color: var(--gj-bg-panel-strong); +} + +:global(:root[data-theme="light"]) .toggleViewType.enabled { + background-color: var(--gj-bg-card-active); +} + +:global(:root[data-theme="light"]) .toggleViewType img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/Checkbox/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/Checkbox/index.module.css index 3936335c..9c18604b 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/Checkbox/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/Checkbox/index.module.css @@ -4,7 +4,7 @@ } .checkbox { - border-color: #8C8C8C; + border-color: var(--gj-text-tertiary); border-radius: 4px; border-width: 1.5px; width: 20px; @@ -17,8 +17,8 @@ } .checkbox.checked { - border-color: #019BE7; - background-color: #019BE7; + border-color: var(--gj-accent); + background-color: var(--gj-accent); } .checkbox .check { @@ -35,7 +35,7 @@ } .label { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 16px; font-style: normal; @@ -49,5 +49,5 @@ } .label.checked { - color: #fff; + color: var(--gj-text-primary); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/CheckboxFlex/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/CheckboxFlex/index.module.css index 3285c62f..9f929ec2 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/CheckboxFlex/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/CheckboxFlex/index.module.css @@ -1,5 +1,5 @@ .checkbox { - border-color: #8C8C8C; + border-color: var(--gj-text-tertiary); border-radius: 8px; border-width: 3.6px; width: 22px; @@ -14,8 +14,8 @@ } .checkbox.checked { - border-color: #019BE7; - background-color: #019BE7; + border-color: var(--gj-accent); + background-color: var(--gj-accent); border-radius: 8px; border-width: 3.6px; width: 22px; diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/Dropdown/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/Dropdown/index.module.css index 0946ed8b..6542e17c 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/Dropdown/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/Dropdown/index.module.css @@ -3,9 +3,9 @@ display: inline-block; flex-shrink: 0; border-radius: 6px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); position: relative; - background: #141414; + background: var(--gj-bg-elevated); } .select { @@ -13,7 +13,7 @@ padding-right: 16px; padding-top: 4px; padding-bottom: 4px; - color: white; + color: var(--gj-text-primary); cursor: pointer; min-width: 128px; @@ -43,11 +43,11 @@ position: absolute; right: 0px; border-radius: 10px; - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-elevated); overflow-y: auto; scrollbar-width: thin; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); z-index: 999; max-height: 230px; width: 300px; @@ -63,14 +63,14 @@ width: 10px; } .optionsContainer::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .optionsContainer::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .optionsContainer::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .optionsContainer::-webkit-scrollbar-corner { background-color: transparent; @@ -83,7 +83,7 @@ padding-right: 16px; padding-bottom: 16px; padding-top: 16px; - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -97,21 +97,21 @@ } .option:focus-visible { - background-color: #2E2E2E; + background-color: var(--gj-bg-selected); outline: unset; } .option.hover { - color: #FFF; + color: var(--gj-text-primary); } .option.selected { - background: #1B1B1B; + background: var(--gj-bg-panel); border-radius: 5px; } .option.selected:focus-visible { - background-color: #2E2E2E; + background-color: var(--gj-bg-selected); outline: unset; } @@ -133,4 +133,12 @@ font-style: normal; font-weight: 500; line-height: 22px; /* 183.333% */ -} \ No newline at end of file +} +:global(:root[data-theme="light"]) .selectArrow img, +:global(:root[data-theme="light"]) .option .selectIcon { + filter: var(--gj-theme-icon-filter); +} + +:global(:root[data-theme="light"]) .labelText { + color: var(--gj-text-tertiary); +} diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/InputText/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/InputText/index.module.css index 6bc25d73..da1e2bae 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/InputText/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/InputText/index.module.css @@ -9,8 +9,8 @@ .containerInputText { border-radius: 6px; - border: 1px solid #2E2E2E; - background: #1B1B1B; + border: 1px solid var(--gj-border); + background: var(--gj-bg-input); padding-top: 16px; padding-bottom: 16px; padding-left: 12px; @@ -40,25 +40,25 @@ } .containerInputText.error { - border: 1px solid #F97066; - caret-color: #F97066; + border: 1px solid var(--gj-danger-accent); + caret-color: var(--gj-danger-accent); } .containerInputText.error:hover { - border: 1px solid #F97066; + border: 1px solid var(--gj-danger-accent); } .containerInputText:hover { - border: 1px solid #595959; + border: 1px solid var(--gj-border-strong); } .containerInputText.disabled { - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-elevated); } .containerInputText.disabled::placeholder { - color: #262626; + color: var(--gj-text-tertiary); } .icon { @@ -83,7 +83,7 @@ flex-grow: 1; border: none; background: transparent; - color: white; + color: var(--gj-text-primary); font-weight: 400; font-size: 16px; line-height: 22px; @@ -97,12 +97,12 @@ } .searchInput::placeholder { - color: #494949; + color: var(--gj-text-tertiary); } .labelText { overflow: hidden; - color: #595959; + color: var(--gj-text-tertiary); text-overflow: ellipsis; white-space: nowrap; font-family: Inter; @@ -124,10 +124,15 @@ } .containerInputTextError { - color: #F97066; + color: var(--gj-danger-accent); font-family: Inter; font-size: 12px; font-style: normal; font-weight: 500; line-height: 22px; /* 183.333% */ -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .icon, +:global(:root[data-theme="light"]) .iconClear { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/InputTextArea/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/InputTextArea/index.module.css index 644763ac..4c6a0b16 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/InputTextArea/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/InputTextArea/index.module.css @@ -1,8 +1,8 @@ .containerInputText { border-radius: 6px; - border: 1px solid #2E2E2E; - background: #1B1B1B; + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); display: flex; flex-direction: row; @@ -23,12 +23,12 @@ } .containerInputText.error { - border: 1px solid #F97066; - caret-color: #F97066; + border: 1px solid var(--gj-danger-accent); + caret-color: var(--gj-danger-accent); } .containerInputText.error:hover { - border: 1px solid #F97066; + border: 1px solid var(--gj-danger-accent); } .containerInputText:hover { @@ -36,8 +36,8 @@ } .containerInputText.disabled { - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); } .containerInputText.disabled::placeholder { @@ -65,7 +65,7 @@ flex-grow: 1; border: none; background: transparent; - color: white; + color: var(--gj-text-primary); font-weight: 400; font-size: 16px; line-height: 22px; @@ -85,16 +85,16 @@ } .searchInput::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .searchInput::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .searchInput::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .searchInputs::-webkit-scrollbar-corner { @@ -106,10 +106,25 @@ } .containerInputTextError { - color: #F97066; + color: var(--gj-danger-accent); font-family: Inter; font-size: 12px; font-style: normal; font-weight: 500; line-height: 22px; /* 183.333% */ -} \ No newline at end of file +} +:global(:root[data-theme="light"]) .containerInputText:hover { + border: 1px solid var(--gj-border-strong); +} + +:global(:root[data-theme="light"]) .containerInputText.disabled::placeholder { + color: var(--gj-text-tertiary); +} + +:global(:root[data-theme="light"]) .searchInput::placeholder { + color: var(--gj-text-tertiary); +} + +:global(:root[data-theme="light"]) .iconClear:hover { + fill: var(--gj-text-primary); +} diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/SettingsDropdown/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/SettingsDropdown/index.module.css index cc4f358d..7e938db1 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/SettingsDropdown/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/SettingsDropdown/index.module.css @@ -3,7 +3,7 @@ display: inline-block; flex-shrink: 0; border-radius: 6px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); } .select { @@ -12,7 +12,7 @@ padding-right: 14px; padding-top: 4px; padding-bottom: 4px; - color: white; + color: var(--gj-text-primary); cursor: pointer; display: flex; @@ -42,26 +42,26 @@ position: absolute; border-radius: 10px; - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-elevated); max-height: 200px; overflow-y: auto; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } .optionsContainer::-webkit-scrollbar { width: 10px; } .optionsContainer::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .optionsContainer::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .optionsContainer::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .optionsContainer::-webkit-scrollbar-corner { background-color: transparent; @@ -74,7 +74,7 @@ padding-right: 10px; padding-bottom: 10px; padding-top: 10px; - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -86,7 +86,7 @@ display: inline-block; } .option.selected { - background: #1B1B1B; + background: var(--gj-bg-panel); border-radius: 5px; } @@ -100,11 +100,14 @@ .labelText { overflow: hidden; - color: #595959; + color: var(--gj-text-tertiary); text-overflow: ellipsis; font-family: Inter; font-size: 12px; font-style: normal; font-weight: 500; line-height: 22px; /* 183.333% */ -} \ No newline at end of file +} +:global(:root[data-theme="light"]) .selectArrow img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/Toggle/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/Toggle/index.module.css index 40e5137e..f094a2d6 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/Toggle/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/Toggle/index.module.css @@ -2,7 +2,7 @@ border-radius: 30px; width: 52px; height: 32px; - background-color: #ffffff22; + background-color: var(--gj-bg-selected); display: inline-block; transition: background-color 0.5s; cursor: pointer; @@ -12,7 +12,7 @@ height: 22px; margin-top: 5px; margin-left: 5px; - background-color: #FFF; + background-color: var(--gj-bg-elevated); border-radius: 25px; transition: margin-left 0.5s; } @@ -22,5 +22,5 @@ } .toggle.enabled { - background-color: #019BE7; + background-color: var(--gj-accent); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/basics/inputs/TogglePill/index.module.css b/Grayjay.Desktop.Web/src/components/basics/inputs/TogglePill/index.module.css index bcace2c7..3793dd06 100644 --- a/Grayjay.Desktop.Web/src/components/basics/inputs/TogglePill/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/inputs/TogglePill/index.module.css @@ -1,11 +1,11 @@ .togglePill { width: 100px; border-radius: 6px; - border: 1px solid #444343; + border: 1px solid var(--gj-border-strong); padding-top: 8px; padding-bottom: 8px; text-align: center; - color: #BFBFBF; + color: var(--gj-text-secondary); background: transparant; display: inline-block; @@ -20,5 +20,5 @@ } .togglePill.enabled { border: 1px solid #02C6E7; - color: white; + color: var(--gj-text-primary); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/basics/loaders/CircleLoader/index.module.css b/Grayjay.Desktop.Web/src/components/basics/loaders/CircleLoader/index.module.css index cb6796bc..b4eb6cd7 100644 --- a/Grayjay.Desktop.Web/src/components/basics/loaders/CircleLoader/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/loaders/CircleLoader/index.module.css @@ -1,7 +1,7 @@ .loader { width: 48px; height: 48px; - border: 3px solid #FFF; + border: 3px solid var(--gj-text-primary); border-bottom-color: transparent; border-radius: 50%; display: inline-block; diff --git a/Grayjay.Desktop.Web/src/components/basics/loaders/Loader/index.module.css b/Grayjay.Desktop.Web/src/components/basics/loaders/Loader/index.module.css index 8d2de226..889515d1 100644 --- a/Grayjay.Desktop.Web/src/components/basics/loaders/Loader/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/loaders/Loader/index.module.css @@ -14,9 +14,9 @@ border-radius: 50%; width: 100%; padding-bottom: 100%; - box-shadow: inset 0 0 0 0 #fff; + box-shadow: inset 0 0 0 0 var(--gj-text-primary); animation: pulseInOut 1.8s ease-in-out infinite; - filter: drop-shadow(0 0 1rem rgba(255, 255, 255, 0.75)); + filter: drop-shadow(0 0 1rem var(--gj-loader-glow)); } .loader:after { @@ -25,29 +25,29 @@ border-radius: 50%; width: calc(100% - 2 * var(--T)); padding-bottom: calc(100% - 2 * var(--T)); - box-shadow: 0 0 0 0 #fff; + box-shadow: 0 0 0 0 var(--gj-text-primary); animation: pulseOutIn 1.8s ease-in-out infinite; - filter: drop-shadow(0 0 1rem rgba(255, 255, 255, 0.75)); + filter: drop-shadow(0 0 1rem var(--gj-loader-glow)); } @keyframes pulseInOut { 0%, 100% { - box-shadow: inset 0 0 0 0 #fff; + box-shadow: inset 0 0 0 0 var(--gj-text-primary); opacity: 0; } 50% { - box-shadow: inset 0 0 0 var(--T) #fff; + box-shadow: inset 0 0 0 var(--T) var(--gj-text-primary); opacity: 1; } } @keyframes pulseOutIn { 0%, 100% { - box-shadow: 0 0 0 0 #fff; + box-shadow: 0 0 0 0 var(--gj-text-primary); opacity: 0; } 50% { - box-shadow: 0 0 0 var(--T) #fff; + box-shadow: 0 0 0 var(--T) var(--gj-text-primary); opacity: 1; } } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderContainer/index.module.css b/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderContainer/index.module.css index e68f9088..49607e1d 100644 --- a/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderContainer/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderContainer/index.module.css @@ -4,7 +4,7 @@ position: relative; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } @@ -30,5 +30,5 @@ top: calc(50% + 95px); left: 50%; transform: translateX(-50%); - color: #AAA; + color: var(--gj-text-tertiary); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderGrid/index.module.css b/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderGrid/index.module.css index 120be0db..264de3dc 100644 --- a/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderGrid/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderGrid/index.module.css @@ -3,5 +3,5 @@ height: 100%; position: relative; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderSmall/index.module.css b/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderSmall/index.module.css index 8109960d..3cf0c6d5 100644 --- a/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderSmall/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/loaders/LoaderSmall/index.module.css @@ -4,7 +4,7 @@ position: relative; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } /* HTML:
*/ @@ -13,7 +13,7 @@ aspect-ratio: 1; border-radius: 50%; border: 4px solid; - border-color: #FFF #0000; + border-color: var(--gj-text-primary) #0000; animation: l1 1s infinite; } @keyframes l1 {to{transform: rotate(.5turn)}} \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/basics/loaders/SkeletonDiv/index.module.css b/Grayjay.Desktop.Web/src/components/basics/loaders/SkeletonDiv/index.module.css index d30e1175..a8050125 100644 --- a/Grayjay.Desktop.Web/src/components/basics/loaders/SkeletonDiv/index.module.css +++ b/Grayjay.Desktop.Web/src/components/basics/loaders/SkeletonDiv/index.module.css @@ -4,7 +4,7 @@ height: 100%; /* Adjust to your container’s height */ position: relative; overflow: hidden; - background: #1b1b1b; /* Solid base color */ + background: var(--gj-bg-card); /* Solid base color */ } .skeletonBox::before { @@ -32,4 +32,14 @@ 100% { /* Moves across in 1.76 seconds */ left: 100%; } -} \ No newline at end of file +} +:global(:root[data-theme="light"]) .skeletonBox::before { + background: linear-gradient( + 90deg, + transparent 0%, + rgba(20, 20, 20, 0.04) 30%, + rgba(20, 20, 20, 0.12) 50%, + rgba(20, 20, 20, 0.04) 70%, + transparent 100% + ); +} diff --git a/Grayjay.Desktop.Web/src/components/buttons/BorderButton/index.module.css b/Grayjay.Desktop.Web/src/components/buttons/BorderButton/index.module.css index a3738d3e..5edbc9fd 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/BorderButton/index.module.css +++ b/Grayjay.Desktop.Web/src/components/buttons/BorderButton/index.module.css @@ -1,6 +1,6 @@ .container { border-radius: 6px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); display: flex; height: 56px; @@ -11,7 +11,7 @@ justify-content: center; box-sizing: border-box; - color: #D9D9D9; + color: var(--gj-text-secondary); text-align: center; font-feature-settings: 'clig' off, 'liga' off; font-family: Inter; @@ -41,4 +41,7 @@ .container.small .icon { height: 16px; width: 16px; -} \ No newline at end of file +} +:global(:root[data-theme="light"]) .icon { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/buttons/Button/index.module.css b/Grayjay.Desktop.Web/src/components/buttons/Button/index.module.css index 88539b66..c3ebd3fa 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/Button/index.module.css +++ b/Grayjay.Desktop.Web/src/components/buttons/Button/index.module.css @@ -57,4 +57,13 @@ .text { display: inline-block; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .container .icon { + filter: brightness(0) saturate(100%); +} + +:global(:root[data-theme="light"]) .container:hover .icon, +:global(:root[data-theme="light"]) .container:focus-visible .icon { + filter: brightness(0) saturate(100%); +} diff --git a/Grayjay.Desktop.Web/src/components/buttons/Button/index.tsx b/Grayjay.Desktop.Web/src/components/buttons/Button/index.tsx index 14877cfd..010013de 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/Button/index.tsx +++ b/Grayjay.Desktop.Web/src/components/buttons/Button/index.tsx @@ -26,10 +26,21 @@ const Button: Component = (props) => { }; const style = createMemo(() => { - const bg = props.color ?? '#212122'; - const bgFocus = props.focusColor ?? '#fff'; - const text = props.textColor ?? '#fff'; - const textFocus = props.focusTextColor ?? (props.focusColor ? text : '#141414'); + const normalizeNeutral = (color: string | undefined, fallback: string) => { + if (!color) { + return fallback; + } + const normalized = color.trim().toLowerCase(); + return (normalized === 'var(--gj-bg-control)' || normalized === '#2e2e2e' || normalized === '#222' || normalized === '#222222') + ? fallback + : color; + }; + + const bg = normalizeNeutral(props.color, 'var(--gj-bg-panel-strong)'); + const isNeutral = bg === 'var(--gj-bg-panel-strong)'; + const bgFocus = props.focusColor ?? (isNeutral ? 'var(--gj-bg-card-hover)' : 'var(--gj-text-primary)'); + const text = props.textColor ?? (isNeutral ? 'var(--gj-text-primary)' : 'var(--gj-text-primary)'); + const textFocus = props.focusTextColor ?? (isNeutral ? 'var(--gj-text-primary)' : (props.focusColor ? text : 'var(--gj-bg-popover)')); const iconFilterFocus = props.focusColor ? 'none' : 'brightness(0) saturate(100%)'; return { diff --git a/Grayjay.Desktop.Web/src/components/buttons/CustomButton/index.tsx b/Grayjay.Desktop.Web/src/components/buttons/CustomButton/index.tsx index 6c58975a..ecd5a1d0 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/CustomButton/index.tsx +++ b/Grayjay.Desktop.Web/src/components/buttons/CustomButton/index.tsx @@ -28,24 +28,25 @@ const CustomButton: Component = (props) => { const computedStyle = createMemo(() => { const raw = (props.style ?? {}) as Record; - const bg = + const explicitBg = props.background ?? raw.background ?? raw.backgroundColor ?? - raw['background-color'] ?? - '#212122'; + raw['background-color']; + + const bg = explicitBg ?? 'var(--gj-bg-button-secondary)'; const border = props.border ?? raw.border ?? 'none'; const text = props.textColor ?? raw.color ?? - '#fff'; + 'var(--gj-text-primary)'; - const bgFocus = props.focusColor ?? '#fff'; - const textFocus = props.focusTextColor ?? (props.focusColor ? text : '#141414'); + const bgFocus = props.focusColor ?? (explicitBg ? bg : 'var(--gj-bg-card-hover)'); + const textFocus = props.focusTextColor ?? text; const iconFilterFocus = - props.iconFilterFocus ?? (props.focusColor ? 'none' : 'brightness(0) saturate(100%)'); + props.iconFilterFocus ?? (explicitBg ? 'none' : 'var(--gj-theme-icon-filter)'); const rest = { ...raw }; delete rest.background; diff --git a/Grayjay.Desktop.Web/src/components/buttons/DescriptorButton/index.module.css b/Grayjay.Desktop.Web/src/components/buttons/DescriptorButton/index.module.css index 3729182f..86df80ff 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/DescriptorButton/index.module.css +++ b/Grayjay.Desktop.Web/src/components/buttons/DescriptorButton/index.module.css @@ -10,8 +10,8 @@ padding-top: 15px; padding-bottom: 15px; display: inline-block; - background: linear-gradient(90deg, transparent, #3b3b3b4f); - border: 1.5px solid #2E2E2E; + background: linear-gradient(90deg, transparent, var(--gj-descriptor-gradient)); + border: 1.5px solid var(--gj-border); position: relative; height: 90px; display: grid; @@ -53,7 +53,7 @@ width: 100%; } .text .title{ - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 18px; font-style: normal; @@ -63,7 +63,7 @@ text-overflow: ellipsis; } .text .description{ - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; diff --git a/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.module.css b/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.module.css index 4290859b..ff6e72d7 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.module.css +++ b/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.module.css @@ -56,3 +56,27 @@ display: block; object-fit: contain; } + + +:global(:root[data-theme="light"]) .container.solid { + background: rgba(30, 30, 30, 0.10); +} + +:global(:root[data-theme="light"]) .container.ghost { + background: rgba(30, 30, 30, 0.06); +} + +:global(:root[data-theme="light"]) .container.solid:hover, +:global(:root[data-theme="light"]) .container.ghost:hover, +:global(:root[data-theme="light"]) .container.none:hover, +:global(:root[data-theme="light"]) .container.solid:focus-visible, +:global(:root[data-theme="light"]) .container.ghost:focus-visible, +:global(:root[data-theme="light"]) .container.none:focus-visible { + background: rgba(30, 30, 30, 0.16); +} + +:global(:root[data-theme="light"]) .container.solid .icon, +:global(:root[data-theme="light"]) .container.ghost .icon, +:global(:root[data-theme="light"]) .container.none .icon { + filter: brightness(0) saturate(100%); +} diff --git a/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.tsx b/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.tsx index 3b7adf67..14d39b06 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.tsx +++ b/Grayjay.Desktop.Web/src/components/buttons/IconButton/index.tsx @@ -29,7 +29,7 @@ const IconButton: Component = (props) => { const shape = () => props.shape ?? 'circle'; const computedStyle = createMemo(() => { - const bgFocus = props.focusColor ?? '#fff'; + const bgFocus = props.focusColor ?? 'var(--gj-text-primary)'; const iconFilterFocus = props.iconFilterFocus ?? (props.focusColor ? 'none' : 'brightness(0) saturate(100%)'); diff --git a/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.module.css b/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.module.css index 2d1d1628..7f3b663f 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.module.css +++ b/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.module.css @@ -1,5 +1,5 @@ .container { - background-color: #ffffff0a; + background-color: var(--gj-bg-hover); border-radius: 6px; padding-left: 40px; padding-right: 40px; @@ -16,7 +16,7 @@ justify-content: center; box-sizing: border-box; - color: #EFF9FF; + color: var(--gj-text-primary); text-align: center; font-feature-settings: 'clig' off, 'liga' off; font-family: Inter; diff --git a/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.tsx b/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.tsx index b7c20fa7..738190d9 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.tsx +++ b/Grayjay.Desktop.Web/src/components/buttons/LoadingButton/index.tsx @@ -22,7 +22,7 @@ const LoadingButton: Component = (props) => { }; return ( -
+
); diff --git a/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.module.css b/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.module.css index 111a63e7..8dd6d63b 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.module.css +++ b/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.module.css @@ -53,3 +53,13 @@ line-height: normal; margin-left: 2px; } + + +:global(:root[data-theme="light"]) .container .icon { + filter: brightness(0) saturate(100%); +} + +:global(:root[data-theme="light"]) .container:hover .icon, +:global(:root[data-theme="light"]) .container:focus-visible .icon { + filter: brightness(0) saturate(100%); +} diff --git a/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.tsx b/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.tsx index 6b849a0b..42e63576 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.tsx +++ b/Grayjay.Desktop.Web/src/components/buttons/PillButton/index.tsx @@ -18,10 +18,21 @@ interface PillButtonProps { const PillButton: Component = (props) => { const style = createMemo(() => { - const bg = props.color ?? '#212122'; - const bgFocus = props.focusColor ?? '#fff'; - const text = props.textColor ?? '#fff'; - const textFocus = props.focusTextColor ?? (props.focusColor ? text : '#141414'); + const normalizeNeutral = (color: string | undefined, fallback: string) => { + if (!color) { + return fallback; + } + const normalized = color.trim().toLowerCase(); + return (normalized === 'var(--gj-bg-control)' || normalized === '#2e2e2e' || normalized === '#222' || normalized === '#222222') + ? fallback + : color; + }; + + const bg = normalizeNeutral(props.color, 'var(--gj-bg-panel-strong)'); + const isNeutral = bg === 'var(--gj-bg-panel-strong)'; + const bgFocus = props.focusColor ?? (isNeutral ? 'var(--gj-bg-card-hover)' : 'var(--gj-text-primary)'); + const text = props.textColor ?? (isNeutral ? 'var(--gj-text-primary)' : 'var(--gj-text-primary)'); + const textFocus = props.focusTextColor ?? (isNeutral ? 'var(--gj-text-primary)' : (props.focusColor ? text : 'var(--gj-bg-popover)')); const iconFilterFocus = props.focusColor ? 'none' : 'brightness(0) saturate(100%)'; return { diff --git a/Grayjay.Desktop.Web/src/components/buttons/PillButtonSmall/index.module.css b/Grayjay.Desktop.Web/src/components/buttons/PillButtonSmall/index.module.css index dc92ab23..ca2777b0 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/PillButtonSmall/index.module.css +++ b/Grayjay.Desktop.Web/src/components/buttons/PillButtonSmall/index.module.css @@ -6,7 +6,7 @@ gap: 6px; border-radius: 22px; - background-color: #212122; + background-color: var(--gj-bg-panel-strong); padding-left: 20px; padding-right: 20px; } @@ -21,7 +21,7 @@ } .text { - color: #FFF; + color: var(--gj-text-primary); font-family: "Inter"; font-size: 16px; font-weight: 500; diff --git a/Grayjay.Desktop.Web/src/components/buttons/SubscribeButton/index.tsx b/Grayjay.Desktop.Web/src/components/buttons/SubscribeButton/index.tsx index 218a0ed7..9e874806 100644 --- a/Grayjay.Desktop.Web/src/components/buttons/SubscribeButton/index.tsx +++ b/Grayjay.Desktop.Web/src/components/buttons/SubscribeButton/index.tsx @@ -44,7 +44,7 @@ const SubscribeButton: Component = (props) => { return ( <> - { + { const url = props.author; if (url) unsubscribe(url); @@ -57,7 +57,7 @@ const SubscribeButton: Component = (props) => { } : undefined} /> - { + { const url = props.author; if (url) subscribe(url); @@ -70,7 +70,7 @@ const SubscribeButton: Component = (props) => { } : undefined} /> - { + { }} /> diff --git a/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.module.css b/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.module.css index 31af6761..ceb64ce7 100644 --- a/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.module.css +++ b/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.module.css @@ -2,7 +2,7 @@ position: absolute; top: 0; left: 0; - background-color: #0F0F0FDB; + background-color: var(--gj-bg-backdrop); width: 100vw; height: 100vh; @@ -21,11 +21,11 @@ flex-direction: column; align-items: flex-start; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-elevated); /* Drop Shadow */ - box-shadow: 0px 2px 21px 0px rgba(0, 0, 0, 0.55), 0px 32px 64px 0px rgba(0, 0, 0, 0.56); + box-shadow: var(--gj-shadow); } .containerCastingHeader { @@ -36,7 +36,7 @@ } .containerCastingHeaderTitle { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 20px; font-style: normal; @@ -48,7 +48,7 @@ width: 32px; height: 32px; border-radius: 50%; - background: #2E2E2E; + background: var(--gj-bg-card-active); display: flex; align-items: center; justify-content: center; @@ -68,7 +68,7 @@ } .containerNoDevicesFoundTitle { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 20px; font-style: normal; @@ -89,7 +89,7 @@ align-items: center; flex-direction: row; - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -134,7 +134,7 @@ } .containerDevice:hover { - background-color: #1B1B1B; + background-color: var(--gj-bg-hover); } .containerDevice img { @@ -144,7 +144,7 @@ } .deviceName { - color: #F0F0F0; + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -158,7 +158,7 @@ } .deviceType { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -183,7 +183,7 @@ } .helpText { - color: #019BE7; + color: var(--gj-accent); text-align: center; font-feature-settings: 'clig' off, 'liga' off; font-family: Inter; @@ -209,10 +209,58 @@ flex-direction: column; flex-grow: 1; - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 12px; font-style: normal; font-weight: 300; line-height: 16px; /* 133.333% */ -} \ No newline at end of file +} +.divider { + height: 1px; + width: 100%; + background-color: var(--gj-border); + margin-top: 16px; +} + +.deviceIcon { + width: 24px; + height: 24px; + flex-shrink: 0; +} + +.connectingBody { + display: flex; + width: 100%; + flex-direction: column; + justify-content: center; + align-items: center; + margin-top: 32px; +} + +.connectingTitle { + color: var(--gj-text-primary); + font-family: Inter; + font-size: 24px; + font-style: normal; + font-weight: 600; +} + +.connectingHelp { + color: var(--gj-text-tertiary); + text-align: center; + leading-trim: both; + text-edge: cap; + font-family: Inter; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; + margin-top: 32px; +} + +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .containerDevice img, +:global(:root[data-theme="light"]) .deviceIcon { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.tsx b/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.tsx index 62608260..ebd38d2a 100644 --- a/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.tsx +++ b/Grayjay.Desktop.Web/src/components/casting/OverlayCasting/index.tsx @@ -98,7 +98,7 @@ const CastingDeviceView: Component = (props) => { onOptionsLabel: 'Pin', onOptions: () => props.pinned ? casting?.actions?.removePinnedDevice(props.device) : casting?.actions?.addPinnedDevice(props.device) }}> - +
{props.device.name}
{name}
@@ -175,7 +175,7 @@ const DeviceList: Component = () => { }}
-
+
@@ -309,7 +309,7 @@ const AddDeviceManually: Component = () => {
{ Casting to
- +
{casting?.activeDevice?.device()?.name}
{getDeviceTypeName(casting?.activeDevice?.device())}
@@ -415,10 +415,10 @@ const OverlayCasting: Component = () => {
-
-
Connecting to casting device
+
+
Connecting to casting device
-
Make sure you are on the same network VPNs and guest networks can cause issues
+
Make sure you are on the same network VPNs and guest networks can cause issues
@@ -426,7 +426,7 @@ const OverlayCasting: Component = () => { casting?.actions.disconnect(); }} text='Disconnect' - style={{ border: "1px solid rgba(1, 155, 231, 0)", "margin-left": "16px", "flex-shrink": "0" }} + style={{ border: "1px solid transparent", "margin-left": "16px", "flex-shrink": "0" }} focusableOpts={{ onPress: async () => casting?.actions.disconnect(), onBack: globalBack diff --git a/Grayjay.Desktop.Web/src/components/containers/ContentGrid/index.module.css b/Grayjay.Desktop.Web/src/components/containers/ContentGrid/index.module.css index a76a3f30..c93283d6 100644 --- a/Grayjay.Desktop.Web/src/components/containers/ContentGrid/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/ContentGrid/index.module.css @@ -11,16 +11,16 @@ } .container::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .container::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .container::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .container::-webkit-scrollbar-corner { diff --git a/Grayjay.Desktop.Web/src/components/containers/DataTable/index.module.css b/Grayjay.Desktop.Web/src/components/containers/DataTable/index.module.css index f3fd8205..3e2f8591 100644 --- a/Grayjay.Desktop.Web/src/components/containers/DataTable/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/DataTable/index.module.css @@ -3,7 +3,7 @@ height: 100%; position: relative; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); scrollbar-width: thin; } @@ -12,16 +12,16 @@ } .containerScroll::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .containerScroll::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .containerScroll::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .containerScroll::-webkit-scrollbar-corner { @@ -36,7 +36,7 @@ table .header tr { border-bottom: 0px !important; } table .header th { - background: #1B1B1B; + background: var(--gj-bg-panel); padding-top: 16px; padding-bottom: 16px; } @@ -54,12 +54,12 @@ table .headers th:last-child{ table tr { max-height: 60px; - border-bottom: 1px solid #3b3939; - background: #141414; + border-bottom: 1px solid var(--gj-border); + background: var(--gj-bg-root); } table th { overflow: hidden; - color: #D9D9D9; + color: var(--gj-text-secondary); text-overflow: ellipsis; font-family: sans-serif; font-size: 14px; @@ -89,4 +89,9 @@ table td .tableImage img { .isClickable { cursor: pointer; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) table tr { + border-bottom: 1px solid var(--gj-border); + background: var(--gj-bg-root); +} diff --git a/Grayjay.Desktop.Web/src/components/containers/HorizontalScrollContainer/index.module.css b/Grayjay.Desktop.Web/src/components/containers/HorizontalScrollContainer/index.module.css index b1ef992e..ece78119 100644 --- a/Grayjay.Desktop.Web/src/components/containers/HorizontalScrollContainer/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/HorizontalScrollContainer/index.module.css @@ -3,7 +3,7 @@ overflow-y: hidden; position: relative; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); scrollbar-width: thin; display: flex; flex-direction: row; @@ -14,16 +14,16 @@ } .containerScroll::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .containerScroll::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .containerScroll::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .containerScroll::-webkit-scrollbar-corner { @@ -35,7 +35,7 @@ overflow-y: hidden; position: relative; scrollbar-width: 8px; - scrollbar-color: #292929 transparent; + scrollbar-color: var(--gj-scroll-thumb) transparent; scrollbar-width: thin; display: flex; flex-direction: row; diff --git a/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.module.css b/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.module.css index 65d666b2..8f046959 100644 --- a/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.module.css @@ -11,7 +11,7 @@ overflow-y: auto; overflow-x: hidden; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); scrollbar-width: thin; } @@ -20,16 +20,16 @@ } .containerScroll::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .containerScroll::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .containerScroll::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .containerScroll::-webkit-scrollbar-corner { diff --git a/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.tsx b/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.tsx index 8e5865c3..f2692885 100644 --- a/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.tsx +++ b/Grayjay.Desktop.Web/src/components/containers/ScrollContainer/index.tsx @@ -66,7 +66,7 @@ const ScrollContainer: Component = (p) => {
diff --git a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldDropDown/index.module.css b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldDropDown/index.module.css index bf4aeb27..8a37d882 100644 --- a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldDropDown/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldDropDown/index.module.css @@ -9,7 +9,7 @@ flex-wrap: nowrap; } .container:focus-visible { - background: #454545; + background: var(--gj-bg-selected-strong); border-radius: 6px; outline: unset; } @@ -17,7 +17,7 @@ width: 60%; } .descriptor .title { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -29,7 +29,7 @@ } .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -50,8 +50,8 @@ .select { border-radius: 8px; - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-elevated); padding: 14px; - color: white; + color: var(--gj-text-primary); } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldGroup/index.module.css b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldGroup/index.module.css index b7f77841..e8d58bae 100644 --- a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldGroup/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldGroup/index.module.css @@ -1,14 +1,14 @@ .container { width: 100%; - border-top: 1px solid #363636; - border-bottom: 1px solid #363636; + border-top: 1px solid var(--gj-border); + border-bottom: 1px solid var(--gj-border); padding-top: 24px; padding-bottom: 8px; } .header { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 20px; font-style: normal; @@ -16,7 +16,7 @@ line-height: 24px; /* 109.091% */ } .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; diff --git a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldKey/index.module.css b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldKey/index.module.css index de205643..5f4fab09 100644 --- a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldKey/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldKey/index.module.css @@ -16,7 +16,7 @@ margin-left: 20px; } .descriptor .title { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -31,7 +31,7 @@ margin-bottom: 8px; } .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; diff --git a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldReadOnly/index.module.css b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldReadOnly/index.module.css index 83e64c4b..1e066c96 100644 --- a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldReadOnly/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldReadOnly/index.module.css @@ -13,7 +13,7 @@ } .descriptor .title { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -23,7 +23,7 @@ line-height: 24px; /* 133.333% */ } .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; diff --git a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldToggle/index.module.css b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldToggle/index.module.css index 5da1232f..f65cb65a 100644 --- a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldToggle/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/fields/FieldToggle/index.module.css @@ -11,7 +11,7 @@ } .container:focus-visible { - background: #454545; + background: var(--gj-bg-selected-strong); border-radius: 6px; outline: unset; } @@ -19,7 +19,7 @@ width: 60%; } .descriptor .title { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -29,7 +29,7 @@ line-height: 24px; /* 133.333% */ } .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; diff --git a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/index.module.css b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/index.module.css index 55f083fd..90c72ef8 100644 --- a/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/index.module.css +++ b/Grayjay.Desktop.Web/src/components/containers/SettingsContainer/index.module.css @@ -7,16 +7,16 @@ } .container::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-scroll-thumb); border-radius: 5px; } .container::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-scroll-thumb-hover); } .container::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-scroll-track); } .container::-webkit-scrollbar-corner { diff --git a/Grayjay.Desktop.Web/src/components/content/CreatorView/index.module.css b/Grayjay.Desktop.Web/src/components/content/CreatorView/index.module.css index 931e657e..492a9e55 100644 --- a/Grayjay.Desktop.Web/src/components/content/CreatorView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/content/CreatorView/index.module.css @@ -4,7 +4,7 @@ justify-content: center; align-items: center; border-radius: 8px; - background: #1B1B1B; + background: var(--gj-bg-card); margin-right: 16px; margin-bottom: 16px; height: calc(100% - 16px); @@ -21,7 +21,7 @@ .name { overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); text-align: center; text-wrap: nowrap; text-overflow: ellipsis; @@ -36,7 +36,7 @@ } .metadata { - color: #6a6a6a; + color: var(--gj-text-tertiary); text-align: center; font-feature-settings: 'clig' off, 'liga' off; font-family: Inter; @@ -46,4 +46,10 @@ font-weight: 400; line-height: 140%; margin-top: 4px; -} \ No newline at end of file +} + +.containerCreator:focus-visible, +.containerCreator:hover { + background: var(--gj-bg-card-hover); + outline: unset; +} diff --git a/Grayjay.Desktop.Web/src/components/content/LockedContentThumbnailView/index.module.css b/Grayjay.Desktop.Web/src/components/content/LockedContentThumbnailView/index.module.css index fff2232f..0b0398d4 100644 --- a/Grayjay.Desktop.Web/src/components/content/LockedContentThumbnailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/content/LockedContentThumbnailView/index.module.css @@ -16,8 +16,11 @@ width: 100%; height: auto; aspect-ratio: 16/9; - background-color: rgba(0,0,0,.5); + background: var(--gj-video-overlay-bg); border-radius: 8px; + border: 1px solid var(--gj-video-overlay-border); + color: var(--gj-video-overlay-text); + box-sizing: border-box; } .lockedTextContainer { margin-top: 30px; @@ -35,7 +38,7 @@ .lockedUrl { margin-top: 10px; font-size: 12px; - color: #0000DD; + color: var(--gj-accent); } @@ -61,13 +64,13 @@ .duration { border-radius: 4px; - background: #000000EE; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); /*leading-trim: both; -NOT SUPPORTED YET BY BROWSERS*/ @@ -81,29 +84,13 @@ } .isLive { border-radius: 4px; - background: red; + background: var(--gj-live-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; - padding: 6px 8px; - + color: var(--gj-live-badge-text); padding: 5px 8px; - - color: #FFF; - - - - - font-family: Inter; - font-size: 14px; - font-style: normal; - font-weight: 200; - line-height: normal; - - - color: #FFF; font-family: Inter; font-size: 14px; font-style: normal; @@ -112,13 +99,13 @@ } .isPlanned { border-radius: 3px; - background: #222; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); @@ -186,4 +173,14 @@ line-height: 1.2em; height: 1.2em; flex-grow: 1; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .duration { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} + +:global(:root[data-theme="light"]) .isPlanned { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} diff --git a/Grayjay.Desktop.Web/src/components/content/NestedMediaThumbnailView/index.module.css b/Grayjay.Desktop.Web/src/components/content/NestedMediaThumbnailView/index.module.css index 698156f1..56cc0153 100644 --- a/Grayjay.Desktop.Web/src/components/content/NestedMediaThumbnailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/content/NestedMediaThumbnailView/index.module.css @@ -39,13 +39,13 @@ .duration { border-radius: 4px; - background: #000000EE; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); /*leading-trim: both; -NOT SUPPORTED YET BY BROWSERS*/ @@ -59,29 +59,13 @@ } .isLive { border-radius: 4px; - background: red; + background: var(--gj-live-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; - padding: 6px 8px; - + color: var(--gj-live-badge-text); padding: 5px 8px; - - color: #FFF; - - - - - font-family: Inter; - font-size: 14px; - font-style: normal; - font-weight: 200; - line-height: normal; - - - color: #FFF; font-family: Inter; font-size: 14px; font-style: normal; @@ -90,13 +74,13 @@ } .isPlanned { border-radius: 3px; - background: #222; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); @@ -164,4 +148,14 @@ line-height: 1.2em; height: 1.2em; flex-grow: 1; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .duration { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} + +:global(:root[data-theme="light"]) .isPlanned { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} diff --git a/Grayjay.Desktop.Web/src/components/content/PlaceholderThumbnailView/index.module.css b/Grayjay.Desktop.Web/src/components/content/PlaceholderThumbnailView/index.module.css index 36cbadb2..c5904202 100644 --- a/Grayjay.Desktop.Web/src/components/content/PlaceholderThumbnailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/content/PlaceholderThumbnailView/index.module.css @@ -50,7 +50,7 @@ flex-direction: row; margin-top: 24px; font-size: 16px; - color: #808080; + color: var(--gj-text-tertiary); align-items: center; overflow: hidden; } diff --git a/Grayjay.Desktop.Web/src/components/content/PlaylistView/index.module.css b/Grayjay.Desktop.Web/src/components/content/PlaylistView/index.module.css index 1c1639bc..d9973979 100644 --- a/Grayjay.Desktop.Web/src/components/content/PlaylistView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/content/PlaylistView/index.module.css @@ -1,4 +1,5 @@ .container { + background: var(--gj-bg-card); width: 100%; height: 100%; @@ -24,6 +25,7 @@ } .title { + color: var(--gj-text-primary); font-size: 18px; font-weight: 500; height: 1.2em; @@ -37,7 +39,7 @@ aspect-ratio: 16/9; background-size: cover; border-radius: 8.88px; - background: #262626; + background: var(--gj-bg-card); position: absolute; left: 50%; @@ -51,7 +53,7 @@ aspect-ratio: 16/9; background-size: cover; border-radius: 8.88px; - background: #2F2F2F; + background: var(--gj-bg-card-active); position: absolute; left: 50%; @@ -64,7 +66,7 @@ width: 100%; aspect-ratio: 16/9; border-radius: 8.88px; - background: hsl(0, 0%, 22%); + background: var(--gj-bg-card); position: absolute; left: 50%; @@ -75,7 +77,7 @@ justify-content: center; align-items: center; - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -90,7 +92,7 @@ .metadata { overflow: hidden; - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; text-overflow: ellipsis; @@ -106,4 +108,22 @@ bottom: 12px; left: 12px; width: 28px; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .container { + background: var(--gj-bg-panel); + border: 1px solid var(--gj-border); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03); +} + +:global(:root[data-theme="light"]) .thumb2 { + background: var(--gj-bg-soft); +} + +:global(:root[data-theme="light"]) .thumb1 { + background: var(--gj-bg-card); +} + +:global(:root[data-theme="light"]) .thumb { + background: var(--gj-bg-panel); +} diff --git a/Grayjay.Desktop.Web/src/components/content/PostThumbnailView/index.module.css b/Grayjay.Desktop.Web/src/components/content/PostThumbnailView/index.module.css index b066c72a..15b1a3d6 100644 --- a/Grayjay.Desktop.Web/src/components/content/PostThumbnailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/content/PostThumbnailView/index.module.css @@ -51,13 +51,13 @@ .duration { border-radius: 4px; - background: #000000EE; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); /*leading-trim: both; -NOT SUPPORTED YET BY BROWSERS*/ @@ -71,29 +71,13 @@ } .isLive { border-radius: 4px; - background: red; + background: var(--gj-live-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; - padding: 6px 8px; - + color: var(--gj-live-badge-text); padding: 5px 8px; - - color: #FFF; - - - - - font-family: Inter; - font-size: 14px; - font-style: normal; - font-weight: 200; - line-height: normal; - - - color: #FFF; font-family: Inter; font-size: 14px; font-style: normal; @@ -102,13 +86,13 @@ } .isPlanned { border-radius: 3px; - background: #222; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); @@ -201,4 +185,22 @@ } .thumbnail { z-index: 999; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .duration { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} + +:global(:root[data-theme="light"]) .isPlanned { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} + +:global(:root[data-theme="light"]) .description { + color: var(--gj-text-secondary); +} + +:global(:root[data-theme="light"]) .descriptionOverlay { + background: linear-gradient(0deg, var(--gj-bg-root), var(--gj-bg-root), rgba(245, 245, 243, 0.0)); +} diff --git a/Grayjay.Desktop.Web/src/components/content/VideoThumbnailView/index.module.css b/Grayjay.Desktop.Web/src/components/content/VideoThumbnailView/index.module.css index 27cc1e4a..d8196f61 100644 --- a/Grayjay.Desktop.Web/src/components/content/VideoThumbnailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/content/VideoThumbnailView/index.module.css @@ -43,13 +43,13 @@ .duration { border-radius: 4px; - background: #000000EE; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); /*leading-trim: both; -NOT SUPPORTED YET BY BROWSERS*/ @@ -63,29 +63,13 @@ } .isLive { border-radius: 4px; - background: red; + background: var(--gj-live-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; - padding: 6px 8px; - + color: var(--gj-live-badge-text); padding: 5px 8px; - - color: #FFF; - - - - - font-family: Inter; - font-size: 14px; - font-style: normal; - font-weight: 200; - line-height: normal; - - - color: #FFF; font-family: Inter; font-size: 14px; font-style: normal; @@ -94,13 +78,13 @@ } .isPlanned { border-radius: 3px; - background: #222; + background: var(--gj-thumbnail-badge-bg); position: absolute; right: 12px; bottom: 12px; - color: #D9D9D9; + color: var(--gj-thumbnail-badge-text); padding: 6px 8px; - color: #FFF; + color: var(--gj-thumbnail-badge-text); @@ -180,4 +164,18 @@ .progressBarProgress { height: 3px; background-color: #3333FFAA; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .duration { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} + +:global(:root[data-theme="light"]) .isPlanned { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} + +:global(:root[data-theme="light"]) .sourceIcon { + filter: none; +} diff --git a/Grayjay.Desktop.Web/src/components/contentDetails/PostDetailsView/index.module.css b/Grayjay.Desktop.Web/src/components/contentDetails/PostDetailsView/index.module.css index c81aa0a5..23b5808a 100644 --- a/Grayjay.Desktop.Web/src/components/contentDetails/PostDetailsView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/contentDetails/PostDetailsView/index.module.css @@ -99,7 +99,7 @@ } .authorName { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -111,7 +111,7 @@ } .authorMetadata { - color: #808080; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; diff --git a/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.module.css b/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.module.css index 98a1826e..35a0fc03 100644 --- a/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.module.css @@ -2,7 +2,7 @@ position: absolute; width: 100vw; height: 100vh; - background-color: #171719; + background-color: var(--gj-bg-root); display: flex; flex-direction: column; @@ -17,6 +17,11 @@ position: absolute; top: 20px; left: 20px; + width: 24px; + height: 24px; + padding: 8px; + border-radius: 999px; + background: rgba(0, 0, 0, 0.42); transition: transform 0.1s; cursor: pointer; } @@ -43,6 +48,11 @@ position: absolute; top: 20px; right: 20px; + width: 24px; + height: 24px; + padding: 8px; + border-radius: 999px; + background: rgba(0, 0, 0, 0.42); cursor: pointer; } @@ -81,7 +91,7 @@ } .authorName { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -93,7 +103,7 @@ } .authorMetadata { - color: #808080; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -115,7 +125,7 @@ } .title { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -133,7 +143,7 @@ } .metadata { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: "Inter"; @@ -180,7 +190,7 @@ gap: 8px; box-sizing: border-box; - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -196,7 +206,7 @@ } .description > a { - color: #019BE7; + color: var(--gj-accent); text-decoration: none; } @@ -211,7 +221,8 @@ padding-top: 24px; border-radius: 12px; - background: rgba(255, 255, 255, 0.03); + border: 1px solid var(--gj-border); + background: var(--gj-bg-card); } .showMoreShowLessFade { @@ -227,7 +238,7 @@ width: 100%; height: 100px; border-radius: 10px; - background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #212122); + background: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--gj-bg-card)); pointer-events: none; } @@ -242,7 +253,7 @@ left: 0px; position: absolute; width: 100%; - color: #019BE7; + color: var(--gj-accent); cursor: pointer; } @@ -260,7 +271,7 @@ } .commentHeaderTitle { - color: #F0F0F0; + color: var(--gj-text-primary); font-family: Inter; font-size: 28px; @@ -300,8 +311,8 @@ gap: 12px; align-self: stretch; border-radius: 8px; - border: 1px solid #2E2E2E; - background: #212121; + border: 1px solid var(--gj-border); + background: var(--gj-bg-card); margin-left: 40px; margin-right: 40px; margin-top: 16px; @@ -320,7 +331,7 @@ .recommendationItemTitle { overflow: hidden; - color: #D9D9D9; + color: var(--gj-text-primary); text-overflow: ellipsis; font-family: Inter; font-size: 14px; @@ -332,7 +343,7 @@ } .recommendationItemAuthor { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -352,12 +363,31 @@ .liveChatError { width: 70%; text-align: center; - background-color: #111; + background-color: var(--gj-bg-card); margin-left: auto; margin-right: auto; margin-top: 20px; margin-bottom: 20px; padding: 10px; border-radius: 10px; - color: #DD7777; -} \ No newline at end of file + color: #c65f5f; +} + + +/* player overlay controls must stay readable over video */ +.pinned, +.loop { + border-radius: 999px; + background: rgba(0, 0, 0, 0.28); + filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.95)); +} + +.pinned:hover, +.loop:hover { + background: rgba(0, 0, 0, 0.46); +} + +:global(:root[data-theme="light"]) .loop, +:global(:root[data-theme="light"]) .pinned { + filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.95)); +} diff --git a/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.tsx b/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.tsx index 168fc07e..80433d70 100644 --- a/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.tsx +++ b/Grayjay.Desktop.Web/src/components/contentDetails/VideoDetailView/index.tsx @@ -1894,7 +1894,7 @@ const VideoDetailView: Component = (props) => { /*overscan={10}*/ /> -
+
{(typeof commentsPager$()?.error == 'string') ? commentsPager$()?.error : commentsPager$()?.error.title}
@@ -2002,13 +2002,13 @@ const VideoDetailView: Component = (props) => { "width": "100vw", "height": "100vh", "display": "flex", - "background-color": "rgba(15, 15, 15, 0.86)", + "background-color": "var(--gj-bg-backdrop)", "justify-content": "center", "align-items": "center", "z-index": mode() === VideoMode.Theatre ? 2 : undefined }} onClick={() => hideReplies()}> }> -
{ +
{ e.stopPropagation(); e.preventDefault(); }} use:focusScope={{ @@ -2026,8 +2026,8 @@ const VideoDetailView: Component = (props) => { hideReplies(); e.stopPropagation(); e.preventDefault(); - }} style="width: 32px; height: 32px; border-radius: 50%; background: #2E2E2E; display: flex; align-items: center; justify-content: center; cursor: pointer;"> - + }} style="width: 32px; height: 32px; border-radius: 50%; background: var(--gj-bg-panel-strong); display: flex; align-items: center; justify-content: center; cursor: pointer; border: 1px solid var(--gj-border);"> +
@@ -2037,7 +2037,7 @@ const VideoDetailView: Component = (props) => { comment={item} onClick={(ev) => handleContainerClick(ev)} style={{ - "background-color": "#2E2E2E", + "background-color": "var(--gj-bg-card-active)", "border-radius": "8px", "overflow": "hidden", "padding-left": "12px", diff --git a/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.module.css b/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.module.css index 1b2367e0..4a5b4508 100644 --- a/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.module.css @@ -8,7 +8,7 @@ } .downloadingCard .title { overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); leading-trim: both; @@ -25,7 +25,7 @@ text-wrap: nowrap; } .downloadingCard .author { - color: #F0F0F0; + color: var(--gj-text-primary); leading-trim: both; @@ -41,7 +41,7 @@ text-overflow: ellipsis; } .downloadingCard .meta { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -55,46 +55,40 @@ height: auto; aspect-ratio: 16/9; position: relative; - background-color: white; + background-color: var(--gj-bg-card); background-size: cover; border-radius: 8px; overflow: hidden; } .downloadingCard .badgeStatus { - border-radius: 3px; - background: #000000EE; + border-radius: 4px; + background: var(--gj-thumbnail-badge-bg); position: absolute; - right: 10px; - bottom: 10px; - color: #D9D9D9; + right: 12px; + bottom: 12px; + color: var(--gj-thumbnail-badge-text); display: flex; - - text-edge: cap; + align-items: center; font-family: Inter; font-size: 14px; font-style: normal; - font-weight: 500; + font-weight: 200; line-height: normal; - padding: 6px 9px; + padding: 6px 8px; } .downloadingCard .badgeSize { - color: #FFF; - background: #000000EE; - border-radius: 3px; - - leading-trim: both; - - text-edge: cap; + color: var(--gj-thumbnail-badge-text); + background: var(--gj-thumbnail-badge-bg); + border-radius: 4px; font-family: Inter; font-size: 14px; font-style: normal; - font-weight: 500; + font-weight: 200; line-height: normal; - padding: 6px 9px; - + padding: 6px 8px; position: absolute; - bottom: 10px; - left: 10px; + bottom: 12px; + left: 12px; } .downloadingCard .progress { @@ -105,4 +99,9 @@ bottom: 0px; left: 0px; -} \ No newline at end of file +} +:global(:root[data-theme="light"]) .downloadingCard .badgeStatus, +:global(:root[data-theme="light"]) .downloadingCard .badgeSize { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} diff --git a/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.tsx b/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.tsx index 9241d8cb..dfa50735 100644 --- a/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.tsx +++ b/Grayjay.Desktop.Web/src/components/downloads/DownloadedView/index.tsx @@ -83,33 +83,6 @@ const DownloadedView: Component = (props) => {
) - /* - return ( -
-
- -
-
- {downloading$().video.name} -
-
- Download Speed: {downloading$().downloadSpeed} -
-
- State: {downloading$().state} -
- -
- Error: {downloading$().error}; -
-
-
-
- -
-
-
- );*/ }; -export default DownloadedView; \ No newline at end of file +export default DownloadedView; diff --git a/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.module.css b/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.module.css index 6b017660..f028e5a4 100644 --- a/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.module.css @@ -5,7 +5,7 @@ justify-content: center; align-items: center; border-radius: 8px; - background: #1B1B1B; + background: var(--gj-bg-card); margin-right: 12px; margin-bottom: 12px; padding: 12px; @@ -19,7 +19,7 @@ .name { overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); text-align: center; text-wrap: nowrap; text-overflow: ellipsis; @@ -33,7 +33,7 @@ } .metadata { - color: #8C8C8C; + color: var(--gj-text-tertiary); text-align: center; font-feature-settings: 'clig' off, 'liga' off; font-family: Inter; @@ -52,7 +52,7 @@ } .downloadingCard .title { overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); leading-trim: both; @@ -69,7 +69,7 @@ text-wrap: nowrap; } .downloadingCard .author { - color: #F0F0F0; + color: var(--gj-text-primary); leading-trim: both; @@ -85,7 +85,7 @@ text-overflow: ellipsis; } .downloadingCard .meta { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -105,48 +105,42 @@ } .downloadingCard .statusIcon { display: inline-block; + width: 16px; height: 16px; - margin-top:0px; - margin-right: 5px; + margin-top: 0px; + margin-right: 0px; vertical-align: top; } .downloadingCard .badgeStatus { display: flex; - border-radius: 3px; - background: #000; + align-items: center; + gap: 6px; + border-radius: 4px; + background: var(--gj-thumbnail-badge-bg); position: absolute; - right: 10px; - bottom: 10px; - color: #D9D9D9; - border-radius:99px; - - - text-edge: cap; + right: 12px; + bottom: 12px; + color: var(--gj-thumbnail-badge-text); font-family: Inter; font-size: 14px; font-style: normal; - font-weight: 500; + font-weight: 200; line-height: normal; - padding: 8px; + padding: 6px 8px; } .downloadingCard .badgeSize { - color: #FFF; - background-color: black; - border-radius: 3px; - - leading-trim: both; - - text-edge: cap; + color: var(--gj-thumbnail-badge-text); + background: var(--gj-thumbnail-badge-bg); + border-radius: 4px; font-family: Inter; font-size: 14px; font-style: normal; - font-weight: 500; + font-weight: 200; line-height: normal; - padding: 8px; - + padding: 6px 8px; position: absolute; - bottom: 10px; - left: 10px; + bottom: 12px; + left: 12px; } .downloadingCard .progress { @@ -164,22 +158,22 @@ left: 10px; right: 10px; top: 60px; - background-color: #000000AA; + background: var(--gj-thumbnail-badge-bg); border-radius: 8px; padding: 8px; padding-top: 10px; padding-bottom: 10px; font-size: 12px; text-align: center; + color: var(--gj-thumbnail-badge-text); } .downloadingCard .buttonCancel { position: absolute; right: 10px; top: 10px; - /* padding: 10px; */ width: 15px; - background-color: #111111; + background-color: var(--gj-bg-popover); height: 15px; padding: 5px; border-radius: 3px; @@ -187,4 +181,22 @@ .downloadingCard .buttonCancel img { height: 100%; width: 100%; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .downloadingCard .buttonCancel { + background: var(--gj-thumbnail-badge-bg); +} + +:global(:root[data-theme="light"]) .downloadingCard .buttonCancel img { + filter: var(--gj-theme-icon-filter); +} + +:global(:root[data-theme="light"]) .downloadingCard .badgeStatus, +:global(:root[data-theme="light"]) .downloadingCard .badgeSize { + background: var(--gj-thumbnail-badge-bg); + color: var(--gj-thumbnail-badge-text); +} + +:global(:root[data-theme="light"]) .downloadingCard .statusIcon { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.tsx b/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.tsx index c6b22630..53fb367b 100644 --- a/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.tsx +++ b/Grayjay.Desktop.Web/src/components/downloads/DownloadingView/index.tsx @@ -169,33 +169,6 @@ const DownloadingView: Component = (props) => {
) - /* - return ( -
-
- -
-
- {downloading$().video.name} -
-
- Download Speed: {downloading$().downloadSpeed} -
-
- State: {downloading$().state} -
- -
- Error: {downloading$().error}; -
-
-
-
- -
-
-
- );*/ }; -export default DownloadingView; \ No newline at end of file +export default DownloadingView; diff --git a/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.module.css b/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.module.css index fcd3785b..47f16c14 100644 --- a/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.module.css +++ b/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.module.css @@ -7,7 +7,7 @@ height:auto; z-index:9; max-height: 100%; - background-color: #141414; + background-color: var(--gj-bg-elevated); width: 320px; --menu-pad: 12px; padding-left: var(--menu-pad); @@ -18,12 +18,12 @@ margin-top: 6px; border-radius: 10px; - border: 1px solid #2E2E2E; - box-shadow: 0px 1.852px 3.148px 0px rgba(0, 0, 0, 0.06), 0px 8.148px 6.519px 0px rgba(0, 0, 0, 0.10), 0px 20px 13px 0px rgba(0, 0, 0, 0.13), 0px 38.519px 25.481px 0px rgba(0, 0, 0, 0.15), 0px 64.815px 46.852px 0px rgba(0, 0, 0, 0.19), 0px 100px 80px 0px rgba(0, 0, 0, 0.25); + border: 1px solid var(--gj-border); + box-shadow: var(--gj-shadow); } .title { - color: #FFF; + color: var(--gj-text-primary); font-family: "Inter"; leading-trim: both; @@ -50,7 +50,7 @@ .separator { height: 1px; - background: #2E2E2E; + background: var(--gj-border); margin-top: 3px; margin-bottom: 3px; } @@ -64,7 +64,7 @@ padding-right: calc(15px + var(--menu-pad)); } .menuItem .key { - color: #D7D7D7; + color: var(--gj-text-secondary); font-size: 15px; font-style: normal; font-weight: 400; @@ -74,7 +74,7 @@ font-family: "Inter"; } .menuItem .value { - color: #FFF; + color: var(--gj-text-primary); font-size: 15px; width: calc(100% - 180px); text-align: right; @@ -108,11 +108,11 @@ padding-right: 6px; padding-top: 4px; padding-bottom: 4px; - background-color: rgba(0,0,0,.5); - border: 1px solid #222222; + background-color: var(--gj-bg-panel-strong); + border: 1px solid var(--gj-border); } .menuItem .filterHorizontalOption.isActive { - background-color: rgba(255,255,255,.1); + background-color: var(--gj-bg-selected); } .menuItem .filterHorizontalOption:first-child { border-top-left-radius: 5px; @@ -133,10 +133,10 @@ } .menuItem.isGroup:hover { - background-color: rgba(255,255,255,0.1); + background-color: var(--gj-bg-selected); } .menuItem.option:hover { - background-color: rgba(255,255,255,0.1); + background-color: var(--gj-bg-selected); } .menuItem .expander { position: absolute; @@ -151,7 +151,7 @@ } .menuItem .expander img { height: 100%; - color: #969696; + color: var(--gj-text-tertiary); } .menuItem.isGroup .expander { display: block; @@ -204,7 +204,7 @@ line-height: 15px; font-size: 14px; margin-top: 5px; - color: #555555; + color: var(--gj-text-tertiary); } .menuToggle { @@ -238,7 +238,7 @@ } .menuToggle .nameContainer .name { - color: #F0F0F0; + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -282,7 +282,7 @@ } .menuHeader .nameContainer .name { - color: #F0F0F0; + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -313,6 +313,70 @@ .menuButton:focus-visible, .menuToggle:focus-visible, .filterHorizontalOption:focus-visible { - background-color: #2e2e2e; - outline: none; -} \ No newline at end of file + background-color: var(--gj-bg-selected); +} + +.pluginIcon { + filter: none; +} + +:global(:root[data-theme="light"]) .menuToggle .pluginIcon { + filter: none; + opacity: 1; +} + +:global(:root[data-theme="light"]) .menuItem .expander img, +:global(:root[data-theme="light"]) .menu > div:first-child img { + filter: var(--gj-theme-icon-filter); +} + +:global(:root[data-theme="light"]) .menuToggle .nameContainer .name, +:global(:root[data-theme="light"]) .menuHeader .nameContainer .name, +:global(:root[data-theme="light"]) .menuButton .name, +:global(:root[data-theme="light"]) .menuButton .nameWithDescription, +:global(:root[data-theme="light"]) .menuItem .name, +:global(:root[data-theme="light"]) .menuItem .key, +:global(:root[data-theme="light"]) .menuItem .value, +:global(:root[data-theme="light"]) .filterHorizontalOption { + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .menuToggle .nameContainer .description, +:global(:root[data-theme="light"]) .menuHeader .nameContainer .description, +:global(:root[data-theme="light"]) .menuButton .description { + color: var(--gj-text-tertiary); +} + +:global(:root[data-theme="light"]) .menuButton .icon, +:global(:root[data-theme="light"]) .menuToggle .icon:not(.pluginIcon), +:global(:root[data-theme="light"]) .menuHeader .icon, +:global(:root[data-theme="light"]) .menuItem .expander img, +:global(:root[data-theme="light"]) .menu > div:first-child img { + filter: var(--gj-theme-icon-filter); + opacity: 1; +} + +:global(:root[data-theme="light"]) .menuButton .icon { + width: 25px; + height: 25px; + flex-shrink: 0; +} + +:global(:root[data-theme="light"]) .menuButton:hover, +:global(:root[data-theme="light"]) .menuButton:focus-visible, +:global(:root[data-theme="light"]) .menuToggle:hover, +:global(:root[data-theme="light"]) .menuToggle:focus-visible, +:global(:root[data-theme="light"]) .menuItem.option:hover, +:global(:root[data-theme="light"]) .menuItem.option:focus-visible, +:global(:root[data-theme="light"]) .menuItem.isGroup:hover, +:global(:root[data-theme="light"]) .menuItem.isGroup:focus-visible { + background-color: var(--gj-bg-selected); +} + +:global(:root[data-theme="light"]) .menuButton:hover, +:global(:root[data-theme="light"]) .menuToggle:hover, +:global(:root[data-theme="light"]) .menuItem.isGroup:hover, +:global(:root[data-theme="light"]) .menuItem.option:hover, +:global(:root[data-theme="light"]) .filterHorizontalOption:focus-visible { + background-color: var(--gj-bg-selected); +} diff --git a/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.tsx b/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.tsx index b915ba0a..583a478a 100644 --- a/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.tsx +++ b/Grayjay.Desktop.Web/src/components/menus/Overlays/SettingsMenu/index.tsx @@ -267,6 +267,22 @@ const SettingsMenu: Component = (props: SettingsMenuProps) => if(props.onHide) props.onHide(); } + function isExternalMenuIcon(icon: string | undefined): boolean { + if (!icon) { + return false; + } + + const normalized = icon.toLowerCase(); + const isLocalAsset = + normalized.includes('/assets/') || + normalized.includes('assets/icons') || + normalized.includes('src/assets/') || + normalized.startsWith('./assets/') || + normalized.startsWith('../assets/'); + + return !isLocalAsset; + } + function clickButton(option: IMenuButton) { console.log("Button clicked", option); option?.onClick(); @@ -292,7 +308,7 @@ const SettingsMenu: Component = (props: SettingsMenuProps) => onBack: onBack, }}> - +
= (props: SettingsMenuProps) => onBack: onBack, }}> - +
= (props: SettingsMenuProps) => >
{(item as IMenuItemOption).name}
diff --git a/Grayjay.Desktop.Web/src/components/menus/SideBar/index.module.css b/Grayjay.Desktop.Web/src/components/menus/SideBar/index.module.css index f28a69e9..4b65d8d1 100644 --- a/Grayjay.Desktop.Web/src/components/menus/SideBar/index.module.css +++ b/Grayjay.Desktop.Web/src/components/menus/SideBar/index.module.css @@ -1,8 +1,8 @@ .sidebar { width: 260px; height: calc(100vh - 20px); - border-right: #2E2E2E 1px solid; - background: #1B1B1B; + border-right: var(--gj-border) 1px solid; + background: var(--gj-bg-sidebar); padding: 10px; display: flex; flex-direction: column; @@ -44,7 +44,7 @@ flex-direction: column; align-items: center; gap: 4px; - border-top: 1px solid #2E2E2E; + border-top: 1px solid var(--gj-border); padding-bottom: 0px; padding-top: 10px; flex-shrink: 0; @@ -60,26 +60,26 @@ .collapse:hover { cursor: pointer; - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); } .collapse.selected:focus { - background: rgba(255, 255, 255, 0.15); + background: var(--gj-bg-selected-strong); outline: unset; } .collapse:focus { - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); outline: unset; } .width.selected:focus { - background: rgba(255, 255, 255, 0.15); + background: var(--gj-bg-selected-strong); outline: unset; } .width:focus { - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); outline: unset; } @@ -106,7 +106,7 @@ flex-direction: row; text-transform: uppercase; letter-spacing: 2.94px; - color: #8C8C8C; + color: var(--gj-text-tertiary); font-size: 14px; cursor: pointer; } @@ -133,7 +133,7 @@ width: 100%; margin-left: 4px; margin-bottom: 8px; - color: #FFF; + color: var(--gj-text-primary); font-family: Sen; font-size: 20px; font-style: normal; @@ -165,8 +165,8 @@ width: 280px; height: 100%; - background: #1B1B1B; - border-right: #2E2E2E 1px solid; + background: var(--gj-bg-sidebar); + border-right: var(--gj-border) 1px solid; pointer-events: none; } @@ -178,4 +178,13 @@ width: 260px; height: calc(100% - 20px); z-index: 1; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .collapse { + filter: brightness(0) saturate(100%) invert(22%); +} + +:global(:root[data-theme="light"]) .collapse:hover, +:global(:root[data-theme="light"]) .collapse:focus { + background: var(--gj-bg-selected); +} diff --git a/Grayjay.Desktop.Web/src/components/menus/SideBar/index.tsx b/Grayjay.Desktop.Web/src/components/menus/SideBar/index.tsx index ed236c2a..0f5efd47 100644 --- a/Grayjay.Desktop.Web/src/components/menus/SideBar/index.tsx +++ b/Grayjay.Desktop.Web/src/components/menus/SideBar/index.tsx @@ -128,6 +128,7 @@ const SideBar: Component = (props: SideBarProps) => { autoPressOnFocus?: boolean; style?: JSX.CSSProperties; styleText?: JSX.CSSProperties; + themeFilter?: boolean; }; const homeBtn: ButtonItem = { icon: home, name: 'Home', path: '/web/home', getSelected: createMemo(() => location.pathname === '/web/home' || location.pathname === '/web/index.html'), autoPressOnFocus: false }; @@ -181,11 +182,12 @@ const SideBar: Component = (props: SideBarProps) => { const buyBtn: ButtonItem = { icon: iconBuy, + themeFilter: false, name: 'Buy Grayjay', path: '/web/buy', getSelected: createMemo(() => location.pathname === '/web/buy') }; - const settingsBtn: ButtonItem = { icon: iconSettings, name: 'Settings', action: () => UIOverlay.overlaySettings(), getSelected: createMemo(() => location.pathname === '/web/settings') }; + const settingsBtn: ButtonItem = { icon: iconSettings, themeFilter: false, name: 'Settings', action: () => UIOverlay.overlaySettings(), getSelected: createMemo(() => location.pathname === '/web/settings') }; const bottomButtons$ = createMemo(() => { const list: ButtonItem[] = []; @@ -368,6 +370,7 @@ const SideBar: Component = (props: SideBarProps) => { onBlur={globalBlur} style={btn.style} styleText={btn.styleText} + themeFilter={btn.themeFilter} /> ); }} @@ -457,6 +460,7 @@ const SideBar: Component = (props: SideBarProps) => { onBlur={globalBlur} style={btn.style} styleText={btn.styleText} + themeFilter={btn.themeFilter} /> ); }} @@ -464,7 +468,7 @@ const SideBar: Component = (props: SideBarProps) => {
0 && moreOverlayVisible$()}> -
{ +
{ props?.onMoreClosed?.(); setMoreOverlayVisible(false); ev.preventDefault(); @@ -475,7 +479,7 @@ const SideBar: Component = (props: SideBarProps) => { }} use:focusScope={{ initialMode: 'trap' }}> -
+
{(btn, i) => { const press = () => { @@ -510,6 +514,7 @@ const SideBar: Component = (props: SideBarProps) => { onBlur={globalBlur} style={btn.style} styleText={btn.styleText} + themeFilter={btn.themeFilter} /> ); }} diff --git a/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.module.css b/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.module.css index 1aaee0e9..62e78d74 100644 --- a/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.module.css +++ b/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.module.css @@ -13,12 +13,12 @@ .sideBarButton:hover { cursor: pointer; - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); } .sideBarButton.selected { /*border-left: #019BE7 2px solid;*/ - background: rgba(255, 255, 255, 0.105); + background: var(--gj-bg-selected); } .sideBarButton.collapsed { @@ -26,12 +26,12 @@ } .sideBarButton.selected:focus { - background: rgba(255, 255, 255, 0.15); + background: var(--gj-bg-selected-strong); outline: unset; } .sideBarButton:focus { - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); outline: unset; } @@ -58,7 +58,7 @@ line-height: 32px; margin-left: 10px; opacity: 1; - color: #BFBFBF; + color: var(--gj-text-secondary); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -66,9 +66,19 @@ overflow-x: hidden; } .sideBarButton.selected .text { - color: white; + color: var(--gj-text-primary); } .sideBarButton.collapsed .text { opacity: 0; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .sideBarButton .themeIcon { + filter: brightness(0) saturate(100%) invert(34%); + opacity: 1; +} + +:global(:root[data-theme="light"]) .sideBarButton.selected .themeIcon { + filter: brightness(0) saturate(100%) invert(18%); + opacity: 1; +} diff --git a/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.tsx b/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.tsx index 90f7e439..53754ee9 100644 --- a/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.tsx +++ b/Grayjay.Desktop.Web/src/components/menus/SideBarButton/index.tsx @@ -16,6 +16,7 @@ interface SideBarButtonProps { onBlur?: () => void; style?: JSX.CSSProperties; styleText?: JSX.CSSProperties; + themeFilter?: boolean; } const SideBarButton: Component = (props) => { @@ -36,7 +37,7 @@ const SideBarButton: Component = (props) => { props.onFocus?.(); }} onBlur={props.onBlur} style={props.style}> - logo + logo
{props.name}
diff --git a/Grayjay.Desktop.Web/src/components/menus/SideBarCreator/index.module.css b/Grayjay.Desktop.Web/src/components/menus/SideBarCreator/index.module.css index b611a4ec..5d95870d 100644 --- a/Grayjay.Desktop.Web/src/components/menus/SideBarCreator/index.module.css +++ b/Grayjay.Desktop.Web/src/components/menus/SideBarCreator/index.module.css @@ -12,11 +12,11 @@ .sideBarButton:hover { cursor: pointer; - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); } .sideBarButton.selected { - background: rgba(255, 255, 255, 0.105); + background: var(--gj-bg-selected); } .sideBarButton.collapsed { @@ -47,7 +47,7 @@ line-height: 32px; transition: opacity 0.3s ease; opacity: 1; - color: #BFBFBF; + color: var(--gj-text-secondary); white-space: nowrap; text-overflow: ellipsis; @@ -55,7 +55,7 @@ overflow-x: hidden; } .sideBarButton.selected .text { - color: white; + color: var(--gj-text-primary); } .sideBarButton.collapsed .text { diff --git a/Grayjay.Desktop.Web/src/components/player/PlayerControlsView/index.module.css b/Grayjay.Desktop.Web/src/components/player/PlayerControlsView/index.module.css index 3b1d9c0b..fbecb68b 100644 --- a/Grayjay.Desktop.Web/src/components/player/PlayerControlsView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/player/PlayerControlsView/index.module.css @@ -12,11 +12,12 @@ top: 20px; left: 50%; transform: translateX(-50%); - background-color: rgba(0,0,0,.7); + background-color: var(--gj-video-overlay-bg); padding: 14px 25px; border-radius: 30px; font-size: 18px; cursor: pointer; + color: var(--gj-video-overlay-text); } .progressBarInteractiveArea { @@ -66,7 +67,7 @@ padding-bottom: 0px; padding-top: 0px; margin-top: -2px; - background-color: #999999; + background-color: rgba(255, 255, 255, 0.60); } /* .progressBarChapter.hover { @@ -78,7 +79,7 @@ padding-bottom: 0px; padding-top: 0px; margin-top: 0px; - background-color: #999999; + background-color: rgba(255, 255, 255, 0.60); }*/ .progressBarChapter .hoverBar { border-left: 0px solid rgba(20,20,20,.8); @@ -89,7 +90,7 @@ padding-bottom: 0px; padding-top: 0px; margin-top: -0.5px; - background-color: #999999; + background-color: rgba(255, 255, 255, 0.60); } .progressBarChapter .hoverBar.partial { border-left: 0px solid rgba(20,20,20,.8); @@ -100,7 +101,7 @@ padding-bottom: 0px; padding-top: 0px; margin-top: 0px; - background-color: #999999; + background-color: rgba(255, 255, 255, 0.60); } .progressBarChapter .hoverBarPartial { position: absolute; @@ -113,13 +114,13 @@ padding-bottom: 0px; padding-top: 0px; margin-top: -0.5px; - background-color: #999999; + background-color: rgba(255, 255, 255, 0.60); } .progressBarChapter .hoverBar.pastProgress { - background-color: #019BE7; + background-color: var(--gj-accent); } .progressBarChapter.hover.pastProgress { - background-color: #019BE7; + background-color: var(--gj-accent); } .progressBarChapter .label { font-size: 11px; @@ -144,6 +145,7 @@ text-overflow: ellipsis; font-family: monospace; background-color: rgba(0,0,0,.8); + color: var(--gj-video-overlay-text); border-radius: 5px; padding: 10px; top: -50px; @@ -162,6 +164,7 @@ overflow: hidden; text-overflow: ellipsis; background-color: rgba(0,0,0,.8); + color: var(--gj-video-overlay-text); border-radius: 5px; padding: 10px; top: -50px; @@ -177,7 +180,7 @@ top: 10px; height: 4px; width: 72px; - background-color: #999999; + background-color: rgba(255, 255, 255, 0.60); border-radius: 3px; pointer-events: none; } @@ -196,7 +199,7 @@ top: 4px; width: 16px; height: 16px; - background-color: #ffffff; + background-color: var(--gj-video-overlay-text); box-shadow: 0px 32px 64px 0px rgba(0, 0, 0, 0.56), 0px 2px 21px 0px rgba(0, 0, 0, 0.55); border-radius: 50%; pointer-events: none; @@ -208,7 +211,7 @@ left: 12px; top: 10px; height: 4px; - background-color: #ffffff; + background-color: var(--gj-video-overlay-text); border-radius: 3px; pointer-events: none; } @@ -239,7 +242,7 @@ bottom: 70px; left: 24px; height: 4px; - background-color: #019BE7; + background-color: var(--gj-accent); border-radius: 3px; pointer-events: none; } @@ -251,7 +254,7 @@ height: 20px; margin-left: -8px; margin-bottom: -8px; - background-color: #019BE7; + background-color: var(--gj-accent); border-radius: 50%; pointer-events: none; z-index: 10; @@ -262,20 +265,25 @@ flex-direction: row; flex-grow: 1; align-items: center; + color: var(--gj-video-overlay-text); + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.95); } .position { margin-right: 10px; vertical-align: bottom; + color: var(--gj-video-overlay-text); } .duration { - opacity: 0.6; + opacity: 0.8; + color: var(--gj-video-overlay-text); } .currentChapter { margin-left: 8px; - opacity: 0.5; + opacity: 0.75; + color: var(--gj-video-overlay-text); width: auto; white-space: nowrap; @@ -285,13 +293,15 @@ .liveBadge { background-color: red; + color: var(--gj-video-overlay-text); margin-top: -2px; padding: 5px 5px; border-radius: 4px; margin-left: 10px; } .plannedBadge { - background-color: #222; + background-color: var(--gj-video-overlay-bg); + color: var(--gj-video-overlay-text); padding: 5px 5px; border-radius: 4px; margin-left: 10px; @@ -383,4 +393,28 @@ width: 100%; height: calc(100% - 200px); #background-color: rgba(255,0,0,.5); -} \ No newline at end of file +} + +/* theme visibility pass */ +.play, +.pause, +.volume, +.fullscreen, +.theatre, +.popout, +.cast, +.settings { + filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.95)); +} + +.buttonContainer img, +.leftButtonContainer img { + border-radius: 999px; + padding: 4px; + background: rgba(0, 0, 0, 0.24); +} + +.buttonContainer img:hover, +.leftButtonContainer img:hover { + background: rgba(0, 0, 0, 0.42); +} diff --git a/Grayjay.Desktop.Web/src/components/player/VideoPlayerView/index.module.css b/Grayjay.Desktop.Web/src/components/player/VideoPlayerView/index.module.css index e5c0685a..50e1c3ec 100644 --- a/Grayjay.Desktop.Web/src/components/player/VideoPlayerView/index.module.css +++ b/Grayjay.Desktop.Web/src/components/player/VideoPlayerView/index.module.css @@ -3,7 +3,7 @@ height: 100%; position: relative; /*padding: 24px;*/ - background-color: black; + background-color: var(--gj-video-surface); } .container:focus { @@ -35,13 +35,13 @@ left: 50%; transform: translateX(-50%); display: flex; - background-color: rgba(0,0,0,.7); - border: 1px solid rgba(255,255,255,.15); + background-color: var(--gj-video-overlay-bg); + border: 1px solid var(--gj-video-overlay-border); padding: 6px 12px; border-radius: 30px; font-size: 16px; cursor: pointer; - color: white; + color: var(--gj-video-overlay-text); } .loader { @@ -79,7 +79,7 @@ display: flex; justify-content: center; align-items: center; - background-color: black; + background-color: var(--gj-video-surface); } @@ -110,7 +110,8 @@ } .captionsContainer div { - background-color: rgba(0, 0, 0, 0.5); + background-color: var(--gj-video-overlay-bg); + color: var(--gj-video-overlay-text); padding: 4px; box-sizing: border-box; } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/components/tooltip/index.tsx b/Grayjay.Desktop.Web/src/components/tooltip/index.tsx index 37489992..63a800b9 100644 --- a/Grayjay.Desktop.Web/src/components/tooltip/index.tsx +++ b/Grayjay.Desktop.Web/src/components/tooltip/index.tsx @@ -57,8 +57,8 @@ const Tooltip = (props: TooltipProps) => { position: 'absolute', top: `${tooltipPosition().top}px`, left: `${tooltipPosition().left}px`, - "background-color": '#333', - color: '#fff', + "background-color": 'var(--gj-bg-card-active)', + color: 'var(--gj-text-primary)', padding: '8px 12px', "border-radius": '4px', "font-size": '0.9rem', @@ -78,7 +78,7 @@ const Tooltip = (props: TooltipProps) => { height: '0', "border-left": '6px solid transparent', "border-right": '6px solid transparent', - "border-bottom": '6px solid #333', + "border-bottom": '6px solid var(--gj-bg-card-active)', }} >
diff --git a/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.module.css b/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.module.css index 92aa8a8b..e56ced10 100644 --- a/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.module.css +++ b/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.module.css @@ -10,15 +10,15 @@ justify-content: center; align-items: flex-start; border-radius: 10px; - border: 1px solid #2E2E2E; - background: #212121; - box-shadow: 0px 100px 80px 0px rgba(0, 0, 0, 0.16), 0px 64.815px 46.852px 0px rgba(0, 0, 0, 0.12), 0px 38.519px 25.481px 0px rgba(0, 0, 0, 0.10), 0px 20px 13px 0px rgba(0, 0, 0, 0.08), 0px 8.148px 6.519px 0px rgba(0, 0, 0, 0.06), 0px 1.852px 3.148px 0px rgba(0, 0, 0, 0.04); + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + box-shadow: var(--gj-shadow); box-sizing: border-box; position: absolute; z-index: 1; - color: #D9D9D9; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -48,5 +48,55 @@ } .suggestionItem:hover { - background-color: #2C2C2C; -} \ No newline at end of file + background-color: var(--gj-bg-hover); +} + +.sectionTitle { + color: var(--gj-text-secondary); +} + +.filterRow { + display: flex; + flex-direction: row; + gap: 4px; + margin-top: 16px; + flex-wrap: wrap; +} + +.divider { + width: 100%; + background-color: var(--gj-border); + height: 1px; + margin-top: 20px; + margin-bottom: 20px; +} + +.emptyState { + color: var(--gj-text-secondary); +} + +.loadingRow { + display: flex; + flex-direction: row; + width: 100%; + align-items: center; + justify-content: center; +} + +.actionIcon { + width: 16px; + height: 16px; + filter: var(--gj-theme-icon-filter); +} + +.actionIconClose { + width: 16px; + height: 16px; + margin-left: 16px; + filter: var(--gj-theme-icon-filter); +} + +.suggestionLabel { + margin-left: 12px; + color: var(--gj-text-primary); +} diff --git a/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.tsx b/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.tsx index f6a53409..38d89890 100644 --- a/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.tsx +++ b/Grayjay.Desktop.Web/src/components/topbars/SearchBar/index.tsx @@ -45,7 +45,7 @@ const SearchBar: Component = (props) => { const buttonStyle: JSX.CSSProperties = { "border-radius": "6px", - "border": "1px solid #454545", + "border": "1px solid var(--gj-border-strong)", "height": "37px", "padding-left": "16px", "padding-right": "16px", @@ -57,7 +57,8 @@ const SearchBar: Component = (props) => { const buttonIconStyle: JSX.CSSProperties = { "width": "16px", "height": "16px", - "margin-right": "4px" + "margin-right": "4px", + "filter": "var(--gj-theme-icon-filter)" }; const [query$, setQuery] = createSignal(props.initialText ?? ""); @@ -181,23 +182,23 @@ const SearchBar: Component = (props) => { e.stopPropagation(); e.preventDefault(); }} style={props.overlayStyle}> -
Choose content type to search
-
- changeSearchType(e, ContentType.MEDIA)} /> - changeSearchType(e, ContentType.CHANNEL)} /> - changeSearchType(e, ContentType.PLAYLIST)} /> +
Choose content type to search
+
+ changeSearchType(e, ContentType.MEDIA)} /> + changeSearchType(e, ContentType.CHANNEL)} /> + changeSearchType(e, ContentType.PLAYLIST)} />
-
+
-
Your previous searches
+
Your previous searches
- No results found
}> + No results found
}> -
+
@@ -212,16 +213,16 @@ const SearchBar: Component = (props) => { }); await searchFor(item, searchType$()); }}> - -
{item}
+ +
{item}
- { + { setQuery(item); e.preventDefault(); e.stopPropagation(); }} /> - { + { e.preventDefault(); e.stopPropagation(); await SearchBackend.removePreviousSearch(item); diff --git a/Grayjay.Desktop.Web/src/index.css b/Grayjay.Desktop.Web/src/index.css index 09486d60..c92e6fc7 100644 --- a/Grayjay.Desktop.Web/src/index.css +++ b/Grayjay.Desktop.Web/src/index.css @@ -7,8 +7,8 @@ body { margin: 0; height: 100vh; width: 100vw; - background-color: #141414; - color: white; + background-color: var(--gj-bg-root); + color: var(--gj-text-primary); user-select: none; overflow: hidden; } @@ -20,7 +20,7 @@ code { :where(body[data-input-source="keyboard"]) :where(*:focus), :where(body[data-input-source="gamepad"]) :where(*:focus) { - outline: 2px solid #bbb; + outline: 2px solid var(--gj-focus); outline-offset: -1px; } @@ -34,7 +34,7 @@ code { left: 0px; width: 100%; height: 100%; - background-color: rgba(0,0,0,.6); + background-color: var(--gj-bg-backdrop); user-select: none; } .droparea .text { @@ -57,11 +57,11 @@ code { flex-grow: 1; max-height: 100vh; overflow: hidden; - background-color: #141414; + background-color: var(--gj-bg-root); } .icon { - color: white; + color: var(--gj-text-primary); } img { diff --git a/Grayjay.Desktop.Web/src/index.tsx b/Grayjay.Desktop.Web/src/index.tsx index 7a3ff452..b888df5d 100644 --- a/Grayjay.Desktop.Web/src/index.tsx +++ b/Grayjay.Desktop.Web/src/index.tsx @@ -2,6 +2,7 @@ import { render } from 'solid-js/web'; import './index.css'; +import './theme.css'; import { Router, Route, RouteSectionProps, useNavigate, Navigator } from '@solidjs/router'; import SideBar from './components/menus/SideBar'; import { Component, Show, children, createSignal, lazy, onCleanup, onMount } from 'solid-js'; @@ -28,6 +29,7 @@ import BuyPage from './pages/BuyPage'; import LoaderGameExamplePage from './pages/LoaderGameExamplePage'; import { FocusProvider } from './FocusProvider'; import { focusScope } from './focusScope';import ControllerOverlay from './components/ControllerOverlay'; +import NativeTheme from './theme'; void focusScope; const HomePage = lazy(() => import('./pages/Home')); @@ -144,6 +146,7 @@ const App: Component = (props) => { }; return <> + {renderContent()} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayCustomDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayCustomDialog/index.module.css index 59272da3..bdb20724 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayCustomDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayCustomDialog/index.module.css @@ -1,12 +1,11 @@ - .root { position: fixed; top: 0px; left: 0px; width: 100%; height: 100%; - background: rgba(15, 15, 15, 0.86); + background: var(--gj-bg-backdrop); display: grid; align-items: center; justify-content: center; @@ -16,9 +15,10 @@ position: relative; padding: 32px; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.648px 3.148px 0px rgba(0, 0, 0, 0.10), 0px 7.252px 6.519px 0px rgba(0, 0, 0, 0.16), 0px 17.8px 13px 0px rgba(0, 0, 0, 0.21), 0px 34.281px 25.481px 0px rgba(0, 0, 0, 0.26), 0px 57.685px 46.852px 0px rgba(0, 0, 0, 0.32), 0px 89px 80px 0px rgba(0, 0, 0, 0.42); + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + color: var(--gj-text-primary); + box-shadow: var(--gj-shadow); } .dialogHeader { @@ -30,17 +30,27 @@ position: absolute; display: grid; justify-content: center; - align-items: center;; + align-items: center; top: 32px; right: 32px; width: 40px; height: 40px; border-radius: 48px; - background: #2E2E2E; + background: var(--gj-bg-panel-strong); cursor: pointer; - z-index: 9999 + z-index: 9999; } .closeButton img { width: 24px; height: 24px; -} \ No newline at end of file +} + + +:global(:root[data-theme="light"]) .closeButton { + background: var(--gj-bg-panel-strong); + border: 1px solid var(--gj-border-strong); +} + +:global(:root[data-theme="light"]) .closeButton img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.module.css index 3b1dbf5d..b541d264 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.module.css @@ -13,12 +13,12 @@ margin-left: 50%; transform: translateX(-50%); display: flex; - border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + color: var(--gj-text-primary); box-sizing: border-box; - box-shadow: 0px 1.167px 3.148px 0px rgba(0, 0, 0, 0.07), 0px 5.133px 6.519px 0px rgba(0, 0, 0, 0.12), 0px 12.6px 13px 0px rgba(0, 0, 0, 0.16), 0px 24.267px 25.481px 0px rgba(0, 0, 0, 0.19), 0px 40.833px 46.852px 0px rgba(0, 0, 0, 0.24), 0px 63px 80px 0px rgba(0, 0, 0, 0.31); + box-shadow: var(--gj-shadow); } .icon { @@ -27,17 +27,27 @@ margin-bottom: 16px; } -.iconClose { - width: 24px; - height: 24px; +.closeButton { position: absolute; right: 32px; top: 32px; + width: 40px; + height: 40px; + display: grid; + align-items: center; + justify-items: center; + border-radius: 999px; + background: var(--gj-bg-panel-strong); cursor: pointer; } +.iconClose { + width: 24px; + height: 24px; +} + .title { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 24px; font-style: normal; @@ -46,11 +56,9 @@ text-align: center; } .description { - color: #8C8C8C; - + color: var(--gj-text-tertiary); text-align: center; leading-trim: both; - text-edge: cap; font-family: Inter; font-size: 16px; @@ -62,7 +70,6 @@ white-space: pre-wrap; } - .buttons { margin-top: 20px; display: flex; @@ -78,21 +85,19 @@ width: 128px; height: 48px; flex: 1 0 0; - border-radius: 6px; - cursor: pointer; border-radius: 8px; - border: 1px solid #2E2E2E; + cursor: pointer; + border: 1px solid var(--gj-border); font-size: 16px; - } .button.none { - color: #ffffff; + color: var(--gj-text-primary); } .button.primary { - background: #019BE7; + background: var(--gj-accent); } .button.accent { - background: #F97066; + background: var(--gj-danger-accent); } .input { @@ -103,74 +108,62 @@ .code { margin-top: 20px; padding: 10px; - background-color: #1A1A1A; + background-color: var(--gj-bg-soft); + color: var(--gj-text-primary); border-radius: 6px; - border: 1px solid #444; + border: 1px solid var(--gj-border-strong); font-family: monospace; white-space: pre-wrap; overflow-y: auto; - max-height: 300px; + max-height: 320px; text-align: left; - position: relative; - - user-select: text; } -.code::-webkit-scrollbar { - width: 10px; +.addButton { + display: flex; + align-items: center; + justify-content: flex-start; + margin-top: 10px; + padding: 10px 12px; + border-radius: 8px; + background: var(--gj-bg-panel-strong); + cursor: pointer; } -.code::-webkit-scrollbar-thumb { - background-color: #555; - border-radius: 5px; +.addLabel { + margin-left: 10px; + color: var(--gj-text-primary); } -.code::-webkit-scrollbar-thumb:hover { - background-color: #888; -} -.code::-webkit-scrollbar-track { - background-color: #333; +/* overlay-dialog-light-mode-v29 */ +:global(:root[data-theme="light"]) .dialog { + border-color: var(--gj-border); + background: var(--gj-bg-panel); + color: var(--gj-text-primary); + box-shadow: var(--gj-shadow); } -.code::-webkit-scrollbar-corner { - background-color: transparent; +:global(:root[data-theme="light"]) .title { + color: var(--gj-text-primary); } -.addLabel { - margin-left: 10px; - - color: #FFF; - font-feature-settings: 'clig' off, 'liga' off; - font-family: Inter; - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 140%; /* 22.4px */ +:global(:root[data-theme="light"]) .description { + color: var(--gj-text-tertiary); } -.addButton { - padding-top: 10px; - padding-bottom: 10px; - padding-left: 8px; - padding-right: 8px; - cursor: pointer; - - display: flex; - align-items: center; - justify-content: center; +:global(:root[data-theme="light"]) .closeButton { + background: var(--gj-bg-panel-strong); + border: 1px solid var(--gj-border); } -.button:focus, -.iconClose:focus, -.addButton:focus, -.code > img:focus { - background-color: #333333; - border-color: #4A4A4A; +:global(:root[data-theme="light"]) .iconClose { + filter: var(--gj-theme-icon-filter); } -.button.primary:focus { background: #07A9F0; } -.button.accent:focus { background: #FF7A70; } -.button.none:focus { background: #1F1F1F; } -.iconClose:focus { border-radius: 6px; } -.code > img:focus { border-radius: 4px; } \ No newline at end of file +:global(:root[data-theme="light"]) .code, +:global(:root[data-theme="light"]) .addButton { + background-color: var(--gj-bg-soft); + color: var(--gj-text-primary); + border-color: var(--gj-border); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.tsx b/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.tsx index b2068445..b9b45f0c 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.tsx +++ b/Grayjay.Desktop.Web/src/overlays/OverlayDialog/index.tsx @@ -209,12 +209,12 @@ const OverlayDialog: Component = (props: OverlayDialogProps) const themeFor = (style?: string) => { switch (style) { case "primary": - return { color: "#019BE7" }; + return { color: 'var(--gj-accent)' }; case "accent": - return { color: "#F97066" }; + return { color: 'var(--gj-danger-accent)' }; case "none": default: - return { color: "#2E2E2E" }; + return { color: 'var(--gj-bg-panel-strong)' }; } }; @@ -236,10 +236,8 @@ const OverlayDialog: Component = (props: OverlayDialogProps) - Close = (props: OverlayDialogProps) onPress: clickClose, onBack: dialogBack, }} - /> + > + Close +
{props.dialog!.title} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayDialogLoader/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayDialogLoader/index.module.css index 9624bdad..a1d2d1f3 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayDialogLoader/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayDialogLoader/index.module.css @@ -9,9 +9,9 @@ text-align: center; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.167px 3.148px 0px rgba(0, 0, 0, 0.07), 0px 5.133px 6.519px 0px rgba(0, 0, 0, 0.12), 0px 12.6px 13px 0px rgba(0, 0, 0, 0.16), 0px 24.267px 25.481px 0px rgba(0, 0, 0, 0.19), 0px 40.833px 46.852px 0px rgba(0, 0, 0, 0.24), 0px 63px 80px 0px rgba(0, 0, 0, 0.31); + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); + box-shadow: var(--gj-shadow); } .icon { @@ -21,7 +21,7 @@ } .title { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -34,7 +34,7 @@ text-align: center; } .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); text-align: center; leading-trim: both; @@ -65,13 +65,13 @@ border-radius: 6px; } .button.none { - color: #019BE7; + color: var(--gj-accent); } .button.primary { - background: #019BE7; + background: var(--gj-accent); } .button.accent { - background: #F97066; + background: var(--gj-danger-accent); } .input { @@ -83,9 +83,9 @@ margin-top: 20px; margin-bottom: 30px; padding: 10px; - background-color: #1A1A1A; + background-color: var(--gj-bg-code); border-radius: 6px; - border: 1px solid #444; + border: 1px solid var(--gj-border-strong); font-family: monospace; white-space: pre-wrap; } diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.module.css index 3c4d1128..b8326f38 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.module.css @@ -7,9 +7,9 @@ padding-right: 20px; padding-bottom: 20px; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.648px 3.148px 0px rgba(0, 0, 0, 0.10), 0px 7.252px 6.519px 0px rgba(0, 0, 0, 0.16), 0px 17.8px 13px 0px rgba(0, 0, 0, 0.21), 0px 34.281px 25.481px 0px rgba(0, 0, 0, 0.26), 0px 57.685px 46.852px 0px rgba(0, 0, 0, 0.32), 0px 89px 80px 0px rgba(0, 0, 0, 0.42); + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + box-shadow: var(--gj-shadow); max-height: calc(100% - 24px); box-sizing: border-box; overflow: hidden; @@ -28,7 +28,7 @@ } .dialogHeader .headerSubText { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); margin-top: 6px; } @@ -42,7 +42,7 @@ width: 40px; height: 40px; border-radius: 48px; - background: #2E2E2E; + background: var(--gj-bg-panel-strong); cursor: pointer; } .closeButton img { @@ -56,7 +56,7 @@ max-height: 50vh; overflow-y: auto; scrollbar-width: thin; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } .source { @@ -67,7 +67,7 @@ cursor: pointer; } .source .name { - color: #CDCDCD; + color: var(--gj-text-secondary); text-overflow: ellipsis; font-family: Inter; font-size: 16px; @@ -84,7 +84,7 @@ overflow: hidden; font-size: 12px; text-overflow: ellipsis; - color: #8C8C8C + color: var(--gj-text-tertiary) } .source.hasSubs .meta { display: hidden; @@ -107,13 +107,13 @@ .source.enabled { border-radius: 4px; - background: rgba(255, 255, 255, 0.04); + background: var(--gj-bg-card-active); } .source.enabled img { display: block; } .source.enabled .name { - color: #F0F0F0; + color: var(--gj-text-primary); font-weight: 600; } @@ -144,7 +144,7 @@ white-space: nowrap; padding-left:0px; padding-right: 0px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); text-align: center; } .menuItem .filterHorizontalOption { @@ -153,11 +153,11 @@ padding-right: 6px; padding-top: 4px; padding-bottom: 4px; - background-color: rgba(0,0,0,.5); - border: 1px solid #222222; + background-color: var(--gj-bg-card); + border: 1px solid var(--gj-border); } .menuItem .filterHorizontalOption.isActive { - background-color: rgba(255,255,255,.1); + background-color: var(--gj-bg-card-active); } .menuItem .filterHorizontalOption:first-child { border-top-left-radius: 5px; @@ -166,4 +166,9 @@ .menuItem .filterHorizontalOption:last-child { border-top-right-radius: 5px; border-bottom-right-radius: 5px; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .source.enabled img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.tsx b/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.tsx index 33e7ddf4..c7e607c1 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.tsx +++ b/Grayjay.Desktop.Web/src/overlays/OverlayDownloadDialog/index.tsx @@ -312,12 +312,12 @@ const OverlayDownloadDialog: Component = (props: Ove
-
+
-
+
}> +
}>
= (props) => {
{ @@ -682,8 +682,8 @@ const OverlayFilePicker: Component = (props) => { width: 420px; height: auto; grid-template-rows: auto 1fr auto; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); box-shadow: 0 1.6px 3.1px rgba(0,0,0,0.10), 0 7.25px 6.52px rgba(0,0,0,0.16), @@ -699,7 +699,7 @@ const OverlayFilePicker: Component = (props) => { if (e.key === 'Enter') { e.stopPropagation(); resolveConfirm(true); } }} > -
+
{confirmState()!.title} @@ -714,7 +714,7 @@ const OverlayFilePicker: Component = (props) => {
-
+
{confirmState()!.message}
diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImage/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayImage/index.module.css index 38d6550e..441507f1 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImage/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImage/index.module.css @@ -5,13 +5,13 @@ overflow:hidden; border-radius: 12px; padding:0.5px; - border: 1px solid #2E2E2E; - background: #141414; + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); max-width: 90%; max-height: 90%; margin-left: auto; margin-right: auto; - box-shadow: 0px 1.648px 3.148px 0px rgba(0, 0, 0, 0.10), 0px 7.252px 6.519px 0px rgba(0, 0, 0, 0.16), 0px 17.8px 13px 0px rgba(0, 0, 0, 0.21), 0px 34.281px 25.481px 0px rgba(0, 0, 0, 0.26), 0px 57.685px 46.852px 0px rgba(0, 0, 0, 0.32), 0px 89px 80px 0px rgba(0, 0, 0, 0.42); + box-shadow: var(--gj-shadow); } .dialogHeader { @@ -36,7 +36,7 @@ } .dialogHeader .headerSubText { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); } .closeButton { @@ -49,7 +49,7 @@ width: 40px; height: 40px; border-radius: 48px; - background: #2E2E2E; + background: var(--gj-bg-card-active); cursor: pointer; box-shadow: 0px 0px 3px black; } @@ -74,7 +74,7 @@ margin: 5px; } .subscription.enabled { - background-color: #212121; + background-color: var(--gj-bg-control); } .subscription .check { width: 18px; @@ -83,13 +83,13 @@ top: 10px; right: 5px; border-radius: 72.727px; - border: 2px solid #454545; + border: 2px solid var(--gj-border-strong); } .subscription .check img { display: none; } .subscription.enabled .check { - background-color: #019BE7; + background-color: var(--gj-accent); } .subscription.enabled .check img { display: block; @@ -104,7 +104,7 @@ display: inline-block; } .subscription .name { - color: #FFF; + color: var(--gj-text-primary); text-align: center; @@ -135,7 +135,7 @@ background-position: center;; } .image.enabled { - border: 3px solid white; + border: 3px solid var(--gj-text-primary); } .horizontalList { @@ -144,7 +144,7 @@ width: 100%; text-wrap: nowrap; scrollbar-width: thin; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } .horizontalList::-webkit-scrollbar { background-color: transparent; @@ -156,7 +156,7 @@ .horizontalList::-webkit-scrollbar-thumb { border-radius: 20px; border: 4px solid transparent; - background-color: rgba(0,0,0,0.2); + background-color: var(--gj-bg-hover); background-clip: content-box; } .horizontalList::-webkit-scrollbar-button { @@ -170,6 +170,6 @@ } .sectionDescription { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); margin-bottom: 10px; } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.module.css index f6bfc793..2cfbc6f5 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.module.css @@ -8,9 +8,9 @@ padding-right: 20px; padding-bottom: 20px; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.648px 3.148px 0px rgba(0, 0, 0, 0.10), 0px 7.252px 6.519px 0px rgba(0, 0, 0, 0.16), 0px 17.8px 13px 0px rgba(0, 0, 0, 0.21), 0px 34.281px 25.481px 0px rgba(0, 0, 0, 0.26), 0px 57.685px 46.852px 0px rgba(0, 0, 0, 0.32), 0px 89px 80px 0px rgba(0, 0, 0, 0.42); + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); + box-shadow: var(--gj-shadow); } .dialogHeader { @@ -25,7 +25,7 @@ } .dialogHeader .headerSubText { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); } .closeButton { @@ -38,7 +38,7 @@ width: 40px; height: 40px; border-radius: 48px; - background: #2E2E2E; + background: var(--gj-bg-card-active); cursor: pointer; } .closeButton img { @@ -62,7 +62,7 @@ margin: 5px; } .subscription.enabled { - background-color: #212121; + background-color: var(--gj-bg-control); } .subscription .check { width: 18px; @@ -71,13 +71,13 @@ top: 10px; right: 5px; border-radius: 72.727px; - border: 2px solid #454545; + border: 2px solid var(--gj-border-strong); } .subscription .check img { display: none; } .subscription.enabled .check { - background-color: #019BE7; + background-color: var(--gj-accent); } .subscription.enabled .check img { display: block; @@ -92,7 +92,7 @@ display: inline-block; } .subscription .name { - color: #FFF; + color: var(--gj-text-primary); text-align: center; @@ -123,16 +123,16 @@ background-position: center; } .addImage { - background: linear-gradient(267deg, rgb(1, 214, 230) -100.57%, rgb(1, 130, 231) 90.96%); + background: var(--gj-accent-grad); margin-left: 0px; } .addImage:focus-visible { - background: white; - color: #141414; + background: var(--gj-text-primary); + color: var(--gj-text-inverse); outline: unset; } .image.enabled { - border: 3px solid white; + border: 3px solid var(--gj-text-primary); } .horizontalList { @@ -141,7 +141,7 @@ width: 100%; text-wrap: nowrap; scrollbar-width: thin; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } .horizontalList::-webkit-scrollbar { background-color: transparent; @@ -153,7 +153,7 @@ .horizontalList::-webkit-scrollbar-thumb { border-radius: 20px; border: 4px solid transparent; - background-color: rgba(0,0,0,0.2); + background-color: var(--gj-bg-hover); background-clip: content-box; } .horizontalList::-webkit-scrollbar-button { @@ -167,6 +167,65 @@ } .sectionDescription { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); margin-bottom: 10px; -} \ No newline at end of file +} + + +/* image-selector-light-mode-v29 */ +:global(:root[data-theme="light"]) .container { + border-color: var(--gj-border); + background: var(--gj-bg-panel); + color: var(--gj-text-primary); + box-shadow: var(--gj-shadow); +} + +:global(:root[data-theme="light"]) .dialogHeader .headerText, +:global(:root[data-theme="light"]) .sectionTitle { + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .dialogHeader .headerSubText, +:global(:root[data-theme="light"]) .sectionDescription { + color: var(--gj-text-tertiary); +} + +:global(:root[data-theme="light"]) .closeButton { + background: var(--gj-bg-panel-strong); +} + +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .subscription .check img { + filter: var(--gj-theme-icon-filter); +} + +:global(:root[data-theme="light"]) .horizontalList { + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); +} + +:global(:root[data-theme="light"]) .subscription { + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .subscription.enabled, +:global(:root[data-theme="light"]) .subscription:focus { + background-color: var(--gj-bg-card-hover); +} + +:global(:root[data-theme="light"]) .subscription .check { + border-color: var(--gj-border-strong); + background: var(--gj-bg-panel); +} + +:global(:root[data-theme="light"]) .subscription.enabled .check { + border-color: var(--gj-accent); + background-color: var(--gj-accent); +} + +:global(:root[data-theme="light"]) .subscription .name { + color: var(--gj-text-primary); +} + +:global(:root[data-theme="light"]) .image.enabled { + border-color: var(--gj-accent); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.tsx b/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.tsx index 1529a1db..529adb89 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.tsx +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImageSelector/index.tsx @@ -168,12 +168,12 @@ const OverlayImageSelector: Component = (props:
-
+
- diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImportOldDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayImportOldDialog/index.module.css index 1ffe805f..c6bb433a 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImportOldDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImportOldDialog/index.module.css @@ -9,9 +9,9 @@ text-align: center; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.167px 3.148px 0px rgba(0, 0, 0, 0.07), 0px 5.133px 6.519px 0px rgba(0, 0, 0, 0.12), 0px 12.6px 13px 0px rgba(0, 0, 0, 0.16), 0px 24.267px 25.481px 0px rgba(0, 0, 0, 0.19), 0px 40.833px 46.852px 0px rgba(0, 0, 0, 0.24), 0px 63px 80px 0px rgba(0, 0, 0, 0.31); + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); + box-shadow: var(--gj-shadow); } .buttons { @@ -28,13 +28,13 @@ border-radius: 6px; } .button.none { - color: #019BE7; + color: var(--gj-accent); } .button.primary { - background: #019BE7; + background: var(--gj-accent); } .button.accent { - background: #F97066; + background: var(--gj-danger-accent); } .input { @@ -46,9 +46,9 @@ margin-top: 20px; margin-bottom: 30px; padding: 10px; - background-color: #1A1A1A; + background-color: var(--gj-bg-code); border-radius: 6px; - border: 1px solid #444; + border: 1px solid var(--gj-border-strong); font-family: monospace; white-space: pre-wrap; } @@ -65,7 +65,7 @@ top: 20px; height: 100px; width: 100px; - background-color: #1B1B1B; + background-color: var(--gj-bg-panel); border-radius: 20px; display: grid; align-items: center; @@ -82,7 +82,7 @@ width: 100%; } .header .descriptor .title{ - color: #FFF; + color: var(--gj-text-primary); font-family: "Inter"; font-family: Inter; font-size: 28px; @@ -93,7 +93,7 @@ text-align: left; } .header .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: "Inter"; font-family: Inter; font-size: 16px; @@ -105,7 +105,7 @@ margin-top: 10px; } .header .descriptor .meta { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 14px; font-style: normal; @@ -128,7 +128,7 @@ flex: 1; flex-basis: 1000px; border-radius: 8px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); padding: 16px 18px; align-items: center; gap: 8px; @@ -144,7 +144,7 @@ } .linkContainer .linkTitle { overflow: hidden; - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -159,7 +159,7 @@ } .linkContainer .linkUrl { overflow: hidden; - color: #019BE7; + color: var(--gj-accent); leading-trim: both; @@ -179,7 +179,7 @@ } .permissionContainer .headerTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -191,7 +191,7 @@ line-height: 24px; /* 109.091% */ } .permissionContainer .headerDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; @@ -222,7 +222,7 @@ width: calc(100% - 50px) } .permission .permissionTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -234,7 +234,7 @@ line-height: 24px; /* 150% */ } .permission .permissionDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; @@ -273,7 +273,7 @@ width: calc(100% - 50px) } .warning .warningTitle { - color: #F97066; + color: var(--gj-danger-accent); leading-trim: both; @@ -285,7 +285,7 @@ line-height: 24px; /* 120% */ } .warning .warningDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; @@ -300,7 +300,7 @@ .tag { display: inline-block; margin-right: 4px; - color: #019BE7; + color: var(--gj-accent); leading-trim: both; @@ -311,7 +311,7 @@ font-weight: 300; line-height: 26px; /* 185.714% */ border-radius: 4px; - background: #1B1B1B; + background: var(--gj-bg-panel); padding-left: 12px; padding-right: 12px; padding-top: 4px; @@ -331,7 +331,15 @@ display: grid; align-items: center; justify-content: center; - background: #019BE7; + background: var(--gj-accent); margin-left: auto; cursor: pointer; -} \ No newline at end of file +} + +/* broad-light-theme-icon-pass */ +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .iconClose, +:global(:root[data-theme="light"]) .button img, +:global(:root[data-theme="light"]) .status img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.module.css index 642a5e5a..8ece8f60 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.module.css @@ -9,9 +9,9 @@ text-align: center; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.167px 3.148px 0px rgba(0, 0, 0, 0.07), 0px 5.133px 6.519px 0px rgba(0, 0, 0, 0.12), 0px 12.6px 13px 0px rgba(0, 0, 0, 0.16), 0px 24.267px 25.481px 0px rgba(0, 0, 0, 0.19), 0px 40.833px 46.852px 0px rgba(0, 0, 0, 0.24), 0px 63px 80px 0px rgba(0, 0, 0, 0.31); + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); + box-shadow: var(--gj-shadow); } .buttons { @@ -28,13 +28,13 @@ border-radius: 6px; } .button.none { - color: #019BE7; + color: var(--gj-accent); } .button.primary { - background: #019BE7; + background: var(--gj-accent); } .button.accent { - background: #F97066; + background: var(--gj-danger-accent); } .input { @@ -46,9 +46,9 @@ margin-top: 20px; margin-bottom: 30px; padding: 10px; - background-color: #1A1A1A; + background-color: var(--gj-bg-code); border-radius: 6px; - border: 1px solid #444; + border: 1px solid var(--gj-border-strong); font-family: monospace; white-space: pre-wrap; } @@ -65,7 +65,7 @@ top: 20px; height: 100px; width: 100px; - background-color: #1B1B1B; + background-color: var(--gj-bg-panel); border-radius: 20px; display: grid; align-items: center; @@ -82,7 +82,7 @@ width: 100%; } .header .descriptor .title{ - color: #FFF; + color: var(--gj-text-primary); font-family: "Inter"; font-family: Inter; font-size: 28px; @@ -93,7 +93,7 @@ text-align: left; } .header .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: "Inter"; font-family: Inter; font-size: 16px; @@ -105,7 +105,7 @@ margin-top: 10px; } .header .descriptor .meta { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 14px; font-style: normal; @@ -128,7 +128,7 @@ flex: 1; flex-basis: 1000px; border-radius: 8px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); padding: 16px 18px; align-items: center; gap: 8px; @@ -144,7 +144,7 @@ } .linkContainer .linkTitle { overflow: hidden; - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -159,7 +159,7 @@ } .linkContainer .linkUrl { overflow: hidden; - color: #019BE7; + color: var(--gj-accent); leading-trim: both; @@ -179,7 +179,7 @@ } .permissionContainer .headerTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -191,7 +191,7 @@ line-height: 24px; /* 109.091% */ } .permissionContainer .headerDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; @@ -222,7 +222,7 @@ width: calc(100% - 50px) } .permission .permissionTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -234,7 +234,7 @@ line-height: 24px; /* 150% */ } .permission .permissionDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; @@ -253,7 +253,7 @@ .tag { display: inline-block; margin-right: 4px; - color: #019BE7; + color: var(--gj-accent); leading-trim: both; @@ -264,7 +264,7 @@ font-weight: 300; line-height: 26px; /* 185.714% */ border-radius: 4px; - background: #1B1B1B; + background: var(--gj-bg-panel); padding-left: 12px; padding-right: 12px; padding-top: 4px; @@ -284,7 +284,7 @@ display: grid; align-items: center; justify-content: center; - background: #019BE7; + background: var(--gj-accent); margin-left: auto; cursor: pointer; } @@ -318,14 +318,14 @@ margin-top: 15px; } .importItem .text .name { - color: #FFF; + color: var(--gj-text-primary); font-size: 18px; font-style: normal; font-weight: 500; line-height: 24px } .importItem .text .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-size: 14px; font-style: normal; font-weight: 300; @@ -343,7 +343,7 @@ .dialogTitle { - color: #FFF; + color: var(--gj-text-primary); font-size: 32px; font-style: normal; font-weight: 600; @@ -351,7 +351,7 @@ text-align: left; } .dialogSubtitle { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-size: 14px; font-style: normal; font-weight: 300; @@ -363,7 +363,7 @@ } .importTitle { - color: #FFF; + color: var(--gj-text-primary); text-align: center; leading-trim: both; @@ -414,7 +414,7 @@ .exception { color: red; font-size: 14px; - background-color: rgba(0, 0, 0, .4); + background-color: var(--gj-danger-soft-bg); border-radius: 5px; padding-top: 4px; padding-bottom: 4px; @@ -424,7 +424,7 @@ .warning { color: orange; font-size: 14px; - background-color: rgba(0, 0, 0, .4); + background-color: var(--gj-danger-soft-bg); border-radius: 5px; padding-top: 4px; padding-bottom: 4px; @@ -437,7 +437,7 @@ overflow-y: auto; overflow-x: hidden; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); scrollbar-width: thin; } @@ -446,16 +446,16 @@ } .channels::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-text-tertiary); border-radius: 5px; } .channels::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-text-tertiary); } .channels::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-bg-card-active); } .channels::-webkit-scrollbar-corner { @@ -465,7 +465,7 @@ .channel { position: relative; height: 45px; - background-color: #111; + background-color: var(--gj-bg-popover); border-radius: 8px; margin-bottom: 5px; } @@ -495,4 +495,12 @@ top: 0px; height: 100%; transform: scale(0.75); -} \ No newline at end of file +} + +/* broad-light-theme-icon-pass */ +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .iconClose, +:global(:root[data-theme="light"]) .button img, +:global(:root[data-theme="light"]) .status img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.tsx b/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.tsx index 0e0572f8..c7b6c89a 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.tsx +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImportPlaylistsDialog/index.tsx @@ -127,7 +127,7 @@ const OverlayImportPlaylistsDialog: Component onPress: () => props.dialog.action!('close', ''), onBack: globalBack }}> - diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImportSelectDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayImportSelectDialog/index.module.css index 958f0a47..0b534d1d 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImportSelectDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImportSelectDialog/index.module.css @@ -8,9 +8,9 @@ padding-right: 20px; padding-bottom: 20px; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.648px 3.148px 0px rgba(0, 0, 0, 0.10), 0px 7.252px 6.519px 0px rgba(0, 0, 0, 0.16), 0px 17.8px 13px 0px rgba(0, 0, 0, 0.21), 0px 34.281px 25.481px 0px rgba(0, 0, 0, 0.26), 0px 57.685px 46.852px 0px rgba(0, 0, 0, 0.32), 0px 89px 80px 0px rgba(0, 0, 0, 0.42); + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); + box-shadow: var(--gj-shadow); } .dialogHeader { @@ -26,7 +26,7 @@ } .dialogHeader .headerSubText { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); margin-top: 5px; } @@ -40,7 +40,7 @@ width: 40px; height: 40px; border-radius: 48px; - background: #2E2E2E; + background: var(--gj-bg-card-active); cursor: pointer; } .closeButton img { @@ -55,7 +55,7 @@ overflow-y: auto; max-height: 800px; scrollbar-width: thin; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } .source { @@ -66,7 +66,7 @@ cursor: pointer; } .source .name { - color: #CDCDCD; + color: var(--gj-text-secondary); text-overflow: ellipsis; font-family: Inter; font-size: 16px; @@ -83,7 +83,7 @@ overflow: hidden; font-size: 12px; text-overflow: ellipsis; - color: #8C8C8C + color: var(--gj-text-tertiary) } .source.hasSubs .meta { display: hidden; @@ -106,13 +106,13 @@ .source.enabled { border-radius: 4px; - background: rgba(255, 255, 255, 0.04); + background: var(--gj-bg-hover); } .source.enabled img { display: block; } .source.enabled .name { - color: #F0F0F0; + color: var(--gj-text-primary); font-weight: 600; } @@ -121,4 +121,12 @@ margin-left: 30px; font-weight: bold; margin-top: 20px; -} \ No newline at end of file +} + +/* broad-light-theme-icon-pass */ +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .iconClose, +:global(:root[data-theme="light"]) .button img, +:global(:root[data-theme="light"]) .status img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.module.css index e6b51fae..2fcb4e82 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.module.css @@ -9,9 +9,9 @@ text-align: center; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.167px 3.148px 0px rgba(0, 0, 0, 0.07), 0px 5.133px 6.519px 0px rgba(0, 0, 0, 0.12), 0px 12.6px 13px 0px rgba(0, 0, 0, 0.16), 0px 24.267px 25.481px 0px rgba(0, 0, 0, 0.19), 0px 40.833px 46.852px 0px rgba(0, 0, 0, 0.24), 0px 63px 80px 0px rgba(0, 0, 0, 0.31); + border: 1px solid var(--gj-border); + background: var(--gj-bg-popover); + box-shadow: var(--gj-shadow); } .buttons { @@ -28,13 +28,13 @@ border-radius: 6px; } .button.none { - color: #019BE7; + color: var(--gj-accent); } .button.primary { - background: #019BE7; + background: var(--gj-accent); } .button.accent { - background: #F97066; + background: var(--gj-danger-accent); } .input { @@ -46,9 +46,9 @@ margin-top: 20px; margin-bottom: 30px; padding: 10px; - background-color: #1A1A1A; + background-color: var(--gj-bg-code); border-radius: 6px; - border: 1px solid #444; + border: 1px solid var(--gj-border-strong); font-family: monospace; white-space: pre-wrap; } @@ -65,7 +65,7 @@ top: 20px; height: 100px; width: 100px; - background-color: #1B1B1B; + background-color: var(--gj-bg-panel); border-radius: 20px; display: grid; align-items: center; @@ -82,7 +82,7 @@ width: 100%; } .header .descriptor .title{ - color: #FFF; + color: var(--gj-text-primary); font-family: "Inter"; font-family: Inter; font-size: 28px; @@ -93,7 +93,7 @@ text-align: left; } .header .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: "Inter"; font-family: Inter; font-size: 16px; @@ -105,7 +105,7 @@ margin-top: 10px; } .header .descriptor .meta { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 14px; font-style: normal; @@ -128,7 +128,7 @@ flex: 1; flex-basis: 1000px; border-radius: 8px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); padding: 16px 18px; align-items: center; gap: 8px; @@ -144,7 +144,7 @@ } .linkContainer .linkTitle { overflow: hidden; - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -159,7 +159,7 @@ } .linkContainer .linkUrl { overflow: hidden; - color: #019BE7; + color: var(--gj-accent); leading-trim: both; @@ -179,7 +179,7 @@ } .permissionContainer .headerTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -191,7 +191,7 @@ line-height: 24px; /* 109.091% */ } .permissionContainer .headerDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; @@ -222,7 +222,7 @@ width: calc(100% - 50px) } .permission .permissionTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -234,7 +234,7 @@ line-height: 24px; /* 150% */ } .permission .permissionDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); leading-trim: both; @@ -253,7 +253,7 @@ .tag { display: inline-block; margin-right: 4px; - color: #019BE7; + color: var(--gj-accent); leading-trim: both; @@ -264,7 +264,7 @@ font-weight: 300; line-height: 26px; /* 185.714% */ border-radius: 4px; - background: #1B1B1B; + background: var(--gj-bg-panel); padding-left: 12px; padding-right: 12px; padding-top: 4px; @@ -284,7 +284,7 @@ display: grid; align-items: center; justify-content: center; - background: #019BE7; + background: var(--gj-accent); margin-left: auto; cursor: pointer; } @@ -318,14 +318,14 @@ margin-top: 15px; } .importItem .text .name { - color: #FFF; + color: var(--gj-text-primary); font-size: 18px; font-style: normal; font-weight: 500; line-height: 24px } .importItem .text .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-size: 14px; font-style: normal; font-weight: 300; @@ -343,7 +343,7 @@ .dialogTitle { - color: #FFF; + color: var(--gj-text-primary); font-size: 32px; font-style: normal; font-weight: 600; @@ -351,7 +351,7 @@ text-align: left; } .dialogSubtitle { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-size: 14px; font-style: normal; font-weight: 300; @@ -363,7 +363,7 @@ } .importTitle { - color: #FFF; + color: var(--gj-text-primary); text-align: center; leading-trim: both; @@ -414,7 +414,7 @@ .exception { color: red; font-size: 14px; - background-color: rgba(0, 0, 0, .4); + background-color: var(--gj-danger-soft-bg); border-radius: 5px; padding-top: 4px; padding-bottom: 4px; @@ -424,7 +424,7 @@ .warning { color: orange; font-size: 14px; - background-color: rgba(0, 0, 0, .4); + background-color: var(--gj-danger-soft-bg); border-radius: 5px; padding-top: 4px; padding-bottom: 4px; @@ -437,7 +437,7 @@ overflow-y: auto; overflow-x: hidden; scrollbar-width: 8px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); scrollbar-width: thin; } @@ -446,16 +446,16 @@ } .channels::-webkit-scrollbar-thumb { - background-color: #555; + background-color: var(--gj-text-tertiary); border-radius: 5px; } .channels::-webkit-scrollbar-thumb:hover { - background-color: #888; + background-color: var(--gj-text-tertiary); } .channels::-webkit-scrollbar-track { - background-color: #333; + background-color: var(--gj-bg-card-active); } .channels::-webkit-scrollbar-corner { @@ -465,7 +465,7 @@ .channel { position: relative; height: 45px; - background-color: #111; + background-color: var(--gj-bg-popover); border-radius: 10px; margin-bottom: 5px; } @@ -495,4 +495,12 @@ top: 0px; height: 100%; transform: scale(0.75); -} \ No newline at end of file +} + +/* broad-light-theme-icon-pass */ +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .iconClose, +:global(:root[data-theme="light"]) .button img, +:global(:root[data-theme="light"]) .status img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.tsx b/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.tsx index 2e2a7389..34ddd789 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.tsx +++ b/Grayjay.Desktop.Web/src/overlays/OverlayImportSubscriptionsDialog/index.tsx @@ -130,7 +130,7 @@ const OverlayImportSubscriptionsDialog: Component props.dialog.action!('close', ''), onBack: globalBack }}> - diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayModals/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayModals/index.module.css index fa27be6b..0b29a481 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayModals/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayModals/index.module.css @@ -5,7 +5,7 @@ left: 0px; width: 100%; height: 100%; - background-color: rgba(0,0,0, .5); + background-color: var(--gj-bg-backdrop); display: grid; align-items: center; justify-content: center; diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.module.css b/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.module.css index d82e1a7d..972fda52 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.module.css +++ b/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.module.css @@ -1,5 +1,4 @@ - .container { width: 500px; position: relative; @@ -9,12 +8,13 @@ padding-right: 20px; padding-bottom: 20px; border-radius: 12px; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); scrollbar-width: thin; overflow-y: auto; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.648px 3.148px 0px rgba(0, 0, 0, 0.10), 0px 7.252px 6.519px 0px rgba(0, 0, 0, 0.16), 0px 17.8px 13px 0px rgba(0, 0, 0, 0.21), 0px 34.281px 25.481px 0px rgba(0, 0, 0, 0.26), 0px 57.685px 46.852px 0px rgba(0, 0, 0, 0.32), 0px 89px 80px 0px rgba(0, 0, 0, 0.42); + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + color: var(--gj-text-primary); + box-shadow: var(--gj-shadow); } .dialogHeader { @@ -26,11 +26,11 @@ .dialogHeader .headerText { font-size: 25px; font-weight: bold; - + color: var(--gj-text-primary); } .dialogHeader .headerSubText { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); margin-top: 5px; } @@ -38,13 +38,13 @@ position: absolute; display: grid; justify-content: center; - align-items: center;; + align-items: center; top: 20px; right: 20px; width: 40px; height: 40px; border-radius: 48px; - background: #2E2E2E; + background: var(--gj-bg-panel-strong); cursor: pointer; } .closeButton img { @@ -62,8 +62,10 @@ margin: 10px; display: inline-block; vertical-align: top; - background-color: #222; + background-color: var(--gj-bg-card); + border: 1px solid var(--gj-border); border-radius: 6px; + color: var(--gj-text-primary); } .source .imageContainer { @@ -88,19 +90,19 @@ display:table-cell; vertical-align: middle; width: 120px; + color: var(--gj-text-primary); } -.source:hover { - background-color: #333; +.source:hover, +.source:focus-visible { + background-color: var(--gj-bg-card-hover); + outline: unset; } - .source.otherButton:hover { cursor: pointer; - } - .checkContainer{ position: absolute; top: 5px; @@ -112,9 +114,29 @@ .error { width: 100%; margin-top: 5px; - background-color: rgba(0, 0, 0, .2); + background-color: rgba(255, 0, 0, .08); + border: 1px solid rgba(255, 0, 0, .18); padding: 5px; text-align: center; - color: red; + color: #c83333; border-radius: 10px; -} \ No newline at end of file +} + + +:global(:root[data-theme="light"]) .closeButton { + background: var(--gj-bg-panel-strong); + border: 1px solid var(--gj-border); +} + +:global(:root[data-theme="light"]) .closeButton img { + filter: var(--gj-theme-icon-filter); +} + + +/* broad-light-theme-icon-pass */ +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .iconClose, +:global(:root[data-theme="light"]) .button img, +:global(:root[data-theme="light"]) .status img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.tsx b/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.tsx index 07f65589..009ad2fa 100644 --- a/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.tsx +++ b/Grayjay.Desktop.Web/src/overlays/OverlayOfficialPluginsDialog/index.tsx @@ -158,12 +158,12 @@ const OverlayOfficialPluginsDialog: Component
-
+
-
+
0}>
-
+
diff --git a/Grayjay.Desktop.Web/src/pages/Channel/index.module.css b/Grayjay.Desktop.Web/src/pages/Channel/index.module.css index 4d780b20..dc1a2adf 100644 --- a/Grayjay.Desktop.Web/src/pages/Channel/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Channel/index.module.css @@ -2,7 +2,8 @@ display: flex; flex-direction: column; height: 100%; - + background: var(--gj-bg-root); + color: var(--gj-text-primary); } .containerTopBar { @@ -46,7 +47,7 @@ left: 0; width: 100%; height: 100%; - background-image: linear-gradient(to bottom, #141414DB, #141414 100%); + background-image: linear-gradient(to bottom, rgba(20, 20, 20, 0.86), var(--gj-bg-root) 100%); } .containerActions { @@ -79,7 +80,7 @@ } .creatorName { - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 28px; font-style: normal; @@ -89,7 +90,7 @@ } .creatorMetadata { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -99,7 +100,7 @@ } .creatorDescription { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; font-style: normal; @@ -130,22 +131,25 @@ .aboutTab { - width: 600px; - padding: 20px; - margin-top: 30px; - margin-left: auto; - margin-right: auto; - background-color: #111; - border-radius: 5px; + width: 600px; + padding: 20px; + margin-top: 30px; + margin-left: auto; + margin-right: auto; + background-color: var(--gj-bg-card); + border: 1px solid var(--gj-border); + border-radius: 8px; + color: var(--gj-text-primary); } .aboutLogo { - border-radius: 100px; - position: absolute; - top: 10px; - left: 10px; - width: 100px; + border-radius: 100px; + position: absolute; + top: 10px; + left: 10px; + width: 100px; height: 100px; + border: 1px solid var(--gj-border); } .aboutTextContainer { @@ -154,12 +158,13 @@ } .aboutTitle { + color: var(--gj-text-primary); padding-top: 35px; font-size: 25px; font-weight: bold; } .aboutMeta { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 15px; font-style: normal; @@ -168,9 +173,20 @@ .aboutDescription { + color: var(--gj-text-secondary); + white-space: pre-wrap; margin-left: 10px; margin-right: 10px; margin-bottom: 10px; font-family: 'Inter'; font-size: 16px; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .containerTopBarGradient { + background-image: linear-gradient(to bottom, rgba(245, 245, 243, 0.86), var(--gj-bg-root) 100%); +} + +:global(:root[data-theme="light"]) .containerTopBarControls img[src$="sidebar-open.svg"], +:global(:root[data-theme="light"]) .containerTopBarControls img[src$="sidebar-close.svg"] { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/pages/Channel/index.tsx b/Grayjay.Desktop.Web/src/pages/Channel/index.tsx index aa1783f4..7c782ae4 100644 --- a/Grayjay.Desktop.Web/src/pages/Channel/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Channel/index.tsx @@ -331,10 +331,10 @@ const ChannelPage: Component = () => {
-
+
Failed to load channel
-
+
{error$()?.message ?? error$()}
diff --git a/Grayjay.Desktop.Web/src/pages/Creators/index.tsx b/Grayjay.Desktop.Web/src/pages/Creators/index.tsx index 85d41138..f4b6cbb7 100644 --- a/Grayjay.Desktop.Web/src/pages/Creators/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Creators/index.tsx @@ -141,7 +141,7 @@ const CreatorsPage: Component = () => { showClearButton={true} inputContainerStyle={{ "height": "48px", - "background": "#141414" + "background": "var(--gj-bg-input)" }} onTextChanged={(v) => { setFilterText(v); @@ -207,7 +207,7 @@ const CreatorsPage: Component = () => { { icon: iconSearch, title: "Search Creators", - color: "#019BE7", + color: "var(--gj-accent)", action: ()=>{navigate("/web/search?type=" + ContentType.CHANNEL)} } ]} /> diff --git a/Grayjay.Desktop.Web/src/pages/Downloads/index.module.css b/Grayjay.Desktop.Web/src/pages/Downloads/index.module.css index e4ba36cf..6eaa79a2 100644 --- a/Grayjay.Desktop.Web/src/pages/Downloads/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Downloads/index.module.css @@ -26,8 +26,8 @@ .storageContainer { border-radius: var(--Corner-radius-80, 8px); - border: 1px solid #262626; - background: #1B1B1B; + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); margin: 24px; padding-left: 24px; padding-right: 24px; @@ -44,7 +44,7 @@ } .storageContainer .sizeCurrent { display: inline-block; - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; @@ -58,7 +58,7 @@ } .storageContainer .sizeTotal { display: inline-block; - color: #FFF; + color: var(--gj-text-primary); font-family: Inter; font-size: 18px; @@ -68,7 +68,7 @@ } .storageContainer .sizeInter { display: inline-block; - color: #A6A6A6; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 18px; font-style: normal; @@ -85,14 +85,14 @@ .storageContainer .storageIndicator { border-radius: 99px; - background: rgba(255, 255, 255, 0.06); + background: var(--gj-bg-card-active); height: 4px; width: 100%; margin-top: 16px; } .storageContainer .storageIndicator .bar { border-radius: 99px; - background: linear-gradient(90deg, #01D6E6 0%, #0182E7 98.73%); + background: var(--gj-accent-grad); height: 100%; } @@ -104,7 +104,7 @@ text-overflow: ellipsis; margin-top: 19px; vertical-align: top; - color: #9c9c9c; + color: var(--gj-text-tertiary); font-family: Inter; font-size: 14px; @@ -118,7 +118,7 @@ .storageContainer .storagePath .tooltip { display: none; position: absolute; - background-color: #333; + background-color: var(--gj-bg-card-active); padding: 5px; margin-top: 5px; margin-left: -100px; @@ -151,7 +151,7 @@ margin-left: 5px; vertical-align: top; - color: rgba(255, 255, 255, 0.60); + color: var(--gj-text-tertiary); leading-trim: both; @@ -208,9 +208,9 @@ margin: 4px; padding: 10px 20px; border-radius: 6px; - background: #141414; - border: 1px solid #2E2E2E; - color: white; + background: var(--gj-bg-button-secondary); + border: 1px solid var(--gj-border); + color: var(--gj-text-primary); text-align: center; leading-trim: both; @@ -225,13 +225,19 @@ } .deleteButton { - color: #F97066; + color: var(--gj-danger-accent); cursor: pointer; } .exportButton { - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); - color: #D9D9D9; + color: var(--gj-text-primary); cursor: pointer; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .storageContainer .sizeImage, +:global(:root[data-theme="light"]) .storageContainer .itemImage, +:global(:root[data-theme="light"]) .storageContainer .storagePath img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/pages/Downloads/index.tsx b/Grayjay.Desktop.Web/src/pages/Downloads/index.tsx index c9aa0df3..78b7f868 100644 --- a/Grayjay.Desktop.Web/src/pages/Downloads/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Downloads/index.tsx @@ -453,7 +453,7 @@ const DownloadsPage: Component = () => { ((row.audioSources?.length ?? 0) > 0) ? (toHumanBitrate(row.audioSources[0].bitrate)) : null ].filter(x=>x).join(" • "), style: { - color: "#8C8C8C" + color: "var(--gj-text-tertiary)" }, onClick(video: IVideoLocal){ openVideo(video); } }, @@ -461,7 +461,7 @@ const DownloadsPage: Component = () => { name: "Size", resolve: (row: any)=> toHumanBytesSize(calcSize(row)), style: { - color: "#8C8C8C" + color: "var(--gj-text-tertiary)" }, onClick(video: IVideoLocal){ openVideo(video); } }, @@ -473,7 +473,7 @@ const DownloadsPage: Component = () => { -
@@ -510,7 +510,7 @@ const DownloadsPage: Component = () => { name: "Resolution", resolve: (row:any)=> row.targetPixelCount, style: { - color: "#8C8C8C" + color: "var(--gj-text-tertiary)" }, onClick(video: IVideoLocal){ openVideo(video); } }, @@ -522,7 +522,7 @@ const DownloadsPage: Component = () => { -
@@ -555,7 +555,7 @@ const DownloadsPage: Component = () => { const video = useVideo(); let scrollContainerRef: HTMLDivElement | undefined; return ( - +
@@ -643,7 +643,7 @@ const DownloadsPage: Component = () => { -
@@ -671,7 +671,7 @@ const DownloadsPage: Component = () => { { icon: searchIcon, title: "Search Videos", - color: "#019BE7", + color: "var(--gj-accent)", action: ()=>{navigate("/web/search?type=" + ContentType.MEDIA)} } ]} /> diff --git a/Grayjay.Desktop.Web/src/pages/History/index.module.css b/Grayjay.Desktop.Web/src/pages/History/index.module.css index 1f242901..7d46f985 100644 --- a/Grayjay.Desktop.Web/src/pages/History/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/History/index.module.css @@ -5,7 +5,7 @@ } .title { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; @@ -24,7 +24,7 @@ display: -webkit-box; -webkit-line-clamp: 2; /* Number of lines you want to display before truncating */ -webkit-box-orient: vertical; - color: #F0F0F0; + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -35,7 +35,7 @@ } .authorTitle { - color: #a3a3a3; + color: var(--gj-text-secondary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -47,7 +47,7 @@ } .authorMetadata { - color: #6a6a6a; + color: var(--gj-text-tertiary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -63,7 +63,7 @@ display: flex; flex-direction: row; height: 100%; - border-top: 1px solid #2e2e2e; + border-top: 1px solid var(--gj-border); align-items: center; padding-top: 16px; padding-bottom: 16px; @@ -74,6 +74,6 @@ } .itemContainer:focus-visible { - background-color:#2e2e2e; + background-color: var(--gj-bg-hover); outline: unset; } \ No newline at end of file diff --git a/Grayjay.Desktop.Web/src/pages/History/index.tsx b/Grayjay.Desktop.Web/src/pages/History/index.tsx index b909b567..4edc726a 100644 --- a/Grayjay.Desktop.Web/src/pages/History/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/History/index.tsx @@ -191,7 +191,7 @@ const HistoryPage: Component = () => { style={{ "width": "300px", }} inputContainerStyle={{ - "background-color": "#212121" + "background-color": "var(--gj-bg-input)" }} onTextChanged={(newVal) => setQuery(newVal)} icon={ic_search} @@ -210,7 +210,7 @@ const HistoryPage: Component = () => { style={{ "margin-left": "16px", "margin-right": "32px", - "border": "1px solid #f621215c", + "border": "1px solid var(--gj-danger-accent)", }} onClick={(e) => { contentAnchor.setElement(e.target as HTMLElement); @@ -318,7 +318,7 @@ const HistoryPage: Component = () => { "bottom": "0px", "left": "0px", "right": "0px", - "background-color": "#019BE7", + "background-color": "var(--gj-accent)", "height": "3px", "width": historyVideo() ? `${(getVideoProgressPercentage(historyVideo()?.position, historyVideo()?.video?.duration))}%` : undefined }} /> diff --git a/Grayjay.Desktop.Web/src/pages/Playlist/index.module.css b/Grayjay.Desktop.Web/src/pages/Playlist/index.module.css index 5e13946b..df91d4f5 100644 --- a/Grayjay.Desktop.Web/src/pages/Playlist/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Playlist/index.module.css @@ -6,7 +6,7 @@ } .header { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -17,7 +17,7 @@ } .metadata { - color: rgba(255, 255, 255, 0.60); + color: var(--gj-text-muted); leading-trim: both; text-edge: cap; font-family: Inter; @@ -31,7 +31,7 @@ display: flex; flex-direction: row; font-size: 16px; - color: #808080; + color: var(--gj-text-tertiary); align-items: center; } @@ -69,7 +69,7 @@ -webkit-line-clamp: 2; flex: 1 0 0; overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; text-overflow: ellipsis; diff --git a/Grayjay.Desktop.Web/src/pages/Playlists/index.module.css b/Grayjay.Desktop.Web/src/pages/Playlists/index.module.css index 9b487437..f55ee4cb 100644 --- a/Grayjay.Desktop.Web/src/pages/Playlists/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Playlists/index.module.css @@ -6,7 +6,7 @@ } .textHeader { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -39,6 +39,7 @@ } .containerSeeAll { + background: var(--gj-bg-button-secondary); display: flex; flex-direction: row; align-items: center; @@ -49,7 +50,7 @@ padding-bottom: 16px; cursor: pointer; - color: #FFF; + color: var(--gj-text-primary); text-align: center; leading-trim: both; text-edge: cap; @@ -61,7 +62,7 @@ line-height: 140%; /* 19.6px */ border-radius: 6px; - border: 1px solid #2E2E2E; + border: 1px solid var(--gj-border); } .containerPlaylists { @@ -95,7 +96,7 @@ -webkit-overflow-scrolling: touch; scrollbar-width: thin; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-border-strong) var(--gj-bg-panel); } .watchLaterItem { diff --git a/Grayjay.Desktop.Web/src/pages/Playlists/index.tsx b/Grayjay.Desktop.Web/src/pages/Playlists/index.tsx index 88c8cd06..bd360f9e 100644 --- a/Grayjay.Desktop.Web/src/pages/Playlists/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Playlists/index.tsx @@ -289,7 +289,7 @@ const PlaylistsPage: Component = () => { showClearButton={true} inputContainerStyle={{ "height": "48px", - "background": "#141414" + "background": "var(--gj-bg-input)" }} onTextChanged={(v) => { setFilterText(v); @@ -298,7 +298,7 @@ const PlaylistsPage: Component = () => { setSortBy(v)} value={sortBy()} options={sortOptions} anchorStyle={AnchorStyle.BottomLeft} style={{"width": "280px"}} /> { { icon: icon_add, title: "Create Playlist", - color: "#019BE7", + color: "var(--gj-accent)", action: ()=>{createPlaylist()} } ]} /> diff --git a/Grayjay.Desktop.Web/src/pages/RemotePlaylist/index.module.css b/Grayjay.Desktop.Web/src/pages/RemotePlaylist/index.module.css index 5e13946b..df91d4f5 100644 --- a/Grayjay.Desktop.Web/src/pages/RemotePlaylist/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/RemotePlaylist/index.module.css @@ -6,7 +6,7 @@ } .header { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -17,7 +17,7 @@ } .metadata { - color: rgba(255, 255, 255, 0.60); + color: var(--gj-text-muted); leading-trim: both; text-edge: cap; font-family: Inter; @@ -31,7 +31,7 @@ display: flex; flex-direction: row; font-size: 16px; - color: #808080; + color: var(--gj-text-tertiary); align-items: center; } @@ -69,7 +69,7 @@ -webkit-line-clamp: 2; flex: 1 0 0; overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; text-overflow: ellipsis; diff --git a/Grayjay.Desktop.Web/src/pages/Search/index.module.css b/Grayjay.Desktop.Web/src/pages/Search/index.module.css index eec9cd2f..657f4cfe 100644 --- a/Grayjay.Desktop.Web/src/pages/Search/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Search/index.module.css @@ -30,7 +30,7 @@ position: fixed; top: 0px; left: 0px; - background: rgba(15, 15, 15, 0.8); + background: var(--gj-bg-backdrop); display: flex; align-items: center; @@ -44,9 +44,9 @@ flex-direction: column; align-items: flex-start; border-radius: 12px; - border: 1px solid #454545; - background: #141414; - box-shadow: 0px 100px 80px 0px rgba(0, 0, 0, 0.12), 0px 64.815px 46.852px 0px rgba(0, 0, 0, 0.09), 0px 38.519px 25.481px 0px rgba(0, 0, 0, 0.07), 0px 20px 13px 0px rgba(0, 0, 0, 0.06), 0px 8.148px 6.519px 0px rgba(0, 0, 0, 0.05), 0px 1.852px 3.148px 0px rgba(0, 0, 0, 0.03); + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + box-shadow: var(--gj-shadow); min-width: 400px; width: 60%; box-sizing: border-box; @@ -54,7 +54,7 @@ } .filtersDialogTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -65,7 +65,7 @@ } .filterHeader { - color: #D9D9D9; + color: var(--gj-text-secondary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -75,4 +75,8 @@ line-height: normal; margin-top: 32px; margin-bottom: 16px; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .filtersDialog img[src$="icon24_close.svg"] { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/pages/Search/index.tsx b/Grayjay.Desktop.Web/src/pages/Search/index.tsx index 6dd028d4..866e8cf8 100644 --- a/Grayjay.Desktop.Web/src/pages/Search/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Search/index.tsx @@ -175,7 +175,7 @@ const SearchPage: Component = () => { performSearch(v, sortBy$(), filterValues$(), enabledSources$()); }} focusable={true} /> - setFiltersDialogVisible(true)} focusableOpts={{ + setFiltersDialogVisible(true)} focusableOpts={{ onPress: () => setFiltersDialogVisible(true) }} /> diff --git a/Grayjay.Desktop.Web/src/pages/Settings/index.module.css b/Grayjay.Desktop.Web/src/pages/Settings/index.module.css index 320307ee..c18f4591 100644 --- a/Grayjay.Desktop.Web/src/pages/Settings/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Settings/index.module.css @@ -15,7 +15,7 @@ flex-direction: column; } .settingsMenuItem { - color: rgba(255, 255, 255, 0.60); + color: var(--gj-text-muted); height: 46px; border-radius: 6px; font-family: Inter; @@ -41,24 +41,24 @@ } .advanced:focus-visible { - background: #454545; + background: var(--gj-border-strong); border-radius: 6px; outline: unset; } .settingsMenuItem:hover { cursor: pointer; - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); } .settingsMenuItem:focus-visible { - background: rgba(255, 255, 255, 0.055); + background: var(--gj-bg-hover); outline: unset; } .settingsMenuItem.active { - color: #FFF; - background: rgba(255, 255, 255, 0.105); + color: var(--gj-text-primary); + background: var(--gj-bg-selected); padding-left: 16px; height: 46px; font-family: Inter; diff --git a/Grayjay.Desktop.Web/src/pages/Settings/index.tsx b/Grayjay.Desktop.Web/src/pages/Settings/index.tsx index b1c0b9cf..51db70bc 100644 --- a/Grayjay.Desktop.Web/src/pages/Settings/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Settings/index.tsx @@ -122,7 +122,7 @@ const SettingsPage: Component = (props) => { onPress: () => { setAdvanced(!showAdvanced$()) }, onBack: globalBack }} class={styles.advanced}> -
+
Advanced
diff --git a/Grayjay.Desktop.Web/src/pages/Sources/index.module.css b/Grayjay.Desktop.Web/src/pages/Sources/index.module.css index 37987614..80ae18d5 100644 --- a/Grayjay.Desktop.Web/src/pages/Sources/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Sources/index.module.css @@ -1,7 +1,6 @@ - .pageTitle { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -39,19 +38,21 @@ position: relative; width: calc(100% - 40px); height: 80px; - background-color: #111; + background-color: var(--gj-bg-card); overflow: hidden; margin-left: 24px; border-radius: 8px; - border-bottom: 1px solid #1B1B1B; + border: 1px solid var(--gj-border); } -.source:focus-visible { - background-color: #454545; +.source:focus-visible, +.source:hover { + background-color: var(--gj-bg-card-hover); + outline: unset; } .source.enabled { - background-color: #222; + background-color: var(--gj-bg-card-active); } .source .thumb { @@ -70,7 +71,7 @@ font-family: "Inter"; line-height: 24px; overflow: hidden; - color: white; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; text-overflow: ellipsis; @@ -103,8 +104,8 @@ width: 80px; height: 30px; text-align:center; - background-color: #444; - color: white; + background-color: var(--gj-bg-panel-strong); + color: var(--gj-text-primary); border: 0px; border-radius: 20px; } @@ -122,4 +123,4 @@ margin-right: 15px; vertical-align: top; margin-top: 10px; -} \ No newline at end of file +} diff --git a/Grayjay.Desktop.Web/src/pages/Sources/index.tsx b/Grayjay.Desktop.Web/src/pages/Sources/index.tsx index 11d6f3c1..80fb7e3b 100644 --- a/Grayjay.Desktop.Web/src/pages/Sources/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Sources/index.tsx @@ -225,7 +225,7 @@ const SourcesPage: Component = () => { >
-
0 && subProgress$() < 1}> -
+
@@ -477,7 +477,7 @@ const SubscriptionsPage: Component = () => { { icon: iconSearch, title: "Search Creators", - color: "#019BE7", + color: "var(--gj-accent)", action: ()=>{navigate("/web/search?type=" + ContentType.CHANNEL)} } ]} /> diff --git a/Grayjay.Desktop.Web/src/pages/Sync/index.module.css b/Grayjay.Desktop.Web/src/pages/Sync/index.module.css index 69d574a3..9344f406 100644 --- a/Grayjay.Desktop.Web/src/pages/Sync/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/Sync/index.module.css @@ -9,9 +9,9 @@ padding-right: 20px; padding-bottom: 20px; border-radius: 12px; - border: 1px solid #2E2E2E; - background: #141414; - box-shadow: 0px 1.648px 3.148px 0px rgba(0, 0, 0, 0.10), 0px 7.252px 6.519px 0px rgba(0, 0, 0, 0.16), 0px 17.8px 13px 0px rgba(0, 0, 0, 0.21), 0px 34.281px 25.481px 0px rgba(0, 0, 0, 0.26), 0px 57.685px 46.852px 0px rgba(0, 0, 0, 0.32), 0px 89px 80px 0px rgba(0, 0, 0, 0.42); + border: 1px solid var(--gj-border); + background: var(--gj-bg-panel); + box-shadow: var(--gj-shadow); } .header { @@ -31,7 +31,7 @@ } .header .headerSubText { font-size: 14px; - color: #AAA; + color: var(--gj-text-tertiary); margin-top: 5px; } @@ -45,7 +45,7 @@ width: 40px; height: 40px; border-radius: 48px; - background: #2E2E2E; + background: var(--gj-bg-panel-strong); cursor: pointer; } .closeButton img { @@ -60,7 +60,7 @@ overflow-y: auto; max-height: 800px; scrollbar-width: thin; - scrollbar-color: #555 #333; + scrollbar-color: var(--gj-scroll-thumb) var(--gj-scroll-track); } .source { @@ -71,7 +71,7 @@ cursor: pointer; } .source .name { - color: #CDCDCD; + color: var(--gj-text-secondary); text-overflow: ellipsis; font-family: Inter; font-size: 16px; @@ -88,7 +88,7 @@ overflow: hidden; font-size: 12px; text-overflow: ellipsis; - color: #8C8C8C + color: var(--gj-text-tertiary) } .source.hasSubs .meta { display: hidden; @@ -111,13 +111,13 @@ .source.enabled { border-radius: 4px; - background: rgba(255, 255, 255, 0.04); + background: var(--gj-bg-hover); } .source.enabled img { display: block; } .source.enabled .name { - color: #F0F0F0; + color: var(--gj-text-primary); font-weight: 600; } @@ -135,9 +135,9 @@ align-items: flex-start; overflow: hidden; border-radius: var(--Corner-radius-80, 8px); - border: 1px solid #454545; - background: #1B1B1B; - color: white; + border: 1px solid var(--gj-border-strong); + background: var(--gj-bg-card); + color: var(--gj-text-primary); font-family: Inter; font-size: 16px; font-style: normal; @@ -149,7 +149,7 @@ } .pairingUrl:hover { - border: 1px solid #7a7a7a; + border: 1px solid var(--gj-border-strong); } .errorCard { @@ -161,7 +161,7 @@ align-items: center; justify-content: center; gap: 6px; - color: #F97066; + color: var(--gj-danger-accent); leading-trim: both; text-edge: cap; font-family: Inter; @@ -173,14 +173,14 @@ .warningCard { border-radius: 6px; - background: rgba(244, 162, 97, 0.10); + background: var(--gj-warning-bg); display: flex; height: 36px; padding: 10px 12px; align-items: center; justify-content: center; gap: 6px; - color: #F4A261; + color: var(--gj-warning-text); leading-trim: both; text-edge: cap; font-family: Inter; @@ -188,4 +188,10 @@ font-style: normal; font-weight: 500; line-height: normal; -} \ No newline at end of file +} + +:global(:root[data-theme="light"]) .closeButton img, +:global(:root[data-theme="light"]) .source.enabled img, +:global(:root[data-theme="light"]) .pairingUrl img { + filter: var(--gj-theme-icon-filter); +} diff --git a/Grayjay.Desktop.Web/src/pages/Sync/index.tsx b/Grayjay.Desktop.Web/src/pages/Sync/index.tsx index 99ccd14d..cb6352f6 100644 --- a/Grayjay.Desktop.Web/src/pages/Sync/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/Sync/index.tsx @@ -42,18 +42,18 @@ const SyncPage: Component = () => { break; } - return (
await SyncBackend.removeDevice(publicKey) }}>
-
{title}
-
{subtitle}
+
{title}
+
{subtitle}
-
+
-
{status}
+
{status}
await SyncBackend.removeDevice(publicKey)} />
); @@ -102,7 +102,7 @@ const SyncPage: Component = () => {
Please enable sync to use this feature -
@@ -222,7 +222,7 @@ const SyncPage: Component = () => { }} style={{cursor: "pointer", "flex-shrink": 0, "margin-right": "20px"}} small={true} - color={"linear-gradient(267deg, #01D6E6 -100.57%, #0182E7 90.96%)"} + color={"var(--gj-accent-grad)"} focusableOpts={{ onPress: () => UIOverlay.overlayNewDeviceSync() }} /> {renderQrCodeOverlay()} @@ -254,7 +254,7 @@ const SyncPage: Component = () => { }} style={{cursor: "pointer", "flex-shrink": 0}} small={true} - color={"linear-gradient(267deg, #01D6E6 -100.57%, #0182E7 90.96%)"} + color={"var(--gj-accent-grad)"} focusableOpts={{ onPress: () => UIOverlay.overlayNewDeviceSync() }} /> @@ -267,7 +267,7 @@ const SyncPage: Component = () => { -
setIsQrVisible(false)}>{renderQrCodeOverlay()}
+
setIsQrVisible(false)}>{renderQrCodeOverlay()}
diff --git a/Grayjay.Desktop.Web/src/pages/WatchLater/index.module.css b/Grayjay.Desktop.Web/src/pages/WatchLater/index.module.css index af763e2d..aa71ab02 100644 --- a/Grayjay.Desktop.Web/src/pages/WatchLater/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/WatchLater/index.module.css @@ -6,7 +6,7 @@ } .header { - color: #FFF; + color: var(--gj-text-primary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -17,7 +17,7 @@ } .metadata { - color: rgba(255, 255, 255, 0.60); + color: var(--gj-text-muted); leading-trim: both; text-edge: cap; font-family: Inter; @@ -31,7 +31,7 @@ display: flex; flex-direction: row; font-size: 16px; - color: #808080; + color: var(--gj-text-tertiary); align-items: center; } @@ -69,7 +69,7 @@ -webkit-line-clamp: 2; flex: 1 0 0; overflow: hidden; - color: #F0F0F0; + color: var(--gj-text-primary); text-overflow: ellipsis; font-family: Inter; font-size: 16px; diff --git a/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.module.css b/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.module.css index 6155ebf9..15433014 100644 --- a/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.module.css +++ b/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.module.css @@ -1,5 +1,4 @@ - .header { position: relative; flex-shrink: 0; @@ -10,7 +9,8 @@ .header .icon{ height: 80px; width: 80px; - background-color: #1d1d1d; + background-color: var(--gj-bg-card); + border: 1px solid var(--gj-border); border-radius: 14px; position: relative; flex-shrink: 0; @@ -29,7 +29,7 @@ } .header .descriptor .title{ - color: #FFF; + color: var(--gj-text-primary); font-family: "Inter"; leading-trim: both; text-edge: cap; @@ -41,7 +41,7 @@ margin-bottom: 2px; } .header .descriptor .description { - color: #8C8C8C; + color: var(--gj-text-tertiary); font-family: "Inter"; leading-trim: both; text-edge: cap; @@ -53,7 +53,7 @@ margin-bottom: 10px; } .header .descriptor .meta { - color: #FFF; + color: var(--gj-text-secondary); leading-trim: both; text-edge: cap; font-family: Inter; @@ -63,7 +63,7 @@ line-height: normal; } .header .descriptor .meta > a { - color: #019BE7; + color: var(--gj-accent); text-decoration: none; } @@ -73,4 +73,4 @@ flex-direction: column; align-items: center; overflow: hidden; -} \ No newline at end of file +} diff --git a/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.tsx b/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.tsx index 858edf86..45711b10 100644 --- a/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.tsx +++ b/Grayjay.Desktop.Web/src/pages/subpages/SourceDetails/index.tsx @@ -281,7 +281,7 @@ const SourceDetails: Component = (props: SourceDetailsProps) }} /> - -