diff --git a/client/public/images/clients/clients-1.jpg b/client/public/images/clients/clients-1.jpg
new file mode 100644
index 0000000..4888dc6
Binary files /dev/null and b/client/public/images/clients/clients-1.jpg differ
diff --git a/client/public/images/clients/clients-10.jpg b/client/public/images/clients/clients-10.jpg
new file mode 100644
index 0000000..6a59a8b
Binary files /dev/null and b/client/public/images/clients/clients-10.jpg differ
diff --git a/client/public/images/clients/clients-11.jpg b/client/public/images/clients/clients-11.jpg
new file mode 100644
index 0000000..7233da2
Binary files /dev/null and b/client/public/images/clients/clients-11.jpg differ
diff --git a/client/public/images/clients/clients-12.jpg b/client/public/images/clients/clients-12.jpg
new file mode 100644
index 0000000..dd9fb1d
Binary files /dev/null and b/client/public/images/clients/clients-12.jpg differ
diff --git a/client/public/images/clients/clients-13.jpg b/client/public/images/clients/clients-13.jpg
new file mode 100644
index 0000000..a4b9b6f
Binary files /dev/null and b/client/public/images/clients/clients-13.jpg differ
diff --git a/client/public/images/clients/clients-14.jpg b/client/public/images/clients/clients-14.jpg
new file mode 100644
index 0000000..52e506a
Binary files /dev/null and b/client/public/images/clients/clients-14.jpg differ
diff --git a/client/public/images/clients/clients-15.jpg b/client/public/images/clients/clients-15.jpg
new file mode 100644
index 0000000..bd4fc99
Binary files /dev/null and b/client/public/images/clients/clients-15.jpg differ
diff --git a/client/public/images/clients/clients-16.jpg b/client/public/images/clients/clients-16.jpg
new file mode 100644
index 0000000..e877775
Binary files /dev/null and b/client/public/images/clients/clients-16.jpg differ
diff --git a/client/public/images/clients/clients-17.jpg b/client/public/images/clients/clients-17.jpg
new file mode 100644
index 0000000..eb432c7
Binary files /dev/null and b/client/public/images/clients/clients-17.jpg differ
diff --git a/client/public/images/clients/clients-18.jpg b/client/public/images/clients/clients-18.jpg
new file mode 100644
index 0000000..e8d1cdc
Binary files /dev/null and b/client/public/images/clients/clients-18.jpg differ
diff --git a/client/public/images/clients/clients-19.jpg b/client/public/images/clients/clients-19.jpg
new file mode 100644
index 0000000..075aa4b
Binary files /dev/null and b/client/public/images/clients/clients-19.jpg differ
diff --git a/client/public/images/clients/clients-2.jpg b/client/public/images/clients/clients-2.jpg
new file mode 100644
index 0000000..498baac
Binary files /dev/null and b/client/public/images/clients/clients-2.jpg differ
diff --git a/client/public/images/clients/clients-20.jpg b/client/public/images/clients/clients-20.jpg
new file mode 100644
index 0000000..28ab6e7
Binary files /dev/null and b/client/public/images/clients/clients-20.jpg differ
diff --git a/client/public/images/clients/clients-21.jpg b/client/public/images/clients/clients-21.jpg
new file mode 100644
index 0000000..becb0b4
Binary files /dev/null and b/client/public/images/clients/clients-21.jpg differ
diff --git a/client/public/images/clients/clients-22.jpg b/client/public/images/clients/clients-22.jpg
new file mode 100644
index 0000000..d6fa9a2
Binary files /dev/null and b/client/public/images/clients/clients-22.jpg differ
diff --git a/client/public/images/clients/clients-23.jpg b/client/public/images/clients/clients-23.jpg
new file mode 100644
index 0000000..5de895e
Binary files /dev/null and b/client/public/images/clients/clients-23.jpg differ
diff --git a/client/public/images/clients/clients-24.jpg b/client/public/images/clients/clients-24.jpg
new file mode 100644
index 0000000..ff15fd0
Binary files /dev/null and b/client/public/images/clients/clients-24.jpg differ
diff --git a/client/public/images/clients/clients-25.jpg b/client/public/images/clients/clients-25.jpg
new file mode 100644
index 0000000..83b7a3d
Binary files /dev/null and b/client/public/images/clients/clients-25.jpg differ
diff --git a/client/public/images/clients/clients-26.jpg b/client/public/images/clients/clients-26.jpg
new file mode 100644
index 0000000..2caf2b2
Binary files /dev/null and b/client/public/images/clients/clients-26.jpg differ
diff --git a/client/public/images/clients/clients-27.jpg b/client/public/images/clients/clients-27.jpg
new file mode 100644
index 0000000..03f1741
Binary files /dev/null and b/client/public/images/clients/clients-27.jpg differ
diff --git a/client/public/images/clients/clients-28.jpg b/client/public/images/clients/clients-28.jpg
new file mode 100644
index 0000000..641bc45
Binary files /dev/null and b/client/public/images/clients/clients-28.jpg differ
diff --git a/client/public/images/clients/clients-29.jpg b/client/public/images/clients/clients-29.jpg
new file mode 100644
index 0000000..b9c0664
Binary files /dev/null and b/client/public/images/clients/clients-29.jpg differ
diff --git a/client/public/images/clients/clients-3.jpg b/client/public/images/clients/clients-3.jpg
new file mode 100644
index 0000000..78dc1f9
Binary files /dev/null and b/client/public/images/clients/clients-3.jpg differ
diff --git a/client/public/images/clients/clients-30.jpg b/client/public/images/clients/clients-30.jpg
new file mode 100644
index 0000000..413f45d
Binary files /dev/null and b/client/public/images/clients/clients-30.jpg differ
diff --git a/client/public/images/clients/clients-31.jpg b/client/public/images/clients/clients-31.jpg
new file mode 100644
index 0000000..a99c372
Binary files /dev/null and b/client/public/images/clients/clients-31.jpg differ
diff --git a/client/public/images/clients/clients-32.jpg b/client/public/images/clients/clients-32.jpg
new file mode 100644
index 0000000..1c937ed
Binary files /dev/null and b/client/public/images/clients/clients-32.jpg differ
diff --git a/client/public/images/clients/clients-33.jpg b/client/public/images/clients/clients-33.jpg
new file mode 100644
index 0000000..233d646
Binary files /dev/null and b/client/public/images/clients/clients-33.jpg differ
diff --git a/client/public/images/clients/clients-34.jpg b/client/public/images/clients/clients-34.jpg
new file mode 100644
index 0000000..b749ecd
Binary files /dev/null and b/client/public/images/clients/clients-34.jpg differ
diff --git a/client/public/images/clients/clients-35.jpg b/client/public/images/clients/clients-35.jpg
new file mode 100644
index 0000000..4a50e70
Binary files /dev/null and b/client/public/images/clients/clients-35.jpg differ
diff --git a/client/public/images/clients/clients-36.jpg b/client/public/images/clients/clients-36.jpg
new file mode 100644
index 0000000..d243670
Binary files /dev/null and b/client/public/images/clients/clients-36.jpg differ
diff --git a/client/public/images/clients/clients-37.jpg b/client/public/images/clients/clients-37.jpg
new file mode 100644
index 0000000..956b72d
Binary files /dev/null and b/client/public/images/clients/clients-37.jpg differ
diff --git a/client/public/images/clients/clients-38.jpg b/client/public/images/clients/clients-38.jpg
new file mode 100644
index 0000000..dc99d08
Binary files /dev/null and b/client/public/images/clients/clients-38.jpg differ
diff --git a/client/public/images/clients/clients-39.jpg b/client/public/images/clients/clients-39.jpg
new file mode 100644
index 0000000..ec27d80
Binary files /dev/null and b/client/public/images/clients/clients-39.jpg differ
diff --git a/client/public/images/clients/clients-4.jpg b/client/public/images/clients/clients-4.jpg
new file mode 100644
index 0000000..5335bdb
Binary files /dev/null and b/client/public/images/clients/clients-4.jpg differ
diff --git a/client/public/images/clients/clients-40.jpg b/client/public/images/clients/clients-40.jpg
new file mode 100644
index 0000000..15eabce
Binary files /dev/null and b/client/public/images/clients/clients-40.jpg differ
diff --git a/client/public/images/clients/clients-41.jpg b/client/public/images/clients/clients-41.jpg
new file mode 100644
index 0000000..700c114
Binary files /dev/null and b/client/public/images/clients/clients-41.jpg differ
diff --git a/client/public/images/clients/clients-42.jpg b/client/public/images/clients/clients-42.jpg
new file mode 100644
index 0000000..ecefbe8
Binary files /dev/null and b/client/public/images/clients/clients-42.jpg differ
diff --git a/client/public/images/clients/clients-43.jpg b/client/public/images/clients/clients-43.jpg
new file mode 100644
index 0000000..9d5ccd7
Binary files /dev/null and b/client/public/images/clients/clients-43.jpg differ
diff --git a/client/public/images/clients/clients-44.jpg b/client/public/images/clients/clients-44.jpg
new file mode 100644
index 0000000..92bb552
Binary files /dev/null and b/client/public/images/clients/clients-44.jpg differ
diff --git a/client/public/images/clients/clients-45.jpg b/client/public/images/clients/clients-45.jpg
new file mode 100644
index 0000000..145bf97
Binary files /dev/null and b/client/public/images/clients/clients-45.jpg differ
diff --git a/client/public/images/clients/clients-46.jpg b/client/public/images/clients/clients-46.jpg
new file mode 100644
index 0000000..2af6470
Binary files /dev/null and b/client/public/images/clients/clients-46.jpg differ
diff --git a/client/public/images/clients/clients-47.jpg b/client/public/images/clients/clients-47.jpg
new file mode 100644
index 0000000..086d0d1
Binary files /dev/null and b/client/public/images/clients/clients-47.jpg differ
diff --git a/client/public/images/clients/clients-48.jpg b/client/public/images/clients/clients-48.jpg
new file mode 100644
index 0000000..553b4f1
Binary files /dev/null and b/client/public/images/clients/clients-48.jpg differ
diff --git a/client/public/images/clients/clients-49.jpg b/client/public/images/clients/clients-49.jpg
new file mode 100644
index 0000000..01dab0f
Binary files /dev/null and b/client/public/images/clients/clients-49.jpg differ
diff --git a/client/public/images/clients/clients-5.jpg b/client/public/images/clients/clients-5.jpg
new file mode 100644
index 0000000..900b1d5
Binary files /dev/null and b/client/public/images/clients/clients-5.jpg differ
diff --git a/client/public/images/clients/clients-50.jpg b/client/public/images/clients/clients-50.jpg
new file mode 100644
index 0000000..70509cf
Binary files /dev/null and b/client/public/images/clients/clients-50.jpg differ
diff --git a/client/public/images/clients/clients-51.jpg b/client/public/images/clients/clients-51.jpg
new file mode 100644
index 0000000..ae77a37
Binary files /dev/null and b/client/public/images/clients/clients-51.jpg differ
diff --git a/client/public/images/clients/clients-52.jpg b/client/public/images/clients/clients-52.jpg
new file mode 100644
index 0000000..0a875a4
Binary files /dev/null and b/client/public/images/clients/clients-52.jpg differ
diff --git a/client/public/images/clients/clients-53.jpg b/client/public/images/clients/clients-53.jpg
new file mode 100644
index 0000000..667b800
Binary files /dev/null and b/client/public/images/clients/clients-53.jpg differ
diff --git a/client/public/images/clients/clients-54.jpg b/client/public/images/clients/clients-54.jpg
new file mode 100644
index 0000000..cd85122
Binary files /dev/null and b/client/public/images/clients/clients-54.jpg differ
diff --git a/client/public/images/clients/clients-55.jpg b/client/public/images/clients/clients-55.jpg
new file mode 100644
index 0000000..cd35832
Binary files /dev/null and b/client/public/images/clients/clients-55.jpg differ
diff --git a/client/public/images/clients/clients-6.jpg b/client/public/images/clients/clients-6.jpg
new file mode 100644
index 0000000..23414f0
Binary files /dev/null and b/client/public/images/clients/clients-6.jpg differ
diff --git a/client/public/images/clients/clients-7.jpg b/client/public/images/clients/clients-7.jpg
new file mode 100644
index 0000000..d812e77
Binary files /dev/null and b/client/public/images/clients/clients-7.jpg differ
diff --git a/client/public/images/clients/clients-8.jpg b/client/public/images/clients/clients-8.jpg
new file mode 100644
index 0000000..1818708
Binary files /dev/null and b/client/public/images/clients/clients-8.jpg differ
diff --git a/client/public/images/clients/clients-9.jpg b/client/public/images/clients/clients-9.jpg
new file mode 100644
index 0000000..1b43a28
Binary files /dev/null and b/client/public/images/clients/clients-9.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-1.jpg b/client/public/images/clientsCarousel/clients-cal-1.jpg
new file mode 100644
index 0000000..4329a73
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-1.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-10.jpg b/client/public/images/clientsCarousel/clients-cal-10.jpg
new file mode 100644
index 0000000..fc9a5f9
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-10.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-11.jpg b/client/public/images/clientsCarousel/clients-cal-11.jpg
new file mode 100644
index 0000000..8a52226
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-11.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-12.jpg b/client/public/images/clientsCarousel/clients-cal-12.jpg
new file mode 100644
index 0000000..d520f14
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-12.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-13.jpg b/client/public/images/clientsCarousel/clients-cal-13.jpg
new file mode 100644
index 0000000..01fc97e
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-13.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-14.jpg b/client/public/images/clientsCarousel/clients-cal-14.jpg
new file mode 100644
index 0000000..eb431e1
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-14.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-15.jpg b/client/public/images/clientsCarousel/clients-cal-15.jpg
new file mode 100644
index 0000000..fb644b0
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-15.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-16.jpg b/client/public/images/clientsCarousel/clients-cal-16.jpg
new file mode 100644
index 0000000..14039c2
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-16.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-17.jpg b/client/public/images/clientsCarousel/clients-cal-17.jpg
new file mode 100644
index 0000000..625681e
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-17.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-18.jpg b/client/public/images/clientsCarousel/clients-cal-18.jpg
new file mode 100644
index 0000000..dc951aa
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-18.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-19.jpg b/client/public/images/clientsCarousel/clients-cal-19.jpg
new file mode 100644
index 0000000..b6a866c
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-19.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-2.jpg b/client/public/images/clientsCarousel/clients-cal-2.jpg
new file mode 100644
index 0000000..2eb5554
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-2.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-20.jpg b/client/public/images/clientsCarousel/clients-cal-20.jpg
new file mode 100644
index 0000000..76ef04d
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-20.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-21.jpg b/client/public/images/clientsCarousel/clients-cal-21.jpg
new file mode 100644
index 0000000..4329a73
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-21.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-3.jpg b/client/public/images/clientsCarousel/clients-cal-3.jpg
new file mode 100644
index 0000000..f9ad481
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-3.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-4.jpg b/client/public/images/clientsCarousel/clients-cal-4.jpg
new file mode 100644
index 0000000..d054971
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-4.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-5.jpg b/client/public/images/clientsCarousel/clients-cal-5.jpg
new file mode 100644
index 0000000..5ea0e6e
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-5.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-6.jpg b/client/public/images/clientsCarousel/clients-cal-6.jpg
new file mode 100644
index 0000000..5801f27
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-6.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-7.jpg b/client/public/images/clientsCarousel/clients-cal-7.jpg
new file mode 100644
index 0000000..b541b18
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-7.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-8.jpg b/client/public/images/clientsCarousel/clients-cal-8.jpg
new file mode 100644
index 0000000..95519bb
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-8.jpg differ
diff --git a/client/public/images/clientsCarousel/clients-cal-9.jpg b/client/public/images/clientsCarousel/clients-cal-9.jpg
new file mode 100644
index 0000000..71a0c4b
Binary files /dev/null and b/client/public/images/clientsCarousel/clients-cal-9.jpg differ
diff --git a/client/src/components/ClientsPage/ClientsContainer.tsx b/client/src/components/ClientsPage/ClientsContainer.tsx
new file mode 100644
index 0000000..7bf203f
--- /dev/null
+++ b/client/src/components/ClientsPage/ClientsContainer.tsx
@@ -0,0 +1,59 @@
+function chunkArray(arr: number[], cnt: number) {
+ const resultArray = [];
+ for (let i = 0; i < arr.length; i += cnt) {
+ const chunk = arr.slice(i, i + cnt);
+ resultArray.push(chunk);
+ }
+ return resultArray;
+}
+
+const ClientsContainer = () => {
+ const imageIndexes = Array.from({ length: 55 }, (_, i) => i + 1);
+ const imageSections = chunkArray(imageIndexes, 4);
+
+ return (
+
+
+ {imageSections.map((section, index) => {
+ return (
+
+
+

+
+
+

+
+
+

+
+
+

+
+
+ );
+ })}
+
+
+ );
+};
+
+export default ClientsContainer;
diff --git a/client/src/components/ClientsPage/ClientsPageCarousel.tsx b/client/src/components/ClientsPage/ClientsPageCarousel.tsx
new file mode 100644
index 0000000..315071b
--- /dev/null
+++ b/client/src/components/ClientsPage/ClientsPageCarousel.tsx
@@ -0,0 +1,110 @@
+import { useState } from "react";
+import ArrowCarouselIcon from "../../icons/ArrowCarouselIcon";
+import { thanksgivingLetters } from "../../consts/clientsPage";
+import { Image } from "../../types";
+import useStore from "../../store/store";
+import ZoomInLetterModal from "./ZoomInLetterModal";
+
+const IMAGE_WIDTH = 660;
+
+const ClientsPageCarousel = () => {
+ const middleLetter = Math.floor(thanksgivingLetters.length / 2);
+ const isOddCount = middleLetter % 2 === 1;
+ const defaultOffset = isOddCount ? 300 : 0;
+
+ const { setModal } = useStore();
+ const [letters, setLetters] = useState(thanksgivingLetters);
+ const [currentImage, setCurrentImage] = useState(middleLetter);
+ const [offset, setOffset] = useState(IMAGE_WIDTH);
+
+ const handleOnRightButtonClick = () => {
+ if (currentImage < letters.length) {
+ setOffset((prev) => prev - IMAGE_WIDTH);
+ setCurrentImage((prev) => prev + 1);
+ }
+ };
+
+ const handleOnLeftButtonClick = () => {
+ if (currentImage > 1) {
+ setOffset((prev) => prev + IMAGE_WIDTH);
+ setCurrentImage((prev) => prev - 1);
+ }
+ };
+
+ const handleOnBulletClick = (letterId: number) => {
+ return () => {
+ const updatedOffset = (currentImage - letterId) * IMAGE_WIDTH;
+ setOffset((prev) => prev + updatedOffset);
+ setCurrentImage(letterId);
+ };
+ };
+
+ const handleOnZoomIn = () => {
+ setModal(
+
+ );
+ };
+
+ return (
+
+
+ Благодарственные письма
+
+
+
+
+ {letters.map((letter) => (
+
+

+
+ ))}
+
+
+
+
+
+
+ {letters.map((letter) => (
+
+ ))}
+
+
+
+ );
+};
+
+export default ClientsPageCarousel;
diff --git a/client/src/components/ClientsPage/ZoomInLetterModal.tsx b/client/src/components/ClientsPage/ZoomInLetterModal.tsx
new file mode 100644
index 0000000..f0c8bd5
--- /dev/null
+++ b/client/src/components/ClientsPage/ZoomInLetterModal.tsx
@@ -0,0 +1,40 @@
+import { Image } from "../../types";
+
+type ZoomInLetterModalProps = {
+ images: Image[];
+ currentImage: number;
+};
+
+const ZoomInLetterModal = ({
+ images,
+ currentImage,
+}: ZoomInLetterModalProps) => {
+ return (
+
+
+ {images.map((image) => {
+ return (
+
+

+
+ );
+ })}
+
+
+ );
+};
+
+export default ZoomInLetterModal;
diff --git a/client/src/components/GalleryPage/ProjectsContainer.tsx b/client/src/components/GalleryPage/ProjectsContainer.tsx
index 55cb5b4..a46e77c 100644
--- a/client/src/components/GalleryPage/ProjectsContainer.tsx
+++ b/client/src/components/GalleryPage/ProjectsContainer.tsx
@@ -1,6 +1,9 @@
import { ProjectType } from "../../types";
import ProjectsSection from "./ProjectsSection";
-import { projects } from "../../consts/galleryPage";
+import { projects as mockProjects } from "../../consts/galleryPage";
+import useStore from "../../store/store";
+import { projectTabs } from "../../consts/galleryPage";
+import { useEffect, useState } from "react";
function getSlicedProjects(projects: ProjectType[]) {
const chunkSize = 5;
@@ -15,10 +18,25 @@ function getSlicedProjects(projects: ProjectType[]) {
}
const ProjectsContainer = () => {
+ const { selectedTab } = useStore();
+ const [projects, setProjects] = useState(mockProjects);
+ useEffect(() => {
+ if (selectedTab.id === projectTabs[0].id) {
+ setProjects(mockProjects);
+ } else {
+ const filteredProjects = mockProjects.filter((project) =>
+ project.tabs.some((tab) => tab.id === selectedTab.id)
+ );
+ setProjects(filteredProjects);
+ }
+
+ return () => {};
+ }, [selectedTab]);
+
const slicedProjects = getSlicedProjects(projects);
return (
-
+
{slicedProjects.map((pr) => (
))}
diff --git a/client/src/components/GalleryPage/ProjectsSection.tsx b/client/src/components/GalleryPage/ProjectsSection.tsx
index b8b13e5..0e08cb1 100644
--- a/client/src/components/GalleryPage/ProjectsSection.tsx
+++ b/client/src/components/GalleryPage/ProjectsSection.tsx
@@ -33,6 +33,7 @@ const FiveProjects = ({ projects }: GalleryProjectsProps) => {
const row = rows[index];
return (
![]()
{
const row = rows[index];
return (
![]()
{
const row = rows[index];
return (
![]()
{
return (
{title}
- {description}
+ {description}
);
};
diff --git a/client/src/components/ScrollToTopButton.tsx b/client/src/components/ScrollToTopButton.tsx
index c0a27d0..5ee4471 100644
--- a/client/src/components/ScrollToTopButton.tsx
+++ b/client/src/components/ScrollToTopButton.tsx
@@ -2,7 +2,7 @@ import { useEffect, useRef, useState } from "react";
import ScrollToTopIcon from "../icons/ScrollToTopIcon";
const ScrollToTopButton = () => {
- const [isVisible, setIsVisible] = useState
(true);
+ const [isVisible, setIsVisible] = useState(false);
const buttonRef = useRef(null);
const handleOnScroll = () => {
diff --git a/client/src/consts/clientsPage.tsx b/client/src/consts/clientsPage.tsx
new file mode 100644
index 0000000..70c5f46
--- /dev/null
+++ b/client/src/consts/clientsPage.tsx
@@ -0,0 +1,27 @@
+import { Image } from "../types";
+
+const thanksgivingLetters: Image[] = [
+ { id: 1, image: "/images/clientsCarousel/clients-cal-1.jpg" },
+ { id: 2, image: "/images/clientsCarousel/clients-cal-2.jpg" },
+ { id: 3, image: "/images/clientsCarousel/clients-cal-3.jpg" },
+ { id: 4, image: "/images/clientsCarousel/clients-cal-4.jpg" },
+ { id: 5, image: "/images/clientsCarousel/clients-cal-5.jpg" },
+ { id: 6, image: "/images/clientsCarousel/clients-cal-6.jpg" },
+ { id: 7, image: "/images/clientsCarousel/clients-cal-7.jpg" },
+ { id: 8, image: "/images/clientsCarousel/clients-cal-8.jpg" },
+ { id: 9, image: "/images/clientsCarousel/clients-cal-9.jpg" },
+ { id: 10, image: "/images/clientsCarousel/clients-cal-10.jpg" },
+ { id: 11, image: "/images/clientsCarousel/clients-cal-11.jpg" },
+ { id: 12, image: "/images/clientsCarousel/clients-cal-12.jpg" },
+ { id: 13, image: "/images/clientsCarousel/clients-cal-13.jpg" },
+ { id: 14, image: "/images/clientsCarousel/clients-cal-14.jpg" },
+ { id: 15, image: "/images/clientsCarousel/clients-cal-15.jpg" },
+ { id: 16, image: "/images/clientsCarousel/clients-cal-16.jpg" },
+ { id: 17, image: "/images/clientsCarousel/clients-cal-17.jpg" },
+ { id: 18, image: "/images/clientsCarousel/clients-cal-18.jpg" },
+ { id: 19, image: "/images/clientsCarousel/clients-cal-19.jpg" },
+ { id: 20, image: "/images/clientsCarousel/clients-cal-20.jpg" },
+ { id: 21, image: "/images/clientsCarousel/clients-cal-21.jpg" },
+];
+
+export { thanksgivingLetters };
diff --git a/client/src/consts/galleryPage.ts b/client/src/consts/galleryPage.ts
index 63b2ad2..0f23bdb 100644
--- a/client/src/consts/galleryPage.ts
+++ b/client/src/consts/galleryPage.ts
@@ -17,7 +17,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-1.jpg",
description: "",
link: "",
- tab:projectTabs[0]
+ tabs:[projectTabs[0]]
},
{
id: 2,
@@ -25,7 +25,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-2.jpg",
description: "Интерактивная презентация 2023.",
link: "",
- tab:projectTabs[6]
+ tabs:[projectTabs[6]]
},
{
id: 3,
@@ -33,7 +33,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-3.jpg",
description: "",
link: "",
- tab:projectTabs[0]
+ tabs:[projectTabs[0], projectTabs[4], projectTabs[6]]
},
{
id: 4,
@@ -41,7 +41,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-4.jpg",
description: "Интерактивная презентация жилого проекта 2023г.",
link: "",
- tab:projectTabs[6]
+ tabs:[projectTabs[6]]
},
{
id: 5,
@@ -49,13 +49,15 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-5.jpg",
description: "Строительный Форум100+ 2023г.",
link: "",
+ tabs:[projectTabs[6]]
},
{
id: 6,
- title: 'ЖК "Life Residence" для Паритет девелопмент',
+ title: 'ЖК "Life Residence" для Паритет девелопмент г. Тюмень',
imagePath: "/images/galleryProjects/gallery-projects-6.jpg",
description: "Интерактивная презентация 2023г.",
link: "",
+ tabs:[projectTabs[3], projectTabs[6]]
},
{
id: 7,
@@ -63,13 +65,15 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-7.jpg",
description: "Web Gl 2022г.",
link: "",
+ tabs:[projectTabs[4]]
},
{
id: 8,
- title: 'Центральная ППК"',
+ title: 'АО "Центральная ППК"',
imagePath: "/images/galleryProjects/gallery-projects-8.jpg",
description: "AR приложение 2022г.",
link: "",
+ tabs:[projectTabs[2]]
},
{
id: 9,
@@ -77,6 +81,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-9.jpg",
description: "Интерактивная 3D презентация 2022г.",
link: "",
+ tabs:[projectTabs[3]]
},
{
id: 10,
@@ -84,6 +89,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-10.jpg",
description: "VR 2022г.",
link: "",
+ tabs:[projectTabs[1]]
},
{
id: 11,
@@ -91,6 +97,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-11.jpg",
description: "",
link: "",
+ tabs:[projectTabs[2], projectTabs[5]]
},
{
id: 12,
@@ -98,6 +105,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-12.jpg",
description: "Интерактивный макет с VR - туром 2021г.",
link: "",
+ tabs:[projectTabs[1], projectTabs[3], projectTabs[6]]
},
{
id: 13,
@@ -105,13 +113,15 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-13.jpg",
description: "TOUCH-SCREEN 2021г.",
link: "",
+ tabs:[projectTabs[1], projectTabs[3], projectTabs[6]]
},
{
id: 14,
- title: 'ООО "CyberLympha" 2021г.',
+ title: 'ООО "CyberLympha"',
imagePath: "/images/galleryProjects/gallery-projects-14.jpg",
- description: "Мобильная AR игра",
+ description: "Мобильная AR игра 2021г.",
link: "",
+ tabs:[projectTabs[2], projectTabs[3], projectTabs[5]]
},
{
id: 15,
@@ -119,6 +129,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-15.jpg",
description: "",
link: "",
+ tabs:[projectTabs[2], projectTabs[5]]
},
{
id: 16,
@@ -126,6 +137,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-16.jpg",
description: "Интерактивный макет 2021г.",
link: "",
+ tabs:[projectTabs[3], projectTabs[6]]
},
{
id: 17,
@@ -133,6 +145,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-17.jpg",
description: "Виртуальная выставка 2021г.",
link: "",
+ tabs:[projectTabs[4]],
},
{
id: 18,
@@ -140,6 +153,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-18.jpg",
description: "Интерактивная онлайн выставка 2021г.",
link: "",
+ tabs:[projectTabs[4]],
},
{
id: 19,
@@ -147,6 +161,7 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-19.jpg",
description: "Интерактивная онлайн выставка 2020г.",
link: "",
+ tabs:[projectTabs[4]],
},
{
id: 20,
@@ -154,6 +169,207 @@ const projectTabs: ProjectTab[] = [
imagePath: "/images/galleryProjects/gallery-projects-20.jpg",
description: "Интерактивный конфигуратор квартиры 2021г.",
link: "",
+ tabs:[projectTabs[3], projectTabs[6]],
+ },
+ {
+ id: 21,
+ title: "Приложение для World Skills Russia МежВУЗ",
+ imagePath: "/images/galleryProjects/gallery-projects-21.jpg",
+ description: "Мобильное приложение 2021г.",
+ link: "",
+ tabs:[projectTabs[3], projectTabs[5]],
+ },
+ {
+ id: 22,
+ title: "Вертолет КА-52",
+ imagePath: "/images/galleryProjects/gallery-projects-22.jpg",
+ description: "2020г.",
+ link: "",
+ tabs:[projectTabs[3]],
+ },
+ {
+ id: 23,
+ tabs:[projectTabs[0]],
+ title: "Cимулятор погрузчика ричстакера SANY SRSC45C30",
+ imagePath: "/images/galleryProjects/gallery-projects-23.jpg",
+ description: "Интерактивное приложение - тренажёр 2020г.",
+ link: "",
+ },
+ {
+ id: 24,
+ tabs:[projectTabs[1], projectTabs[3], projectTabs[6]],
+ title: 'ЖК "УРАЛЬСКИЙ" для ГК Эфес г. Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-24.jpg",
+ description: 'Интерактивный макет 2020г.',
+ link: "",
+ },
+ {
+ id: 25,
+ tabs:[projectTabs[1]],
+ title: 'Сборка- разборка вертолетного двигателя',
+ imagePath: "/images/galleryProjects/gallery-projects-25.jpg",
+ description: 'Интерактивный VR тренажер 2020г.',
+ link: "",
+ },
+ {
+ id: 26,
+ tabs:[projectTabs[1], projectTabs[3], projectTabs[6]],
+ title: 'ЖК "Атмосфера" Фабрика Атмосферы г.Брянск',
+ imagePath: "/images/galleryProjects/gallery-projects-26.jpg",
+ description: 'Интерактивная 3D презентация для продажи недвижимости 2019г.',
+ link: "",
+ },
+ {
+ id: 27,
+ tabs:[projectTabs[1],projectTabs[3]],
+ title: 'L 410 NG Aircraft',
+ imagePath: "/images/galleryProjects/gallery-projects-27.jpg",
+ description: 'Интерактивная презентация самолёта 2019г.',
+ link: "",
+ },
+ {
+ id: 28,
+ tabs:[projectTabs[3]],
+ title: 'Самолет СУ-35',
+ imagePath: "/images/galleryProjects/gallery-projects-28.jpg",
+ description: 'Интерактивная презентация 2020г.',
+ link: "",
+ },
+ {
+ id: 29,
+ tabs:[projectTabs[3]],
+ title: 'Военнный корабль Удалой',
+ imagePath: "/images/galleryProjects/gallery-projects-29.jpg",
+ description: 'Интерактивная презентация 2019г.',
+ link: "",
+ },
+ {
+ id: 30,
+ tabs:[projectTabs[3], projectTabs[1]],
+ title: 'Танковый двигатель В-2',
+ imagePath: "/images/galleryProjects/gallery-projects-30.jpg",
+ description: 'Интерактивный VR тренажер 2019г.',
+ link: "",
+ },
+ {
+ id: 31,
+ tabs:[projectTabs[3]],
+ title: 'Военный автомобиль Тигр',
+ imagePath: "/images/galleryProjects/gallery-projects-31.jpg",
+ description: 'Интерактивная презентация 2019г.',
+ link: "",
+ },
+ {
+ id: 32,
+ tabs:[projectTabs[3]],
+ title: 'АО "Уралхиммаш"',
+ imagePath: "/images/galleryProjects/gallery-projects-32.jpg",
+ description: '3D презентация линии производства г.2019',
+ link: "",
+ },
+ {
+ id: 33,
+ tabs:[projectTabs[3], projectTabs[5], projectTabs[6]],
+ title: 'ЖК "Рудный" г.Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-33.jpg",
+ description: 'Мобильное приложение для продажи недвижимости 2017г.',
+ link: "",
+ },
+ {
+ id: 34,
+ tabs:[projectTabs[2], projectTabs[5], projectTabs[6]],
+ title: 'ЖК "Солнечный" для ГК Брусника г.Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-34.jpg",
+ description: 'AR дополненная реальность 2019г.',
+ link: "",
+ },
+ {
+ id: 35,
+ tabs:[projectTabs[3], projectTabs[5], projectTabs[6]],
+ title: 'ЖК "Тринити" для АН "НКС" г. Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-35.jpg",
+ description: 'Интерактивная 3д презентация для продажи недвижимости 2020г.',
+ link: "",
+ },
+ {
+ id: 36,
+ tabs:[projectTabs[3], projectTabs[5], projectTabs[6]],
+ title: 'ЖК "Дом на Опалихинской" г.Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-36.jpg",
+ description: 'Интерактивная 3D презентация для продажи недвижимости 2017г.',
+ link: "",
+ },
+ {
+ id: 37,
+ tabs:[projectTabs[1], projectTabs[3], projectTabs[6]],
+ title: 'ЖК "СВОЙ КРУГ" для Синара девелопмент г.Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-37.jpg",
+ description: 'Интерактивная 3д презентация для продажи недвижимости 2016г.',
+ link: "",
+ },
+ {
+ id: 38,
+ tabs:[projectTabs[3]],
+ title: 'МЦОД РФЯЦ-ВНИИТФ РОСАТОМ',
+ imagePath: "/images/galleryProjects/gallery-projects-38.jpg",
+ description: 'Мультимедийная презентация 2018г.',
+ link: "",
+ },
+ {
+ id: 39,
+ tabs:[projectTabs[3]],
+ title: 'ГК "ПИК- Индустрия" Презентация цеха мелкоштучных изделий',
+ imagePath: "/images/galleryProjects/gallery-projects-39.jpg",
+ description: 'Интерактивная презентация 2017г.',
+ link: "",
+ },
+ {
+ id: 40,
+ tabs:[projectTabs[1],projectTabs[3], projectTabs[6]],
+ title: 'ЖК "Миллениум" г.Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-40.jpg",
+ description: 'Интерактивная 3D презентация для продажи недвижимости 2018г.',
+ link: "",
+ },
+ {
+ id: 41,
+ tabs:[projectTabs[3]],
+ title: 'Пирамида для РФЯЦ-ВНИИТФ РОCАТОМ',
+ imagePath: "/images/galleryProjects/gallery-projects-41.jpg",
+ description: 'Интерактивная презентация с голографической пирамидой 2018г.',
+ link: "",
+ },
+ {
+ id: 42,
+ tabs:[projectTabs[3], projectTabs[6]],
+ title: 'ЖК "Электродом" КОРТРОС г. Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-42.jpg",
+ description: 'Интерактивная 3D презентация для демонстрации системы рекуперации 2016г.',
+ link: "",
+ },
+ {
+ id: 43,
+ tabs:[projectTabs[3], projectTabs[6]],
+ title: 'ЖК "Александровский" г.Екатеринбург',
+ imagePath: "/images/galleryProjects/gallery-projects-43.jpg",
+ description: 'Интерактивная 3D презентация для продажи недвижимости 2015г.',
+ link: "",
+ },
+ {
+ id: 44,
+ tabs:[projectTabs[0]],
+ title: '3D Интерактивная инструкция по сборке агрегата',
+ imagePath: "/images/galleryProjects/gallery-projects-44.jpg",
+ description: '2015г.',
+ link: "",
+ },
+ {
+ id: 45,
+ tabs:[projectTabs[3], projectTabs[5]],
+ title: 'Техноград ВДНХ',
+ imagePath: "/images/galleryProjects/gallery-projects-45.jpg",
+ description: '2017г.',
+ link: "",
},
];
diff --git a/client/src/icons/ArrowCarouselIcon.tsx b/client/src/icons/ArrowCarouselIcon.tsx
new file mode 100644
index 0000000..4275e3d
--- /dev/null
+++ b/client/src/icons/ArrowCarouselIcon.tsx
@@ -0,0 +1,28 @@
+type ArrowCarouselIconProps = {
+ isLeft?: boolean;
+ className?: string;
+};
+
+const ArrowCarouselIcon = ({ isLeft, className }: ArrowCarouselIconProps) => {
+ return (
+
+ );
+};
+
+export default ArrowCarouselIcon;
diff --git a/client/src/icons/CrossCircleIcon.tsx b/client/src/icons/CrossCircleIcon.tsx
index a909f08..1fe7072 100644
--- a/client/src/icons/CrossCircleIcon.tsx
+++ b/client/src/icons/CrossCircleIcon.tsx
@@ -18,10 +18,10 @@ const CrossCircleIcon = ({ isOpen }: CrossCircleIconProps) => {
xmlns="http://www.w3.org/2000/svg"
>
diff --git a/client/src/icons/ScrollToTopIcon.tsx b/client/src/icons/ScrollToTopIcon.tsx
index 1c681b2..c7bd9eb 100644
--- a/client/src/icons/ScrollToTopIcon.tsx
+++ b/client/src/icons/ScrollToTopIcon.tsx
@@ -8,7 +8,7 @@ const ScrollToTopIcon = () => {
width="50px"
height="50px"
viewBox="0 0 48 48"
- enable-background="new 0 0 48 48"
+ enableBackground="new 0 0 48 48"
>
,
},
+ {
+ path: "/clients",
+ element: ,
+ },
],
},
]);
diff --git a/client/src/pages/ClientsPage/ClientsPage.tsx b/client/src/pages/ClientsPage/ClientsPage.tsx
new file mode 100644
index 0000000..cf6fe99
--- /dev/null
+++ b/client/src/pages/ClientsPage/ClientsPage.tsx
@@ -0,0 +1,22 @@
+import HeaderTitle from "../../components/HeaderTitle";
+import ClientsContainer from "../../components/ClientsPage/ClientsContainer";
+import ClientsPageCarousel from "../../components/ClientsPage/ClientsPageCarousel";
+
+const ClientsPage = () => {
+ console.log("Array.from(5)");
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+};
+
+export default ClientsPage;
diff --git a/client/src/types.ts b/client/src/types.ts
index 7560f2e..916d985 100644
--- a/client/src/types.ts
+++ b/client/src/types.ts
@@ -24,7 +24,7 @@ type ProjectType = {
imagePath: string;
description: string;
link: string;
- tab?: ProjectTab;
+ tabs: ProjectTab[];
};
type ProjectTab = {
@@ -32,4 +32,9 @@ type ProjectTab = {
title: string;
};
-export type {ProjectTab, AccordionType, AdvantageType, DirectionImageType, ProjectType}
\ No newline at end of file
+type Image = {
+ id: number;
+ image: string;
+}
+
+export type {ProjectTab, AccordionType, AdvantageType, DirectionImageType, ProjectType, Image}
\ No newline at end of file