From 1b3847b98dc75ea924182d4fd137a24e5559a78a Mon Sep 17 00:00:00 2001 From: Elias Bennour Date: Thu, 22 May 2025 00:13:31 +0200 Subject: [PATCH] remove toggle for dark mode fix some minor design issues --- src/pages/admin/index.tsx | 96 ++++++++++++--------------------------- src/pages/dashboard.tsx | 58 +++-------------------- 2 files changed, 34 insertions(+), 120 deletions(-) diff --git a/src/pages/admin/index.tsx b/src/pages/admin/index.tsx index 674e0dd..e8bc6e0 100644 --- a/src/pages/admin/index.tsx +++ b/src/pages/admin/index.tsx @@ -4,7 +4,7 @@ import { useSession, signOut } from 'next-auth/react'; import { useRouter } from 'next/router'; import { useEffect, useState, Fragment } from 'react'; import { Dialog, Transition } from '@headlessui/react'; -import { useTheme } from '@/context/ThemeContext'; // Pfad zum ThemeContext anpassen +// import { useTheme } from '../../context/ThemeContext'; // Entfernt // Typen für die Admin-Seite (Frontend) interface AdminUser { @@ -58,46 +58,6 @@ interface SetApprovalStatusApiResponse { approvedAt: Date | null; } -// ThemeSwitcher Komponente (kopiert aus Dashboard, ggf. in eine separate Datei auslagern) -const ThemeSwitcher: React.FC = () => { - const { theme, setTheme, resolvedTheme } = useTheme(); - const [mounted, setMounted] = useState(false); - - useEffect(() => setMounted(true), []); - - if (!mounted) { - return null; - } - - const cycleTheme = () => { - if (theme === 'light') setTheme('dark'); - else if (theme === 'dark') setTheme('system'); - else setTheme('light'); - }; - - return ( - - ); -}; - - const AdminPanelPage: NextPage = () => { const { data: session, status } = useSession(); const router = useRouter(); @@ -292,56 +252,56 @@ const AdminPanelPage: NextPage = () => { if (status === 'loading' || (status === 'authenticated' && session?.user?.role !== 'admin' && !isLoadingUsers) ) { return ( -
{/* Dark Mode Hintergrund */} -

Laden oder Zugriff wird geprüft...

{/* Dark Mode Text */} +
+

Laden oder Zugriff wird geprüft...

); } if (status === 'unauthenticated') { return ( -
{/* Dark Mode Hintergrund */} -

Bitte als Admin anmelden.

{/* Dark Mode Text */} +
+

Bitte als Admin anmelden.

); } return ( -
{/* Dark Mode Hintergrund */} -
-
-

Admin Panel

{/* Dark Mode Text */} -

Benutzerverwaltung & Übersicht

{/* Dark Mode Text */} +
+ {/* Header angepasst für mobile Ansicht */} +
+
{/* Div für Admin Panel Text */} +

Admin Panel

+

Benutzerverwaltung & Übersicht

-
{/* Container für Buttons */} - {/* NEU: Theme-Schalter hinzugefügt */} +
{/* Container für Buttons */}
- {error &&
{error}
} {/* Dark Mode Fehler */} - {successMessage &&
{successMessage}
} {/* Dark Mode Erfolg */} + {error &&
{error}
} + {successMessage &&
{successMessage}
} {/* Gesamtübersicht Sektion */} -
{/* Dark Mode Sektion */} -

Gesamtübersicht

{/* Dark Mode Text */} +
+

Gesamtübersicht

-
{/* Dark Mode Kachel */} +

Anzahl Benutzer

{users.length}

-
{/* Dark Mode Kachel */} +

Gesamtsaldo

{isLoadingUsers ? (

Lade...

@@ -355,14 +315,14 @@ const AdminPanelPage: NextPage = () => {
{/* Benutzerliste */} -
{/* Dark Mode Sektion */} -

Benutzerübersicht

{/* Dark Mode Text */} +
+

Benutzerübersicht

{isLoadingUsers ? (

Benutzerliste wird geladen...

) : users.length > 0 ? (
- {/* Dark Mode Tabelle */} - {/* Dark Mode Tabellenkopf */} +
+ @@ -372,9 +332,9 @@ const AdminPanelPage: NextPage = () => { - {/* Dark Mode Tabellenkörper */} + {users.map((user) => ( - {/* Dark Mode Hover */} + @@ -432,7 +392,7 @@ const AdminPanelPage: NextPage = () => { leaveFrom="opacity-100" leaveTo="opacity-0" > -
{/* Dark Mode Backdrop */} +
@@ -525,7 +485,7 @@ const AdminPanelPage: NextPage = () => { leaveFrom="opacity-100" leaveTo="opacity-0" > -
{/* Dark Mode Backdrop */} +
diff --git a/src/pages/dashboard.tsx b/src/pages/dashboard.tsx index f4d9a8c..16ccd40 100644 --- a/src/pages/dashboard.tsx +++ b/src/pages/dashboard.tsx @@ -3,7 +3,6 @@ import type { NextPage } from 'next'; import { useSession, signOut } from 'next-auth/react'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; -import { useTheme } from '../context/ThemeContext'; // NEU: useTheme importieren // Typ für Transaktionen, wie sie vom Backend (API) erwartet werden interface DashboardTransaction { @@ -36,54 +35,9 @@ interface IncreaseBalanceApiResponse { transactionId: string; } -const ThemeSwitcher: React.FC = () => { - const { theme, setTheme, resolvedTheme } = useTheme(); - const [mounted, setMounted] = useState(false); - - useEffect(() => setMounted(true), []); - - if (!mounted) { - // Verhindere Hydration Mismatch, indem der Schalter erst nach dem Mounten gerendert wird - return null; - } - - // toggleTheme wurde entfernt, da cycleTheme verwendet wird - - // Erweiterter Theme-Wechsel: Light, Dark, System - const cycleTheme = () => { - if (theme === 'light') setTheme('dark'); - else if (theme === 'dark') setTheme('system'); - else setTheme('light'); - }; - - return ( - - ); -}; - - const DashboardPage: NextPage = () => { const { data: session, status } = useSession(); const router = useRouter(); - // const { theme } = useTheme(); // Entfernt, da nicht direkt in DashboardPage verwendet const [balance, setBalance] = useState(null); const [userName, setUserName] = useState(null); @@ -205,24 +159,24 @@ const DashboardPage: NextPage = () => { return (
-
-
+ {/* Header angepasst für mobile Ansicht */} +
+
{/* Div für Willkommenstext */}

Willkommen, {userName || session.user.name}!

Deine Strichliste

-
- +
{/* Container für Buttons */} {session?.user?.role === 'admin' && ( )}
Name E-MailAktionen
{user.name || 'N/A'} {user.email || 'N/A'} {user.balance ? `${user.balance} €` : '0.00 €'}