| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- import { Button, ButtonGroup, Typography } from '@mui/material';
- import { Box } from '@mui/system';
- import { useTranslation } from 'next-i18next';
- import Image from 'next/image';
- import { useState } from 'react';
-
- interface DataProps {
- name: string;
- description: string;
- }
-
- interface ProductInfoProps {
- data: DataProps;
- bColor: string;
- inCart: boolean;
- addProductToCart: (quantity: number) => void;
- }
-
- const ProductInfo: React.FC<ProductInfoProps> = ({ data, bColor, addProductToCart, inCart }) => {
- const { t } = useTranslation('home');
- const [quantity, setQuantity] = useState<number>(1);
-
- const handleIncrement = () => {
- setQuantity((prevState) => prevState + 1);
- };
-
- const handleDecrement = () => {
- if (quantity > 1) {
- setQuantity((prevState) => prevState - 1);
- }
- };
-
- return (
- <Box
- sx={{
- display: 'flex',
- flexDirection: 'column',
- alignItems: { xs: 'center', md: 'flex-start' },
- width: { xs: '100%', md: '50%' },
- height: '100%',
- }}
- >
- <Typography variant="h3" sx={{ mt: { xs: 5 }, color: 'white' }}>
- {data.name}
- </Typography>
- <Box
- sx={{
- display: 'flex',
- alignItems: { xs: 'center', md: 'flex-start' },
- justifyContent: { xs: 'center', md: 'flex-start' },
- width: '100%',
- py: { xs: 2 },
- }}
- >
- <Image
- src="/images/Stars.svg"
- alt="reviews"
- width={100}
- height={50}
- ></Image>
- </Box>
- <Typography
- sx={{
- color: 'white',
- }}
- >
- {data.description}
- </Typography>
- <Box
- sx={{
- width: '100%',
- display: 'flex',
- mt: 6,
- flexDirection: { md: 'row' },
- alignItems: { xs: 'center' },
- justifyContent: { xs: 'center', md: 'flex-start' },
- }}
- >
- <ButtonGroup
- disabled={inCart}
- size="small"
- aria-label="small outlined button group"
- sx={{
- height: 50,
- backgroundColor: bColor === 'light' ? '#664c47' : '#8f7772',
- color: 'white',
- border: 0,
- }}
- >
- <Button
- disableRipple
- sx={{
- '&.Mui-disabled': {
- color: 'rgba(255, 255, 255, 0.6)',
- },
- color: 'white',
- fontSize: 20,
- width: 50,
- }}
- onClick={() => {
- handleDecrement();
- }}
- >
- -
- </Button>
- <Button
- disableRipple
- sx={{
- '&.Mui-disabled': {
- color: 'rgba(255, 255, 255, 0.6)',
- },
- color: 'white',
- fontSize: 17,
- width: 50,
- }}
- >
- {quantity}
- </Button>
- <Button
- disableRipple
- sx={{
- '&.Mui-disabled': {
- color: 'rgba(255, 255, 255, 0.6)',
- },
- color: 'white',
- fontSize: 20,
- width: 50,
- }}
- onClick={() => {
- handleIncrement();
- }}
- >
- +
- </Button>
- </ButtonGroup>
- <Button
- disableRipple
- sx={{
- mt: { md: 0 },
- ml: { xs: 2 },
- backgroundColor: '#CBA213',
- height: 50,
- width: 150,
- color: 'white',
- '&.Mui-disabled': {
- backgroundColor: '#f2d675',
- color: '#464646',
- },
- '&:hover': {
- backgroundColor: '#f2d675',
- color: '#464646',
- boxShadow: 'none',
- },
- }}
- disabled={inCart}
- onClick={() => addProductToCart(quantity)}
- >
- {inCart ? t('home:in') : t('home:add')}
- </Button>
- </Box>
- </Box>
- );
- };
-
-
- export default ProductInfo;
|