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 (
{installedVersions.map((version) => )}
-
-
-
-
-
-
-
+
+
+
+
-
-
+
)
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 (
+
+
+
+
+ )
+}