|
|
|
@ -4,14 +4,77 @@ import Image from "next/image"; |
|
|
|
import { getTranslations, setRequestLocale } from "next-intl/server"; |
|
|
|
import { getTranslations, setRequestLocale } from "next-intl/server"; |
|
|
|
|
|
|
|
|
|
|
|
export default async function Tourney({ |
|
|
|
export default async function Tourney({ |
|
|
|
params: { locale }, |
|
|
|
params, |
|
|
|
}: { |
|
|
|
}: { |
|
|
|
params: { locale: string }; |
|
|
|
params: Promise<{ locale: string }>; |
|
|
|
}) { |
|
|
|
}) { |
|
|
|
|
|
|
|
const { locale } = await params; |
|
|
|
setRequestLocale(locale); |
|
|
|
setRequestLocale(locale); |
|
|
|
const t = await getTranslations({ locale }); |
|
|
|
const t = await getTranslations({ locale }); |
|
|
|
const headingStyle = `text-3xl md:text-5xl lg:text-5xl ${vipnagorgialla.className} font-bold uppercase text-[#2A2C3F] dark:text-[#EEE5E5] -skew-x-2 md:-skew-x-5`; |
|
|
|
const headingStyle = `text-3xl md:text-5xl lg:text-5xl ${vipnagorgialla.className} font-bold uppercase text-[#2A2C3F] dark:text-[#EEE5E5] -skew-x-2 md:-skew-x-5`; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const miniTournaments: { |
|
|
|
|
|
|
|
name: string; |
|
|
|
|
|
|
|
prize: string; |
|
|
|
|
|
|
|
image: string; |
|
|
|
|
|
|
|
objectPosition?: string; |
|
|
|
|
|
|
|
}[] = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "Tekken 8", |
|
|
|
|
|
|
|
prize: "350€", |
|
|
|
|
|
|
|
image: "/messiala/tekken8.jpg", |
|
|
|
|
|
|
|
objectPosition: "object-center", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "WRC", |
|
|
|
|
|
|
|
prize: "350€", |
|
|
|
|
|
|
|
image: "/messiala/wrc.jpg", |
|
|
|
|
|
|
|
objectPosition: "object-center", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "Street Fighter 6", |
|
|
|
|
|
|
|
prize: "200€", |
|
|
|
|
|
|
|
image: "/messiala/street_fighter.jpg", |
|
|
|
|
|
|
|
objectPosition: "object-right", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "Gran Turismo", |
|
|
|
|
|
|
|
prize: "200€", |
|
|
|
|
|
|
|
image: "/messiala/gran_turismo.jpg", |
|
|
|
|
|
|
|
objectPosition: "object-center", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "FC 26", |
|
|
|
|
|
|
|
prize: "100€", |
|
|
|
|
|
|
|
image: "/messiala/fc26.jpg", |
|
|
|
|
|
|
|
objectPosition: "object-center", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "Dwarf Escape", |
|
|
|
|
|
|
|
prize: "50€", |
|
|
|
|
|
|
|
image: "/messiala/dwarf_escape.png", |
|
|
|
|
|
|
|
objectPosition: "object-center", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "Buckshot Roulette", |
|
|
|
|
|
|
|
prize: "Merch", |
|
|
|
|
|
|
|
image: "/messiala/buckshot_tournament.png", |
|
|
|
|
|
|
|
objectPosition: "object-center", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "Granblue Fantasy: Versus Rising", |
|
|
|
|
|
|
|
prize: "50€", |
|
|
|
|
|
|
|
image: "/messiala/grandblue_fantasy.jpg", |
|
|
|
|
|
|
|
objectPosition: "object-top", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "Super Smash Bros. Ultimate", |
|
|
|
|
|
|
|
prize: "50€", |
|
|
|
|
|
|
|
image: "/messiala/super_smash_bros.jpg", |
|
|
|
|
|
|
|
objectPosition: "object-top", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
return ( |
|
|
|
<div className="flex flex-col min-h-[90vh] mt-16"> |
|
|
|
<div className="flex flex-col min-h-[90vh] mt-16"> |
|
|
|
<h1 |
|
|
|
<h1 |
|
|
|
@ -26,17 +89,29 @@ export default async function Tourney({ |
|
|
|
<div className="hover:bg-[#007CAB] py-8 md:py-16 transition group"> |
|
|
|
<div className="hover:bg-[#007CAB] py-8 md:py-16 transition group"> |
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-16 items-center mx-8 md:mx-16 lg:mx-32 xl:mx-48"> |
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-16 items-center mx-8 md:mx-16 lg:mx-32 xl:mx-48"> |
|
|
|
<div className="-skew-x-2 md:-skew-x-5"> |
|
|
|
<div className="-skew-x-2 md:-skew-x-5"> |
|
|
|
<h2 className={headingStyle}>{t("tournaments.cs2.title")}</h2> |
|
|
|
<h2 className={`${headingStyle}`}> |
|
|
|
<p className="text-2xl mb-4 text-neutral-500 group-hover:text-black dark:group-hover:text-white"> |
|
|
|
{t("tournaments.cs2.title")} |
|
|
|
|
|
|
|
</h2> |
|
|
|
|
|
|
|
<p |
|
|
|
|
|
|
|
className={ |
|
|
|
|
|
|
|
"text-2xl mb-4 text-neutral-500 group-hover:text-black" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
> |
|
|
|
{t("tournaments.cs2.timing")} |
|
|
|
{t("tournaments.cs2.timing")} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<p className="text-balance">{t("tournaments.cs2.description1")}</p> |
|
|
|
<p className="text-balance"> |
|
|
|
|
|
|
|
{t("tournaments.cs2.description1")} |
|
|
|
|
|
|
|
</p> |
|
|
|
<br /> |
|
|
|
<br /> |
|
|
|
<p className="text-balance">{t("tournaments.cs2.description2")}</p> |
|
|
|
<p className="text-balance"> |
|
|
|
<p className="text-balance">{t("tournaments.cs2.description3")}</p> |
|
|
|
{t("tournaments.cs2.description2")} |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
<p className="text-balance"> |
|
|
|
|
|
|
|
{t("tournaments.cs2.description3")} |
|
|
|
|
|
|
|
</p> |
|
|
|
<br /> |
|
|
|
<br /> |
|
|
|
|
|
|
|
|
|
|
|
<div className="flex flex-row flex-wrap gap-8"> |
|
|
|
<div className={"flex flex-row flex-wrap gap-8"}> |
|
|
|
<Link href="/reeglid/cs2" target="_blank"> |
|
|
|
<Link href="/reeglid/cs2" target="_blank"> |
|
|
|
<button |
|
|
|
<button |
|
|
|
className={`px-4 py-2 bg-[#1F5673] cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
className={`px-4 py-2 bg-[#1F5673] cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
@ -44,11 +119,7 @@ export default async function Tourney({ |
|
|
|
{t("tournaments.cs2.readRules")} |
|
|
|
{t("tournaments.cs2.readRules")} |
|
|
|
</button> |
|
|
|
</button> |
|
|
|
</Link> |
|
|
|
</Link> |
|
|
|
<a |
|
|
|
<a href="https://fienta.com/et/tipilan" target="_blank"> |
|
|
|
href="https://fienta.com/et/tipilan" |
|
|
|
|
|
|
|
target="_blank" |
|
|
|
|
|
|
|
rel="noopener noreferrer" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<button |
|
|
|
<button |
|
|
|
className={`px-4 py-2 bg-[#007CAB] group-hover:bg-black cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
className={`px-4 py-2 bg-[#007CAB] group-hover:bg-black cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
> |
|
|
|
> |
|
|
|
@ -59,13 +130,12 @@ export default async function Tourney({ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div className="hidden md:block"> |
|
|
|
<div className="hidden md:block"> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
|
|
|
|
{/* Outside div needs to remain so that overflow won't occur*/} |
|
|
|
<Image |
|
|
|
<Image |
|
|
|
src="/images/cs2_tournament_logo.png" |
|
|
|
src="/images/cs2_tournament_logo.png" |
|
|
|
alt="CS2 turniiri logo" |
|
|
|
alt="CS2 tournament" |
|
|
|
width={600} |
|
|
|
width={600} |
|
|
|
height={400} |
|
|
|
height={400} |
|
|
|
sizes="(max-width: 768px) 100vw, 600px" |
|
|
|
|
|
|
|
priority |
|
|
|
|
|
|
|
/> |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -77,23 +147,33 @@ export default async function Tourney({ |
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-16 items-center mx-8 md:mx-16 lg:mx-32 xl:mx-48"> |
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-16 items-center mx-8 md:mx-16 lg:mx-32 xl:mx-48"> |
|
|
|
<div className="hidden md:block"> |
|
|
|
<div className="hidden md:block"> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
|
|
|
|
{/* Outside div needs to remain so that overflow won't occur*/} |
|
|
|
<Image |
|
|
|
<Image |
|
|
|
src="/images/lol_tournament_logo.png" |
|
|
|
src="/images/lol_tournament_logo.png" |
|
|
|
alt="League of Legends turniiri logo" |
|
|
|
alt="LoL tournament" |
|
|
|
width={600} |
|
|
|
width={600} |
|
|
|
height={400} |
|
|
|
height={400} |
|
|
|
sizes="(max-width: 768px) 100vw, 600px" |
|
|
|
|
|
|
|
/> |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div className="flex-auto text-right -skew-x-2 md:-skew-x-5"> |
|
|
|
<div className="flex-auto text-right -skew-x-2 md:-skew-x-5"> |
|
|
|
<h2 className={headingStyle}>{t("tournaments.lol.title")}</h2> |
|
|
|
<h2 className={`${headingStyle}`}> |
|
|
|
<p className="text-2xl mb-4 text-neutral-500 group-hover:text-black dark:group-hover:text-white"> |
|
|
|
{t("tournaments.lol.title")} |
|
|
|
|
|
|
|
</h2> |
|
|
|
|
|
|
|
<p |
|
|
|
|
|
|
|
className={ |
|
|
|
|
|
|
|
"text-2xl mb-4 text-neutral-500 group-hover:text-black" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
> |
|
|
|
{t("tournaments.lol.timing")} |
|
|
|
{t("tournaments.lol.timing")} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<p className="text-balance">{t("tournaments.lol.description1")}</p> |
|
|
|
<p className="text-balance"> |
|
|
|
|
|
|
|
{t("tournaments.lol.description1")} |
|
|
|
|
|
|
|
</p> |
|
|
|
<br /> |
|
|
|
<br /> |
|
|
|
<p className="text-balance">{t("tournaments.lol.description2")}</p> |
|
|
|
<p className="text-balance"> |
|
|
|
|
|
|
|
{t("tournaments.lol.description2")} |
|
|
|
|
|
|
|
</p> |
|
|
|
<br /> |
|
|
|
<br /> |
|
|
|
<div className="flex flex-row flex-wrap gap-4 md:gap-8 justify-end"> |
|
|
|
<div className="flex flex-row flex-wrap gap-4 md:gap-8 justify-end"> |
|
|
|
<Link href="/reeglid/lol" target="_blank"> |
|
|
|
<Link href="/reeglid/lol" target="_blank"> |
|
|
|
@ -103,11 +183,7 @@ export default async function Tourney({ |
|
|
|
{t("tournaments.lol.readRules")} |
|
|
|
{t("tournaments.lol.readRules")} |
|
|
|
</button> |
|
|
|
</button> |
|
|
|
</Link> |
|
|
|
</Link> |
|
|
|
<a |
|
|
|
<a href="https://fienta.com/et/tipilan" target="_blank"> |
|
|
|
href="https://fienta.com/et/tipilan" |
|
|
|
|
|
|
|
target="_blank" |
|
|
|
|
|
|
|
rel="noopener noreferrer" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<button |
|
|
|
<button |
|
|
|
className={`px-4 py-2 bg-[#007CAB] group-hover:bg-black cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
className={`px-4 py-2 bg-[#007CAB] group-hover:bg-black cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
> |
|
|
|
> |
|
|
|
@ -120,16 +196,26 @@ export default async function Tourney({ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
{/* Mini-turniirid */} |
|
|
|
{/* Mini-turniirid */} |
|
|
|
<div className="hover:bg-[#007CAB] py-8 md:py-16 border-t-[3px] border-b-[3px] border-[#1F5673] transition group"> |
|
|
|
<div className="py-8 md:py-16 border-t-[3px] border-b-[3px] border-[#1F5673]"> |
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-16 items-center mx-8 md:mx-16 lg:mx-32 xl:mx-48"> |
|
|
|
<div className="mx-8 md:mx-16 lg:mx-32 xl:mx-48"> |
|
|
|
<div className="-skew-x-2 md:-skew-x-5"> |
|
|
|
<div className="-skew-x-2 md:-skew-x-5 mb-8"> |
|
|
|
<h2 className={headingStyle}>{t("tournaments.mini.title")}</h2> |
|
|
|
<h2 className={`${headingStyle}`}> |
|
|
|
<p className="text-2xl mb-4 text-neutral-500 group-hover:text-black dark:group-hover:text-white"> |
|
|
|
{t("tournaments.mini.title")} |
|
|
|
|
|
|
|
</h2> |
|
|
|
|
|
|
|
<p |
|
|
|
|
|
|
|
className={ |
|
|
|
|
|
|
|
"text-2xl mb-4 text-neutral-500" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
> |
|
|
|
{t("tournaments.mini.timing")} |
|
|
|
{t("tournaments.mini.timing")} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<p className="text-balance">{t("tournaments.mini.description1")}</p> |
|
|
|
<p className="text-balance"> |
|
|
|
|
|
|
|
{t("tournaments.mini.description1")} |
|
|
|
|
|
|
|
</p> |
|
|
|
<br /> |
|
|
|
<br /> |
|
|
|
<p className="text-balance">{t("tournaments.mini.description2")}</p> |
|
|
|
<p className="text-balance"> |
|
|
|
|
|
|
|
{t("tournaments.mini.description2")} |
|
|
|
|
|
|
|
</p> |
|
|
|
<br /> |
|
|
|
<br /> |
|
|
|
<div className="flex flex-row flex-wrap gap-4 md:gap-8"> |
|
|
|
<div className="flex flex-row flex-wrap gap-4 md:gap-8"> |
|
|
|
<Link href="/kodukord" target="_blank"> |
|
|
|
<Link href="/kodukord" target="_blank"> |
|
|
|
@ -139,11 +225,7 @@ export default async function Tourney({ |
|
|
|
{t("tournaments.mini.readRules")} |
|
|
|
{t("tournaments.mini.readRules")} |
|
|
|
</button> |
|
|
|
</button> |
|
|
|
</Link> |
|
|
|
</Link> |
|
|
|
<a |
|
|
|
<a href="https://fienta.com/et/tipilan" target="_blank"> |
|
|
|
href="https://fienta.com/et/tipilan" |
|
|
|
|
|
|
|
target="_blank" |
|
|
|
|
|
|
|
rel="noopener noreferrer" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<button |
|
|
|
<button |
|
|
|
className={`px-4 py-2 bg-[#007CAB] group-hover:bg-black cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
className={`px-4 py-2 bg-[#007CAB] group-hover:bg-black cursor-pointer ${vipnagorgialla.className} font-bold italic text-[#ECE5E5]`} |
|
|
|
> |
|
|
|
> |
|
|
|
@ -152,51 +234,23 @@ export default async function Tourney({ |
|
|
|
</a> |
|
|
|
</a> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div className="hidden md:block"> |
|
|
|
|
|
|
|
<div> |
|
|
|
|
|
|
|
<Image |
|
|
|
|
|
|
|
src="/images/minitournament_logo.png" |
|
|
|
|
|
|
|
alt="Mini-turniiride logo" |
|
|
|
|
|
|
|
width={600} |
|
|
|
|
|
|
|
height={400} |
|
|
|
|
|
|
|
sizes="(max-width: 768px) 100vw, 600px" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{/* 3x3 grid */} |
|
|
|
|
|
|
|
<div className="mt-16 mx-8 md:mx-16 lg:mx-32 xl:mx-48"> |
|
|
|
|
|
|
|
<h3 |
|
|
|
|
|
|
|
className={`${vipnagorgialla.className} text-2xl md:text-3xl font-bold uppercase text-center mb-8 text-[#2A2C3F] dark:text-[#EEE5E5]`} |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
{t("tournaments.mini.participants")} |
|
|
|
|
|
|
|
</h3> |
|
|
|
|
|
|
|
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-8"> |
|
|
|
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-8"> |
|
|
|
{[ |
|
|
|
{miniTournaments.map((tournament) => ( |
|
|
|
{ name: "Tekken 8", img: "/images/players/player1.png" }, |
|
|
|
<div key={tournament.name} className="text-center"> |
|
|
|
{ name: "WRC", img: "/images/players/player2.png" }, |
|
|
|
<div className="border-2 border-[#007CAB] p-1 rounded-md"> |
|
|
|
{ name: "Street Fighter 6", img: "/images/players/player3.png" }, |
|
|
|
<Image |
|
|
|
{ name: "Gran Turismo", img: "/images/players/player4.png" }, |
|
|
|
src={tournament.image} |
|
|
|
{ name: "FC 26", img: "/images/players/player5.png" }, |
|
|
|
alt={tournament.name} |
|
|
|
{ name: "Dwarf Escape", img: "/images/players/player6.png" }, |
|
|
|
width={400} |
|
|
|
{ name: "Buckshot Tournament", img: "/images/players/player7.png" }, |
|
|
|
height={300} |
|
|
|
{ name: "Grandblue fantasy", img: "/images/players/player8.png" }, |
|
|
|
className={`object-cover w-full h-48 ${ |
|
|
|
{ name: "Super Smash Bros Ultimate", img: "/images/players/player9.png" }, |
|
|
|
tournament.objectPosition || "object-center" |
|
|
|
].map((p, i) => ( |
|
|
|
}`}
|
|
|
|
<div |
|
|
|
/> |
|
|
|
key={i} className="flex flex-col items-center text-center p-4 bg-white dark:bg-[#1F1F1F] rounded-2xl shadow-md hover:shadow-xl transition" > <Image |
|
|
|
</div> |
|
|
|
src={p.img} |
|
|
|
<div className="-skew-x-2 md:-skew-x-5"> |
|
|
|
alt={p.name} |
|
|
|
<p className="mt-2 font-semibold">{tournament.name} - {tournament.prize}</p> |
|
|
|
width={200} |
|
|
|
</div> |
|
|
|
height={200} |
|
|
|
|
|
|
|
className="rounded-xl object-cover" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
<p |
|
|
|
|
|
|
|
className={`${vipnagorgialla.className} mt-4 text-xl font-bold text-[#2A2C3F] dark:text-[#EEE5E5]`} |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
{p.name} |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
))} |
|
|
|
))} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|