diff --git a/public/img/pages/prime/3dtour.jpg b/public/img/pages/prime/3dtour.jpg index e646f9ed..aaf89efe 100644 Binary files a/public/img/pages/prime/3dtour.jpg and b/public/img/pages/prime/3dtour.jpg differ diff --git a/src/components/pages/MainPage/Presentation/PresentationDesktop.tsx b/src/components/pages/MainPage/Presentation/PresentationDesktop.tsx index a9a8314b..030880f6 100644 --- a/src/components/pages/MainPage/Presentation/PresentationDesktop.tsx +++ b/src/components/pages/MainPage/Presentation/PresentationDesktop.tsx @@ -2,7 +2,7 @@ import { videos } from '@/consts/presentation/videos'; import { Title } from '@/ui/Title'; -import { useMotionValueEvent, useScroll, scroll } from 'framer-motion'; +import { useMotionValueEvent, useScroll } from 'framer-motion'; import { useRef, useState } from 'react'; import { Engine } from '../../../slides/Engine'; import { Infrastructure } from '../../../slides/Infrastructure'; @@ -21,9 +21,9 @@ export function PresentationDesktop() { const [slide, setSlide] = useState(0); - useMotionValueEvent(scrollYProgress, 'change', (value) => { - setSlide(Math.min(Math.trunc(value * videos.length), videos.length - 1)); - }); + useMotionValueEvent(scrollYProgress, 'change', (value) => + setSlide(Math.min(Math.trunc(value * videos.length), videos.length - 1)) + ); return (
Формирование списка избранного
diff --git a/src/components/slides/Infrastructure.tsx b/src/components/slides/Infrastructure.tsx index 6265b68d..5fe44f9b 100644 --- a/src/components/slides/Infrastructure.tsx +++ b/src/components/slides/Infrastructure.tsx @@ -17,30 +17,30 @@ export function Infrastructure({ top?: number; page?: 'main' | 'prime'; }) { - const xMain = useTransform(scrollProgress, [1 / 5, 2 / 5], ['100%', '0%']); + const xMain = useTransform( + scrollProgress, + [1 / (videos.length - 1), 2 / (videos.length - 1)], + ['100%', '0%'] + ); const xPrime = useTransform( scrollProgress, - [ - 1 / (primeVideos.length + 8), - 2 / (primeVideos.length + 8), - 3 / (primeVideos.length + 8), - ], - ['100%', '0%', '100%'] + [1 / (primeVideos.length + 7), 2 / (primeVideos.length + 7)], + ['100%', '0%'] ); const opacityMain = useTransform( scrollProgress, - [1 / 5, 2 / 5, 1 / 2], + [1 / (videos.length - 1), 2 / (videos.length - 1), 1 / 2], [0, 1, 0] ); const opacityPrime = useTransform( scrollProgress, [ - 1 / (primeVideos.length + 8), - 2 / (primeVideos.length + 8), - 3 / (primeVideos.length + 8), + 1 / (primeVideos.length + 7), + 2 / (primeVideos.length + 7), + 2.5 / (primeVideos.length + 7), ], [0, 1, 0] ); diff --git a/src/components/slides/Insolation.tsx b/src/components/slides/Insolation.tsx index 496eed7d..58c2e4af 100644 --- a/src/components/slides/Insolation.tsx +++ b/src/components/slides/Insolation.tsx @@ -12,32 +12,40 @@ export function Insolation({ top?: number; page?: 'main' | 'prime'; }) { - const y = useTransform(scrollProgress, [2 / 5, 3 / 5], ['100%', '0%']); + const y = useTransform( + scrollProgress, + [2 / (videos.length - 1), 3 / (videos.length - 1)], + ['100%', '0%'] + ); - const xMain = useTransform(scrollProgress, [3 / 5, 4 / 5], ['0%', '100%']); + const xMain = useTransform( + scrollProgress, + [3 / (videos.length - 1), 4 / (videos.length - 1)], + ['0%', '100%'] + ); const x = useTransform( scrollProgress, - [ - 4 / (primeVideos.length + 8), - 5 / (primeVideos.length + 8), - 6 / (primeVideos.length + 8), - ], - ['-100%', '0%', '-100%'] + [5 / (primeVideos.length + 7), 6 / (primeVideos.length + 7)], + ['0%', '-100%'] ); const opacityMain = useTransform( scrollProgress, - [2 / 5, 3 / 5, 3.5 / 5], + [ + 2 / (videos.length - 1), + 3 / (videos.length - 1), + 3.5 / (videos.length - 1), + ], [0, 1, 0] ); const opacityPrime = useTransform( scrollProgress, [ - 4 / (primeVideos.length + 8), - 5 / (primeVideos.length + 8), - 6 / (primeVideos.length + 8), + 4 / (primeVideos.length + 7), + 5 / (primeVideos.length + 7), + 5.5 / (primeVideos.length + 7), ], [0, 1, 0] ); @@ -48,13 +56,19 @@ export function Insolation({ [1, 0] ); + const yPrime = useTransform( + scrollProgress, + [4 / (primeVideos.length + 7), 5 / (primeVideos.length + 7)], + ['100%', '0%'] + ); + return ( <>diff --git a/src/components/slides/SearchAndSelect.tsx b/src/components/slides/SearchAndSelect.tsx index 3e9280d9..39e2966f 100644 --- a/src/components/slides/SearchAndSelect.tsx +++ b/src/components/slides/SearchAndSelect.tsx @@ -22,14 +22,20 @@ export function SearchAndSelect({ const opacityPrime = useTransform( scrollProgress, - [0, 1 / (primeVideos.length + 8), 2 / (primeVideos.length + 8)], + [0, 1 / (primeVideos.length + 7), 1.5 / (primeVideos.length + 7)], [0, 1, 0] ); const x = useTransform( scrollProgress, - [0, 1 / (primeVideos.length + 8), 2 / (primeVideos.length + 8)], - ['-100%', '0%', '-100%'] + [1 / (primeVideos.length + 7), 2 / (primeVideos.length + 7)], + ['0%', '-100%'] + ); + + const y = useTransform( + scrollProgress, + [0 / (primeVideos.length + 7), 1 / (primeVideos.length + 7)], + ['100%', '0%'] ); const opacityMini = useTransform( @@ -46,11 +52,12 @@ export function SearchAndSelect({ isLg ? { opacity: page === 'main' ? opacityMain : opacityPrime, + y: page === 'prime' ? y : undefined, x: page === 'prime' ? x : undefined, } : { top, opacity: opacityMini } } - className={`max-md:p-5 flex max-md:flex-col lg:flex-col md:gap-3 max-md:gap-y-7 gap-y-3 max-md:rounded-2xl sticky max-md:h-full select-none max-md:[background:radial-gradient(ellipse_at_100%_100%,#7A7A7A33,transparent)] max-md:[backdrop-filter:blur(500px)] lg:absolute ${ + className={`max-md:p-5 flex max-md:flex-col lg:flex-col md:gap-3 max-md:gap-y-7 gap-y-3 max-md:rounded-2xl max-md:h-full select-none max-md:[background:radial-gradient(ellipse_at_100%_100%,#7A7A7A33,transparent)] max-md:[backdrop-filter:blur(500px)] lg:absolute ${ page === 'main' ? 'lg:w-[31.875vw] h-full' : 'lg:w-[23.611vw] h-[40.556vw]' diff --git a/src/components/slides/ThreeDTour.tsx b/src/components/slides/ThreeDTour.tsx index 03e8a184..927adeaf 100644 --- a/src/components/slides/ThreeDTour.tsx +++ b/src/components/slides/ThreeDTour.tsx @@ -15,13 +15,13 @@ export function ThreeDTour({ }) { const opacityMain = useTransform( scrollProgress, - [0, 1 / 5, 1.5 / 5], + [0, 1 / (videos.length - 1), 1.5 / (videos.length - 1)], [0, 1, 0] ); const opacityPrime = useTransform( scrollProgress, - [0, 1 / (primeVideos.length + 8)], + [0, 1 / (primeVideos.length + 7) / 2], [1, 0] ); @@ -31,12 +31,6 @@ export function ThreeDTour({ ['0%', '-100%'] ); - const xPrime = useTransform( - scrollProgress, - [0, 1 / (primeVideos.length + 8)], - ['0%', '100%'] - ); - const y = useTransform( scrollProgress, [0, 1 / (videos.length - 1)], @@ -55,10 +49,10 @@ export function ThreeDTour({ style={{ opacity: page === 'main' ? opacityMain : opacityPrime, y: page === 'main' ? y : undefined, - x: page === 'main' ? xMain : xPrime, + x: page === 'main' ? xMain : undefined, }} className={`p-[1.667vw] max-lg:hidden rounded-[1.111vw] [background:radial-gradient(ellipse_at_100%,#7A7A7A33,transparent)] [backdrop-filter:blur(500px)] aspect-[340/368] flex flex-col justify-between gap-[4.444vw] absolute w-[23.611vw] ${ - page === 'prime' ? 'right-[1.389vw] h-[40.556vw]' : 'h-full' + page === 'prime' ? 'left-[1.389vw] h-[40.556vw]' : 'h-full' }`} >
diff --git a/src/components/slides/VideoLayerMain.tsx b/src/components/slides/VideoLayerMain.tsx
index 2f43f1c8..429017f3 100644
--- a/src/components/slides/VideoLayerMain.tsx
+++ b/src/components/slides/VideoLayerMain.tsx
@@ -123,7 +123,7 @@ export function VideoLayerMain({ scroll }: { scroll: MotionValue {title}
+