diff --git a/src/main/events/aparence/open-editor-window.ts b/src/main/events/aparence/open-editor-window.ts new file mode 100644 index 00000000..05307f9b --- /dev/null +++ b/src/main/events/aparence/open-editor-window.ts @@ -0,0 +1,7 @@ +import { registerEvent } from "../register-event"; +import { WindowManager } from "@main/services"; + +const openEditorWindow = async (_event: Electron.IpcMainInvokeEvent) => + WindowManager.openEditorWindow(); + +registerEvent("openEditorWindow", openEditorWindow); diff --git a/src/main/events/index.ts b/src/main/events/index.ts index 25882c3f..48580002 100644 --- a/src/main/events/index.ts +++ b/src/main/events/index.ts @@ -49,6 +49,7 @@ import "./user-preferences/authenticate-real-debrid"; import "./download-sources/put-download-source"; import "./auth/sign-out"; import "./auth/open-auth-window"; +import "./aparence/open-editor-window"; import "./auth/get-session-hash"; import "./user/get-user"; import "./user/get-blocked-users"; diff --git a/src/main/services/window-manager.ts b/src/main/services/window-manager.ts index a7cfcee2..b24efd64 100644 --- a/src/main/services/window-manager.ts +++ b/src/main/services/window-manager.ts @@ -186,6 +186,52 @@ export class WindowManager { } } + public static openEditorWindow() { + if (this.mainWindow) { + const editorWindow = new BrowserWindow({ + width: 600, + height: 720, + minWidth: 600, + minHeight: 720, + backgroundColor: "#1c1c1c", + titleBarStyle: process.platform === "linux" ? "default" : "hidden", + ...(process.platform === "linux" ? { icon } : {}), + trafficLightPosition: { x: 16, y: 16 }, + titleBarOverlay: { + symbolColor: "#DADBE1", + color: "#151515", + height: 34, + }, + parent: this.mainWindow, + modal: true, + show: false, + maximizable: true, + resizable: true, + minimizable: true, + webPreferences: { + sandbox: false, + preload: path.join(__dirname, "../preload/index.mjs"), + }, + }); + + editorWindow.removeMenu(); + + if (is.dev && process.env["ELECTRON_RENDERER_URL"]) { + editorWindow.loadURL(`${process.env["ELECTRON_RENDERER_URL"]}#/editor`); + } else { + editorWindow.loadFile(path.join(__dirname, "../renderer/index.html"), { + hash: "editor", + }); + } + + editorWindow.once("ready-to-show", () => { + editorWindow.show(); + }); + + // if (!app.isPackaged) editorWindow.webContents.openDevTools(); + } + } + public static redirect(hash: string) { if (!this.mainWindow) this.createMainWindow(); this.loadMainWindowURL(hash); diff --git a/src/preload/index.ts b/src/preload/index.ts index 316397d2..48fd036a 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -307,4 +307,7 @@ contextBridge.exposeInMainWorld("electron", { /* Notifications */ publishNewRepacksNotification: (newRepacksCount: number) => ipcRenderer.invoke("publishNewRepacksNotification", newRepacksCount), + + /* Editor */ + openEditorWindow: () => ipcRenderer.invoke("openEditorWindow"), }); diff --git a/src/renderer/src/declaration.d.ts b/src/renderer/src/declaration.d.ts index 88f3297f..5b1858e5 100644 --- a/src/renderer/src/declaration.d.ts +++ b/src/renderer/src/declaration.d.ts @@ -259,6 +259,9 @@ declare global { /* Notifications */ publishNewRepacksNotification: (newRepacksCount: number) => Promise; + + /* Editor */ + openEditorWindow: () => Promise; } interface Window { diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx index 61c561f1..c006ddcd 100644 --- a/src/renderer/src/main.tsx +++ b/src/renderer/src/main.tsx @@ -30,6 +30,7 @@ const Downloads = React.lazy(() => import("./pages/downloads/downloads")); const Settings = React.lazy(() => import("./pages/settings/settings")); const Catalogue = React.lazy(() => import("./pages/catalogue/catalogue")); const Profile = React.lazy(() => import("./pages/profile/profile")); +const Editor = React.lazy(() => import("./pages/editor/editor")); const Achievements = React.lazy( () => import("./pages/achievements/achievements") ); @@ -104,6 +105,11 @@ ReactDOM.createRoot(document.getElementById("root")!).render( element={} /> + + } + /> diff --git a/src/renderer/src/pages/editor/editor.scss b/src/renderer/src/pages/editor/editor.scss new file mode 100644 index 00000000..b617577c --- /dev/null +++ b/src/renderer/src/pages/editor/editor.scss @@ -0,0 +1,18 @@ +@use "../../scss/globals.scss"; + +.editor-header { + width: 100%; + height: 36px; + background-color: globals.$dark-background-color; + display: flex; + align-items: center; + justify-content: start; + padding: 0 calc(globals.$spacing-unit * 2); + -webkit-app-region: drag; +} + +.editor-header-title { + font-size: 7px; + font-weight: 500; + color: globals.$body-color; +} diff --git a/src/renderer/src/pages/editor/editor.tsx b/src/renderer/src/pages/editor/editor.tsx new file mode 100644 index 00000000..e37ccaa6 --- /dev/null +++ b/src/renderer/src/pages/editor/editor.tsx @@ -0,0 +1,34 @@ +import { useEffect } from "react"; +import { SkeletonTheme } from "react-loading-skeleton"; +import { vars } from "@renderer/theme.css"; +import "./editor.scss"; + +export default function Editor() { + useEffect(() => { + console.log("spectre"); + }, []); + + return ( + +
+
+

CSS Editor

+
+
+ +
+

spectre

+
+
+ ); +} diff --git a/src/renderer/src/pages/settings/appearance.tsx b/src/renderer/src/pages/settings/appearance.tsx index 878d2e42..a260c098 100644 --- a/src/renderer/src/pages/settings/appearance.tsx +++ b/src/renderer/src/pages/settings/appearance.tsx @@ -39,7 +39,11 @@ export function SettingsAppearance() { {t("open_store")} -