mirror of
https://github.com/Lapikud/tipilan.git
synced 2026-05-08 18:08:32 +00:00
Compare commits
6 Commits
landing-20
...
2026/main-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aafc2421cf | ||
|
|
e278d7bd25 | ||
|
|
c177ca1040 | ||
|
|
0b42131690 | ||
|
|
c5bff17388 | ||
|
|
403ff6adfb |
BIN
public/images/landing/student_award.webp
Normal file
BIN
public/images/landing/student_award.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -41,9 +41,6 @@ export default async function Home({
|
|||||||
<span className="material-symbols-outlined !text-[clamp(2rem,1.5rem+1.5vw,3.5rem)] text-[#007CAB] dark:text-[#00A3E0] dark:group-hover:text-[#EEE5E5] group-hover:text-[#EEE5E5]">
|
<span className="material-symbols-outlined !text-[clamp(2rem,1.5rem+1.5vw,3.5rem)] text-[#007CAB] dark:text-[#00A3E0] dark:group-hover:text-[#EEE5E5] group-hover:text-[#EEE5E5]">
|
||||||
confirmation_number
|
confirmation_number
|
||||||
</span>
|
</span>
|
||||||
<p className="text-[clamp(0.875rem,0.75rem+0.5vw,1.25rem)] tracking-[-0.045rem] dark:group-hover:text-[#2A2C3F] group-hover:text-black">
|
|
||||||
{t("home.sections.schedule.description")}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
@@ -65,9 +62,6 @@ export default async function Home({
|
|||||||
<span className="material-symbols-outlined !text-[clamp(2rem,1.5rem+1.5vw,3.5rem)] text-[#007CAB] dark:text-[#00A3E0] dark:group-hover:text-[#EEE5E5] group-hover:text-[#EEE5E5]">
|
<span className="material-symbols-outlined !text-[clamp(2rem,1.5rem+1.5vw,3.5rem)] text-[#007CAB] dark:text-[#00A3E0] dark:group-hover:text-[#EEE5E5] group-hover:text-[#EEE5E5]">
|
||||||
trophy
|
trophy
|
||||||
</span>
|
</span>
|
||||||
<p className="text-[clamp(0.875rem,0.75rem+0.5vw,1.25rem)] tracking-[-0.045rem] dark:group-hover:text-[#2A2C3F] group-hover:text-black">
|
|
||||||
{t("home.sections.tournaments.description")}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ const workSans = Work_Sans({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "TipiLAN 2025",
|
title: "TipiLAN 2026",
|
||||||
description: "TipiLAN 2025 – Eesti suurim tudengite korraldatud LAN!",
|
description: "TipiLAN 2026 – Eesti suurim tudengite korraldatud LAN!",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { SiDiscord, SiInstagram, SiFacebook } from "react-icons/si";
|
import { SiDiscord, SiInstagram, SiFacebook } from "react-icons/si";
|
||||||
import Image from "next/image";
|
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
// Fonts
|
// Fonts
|
||||||
@@ -9,122 +8,82 @@ const Footer = () => {
|
|||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col justify-center sm:justify-between px-6 py-8 md:px-12 md:py-16 gap-4 md:gap-8">
|
<div className="flex flex-col justify-center sm:justify-between px-6 py-6 md:px-12 md:py-8 gap-4">
|
||||||
<div className="flex md:items-center gap-8 md:gap-0 justify-between flex-col md:flex-row">
|
|
||||||
<div className="flex flex-col items-start md:items-center">
|
|
||||||
<Image
|
|
||||||
src="/tipilan-white.svg"
|
|
||||||
width={250}
|
|
||||||
height={36}
|
|
||||||
alt="TipiLAN Logo"
|
|
||||||
className="h-9 dark:hidden"
|
|
||||||
/>
|
|
||||||
<Image
|
|
||||||
src="/tipilan-dark.svg"
|
|
||||||
width={250}
|
|
||||||
height={36}
|
|
||||||
alt="TipiLAN Logo"
|
|
||||||
className="h-9 not-dark:hidden"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
{/* Social media */}
|
|
||||||
<div className="flex flex-row">
|
|
||||||
<a
|
|
||||||
href="https://discord.gg/pPhhatZAfA"
|
|
||||||
target="_blank"
|
|
||||||
className="mx-4 ml-0 md:ml-4"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
<SiDiscord
|
|
||||||
title="Discord"
|
|
||||||
size={"2em"}
|
|
||||||
className="text-[#2A2C3F] dark:text-[#EEE5E5] hover:text-[#007CAB] hover:dark:text-[#00A3E0] transition"
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="https://instagram.com/tipilan.ee"
|
|
||||||
target="_blank"
|
|
||||||
className="mx-4"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
<SiInstagram
|
|
||||||
title="Instagram"
|
|
||||||
size={"2em"}
|
|
||||||
className="text-[#2A2C3F] dark:text-[#EEE5E5] hover:text-[#007CAB] hover:dark:text-[#00A3E0] transition"
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="https://facebook.com/tipilan.ee"
|
|
||||||
target="_blank"
|
|
||||||
className="mx-4"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
<SiFacebook
|
|
||||||
title="Facebook"
|
|
||||||
size={"2em"}
|
|
||||||
className="text-[#2A2C3F] dark:text-[#EEE5E5] hover:text-[#007CAB] hover:dark:text-[#00A3E0] transition"
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<h2
|
<h2
|
||||||
className={`text-3xl sm:text-4xl ${vipnagorgialla.className} font-bold italic uppercase text-[#2A2C3F] dark:text-[#EEE5E5] mt-8 mb-4`}
|
className={`text-3xl sm:text-4xl ${vipnagorgialla.className} font-bold italic uppercase text-[#2A2C3F] dark:text-[#EEE5E5] mb-4`}
|
||||||
>
|
>
|
||||||
{t("footer.contact")}
|
{t("footer.contact")}
|
||||||
</h2>
|
</h2>
|
||||||
<div className="flex flex-row justify-between gap-4 items-center">
|
<div className="flex flex-row justify-between gap-8 items-start">
|
||||||
<div>
|
<div>
|
||||||
<h3 className="text-xl font-bold">{t("footer.studentUnion")}</h3>
|
<h3 className="text-xl font-bold">
|
||||||
<div className="flex flex-col gap-2 mt-2">
|
MTÜ Lapikud
|
||||||
<div className="flex flex-row gap-2">
|
|
||||||
<span className="material-symbols-outlined !font-bold text-[#007CAB] dark:text-[#00A3E0]">
|
|
||||||
mail
|
|
||||||
</span>
|
|
||||||
<a href="mailto:tipilan@ituk.ee" className="underline">
|
|
||||||
tipilan@ituk.ee
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-row gap-2">
|
|
||||||
<span className="material-symbols-outlined !font-bold text-[#007CAB] dark:text-[#00A3E0]">
|
|
||||||
phone
|
|
||||||
</span>
|
|
||||||
<a href="tel:+37256931193" className="underline">
|
|
||||||
+372 5693 1193
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h3 className="text-xl font-bold pt-4">
|
|
||||||
{t("footer.organization")}
|
|
||||||
</h3>
|
</h3>
|
||||||
<div>
|
<div className="flex flex-col gap-2 mt-2">
|
||||||
<p>
|
<p>
|
||||||
{t("footer.registrationCode")}:{" "}
|
{t("footer.registrationCode")}:{" "}
|
||||||
<span className="font-semibold text-[#007CAB] dark:text-[#00A3E0]">
|
<span className="font-semibold text-[#007CAB] dark:text-[#00A3E0]">
|
||||||
80391807
|
80167145
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p className="">ICO-210, Raja tn 4c, Tallinn, Harjumaa, 12616</p>
|
<p className="">Swedbank EE842200221094704780</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div className="flex flex-col gap-2 items-center">
|
||||||
<div className="block align-middle text-center pt-16">
|
<div className="flex flex-row gap-2">
|
||||||
{t("footer.madeBy")}{" "}
|
<span className="material-symbols-outlined !font-bold text-[#007CAB] dark:text-[#00A3E0]">
|
||||||
<a
|
mail
|
||||||
target="_blank"
|
</span>
|
||||||
href="https://lapikud.ee/"
|
<a href="mailto:tipilaninfo@gmail.com" className="underline">
|
||||||
className="text-[#E3983E] font-bold"
|
tipilaninfo@gmail.com
|
||||||
>
|
</a>
|
||||||
MTÜ Lapikud
|
</div>
|
||||||
</a>{" "}
|
<div className="flex flex-row gap-2">
|
||||||
{t("footer.withHelpFrom")}{" "}
|
<span className="material-symbols-outlined !font-bold text-[#007CAB] dark:text-[#00A3E0]">
|
||||||
<a
|
phone
|
||||||
target="_blank"
|
</span>
|
||||||
href="https://ituk.ee/"
|
<a href="tel:+37256931193" className="underline">
|
||||||
className="bg-[#7B1642] font-bold not-dark:text-white"
|
+372 5693 1193
|
||||||
>
|
</a>
|
||||||
MTÜ For Tsükkel/ITÜK
|
</div>
|
||||||
</a>
|
</div>
|
||||||
|
{/* Social media */}
|
||||||
|
<div className="flex flex-row gap-4">
|
||||||
|
<a
|
||||||
|
href="https://discord.gg/pPhhatZAfA"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<SiDiscord
|
||||||
|
title="Discord"
|
||||||
|
size={"2em"}
|
||||||
|
className="text-[#2A2C3F] dark:text-[#EEE5E5] hover:text-[#007CAB] hover:dark:text-[#00A3E0] transition"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="https://instagram.com/tipilan.ee"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<SiInstagram
|
||||||
|
title="Instagram"
|
||||||
|
size={"2em"}
|
||||||
|
className="text-[#2A2C3F] dark:text-[#EEE5E5] hover:text-[#007CAB] hover:dark:text-[#00A3E0] transition"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="https://facebook.com/tipilan.ee"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<SiFacebook
|
||||||
|
title="Facebook"
|
||||||
|
size={"2em"}
|
||||||
|
className="text-[#2A2C3F] dark:text-[#EEE5E5] hover:text-[#007CAB] hover:dark:text-[#00A3E0] transition"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -56,16 +56,16 @@ export default function HeroSection() {
|
|||||||
10 000€
|
10 000€
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col items-start md:items-end gap-2 mt-2">
|
<div className="flex flex-row items-center md:items-center gap-0 mt-2">
|
||||||
<Image
|
<Image
|
||||||
src="/images/landing/student_award.png"
|
src="/images/landing/student_award.webp"
|
||||||
width={180}
|
width={180}
|
||||||
height={180}
|
height={180}
|
||||||
alt="TalTech student award"
|
alt="TalTech student award"
|
||||||
className="object-contain"
|
className="object-contain"
|
||||||
/>
|
/>
|
||||||
<p className={`text-[32px] leading-none tracking-normal uppercase text-right text-[#EEE5E5] ${vipnagorgialla.className} font-bold italic`}>
|
<p className={`text-[32px] leading-none tracking-normal uppercase text-right align-middle text-[#EEE5E5] ${vipnagorgialla.className} font-bold italic`}>
|
||||||
{t("hero.award")}
|
{t("hero.awardPrefix")} <span className="text-[#00A3E0]">{t("hero.awardHighlight")}</span> {t("hero.awardSuffix")}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,8 +1,39 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useState, useEffect, useCallback } from "react";
|
||||||
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import NextLink from "next/link";
|
import NextLink from "next/link";
|
||||||
|
|
||||||
|
interface Sponsor {
|
||||||
|
href: string;
|
||||||
|
src: string;
|
||||||
|
alt: string;
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
className?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sponsors: Sponsor[] = [
|
||||||
|
{ href: "https://taltech.ee", src: "/sponsors/taltech-color.png", alt: "Taltech (Tallinna Tehnikaülikool)", width: 192, height: 192 },
|
||||||
|
{ href: "https://www.redbull.com/ee-et/", src: "/sponsors/redbull.png", alt: "Redbull", width: 80, height: 80 },
|
||||||
|
{ href: "https://www.simracing.ee/", src: "/sponsors/EVAL.png", alt: "EVAL", width: 200, height: 200 },
|
||||||
|
{ href: "https://www.facebook.com/bfglOfficial", src: "/sponsors/BFGL.png", alt: "BFGL", width: 192, height: 192 },
|
||||||
|
{ href: "https://www.tomorrow.ee/", src: "/sponsors/nt.png", alt: "Network Tomorrow", width: 300, height: 200 },
|
||||||
|
{ href: "https://k-space.ee/", src: "/sponsors/k-space_ee-white.png", alt: "K-Space", width: 200, height: 200, className: "not-dark:invert" },
|
||||||
|
{ href: "https://globalproductions.ee/", src: "/sponsors/Global-productions.png", alt: "Global Productions", width: 200, height: 200 },
|
||||||
|
{ href: "https://www.linkedin.com/company/gamedev-guild/", src: "/sponsors/estonian_gamedev_guild.png", alt: "Estonian Gamedev Guild", width: 200, height: 200, className: "not-dark:invert" },
|
||||||
|
{ href: "https://alzgamer.ee/", src: "/sponsors/alzgamer.png", alt: "AlzGamer", width: 200, height: 200 },
|
||||||
|
];
|
||||||
|
|
||||||
|
// Split sponsors into slides (6 per slide)
|
||||||
|
const SPONSORS_PER_SLIDE = 6;
|
||||||
|
const slides: Sponsor[][] = [];
|
||||||
|
for (let i = 0; i < sponsors.length; i += SPONSORS_PER_SLIDE) {
|
||||||
|
slides.push(sponsors.slice(i, i + SPONSORS_PER_SLIDE));
|
||||||
|
}
|
||||||
|
|
||||||
interface SponsorsProps {
|
interface SponsorsProps {
|
||||||
showTitle?: boolean;
|
showTitle?: boolean;
|
||||||
className?: string;
|
className?: string;
|
||||||
@@ -13,191 +44,65 @@ export default function Sponsors({
|
|||||||
className = "",
|
className = "",
|
||||||
}: SponsorsProps) {
|
}: SponsorsProps) {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
const [current, setCurrent] = useState(0);
|
||||||
|
|
||||||
|
const next = useCallback(() => setCurrent((c) => (c + 1) % slides.length), []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const id = setInterval(next, 5000);
|
||||||
|
return () => clearInterval(id);
|
||||||
|
}, [next]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`p-12 flex flex-col ${vipnagorgialla.className} font-bold italic border-b-3 border-[#1F5673] ${className}`}
|
className={`flex flex-col max-w-[1920px] h-[414px] mx-auto ${vipnagorgialla.className} font-bold italic border-b-3 border-[#1F5673] ${className}`}
|
||||||
>
|
>
|
||||||
<div className="text-left flex flex-col justify-between xl:justify-start">
|
{showTitle && (
|
||||||
{showTitle && (
|
<h3 className="text-4xl md:text-5xl dark:text-[#EEE5E5] text-[#2A2C3F] px-12 pt-8 pb-4">
|
||||||
<h3 className="text-4xl md:text-5xl dark:text-[#EEE5E5] text-[#2A2C3F] group-hover:text-black pb-8">
|
{t("home.sections.poweredBy")}
|
||||||
{t("home.sections.poweredBy")}
|
</h3>
|
||||||
</h3>
|
)}
|
||||||
)}
|
|
||||||
<div className="flex flex-col sm:flex-row flex-wrap gap-8 md:gap-18 items-center justify-center xl:justify-start">
|
{/* Carousel container */}
|
||||||
<NextLink href="https://taltech.ee" target="_blank">
|
<div className="relative flex-1 overflow-hidden">
|
||||||
<Image
|
<div
|
||||||
src="/sponsors/taltech-color.png"
|
className="flex h-full transition-transform duration-500 ease-in-out"
|
||||||
alt="Taltech (Tallinna Tehnikaülikool)"
|
style={{ transform: `translateX(-${current * 100}%)` }}
|
||||||
width={192}
|
>
|
||||||
height={192}
|
{slides.map((slideSponsors, slideIndex) => (
|
||||||
className="object-contain"
|
<div
|
||||||
/>
|
key={slideIndex}
|
||||||
</NextLink>
|
className="flex-none w-full h-full flex items-center justify-center gap-8 md:gap-12 px-12"
|
||||||
<NextLink href="https://www.redbull.com/ee-et/" target="_blank">
|
>
|
||||||
<Image
|
{slideSponsors.map((sponsor, i) => (
|
||||||
src="/sponsors/redbull.png"
|
<NextLink key={i} href={sponsor.href} target="_blank">
|
||||||
alt="Redbull"
|
<Image
|
||||||
width={80}
|
src={sponsor.src}
|
||||||
height={80}
|
alt={sponsor.alt}
|
||||||
className="object-contain"
|
width={sponsor.width}
|
||||||
/>
|
height={sponsor.height}
|
||||||
</NextLink>
|
className={`object-contain max-h-[180px] ${sponsor.className || ""}`}
|
||||||
<NextLink href="https://www.alecoq.ee" target="_blank">
|
/>
|
||||||
<Image
|
</NextLink>
|
||||||
src="/sponsors/alecoq.svg"
|
))}
|
||||||
alt="Alecoq"
|
</div>
|
||||||
width={200}
|
))}
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://www.simracing.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/EVAL.png"
|
|
||||||
alt="EVAL"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://balsnack.ee" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/balsnack.svg"
|
|
||||||
alt="Balsnack"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink
|
|
||||||
href="https://www.rara.ee/sundmused/interaktiivne-videomangude-muuseum-lvlup/"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<Image
|
|
||||||
src="/sponsors/lvlup_logo_export.svg"
|
|
||||||
alt="LVLup!"
|
|
||||||
width={192}
|
|
||||||
height={192}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink
|
|
||||||
href="https://www.facebook.com/bfglOfficial"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<Image
|
|
||||||
src="/sponsors/BFGL.png"
|
|
||||||
alt="BFGL"
|
|
||||||
width={192}
|
|
||||||
height={192}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://www.tallinn.ee/et/haridus" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/Tallinna_Haridusamet_logo_RGB.svg"
|
|
||||||
alt="Tallinna Haridusamet"
|
|
||||||
width={292}
|
|
||||||
height={292}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://www.militaarseiklus.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/militaarseiklus.png"
|
|
||||||
alt="Militaarseiklus"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink
|
|
||||||
href="https://www.linkedin.com/company/gamedev-guild/"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<Image
|
|
||||||
src="/sponsors/estonian_gamedev_guild.png"
|
|
||||||
alt="Estonian Gamedev Guild"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain not-dark:invert"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://thotell.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/thotell.png"
|
|
||||||
alt="Tahentorni Hotell (Tähentorni Hotel)"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://www.dominos.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/dominos.png"
|
|
||||||
alt="Domino's Pizza"
|
|
||||||
width={250}
|
|
||||||
height={250}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://www.tomorrow.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/nt.png"
|
|
||||||
alt="Network Tomorrow"
|
|
||||||
width={300}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://driftikeskus.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/driftikeskus.png"
|
|
||||||
alt="Driftikeskus"
|
|
||||||
width={300}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://ingame.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/ingame.png"
|
|
||||||
alt="Ingame"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://alzgamer.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/alzgamer.png"
|
|
||||||
alt="AlzGamer"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://k-space.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/k-space_ee-white.png"
|
|
||||||
alt="K-Space"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain not-dark:invert"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
<NextLink href="https://globalproductions.ee/" target="_blank">
|
|
||||||
<Image
|
|
||||||
src="/sponsors/Global-productions.png"
|
|
||||||
alt="Global Productions"
|
|
||||||
width={200}
|
|
||||||
height={200}
|
|
||||||
className="object-contain"
|
|
||||||
/>
|
|
||||||
</NextLink>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Navigation dots */}
|
||||||
|
<div className="flex justify-center gap-3 py-4">
|
||||||
|
{slides.map((_, i) => (
|
||||||
|
<button
|
||||||
|
key={i}
|
||||||
|
onClick={() => setCurrent(i)}
|
||||||
|
className={`w-3 h-3 rounded-full transition ${
|
||||||
|
i === current ? "bg-[#007CAB]" : "bg-[#1F5673] hover:bg-[#007CAB]/60"
|
||||||
|
}`}
|
||||||
|
aria-label={`Slide ${i + 1}`}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,23 @@ type Slide = {
|
|||||||
fullBrightness?: boolean;
|
fullBrightness?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Helper to highlight "LAN" in "TIPILAN" with blue color
|
||||||
|
function highlightLAN(text: string) {
|
||||||
|
const parts = text.split(/(TIPILAN\w*)/gi);
|
||||||
|
return parts.map((part, i) => {
|
||||||
|
const upper = part.toUpperCase();
|
||||||
|
if (upper.startsWith("TIPILAN")) {
|
||||||
|
const suffix = part.slice(7); // Everything after "TIPILAN"
|
||||||
|
return (
|
||||||
|
<span key={i}>
|
||||||
|
TIPI<span className="text-[#00A3E0]">LAN</span>{suffix.toUpperCase()}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return part;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const slides: Slide[] = [
|
const slides: Slide[] = [
|
||||||
{ key: "compete", image: "/images/landing/compete_teaser.jpg", imageAlt: "Võistle", hero: "/images/landing/compete_hero.png", href: "/turniirid" },
|
{ key: "compete", image: "/images/landing/compete_teaser.jpg", imageAlt: "Võistle", hero: "/images/landing/compete_hero.png", href: "/turniirid" },
|
||||||
{ key: "play", image: "/images/landing/play_teaser.png", imageAlt: "Mängi", hero: "/images/landing/play_hero.png", href: "/piletid", flip: true, fullBrightness: true },
|
{ key: "play", image: "/images/landing/play_teaser.png", imageAlt: "Mängi", hero: "/images/landing/play_hero.png", href: "/piletid", flip: true, fullBrightness: true },
|
||||||
@@ -59,11 +76,13 @@ export default function TeaserCarousel() {
|
|||||||
|
|
||||||
{/* Content */}
|
{/* Content */}
|
||||||
<div className={`relative grid grid-cols-1 md:grid-cols-2 h-full ${slide.flip ? "md:[direction:rtl]" : ""}`}>
|
<div className={`relative grid grid-cols-1 md:grid-cols-2 h-full ${slide.flip ? "md:[direction:rtl]" : ""}`}>
|
||||||
<div className={`flex flex-col justify-between gap-4 px-8 py-8 md:px-12 md:py-10 ${slide.flip ? "md:[direction:ltr]" : ""}`}>
|
<div className={`flex flex-col justify-between px-8 py-8 md:px-12 md:py-10 ${slide.flip ? "md:[direction:ltr]" : ""}`}>
|
||||||
<div className="flex flex-col gap-3">
|
{/* Heading at top */}
|
||||||
<h2 className={`${vipnagorgialla.className} font-bold italic text-[64px] leading-none tracking-normal uppercase text-[#EEE5E5]`}>
|
<h2 className={`${vipnagorgialla.className} font-bold italic text-[64px] leading-none tracking-normal uppercase text-[#EEE5E5]`}>
|
||||||
{t("heading")}
|
{highlightLAN(t("heading"))}
|
||||||
</h2>
|
</h2>
|
||||||
|
{/* Title + description at bottom */}
|
||||||
|
<div className="flex flex-col gap-3 pb-16">
|
||||||
<Link href={slide.href}>
|
<Link href={slide.href}>
|
||||||
<h3 className={`${vipnagorgialla.className} font-bold italic text-[clamp(2.5rem,2rem+2.5vw,5rem)] leading-none text-[#EEE5E5] hover:text-[#00A3E0] transition`}>
|
<h3 className={`${vipnagorgialla.className} font-bold italic text-[clamp(2.5rem,2rem+2.5vw,5rem)] leading-none text-[#EEE5E5] hover:text-[#00A3E0] transition`}>
|
||||||
{title}
|
{title}
|
||||||
|
|||||||
@@ -44,7 +44,9 @@
|
|||||||
"location": "TALTECH, EHITAJATE TEE 5",
|
"location": "TALTECH, EHITAJATE TEE 5",
|
||||||
"buyTicket": "BUY TICKETS",
|
"buyTicket": "BUY TICKETS",
|
||||||
"prizePool": "PRIZE POOL",
|
"prizePool": "PRIZE POOL",
|
||||||
"award": "TALTECH STUDENT ACT OF THE YEAR 2025"
|
"awardPrefix": "TALTECH",
|
||||||
|
"awardHighlight": "STUDENT ACT OF THE YEAR",
|
||||||
|
"awardSuffix": "2025"
|
||||||
},
|
},
|
||||||
"teaser": {
|
"teaser": {
|
||||||
"heading": "COME TO TIPILAN AND...",
|
"heading": "COME TO TIPILAN AND...",
|
||||||
|
|||||||
@@ -44,7 +44,9 @@
|
|||||||
"location": "TALTECH, EHITAJATE TEE 5",
|
"location": "TALTECH, EHITAJATE TEE 5",
|
||||||
"buyTicket": "OSTA PILET",
|
"buyTicket": "OSTA PILET",
|
||||||
"prizePool": "AUHINNAFOND",
|
"prizePool": "AUHINNAFOND",
|
||||||
"award": "TALTECHI AASTA TUDENGITEGU 2025"
|
"awardPrefix": "TALTECHI",
|
||||||
|
"awardHighlight": "AASTA TUDENGITEGU",
|
||||||
|
"awardSuffix": "2025"
|
||||||
},
|
},
|
||||||
"teaser": {
|
"teaser": {
|
||||||
"heading": "TULE TIPILANILE JA...",
|
"heading": "TULE TIPILANILE JA...",
|
||||||
|
|||||||
Reference in New Issue
Block a user