stylist / frontend / src / components / ProfileCard / ProfileCard.tsx
ProfileCard.tsx
Raw
import React, { useState } from 'react';
import { StaticImageData } from 'next/image';
import Image from 'next/image';

//styles
import s from './ProfileCard.module.scss';

//icons
import ArrowUp from '../../../public/icons/ArrowUp.svg';
import ArrowDown from '../../../public/icons/ArrowDown.svg';

interface Appointment {
  id: number;
  name: string;
  image: StaticImageData;
  liked: boolean;
  address: string;
  open: boolean;
  reviewGrade: number;
  service: string;
  beginingService: string;
  dateService: number;
  monthService: string;
  endService: string;
  duration: number;
  description: string;
  price: number;
  worker: string;
}

const ProfileCard = ({ card }: { card: Appointment }) => {
  const [isOpen, setIsOpen] = useState(false);

  const handleOpener = () => {
    setIsOpen(!isOpen);
  };

  return (
    <div className={s.container}>
      <div onClick={handleOpener} className={s.chooseCard}>
        <div className={s.leftSection}>
          <p>{card.service}</p>
          <div className={s.dateHours}>
            <p className={s.date}>
              {card.dateService} {card.monthService}
            </p>
            <p className={s.time}>{card.beginingService} h</p>
          </div>
        </div>
        <div className={s.arrow}>
          {isOpen ? (
            <Image src={ArrowUp} alt="Arrow Up Icon" />
          ) : (
            <Image src={ArrowDown} alt="Arrow Up Icon" />
          )}
        </div>
      </div>

      {isOpen && <div>{card.address}</div>}
    </div>
  );
};

export default ProfileCard;