diff --git a/frontend/src/components/DarkModeToggle.vue b/frontend/src/components/DarkModeToggle.vue
index aaae9c9..81122d4 100644
--- a/frontend/src/components/DarkModeToggle.vue
+++ b/frontend/src/components/DarkModeToggle.vue
@@ -1,37 +1,88 @@
-
+
+
+
+
+
+
+
Dark
+
+
+
+
+
Light
+
+
+
+
+
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index 548d803..3a397b5 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -8,6 +8,12 @@ import './assets/base.css'
import './themes/cyberpunk.css'
import './themes/dark.css'
import './themes/light.css'
+import './themes/midnight.css'
+import './themes/hacker.css'
+import './themes/neon.css'
+import './themes/paper.css'
+import './themes/arctic.css'
+import './themes/solarized.css'
import App from './App.vue'
diff --git a/frontend/src/stores/theme.ts b/frontend/src/stores/theme.ts
index 7a4fe6b..be5d454 100644
--- a/frontend/src/stores/theme.ts
+++ b/frontend/src/stores/theme.ts
@@ -17,15 +17,24 @@ export interface ThemeMeta {
author?: string
description?: string
builtin: boolean
+ variant: 'dark' | 'light'
}
const STORAGE_KEY = 'mrip-theme'
const DEFAULT_THEME = 'cyberpunk'
const BUILTIN_THEMES: ThemeMeta[] = [
- { id: 'cyberpunk', name: 'Cyberpunk', author: 'media.rip()', description: 'Electric blue + orange, scanlines, grid overlay', builtin: true },
- { id: 'dark', name: 'Dark', author: 'media.rip()', description: 'Clean neutral dark theme', builtin: true },
- { id: 'light', name: 'Light', author: 'media.rip()', description: 'Clean light theme for daylight use', builtin: true },
+ // Dark themes
+ { id: 'cyberpunk', name: 'Cyberpunk', author: 'media.rip()', description: 'Electric blue + orange, scanlines, grid overlay', builtin: true, variant: 'dark' },
+ { id: 'dark', name: 'Dark', author: 'media.rip()', description: 'Clean neutral dark theme', builtin: true, variant: 'dark' },
+ { id: 'midnight', name: 'Midnight', author: 'media.rip()', description: 'Ultra-minimal, near-black, zero effects', builtin: true, variant: 'dark' },
+ { id: 'hacker', name: 'Hacker', author: 'media.rip()', description: 'Green-on-black terminal aesthetic', builtin: true, variant: 'dark' },
+ { id: 'neon', name: 'Neon', author: 'media.rip()', description: 'Hot pink + cyan on deep purple, synthwave vibes', builtin: true, variant: 'dark' },
+ // Light themes
+ { id: 'light', name: 'Light', author: 'media.rip()', description: 'Clean light theme for daylight use', builtin: true, variant: 'light' },
+ { id: 'paper', name: 'Paper', author: 'media.rip()', description: 'Warm cream and sepia, book-like', builtin: true, variant: 'light' },
+ { id: 'arctic', name: 'Arctic', author: 'media.rip()', description: 'Cool whites and icy blues, crisp and sharp', builtin: true, variant: 'light' },
+ { id: 'solarized', name: 'Solarized', author: 'media.rip()', description: 'Solarized Light — easy on the eyes', builtin: true, variant: 'light' },
]
export const useThemeStore = defineStore('theme', () => {
@@ -33,8 +42,14 @@ export const useThemeStore = defineStore('theme', () => {
const customThemes = ref([])
const customThemeCSS = ref