diff --git a/client/public/images/1135.jpg b/client/public/images/1135.jpg deleted file mode 100644 index f042b35..0000000 Binary files a/client/public/images/1135.jpg and /dev/null differ diff --git a/client/public/images/cards/1.jpg b/client/public/images/cards/1.jpg index 04809ad..84752ec 100644 Binary files a/client/public/images/cards/1.jpg and b/client/public/images/cards/1.jpg differ diff --git a/client/public/images/cards/10.jpg b/client/public/images/cards/10.jpg index d3d27b4..1bb7cfb 100644 Binary files a/client/public/images/cards/10.jpg and b/client/public/images/cards/10.jpg differ diff --git a/client/public/images/cards/11.jpg b/client/public/images/cards/11.jpg index 7ec380d..efafd73 100644 Binary files a/client/public/images/cards/11.jpg and b/client/public/images/cards/11.jpg differ diff --git a/client/public/images/cards/12.jpg b/client/public/images/cards/12.jpg index acbc9c1..9169b10 100644 Binary files a/client/public/images/cards/12.jpg and b/client/public/images/cards/12.jpg differ diff --git a/client/public/images/cards/13.jpg b/client/public/images/cards/13.jpg index cd8b425..f60c56b 100644 Binary files a/client/public/images/cards/13.jpg and b/client/public/images/cards/13.jpg differ diff --git a/client/public/images/cards/2.jpg b/client/public/images/cards/2.jpg index 4849219..8bcfb67 100644 Binary files a/client/public/images/cards/2.jpg and b/client/public/images/cards/2.jpg differ diff --git a/client/public/images/cards/3.jpg b/client/public/images/cards/3.jpg index 49a5ee3..34306f8 100644 Binary files a/client/public/images/cards/3.jpg and b/client/public/images/cards/3.jpg differ diff --git a/client/public/images/cards/4.jpg b/client/public/images/cards/4.jpg index 7938cb0..937b035 100644 Binary files a/client/public/images/cards/4.jpg and b/client/public/images/cards/4.jpg differ diff --git a/client/public/images/cards/5.jpg b/client/public/images/cards/5.jpg index b6bb80b..98abbd9 100644 Binary files a/client/public/images/cards/5.jpg and b/client/public/images/cards/5.jpg differ diff --git a/client/public/images/cards/6.jpg b/client/public/images/cards/6.jpg index 50cf33b..ec5c678 100644 Binary files a/client/public/images/cards/6.jpg and b/client/public/images/cards/6.jpg differ diff --git a/client/public/images/cards/7.jpg b/client/public/images/cards/7.jpg index 4f83a03..6dd46e0 100644 Binary files a/client/public/images/cards/7.jpg and b/client/public/images/cards/7.jpg differ diff --git a/client/public/images/cards/8.jpg b/client/public/images/cards/8.jpg index 8a6632e..e9a7bef 100644 Binary files a/client/public/images/cards/8.jpg and b/client/public/images/cards/8.jpg differ diff --git a/client/public/images/cards/9.jpg b/client/public/images/cards/9.jpg index 0e30a4b..6836649 100644 Binary files a/client/public/images/cards/9.jpg and b/client/public/images/cards/9.jpg differ diff --git a/client/public/images/compressor (1)/11.jpg b/client/public/images/compressor (1)/11.jpg new file mode 100644 index 0000000..efafd73 Binary files /dev/null and b/client/public/images/compressor (1)/11.jpg differ diff --git a/client/public/images/compressor (1)/12.jpg b/client/public/images/compressor (1)/12.jpg new file mode 100644 index 0000000..9169b10 Binary files /dev/null and b/client/public/images/compressor (1)/12.jpg differ diff --git a/client/public/images/compressor (1)/13.jpg b/client/public/images/compressor (1)/13.jpg new file mode 100644 index 0000000..f60c56b Binary files /dev/null and b/client/public/images/compressor (1)/13.jpg differ diff --git a/client/public/images/compressor/1.jpg b/client/public/images/compressor/1.jpg new file mode 100644 index 0000000..84752ec Binary files /dev/null and b/client/public/images/compressor/1.jpg differ diff --git a/client/public/images/compressor/10.jpg b/client/public/images/compressor/10.jpg new file mode 100644 index 0000000..1bb7cfb Binary files /dev/null and b/client/public/images/compressor/10.jpg differ diff --git a/client/public/images/compressor/2.jpg b/client/public/images/compressor/2.jpg new file mode 100644 index 0000000..8bcfb67 Binary files /dev/null and b/client/public/images/compressor/2.jpg differ diff --git a/client/public/images/compressor/3.jpg b/client/public/images/compressor/3.jpg new file mode 100644 index 0000000..34306f8 Binary files /dev/null and b/client/public/images/compressor/3.jpg differ diff --git a/client/public/images/compressor/4.jpg b/client/public/images/compressor/4.jpg new file mode 100644 index 0000000..937b035 Binary files /dev/null and b/client/public/images/compressor/4.jpg differ diff --git a/client/public/images/compressor/5.jpg b/client/public/images/compressor/5.jpg new file mode 100644 index 0000000..98abbd9 Binary files /dev/null and b/client/public/images/compressor/5.jpg differ diff --git a/client/public/images/compressor/6.jpg b/client/public/images/compressor/6.jpg new file mode 100644 index 0000000..ec5c678 Binary files /dev/null and b/client/public/images/compressor/6.jpg differ diff --git a/client/public/images/compressor/7.jpg b/client/public/images/compressor/7.jpg new file mode 100644 index 0000000..6dd46e0 Binary files /dev/null and b/client/public/images/compressor/7.jpg differ diff --git a/client/public/images/compressor/8.jpg b/client/public/images/compressor/8.jpg new file mode 100644 index 0000000..e9a7bef Binary files /dev/null and b/client/public/images/compressor/8.jpg differ diff --git a/client/public/images/compressor/9.jpg b/client/public/images/compressor/9.jpg new file mode 100644 index 0000000..6836649 Binary files /dev/null and b/client/public/images/compressor/9.jpg differ diff --git a/client/public/images/efficiency.jpg b/client/public/images/efficiency.jpg new file mode 100644 index 0000000..b85c2ae Binary files /dev/null and b/client/public/images/efficiency.jpg differ diff --git a/client/src/App.tsx b/client/src/App.tsx index 5060471..2653e13 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -4,30 +4,14 @@ import { FormEvent, Suspense, useEffect, useRef, useState } from "react"; import PieChart from "./components/PieChart/PieChart"; import { Model } from "./components/VRHemlet"; import Calc from "./components/Calc"; -import Slider from "./components/Slider/Slider"; -import Map from "./components/Map"; -import { delay, motion, useInView } from "framer-motion"; +import { motion, useInView } from "framer-motion"; import InputMask from "react-input-mask"; import api from "./utils/api"; -import { OrbitControls, PerspectiveCamera, Wireframe } from "@react-three/drei"; -import ComplexCard from "./components/ComplexCard"; -import Map2 from "./components/Map2"; import FeatureCard from "./components/FeatureCard"; +import RelevantExpCard from "./components/RelevantExpCard"; +import Title from "./components/Title"; function App() { - function getAccel() { - DeviceMotionEvent.requestPermission().then((response) => { - if (response == "granted") { - console.log("accelerometer permission granted"); - alert("1"); - } - }); - } - - useEffect(() => { - getAccel(); - }, []); - const parallaxRef = useRef(null); const [fullname, setFullname] = useState(""); @@ -38,7 +22,7 @@ function App() { const [mapPosition, setMapPosition] = useState("29% 100%"); const [mapCity, setMapCity] = useState("Тюмень"); - const [isShowMoreComplexCards, setIsShowMoreComplexCards] = + const [isShowRelevantExpCards, setIsShowRelevantExpCards] = useState(false); const helmetRef = useRef(null); @@ -171,11 +155,11 @@ function App() {
- +
-
+
-

+ Эффективность инстумента <br /> продаж в цифрах - </p> +

Мы собрали статистику за 10 лет работы
с застройщиками, реализовав 21 проект

-
-
-
+
+
+
-

- 10 +

До

+
+ + 2 + + + раз + +
+

+ сокращает время +
+ реализации проекта

-

что-то на умном

+
-

- 26 -

-

+

До

+
+ + 26 + + {/* раз */} +
+

что-то на умном
в две строчки

+
-

- 32% -

-

+

На

+
+ + 18% + + {/* раз */} +
+

что-то на умном
в две строчки

+
-

- 12% -

-

+

На

+
+ + 12% + + {/* раз */} +
+

что-то на умном
в две строчки

-
-
- -
+
+
-
- Функциональные возможности -
+ Функциональные возможности
Интерактивная презентация увлекает покупателей и предоставляет актуальную информацию о жилом комплексе, отвечая на все @@ -258,7 +270,7 @@ function App() {
{/*
*/} {/* */} -
+
setSelectedFeatureImageIndex(0)} @@ -339,9 +351,7 @@ function App() { transition={{ delay: 2.5, duration: 1 }} className="lg:space-y-16 space-y-8" > -

- Экскурсия в виртуальной реальности -

+ Экскурсия в виртуальной реальности

Клиенту достаточно надеть шлем виртуальной реальности, чтобы прогуляться, оценить и ощутить пространство. Он полностью @@ -360,16 +370,10 @@ function App() {

-
+
-
- Анализируем -
- поведение -
- пользователей -
-
+ Анализируем поведение пользователей +

Система внутренней аналитики программы собирает информацию о поведении пользователя и эффективности работы менеджеров для @@ -382,162 +386,180 @@ function App() {

-
-
-
-

+

+
+
+

Конверсия менеджеров в брони

-
- +
+ К. Н. Федоров -
-
+
+
- 45% + 45%
-
- +
+ И. Ф. Яковлева -
-
+
+
- 30% + 30%
-
- +
+ А. М. Ташева -
+
- 20% + 20%
-
-

+

+

Популярные типы квартир, %

-
+
+
-

Студии

+

+ Студии +

-

1-к. квартиры

+

+ 1-к. квартиры +

-

2-к. квартиры

+

+ 2-к. квартиры +

-

3-к. квартиры

+

+ 3-к. квартиры +

-

4-к. квартиры

+

+ 4-к. квартиры +

-
-

+

+

Воронка продаж

-
-
+
+
Сеансы
- 100% + 100%
-
-
+
+
В избранное
- + 93,47%
-
-
+
+
Брони
- + 45,68%
-
-
+
+
Продажи
- + 29,13%
-
-
+ +
+
-

12

+

12

минут

-

Среднее время сеанса

+

+ Среднее время сеанса +

-
+
-

856

+

856

{/*

минут

*/}
-

+

Коммерческих предложений сформировано

-
+
-

12,41%

+

12,41%

{/*

минут

*/}
-

Конверсия из сеанса в бронь

+

+ Конверсия из сеанса в бронь +

-
+
-

132,1

+

132,1

млн. р.

-

Получено через Graff.estate

+

+ Получено через Graff.estate +

@@ -545,86 +567,53 @@ function App() {
-
- -
-
-
-

- Инструмент продаж поможет вам продавать удаленно -

-

- Покажите все преимущества вашего жилого комплекса клиенту из - любого конца мира. Местоположение и устройство значения не - имеют. -
- Нужен только интернет. -

-

- Высокий уровень графики и полное погружение покупателя -
в процесс выбора квартиры. -

+
+
+
+

+ Инструмент продаж поможет вам продавать удаленно +

+

+ Покажите все преимущества вашего жилого комплекса клиенту из + любого конца мира. Местоположение и устройство значения не + имеют. +
+ Нужен только интернет. +

+

+ Высокий уровень графики и полное погружение покупателя +
в процесс выбора квартиры. +

+
+
+ +
-
- - - + +
+
@@ -633,16 +622,10 @@ function App() {
-
- Оцените -
- эффективность -
- интерактивного -
- инструмента продаж -
-
+ + Оцените эффективность интерактивного инструмента продаж + +
Мы изучили отраслевую аналитику на рынке продаж новых квартир и на основе данных собрали калькулятор эффективности продукта.
@@ -659,29 +642,117 @@ function App() {
-
-
-
-
-

ЖК «Life Резиденция»

-

Россия, Тюмень.

+
+ Релевантный опыт +
+
+ + + + + + {isShowRelevantExpCards && ( + <> + + + + + + + + + + + )}
+ {!isShowRelevantExpCards && ( + + )}
-
+
-

+

Свяжитесь с нами

-

+

Хотите увеличить конверсию?
Давайте обсудим детали! @@ -695,14 +766,14 @@ function App() {

setFullname(e.target.value)} /> @@ -710,13 +781,13 @@ function App() {
setCompany(e.target.value)} /> @@ -726,14 +797,14 @@ function App() {
setEmail(e.target.value)} /> @@ -741,7 +812,7 @@ function App() {
@@ -749,7 +820,7 @@ function App() { maskChar={null} mask={"+7 (999) 999-99-99"} type="text" - className="text-xl p-4 bg-[#2E3038] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full" + className="text-xl p-4 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full" value={phone} onChange={(e) => setPhone(e.target.value)} /> @@ -757,17 +828,18 @@ function App() {
- {/* */} -
diff --git a/client/src/components/Calc.tsx b/client/src/components/Calc.tsx index 2341dc6..df00a39 100644 --- a/client/src/components/Calc.tsx +++ b/client/src/components/Calc.tsx @@ -128,8 +128,6 @@ function Calc() { if (diffImplementationTime) { const lastIndex = Number(diffImplementationTime.toString().slice(-2)); - console.log(lastIndex); - if (lastIndex === 1) { setDiffImplementationTimeCase("месяц"); } else if (lastIndex > 1 && lastIndex < 5) { @@ -296,20 +294,20 @@ function Calc() { Результаты расчета

-
-
+
+

Срок реализации

{implementationTime}

-

{implementationTimeCase}

+

{implementationTimeCase}

{isEnabled && (

@@ -323,19 +321,19 @@ function Calc() {

-
+

Месячный доход

{profitPerMonth}

-

млн. р.

+

млн. р.

{isEnabled && (

diff --git a/client/src/components/FeatureCard.tsx b/client/src/components/FeatureCard.tsx index 86bc0bf..b377863 100644 --- a/client/src/components/FeatureCard.tsx +++ b/client/src/components/FeatureCard.tsx @@ -19,11 +19,11 @@ function FeatureCard({ text, image, handleMouseEnter }: IFeatureCard) { fill="none" xmlns="http://www.w3.org/2000/svg" > - + @@ -37,7 +37,7 @@ function FeatureCard({ text, image, handleMouseEnter }: IFeatureCard) { -

{text}

+

{text}

{/* */}
); diff --git a/client/src/components/PieChart/PieChart.tsx b/client/src/components/PieChart/PieChart.tsx index a0179a8..f5fa49b 100644 --- a/client/src/components/PieChart/PieChart.tsx +++ b/client/src/components/PieChart/PieChart.tsx @@ -3,12 +3,12 @@ import "./PieChart.css"; function PieChart() { return ( -
- 36,27% - 6,22% - 9,95% +
+ 36,27% + 6,22% + 9,95% 17,93% - 29,64% + 29,64%
); } diff --git a/client/src/components/RelevantExpCard.tsx b/client/src/components/RelevantExpCard.tsx new file mode 100644 index 0000000..4bd6bfe --- /dev/null +++ b/client/src/components/RelevantExpCard.tsx @@ -0,0 +1,40 @@ +import React from "react"; + +interface IRelevantExpCard { + image: string; + name: string; + location: string; +} + +function RelevantExpCard({ image, name, location }: IRelevantExpCard) { + return ( +
+
+
+ + + +
+
+
+

{name}

+

{location}

+
+
+ ); +} + +export default RelevantExpCard; diff --git a/client/src/components/SearchableSelect.tsx b/client/src/components/SearchableSelect.tsx index 93c6a45..833f92f 100644 --- a/client/src/components/SearchableSelect.tsx +++ b/client/src/components/SearchableSelect.tsx @@ -83,7 +83,7 @@ function SearchableSelect({ diff --git a/client/src/components/Title.tsx b/client/src/components/Title.tsx new file mode 100644 index 0000000..43a392d --- /dev/null +++ b/client/src/components/Title.tsx @@ -0,0 +1,15 @@ +import React, { Children } from "react"; + +interface ITitle { + children: React.ReactNode; +} + +function Title({ children }: ITitle) { + return ( +

+ {children} +

+ ); +} + +export default Title; diff --git a/client/tailwind.config.js b/client/tailwind.config.js index d37737f..614c86b 100644 --- a/client/tailwind.config.js +++ b/client/tailwind.config.js @@ -1,12 +1,8 @@ /** @type {import('tailwindcss').Config} */ export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], theme: { extend: {}, }, plugins: [], -} - +};