diff --git a/src/components/ModalContainer.tsx b/src/components/ModalContainer.tsx index 3e345f6..4092a15 100644 --- a/src/components/ModalContainer.tsx +++ b/src/components/ModalContainer.tsx @@ -6,7 +6,7 @@ function ModalContainer() { if (modal) { return (
e.stopPropagation()} className="cursor-default"> {modal} diff --git a/src/components/Reviews.tsx b/src/components/Reviews.tsx index e942cdf..237b318 100644 --- a/src/components/Reviews.tsx +++ b/src/components/Reviews.tsx @@ -6,8 +6,11 @@ import { useSwipeable } from "react-swipeable"; import ArrowLeftIcon from "./icons/ArrowLeftIcon"; import ArrowRightIcon from "./icons/ArrowRightIcon"; import { reviews } from "../consts/reviews"; +import useModalStore from "@stores/useModalStore"; +import VideoModal from "./modals/VideoModal"; function Reviews() { + const { setModal } = useModalStore(); const [selectedImageIndex, setSelectedImageIndex] = useState(0); const imageRefs = reviews.map(() => createRef()); const [imageWidth, setImageWidth] = useState(0); @@ -19,11 +22,9 @@ function Reviews() { trackMouse: true, }); - useEffect(() => { - if (!imageRefs[0].current?.src) return; - const width = imageRefs[0].current.clientWidth; - setImageWidth(width); - }, [imageRefs[0]]); + const onVideoClick = (video: string) => { + setModal(); + }; function prev() { if (selectedImageIndex === 0) return; @@ -41,6 +42,12 @@ function Reviews() { setIsEntered(true); }, [inView]); + useEffect(() => { + if (!imageRefs[0].current?.src) return; + const width = imageRefs[0].current.clientWidth; + setImageWidth(width); + }, [imageRefs[0]]); + return (
- {reviews.map((video, index) => ( + {reviews.map((review, index) => (
onVideoClick(review.video)} + key={review.id} className={`relative aspect-video bg-black transition-transform duration-300 h-full xl:w-auto flex items-center justify-center min-w-[100vw] xl:min-w-0`} style={{ transform: `translateX(-${ @@ -132,8 +140,8 @@ function Reviews() { }} > {video.desc} diff --git a/src/components/icons/CrossIcon.tsx b/src/components/icons/CrossIcon.tsx new file mode 100644 index 0000000..a109cf8 --- /dev/null +++ b/src/components/icons/CrossIcon.tsx @@ -0,0 +1,20 @@ +const CrossIcon = () => { + return ( + + + + ); +}; + +export default CrossIcon; diff --git a/src/components/modals/VideoModal.tsx b/src/components/modals/VideoModal.tsx new file mode 100644 index 0000000..8384aa1 --- /dev/null +++ b/src/components/modals/VideoModal.tsx @@ -0,0 +1,47 @@ +import CrossIcon from "@components/icons/CrossIcon"; +import useModalStore from "@stores/useModalStore"; + +interface VideoModalProps { + link: string; +} + +const VideoModal = ({ link }: VideoModalProps) => { + const { setModal } = useModalStore(); + + const handleOnCloseClick = () => { + setModal(null); + }; + + return ( +
+
+
+ +
+ + {/* */} +
+
+ ); +}; + +export default VideoModal; diff --git a/src/consts/reviews.ts b/src/consts/reviews.ts index 1060891..6022fab 100644 --- a/src/consts/reviews.ts +++ b/src/consts/reviews.ts @@ -8,7 +8,7 @@ export const reviews: IReview[] = [ position: "Коммерческий директор авторского квартала «Машаров»", desc: "Эффективность инструмента была подтверждена буквально в первый день после его внедрения. Например, один из клиентов, посетив офис и увидев свою будущую квартиру с помощью интерактивной панели, сразу решил купить недвижимость в этом проекте, отказавшись от других вариантов", poster: "/images/reviews/1.jpg", - video: "", + video: "https://www.youtube.com/embed/lAWF91CPOdY", }, { id: "2", @@ -17,7 +17,7 @@ export const reviews: IReview[] = [ position: "Ведущий менеджер компании «ЭНКО»", desc: "Клиенты особенно ценят возможность легко выбрать квартиру с помощью 3D-модель жилого комплекса. Так же инструмент продаж позволяет клиенту увидеть расположение дома, в какое время свет будет попадать в окна, даже зайти в лифт и холл, а также оценить инфраструктуру района и «прочувствовать» его, прогулявшись по двору", poster: "/images/reviews/2.jpg", - video: "", + video: "https://www.youtube.com/embed/lAWF91CPOdY", }, { id: "3", @@ -26,6 +26,6 @@ export const reviews: IReview[] = [ position: "Ведущий специалист отдела продаж", desc: "Одним из преимуществ инструмента является возможность посмотреть 3D-модель квартиры с готовым дизайнерским ремонтом и оценить видовые характеристиками, изменяя время суток (день или ночь). Это важно для клиента, так как позволяет реалистично представить, как будет выглядеть будущее жилье.", poster: "/images/reviews/3.jpg", - video: "", + video: "https://www.youtube.com/embed/-fp1sWzLWyg", }, ];