Pravki ot 13.11;
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 192 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 65 KiB |
@@ -0,0 +1,18 @@
|
||||
import { Metadata, ResolvingMetadata } from "next";
|
||||
|
||||
export async function generateMetadata(
|
||||
{},
|
||||
_: ResolvingMetadata
|
||||
): Promise<Metadata> {
|
||||
return {
|
||||
title: "Итоги 2025 года",
|
||||
};
|
||||
}
|
||||
|
||||
export default function YearResultsLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return <section>{children}</section>;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { InProcess } from "@/components/pages/InProcess";
|
||||
|
||||
export default function YearResults() {
|
||||
return <InProcess />;
|
||||
// return <AboutMain />;
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
/* eslint-disable @next/next/no-img-element */
|
||||
import { useMediaQueries } from "@/hooks/useMediaQueries";
|
||||
import { motion } from "framer-motion";
|
||||
import React, { useRef, useEffect, useState } from "react";
|
||||
|
||||
export default function AboutAchievementsCard({
|
||||
img,
|
||||
title,
|
||||
className,
|
||||
imageClassName,
|
||||
labelClassName,
|
||||
video,
|
||||
}: {
|
||||
img?: string;
|
||||
title: string;
|
||||
className?: string;
|
||||
imageClassName?: string;
|
||||
labelClassName?: string;
|
||||
video?: string;
|
||||
}) {
|
||||
const cardRef = useRef<HTMLDivElement>(null);
|
||||
const videoRef = useRef<HTMLDivElement>(null);
|
||||
const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });
|
||||
const [cardTransform, setCardTransform] = useState({ x: 0, y: 0 });
|
||||
const { isLg } = useMediaQueries();
|
||||
|
||||
// useEffect(() => {
|
||||
// const handleMouseMove = (e: MouseEvent) => {
|
||||
// setMousePosition({ x: e.clientX, y: e.clientY });
|
||||
// };
|
||||
|
||||
// window.addEventListener("mousemove", handleMouseMove);
|
||||
// return () => window.removeEventListener("mousemove", handleMouseMove);
|
||||
// }, []);
|
||||
|
||||
//
|
||||
|
||||
// useEffect(() => {
|
||||
// if ((!video && !cardRef.current) || !isLg) return;
|
||||
// if ((video && videoRef.current) || !isLg) return;
|
||||
|
||||
// const card = video ? videoRef.current : cardRef.current;
|
||||
// const rect = card!.getBoundingClientRect();
|
||||
// const cardCenterX = rect.left + rect.width / 2;
|
||||
// const cardCenterY = rect.top + rect.height / 2;
|
||||
|
||||
// const deltaX = mousePosition.x - cardCenterX;
|
||||
// const deltaY = mousePosition.y - cardCenterY;
|
||||
// const distance = Math.hypot(deltaX, deltaY);
|
||||
|
||||
// const maxDistance = 1000;
|
||||
// const maxOffset = 20;
|
||||
|
||||
// if (distance < maxDistance) {
|
||||
// const strength = 1 - distance / maxDistance;
|
||||
// const offsetX = (deltaX / distance) * strength * maxOffset;
|
||||
// const offsetY = (deltaY / distance) * strength * maxOffset;
|
||||
|
||||
// setCardTransform({
|
||||
// x: isNaN(offsetX) ? 0 : offsetX,
|
||||
// y: isNaN(offsetY) ? 0 : offsetY,
|
||||
// });
|
||||
// } else {
|
||||
// setCardTransform({ x: 0, y: 0 });
|
||||
// }
|
||||
// }, [isLg, mousePosition, video]);
|
||||
|
||||
return video ? (
|
||||
<motion.div
|
||||
ref={videoRef}
|
||||
animate={
|
||||
isLg
|
||||
? {
|
||||
x: cardTransform.x,
|
||||
y: cardTransform.y,
|
||||
}
|
||||
: {}
|
||||
}
|
||||
transition={{
|
||||
type: "spring",
|
||||
stiffness: 550,
|
||||
damping: 15,
|
||||
mass: 0.1,
|
||||
}}
|
||||
className={
|
||||
"aspect-[223/240] rounded-[16px] bg-[radial-gradient(circle,rgba(0,0,0,1)_-70%,rgba(34,36,37,1)_100%);] flex flex-col items-center justify-between p-[1.111vw] max-lg:flex max-lg:top-0 md:max-lg:p-[2.083vw] max-md:p-[4.444vw] top-[8.333vw] left-0 relative w-full max-md:aspect-[165/240]"
|
||||
}
|
||||
>
|
||||
<div className="flex w-[12.361vw] h-[12.361vw] overflow-hidden rounded-full aspect-square md:max-lg:w-[17.448vw] md:max-lg:h-[17.448vw] max-lg:my-auto max-md:w-[37.222vw] max-md:h-[37.222vw]">
|
||||
<video
|
||||
src={video}
|
||||
muted
|
||||
loop
|
||||
autoPlay
|
||||
playsInline
|
||||
className="scale-[1.9]"
|
||||
/>
|
||||
</div>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] max-md:w-[110%]">
|
||||
{title}
|
||||
</p>
|
||||
</motion.div>
|
||||
) : (
|
||||
<motion.div
|
||||
ref={cardRef}
|
||||
className={
|
||||
"w-[15.486vw] aspect-[223/240] group rounded-[16px] bg-[radial-gradient(circle,rgba(0,0,0,1)_-70%,rgba(34,36,37,1)_100%);] flex flex-col items-center justify-between p-[1.111vw] absolute overflow-hidden md:max-lg:p-[2.083vw] max-md:p-[4.444vw] " +
|
||||
className
|
||||
}
|
||||
>
|
||||
<img
|
||||
src={img}
|
||||
className={
|
||||
"z-10 w-[9.444vw] md:max-lg:w-[20.833vw] max-md:w-[36.944vw] my-auto group-hover:scale-110 transition-all duration-300 " +
|
||||
imageClassName
|
||||
}
|
||||
alt={title}
|
||||
/>
|
||||
<p
|
||||
className={
|
||||
"z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] " +
|
||||
labelClassName
|
||||
}
|
||||
>
|
||||
{title}
|
||||
</p>
|
||||
</motion.div>
|
||||
);
|
||||
}
|
||||
@@ -1,28 +1,43 @@
|
||||
/* eslint-disable @next/next/no-img-element */
|
||||
"use client";
|
||||
|
||||
import React from "react";
|
||||
import AboutEventCard from "./AboutEventCard";
|
||||
import EventLogo1 from "../../../../public/img/pages/about/experience/EventLogo1.png";
|
||||
import EventLogo2 from "../../../../public/img/pages/about/experience/EventLogo2.png";
|
||||
import { ArticleCard } from "../BlogPage/ArticleCard";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import { useGetArticlesQuery } from "@/queries/getArticles";
|
||||
import { motion } from "framer-motion";
|
||||
import DisplacementCard from "../../displacement/DisplacementCard";
|
||||
import DisplacementCardsWrapper from "../../displacement/DisplacementCardsWrapper";
|
||||
import { useGetProjectsCountQuery } from "@/queries/getProjectsCount";
|
||||
import { getProjectsCount } from "@/utils/getProjectsCount";
|
||||
import { OpenFormModalWrapper } from "@/hocs/OpenFormModalWrapper";
|
||||
import AddIcon from "@/components/icons/AddIcon";
|
||||
import { GradientButton } from "@/ui/GradientButton";
|
||||
import EventFormModal from "@/components/modals/EventFormModal";
|
||||
import { motion } from "framer-motion";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import React from "react";
|
||||
import DisplacementCard from "../../displacement/DisplacementCard";
|
||||
import DisplacementCardsWrapper from "../../displacement/DisplacementCardsWrapper";
|
||||
import { ArticleCard } from "../BlogPage/ArticleCard";
|
||||
import AboutEvents from "./AboutEvents";
|
||||
|
||||
function YearsLabel({
|
||||
years,
|
||||
className,
|
||||
}: {
|
||||
years: number[];
|
||||
className?: string;
|
||||
}) {
|
||||
return (
|
||||
<div
|
||||
className={`absolute lg:left-[1.111vw] md:left-[2.083vw] left-[4.444vw] w-full flex items-center justify-start xl:gap-[0.278vw] md:gap-[0.521vw] gap-[2.222vw] ${className}`}
|
||||
>
|
||||
{years.map((year) => (
|
||||
<div
|
||||
key={year}
|
||||
className="lg:px-[0.556vw] lg:py-[0.278vw] md:px-[1.042vw] md:py-[0.521vw] px-[2.222vw] py-[1.111vw] lg:text-[1.302vw] md:text-[1.563vw] text-[2.778vw] rounded-full bg-[#37393B99] border-[1px] border-[#FFFFFF1A] caption"
|
||||
>
|
||||
{year}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default function AboutExperience() {
|
||||
const searchParams = useSearchParams();
|
||||
const { data: articles } = useGetArticlesQuery(searchParams.getAll("tags"));
|
||||
|
||||
const { data: projectsCount } = useGetProjectsCountQuery();
|
||||
|
||||
return (
|
||||
@@ -177,41 +192,6 @@ export default function AboutExperience() {
|
||||
</div>
|
||||
|
||||
<AboutEvents />
|
||||
|
||||
{/* <div className="flex justify-between max-lg:flex-col md:max-lg:gap-[4.167vw] max-md:gap-[8.889vw]">
|
||||
<div className="w-[23.611vw] space-y-[0.833vw]">
|
||||
<p className="headline1 text-[#7A7A7A] max-lg:w-full">
|
||||
<span className="headline1 text-white">
|
||||
Ближайшие мероприятия, <br />
|
||||
</span>
|
||||
где каждый девелопер может лично протестировать{" "}
|
||||
<br className="md:max-lg:block hidden" />
|
||||
и оценить функционал наших интерактивных макетов недвижимости
|
||||
</p>
|
||||
<OpenFormModalWrapper modal={<EventFormModal action="create" />}>
|
||||
<GradientButton>
|
||||
<div className="text-white lg:size-[1.944vw] size-7">
|
||||
<AddIcon />
|
||||
</div>
|
||||
</GradientButton>
|
||||
</OpenFormModalWrapper>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between gap-x-3 max-md:flex-col max-md:gap-[3.333vw]">
|
||||
<AboutEventCard
|
||||
logo={EventLogo1}
|
||||
place={"Москва, GOELRO"}
|
||||
date={"10 сентября – 12 сентября"}
|
||||
color={"#FF3A94"}
|
||||
/>
|
||||
<AboutEventCard
|
||||
logo={EventLogo2}
|
||||
place={"Екатеринбург, ЭКСПО"}
|
||||
date={"30 сентября – 3 октября"}
|
||||
color={"#3F58FF"}
|
||||
/>
|
||||
</div>
|
||||
</div> */}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -231,74 +211,36 @@ export default function AboutExperience() {
|
||||
</p>
|
||||
|
||||
<DisplacementCardsWrapper>
|
||||
<DisplacementCard index={0} className="lg:top-0 lg:left-[16.389vw]">
|
||||
<DisplacementCard
|
||||
index={0}
|
||||
className={"lg:top-[8.333vw] lg:left-0 !aspect-[223/260] "}
|
||||
>
|
||||
<YearsLabel years={[2024, 2025]} />
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/table.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[17.708vw] md:h-[17.708vw] w-[25.556vw] h-[25.556vw] my-auto object-cover hover:scale-[1.15] transition-all duration-300"
|
||||
alt="Наш продукт зарегистрирован и включен в реестр отечественного ПО"
|
||||
src={"/img/pages/about/experience/cards/wow.png"}
|
||||
className="lg:w-[8.333vw] md:w-[19.625vw] w-[33.333vw] aspect-square lg:mt-auto mt-auto object-cover hover:scale-[1.15] transition-all duration-300"
|
||||
alt="Заняли 1 место на WOW AWARDS 2024 совместно с застройщиком Upside Development"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
Наш продукт зарегистрирован{" "}
|
||||
<br className="min-md:hidden block" />
|
||||
и включен в реестр <br className="nidden md:max-lg:block" />
|
||||
отечественного ПО
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] md:w-[90%] max-md:w-[110%] !leading-[135%] ">
|
||||
Дважды помогли нашим партнерам занять 1 место на WOW AWARDS
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
<DisplacementCard
|
||||
index={1}
|
||||
className={
|
||||
"lg:top-[8.333vw] lg:left-0 md:max-lg:!translate-y-[3.125vw] !aspect-[223/260]"
|
||||
}
|
||||
className="lg:top-0 lg:left-[16.389vw] md:max-lg:!translate-y-[3.125vw]"
|
||||
>
|
||||
<YearsLabel years={[2024, 2025]} className="lg:hidden" />
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/wow.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[17.708vw] md:h-[17.708vw] w-[33.333vw] h-[33.333vw] my-auto object-cover hover:scale-[1.15] transition-all duration-300"
|
||||
alt="Заняли 1 место на WOW AWARDS 2024 совместно с застройщиком Upside Development"
|
||||
src={"/img/pages/about/experience/cards/table.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[17.708vw] md:h-[17.708vw] w-[25.556vw] h-[25.556vw] lg:my-auto md:mt-auto md:mb-0 my-auto object-cover hover:scale-[1.15] transition-all duration-300 max-md:translate-y-[20%]"
|
||||
alt="Наш продукт зарегистрирован и включен в реестр отечественного ПО"
|
||||
/>
|
||||
<p className="z-10 text-center btns !leading-[120%]">
|
||||
Мы дважды заняли 1 место на WOW AWARDS в 2024 и 2025 году
|
||||
совместно с застройщиками Upside Development и LEGENDA
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
<DisplacementCard
|
||||
index={2}
|
||||
className="lg:bottom-0 lg:right-[16.389vw]"
|
||||
>
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/sk.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[25.708vw] md:h-[25.708vw] w-[45.556vw] h-[45.556vw] my-auto object-cover hover:scale-[1.15] transition-all duration-300"
|
||||
alt="Мы резиденты Сколково"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
Мы - резиденты Сколково
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
<DisplacementCard index={3} className="lg:top-0 lg:right-[8.194vw]">
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/map.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[20.708vw] md:h-[20.708vw] w-[35.556vw] h-[35.556vw] my-auto object-cover hover:scale-[1.35] scale-[1.25] transition-all duration-300"
|
||||
alt="Наши интерактивные столы стоят уже в 16 городах России"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
Наши интерактивные столы стоят уже в 16 городах России
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
<DisplacementCard
|
||||
index={4}
|
||||
className="lg:bottom-[7.708vw] lg:right-0 md:max-lg:!translate-y-[3.125vw]"
|
||||
>
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/dp.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[17.708vw] md:h-[17.708vw] w-[25.556vw] h-[25.556vw] my-auto object-cover hover:scale-[1.15] transition-all duration-300 "
|
||||
alt="Каждый наш проект, получил одну или несколько наград на платформе Dprofile"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
Каждый наш проект получил одну или несколько наград на платформе
|
||||
Dprofile
|
||||
<p className="z-10 w-[105%] text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%]">
|
||||
Наш продукт зарегистрирован{" "}
|
||||
<br className="min-md:hidden block" />
|
||||
и включен в реестр <br className="hidden md:max-lg:block" />
|
||||
отечественного ПО
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
@@ -306,15 +248,60 @@ export default function AboutExperience() {
|
||||
index={5}
|
||||
className="lg:bottom-0 lg:left-[8.194vw] "
|
||||
>
|
||||
<YearsLabel years={[2024, 2025]} className="lg:hidden" />
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/sk.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[25.708vw] md:h-[25.708vw] w-[45.556vw] h-[45.556vw] lg:my-auto mt-auto object-cover hover:scale-[1.15] transition-all duration-300"
|
||||
alt="Мы резиденты Сколково"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] ">
|
||||
Мы - резиденты Сколково
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
<DisplacementCard
|
||||
index={2}
|
||||
className="lg:bottom-0 lg:right-[16.389vw] "
|
||||
>
|
||||
<YearsLabel years={[2024, 2025]} className="lg:hidden" />
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/build_up.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[17.708vw] md:h-[17.708vw] w-[25.556vw] h-[25.556vw] my-auto object-cover hover:scale-[1.15] transition-all duration-300"
|
||||
alt="В 2023 году мы выиграли Build UP в категории IT"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%]">
|
||||
В 2023 году мы выиграли Build UP в категории IT
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
<DisplacementCard
|
||||
index={4}
|
||||
className="lg:bottom-[7.708vw] lg:right-0 md:max-lg:!translate-y-[3.125vw]"
|
||||
>
|
||||
<YearsLabel years={[2024, 2025]} className="lg:hidden" />
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/dp.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[17.708vw] md:h-[17.708vw] w-[25.556vw] h-[25.556vw] lg:my-auto mt-auto object-cover hover:scale-[1.15] transition-all duration-300 "
|
||||
alt="Каждый наш проект, получил одну или несколько наград на платформе Dprofile"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%]">
|
||||
Каждый наш проект получил одну или несколько наград на платформе
|
||||
Dprofile
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
<DisplacementCard index={3} className="lg:top-0 lg:right-[8.194vw]">
|
||||
<YearsLabel years={[2024, 2025]} className="lg:hidden" />
|
||||
<img
|
||||
src={"/img/pages/about/experience/cards/map.png"}
|
||||
className="lg:w-[9.444vw] lg:h-[9.444vw] md:w-[20.708vw] md:h-[20.708vw] w-[35.556vw] h-[35.556vw] lg:my-auto mt-auto object-cover hover:scale-[1.35] scale-[1.25] transition-all duration-300"
|
||||
alt="Наши интерактивные столы помогают продавать уже в 16 городах России"
|
||||
/>
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%] max-md:w-[110%]">
|
||||
Наши интерактивные столы помогают продавать уже в 16 городах
|
||||
России
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
</DisplacementCardsWrapper>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11,7 +11,7 @@ export function AboutHero() {
|
||||
muted
|
||||
src="/videos/pages/about/hero_video.mp4"
|
||||
poster="/img/pages/about/reel_template.png"
|
||||
className="absolute inset-0 object-cover w-full lg:h-dvh rounded-b-[1.111vw] z-[10] top-0 max-lg:relative md:max-lg:aspect-[736/441] max-md:aspect-[340/512] max-md:rounded-b-[4.444vw]"
|
||||
className="absolute inset-0 object-cover w-full lg:h-dvh rounded-b-[1.111vw] z-[10] top-0 max-lg:relative md:max-lg:aspect-[736/441] max-md:aspect-[340/512] max-md:rounded-b-[4.444vw] opacity-80"
|
||||
/>
|
||||
<div className="bg-[#00000033] absolute inset-0 max-lg:hidden h-dvh z-[11]" />
|
||||
<div className="relative z-[11] pt-[16.25vw] max-lg:pt-0 bg-clip-text">
|
||||
|
||||
@@ -47,7 +47,7 @@ export default function AboutTeam() {
|
||||
Мы объединили уже
|
||||
<span className="text-transparent bg-clip-text">
|
||||
{" "}
|
||||
более 60 высококвалифицирова
|
||||
более 70 высококвалифицирова
|
||||
<br className="max-md:block hidden" />
|
||||
ных специалистов <br className="md:max-lg:hidden" />
|
||||
</span>{" "}
|
||||
@@ -128,7 +128,7 @@ export default function AboutTeam() {
|
||||
<div className="mt-auto space-y-[1.667vw] max-md:space-y-[3.333vw]">
|
||||
<span className="line1 md:max-lg:text-[12.5vw]">3</span>
|
||||
<h3 className="headline2">
|
||||
3 проджект-менеджера <br /> руководят и улучшают проекты
|
||||
проджект-менеджера <br /> руководят и улучшают проекты
|
||||
</h3>
|
||||
<div className="lg:absolute bottom-0 right-0 w-full h-full max-lg:hidden">
|
||||
<img
|
||||
@@ -186,7 +186,7 @@ export default function AboutTeam() {
|
||||
50+
|
||||
</span>
|
||||
<h3 className="headline2">
|
||||
сотрудников в отделе <br /> 3D-моделирования, сколько{" "}
|
||||
сотрудников в отделе <br /> 3D-моделирования — сколько{" "}
|
||||
<br className="max-md:block hidden" />{" "}
|
||||
<br className="md:max-lg:block hidden" /> точно,{" "}
|
||||
<br className="max-lg:hidden" /> никто не считал
|
||||
@@ -209,15 +209,15 @@ export default function AboutTeam() {
|
||||
md:max-lg:w-[59.375vw] md:max-lg:rounded-[2.083vw] md:max-lg:p-[4.167vw] max-md:rounded-[4.444vw] max-md:w-full max-md:h-[74.444vw] max-md:relative max-md:p-[4.444vw]"
|
||||
>
|
||||
<div className="mt-auto space-y-[0.833vw] max-md:space-y-[3.333vw] max-md:w-full">
|
||||
<span className="line1 md:max-lg:text-[12.5vw]">5</span>
|
||||
<h3 className="headline2">
|
||||
сотрудников <br /> в отделе дизайна
|
||||
<span className="line1 md:max-lg:text-[12.5vw]">4</span>
|
||||
<h3 className="headline2 md:max-lg:w-[110%]">
|
||||
сотрудников в отделе дизайна и маркетинга
|
||||
</h3>
|
||||
</div>
|
||||
<img
|
||||
src={"/img/pages/about/team/designers.png"}
|
||||
alt=""
|
||||
className="h-full max-md:h-[56.111vw] max-md:absolute max-md:top-[4.444vw] max-md:right-[4.444vw]"
|
||||
className="h-full max-md:h-[46.389vw] max-md:absolute max-md:top-[4.444vw] max-md:right-[4.444vw]"
|
||||
/>
|
||||
</div>
|
||||
<img
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
import dynamic from "next/dynamic";
|
||||
import React from "react";
|
||||
|
||||
const AboutAchievementsCard = dynamic(() => import("./AboutAchievementsCard"), {
|
||||
ssr: false,
|
||||
});
|
||||
|
||||
export default function AchievementsCardsMobile({
|
||||
web = false,
|
||||
}: {
|
||||
web?: boolean;
|
||||
}) {
|
||||
return (
|
||||
<div className="hidden max-lg:grid md:max-lg:grid-cols-3 md:max-lg:grid-rows-2 max-lg:w-full md:max-lg:gap-3 max-md:grid max-md:grid-cols-2 max-md:gap-[2.222vw]">
|
||||
{!web ? (
|
||||
<AboutAchievementsCard
|
||||
img={"/img/pages/about/experience/cards/wow.png"}
|
||||
title="Мы заняли 1 место на WOW AWARDS 2024 совместно с застройщиком Upside Development"
|
||||
className="relative w-full max-md:aspect-[165/240]"
|
||||
/>
|
||||
) : (
|
||||
<AboutAchievementsCard
|
||||
video={"/videos/pages/web/demo/IRTH_animation.mp4"}
|
||||
title={"Машины ездят по основным магистралям"}
|
||||
/>
|
||||
)}
|
||||
|
||||
<AboutAchievementsCard
|
||||
img={
|
||||
web
|
||||
? "/img/pages/web/demo/people.png"
|
||||
: "/img/pages/about/experience/cards/table.png"
|
||||
}
|
||||
title={
|
||||
web
|
||||
? "Люди гуляют в окрестностях ЖК"
|
||||
: "Наш продукт зарегистрирован и включен в реестр отечественного ПО"
|
||||
}
|
||||
className="relative w-full md:max-lg:translate-y-[3.125vw] max-md:aspect-[165/240]"
|
||||
/>
|
||||
|
||||
<AboutAchievementsCard
|
||||
img={
|
||||
web
|
||||
? "/img/pages/web/demo/clouds.png"
|
||||
: "/img/pages/about/experience/cards/sk.png"
|
||||
}
|
||||
title={
|
||||
web
|
||||
? "Облака движутся в нужом направлении, как в реальном времени на вашей локации"
|
||||
: "Мы резиденты Сколково"
|
||||
}
|
||||
className="relative w-full max-md:aspect-[165/240]"
|
||||
imageClassName={web ? "absolute top-0 left-0 !w-full" : ""}
|
||||
labelClassName={web ? "max-lg:mt-auto" : ""}
|
||||
/>
|
||||
|
||||
<AboutAchievementsCard
|
||||
img={
|
||||
web
|
||||
? "/img/pages/web/demo/building.png"
|
||||
: "/img/pages/about/experience/cards/build_up.png"
|
||||
}
|
||||
title={
|
||||
web
|
||||
? "Осмотрите фасады со всех сторон"
|
||||
: "В 2023 году мы выиграли Build UP в категории IT"
|
||||
}
|
||||
className="relative w-full max-md:aspect-[165/240]"
|
||||
imageClassName={
|
||||
web
|
||||
? "h-[21.354vw] w-auto max-md:h-[40.556vw] max-md:w-[45.222vw] "
|
||||
: ""
|
||||
}
|
||||
/>
|
||||
|
||||
<AboutAchievementsCard
|
||||
img={
|
||||
web
|
||||
? "/img/pages/web/demo/infrastructure.png"
|
||||
: "/img/pages/about/experience/cards/dp.png"
|
||||
}
|
||||
title={
|
||||
web
|
||||
? "Изучите инфраструктуру"
|
||||
: "Каждый наш проект, получил одну или несколько наград на платформе Dprofile"
|
||||
}
|
||||
className="relative w-full md:max-lg:translate-y-[3.125vw] max-md:aspect-[165/240]"
|
||||
// imageClassName={web ? "w-full h-auto" : ""}
|
||||
/>
|
||||
|
||||
{!web ? (
|
||||
<AboutAchievementsCard
|
||||
img={"/img/pages/about/experience/cards/map.png"}
|
||||
title={"Наши интерактивные столы стоят уже в 16 городах России"}
|
||||
className="relative w-full max-md:aspect-[165/240]"
|
||||
/>
|
||||
) : (
|
||||
<AboutAchievementsCard
|
||||
video={"/videos/pages/web/demo/IRTH_animation.mp4"}
|
||||
title={"Наши интерактивные столы стоят уже в 16 городах России"}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -128,7 +128,9 @@ export default function Accordeon({
|
||||
{opened && (
|
||||
<motion.ul
|
||||
ref={listRef}
|
||||
className="flex flex-col lg:mt-[1.667vw] lg:gap-[0.556vw] md:max-lg:mt-[3.125vw] max-md:mt-[6.667vw] md:max-lg:gap-[1.042vw] max-md:gap-[2.222vw]"
|
||||
className={
|
||||
"flex flex-col lg:mt-[1.667vw] lg:gap-[0.556vw] md:max-lg:mt-[3.125vw] max-md:mt-[6.667vw] md:max-lg:gap-[1.042vw] max-md:gap-[2.222vw] "
|
||||
}
|
||||
>
|
||||
{content.map((item, index) => (
|
||||
<motion.li
|
||||
@@ -164,11 +166,21 @@ export default function Accordeon({
|
||||
<span
|
||||
style={{
|
||||
width: isFaqPage ? "80%" : "auto",
|
||||
display: isFaqPage ? "inline-block" : "inline",
|
||||
opacity: isFaqPage ? 0.6 : 1,
|
||||
}}
|
||||
className={isFaqPage ? "text1" : "text2"}
|
||||
className={isFaqPage ? "text1" : "text2 flex items-start"}
|
||||
>
|
||||
{!isFaqPage && (
|
||||
<div
|
||||
className="rounded-full bg-white flex-shrink-0"
|
||||
style={{
|
||||
width: "6px",
|
||||
height: "6px",
|
||||
marginTop: "calc(0.5em - 1px)",
|
||||
marginRight: "8px",
|
||||
}}
|
||||
></div>
|
||||
)}
|
||||
{item.content}
|
||||
</span>
|
||||
</motion.li>
|
||||
|
||||
@@ -66,7 +66,7 @@ export default function ContentSlideCards({
|
||||
className="lg:w-[13.403vw] md:w-[18.229vw] w-[38.889vw] flex flex-col lg:gap-[0.694vw] gap-2 lg:p-[1.389vw] p-4 bg-[#37393B99] backdrop-blur-[5px] rounded-[1.111vw] absolute lg:left-[5.25vw] lg:bottom-[2.625vw] left-0 bottom-0
|
||||
max-md:bottom-[15vw] max-md:left-[5vw] max-md:rounded-[4.444vw] md:max-lg:p-[2.083vw] md:max-lg:left-[2.083vw] md:max-lg:bottom-[10vw]"
|
||||
>
|
||||
<span className="headline2 z-[3]">Для соцсетей:</span>
|
||||
<span className="headline2 z-[3]">Для соцсетей</span>
|
||||
<p className="text2 text-[#FFFFFF60]">
|
||||
Любой формат видео и изображений с идеально выставленным кадром
|
||||
</p>
|
||||
@@ -80,7 +80,7 @@ export default function ContentSlideCards({
|
||||
className="lg:w-[13.403vw] md:w-[18.229vw] w-[41vw] flex flex-col lg:gap-[0.694vw] gap-2 lg:p-[1.389vw] p-4 bg-[#37393B99] backdrop-blur-[5px] rounded-[1.111vw] absolute lg:right-[5.25vw] lg:top-[2.625vw] right-0 top-0
|
||||
max-md:top-[15vw] max-md:right-[5vw] max-md:rounded-[4.444vw] md:max-lg:p-[2.083vw] md:max-lg:right-[2.083vw] md:max-lg:top-[10vw]"
|
||||
>
|
||||
<span className="headline2">Для наружной рекламы:</span>
|
||||
<span className="headline2">Для наружной рекламы</span>
|
||||
<p className="text2 text-[#FFFFFF60]">
|
||||
Высокое разрешение для широкоформатной печати
|
||||
</p>
|
||||
|
||||
@@ -80,7 +80,7 @@ export default function ContentSlideHall({
|
||||
className="lg:w-[13.403vw] md:w-[18.229vw] w-[38.889vw] flex flex-col lg:gap-[0.694vw] gap-2 lg:p-[1.389vw] p-4 bg-[#37393B99] backdrop-blur-[5px] lg:rounded-[1.111vw] rounded-2xl absolute lg:left-[5.25vw] lg:bottom-[2.625vw] left-0 bottom-0
|
||||
max-md:bottom-[15vw] max-md:left-[5vw] md:max-lg:p-[2.083vw] md:max-lg:left-[2.083vw] md:max-lg:bottom-[10vw]"
|
||||
>
|
||||
<span className="headline2 z-[3]">По двору:</span>
|
||||
<span className="headline2 z-[3]">По двору</span>
|
||||
<p className="text2 text-[#FFFFFF60] ">
|
||||
Клиенты ощутят ритм жизни жилого комплекса и его атмосферу
|
||||
</p>
|
||||
@@ -93,7 +93,7 @@ export default function ContentSlideHall({
|
||||
className="lg:w-[13.403vw] md:w-[18.229vw] w-[38.889vw] flex flex-col lg:gap-[0.694vw] gap-2 lg:p-[1.389vw] p-4 bg-[#37393B99] backdrop-blur-[5px] lg:rounded-[1.111vw] rounded-2xl absolute lg:right-[5.25vw] lg:top-[2.625vw] right-0 top-0
|
||||
max-md:top-[15vw] max-md:right-[5vw] md:max-lg:p-[2.083vw] md:max-lg:right-[2.083vw] md:max-lg:top-[10vw]"
|
||||
>
|
||||
<span className="headline2">По квартире:</span>
|
||||
<span className="headline2">По квартире</span>
|
||||
<p className="text2 text-[#FFFFFF60] ">
|
||||
Клиенты оценят пространство в объеме и ощутят себя «внутри»
|
||||
</p>
|
||||
|
||||
@@ -125,7 +125,7 @@ export default function WebDemo() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%]">
|
||||
Машины ездят по основным магистралям
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
@@ -159,7 +159,7 @@ export default function WebDemo() {
|
||||
</div>
|
||||
<p
|
||||
className={
|
||||
"z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] mt-auto"
|
||||
"z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] mt-auto !leading-[135%]"
|
||||
}
|
||||
>
|
||||
Облака движутся в нужном направлении, как в реальном времени
|
||||
@@ -179,7 +179,7 @@ export default function WebDemo() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%]">
|
||||
Фасады можно изучить со всех сторон
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
@@ -197,7 +197,7 @@ export default function WebDemo() {
|
||||
/>
|
||||
<p
|
||||
className={
|
||||
"z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]"
|
||||
"z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%]"
|
||||
}
|
||||
>
|
||||
Вся инфраструктура будет отмечена на карте ближайшего окружения
|
||||
@@ -219,7 +219,7 @@ export default function WebDemo() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
|
||||
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw] !leading-[135%]">
|
||||
Прогулка по квартирам доступна при помощи тапов
|
||||
</p>
|
||||
</DisplacementCard>
|
||||
|
||||
@@ -60,15 +60,15 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
|
||||
"3D-моделирование": [
|
||||
{
|
||||
type: "general",
|
||||
content: "Разрабатываем wireframe - блочные схемы без дизайна",
|
||||
content: "Создание и подготовка 3D-моделей: окружение, материалы, освещение",
|
||||
},
|
||||
{
|
||||
type: "new",
|
||||
content: "Создаем первичный UI-кит: стили, цвета, шрифты и кнопки",
|
||||
content: "Визуализация: рендеринг 360-сфер",
|
||||
},
|
||||
{
|
||||
type: "general",
|
||||
content: "Отрисовываем дизайн-макеты ключевых блоков",
|
||||
content: "Интеграция и техническая подготовка: подготовка ассетов для движка, создание низкополигональных версий (LODs)",
|
||||
},
|
||||
],
|
||||
|
||||
@@ -90,7 +90,6 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
|
||||
content: "Наполняем страницы контентом",
|
||||
},
|
||||
],
|
||||
|
||||
"Сборка сцен": [
|
||||
{
|
||||
type: "general",
|
||||
@@ -103,14 +102,14 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
|
||||
"Готовим тестовые интерактивные 360° панорамы и экспортируем в веб-формат",
|
||||
},
|
||||
],
|
||||
Рендеринг: [
|
||||
"Рендеринг": [
|
||||
{
|
||||
type: "general",
|
||||
content: "Готовим финальные версии всех интерактивных 360° панорам ",
|
||||
},
|
||||
{
|
||||
type: "general",
|
||||
content: "Экспортируем готовые панорамы в на сайт",
|
||||
content: "Экспортируем готовые панорамы на сайт",
|
||||
},
|
||||
],
|
||||
"Верстка сайта": [
|
||||
@@ -128,7 +127,7 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
|
||||
"Адаптируем страницы под мобильные устройства: жесты, touch-управление",
|
||||
},
|
||||
],
|
||||
Оптимизация: [
|
||||
"Оптимизация": [
|
||||
{
|
||||
type: "general",
|
||||
content: "Тестируем готовый сайт на разных устройствах.",
|
||||
|
||||
Reference in New Issue
Block a user