-
+
- {t("navigation.schedule")}
+ {t("navigation.tickets")}
arrow_right_alt
@@ -62,20 +39,21 @@ export default async function Home({
- event_note
+ confirmation_number
{t("home.sections.schedule.description")}
+
-
+
{t("navigation.tournaments")}
@@ -83,7 +61,6 @@ export default async function Home({
arrow_right_alt
-
trophy
@@ -93,47 +70,11 @@ export default async function Home({
-
-
-
- {t("navigation.expo")}
-
-
- arrow_right_alt
-
-
-
-
- weekend
-
-
- {t("home.sections.expo.description")}
-
-
-
- {/* Date */}
-
-
-
- {t("home.sections.reserveSpot")}
-
-
- arrow_right_alt
-
-
-
- {t("home.sections.dateAndLocation")}
-
-
+
+ {/* Teaser carousel */}
+
+
{/* Sponsors */}
diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx
new file mode 100644
index 0000000..aec1019
--- /dev/null
+++ b/src/components/HeroSection.tsx
@@ -0,0 +1,75 @@
+import Image from "next/image";
+import { Link } from "@/i18n/routing";
+import { vipnagorgialla } from "@/components/Vipnagorgialla";
+import { useTranslations } from "next-intl";
+
+export default function HeroSection() {
+ const t = useTranslations("home");
+
+ return (
+
+ {/* Background image */}
+
+ {/* Dark overlay */}
+
+
+ {/* Content */}
+
+ {/* Left: logo + info + CTA */}
+
+
+
+
+ {t("hero.date")}
+
+
+ {t("hero.location")}
+
+
+
+ {t("hero.buyTicket")}
+
+
+
+ {/* Right: prize pool + award */}
+
+
+
+ {t("hero.prizePool")}
+
+
+ 10 000€
+
+
+
+
+
+ {t("hero.award")}
+
+
+
+
+
+ );
+}
diff --git a/src/components/TeaserCarousel.tsx b/src/components/TeaserCarousel.tsx
new file mode 100644
index 0000000..b81446c
--- /dev/null
+++ b/src/components/TeaserCarousel.tsx
@@ -0,0 +1,101 @@
+"use client";
+
+import { useState } from "react";
+import Image from "next/image";
+import { Link } from "@/i18n/routing";
+import { vipnagorgialla } from "@/components/Vipnagorgialla";
+import { useTranslations } from "next-intl";
+
+type Slide = {
+ key: "compete" | "play" | "explore";
+ image: string;
+ imageAlt: string;
+ href: "/turniirid" | "/piletid" | "/messiala";
+};
+
+const slides: Slide[] = [
+ { key: "compete", image: "/images/landing/compete_teaser.jpg", imageAlt: "Võistle", href: "/turniirid" },
+ { key: "play", image: "/images/landing/play_teaser.png", imageAlt: "Mängi", href: "/piletid" },
+ { key: "explore", image: "/images/landing/explore_teaser.png", imageAlt: "Avasta", href: "/messiala" },
+];
+
+export default function TeaserCarousel() {
+ const t = useTranslations("home.teaser");
+ const [current, setCurrent] = useState(0);
+
+ const slide = slides[current];
+ const title = t(`${slide.key}.title`);
+ const description = t(`${slide.key}.description`);
+ const prize = t.raw(`${slide.key}.prize`) as string | null;
+
+ return (
+
+ {/* Heading */}
+
+
+ {t("heading")}
+
+
+
+ {/* Card */}
+
+ {/* Background image */}
+
+ {/* Dark overlay */}
+
+
+ {/* Content grid */}
+
+ {/* Left: text */}
+
+
+
+
+ {title}
+
+
+
+ {description}
+
+
+ {prize && (
+
+ {prize}
+
+ )}
+
+
+ {/* Right: spacer (image shows through the overlay) */}
+
+
+
+
+ {/* Navigation dots */}
+
+ {slides.map((_, i) => (
+
+
+ );
+}
diff --git a/translations/en.json b/translations/en.json
index 1726bad..431b46e 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -35,10 +35,38 @@
}
},
"home": {
- "title": "TipiLAN 2025",
+ "title": "TipiLAN 2026",
"subtitle": "Estonia's largest student-organized LAN event!",
- "welcome": "Welcome to TipiLAN 2025!",
+ "welcome": "Welcome to TipiLAN 2026!",
"description": "Join us at Estonia's largest student-organized LAN event. Games, competitions and much more await you!",
+ "hero": {
+ "date": "11–13 OCTOBER 2026",
+ "location": "TALTECH, EHITAJATE TEE 5",
+ "buyTicket": "BUY TICKETS",
+ "prizePool": "PRIZE POOL",
+ "award": "TALTECH STUDENT OF THE YEAR 2025"
+ },
+ "teaser": {
+ "heading": "COME TO TIPILAN AND...",
+ "compete": {
+ "title": "COMPETE",
+ "description": "Prove yourself in TipiLAN's CS2 and LoL tournaments: thousands in prize money, players from across Europe, and HLTV-ranked competition that could put you on the map.",
+ "prize": "2500€",
+ "link": "/turniirid"
+ },
+ "play": {
+ "title": "PLAY",
+ "description": "Enjoy the TipiLAN atmosphere — bring your computer, relax, play with friends and experience one of Estonia's largest gaming events.",
+ "prize": null,
+ "link": "/piletid"
+ },
+ "explore": {
+ "title": "EXPLORE",
+ "description": "Explore the TipiLAN expo area where companies, mini-competitions and lots more exciting things await you.",
+ "prize": null,
+ "link": "/messiala"
+ }
+ },
"sections": {
"schedule": {
"description": "TipiLAN is packed with exciting tournaments, mini-competitions and much more."
@@ -51,7 +79,7 @@
},
"reserveSpot": "Reserve your spot today!",
"poweredBy": "TipiLAN is powered by...",
- "dateAndLocation": "24th-26th Oct. @ TalTech main building"
+ "dateAndLocation": "11th–13th Oct. @ TalTech"
}
},
"tickets": {
diff --git a/translations/et.json b/translations/et.json
index 889e922..7bbbaba 100644
--- a/translations/et.json
+++ b/translations/et.json
@@ -35,10 +35,38 @@
}
},
"home": {
- "title": "TipiLAN 2025",
+ "title": "TipiLAN 2026",
"subtitle": "Eesti suurim tudengite korraldatud LAN!",
- "welcome": "Tere tulemast TipiLAN 2025 sündmusele!",
+ "welcome": "Tere tulemast TipiLAN 2026 sündmusele!",
"description": "Liitu meiega Eesti suurimal tudengite korraldatud LAN-üritusel. Mängud, võistlused ja palju muud ootavad sind!",
+ "hero": {
+ "date": "11.–13. OKTOOBER 2026",
+ "location": "TALTECH, EHITAJATE TEE 5",
+ "buyTicket": "OSTA PILET",
+ "prizePool": "AUHINNAFOND",
+ "award": "TALTECHI AASTA TUDENGITEÜS 2025"
+ },
+ "teaser": {
+ "heading": "TULE TIPILANILE JA...",
+ "compete": {
+ "title": "VÕISTLE",
+ "description": "Tõesta end TipiLANi CS2 ja LoL featurniiridel: tuhanded eurod auhinnarahas, mängijad üle kogu Euroopa ja HLTV-reitinguga võistlus, mis viib sind maailmakaardile.",
+ "prize": "2500€",
+ "link": "/turniirid"
+ },
+ "play": {
+ "title": "MÄNGI",
+ "description": "Naudi TipiLANi atmosfääri – too kaasa arvuti, istutle mugavalt, mängi sõpradega ja koge ühte Eesti suurimat mänguüritust.",
+ "prize": null,
+ "link": "/piletid"
+ },
+ "explore": {
+ "title": "AVASTA",
+ "description": "Avasta TipiLANi messialat, kus ootavad sind erinevad ettevõtted, mini-võistlused ja palju muud põnevat.",
+ "prize": null,
+ "link": "/messiala"
+ }
+ },
"sections": {
"schedule": {
"description": "TipiLAN on pungil põnevatest turniiridest, mini-võistlustest ja paljust muust."
@@ -51,7 +79,7 @@
},
"reserveSpot": "Broneeri oma koht juba täna!",
"poweredBy": "TipiLANi tõmbab käima...",
- "dateAndLocation": "24.-26. okt. TalTechi peahoones"
+ "dateAndLocation": "11.–13. okt. TalTechis"
}
},
"tickets": {
diff --git a/tsconfig.json b/tsconfig.json
index c133409..b575f7d 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,11 @@
{
"compilerOptions": {
"target": "ES2017",
- "lib": ["dom", "dom.iterable", "esnext"],
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
@@ -11,7 +15,7 @@
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "preserve",
+ "jsx": "react-jsx",
"incremental": true,
"plugins": [
{
@@ -19,9 +23,19 @@
}
],
"paths": {
- "@/*": ["./src/*"]
+ "@/*": [
+ "./src/*"
+ ]
}
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts",
+ ".next/dev/types/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
}