diff --git a/package-lock.json b/package-lock.json index d082d573..ed57c39b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10254,6 +10254,11 @@ "loose-envify": "^1.1.0" } }, + "react-colorful": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.1.tgz", + "integrity": "sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==" + }, "react-dom": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", diff --git a/package.json b/package.json index c6ade437..d0fe535c 100644 --- a/package.json +++ b/package.json @@ -242,6 +242,7 @@ "electron-updater": "^4.6.5", "history": "^5.3.0", "react": "^18.1.0", + "react-colorful": "^5.5.1", "react-dom": "^18.1.0", "react-icons": "^4.4.0", "react-outside-click-handler": "^1.3.0", diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 3d5fced9..658546fe 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -4,6 +4,7 @@ import { Routes, Route } from "react-router-dom"; import { AvailableVersionsList } from "./pages/available-versions-list.components"; import { VersionViewer } from "./pages/version-viewer.component"; import { Modal } from "./components/modal/modal.component"; +import { SettingsPage } from "./pages/settings-page.component"; export default function App() { @@ -16,6 +17,7 @@ export default function App() {
}/> + }/> }/>
diff --git a/src/renderer/components/nav-bar/nav-bar.component.tsx b/src/renderer/components/nav-bar/nav-bar.component.tsx index 900271c5..8201bdba 100644 --- a/src/renderer/components/nav-bar/nav-bar.component.tsx +++ b/src/renderer/components/nav-bar/nav-bar.component.tsx @@ -6,40 +6,45 @@ import { BSVersion } from '../../../main/services/bs-version-manager.service'; import { useEffect, useState } from 'react'; import { BSVersionManagerService } from '../../services/bs-version-manager.service'; import { Link } from 'react-router-dom'; +import { ConfigurationService } from 'renderer/services/configuration.service'; export function NavBar() { + const configService = ConfigurationService.getInstance(); + const [installedVersions, setInstalledVersions] = useState([] as BSVersion[]); + const [firstColor, setFirstColor] = useState(configService.get("first-color") || "#3b82ff"); + const [secondColor, setSecondColor] = useState(configService.get("second-color") || "#ff4444"); + useEffect(() => { BSVersionManagerService.getInstance().installedVersions$.subscribe(versions => { setInstalledVersions([]); setInstalledVersions(versions); - }) + }); + + configService.watch("first-color").subscribe(hex => setFirstColor(hex)); + configService.watch("second-color").subscribe(hex => setSecondColor(hex)); }, []) return ( ) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx new file mode 100644 index 00000000..b8b1d6d6 --- /dev/null +++ b/src/renderer/pages/settings-page.component.tsx @@ -0,0 +1,22 @@ +import { HexColorPicker } from "react-colorful" +import { ConfigurationService } from "renderer/services/configuration.service" + +export function SettingsPage() { + + const configService = ConfigurationService.getInstance(); + + const setFirstColorSetting = (hex: string) => { + configService.set("first-color", hex); + } + + const setSecondColorSetting = (hex: string) => { + configService.set("second-color", hex); + } + + return ( +
+ + +
+ ) +}