diff --git a/index.html b/index.html
index a0a2139..df0cd00 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
+
-
+
DSA 5 Character Sheet
diff --git a/src/components/ThemeToggle.tsx b/src/components/ThemeToggle.tsx
new file mode 100644
index 0000000..e764b0c
--- /dev/null
+++ b/src/components/ThemeToggle.tsx
@@ -0,0 +1,18 @@
+import React from 'react';
+import { useTheme } from '../contexts/ThemeContext';
+
+const ThemeToggle: React.FC = () => {
+ const { theme, toggleTheme } = useTheme();
+
+ return (
+
+ );
+};
+
+export default ThemeToggle;
diff --git a/src/contexts/ThemeContext.tsx b/src/contexts/ThemeContext.tsx
new file mode 100644
index 0000000..fc19a42
--- /dev/null
+++ b/src/contexts/ThemeContext.tsx
@@ -0,0 +1,41 @@
+import React, { createContext, useContext, useEffect, useState } from 'react';
+
+type Theme = 'light' | 'dark';
+
+interface ThemeContextType {
+ theme: Theme;
+ toggleTheme: () => void;
+}
+
+const ThemeContext = createContext
(undefined);
+
+export const useTheme = () => {
+ const context = useContext(ThemeContext);
+ if (!context) {
+ throw new Error('useTheme must be used within ThemeProvider');
+ }
+ return context;
+};
+
+export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
+ const [theme, setTheme] = useState(() => {
+ // Aus localStorage laden oder Default zu dark (passt zu TaleSpire)
+ const saved = localStorage.getItem('dsa5e-theme');
+ return (saved as Theme) || 'dark';
+ });
+
+ useEffect(() => {
+ document.documentElement.setAttribute('data-theme', theme);
+ localStorage.setItem('dsa5e-theme', theme);
+ }, [theme]);
+
+ const toggleTheme = () => {
+ setTheme(prev => prev === 'light' ? 'dark' : 'light');
+ };
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/vite.config.ts b/vite.config.ts
index 8b0f57b..974f709 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,7 +1,17 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
-// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
-})
+ base: './',
+ build: {
+ minify: 'esbuild', // ← Statt terser
+ rollupOptions: {
+ output: {
+ assetFileNames: 'assets/[name].[ext]',
+ chunkFileNames: 'assets/[name].js',
+ entryFileNames: 'assets/[name].js'
+ }
+ }
+ }
+});