diff --git a/client/src/App.tsx b/client/src/App.tsx index 6fbcda7..3272957 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,15 +1,11 @@ /* eslint-disable no-irregular-whitespace */ import "./App.css"; import LogoIcon from "./components/icons/LogoIcon"; -import showreelImage from "./assets/images/showreel.jpg"; -import Blending1 from "./components/blendings/Blending1"; +import BlendingHeader from "./components/blendings/BlendingHeader"; import FeatureItem from "./components/FeatureItem"; import BlendVR from "./components/blendings/BlendVR"; import BlendStream from "./components/blendings/BlendStream"; import StreamButton from "./components/StreamButton"; -import CalcSelect from "./components/CalcSelect"; -import ArrowRightIcon from "./components/icons/ArrowRightIcon"; -import Slider from "react-rangeslider"; import "react-rangeslider/lib/index.css"; import "./components/RangeSlider.css"; import { useState } from "react"; @@ -18,24 +14,29 @@ import MoreProjectButton from "./components/MoreProjectButton"; import ExampleCard from "./components/ExampleCard"; import FeatureVideoViewBox from "./components/FeatureVideoViewBox"; import Button from "./components/Button"; -import regionsData from "./assets/regionsData2.json"; +import Calc from "./components/Calc"; +import BlendingCalc from "./components/blendings/BlendingCalc"; +import BlendingClients from "./components/blendings/BlendingClients"; +import Heading2 from "./components/Headings/Heading2"; +import PlayIcon from "./components/icons/PlayIcon"; function App() { - const [inPersonConsultations, setInPersonConsultations] = - useState(100); const [selectedVideo, setSelectedVideo] = useState( "https://graff.estate/videos/features/virtual_tour.mp4" ); return ( -
+
-
+
-
- +
+
-
-

- Интерактивный инструмент продаж{" "} +
+

+ Интерактивный инструмент +
+ продаж{" "} для застройщиков

-

+

Помогаем девелоперам эффективно демонстрировать свой объект. Продавать больше и быстрее.

- +
-
- +
+
-
-
-

- Помогаем продавать{" "} - - проще и{" "} - - быстрее +
+
+
+ + Помогаем продавать +
+ + проще и{" "} + + быстрее + {" "} + дороже - дороже - -

-

+ +

+

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

-
+
-

На

-

- 18% +

На

+

+ 18 + + % + +

+

+ увеличивает конверсию из консультации в бронирование

-

увеличивает конверсию из консультации в бронирование

-

На

-

- 12% +

На

+

+ 12 + + % + +

+

+ увеличивает конверсию из бронирования в продажу

-

увеличивает конверсию из бронирования в продажу

-

До

-

- 2раз +

До

+

+ 2 + + раз +

-

+

сокращает время
реализации проекта @@ -119,17 +146,22 @@ function App() {

-

До

-

- 4раз +

До

+

+ 4 + + раз + +

+

+ сокращает время на подготовку рекламных материалов

-

сокращает время на подготовку рекламных материалов

-
-
+
+
-
+
-

+ Функциональные
возможности -

+

Интерактивная презентация увлекает покупателей и предоставляет актуальную информацию о жилом комплексе, отвечая на все вопросы @@ -239,7 +271,7 @@ function App() {

-
+

Экскурсия{" "} @@ -248,13 +280,6 @@ function App() {

- {/* */} -
@@ -267,13 +292,22 @@ function App() { Он полностью погружается в воссозданную реальность, чувствует удобство и уровень комфорта

-
@@ -283,7 +317,7 @@ function App() {
-
+

@@ -340,7 +374,7 @@ function App() {

-
+
-
+

Оцените эффективность интерактивного @@ -386,154 +420,14 @@ function App() {

-
-
- regionItem.name)} - handleSelect={(option) => console.log(option)} - /> -
-

- Установлены усредненные показатели по региону. -
- Источник:{" "} - - наш.дом.рф - -

-
-
-
-

- Средняя площадь -
- жилья в комплексе, м2 -

-

1 500

-
-
-

- Средняя площадь -
- квартиры, м2 -

-

100

-
-
-

- Средняя стоимость -
- одного м2, тыс. руб. -

-

137

-
-
+ -
-
-
-

- Очных консультаций в месяц -

-

- {inPersonConsultations} -

-
-
- setInPersonConsultations(value)} - tooltip={false} - /> -
- - -
- -
-
-
-

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

-
-

- 12 - месяцев -

-

- На 24 месяца вы - сократили срок -
- реализации проекта -

-
-
- -
-

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

-
-

- 480,2 - млн руб. -

-

- На 200 млн руб. в - месяц вы заработали больше -

-
-
-
-
-

Статистика продаж

-
-
-

100%

-
-
-

100

-
-
-

- Консультаций в офисе -

-
- -
-

48%

-
-
-

30

-
-
-

Бронь квартиры

-
- -
-

32%

-
-
-

10

-
-
-

Продажа

-
-
-
-
+
+
-
+

Проекты

@@ -593,12 +487,15 @@ function App() {
-
+

Наши клиенты{" "} в девелопменте

+
+ +
diff --git a/client/src/assets/regionsData.json b/client/src/assets/regionsData.json index f64152d..7d4018f 100644 --- a/client/src/assets/regionsData.json +++ b/client/src/assets/regionsData.json @@ -1,650 +1,555 @@ [ { "id": 1, - "totalArea": 328326.4, - "flatCount": 7433, - "priceAvg": 71655, - "objSquareLivingAmt": 328326.36, - "objCnt": 49 + "name": "Алтайский край", + "areaInComplex": 8384, + "areaApartment": 50, + "costPerSquare": 83 }, { "id": 2, - "totalArea": 2667309.0, - "flatCount": 55441, - "priceAvg": 98441, - "objSquareLivingAmt": 2667646.9, - "objCnt": 247 + "name": "Амурская область", + "areaInComplex": 5837, + "areaApartment": 48, + "costPerSquare": 131 }, { "id": 3, - "totalArea": 384171.1, - "flatCount": 6932, - "priceAvg": 70582, - "objSquareLivingAmt": 384171.07, - "objCnt": 62 + "name": "Архангельская область", + "areaInComplex": 6566, + "areaApartment": 44, + "costPerSquare": 101 }, { "id": 4, - "totalArea": 51068.6, - "flatCount": 1132, - "priceAvg": 89784, - "objSquareLivingAmt": 51068.63, - "objCnt": 11 + "name": "Астраханская область", + "areaInComplex": 11851, + "areaApartment": 50, + "costPerSquare": 96 }, { "id": 5, - "totalArea": 283714.4, - "flatCount": 4571, - "priceAvg": 34194, - "objSquareLivingAmt": 283714.37, - "objCnt": 33 + "name": "Белгородская область", + "areaInComplex": 4570, + "areaApartment": 51, + "costPerSquare": 86 + }, + { + "id": 6, + "name": "Брянская область", + "areaInComplex": 7333, + "areaApartment": 59, + "costPerSquare": 60 }, { "id": 7, - "totalArea": 302164.8, - "flatCount": 4254, - "priceAvg": 62048, - "objSquareLivingAmt": 302164.81, - "objCnt": 69 + "name": "Владимирская область", + "areaInComplex": 7509, + "areaApartment": 56, + "costPerSquare": 54 }, { "id": 8, - "totalArea": 40553.1, - "flatCount": 676, - "priceAvg": 52949, - "objSquareLivingAmt": 40553.11, - "objCnt": 9 + "name": "Волгоградская область", + "areaInComplex": 7378, + "areaApartment": 52, + "costPerSquare": 76 }, { "id": 9, - "totalArea": 66177.7, - "flatCount": 1025, - "priceAvg": 73179, - "objSquareLivingAmt": 66177.73, - "objCnt": 6 + "name": "Вологодская область", + "areaInComplex": 5235, + "areaApartment": 51, + "costPerSquare": 54 }, { "id": 10, - "totalArea": 169525.7, - "flatCount": 3441, - "priceAvg": 107511, - "objSquareLivingAmt": 169525.71, - "objCnt": 26 + "name": "Воронежская область", + "areaInComplex": 13002, + "areaApartment": 48, + "costPerSquare": 77 }, { "id": 11, - "totalArea": 83689.5, - "flatCount": 2005, - "priceAvg": 80559, - "objSquareLivingAmt": 83689.47, - "objCnt": 9 + "name": "Город Москва", + "areaInComplex": 23218, + "areaApartment": 53, + "costPerSquare": 296 }, { "id": 12, - "totalArea": 313555.9, - "flatCount": 5252, - "priceAvg": 62782, - "objSquareLivingAmt": 313555.87, - "objCnt": 51 + "name": "Город Санкт-Петербург", + "areaInComplex": 16904, + "areaApartment": 43, + "costPerSquare": 202 }, { "id": 13, - "totalArea": 187186.1, - "flatCount": 3609, - "priceAvg": 72793, - "objSquareLivingAmt": 187186.12, - "objCnt": 25 + "name": "Город Севастополь", + "areaInComplex": 5908, + "areaApartment": 47, + "costPerSquare": 136 }, { "id": 14, - "totalArea": 395419.9, - "flatCount": 7983, - "priceAvg": 120368, - "objSquareLivingAmt": 395419.87, - "objCnt": 55 + "name": "Забайкальский край", + "areaInComplex": 7088, + "areaApartment": 48, + "costPerSquare": 129 }, { "id": 15, - "totalArea": 314864.7, - "flatCount": 4873, - "priceAvg": 71655, - "objSquareLivingAmt": 314864.74, - "objCnt": 50 + "name": "Ивановская область", + "areaInComplex": 6594, + "areaApartment": 58, + "costPerSquare": 60 }, { "id": 16, - "totalArea": 2270183.8, - "flatCount": 44495, - "priceAvg": 135012, - "objSquareLivingAmt": 2270183.83, - "objCnt": 234 + "name": "Иркутская область", + "areaInComplex": 5067, + "areaApartment": 51, + "costPerSquare": 103 }, { "id": 17, - "totalArea": 92368.1, - "flatCount": 2082, - "priceAvg": 123219, - "objSquareLivingAmt": 92368.12, - "objCnt": 29 + "name": "Кабардино-Балкарская Республика", + "areaInComplex": 4379, + "areaApartment": 71, + "costPerSquare": 62 }, { "id": 18, - "totalArea": 1515583.9, - "flatCount": 30624, - "priceAvg": 82633, - "objSquareLivingAmt": 328326.36, - "objCnt": 49 + "name": "Калининградская область", + "areaInComplex": 7209, + "areaApartment": 56, + "costPerSquare": 87 }, { "id": 19, - "totalArea": 272158.0, - "flatCount": 5265, - "priceAvg": 67283, - "objSquareLivingAmt": 272157.99, - "objCnt": 50 + "name": "Калужская область", + "areaInComplex": 7833, + "areaApartment": 55, + "costPerSquare": 88 }, { "id": 20, - "totalArea": 244186.6, - "flatCount": 3465, - "priceAvg": 57603, - "objSquareLivingAmt": 244186.6, - "objCnt": 12 + "name": "Карачаево-Черкесская Республика", + "areaInComplex": 11030, + "areaApartment": 65, + "costPerSquare": 73 }, { "id": 21, - "totalArea": 727391.5, - "flatCount": 12551, - "priceAvg": 74907, - "objSquareLivingAmt": 727391.49, - "objCnt": 94 + "name": "Кемеровская область - Кузбасс", + "areaInComplex": 7256, + "areaApartment": 52, + "costPerSquare": 71 }, { "id": 22, - "totalArea": 595249.9, - "flatCount": 11996, - "priceAvg": 82778, - "objSquareLivingAmt": 595249.94, - "objCnt": 71 + "name": "Кировская область", + "areaInComplex": 6249, + "areaApartment": 51, + "costPerSquare": 80 }, { "id": 23, - "totalArea": 8316302.2, - "flatCount": 184301, - "priceAvg": 118376, - "objSquareLivingAmt": 8316302.17, - "objCnt": 735 + "name": "Костромская область", + "areaInComplex": 2821, + "areaApartment": 55, + "costPerSquare": 67 }, { "id": 24, - "totalArea": 1548047.8, - "flatCount": 28193, - "priceAvg": 98763, - "objSquareLivingAmt": 1548047.81, - "objCnt": 108 + "name": "Краснодарский край", + "areaInComplex": 11315, + "areaApartment": 45, + "costPerSquare": 118 }, { "id": 25, - "totalArea": 2191066.9, - "flatCount": 43965, - "priceAvg": 133366, - "objSquareLivingAmt": 2191066.88, - "objCnt": 284 + "name": "Красноярский край", + "areaInComplex": 14334, + "areaApartment": 55, + "costPerSquare": 99 }, { "id": 26, - "totalArea": 1303948.2, - "flatCount": 24103, - "priceAvg": 79643, - "objSquareLivingAmt": 1303948.21, - "objCnt": 168 + "name": "Курганская область", + "areaInComplex": 5434, + "areaApartment": 53, + "costPerSquare": 63 }, { "id": 27, - "totalArea": 894343.7, - "flatCount": 16806, - "priceAvg": 109923, - "objSquareLivingAmt": 894343.67, - "objCnt": 107 + "name": "Курская область", + "areaInComplex": 7045, + "areaApartment": 54, + "costPerSquare": 90 }, { "id": 28, - "totalArea": 268490.4, - "flatCount": 5627, - "priceAvg": 130501, - "objSquareLivingAmt": 268490.39, - "objCnt": 46 + "name": "Ленинградская область", + "areaInComplex": 12385, + "areaApartment": 40, + "costPerSquare": 134 }, { "id": 29, - "totalArea": 485896.2, - "flatCount": 11015, - "priceAvg": 101319, - "objSquareLivingAmt": 485896.18, - "objCnt": 74 + "name": "Липецкая область", + "areaInComplex": 6231, + "areaApartment": 58, + "costPerSquare": 69 }, { "id": 30, - "totalArea": 521433.7, - "flatCount": 10353, - "priceAvg": 95551, - "objSquareLivingAmt": 521433.67, - "objCnt": 44 + "name": "Магаданская область", + "areaInComplex": 3187, + "areaApartment": 55, + "costPerSquare": 85 }, { "id": 31, - "totalArea": 301602.6, - "flatCount": 5916, - "priceAvg": 86137, - "objSquareLivingAmt": 301602.61, - "objCnt": 66 + "name": "Московская область", + "areaInComplex": 13213, + "areaApartment": 46, + "costPerSquare": 149 }, { "id": 32, - "totalArea": 410642.1, - "flatCount": 7010, - "priceAvg": 59869, - "objSquareLivingAmt": 410642.1, - "objCnt": 56 + "name": "Нижегородская область", + "areaInComplex": 8760, + "areaApartment": 53, + "costPerSquare": 106 }, { "id": 33, - "totalArea": 728408.1, - "flatCount": 13023, - "priceAvg": 54047, - "objSquareLivingAmt": 728408.08, - "objCnt": 97 + "name": "Новгородская область", + "areaInComplex": 5953, + "areaApartment": 53, + "costPerSquare": 71 }, { "id": 34, - "totalArea": 929572.5, - "flatCount": 18003, - "priceAvg": 76183, - "objSquareLivingAmt": 929572.53, - "objCnt": 126 + "name": "Новосибирская область", + "areaInComplex": 6748, + "areaApartment": 51, + "costPerSquare": 107 }, { "id": 35, - "totalArea": 623014.5, - "flatCount": 12220, - "priceAvg": 54415, - "objSquareLivingAmt": 623014.54, - "objCnt": 119 + "name": "Омская область", + "areaInComplex": 8625, + "areaApartment": 55, + "costPerSquare": 85 }, { "id": 36, - "totalArea": 1937243.4, - "flatCount": 40193, - "priceAvg": 76931, - "objSquareLivingAmt": 1937243.38, - "objCnt": 149 + "name": "Оренбургская область", + "areaInComplex": 7686, + "areaApartment": 49, + "costPerSquare": 67 }, { "id": 37, - "totalArea": 316507.6, - "flatCount": 5442, - "priceAvg": 59796, - "objSquareLivingAmt": 316507.64, - "objCnt": 48 + "name": "Орловская область", + "areaInComplex": 11543, + "areaApartment": 58, + "costPerSquare": 34 }, { "id": 38, - "totalArea": 785409.3, - "flatCount": 15338, - "priceAvg": 102540, - "objSquareLivingAmt": 785409.27, - "objCnt": 155 + "name": "Пензенская область", + "areaInComplex": 12832, + "areaApartment": 54, + "costPerSquare": 74 }, { "id": 39, - "totalArea": 1203847.6, - "flatCount": 21650, - "priceAvg": 87364, - "objSquareLivingAmt": 1203847.68, - "objCnt": 167 + "name": "Пермский край", + "areaInComplex": 11831, + "areaApartment": 49, + "costPerSquare": 102 }, { "id": 40, - "totalArea": 415127.4, - "flatCount": 7503, - "priceAvg": 87725, - "objSquareLivingAmt": 415127.41, - "objCnt": 53 + "name": "Приморский край", + "areaInComplex": 7715, + "areaApartment": 50, + "costPerSquare": 133 + }, + { + "id": 41, + "name": "Псковская область", + "areaInComplex": 5750, + "areaApartment": 52, + "costPerSquare": 59 }, { "id": 42, - "totalArea": 573204.1, - "flatCount": 11113, - "priceAvg": 71425, - "objSquareLivingAmt": 573204.09, - "objCnt": 79 + "name": "Республика Адыгея", + "areaInComplex": 6701, + "areaApartment": 44, + "costPerSquare": 72 }, { "id": 43, - "totalArea": 337445.1, - "flatCount": 6655, - "priceAvg": 80492, - "objSquareLivingAmt": 337445.09, - "objCnt": 54 + "name": "Республика Алтай", + "areaInComplex": 4643, + "areaApartment": 45, + "costPerSquare": 90 }, { "id": 44, - "totalArea": 163623.3, - "flatCount": 2953, - "priceAvg": 67385, - "objSquareLivingAmt": 163623.29, - "objCnt": 58 + "name": "Республика Башкортостан", + "areaInComplex": 10800, + "areaApartment": 48, + "costPerSquare": 98 }, { "id": 45, - "totalArea": 233679.6, - "flatCount": 4447, - "priceAvg": 62972, - "objSquareLivingAmt": 233679.61, - "objCnt": 43 + "name": "Республика Бурятия", + "areaInComplex": 6196, + "areaApartment": 55, + "costPerSquare": 71 }, { "id": 46, - "totalArea": 295893.8, - "flatCount": 5469, - "priceAvg": 89784, - "objSquareLivingAmt": 295893.85, - "objCnt": 42 + "name": "Республика Дагестан", + "areaInComplex": 8597, + "areaApartment": 62, + "costPerSquare": 34 }, { "id": 47, - "totalArea": 3294300.7, - "flatCount": 82121, - "priceAvg": 133977, - "objSquareLivingAmt": 3294300.7, - "objCnt": 266 + "name": "Республика Калмыкия", + "areaInComplex": 4506, + "areaApartment": 60, + "costPerSquare": 53 }, { "id": 48, - "totalArea": 454826.8, - "flatCount": 7783, - "priceAvg": 69140, - "objSquareLivingAmt": 454826.77, - "objCnt": 73 + "name": "Республика Карелия", + "areaInComplex": 6520, + "areaApartment": 49, + "costPerSquare": 108 }, { "id": 49, - "totalArea": 3186.8, - "flatCount": 58, - "priceAvg": 85363, - "objSquareLivingAmt": 3186.83, - "objCnt": 1 + "name": "Республика Коми", + "areaInComplex": 9299, + "areaApartment": 42, + "costPerSquare": 81 }, { "id": 50, - "totalArea": 8218500.2, - "flatCount": 178738, - "priceAvg": 148558, - "objSquareLivingAmt": 8218500.37, - "objCnt": 622 + "name": "Республика Крым", + "areaInComplex": 5416, + "areaApartment": 49, + "costPerSquare": 95 }, { "id": 51, - "totalArea": 5271.4, - "flatCount": 100, - "priceAvg": 70602, - "objSquareLivingAmt": 5271.4, - "objCnt": 1 + "name": "Республика Марий Эл", + "areaInComplex": 6148, + "areaApartment": 60, + "costPerSquare": 63 }, { "id": 52, - "totalArea": 1147532.2, - "flatCount": 21682, - "priceAvg": 106487, - "objSquareLivingAmt": 1147532.16, - "objCnt": 131 + "name": "Республика Мордовия", + "areaInComplex": 7487, + "areaApartment": 52, + "costPerSquare": 73 }, { "id": 53, - "totalArea": 77383.8, - "flatCount": 1450, - "priceAvg": 71014, - "objSquareLivingAmt": 77383.75, - "objCnt": 13 + "name": "Республика Саха (Якутия)", + "areaInComplex": 7189, + "areaApartment": 50, + "costPerSquare": 120 }, { "id": 54, - "totalArea": 3465916.9, - "flatCount": 68169, - "priceAvg": 106530, - "objSquareLivingAmt": 3468482.46, - "objCnt": 514 + "name": "Республика Северная Осетия", + "areaInComplex": 6297, + "areaApartment": 65, + "costPerSquare": 72 }, { "id": 55, - "totalArea": 552013.5, - "flatCount": 10068, - "priceAvg": 84691, - "objSquareLivingAmt": 552013.51, - "objCnt": 64 + "name": "Республика Татарстан", + "areaInComplex": 9702, + "areaApartment": 51, + "costPerSquare": 135 }, { "id": 56, - "totalArea": 438084.8, - "flatCount": 8975, - "priceAvg": 66808, - "objSquareLivingAmt": 438085.17, - "objCnt": 57 + "name": "Республика Тыва", + "areaInComplex": 3185, + "areaApartment": 44, + "costPerSquare": 123 }, { "id": 57, - "totalArea": 311673.4, - "flatCount": 5381, - "priceAvg": 34194, - "objSquareLivingAmt": 311673.43, - "objCnt": 27 + "name": "Республика Хакасия", + "areaInComplex": 5443, + "areaApartment": 52, + "costPerSquare": 67 }, { "id": 58, - "totalArea": 1257497.0, - "flatCount": 23172, - "priceAvg": 74291, - "objSquareLivingAmt": 1257497.04, - "objCnt": 98 + "name": "Ростовская область", + "areaInComplex": 10987, + "areaApartment": 48, + "costPerSquare": 94 }, { "id": 59, - "totalArea": 1656401.4, - "flatCount": 33743, - "priceAvg": 101629, - "objSquareLivingAmt": 1656401.38, - "objCnt": 140 + "name": "Рязанская область", + "areaInComplex": 14581, + "areaApartment": 49, + "costPerSquare": 76 }, { "id": 60, - "totalArea": 218481.0, - "flatCount": 4233, - "priceAvg": 59133, - "objSquareLivingAmt": 218481.01, - "objCnt": 38 + "name": "Самарская область", + "areaInComplex": 10571, + "areaApartment": 55, + "costPerSquare": 82 }, { "id": 61, - "totalArea": 2790815.6, - "flatCount": 57789, - "priceAvg": 94335, - "objSquareLivingAmt": 2790815.55, - "objCnt": 254 + "name": "Саратовская область", + "areaInComplex": 7789, + "areaApartment": 53, + "costPerSquare": 59 }, { "id": 62, - "totalArea": 1122750.6, - "flatCount": 22772, - "priceAvg": 76168, - "objSquareLivingAmt": 1122750.59, - "objCnt": 77 + "name": "Сахалинская область", + "areaInComplex": 5668, + "areaApartment": 51, + "costPerSquare": 153 }, { "id": 63, - "totalArea": 2082471.7, - "flatCount": 37726, - "priceAvg": 82324, - "objSquareLivingAmt": 2082471.74, - "objCnt": 197 + "name": "Свердловская область", + "areaInComplex": 12467, + "areaApartment": 48, + "costPerSquare": 111 }, { "id": 64, - "totalArea": 638664.9, - "flatCount": 11982, - "priceAvg": 59320, - "objSquareLivingAmt": 638664.92, - "objCnt": 82 + "name": "Смоленская область", + "areaInComplex": 5512, + "areaApartment": 55, + "costPerSquare": 54 }, { "id": 65, - "totalArea": 277718.5, - "flatCount": 5418, - "priceAvg": 153297, - "objSquareLivingAmt": 277718.51, - "objCnt": 49 + "name": "Ставропольский край", + "areaInComplex": 7762, + "areaApartment": 54, + "costPerSquare": 80 }, { "id": 66, - "totalArea": 4051855.4, - "flatCount": 85142, - "priceAvg": 110720, - "objSquareLivingAmt": 4051855.37, - "objCnt": 325 + "name": "Тамбовская область", + "areaInComplex": 6631, + "areaApartment": 54, + "costPerSquare": 61 }, { "id": 67, - "totalArea": 325201.7, - "flatCount": 5895, - "priceAvg": 53924, - "objSquareLivingAmt": 325201.67, - "objCnt": 59 + "name": "Тверская область", + "areaInComplex": 5696, + "areaApartment": 52, + "costPerSquare": 79 }, { "id": 68, - "totalArea": 305018.1, - "flatCount": 5691, - "priceAvg": 61498, - "objSquareLivingAmt": 305018.06, - "objCnt": 46 + "name": "Томская область", + "areaInComplex": 4397, + "areaApartment": 51, + "costPerSquare": 105 }, { "id": 69, - "totalArea": 467081.2, - "flatCount": 8962, - "priceAvg": 79237, - "objSquareLivingAmt": 467081.17, - "objCnt": 82 + "name": "Тульская область", + "areaInComplex": 7696, + "areaApartment": 48, + "costPerSquare": 90 }, { "id": 70, - "totalArea": 281391.0, - "flatCount": 5551, - "priceAvg": 104611, - "objSquareLivingAmt": 281391.03, - "objCnt": 64 + "name": "Тюменская область", + "areaInComplex": 11328, + "areaApartment": 52, + "costPerSquare": 100 }, { "id": 71, - "totalArea": 992802.1, - "flatCount": 20633, - "priceAvg": 89967, - "objSquareLivingAmt": 992802.07, - "objCnt": 129 + "name": "Удмуртская Республика", + "areaInComplex": 6701, + "areaApartment": 49, + "costPerSquare": 83 }, { "id": 72, - "totalArea": 3115076.8, - "flatCount": 60096, - "priceAvg": 100219, - "objSquareLivingAmt": 3115076.85, - "objCnt": 275 + "name": "Ульяновская область", + "areaInComplex": 7177, + "areaApartment": 48, + "costPerSquare": 75 }, { "id": 73, - "totalArea": 437822.7, - "flatCount": 9120, - "priceAvg": 75329, - "objSquareLivingAmt": 437822.72, - "objCnt": 61 + "name": "Хабаровский край", + "areaInComplex": 8358, + "areaApartment": 53, + "costPerSquare": 110 }, { "id": 74, - "totalArea": 1044332.8, - "flatCount": 20379, - "priceAvg": 78438, - "objSquareLivingAmt": 1044332.82, - "objCnt": 121 + "name": "Ханты-Мансийский АО - Югра", + "areaInComplex": 9149, + "areaApartment": 56, + "costPerSquare": 109 }, { "id": 75, - "totalArea": 163028.2, - "flatCount": 3388, - "priceAvg": 129153, - "objSquareLivingAmt": 163028.15, - "objCnt": 23 + "name": "Челябинская область", + "areaInComplex": 8631, + "areaApartment": 51, + "costPerSquare": 78 }, { "id": 76, - "totalArea": 656699.4, - "flatCount": 12248, - "priceAvg": 77390, - "objSquareLivingAmt": 656699.39, - "objCnt": 101 + "name": "Чеченская Республика", + "areaInComplex": 20349, + "areaApartment": 70, + "costPerSquare": 58 }, { "id": 77, - "totalArea": 16322256.6, - "flatCount": 309477, - "priceAvg": 295872, - "objSquareLivingAmt": 1.632225665e7, - "objCnt": 703 + "name": "Чувашская Республика", + "areaInComplex": 7738, + "areaApartment": 58, + "costPerSquare": 75 }, { "id": 78, - "totalArea": 7370217.2, - "flatCount": 170718, - "priceAvg": 202300, - "objSquareLivingAmt": 7370217.18, - "objCnt": 436 + "name": "Ямало-Ненецкий АО", + "areaInComplex": 4020, + "areaApartment": 50, + "costPerSquare": 145 }, { "id": 79, - "totalArea": 2146.0, - "flatCount": 50, - "priceAvg": 62048, - "objSquareLivingAmt": 2145.95, - "objCnt": 1 - }, - { - "id": 86, - "totalArea": 439174.3, - "flatCount": 7860, - "priceAvg": 109173, - "objSquareLivingAmt": 439174.26, - "objCnt": 48 - }, - { - "id": 89, - "totalArea": 152761.8, - "flatCount": 3062, - "priceAvg": 144671, - "objSquareLivingAmt": 152761.83, - "objCnt": 38 - }, - { - "id": 91, - "totalArea": 882872.1, - "flatCount": 18151, - "priceAvg": 95417, - "objSquareLivingAmt": 882872.05, - "objCnt": 163 - }, - { - "id": 92, - "totalArea": 112259.8, - "flatCount": 2367, - "priceAvg": 135839, - "objSquareLivingAmt": 112259.82, - "objCnt": 19 + "name": "Ярославская область", + "areaInComplex": 6502, + "areaApartment": 54, + "costPerSquare": 77 } ] diff --git a/client/src/assets/regionsData2.json b/client/src/assets/regionsData2.json deleted file mode 100644 index dfe9ba0..0000000 --- a/client/src/assets/regionsData2.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "id": 1, - "name": "Алтайский край", - "areaInComplex": 8384, - "areaApartment": 50, - "costPerSquare": 83 - }, - { - "id": 2, - "name": "Амурская область", - "areaInComplex": 5837, - "areaApartment": 48, - "costPerSquare": 131 - }, - { - "id": 3, - "name": "Архангельская область", - "areaInComplex": 6566, - "areaApartment": 44, - "costPerSquare": 101 - }, - { - "id": 4, - "name": "Астраханская область", - "areaInComplex": 11851, - "areaApartment": 50, - "costPerSquare": 96 - } -] diff --git a/client/src/components/Button.tsx b/client/src/components/Button.tsx index 807d2f8..6b54603 100644 --- a/client/src/components/Button.tsx +++ b/client/src/components/Button.tsx @@ -3,13 +3,25 @@ import { ReactNode } from "react"; interface ButtonProps { children: ReactNode; icon?: JSX.Element; + color?: "primary" | "secondary"; className?: string; + handleClick?: () => void; } -function Button({ children, icon, className }: ButtonProps) { +function Button({ + children, + color = "primary", + icon, + className, + handleClick, +}: ButtonProps) { return ( +
+ +
+
+
+

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

+
+

+ + {isToolEnabled + ? implementationPeriod + : oldImplementationPeriod} + + + {isToolEnabled + ? implementationPeriodEnding + : oldImplementationPeriodEnding} + +

+ +

+ На{" "} + + {diffImplementationPeriod} {diffImplementationPeriodEnding} + {" "} + вы сократили срок +
+ реализации проекта +

+
+
+ +
+

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

+
+

+ + {isToolEnabled ? monthlyIncome : oldMonthlyIncome} + + + млн руб. + +

+

+ На{" "} + + {diffMonthlyIncome} млн руб. + {" "} + в месяц вы заработали больше +

+
+
+
+
+

Статистика продаж

+
+
+

100%

+
+
+

{consultations}

+
+
+

Консультаций в офисе

+
+ +
+

{isToolEnabled ? 48 : 30}%

+
+
+

+ {isToolEnabled ? reservation : oldReservation} +

+
+
+

Бронь квартиры

+
+ +
+

{isToolEnabled ? 42 : 30}%

+
+
+

+ {isToolEnabled ? sales : oldSales} +

+
+
+

Продажа

+
+
+
+
+
+
+ ); +} + +export default Calc; diff --git a/client/src/components/CalcSelect.tsx b/client/src/components/CalcSelect.tsx index 67cfaed..5927ca5 100644 --- a/client/src/components/CalcSelect.tsx +++ b/client/src/components/CalcSelect.tsx @@ -6,6 +6,7 @@ import { useOnClickOutside } from "usehooks-ts"; interface CalcSelectProps { label: string; placeholder: string; + defaultOption?: string; options: string[]; handleSelect: (option: string) => void; } @@ -13,10 +14,11 @@ interface CalcSelectProps { function CalcSelect({ label, placeholder, + defaultOption = "", options, handleSelect, }: CalcSelectProps) { - const [selectedOption, setSelectedOption] = useState(""); + const [selectedOption, setSelectedOption] = useState(defaultOption); const [isShow, setIsShow] = useState(false); const ref = useRef(null); useOnClickOutside(ref, () => setIsShow(false)); diff --git a/client/src/components/ExampleCard.tsx b/client/src/components/ExampleCard.tsx index 069941b..e2aef1f 100644 --- a/client/src/components/ExampleCard.tsx +++ b/client/src/components/ExampleCard.tsx @@ -8,7 +8,7 @@ interface ExampleCardProps { function ExampleCard({ title, company, image }: ExampleCardProps) { return ( -
+
-

{title}

-

{company}

+

{title}

+

{company}

); diff --git a/client/src/components/Headings/Heading2.tsx b/client/src/components/Headings/Heading2.tsx new file mode 100644 index 0000000..2a6f933 --- /dev/null +++ b/client/src/components/Headings/Heading2.tsx @@ -0,0 +1,18 @@ +import { ReactNode } from "react"; + +interface Heading2Props { + children: ReactNode; + className?: string; +} + +function Heading2({ children, className }: Heading2Props) { + return ( +

+ {children} +

+ ); +} + +export default Heading2; diff --git a/client/src/components/blendings/BlendingCalc.tsx b/client/src/components/blendings/BlendingCalc.tsx new file mode 100644 index 0000000..2197abd --- /dev/null +++ b/client/src/components/blendings/BlendingCalc.tsx @@ -0,0 +1,354 @@ +import React from "react"; + +function BlendingCalc() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} + +export default BlendingCalc; diff --git a/client/src/components/blendings/BlendingClients.tsx b/client/src/components/blendings/BlendingClients.tsx new file mode 100644 index 0000000..f697c94 --- /dev/null +++ b/client/src/components/blendings/BlendingClients.tsx @@ -0,0 +1,352 @@ +function BlendingClients() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} + +export default BlendingClients; diff --git a/client/src/components/blendings/Blending1.tsx b/client/src/components/blendings/BlendingHeader.tsx similarity index 100% rename from client/src/components/blendings/Blending1.tsx rename to client/src/components/blendings/BlendingHeader.tsx diff --git a/client/src/components/icons/CloseIcon.tsx b/client/src/components/icons/CloseIcon.tsx new file mode 100644 index 0000000..fd6ce0e --- /dev/null +++ b/client/src/components/icons/CloseIcon.tsx @@ -0,0 +1,23 @@ +function CloseIcon() { + return ( + + + + + + ); +} + +export default CloseIcon; diff --git a/client/src/components/icons/PlayIcon.tsx b/client/src/components/icons/PlayIcon.tsx new file mode 100644 index 0000000..4cab858 --- /dev/null +++ b/client/src/components/icons/PlayIcon.tsx @@ -0,0 +1,20 @@ +function PlayIcon() { + return ( + + + + + + ); +} + +export default PlayIcon; diff --git a/client/src/index.css b/client/src/index.css index fc144a7..a7ec399 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -56,3 +56,17 @@ body { *::-webkit-scrollbar-thumb:hover { border-width: 2px; } + +.custom-line-through { + position: relative; +} + +.custom-line-through::before { + content: ""; + position: absolute; + top: 53%; + left: -2.5%; + width: 105%; + height: 6px; + background-color: #fff; +}