diff --git a/FrontendV2/src/components/Header.tsx b/FrontendV2/src/components/Header.tsx index 10789f2..bc3f8ee 100644 --- a/FrontendV2/src/components/Header.tsx +++ b/FrontendV2/src/components/Header.tsx @@ -8,6 +8,10 @@ import { CloseButton, Dialog, Portal, + HStack, + IconButton, + Menu, + Box, } from "@chakra-ui/react"; import { PasswordInput } from "@/components/ui/password-input"; import Cookies from "js-cookie"; @@ -21,6 +25,7 @@ import { LifeBuoy, LogOut, CalendarPlus, + MoreVertical, } from "lucide-react"; import { useUserContext } from "@/states/Context"; import { useState } from "react"; @@ -33,7 +38,6 @@ const API_BASE = export const Header = () => { const navigate = useNavigate(); - const userData = useUserContext(); // Error handling states @@ -49,6 +53,9 @@ export const Header = () => { const [, setTriggerLogout] = useAtom(triggerLogoutAtom); const [, setIsLoggedIn] = useAtom(setIsLoggedInAtom); + // Dialog control + const [isPwOpen, setPwOpen] = useState(false); + const changePassword = async () => { if (newPassword !== confirmPassword) { setMsgTitle("Passwortänderung fehlgeschlagen"); @@ -79,82 +86,262 @@ export const Header = () => { setMsgDescription("Ihr Passwort wurde erfolgreich geändert"); setMsgStatus("success"); setIsMsg(true); + + setOldPassword(""); + setNewPassword(""); + setConfirmPassword(""); + }; + + const username = userData?.username + ? userData.username[0].toUpperCase() + userData.username.slice(1) + : "User"; + + const logout = () => { + Cookies.remove("token"); + setIsLoggedIn(false); + setTriggerLogout(true); }; return ( - + + {/* Mobile: Drei-Punkte-Button, vertikal zentriert im Header */} + + + + + + + + + + navigate("/", { replace: true })} + children={ + + + Ausleihe erstellen + + } + /> + navigate("/my-loans", { replace: true })} + children={ + + + Meine Ausleihen + + } + /> + setPwOpen(true)} + children={ + + + Passwort ändern + + } + /> + + window.open( + "https://git.the1s.de/Matthias-Claudius-Schule/borrow-system/wiki", + "_blank", + "noopener,noreferrer" + ) + } + children={ + + + Hilfe + + } + /> + + window.open( + "https://git.the1s.de/Matthias-Claudius-Schule/borrow-system", + "_blank", + "noopener,noreferrer" + ) + } + children={ + + + Source Code + + } + /> + + + + Logout + + } + /> + + + + + - - - Home - - + {/* Left: Title + user info */} + + {/* Titelzeile ohne Mobile-Menu (wurde nach oben verlegt) */} + + + Home + + + + - Willkommen zurück,{" "} - {userData.username.replace( - /^./, - userData.username[0].toUpperCase() - )} - ! + Willkommen zurück, {username}! - Rolle: {userData.role} + Rolle: {userData?.role ?? "—"} - + - - - - - + + + + + + + - - - - - - - Passwort ändern - -
{ - e.preventDefault(); - changePassword(); - }} - > - + + + + + + + + + + + {/* Passwort-Dialog (kontrolliert) */} + setPwOpen(e.open)}> + + + + + + Passwort ändern + + { + e.preventDefault(); + changePassword(); + }} + > + + setOldPassword(e.target.value)} placeholder="Altes Passwort" /> setNewPassword(e.target.value)} placeholder="Neues Passwort" /> setConfirmPassword(e.target.value)} placeholder="Neues Passwort wiederholen" /> - - + + + + {isMsg && ( { description={msgDescription} /> )} - - - - - - - - - - - - - - - - - - - - - -
+ + + + + + +
+ + + + + + + + +
); }; diff --git a/FrontendV2/src/pages/HomePage.tsx b/FrontendV2/src/pages/HomePage.tsx index 73947ab..db5a20b 100644 --- a/FrontendV2/src/pages/HomePage.tsx +++ b/FrontendV2/src/pages/HomePage.tsx @@ -110,7 +110,7 @@ export const HomePage = () => { )} {borrowableItems.length > 0 && ( - +