From 8cdb2bec7fc241f7e16db9920ecdb595f525675e Mon Sep 17 00:00:00 2001
From: Fabio Roma <94720877+itsfabioroma@users.noreply.github.com>
Date: Sun, 5 Apr 2026 23:31:08 -0300
Subject: [PATCH 1/8] =?UTF-8?q?feat:=20customizable=20appearance=20?=
=?UTF-8?q?=E2=80=94=20theme=20presets=20+=20accent=20colors?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Add a CSS custom property override layer that re-skins Tailwind's
hardcoded gray/blue colors globally without touching any component files.
- 5 theme presets: Default, Midnight, Nord, Solarized, Rose
- 8 accent color swatches + custom hex color picker
- All settings persist via electron-store and apply instantly
- useAppearance hook applies CSS variables on theme/config change
- Expanded Appearance section in Settings with preset swatches and
accent picker
---
src/main/ipc/settings.ipc.ts | 40 +++++
src/preload/index.ts | 17 ++
src/renderer/App.tsx | 4 +
src/renderer/components/SettingsPanel.tsx | 207 +++++++++++++++++-----
src/renderer/hooks/useAppearance.ts | 80 +++++++++
src/renderer/store/index.ts | 12 ++
src/renderer/styles/index.css | 197 ++++++++++++++++++--
src/shared/theme-presets.ts | 191 ++++++++++++++++++++
src/shared/types.ts | 11 ++
9 files changed, 703 insertions(+), 56 deletions(-)
create mode 100644 src/renderer/hooks/useAppearance.ts
create mode 100644 src/shared/theme-presets.ts
diff --git a/src/main/ipc/settings.ipc.ts b/src/main/ipc/settings.ipc.ts
index 8b5a691a..b3cb2706 100644
--- a/src/main/ipc/settings.ipc.ts
+++ b/src/main/ipc/settings.ipc.ts
@@ -1,6 +1,7 @@
import { ipcMain, nativeTheme, BrowserWindow, shell, dialog } from "electron";
import Store from "electron-store";
import {
+ type AppearanceConfig,
type Config,
type EAConfig,
type IpcResponse,
@@ -657,6 +658,45 @@ export function registerSettingsIpc(): void {
},
);
+ // Get appearance config
+ ipcMain.handle("appearance:get", async (): Promise
- Choose your preferred color theme. + {/* Appearance */} +
+ Color palettes for surfaces and accents.
++ Override the theme accent with a custom color. +
+{accountError}
+ {accountError.includes("Access denied") && ( ++ Add your email as a test user in{" "} + + Google Cloud Console → Audience + + , then try again. +
+ )}