From 020e33f42b852706f37f071f65eb50220c476a93 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Tue, 28 Jun 2022 20:01:53 +0200 Subject: [PATCH] support light theme --- src/renderer/App.tsx | 17 ++++++- .../available-version-item.component.tsx | 2 +- .../modal-types/guard-modal.component.tsx | 6 +-- .../installation-folder-modal.component.tsx | 4 +- .../modal-types/login-modal.component.tsx | 12 ++--- .../modal-types/uninstall-modal.component.tsx | 4 +- .../components/modal/modal.component.tsx | 2 +- .../nav-bar/bs-version-item.component.tsx | 6 +-- .../components/nav-bar/nav-bar.component.tsx | 2 +- .../bsm-progress-bar.component.tsx | 22 +++------ .../setting-color-chooser.component.tsx | 2 +- .../settings/setting-container.component.tsx | 4 +- .../setting-radio-array.component.tsx | 8 ++-- .../shared/bsm-button.component.tsx | 4 +- .../shared/bsm-dropdown-button.component.tsx | 10 ++--- .../shared/tab-nav-bar.component.tsx | 2 +- .../title-bar/title-bar.component.tsx | 10 ++--- .../config/default-configuration.config.ts | 7 ++- .../pages/settings-page.component.tsx | 45 ++++++++++++------- .../pages/version-viewer.component.tsx | 18 ++++---- src/renderer/services/modale.service.ts | 1 + src/renderer/services/theme.service.ts | 35 +++++++++++++++ tailwind.config.js | 6 +++ 23 files changed, 143 insertions(+), 86 deletions(-) create mode 100644 src/renderer/services/theme.service.ts diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 940723e8..506644cd 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -6,16 +6,29 @@ import { VersionViewer } from "./pages/version-viewer.component"; import { Modal } from "./components/modal/modal.component"; import { SettingsPage } from "./pages/settings-page.component"; import { BsmProgressBar } from "./components/progress-bar/bsm-progress-bar.component"; +import { useEffect } from "react"; +import { ThemeService } from "./services/theme.service"; +import { ThemeConfig } from "./config/default-configuration.config"; export default function App() { + const themeService = ThemeService.getInstance(); + + useEffect(() => { + themeService.theme$.subscribe(() => { + if(themeService.isDark || (themeService.isOS && window.matchMedia('(prefers-color-scheme: dark)').matches)){ document.documentElement.classList.add('dark'); } + else { document.documentElement.classList.remove('dark'); } + }); + }, []) + + return ( -
+
-
+
}/> }/> diff --git a/src/renderer/components/available-versions/available-version-item.component.tsx b/src/renderer/components/available-versions/available-version-item.component.tsx index ca32ee08..69b0f78f 100644 --- a/src/renderer/components/available-versions/available-version-item.component.tsx +++ b/src/renderer/components/available-versions/available-version-item.component.tsx @@ -37,7 +37,7 @@ export function AvailableVersionItem(props: {version: BSVersion}) { return (
-
+
diff --git a/src/renderer/components/modal/modal-types/guard-modal.component.tsx b/src/renderer/components/modal/modal-types/guard-modal.component.tsx index 75d637c5..d71e0ae3 100644 --- a/src/renderer/components/modal/modal-types/guard-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/guard-modal.component.tsx @@ -15,11 +15,11 @@ export function GuardModal({resolver}: {resolver: (x: ModalResponse) => void}) { return (
{e.preventDefault(); login();}}> -

Steam Guard

+

Steam Guard

- - setGuardCode(e.target.value.toUpperCase())} value={guardCode} type="guard" name="guard" id="guard" placeholder="Enter your Guard code"/> + + setGuardCode(e.target.value.toUpperCase())} value={guardCode} type="guard" name="guard" id="guard" placeholder="Enter your Guard code"/>
{resolver({exitCode: ModalExitCode.CANCELED})}} withBar={false} text="Cancel"/> diff --git a/src/renderer/components/modal/modal-types/installation-folder-modal.component.tsx b/src/renderer/components/modal/modal-types/installation-folder-modal.component.tsx index 5cf817bb..750f9f69 100644 --- a/src/renderer/components/modal/modal-types/installation-folder-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/installation-folder-modal.component.tsx @@ -10,9 +10,9 @@ export function InstallationFolderModal({resolver}: {resolver: (x: ModalResponse return ( <> -

installation folder

+

installation folder

-

Changing the default installation folder for Beat Saber instances will cause all installed data to be moved to the new folder.

+

Changing the default installation folder for Beat Saber instances will cause all installed data to be moved to the new folder.

resolver({exitCode: ModalExitCode.CANCELED})} withBar={false} text="Cancel"/> resolver({exitCode: ModalExitCode.COMPLETED})} withBar={false} text="Choose Folder"/> diff --git a/src/renderer/components/modal/modal-types/login-modal.component.tsx b/src/renderer/components/modal/modal-types/login-modal.component.tsx index 190f428c..32e82f3b 100644 --- a/src/renderer/components/modal/modal-types/login-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/login-modal.component.tsx @@ -17,19 +17,19 @@ export function LoginModal({resolver}: {resolver: (x: ModalResponse) => void}) { return ( {e.preventDefault(); loggin();}}> -

Steam Login

+

Steam Login

- - setUsername(e.target.value)} value={username} type="text" name="username" id="username" placeholder="Enter your username"/> + + setUsername(e.target.value)} value={username} type="text" name="username" id="username" placeholder="Enter your username"/>
- - setPassword(e.target.value)} value={password} type="password" name="password" id="password" placeholder="Enter your password"/> + + setPassword(e.target.value)} value={password} type="password" name="password" id="password" placeholder="Enter your password"/>
setStay(e.target.checked)} checked={stay} className="mr-1" type="checkbox" name="stay" id="stay" /> - +
{resolver({exitCode: ModalExitCode.CANCELED})}} withBar={false} text="Cancel"/> diff --git a/src/renderer/components/modal/modal-types/uninstall-modal.component.tsx b/src/renderer/components/modal/modal-types/uninstall-modal.component.tsx index 640a6a69..e5b684f7 100644 --- a/src/renderer/components/modal/modal-types/uninstall-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/uninstall-modal.component.tsx @@ -10,9 +10,9 @@ export function UninstallModal({resolver}: {resolver: (x: ModalResponse) => void return ( {e.preventDefault(); resolver({exitCode: ModalExitCode.COMPLETED})}}> -

Uninstall

+

Uninstall

-

Are you sure you want to uninstall BeatSaber {version.BSVersion} ? You will have to re-download it to play it.

+

Are you sure you want to uninstall BeatSaber {version.BSVersion} ? You will have to re-download it to play it.

{resolver({exitCode: ModalExitCode.CANCELED})}} withBar={false} text="Cancel"/> diff --git a/src/renderer/components/modal/modal.component.tsx b/src/renderer/components/modal/modal.component.tsx index df51e74e..cd8aa9af 100644 --- a/src/renderer/components/modal/modal.component.tsx +++ b/src/renderer/components/modal/modal.component.tsx @@ -35,7 +35,7 @@ export function Modal() {
modalSevice.resolve({exitCode: ModalExitCode.NO_CHOICE})} className="absolute top-0 bottom-0 right-0 left-0 bg-black" initial={{opacity: 0}} animate={{opacity: modalType && .60}} exit={{opacity: 0}} transition={{duration: .2}}/> -
+
{modalType === ModalType.STEAM_LOGIN && } {modalType === ModalType.GUARD_CODE && } diff --git a/src/renderer/components/nav-bar/bs-version-item.component.tsx b/src/renderer/components/nav-bar/bs-version-item.component.tsx index 1e28e571..5311cf7f 100644 --- a/src/renderer/components/nav-bar/bs-version-item.component.tsx +++ b/src/renderer/components/nav-bar/bs-version-item.component.tsx @@ -30,16 +30,16 @@ export default function BsVersionItem(props: {version: BSVersion}) { setDownloadPercent(0); } }) - }, []) + }, []); return (
- + {props.version.steam && } {!props.version.steam && } - {props.version.BSVersion} + {props.version.BSVersion}
diff --git a/src/renderer/components/nav-bar/nav-bar.component.tsx b/src/renderer/components/nav-bar/nav-bar.component.tsx index 053c73e4..a90d08cd 100644 --- a/src/renderer/components/nav-bar/nav-bar.component.tsx +++ b/src/renderer/components/nav-bar/nav-bar.component.tsx @@ -17,7 +17,7 @@ export function NavBar() { const secondColor = useObservable(configService.watch("second-color")); return ( -