Added dummy Account page.

This commit is contained in:
FlorianSpeicher
2025-05-22 19:26:49 +02:00
parent fd70f26809
commit a5c229a68a

View File

@@ -1,34 +1,106 @@
import { Box, Typography, Button } from "@mui/material"; import { Box, Typography, Button, TextField, Paper, Divider, Stack } from "@mui/material";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import "./pages.css"; import "./pages.css";
import { useState } from "react";
export default function Account() { export default function Account() {
const navigate = useNavigate(); const navigate = useNavigate();
const handleGoHome = () => { // Beispielhafte Userdaten (könnten aus Context/Backend kommen)
const [user, setUser] = useState({
name: "Max Mustermann",
email: "max.mustermann@email.de",
phone: "+49 123 456789",
address: "Musterstraße 1, 12345 Musterstadt"
});
const [edit, setEdit] = useState(false);
const [form, setForm] = useState(user);
const handleEdit = () => setEdit(true);
const handleCancel = () => {
setForm(user);
setEdit(false);
};
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setForm({ ...form, [e.target.name]: e.target.value });
};
const handleSave = () => {
setUser(form);
setEdit(false);
};
const handleDelete = () => {
// Hier ggf. Dialog oder API-Call zum Löschen
alert("Konto gelöscht!");
navigate("/"); navigate("/");
}; };
return ( return (
<Box className="no-page-container"> <Box className="page-background" sx={{ minHeight: "100vh", justifyContent: "flex-start", pt: 4 }}>
<Typography variant="h1" className="no-page-title"> <Paper elevation={3} sx={{ p: 4, maxWidth: 500, width: "100%", mx: "auto" }}>
Account <Typography variant="h4" gutterBottom>
</Typography> Mein Konto
<Typography variant="h5" className="no-page-subtitle"> </Typography>
Oops! The page you're looking for doesn't exist. <Divider sx={{ mb: 3 }} />
</Typography> <Stack spacing={2}>
<Typography variant="body1" className="no-page-description"> <TextField
It seems you may have taken a wrong turn. Let's get you back on track. label="Name"
</Typography> name="name"
<Button value={edit ? form.name : user.name}
variant="contained" onChange={handleChange}
color="primary" disabled={!edit}
size="large" fullWidth
className="no-page-button" />
onClick={handleGoHome} <TextField
> label="E-Mail"
Go Back to Home name="email"
</Button> value={edit ? form.email : user.email}
onChange={handleChange}
disabled={!edit}
fullWidth
/>
<TextField
label="Telefon"
name="phone"
value={edit ? form.phone : user.phone}
onChange={handleChange}
disabled={!edit}
fullWidth
/>
<TextField
label="Adresse"
name="address"
value={edit ? form.address : user.address}
onChange={handleChange}
disabled={!edit}
fullWidth
/>
</Stack>
<Box sx={{ display: "flex", gap: 2, mt: 4 }}>
{edit ? (
<>
<Button variant="contained" color="primary" onClick={handleSave}>
Speichern
</Button>
<Button variant="outlined" color="secondary" onClick={handleCancel}>
Abbrechen
</Button>
</>
) : (
<Button variant="contained" color="primary" onClick={handleEdit}>
Bearbeiten
</Button>
)}
<Button
variant="outlined"
color="error"
onClick={handleDelete}
sx={{ marginLeft: "auto" }}
>
Konto löschen
</Button>
</Box>
</Paper>
</Box> </Box>
); );
} }