+
diff --git a/client/src/components/Calc.tsx b/client/src/components/Calc.tsx
index 33d69b6..7c2bb8a 100644
--- a/client/src/components/Calc.tsx
+++ b/client/src/components/Calc.tsx
@@ -115,8 +115,8 @@ function Calc() {
жилья в комплексе
- {avgAreaInComplex}
- м2
+ {avgAreaInComplex}
+ м2
@@ -127,10 +127,10 @@ function Calc() {
квартиры
-
+
{averageApartmentArea}
- м2
+ м2
@@ -141,8 +141,8 @@ function Calc() {
одного м2
- {averagePrice}
- тыс. р.
+ {averagePrice}
+ тыс. р.
diff --git a/client/src/components/Slider/Slide.tsx b/client/src/components/Slider/Slide.tsx
new file mode 100644
index 0000000..cf036e1
--- /dev/null
+++ b/client/src/components/Slider/Slide.tsx
@@ -0,0 +1,26 @@
+import React from "react";
+
+interface ISlideContainer {
+ title: string;
+ body: string;
+ image: string;
+}
+
+function Slide({ title, body, image }: ISlideContainer) {
+ return (
+
+
+
+

+
+
+ );
+}
+
+export default Slide;
diff --git a/client/src/components/Slider/Slide1.tsx b/client/src/components/Slider/Slide1.tsx
deleted file mode 100644
index 4462c4a..0000000
--- a/client/src/components/Slider/Slide1.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide1() {
- return (
-
-
-
- Интеграция
-
с CRM - системой
-
-
- Приложение передает информацию о клиенте в CRM-систему застройщика и
- получает актуальную информацию по ценам и статусам квартир
-
-
-
-

-
-
- );
-}
-
-export default Slide1;
diff --git a/client/src/components/Slider/Slide2.tsx b/client/src/components/Slider/Slide2.tsx
deleted file mode 100644
index 85c6c8c..0000000
--- a/client/src/components/Slider/Slide2.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide2() {
- return (
-
-
-
- Вся инфрастуктура
-
- на одном экране
-
-
- Возможность оценить инфраструктуру района покажет важные для клиента
- точки интереса и время, за которое он сможет до них дойти
-
-
-
-

-
-
- );
-}
-
-export default Slide2;
diff --git a/client/src/components/Slider/Slide3.tsx b/client/src/components/Slider/Slide3.tsx
deleted file mode 100644
index c15885f..0000000
--- a/client/src/components/Slider/Slide3.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide3() {
- return (
-
-
-
- Параметрический
-
- поиск квартир
-
-
- Фильтр позволит отметить конкретные преимущества, определить
- количество комнат, желаемый этаж, цену, и получить выборку подходящих
- вариантов
-
-
-
-

-
-
- );
-}
-
-export default Slide3;
diff --git a/client/src/components/Slider/Slide4.tsx b/client/src/components/Slider/Slide4.tsx
deleted file mode 100644
index 04da34d..0000000
--- a/client/src/components/Slider/Slide4.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide4() {
- return (
-
-
-
- Виртуальный тур
-
- по жилому комплексу
-
-
- Клиент лично оценит угол инсоляции, малые архитектурные формы и
- ландшафт, перемещаясь по комплексу с помощью тапа
-
-
-
-

-
-
- );
-}
-
-export default Slide4;
diff --git a/client/src/components/Slider/Slide5.tsx b/client/src/components/Slider/Slide5.tsx
deleted file mode 100644
index 8f23f43..0000000
--- a/client/src/components/Slider/Slide5.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide5() {
- return (
-
-
-
- Конфигуратор интерьера
-
-
- Клиент может свободно выбирать мебель и дизайн с помощью конфигуратора
- интерьера. Возможно выбрать стиль всей квартиры или изменить отдельные
- детали
-
-
-
-

-
-
- );
-}
-
-export default Slide5;
diff --git a/client/src/components/Slider/Slide6.tsx b/client/src/components/Slider/Slide6.tsx
deleted file mode 100644
index 81f77a4..0000000
--- a/client/src/components/Slider/Slide6.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide6() {
- return (
-
-
-
- Формирование
-
- вишлиста
-
-
- Клиент может добавить варианты квартир в избранное, сравнить их между
- собой по основным параметрам и выбрать свою будущую квартиру
-
-
-
-

-
-
- );
-}
-
-export default Slide6;
diff --git a/client/src/components/Slider/Slide7.tsx b/client/src/components/Slider/Slide7.tsx
deleted file mode 100644
index 5246aca..0000000
--- a/client/src/components/Slider/Slide7.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide7() {
- return (
-
-
-
- Любой рендер
-
- за несколько секунд
-
-
- Когда для рекламы вам понадобится любой объект с любого ракурса,
- просто сделайте фотографию внутри презентации
-
-
-
-

-
-
- );
-}
-
-export default Slide7;
diff --git a/client/src/components/Slider/Slide8.tsx b/client/src/components/Slider/Slide8.tsx
deleted file mode 100644
index 6aa1797..0000000
--- a/client/src/components/Slider/Slide8.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from "react";
-import SlideContainer from "./SlideContainer";
-
-function Slide8() {
- return (
-
-
-
- Отправка коммерческого
-
- предложения
-
-
- Коммерческое предложение с выбранными квартирами может быть отправлено
- клиенту на почту или распечатано и отдано лично в руки
-
-
-
-

-
-
- );
-}
-
-export default Slide8;
diff --git a/client/src/components/Slider/SlideContainer.tsx b/client/src/components/Slider/SlideContainer.tsx
deleted file mode 100644
index 5048fe9..0000000
--- a/client/src/components/Slider/SlideContainer.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React, { ReactNode } from "react";
-import { SwiperSlide } from "swiper/react";
-
-interface ISlideContainer {
- children: ReactNode;
-}
-
-function SlideContainer({ children }: ISlideContainer) {
- return
{children}
;
-}
-
-export default SlideContainer;
diff --git a/client/src/components/Slider/Slider.tsx b/client/src/components/Slider/Slider.tsx
index f54565b..9f724e2 100644
--- a/client/src/components/Slider/Slider.tsx
+++ b/client/src/components/Slider/Slider.tsx
@@ -1,19 +1,12 @@
import React, { useRef, useState } from "react";
import { Navigation, Pagination, Scrollbar, Autoplay } from "swiper";
import { Swiper, SwiperSlide } from "swiper/react";
+import Slide from "./Slide";
import "swiper/css";
import "swiper/css/navigation";
import "swiper/css/pagination";
import "swiper/css/scrollbar";
import "swiper/css/autoplay";
-import Slide1 from "./Slide1";
-import Slide2 from "./Slide2";
-import Slide3 from "./Slide3";
-import Slide4 from "./Slide4";
-import Slide5 from "./Slide5";
-import Slide6 from "./Slide6";
-import Slide7 from "./Slide7";
-import Slide8 from "./Slide8";
function Slider() {
const [_, setInit] = useState
();
@@ -38,28 +31,76 @@ function Slider() {
className="w-[calc(100%+64px)]"
>
-
+ с CRM - системой"}
+ body={
+ "Приложение передает информацию о клиенте в CRM-систему застройщика и получает актуальную информацию по ценам и статусам квартир"
+ }
+ image={"/images/slider/slide1.png"}
+ />
-
+ на одном экране"}
+ body={
+ "Возможность оценить инфраструктуру района покажет важные для клиента точки интереса и время, за которое он сможет до них дойти"
+ }
+ image={"/images/slider/slide2.jpg"}
+ />
-
+ поиск квартир"}
+ body={
+ "Фильтр позволит отметить конкретные преимущества, определить количество комнат, желаемый этаж, цену, и получить выборку подходящих вариантов"
+ }
+ image={"/images/slider/slide3.png"}
+ />
-
+ по жилому комплексу"}
+ body={
+ "Клиент лично оценит угол инсоляции, малые архитектурные формы и ландшафт, перемещаясь по комплексу с помощью тапа"
+ }
+ image={"/images/slider/slide4.jpg"}
+ />
-
+
-
+ вишлиста"}
+ body={
+ "Клиент может добавить варианты квартир в избранное, сравнить их между собой по основным параметрам и выбрать свою будущую квартиру"
+ }
+ image={"/images/slider/slide6.png"}
+ />
-
+ за несколько секунд"}
+ body={
+ "Когда для рекламы вам понадобится любой объект с любого ракурса, просто сделайте фотографию внутри презентации"
+ }
+ image={"/images/slider/slide7.jpg"}
+ />
-
+ предложения"}
+ body={
+ "Коммерческое предложение с выбранными квартирами может быть отправлено клиенту на почту или распечатано и отдано лично в руки"
+ }
+ image={"/images/slider/slide8.png"}
+ />
diff --git a/client/src/main.tsx b/client/src/main.tsx
index dd18b86..ba51193 100644
--- a/client/src/main.tsx
+++ b/client/src/main.tsx
@@ -2,7 +2,6 @@ import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import './index.css'
-import AppTest from './AppTest'
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
//
diff --git a/client/src/utils/api.ts b/client/src/utils/api.ts
index 2802f57..a64ad2f 100644
--- a/client/src/utils/api.ts
+++ b/client/src/utils/api.ts
@@ -1,7 +1,7 @@
import ky from "ky";
const api = ky.create({
- prefixUrl: "http://localhost:3003",
+ prefixUrl: "/api",
});
export default api;
diff --git a/client/vite.config.ts b/client/vite.config.ts
index e4f2a62..9fed1d8 100644
--- a/client/vite.config.ts
+++ b/client/vite.config.ts
@@ -6,8 +6,22 @@ export default defineConfig({
plugins: [react()],
server: {
port: 3002,
+ proxy: {
+ "/api": {
+ target: "http://127.0.0.1:3003",
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api/, ""),
+ },
+ },
},
preview: {
port: 3002,
+ proxy: {
+ "/api": {
+ target: "http://127.0.0.1:3003",
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api/, ""),
+ },
+ },
},
});