From f9f62e1e413e3736e1e7eb0ea7270229c3619b96 Mon Sep 17 00:00:00 2001 From: MotorTruck1221 Date: Sat, 3 May 2025 19:26:33 -0600 Subject: [PATCH] Feat: theme switching --- src/layouts/SettingsLayout.astro | 8 ++- src/pages/[...settings]/appearance.astro | 45 +++++++++++++- src/pages/[...settings]/index.astro | 78 +++++++++++------------- src/pages/index.astro | 2 +- src/utils/types.ts | 1 + 5 files changed, 88 insertions(+), 46 deletions(-) diff --git a/src/layouts/SettingsLayout.astro b/src/layouts/SettingsLayout.astro index 6bb88b9..469de24 100644 --- a/src/layouts/SettingsLayout.astro +++ b/src/layouts/SettingsLayout.astro @@ -4,13 +4,17 @@ import SettingsNav from "@components/SettingsNav.astro"; import type { SettingsProps as Props } from "@utils/types.ts"; //I love prop drilling -const { active } = Astro.props; +const { active, title } = Astro.props; ---
- +
+

{title}

+
+ +
diff --git a/src/pages/[...settings]/appearance.astro b/src/pages/[...settings]/appearance.astro index b4dc9ab..33c5831 100644 --- a/src/pages/[...settings]/appearance.astro +++ b/src/pages/[...settings]/appearance.astro @@ -1,5 +1,48 @@ --- +import { readdir } from "node:fs/promises"; +import { join as pathJoin } from "node:path"; + import SettingsLayout from "@layouts/SettingsLayout.astro"; +import Dropdown from "@components/ui/Dropdown.astro"; +import { type DropdownOptions } from "@utils/types"; + +const Themes: DropdownOptions[] = [{ name: 'Default', value: 'default' }]; +const files = await readdir(pathJoin(import.meta.dirname, '..', '..', 'styles', 'themes'), { encoding: 'utf-8' }); +files.forEach((name) => { + Themes.push({ + name: name.toLowerCase().charAt(0).toUpperCase() + name.slice(1).replace('.css', ''), + value: name.toLowerCase().replace('.css', '') + }); +}); --- - + +
+
+

Themes

+ +
+
+ + diff --git a/src/pages/[...settings]/index.astro b/src/pages/[...settings]/index.astro index c1d0284..d0f560b 100644 --- a/src/pages/[...settings]/index.astro +++ b/src/pages/[...settings]/index.astro @@ -9,45 +9,41 @@ Object.keys(SearchEngines).forEach((k) => SearchEngineOptions.push( { name: k, value: SearchEngines[k] } )); --- - -
-

Proxy

-
-
+ +
+
+

Proxy Switcher

+ +
+
+

Transport

+ +
+
+

Search Engine

+ +
+
-

Proxy Switcher

- +

Wisp Server

+
-
-

Transport

- + -
-

Search Engine

- -
-
-
-

Wisp Server

- -
- -
-
+
+
@@ -56,11 +52,7 @@ Object.keys(SearchEngines).forEach((k) => SearchEngineOptions.push( import { Settings } from "@utils/settings.ts"; import { SW } from "@utils/proxy.ts"; import { StoreManager } from "@utils/storage"; - import { SearchEngines, type DropdownOptions } from "@utils/types"; - const SearchEngineOptions: DropdownOptions[] = []; - Object.keys(SearchEngines).forEach((k) => SearchEngineOptions.push( - { name: k, value: SearchEngines[k] } - )); + import { SearchEngines } from "@utils/types"; type Options = { settings: Settings, @@ -148,6 +140,8 @@ Object.keys(SearchEngines).forEach((k) => SearchEngineOptions.push( await proxy({settings, sw, storageManager}); await searchEngine({settings, sw, storageManager}); await wispServer({settings, sw, storageManager}); - } catch (err) { console.log(err) } + } catch (err) { + //console.log(err); + } }); diff --git a/src/pages/index.astro b/src/pages/index.astro index b6271c9..91976f5 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -104,7 +104,7 @@ const randomSplash = genSplash(); await init(); } catch (err) { - console.log(err); + //console.log(err); } }) diff --git a/src/utils/types.ts b/src/utils/types.ts index 5d5d401..8a6d989 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -2,6 +2,7 @@ import type { Props } from "astro"; interface SettingsProps extends Props { active: 'appearance' | 'credits' | 'links' | 'proxy'; + title: string; } type DropdownOptions = {