diff --git a/package-lock.json b/package-lock.json
index ddf3bd2..80eedac 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,8 @@
"dependencies": {
"next": "15.3.5",
"react": "^19.0.0",
- "react-dom": "^19.0.0"
+ "react-dom": "^19.0.0",
+ "swiper": "^11.2.10"
},
"devDependencies": {
"@eslint/eslintrc": "^3",
@@ -5732,6 +5733,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/swiper": {
+ "version": "11.2.10",
+ "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.10.tgz",
+ "integrity": "sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ==",
+ "funding": [
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/swiperjs"
+ },
+ {
+ "type": "open_collective",
+ "url": "http://opencollective.com/swiper"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.7.0"
+ }
+ },
"node_modules/tailwindcss": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz",
diff --git a/package.json b/package.json
index 8e6b6da..e874700 100644
--- a/package.json
+++ b/package.json
@@ -9,19 +9,20 @@
"lint": "next lint"
},
"dependencies": {
+ "next": "15.3.5",
"react": "^19.0.0",
"react-dom": "^19.0.0",
- "next": "15.3.5"
+ "swiper": "^11.2.10"
},
"devDependencies": {
- "typescript": "^5",
+ "@eslint/eslintrc": "^3",
+ "@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
- "@tailwindcss/postcss": "^4",
- "tailwindcss": "^4",
"eslint": "^9",
"eslint-config-next": "15.3.5",
- "@eslint/eslintrc": "^3"
+ "tailwindcss": "^4",
+ "typescript": "^5"
}
}
diff --git a/public/icons/swiper.svg b/public/icons/swiper.svg
new file mode 100644
index 0000000..92c1e2a
--- /dev/null
+++ b/public/icons/swiper.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/images/activities/car1.png b/public/images/activities/car1.png
new file mode 100644
index 0000000..b39ac5f
Binary files /dev/null and b/public/images/activities/car1.png differ
diff --git a/public/images/activities/paper_tear.png b/public/images/activities/paper_tear.png
new file mode 100644
index 0000000..6c7ecd2
Binary files /dev/null and b/public/images/activities/paper_tear.png differ
diff --git a/src/components/Activities.tsx b/src/components/Activities.tsx
new file mode 100644
index 0000000..e35305d
--- /dev/null
+++ b/src/components/Activities.tsx
@@ -0,0 +1,168 @@
+/* eslint-disable @next/next/no-img-element */
+import { fluxgore } from "@/utils/fonts";
+import { useRef, useState } from "react";
+import { Swiper, SwiperSlide } from "swiper/react";
+import type { Swiper as SwiperType } from "swiper";
+
+import "swiper/css";
+
+const iconPath = "/icons/swiper.svg";
+
+function SwiperButton({
+ onClick,
+ direction = "next",
+ disabled = false,
+}: {
+ onClick: () => void;
+ direction?: "next" | "prev";
+ disabled?: boolean;
+}) {
+ return (
+
+ );
+}
+
+function Slide({ title, imageSrc }: { title: string; imageSrc: string }) {
+ return (
+
+
+ {title}
+
+

+
+

+
+ );
+}
+
+function Activities() {
+ const swiperRef = useRef(null);
+ const [isBeginning, setIsBeginning] = useState(true);
+ const [isEnd, setIsEnd] = useState(false);
+
+ const handlePrevious = () => {
+ swiperRef.current?.slidePrev();
+ };
+
+ const handleNext = () => {
+ swiperRef.current?.slideNext();
+ };
+
+ const handleSwiperInit = (swiper: SwiperType) => {
+ swiperRef.current = swiper;
+ setIsBeginning(swiper.isBeginning);
+ setIsEnd(swiper.isEnd);
+ };
+
+ const handleSlideChange = (swiper: SwiperType) => {
+ setIsBeginning(swiper.isBeginning);
+ setIsEnd(swiper.isEnd);
+ };
+
+ return (
+
+
+
+
+ Активности фестиваля
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default Activities;
diff --git a/src/components/Button.tsx b/src/components/Button.tsx
index 9875762..2968111 100644
--- a/src/components/Button.tsx
+++ b/src/components/Button.tsx
@@ -23,101 +23,99 @@ export default function Button(props: ButtonProps) {
};
return (
-
-
- {/* Shadow element */}
- {shadowEnabled && (
-
- )}
- {/* Button */}
-
);
}
diff --git a/src/components/Cover.tsx b/src/components/Cover.tsx
index 9c5946c..b0d9adc 100644
--- a/src/components/Cover.tsx
+++ b/src/components/Cover.tsx
@@ -10,83 +10,79 @@ function CoverHeading({ children, textPosition }: CoverHeadingProps) {
const textAlign = textPosition || "left";
return (
-
-
- {/* Shadow layer */}
- {textAlign === "left" && (
-
- {children}
-
- )}
-
- {textAlign === "right" && (
-
- {children}
-
- )}
-
- {/* Main text */}
+
+ {/* Shadow layer */}
+ {textAlign === "left" && (
{children}
-
-
+ )}
+
+ {textAlign === "right" && (
+
+ {children}
+
+ )}
+
+ {/* Main text */}
+
+ {children}
+
+
);
}
function DateBox() {
return (
-
-
-
- 5-7 СЕНТЯБРЯ
-
- МОСКВА 2025
-
+ border: "4px solid black",
+ }}
+ >
+
+ 5-7 СЕНТЯБРЯ
+
+ МОСКВА 2025
);
diff --git a/src/components/Events.tsx b/src/components/Events.tsx
index 9213335..8572bc6 100644
--- a/src/components/Events.tsx
+++ b/src/components/Events.tsx
@@ -59,9 +59,9 @@ function Events() {
-
-
что вас ждет
-
+
+ что вас ждет
+
+
+
+
diff --git a/src/components/Partners.tsx b/src/components/Partners.tsx
new file mode 100644
index 0000000..0f9bfce
--- /dev/null
+++ b/src/components/Partners.tsx
@@ -0,0 +1,5 @@
+function Partners() {
+ return
Partners
;
+}
+
+export default Partners;
diff --git a/src/components/Scheme.tsx b/src/components/Scheme.tsx
index fafdcbc..e093638 100644
--- a/src/components/Scheme.tsx
+++ b/src/components/Scheme.tsx
@@ -97,7 +97,7 @@ function Scheme() {
-
+
{venues.map((venue) => (
-
-
как это Было
-
+
+ как это Было
+
-
-
- Прошлый фестиваль технических видов спорта стал незабываемым
- праздником скорости и мастерства, собрав рекордное количество
- участников и зрителей.
-
-
+
+ Прошлый фестиваль технических видов спорта стал незабываемым
+ праздником скорости и мастерства, собрав рекордное количество
+ участников и зрителей.
+
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index c8d6394..fdaa57b 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -1,3 +1,4 @@
+import Activities from "@/components/Activities";
import Cover from "@/components/Cover";
import Events from "@/components/Events";
import Info from "@/components/Info";
@@ -15,6 +16,7 @@ export default function Home() {
+
>
);
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 759eacf..64bc3c2 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -2,6 +2,7 @@
:root {
height: 100%;
+ overflow-x: hidden;
}
body {