upd
@@ -1 +1,2 @@
|
||||
VITE_API_URL=http://192.168.1.170:3000
|
||||
VITE_API_URL=http://192.168.1.171:3000
|
||||
# VITE_API_URL=http://localhost:3000
|
||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,35 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="Logo_GRAFFinteractive">
|
||||
<path id="G Base" fill-rule="evenodd" clip-rule="evenodd" d="M20.008 39.7195C30.8979 39.7195 39.7259 30.828 39.7259 19.8597C39.7259 18.5165 39.5935 17.2043 39.3411 15.9358H27.4287V23.8103H31.2726C29.6515 28.4886 25.2322 31.845 20.0345 31.845C13.4625 31.845 8.13482 26.479 8.13482 19.8597C8.13482 13.2405 13.4625 7.8745 20.0345 7.8745V0H20.008C9.11807 0 0.290039 8.89152 0.290039 19.8597C0.290039 30.828 9.11807 39.7195 20.008 39.7195Z" fill="#798FFF"/>
|
||||
<path id="Inner G" d="M19.0163 0.0241028C10.5443 1.34406 4.05957 8.70687 4.05957 17.592C4.05957 27.4109 11.9788 35.3706 21.7477 35.3706C31.5166 35.3706 39.4359 27.4109 39.4359 17.592C39.4359 17.0257 39.4096 16.4656 39.358 15.9128H27.4228V23.7759H31.269C29.647 28.4474 25.2249 31.7989 20.024 31.7989C13.4479 31.7989 8.11698 26.4407 8.11698 19.831C8.11698 13.5806 12.8841 8.44938 18.9632 7.90996C19.3127 7.87896 19.6665 7.8631 20.024 7.8631V0H19.9975C19.6685 0 19.3413 0.00810087 19.0163 0.0241028Z" fill="#D375FF"/>
|
||||
<path id="G_01" opacity="0.3" d="M17.7148 8.11785C18.4573 7.97602 19.2239 7.90176 20.0079 7.90176V0H19.981C18.3936 0 16.8493 0.183713 15.3684 0.530935L17.7148 8.11785Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_02" opacity="0.3" d="M7.31813 4.49062L6.08936 22.3243L7.84573 20.6511C7.8353 20.4454 7.83003 20.2384 7.83003 20.0301C7.83003 13.4217 13.14 8.05592 19.7179 7.98281L11.8297 1.73975C10.2002 2.45612 8.68475 3.38471 7.31813 4.49062Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_03" opacity="0.3" d="M0.290807 20.0849L9.2762 24.9332C8.5649 23.4062 8.16779 21.7038 8.16779 19.9089C8.16779 18.1115 8.56599 16.407 9.27911 14.8784L6.52677 5.5083C2.68747 9.11358 0.290039 14.2317 0.290039 19.9089C0.290039 19.9676 0.290296 20.0263 0.290807 20.0849Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_04" opacity="0.3" d="M0.290039 19.2889L12.2113 37.1619L25.2275 37.3999L20.1497 31.8043C20.0963 31.805 20.0428 31.8053 19.9892 31.8053C13.4289 31.8053 8.1107 26.4878 8.1107 19.9283C8.1107 19.6617 8.11948 19.3971 8.13679 19.1348L0.295555 19.1348C0.293519 19.1861 0.291681 19.2375 0.290039 19.2889Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_05" opacity="0.3" d="M8.94359 36.2403L16.5283 31.2535C11.6213 29.736 8.06526 25.2575 8.06526 19.969C8.06526 19.2895 8.12397 18.6233 8.23671 17.9751L3.1897 30.4729C4.6799 32.7605 6.6425 34.7264 8.94359 36.2403Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_06" opacity="0.3" d="M26.3874 38.6781C24.3639 39.3532 22.1958 39.7193 19.9409 39.7193C15.7761 39.7193 11.9074 38.4705 8.69922 36.332L16.2931 31.3115C17.4522 31.6744 18.6869 31.8702 19.9679 31.8702C20.0152 31.8702 20.0624 31.8699 20.1095 31.8694L26.3874 38.6781Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_07" opacity="0.3" d="M24.3574 39.235C22.9375 39.552 21.4602 39.7193 19.9434 39.7193C19.2861 39.7193 18.6364 39.6879 17.9954 39.6265L16.2383 31.3115C16.4755 31.3879 16.716 31.4572 16.9594 31.5191L24.3574 39.235Z" fill="black" fill-opacity="0.4"/>
|
||||
<path id="G_08" opacity="0.3" d="M27.5471 19.135L39.4359 16.3252C39.414 16.1983 39.3911 16.0719 39.367 15.9458H27.5471V19.135Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_09" opacity="0.3" d="M30.0187 23.7737L39.436 15.9589C39.4351 15.9545 39.4343 15.9502 39.4334 15.9458L27.8372 23.7737H30.0187Z" fill="black" fill-opacity="0.4"/>
|
||||
<path id="G_10" opacity="0.3" d="M35.5462 15.9458L26.9673 38.2699C30.3467 36.9788 33.2796 34.7825 35.4704 31.977L36.8263 15.9458H35.5462Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="G_11" opacity="0.3" d="M39.3486 15.9458L26.9673 38.2699C34.4249 35.4453 39.726 28.2432 39.726 19.8045C39.726 18.484 39.5961 17.1937 39.3486 15.9458Z" fill="black" fill-opacity="0.4"/>
|
||||
<g id="Cube base">
|
||||
<path d="M31.6154 0H39.4359V7.82793H31.6154V0Z" fill="#798FFF"/>
|
||||
<path d="M39.4359 7.82793H31.6154L27.5471 11.8869H35.078L39.4359 7.82793Z" fill="#798FFF"/>
|
||||
<path d="M31.6154 7.82793V0L27.5471 4.34885V11.8869L31.6154 7.82793Z" fill="#798FFF"/>
|
||||
</g>
|
||||
<path id="Cube_01" opacity="0.3" d="M39.436 6.7463V7.83837L35.1277 11.8871H34.2166V6.66846L39.436 6.7463Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="Cube_02" opacity="0.3" d="M27.5471 11.8869V4.23088L33.0071 3.76904L34.7964 4.24201L27.5471 11.8869Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="Cube_03" opacity="0.3" d="M31.0253 0.869629L27.5471 4.45183V11.8867H32.1866L31.0253 0.869629Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="Cube_04" opacity="0.3" d="M27.7534 4.04788L27.5471 4.27007V11.8871L31.9148 7.684L33.9593 7.60368L38.566 8.38018L38.1279 7.72417L32.6052 1.73975L27.7534 4.04788Z" fill="#D375FF"/>
|
||||
<path id="Cube_05" opacity="0.3" d="M31.8966 0H31.6089L30.4468 1.23821L31.8179 2.02946L31.8966 0Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="Cube_06" opacity="0.3" d="M37.9861 9.33119L35.2733 11.887H34.7964L35.2224 6.7774L37.3326 6.37842L37.9861 9.33119Z" fill="black" fill-opacity="0.6"/>
|
||||
<path id="Cube" d="M31.6067 7.82793H39.4359V0H31.6067V7.82793Z" fill="url(#paint0_linear_1509_5644)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1509_5644" x1="36.0617" y1="0" x2="36.0617" y2="7.82793" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="1" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 123 KiB |
@@ -1,6 +1,5 @@
|
||||
/* eslint-disable no-irregular-whitespace */
|
||||
import "./App.css";
|
||||
import LogoIcon from "./components/icons/LogoIcon";
|
||||
import BlendingHeader from "./components/blendings/BlendingHeader";
|
||||
import FeatureItem from "./components/FeatureItem";
|
||||
// import BlendVR from "./components/blendings/BlendVR";
|
||||
@@ -23,6 +22,7 @@ import VideoSliderMobile from "./components/VideoSliderMobile";
|
||||
// import { isMobile } from "react-device-detect";
|
||||
import IProject from "./types/IProject";
|
||||
import api from "./utils/api";
|
||||
import ArrowRightIcon from "./components/icons/ArrowRightIcon";
|
||||
|
||||
function App() {
|
||||
const [selectedVideo, setSelectedVideo] = useState<string>(
|
||||
@@ -53,7 +53,16 @@ function App() {
|
||||
<div className="relative conatiner mx-auto 2xl:max-w-screen-2xl">
|
||||
<div className="flex justify-between py-6 2xl:mb-28 xl:mb-[88px] sm:mb-12 mb-14">
|
||||
<div>
|
||||
<LogoIcon />
|
||||
<img
|
||||
src="/images/Logo.svg"
|
||||
alt=""
|
||||
className="sm:block hidden max-h-fit"
|
||||
/>
|
||||
<img
|
||||
src="/images/LogoMobile.svg"
|
||||
alt=""
|
||||
className="sm:hidden block"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex sm:gap-8 gap-2">
|
||||
<Button>
|
||||
@@ -104,10 +113,9 @@ function App() {
|
||||
|
||||
<div className="flex flex-col 2xl:gap-16 xl:gap-10 gap-8 2xl:mb-40 sm:mb-[120px] mb-20">
|
||||
<div className="grid xl:grid-cols-4 xl:gap-0 sm:gap-6 gap-4">
|
||||
<div className="col-span-3">
|
||||
<div className="col-span-full">
|
||||
<Heading2>
|
||||
Помогаем продавать
|
||||
<br />
|
||||
Помогаем продавать{" "}
|
||||
<span style={{ WebkitTextFillColor: "#fff" }}>
|
||||
проще и{" "}
|
||||
<span
|
||||
@@ -120,12 +128,32 @@ function App() {
|
||||
</span>
|
||||
</Heading2>
|
||||
</div>
|
||||
<p className="2xl:text-base text-sm">
|
||||
Мы собрали статистику за 10 лет работы
|
||||
<br />
|
||||
с застройщиками, реализовав 31 проект
|
||||
</p>
|
||||
<div className="relative flex items-center gap-4 col-span-full h-[400px]">
|
||||
<p className="2xl:text-2xl text-sm font-gilroy font-medium min-w-[496px] ">
|
||||
Мы собрали статистику{" "}
|
||||
<span className="text-gradient font-semibold">за 13 лет</span>{" "}
|
||||
работы
|
||||
<br />
|
||||
с застройщиками,{" "}
|
||||
<span className="text-gradient font-semibold">
|
||||
реализовав 31 проект
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<div className="">
|
||||
<img
|
||||
src="/images/Map.png"
|
||||
alt=""
|
||||
className="relative top-8 -z-10"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p className="text-gradient font-gilroy font-medium text-5xl w-fit">
|
||||
Graff.estate
|
||||
</p>
|
||||
|
||||
<div className="grid xl:grid-cols-4 sm:grid-cols-2 grid-cols-1 xl:gap-0 gap-3">
|
||||
<div className="px-8 py-4 flex flex-col gap-4 border-l border-[#3D425C]">
|
||||
<p className="2xl:text-base text-sm">На</p>
|
||||
@@ -296,7 +324,76 @@ function App() {
|
||||
<VideoSliderMobile />
|
||||
</div>
|
||||
|
||||
<div className="relative grid grid-cols-2 gap-4 2xl:mb-40 sm:mb-[120px] mb-20">
|
||||
<div className="relative 2xl:mb-40 sm:mb-[120px] mb-20">
|
||||
<div className="grid grid-cols-4 mb-16">
|
||||
<Heading2 className="col-span-3">
|
||||
Graff.estate stream —{" "}
|
||||
<span style={{ WebkitTextFillColor: "#fff" }}>
|
||||
удаленная демонстрация жилого комплекса
|
||||
</span>
|
||||
</Heading2>
|
||||
|
||||
<p>
|
||||
Высокий уровень графики и полное
|
||||
<br />
|
||||
погружение покупателя в процесс
|
||||
<br />
|
||||
выбора квартиры
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="relative mb-[120px]">
|
||||
<img src="/images/Stream.jpg" alt="" />
|
||||
|
||||
<div className="absolute bottom-10 left-10">
|
||||
<p className="flex flex-col gap-4 text-2xl font-gilroy font-medium">
|
||||
<span>
|
||||
Местоположение и устройство
|
||||
<br />
|
||||
значения не имеют
|
||||
</span>
|
||||
<span>Нужен только интернет</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between mb-16">
|
||||
<p className="text-5xl font-gilroy font-medium">
|
||||
Демонстрация технологии
|
||||
</p>
|
||||
<Button icon={<ArrowRightIcon />}>Узнать больше</Button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<StreamButton
|
||||
icon="/icons/Revolution.svg"
|
||||
title="МФК «Re:volution towers»"
|
||||
location="Россия, Екатеринбург"
|
||||
background="/images/stream/nks.jpg"
|
||||
link="https://stream.graff.tech/?build=nksJukovaDev&location=a1"
|
||||
/>
|
||||
<StreamButton
|
||||
icon="/icons/Residence.svg"
|
||||
title="ЖК «Life Резиденция»"
|
||||
location="Россия, Тюмень"
|
||||
background="/images/stream/liferes.jpg"
|
||||
link="https://stream.graff.tech/?build=lifeResidence&location=a1"
|
||||
/>
|
||||
<StreamButton
|
||||
icon="/icons/Aivaz.svg"
|
||||
title="ЖК «Айвазовский City»"
|
||||
location="Россия, Тюмень"
|
||||
background="/images/stream/aivaz.jpg"
|
||||
link="https://stream.graff.tech/?build=Ivazowsky&location=a1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="absolute -bottom-[2%] -right-[30%] -z-10 blur-[18px]">
|
||||
<BlendStream />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* <div className="relative grid grid-cols-2 gap-4 2xl:mb-40 sm:mb-[120px] mb-20">
|
||||
<div className="flex flex-col gap-8">
|
||||
<Heading2>
|
||||
Экскурсия
|
||||
@@ -314,7 +411,7 @@ function App() {
|
||||
<Button className="sm:block hidden">Записаться в шоу-рум</Button>
|
||||
</div>
|
||||
<div className=""></div>
|
||||
</div>
|
||||
</div> */}
|
||||
|
||||
<div className="grid grid-cols-2 gap-4 2xl:mb-40 sm:mb-[120px] mb-20">
|
||||
<div>
|
||||
@@ -342,61 +439,6 @@ function App() {
|
||||
<img src="/images/Analysis.jpg" alt="" className="w-full" />
|
||||
</div>
|
||||
|
||||
<div className="relative grid grid-cols-4 gap-4 mb-16">
|
||||
<div className="col-span-2 flex flex-col justify-between">
|
||||
<Heading2>
|
||||
Graff.estate stream —
|
||||
<br />
|
||||
<span style={{ WebkitTextFillColor: "#fff" }}>
|
||||
удаленная демонстрация
|
||||
<br />
|
||||
жилого комплекса
|
||||
</span>
|
||||
</Heading2>
|
||||
<Button>Узнать больше</Button>
|
||||
</div>
|
||||
<div className="flex flex-col gap-12">
|
||||
<p>
|
||||
Высокий уровень графики и полное погружение покупателя в процесс
|
||||
выбора квартиры
|
||||
</p>
|
||||
<img src="/images/Stream.jpg" alt="" />
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Местоположение и устройство значения не имеют. Нужен только
|
||||
интернет
|
||||
</p>
|
||||
</div>
|
||||
<div className="absolute top-[50%] -translate-y-[50%] left-0 -z-10 blur-[30px]">
|
||||
<BlendStream />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="2xl:mb-40 sm:mb-[120px] mb-20">
|
||||
<StreamButton
|
||||
icon="/icons/Revolution.svg"
|
||||
title="МФК «Re:volution towers»"
|
||||
location="Россия, Екатеринбург"
|
||||
background="/images/stream/nks.jpg"
|
||||
link="https://stream.graff.tech/?build=nksJukovaDev&location=a1"
|
||||
/>
|
||||
<StreamButton
|
||||
icon="/icons/Residence.svg"
|
||||
title="ЖК «Life Резиденция»"
|
||||
location="Россия, Тюмень"
|
||||
background="/images/stream/liferes.jpg"
|
||||
link="https://stream.graff.tech/?build=lifeResidence&location=a1"
|
||||
/>
|
||||
<StreamButton
|
||||
icon="/icons/Aivaz.svg"
|
||||
title="ЖК «Айвазовский City»"
|
||||
location="Россия, Тюмень"
|
||||
background="/images/stream/aivaz.jpg"
|
||||
link="https://stream.graff.tech/?build=Ivazowsky&location=a1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="relative flex flex-col gap-16 2xl:mb-40 sm:mb-[120px] mb-20">
|
||||
<div className="flex flex-col gap-8">
|
||||
<Heading2>
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
@font-face {
|
||||
font-family: 'Gilroy';
|
||||
src: url('Gilroy-Medium.eot');
|
||||
src: url('Gilroy-Medium.eot?#iefix') format('embedded-opentype'),
|
||||
url('Gilroy-Medium.woff2') format('woff2'),
|
||||
url('Gilroy-Medium.woff') format('woff'),
|
||||
url('Gilroy-Medium.ttf') format('truetype');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Gilroy';
|
||||
src: url('Gilroy-Semibold.eot');
|
||||
src: url('Gilroy-Semibold.eot?#iefix') format('embedded-opentype'),
|
||||
url('Gilroy-Semibold.woff2') format('woff2'),
|
||||
url('Gilroy-Semibold.woff') format('woff'),
|
||||
url('Gilroy-Semibold.ttf') format('truetype');
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@@ -19,13 +19,15 @@ function Button({
|
||||
<button
|
||||
onClick={handleClick}
|
||||
className={`group relative px-6 py-2 rounded-full ${
|
||||
(color === "primary" && "bg-gradient") ||
|
||||
(color === "secondary" && "outline outline-1 outline-[#3D425C]")
|
||||
} flex justify-between items-center overflow-hidden w-fit ${className}`}
|
||||
(color === "primary" ? "bg-gradient" : "") ||
|
||||
(color === "secondary" ? "outline outline-1 outline-[#3D425C]" : "")
|
||||
} ${
|
||||
icon ? "pr-4" : ""
|
||||
} flex justify-between gap-1 items-center overflow-hidden w-fit ${className}`}
|
||||
>
|
||||
<span className="group-hover:opacity-10 opacity-0 bg-black transition-opacity absolute top-0 left-0 w-full h-full"></span>
|
||||
<span className="relative font-gilroy font-medium">{children}</span>
|
||||
{icon}
|
||||
<span className="relative">{icon}</span>
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ function Calc() {
|
||||
<div className="grid grid-cols-2">
|
||||
<p
|
||||
className={`2xl:text-5xl text-[32px] font-gilroy font-medium flex items-end gap-1.5 w-fit ${
|
||||
isToolEnabled && "text-gradient"
|
||||
isToolEnabled ? "text-gradient" : ""
|
||||
}`}
|
||||
>
|
||||
<span className="leading-none">
|
||||
@@ -296,7 +296,7 @@ function Calc() {
|
||||
<div className="grid grid-cols-2">
|
||||
<p
|
||||
className={`2xl:text-5xl text-[32px] font-gilroy font-medium flex items-end gap-1.5 w-fit ${
|
||||
isToolEnabled && "text-gradient"
|
||||
isToolEnabled ? "text-gradient" : ""
|
||||
}`}
|
||||
>
|
||||
<span className="leading-none">
|
||||
@@ -304,7 +304,7 @@ function Calc() {
|
||||
</span>
|
||||
<span
|
||||
className={`${
|
||||
isToolEnabled && "text-gradient"
|
||||
isToolEnabled ? "text-gradient" : ""
|
||||
} 2xl:text-2xl text-xl leading-none`}
|
||||
>
|
||||
млн руб.
|
||||
@@ -327,56 +327,6 @@ function Calc() {
|
||||
<div className="2xl:px-8 2xl:py-6 px-6 py-4 border border-l-0 border-[#3D425C] flex flex-col gap-4">
|
||||
<p className="text-sm">Статистика продаж</p>
|
||||
<div className="flex flex-col 2xl:gap-3 gap-1.5">
|
||||
{/* <div className="grid grid-cols-3 items-center gap-4">
|
||||
<p className="w-fit 2xl:text-sm text-xs">100%</p>
|
||||
<div className=" bg-[#212431] rounded-full flex justify-center">
|
||||
<div className="2xl:p-3.5 p-2 bg-gradient rounded-full w-full">
|
||||
<p className="text-center">{consultations}</p>
|
||||
</div>
|
||||
</div>
|
||||
<p className="2xl:text-sm text-xs text-[#8088A7] whitespace-nowrap">
|
||||
Консультаций в офисе
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-4">
|
||||
<p className="w-[36px] 2xl:text-sm text-xs">
|
||||
{isToolEnabled ? 48 : 30}%
|
||||
</p>
|
||||
<div className="w-[284px] bg-[#212431] rounded-full flex justify-center">
|
||||
<div
|
||||
className={`2xl:p-3.5 p-2 bg-gradient rounded-full transition-all w-[50%] ${
|
||||
isToolEnabled ? "w-[60%]" : "w-[50%]"
|
||||
}`}
|
||||
>
|
||||
<p className="text-center">
|
||||
{isToolEnabled ? reservation : oldReservation}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p className="2xl:text-sm text-xs text-[#8088A7] whitespace-nowrap">
|
||||
Бронь квартиры
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-4">
|
||||
<p className="w-[36px] 2xl:text-sm text-xs">
|
||||
{isToolEnabled ? 42 : 30}%
|
||||
</p>
|
||||
<div className="w-[284px] bg-[#212431] rounded-full flex justify-center">
|
||||
<div
|
||||
className={`2xl:p-3.5 p-2 bg-gradient rounded-full transition-all ${
|
||||
isToolEnabled ? "w-[32%]" : "w-[22%]"
|
||||
}`}
|
||||
>
|
||||
<p className="text-center">
|
||||
{isToolEnabled ? sales : oldSales}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p className="2xl:text-sm text-xs text-[#8088A7]">Продажа</p>
|
||||
</div> */}
|
||||
|
||||
<div className="flex gap-4">
|
||||
<div className="flex flex-col 2xl:gap-3 gap-1.5 justify-around">
|
||||
<p className="2xl:text-sm text-xs">100%</p>
|
||||
@@ -389,14 +339,20 @@ function Calc() {
|
||||
</div>
|
||||
<div className="w-full flex flex-col 2xl:gap-3 gap-1.5 justify-around">
|
||||
<div className="bg-[#212431] rounded-full flex justify-center">
|
||||
<div className="bg-gradient 2xl:py-3.5 py-2 rounded-full w-full">
|
||||
<div
|
||||
className={`2xl:py-3.5 py-2 rounded-full w-full transition-all ${
|
||||
isToolEnabled ? "bg-gradient" : "bg-[#52587A]"
|
||||
}`}
|
||||
>
|
||||
<p className="text-center">{consultations}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bg-[#212431] rounded-full flex justify-center">
|
||||
<div
|
||||
className={`bg-gradient 2xl:py-3.5 py-2 rounded-full ${
|
||||
isToolEnabled ? "w-[60%]" : "w-[50%]"
|
||||
className={`2xl:py-3.5 py-2 rounded-full transition-all ${
|
||||
isToolEnabled
|
||||
? "w-[60%] bg-gradient"
|
||||
: "w-[50%] bg-[#52587A]"
|
||||
}`}
|
||||
>
|
||||
<p className="text-center">
|
||||
@@ -406,8 +362,10 @@ function Calc() {
|
||||
</div>
|
||||
<div className="bg-[#212431] rounded-full flex justify-center">
|
||||
<div
|
||||
className={`bg-gradient 2xl:py-3.5 py-2 rounded-full ${
|
||||
isToolEnabled ? "w-[32%]" : "w-[22%]"
|
||||
className={`2xl:py-3.5 py-2 rounded-full transition-all ${
|
||||
isToolEnabled
|
||||
? "w-[32%] bg-gradient"
|
||||
: "w-[22%] bg-[#52587A]"
|
||||
}`}
|
||||
>
|
||||
<p className="text-center">
|
||||
|
||||
@@ -48,7 +48,7 @@ function ProjectCard({
|
||||
<ProgressPie value={stagePercentage} />
|
||||
</div>
|
||||
) : (
|
||||
<div className="bg-gradient px-3 py-2 rounded-full w-fit">
|
||||
<div className="bg-gradient py-2.5 px-4 rounded-full">
|
||||
<p className="font-gilroy font-medium leading-none">
|
||||
{releaseYear}
|
||||
</p>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import React from "react";
|
||||
|
||||
function BlendingCalc() {
|
||||
return (
|
||||
<svg
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@import url("https://fonts.googleapis.com/css2?family=Inter&display=swap");
|
||||
@import url("https://gistcdn.githack.com/mfd/09b70eb47474836f25a21660282ce0fd/raw/e06a670afcb2b861ed2ac4a1ef752d062ef6b46b/Gilroy.css");
|
||||
@import url("./assets/fonts/Gilroy/Gilroy.css");
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
|
||||
@@ -4,13 +4,11 @@ import { create } from "zustand";
|
||||
interface ModalState {
|
||||
modal: ReactNode | null;
|
||||
setModal: (modal: ReactNode) => void;
|
||||
removeModal: () => void;
|
||||
}
|
||||
|
||||
const useModalStore = create<ModalState>((set) => ({
|
||||
modal: null,
|
||||
setModal: (modal) => set({ modal }),
|
||||
removeModal: set({ modal: null }),
|
||||
}));
|
||||
|
||||
export default useModalStore;
|
||||
|
||||
@@ -41,15 +41,15 @@ router.post("/", upload.single("file"), async (req, res) => {
|
||||
|
||||
await sharp(req.file.buffer)
|
||||
.resize({
|
||||
width: 512,
|
||||
height: 512,
|
||||
width: 728,
|
||||
height: 728,
|
||||
fit: "inside",
|
||||
withoutEnlargement: true,
|
||||
})
|
||||
.jpeg({ quality: 90 })
|
||||
.toFile(`uploads/${filename}`);
|
||||
|
||||
return res.json({ file: `http://192.168.1.170:3000/upload/${filename}` });
|
||||
return res.json({ file: `http://192.168.1.171:3000/upload/${filename}` });
|
||||
} catch (error) {
|
||||
if (error instanceof Error) {
|
||||
return res.json({ error: error.message });
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |