diff --git a/src/assets/distance/datamining_1.jpg b/src/assets/distance/datamining_1.jpg index 770d314..7a5d99c 100644 Binary files a/src/assets/distance/datamining_1.jpg and b/src/assets/distance/datamining_1.jpg differ diff --git a/src/assets/distance/datamining_2.jpg b/src/assets/distance/datamining_2.jpg index 65ae444..b29721b 100644 Binary files a/src/assets/distance/datamining_2.jpg and b/src/assets/distance/datamining_2.jpg differ diff --git a/src/assets/efficiency/charts.png b/src/assets/efficiency/charts.png new file mode 100644 index 0000000..9683fa0 Binary files /dev/null and b/src/assets/efficiency/charts.png differ diff --git a/src/assets/efficiency/diagram.png b/src/assets/efficiency/diagram.png new file mode 100644 index 0000000..7b65fef Binary files /dev/null and b/src/assets/efficiency/diagram.png differ diff --git a/src/assets/efficiency/pizza.png b/src/assets/efficiency/pizza.png new file mode 100644 index 0000000..1562d6f Binary files /dev/null and b/src/assets/efficiency/pizza.png differ diff --git a/src/assets/recent_projects/laba.png b/src/assets/recent_projects/laba.png new file mode 100644 index 0000000..221e2d9 Binary files /dev/null and b/src/assets/recent_projects/laba.png differ diff --git a/src/assets/recent_projects/plane.png b/src/assets/recent_projects/plane.png new file mode 100644 index 0000000..ca06c43 Binary files /dev/null and b/src/assets/recent_projects/plane.png differ diff --git a/src/components/Layouts/Header.tsx b/src/components/Layouts/Header.tsx index 2079ffa..c05c1c9 100644 --- a/src/components/Layouts/Header.tsx +++ b/src/components/Layouts/Header.tsx @@ -13,8 +13,8 @@ import { LogoIcon } from '../icons/LogoIcon'; import { BurgerIcon } from '../icons/BurgerIcon'; import { CloseIcon } from '../icons/CloseIcon'; import { CubeIcon } from '../icons/CubeIcon'; -import { ArrowDownIcon } from '../icons/ArrowDownIcon'; import { useWindowWidth } from '../../hooks/useWindowWidth'; +import { ChevronDownIcon } from '../icons/ChevronDownIcon'; export function Header() { const [menuOpen, setMenuOpen] = useState(false); @@ -147,7 +147,7 @@ function LangToggler({ lang }: { lang: Lang }) { className="mx-6 h-full gap-x-1 items-center flex font-semibold btn-text outline-none" > {lang} - +
-
+
diff --git a/src/components/Main/Availables.tsx b/src/components/Main/Availables.tsx index 3a13529..16d43c7 100644 --- a/src/components/Main/Availables.tsx +++ b/src/components/Main/Availables.tsx @@ -9,7 +9,7 @@ import { getIcon } from '../../utils/getIcon'; export function Availables() { return ( -
+
<span className="text-gradient text-wrap">Многопользовательский</span> <br /> diff --git a/src/components/Main/Contacts.tsx b/src/components/Main/Contacts.tsx index 5326f11..c6c1f55 100644 --- a/src/components/Main/Contacts.tsx +++ b/src/components/Main/Contacts.tsx @@ -9,7 +9,7 @@ import { YouTubeIcon } from '../icons/YoutubeIcon'; export function Feedback() { return ( - <div className="sm:grid lg:grid-cols-12 sm:grid-cols-2 lg:grid-rows-[repeat(min-content,2)] sm:grid-rows-[repeat(min-content,3)] lg:gap-x-4 sm:gap-x-14 lg:gap-y-[68px] sm:px-6 px-4 pb-20 pt-[70px]"> + <div className="sm:grid lg:grid-cols-12 sm:grid-cols-2 lg:grid-rows-[repeat(min-content,2)] sm:grid-rows-[repeat(min-content,3)] lg:gap-x-4 sm:gap-x-14 lg:gap-y-[68px] pb-20 pt-[70px]"> <h2 className="lg:col-span-7 sm:col-span-full h2 font-medium max-lg:mb-6"> Хотите использовать интерактивные тренажеры в обучении? <br /> diff --git a/src/components/Main/Decreasing.tsx b/src/components/Main/Decreasing.tsx index a2f85fe..d96bc36 100644 --- a/src/components/Main/Decreasing.tsx +++ b/src/components/Main/Decreasing.tsx @@ -3,7 +3,7 @@ import { Title } from '../../ui/Title'; export function Decreasing() { return ( - <div className="lg:py-[70px] py-14 lg:px-10 sm:px-6 px-4"> + <div className="lg:py-[70px] py-14"> <Title className="max-sm:hidden"> <span className="text-gradient">Достигайте положительный эффект</span> <br /> за счет снижения издержек diff --git a/src/components/Main/Distance.tsx b/src/components/Main/Distance.tsx index 59d4ca5..5ef749a 100644 --- a/src/components/Main/Distance.tsx +++ b/src/components/Main/Distance.tsx @@ -2,7 +2,7 @@ import { Title } from '../../ui/Title'; export function Distance() { return ( - <div className="lg:py-[70px] lg:px-10 py-14 sm:px-6 px-4"> + <div className="lg:py-[70px] py-14"> <Title className="2xl:mb-[77px] lg:mb-14 mb-6"> Платформа GRAFF.training поволяет осуществлять <span className="text-gradient"> дистанционное обучение</span> с любого diff --git a/src/components/Main/Efficiency.tsx b/src/components/Main/Efficiency.tsx index 26c0a01..27eca62 100644 --- a/src/components/Main/Efficiency.tsx +++ b/src/components/Main/Efficiency.tsx @@ -6,7 +6,7 @@ import { useEffect, useRef } from 'react'; export function Effeciency() { return ( - <div className="lg:py-[70px] py-14 lg:px-10 sm:px-6 px-4"> + <div className="lg:py-[70px] py-14"> <AppearanceHr className="max-sm:hidden" /> <div className="pt-5 gap-4 sm:grid lg:grid-cols-12 sm:grid-cols-8"> <MiniTitle @@ -17,15 +17,17 @@ export function Effeciency() { <div className="flex max-sm:flex-col lg:max-2xl:w-[clamp(728px,728px+(100vw-1024px)/576*405,1133px)] justify-stretch gap-x-4 gap-y-2 max-sm:py-5 sm:pb-5"> <Figure percents={50} + type="charts" title={'сокращение бюджета на обучение сотрудников'} /> <Figure percents={30} + type="diagram" title={'сокращение времени обучения сотрудников'} /> <Figure percents={90} - type="right" + type="pizza" title={'готовность к опасным ситуациям выше на'} /> </div> @@ -56,11 +58,11 @@ export function Effeciency() { function Figure({ title, percents, - type = 'left', + type, }: { percents: number; title: string; - type?: 'left' | 'right'; + type: 'charts' | 'diagram' | 'pizza'; }) { const root = useRef<HTMLDivElement>(null); const figureRef = useRef<HTMLSpanElement>(null); @@ -87,16 +89,15 @@ function Figure({ <motion.div ref={root} initial={{ - background: `bottom right 24px/auto url(src/assets/efficiency/${type}_variance_figure.svg) no-repeat, bottom right/100% 0% url(src/assets/efficiency/efficiency_backlight.svg) no-repeat, #3D425C4D`, - backgroundSize: 'auto,100% 0%', + background: `bottom right / 50% url(src/assets/efficiency/${type}.png) no-repeat, bottom center / 0% 0% url(src/assets/efficiency/efficiency_backlight.svg) no-repeat, #3D425C4D`, }} whileHover={{ - backgroundSize: 'auto,100% 100%', + // backgroundSize: '50% 50%,100% 100%', transition: { duration: 0.075 }, }} - className="flex px-6 2xl:max-w-[22vw] w-full rounded-2xl pt-6 bg-no-repeat bg-[position:bottom_right_24px,bottom_right] h-[262px] relative" + className="flex px-6 2xl:max-w-[22vw] w-full rounded-2xl pt-6 bg-no-repeat h-[262px] relative" > - <div className="flex flex-col justify-between py-6 max-sm:max-w-[50vw]"> + <div className="flex flex-col justify-between pb-6 max-sm:max-w-[50vw]"> <h3 className="lg:font-medium l-text 2xl:max-w-[70%]">{title}</h3> <h1 className="font-medium flex items-center md:text-[clamp(64px,64px+(100vw-768px)/832*32,96px)] md:leading-[clamp(57.6px,57.6px+(100vw-768px)/832*28.8,86.4px)] text-[64px] leading-[57.6px]"> <span ref={figureRef}>{percents}</span> diff --git a/src/components/Main/Events.tsx b/src/components/Main/Events.tsx index c998b01..14366c8 100644 --- a/src/components/Main/Events.tsx +++ b/src/components/Main/Events.tsx @@ -8,7 +8,7 @@ import { ArrowInsertIcon } from '../icons/ArrowInsertIcon'; export function Events() { return ( - <div className="lg:py-[70px] lg:px-10 sm:py-14 sm:px-6 px-4" id="events"> + <div className="lg:py-[70px] sm:py-14" id="events"> <AppearanceHr className="max-lg:hidden" /> <div className="pt-5 gap-x-4 w-full sm:grid lg:grid-cols-12 grid-cols-8"> <MiniTitle text="события" className="max-sm:mb-2 col-span-2" /> diff --git a/src/components/Main/Marquee.tsx b/src/components/Main/Marquee.tsx index 4c3eeb3..5c1278b 100644 --- a/src/components/Main/Marquee.tsx +++ b/src/components/Main/Marquee.tsx @@ -1,6 +1,6 @@ export function Marquee() { return ( - <div className="flex flex-nowrap w-full overflow-hidden lg:max-h-[100px] sm:max-h-[82px] max-h-20 relative z-10 bg-[#14161F]"> + <div className="flex flex-nowrap w-screen overflow-hidden lg:max-h-[100px] sm:max-h-[82px] max-h-20 relative z-10 bg-[#14161F] lg:-mx-10 sm:-mx-6 -mx-4"> <div className="flex absolute z-40 right-0 max-sm:hidden"> <div className="w-0 h-0 lg:border-b-[100px] lg:border-l-[100px] sm:border-b-[82px] sm:border-l-[82px] border-[transparent_transparent_#D0D6DF_transparent]" /> <div className="lg:w-[260px] sm:w-[216px] bg-[#D0D6DF]" /> diff --git a/src/components/Main/Motivation.tsx b/src/components/Main/Motivation.tsx index b350d74..260c264 100644 --- a/src/components/Main/Motivation.tsx +++ b/src/components/Main/Motivation.tsx @@ -3,7 +3,7 @@ import { Marquee } from '../Main/Marquee'; export function Motivation() { return ( <div> - <div className="lg:px-10 sm:px-6 px-4 lg:py-28 sm:py-12 py-14 grid grid-cols-12"> + <div className="lg:py-28 sm:py-12 py-14 grid grid-cols-12"> <h1 className="2xl:mb-[38px] pb-8 font-medium lg:block max-lg:hidden h1 col-span-full"> Создаем <span className="text-gradient"> интерактивные тренажеры </span> diff --git a/src/components/Main/Products/Products.tsx b/src/components/Main/Products/Products.tsx index df7e4ea..4b6be21 100644 --- a/src/components/Main/Products/Products.tsx +++ b/src/components/Main/Products/Products.tsx @@ -25,7 +25,7 @@ export function Products() { return ( <div id="products" - className="lg:py-[70px] sm:max-lg:pt-14 sm:max-lg:pb-8 max-sm:py-14 lg:px-10 sm:px-6 px-4 relative z-10" + className="lg:py-[70px] sm:max-lg:pt-14 sm:max-lg:pb-8 max-sm:py-14 relative z-10" > <Title className="2xl:mb-[77px] mb-14 max-lg:hidden"> Процесс обучения сотрудников станет безопасней и эффективней с diff --git a/src/components/Main/Projects.tsx b/src/components/Main/Projects.tsx index 86543e1..471bcaf 100644 --- a/src/components/Main/Projects.tsx +++ b/src/components/Main/Projects.tsx @@ -25,13 +25,16 @@ export function Projects() { return ( <div id="projects" - className="lg:py-[70px] lg:px-10 py-14 sm:px-6 px-4 overflow-hidden" + className="lg:py-[70px] py-14 overflow-hidden lg:-mx-10 sm:-mx-6 -mx-4" > - <Title className="2xl:mb-[77px] lg:mb-14 mb-6"> + <Title className="2xl:mb-[77px] lg:mb-14 mb-6 lg:ml-10 sm:ml-6 ml-4"> <span className="text-gradient">Большой опыт в работе</span> с промышленными предприятиями и учебными заведениями - + [] }) { }, [sliderOffset, order, slide]); return ( -
+
+
+ + + Смотреть все +
+ +
+
+
+
+
+ +
+

L 410 NG Aircraft

+
+

+

+ Презентация +

+

+

+ 3D-макет +

+
+
+
+
+ +
+

+ Учебная лаборатория определения жирности молока +

+
+

+

+ VR-приложение +

+
+
+
+
+
+ ); +} diff --git a/src/components/Main/Teaching.tsx b/src/components/Main/Teaching.tsx index 3c0d2cc..1ebfe4d 100644 --- a/src/components/Main/Teaching.tsx +++ b/src/components/Main/Teaching.tsx @@ -3,7 +3,7 @@ import { Title } from '../../ui/Title'; export function Teaching() { return ( -
+
<span className="text-gradient">Тренинг модуль</span> <br className="max-lg:hidden" /> diff --git a/src/components/Main/Trainings.tsx b/src/components/Main/Trainings.tsx index 603aaed..04f41ef 100644 --- a/src/components/Main/Trainings.tsx +++ b/src/components/Main/Trainings.tsx @@ -7,7 +7,7 @@ import { VrBacklightIcon } from '../icons/VrBacklightIcon'; export function Trainings() { return ( - <div id="trainings" className="lg:py-[70px] lg:px-10 py-14 sm:px-7 px-4"> + <div id="trainings" className="lg:py-[70px] py-14"> <Title className="2xl:mb-[77px] lg:mb-14 mb-6"> Предлагаем различные{' '} <span className="text-gradient">варианты комплектации тренажеров</span>, diff --git a/src/components/Main/Video.tsx b/src/components/Main/Video.tsx index 9d2de12..c4499fd 100644 --- a/src/components/Main/Video.tsx +++ b/src/components/Main/Video.tsx @@ -15,7 +15,7 @@ export function Video() { return ( <> - <div className="flex bg-[url(src/assets/video/video.jpg)] lg:h-[836px] sm:h-[561px] h-[400px] bg-cover bg-right bg-no-repeat justify-center relative z-20"> + <div className="flex bg-[url(src/assets/video/video.jpg)] lg:h-[836px] sm:h-[561px] h-[400px] bg-cover bg-right bg-no-repeat justify-center relative z-20 lg:-mx-10 sm:-mx-6 -mx-4"> <button className="self-center outline-none" onClick={() => setOpen(true)} diff --git a/src/components/icons/ArrowDownIcon.tsx b/src/components/icons/ArrowDownIcon.tsx index a5ea4df..1b3edf4 100644 --- a/src/components/icons/ArrowDownIcon.tsx +++ b/src/components/icons/ArrowDownIcon.tsx @@ -1,22 +1,19 @@ export function ArrowDownIcon({ className = '' }: { className?: string }) { return ( <svg - width="24" - height="24" - viewBox="0 0 24 24" - fill="none" - className={className} - color="currentColor" + width="20" + height="20" + viewBox="0 0 20 20" + fill="currentColor" xmlns="http://www.w3.org/2000/svg" + className={className} > - <g opacity="0.8"> - <path - fillRule="evenodd" - clipRule="evenodd" - d="M11.2929 16.7071C11.6834 17.0976 12.3166 17.0976 12.7071 16.7071L19.7071 9.70713C20.0976 9.31661 20.0976 8.68344 19.7071 8.29292C19.3165 7.90239 18.6834 7.90239 18.2928 8.29292L12 14.5858L5.70711 8.29292C5.31658 7.90239 4.68342 7.90239 4.29289 8.29292C3.90237 8.68344 3.90237 9.31661 4.29289 9.70713L11.2929 16.7071Z" - fill="white" - /> - </g> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="M10 4.16663C9.53976 4.16663 9.16667 4.53972 9.16667 4.99996L9.16667 12.9014L5.60632 9.12525C5.29059 8.79039 4.76318 8.77488 4.42832 9.0906C4.09346 9.40633 4.07795 9.93374 4.39367 10.2686L9.39367 15.5716C9.55113 15.7386 9.77048 15.8333 10 15.8333C10.2295 15.8333 10.4489 15.7386 10.6063 15.5716L15.6063 10.2686C15.9221 9.93374 15.9065 9.40633 15.5717 9.09061C15.2368 8.77488 14.7094 8.79039 14.3937 9.12525L10.8333 12.9014L10.8333 4.99996C10.8333 4.53972 10.4602 4.16663 10 4.16663Z" + fill="#14161F" + /> </svg> ); } diff --git a/src/pages/MainPage.tsx b/src/pages/MainPage.tsx index cc9219a..efe4840 100644 --- a/src/pages/MainPage.tsx +++ b/src/pages/MainPage.tsx @@ -11,6 +11,7 @@ import { Events } from '../components/Main/Events'; import { Ellipse } from '../components/Main/Ellipse'; import { Motivation } from '../components/Main/Motivation'; import { useWindowWidth } from '../hooks/useWindowWidth'; +import { RecentProjects } from '../components/Main/RecentProjects'; export function MainPage() { const width = useWindowWidth(); @@ -23,6 +24,7 @@ export function MainPage() { <Decreasing /> <Effeciency /> <Products /> + <RecentProjects /> <Teaching /> <Distance /> <Availables />