Added Rating product without logic
This commit is contained in:
9
01-frontend/src/helper/RatingCard.tsx
Normal file
9
01-frontend/src/helper/RatingCard.tsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import { Typography } from "@mui/material";
|
||||||
|
|
||||||
|
export default function RatingCard() {
|
||||||
|
return (
|
||||||
|
<Typography variant="h5">
|
||||||
|
Hier steht ein Rating
|
||||||
|
</Typography>
|
||||||
|
);
|
||||||
|
}
|
||||||
32
01-frontend/src/helper/Ratings.tsx
Normal file
32
01-frontend/src/helper/Ratings.tsx
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import { Button, Divider, Rating, TextField, Typography } from "@mui/material";
|
||||||
|
import RatingCard from "./RatingCard";
|
||||||
|
|
||||||
|
export default function Ratings() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className='contact-divider-box'>
|
||||||
|
<Divider className='contact-divider' />
|
||||||
|
</div>
|
||||||
|
<div className="rating-card-body">
|
||||||
|
<Typography variant="h5">
|
||||||
|
Rate this product:</Typography>
|
||||||
|
<Rating name="half-rating" defaultValue={2.5} precision={0.5} />
|
||||||
|
<TextField
|
||||||
|
label="Rating text"
|
||||||
|
multiline
|
||||||
|
minRows={4}
|
||||||
|
maxRows={16}
|
||||||
|
/>
|
||||||
|
<Button variant="contained" color="primary" className="rating-button">
|
||||||
|
Submit
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
<div className='contact-divider-box'>
|
||||||
|
<Divider className='contact-divider' />
|
||||||
|
</div>
|
||||||
|
<Typography variant="h5">
|
||||||
|
Ratings:
|
||||||
|
</Typography>
|
||||||
|
<RatingCard /></>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -7,4 +7,15 @@
|
|||||||
|
|
||||||
.item-card-button{
|
.item-card-button{
|
||||||
color: green;
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rating-card-body{
|
||||||
|
display: grid;
|
||||||
|
align-items: center; /* Vertikale Zentrierung */
|
||||||
|
width: 100%;
|
||||||
|
gap: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rating-button{
|
||||||
|
max-width: 200px;
|
||||||
}
|
}
|
||||||
@@ -14,9 +14,10 @@ import {
|
|||||||
Typography,
|
Typography,
|
||||||
} from '@mui/material';
|
} from '@mui/material';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import Item from '../components/Item';
|
|
||||||
import { useLocation, useNavigate } from 'react-router-dom';
|
import { useLocation, useNavigate } from 'react-router-dom';
|
||||||
|
import Item from '../components/Item';
|
||||||
import { useBasket } from '../helper/BasketProvider';
|
import { useBasket } from '../helper/BasketProvider';
|
||||||
|
import Ratings from '../helper/Ratings';
|
||||||
|
|
||||||
|
|
||||||
export default function Product() {
|
export default function Product() {
|
||||||
@@ -68,7 +69,7 @@ export default function Product() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='page-background'>
|
<div className='product-page-background'>
|
||||||
<Container maxWidth="lg" sx={{ py: 4 }} >
|
<Container maxWidth="lg" sx={{ py: 4 }} >
|
||||||
<Grid container spacing={4}>
|
<Grid container spacing={4}>
|
||||||
{/* Left Column - Image */}
|
{/* Left Column - Image */}
|
||||||
@@ -138,7 +139,7 @@ export default function Product() {
|
|||||||
) : item.stock > 0 ? (
|
) : item.stock > 0 ? (
|
||||||
<Alert severity="warning" variant='outlined'>Almost sold out ({item.stock} available)</Alert>
|
<Alert severity="warning" variant='outlined'>Almost sold out ({item.stock} available)</Alert>
|
||||||
) : (
|
) : (
|
||||||
<Alert severity="error" variant='filled'>Out of Stock</Alert>
|
<Alert severity="error" variant='filled'>Out of Stock</Alert>
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
@@ -169,16 +170,18 @@ export default function Product() {
|
|||||||
Free shipping on orders over €50
|
Free shipping on orders over €50
|
||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<div className='contact-divider-box'>
|
<div className='contact-divider-box'>
|
||||||
<Divider className='contact-divider'/>
|
<Divider className='contact-divider' />
|
||||||
</div>
|
</div>
|
||||||
<Typography variant="body1">
|
<Typography variant="body1">
|
||||||
{item.description}
|
{item.description}
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
|
<Ratings />
|
||||||
</Container>
|
</Container>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -109,4 +109,16 @@
|
|||||||
.contact-divider-box {
|
.contact-divider-box {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 25px 0; /* Abstand hinzufügen */
|
margin: 25px 0; /* Abstand hinzufügen */
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-page-background {
|
||||||
|
background: linear-gradient(135deg, #ece9e6, #ffffff);
|
||||||
|
height: 100%;
|
||||||
|
min-height: 600px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20px 0; /* Abstand oben und unten */
|
||||||
|
box-sizing: border-box; /* Stellt sicher, dass Padding in die Höhe einbezogen wird */
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user