mirror of
https://github.com/Lapikud/tipilan.git
synced 2026-09-22 07:17:41 +00:00
Mini-tournaments updated, new sponsors
This commit is contained in:
1
public/sponsors/tlu.svg
Normal file
1
public/sponsors/tlu.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 18 KiB |
1
public/sponsors/tludti.svg
Normal file
1
public/sponsors/tludti.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 62 KiB |
@@ -254,13 +254,13 @@ export default function Expo() {
|
|||||||
className={`relative overflow-hidden ${DIVIDER} min-h-[360px] md:min-h-[480px]`}
|
className={`relative overflow-hidden ${DIVIDER} min-h-[360px] md:min-h-[480px]`}
|
||||||
>
|
>
|
||||||
<Image
|
<Image
|
||||||
src="/images/landing/compete_teaser.jpg"
|
src="/images/miniturniirid/minitournaments.jpg"
|
||||||
alt=""
|
alt=""
|
||||||
fill
|
fill
|
||||||
className="object-cover"
|
className="object-cover"
|
||||||
sizes="100vw"
|
sizes="100vw"
|
||||||
/>
|
/>
|
||||||
<div className="absolute inset-0 bg-gradient-to-r from-[#0E0F19] via-[#0E0F19]/85 to-[#0E0F19]/30" />
|
<div className="absolute inset-0 bg-gradient-to-r from-[#0E0F19] via-[#0E0F19]/50 to-[#0E0F19]/30" />
|
||||||
<div
|
<div
|
||||||
className={`relative z-10 flex flex-col justify-center h-full min-h-[360px] md:min-h-[480px] max-w-2xl gap-6 py-10 ${GUTTER}`}
|
className={`relative z-10 flex flex-col justify-center h-full min-h-[360px] md:min-h-[480px] max-w-2xl gap-6 py-10 ${GUTTER}`}
|
||||||
>
|
>
|
||||||
@@ -272,7 +272,7 @@ export default function Expo() {
|
|||||||
<p className="text-[#EEE5E5] text-base md:text-lg max-w-md">
|
<p className="text-[#EEE5E5] text-base md:text-lg max-w-md">
|
||||||
{t("expo.miniTournaments.description")}
|
{t("expo.miniTournaments.description")}
|
||||||
</p>
|
</p>
|
||||||
<Link href="/miniturniirid" className="w-fit">
|
<Link href="/turniirid/miniturniirid" className="w-fit">
|
||||||
<button
|
<button
|
||||||
className={`${vipnagorgialla.className} px-4 py-2 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] cursor-pointer font-bold italic leading-none uppercase transition`}
|
className={`${vipnagorgialla.className} px-4 py-2 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] cursor-pointer font-bold italic leading-none uppercase transition`}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
|
||||||
import Image from "next/image";
|
|
||||||
import Link from "next/link";
|
|
||||||
import { getTranslations, setRequestLocale } from "next-intl/server";
|
|
||||||
import { miniTournaments } from "@/data/miniturniirid";
|
|
||||||
|
|
||||||
/** Horizontal padding used by the page (64px at the design width). */
|
|
||||||
const GUTTER = "px-4 sm:px-8 lg:px-16";
|
|
||||||
|
|
||||||
// TODO: replace with the real mini-tournaments rules URL once it exists.
|
|
||||||
// Placeholder points at the TipiLAN ruleset repo root.
|
|
||||||
const RULES_URL =
|
|
||||||
"https://git.edunaut.ee/slunk/TipiLAN_reeglistik_ruleset";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* One mini-tournament tile: a cyan-bordered cover image above a bold caption
|
|
||||||
* "Title – Prize". Games without artwork yet fall back to a text tile.
|
|
||||||
*/
|
|
||||||
function MiniCard({ title, prize, image }: (typeof miniTournaments)[number]) {
|
|
||||||
return (
|
|
||||||
<div className="flex flex-col gap-3">
|
|
||||||
<div className="relative aspect-video border-[3px] border-[#00A3E0] overflow-hidden bg-[#0E0F19]">
|
|
||||||
{image ? (
|
|
||||||
<Image
|
|
||||||
src={image}
|
|
||||||
alt={title}
|
|
||||||
fill
|
|
||||||
className="object-cover"
|
|
||||||
sizes="(max-width: 768px) 100vw, 33vw"
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<span
|
|
||||||
className={`${vipnagorgialla.className} absolute inset-0 flex items-center justify-center p-4 text-center font-bold italic uppercase text-white/85 leading-tight text-[clamp(1rem,0.8rem+1vw,1.5rem)]`}
|
|
||||||
>
|
|
||||||
{title}
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<span className="font-bold text-white leading-tight text-[clamp(1rem,0.85rem+0.8vw,1.5rem)]">
|
|
||||||
{title} – {prize}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function MiniTournaments({
|
|
||||||
params,
|
|
||||||
}: {
|
|
||||||
params: Promise<{ locale: string }>;
|
|
||||||
}) {
|
|
||||||
const { locale } = await params;
|
|
||||||
setRequestLocale(locale);
|
|
||||||
const t = await getTranslations({ locale });
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
|
|
||||||
<div className="mx-auto w-full max-w-[1920px]">
|
|
||||||
{/* Header */}
|
|
||||||
<div className={`${GUTTER} pt-12 md:pt-16`}>
|
|
||||||
<h1
|
|
||||||
className={`${vipnagorgialla.className} font-bold italic uppercase text-[#EEE5E5] leading-none text-[clamp(1.75rem,1.4rem+3vw,3.5rem)]`}
|
|
||||||
>
|
|
||||||
{t("minipage.title")}
|
|
||||||
</h1>
|
|
||||||
<p className="mt-4 text-[#00A3E0] italic text-lg md:text-xl">
|
|
||||||
{t("minipage.date")}
|
|
||||||
</p>
|
|
||||||
<p className="mt-4 text-[#EEE5E5] max-w-2xl text-base md:text-lg">
|
|
||||||
{t("minipage.description")}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
{/* Buttons */}
|
|
||||||
<div className="mt-8 flex flex-wrap gap-4">
|
|
||||||
<Link
|
|
||||||
href={RULES_URL}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-3 border-4 border-[#00A3E0] bg-transparent text-[#00A3E0] hover:bg-[#00A3E0] hover:text-[#0A121F] transition`}
|
|
||||||
>
|
|
||||||
{t("minipage.readRules")}
|
|
||||||
</Link>
|
|
||||||
<Link
|
|
||||||
href="/piletid"
|
|
||||||
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] transition`}
|
|
||||||
>
|
|
||||||
{t("minipage.buyTicket")}
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/* Game grid */}
|
|
||||||
<div className={`${GUTTER} py-12 md:py-16`}>
|
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 lg:gap-8">
|
|
||||||
{miniTournaments.map((game) => (
|
|
||||||
<MiniCard key={game.title} {...game} />
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
191
src/app/[locale]/turniirid/miniturniirid/page.tsx
Normal file
191
src/app/[locale]/turniirid/miniturniirid/page.tsx
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { getTranslations, setRequestLocale } from "next-intl/server";
|
||||||
|
import { miniTournaments } from "@/data/miniturniirid";
|
||||||
|
|
||||||
|
/** Horizontal padding used by the page (64px at the design width). */
|
||||||
|
const GUTTER = "px-4 sm:px-8 lg:px-16";
|
||||||
|
|
||||||
|
// TODO: replace with the real mini-tournaments rules URL once it exists.
|
||||||
|
// Placeholder points at the TipiLAN ruleset repo root.
|
||||||
|
const RULES_URL =
|
||||||
|
"https://git.edunaut.ee/slunk/TipiLAN_reeglistik_ruleset";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One mini-tournament tile: a cyan-bordered cover image above a bold caption
|
||||||
|
* "Title – Prize". Games without artwork yet fall back to a text tile.
|
||||||
|
*/
|
||||||
|
function MiniCard({
|
||||||
|
title,
|
||||||
|
prizePool,
|
||||||
|
format,
|
||||||
|
includesGiftBags,
|
||||||
|
organizer,
|
||||||
|
organizerUrl,
|
||||||
|
image,
|
||||||
|
organizedBy,
|
||||||
|
giftBagsLabel,
|
||||||
|
}: (typeof miniTournaments)[number] & {
|
||||||
|
organizedBy: string;
|
||||||
|
giftBagsLabel: string;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col gap-3">
|
||||||
|
<div className="relative aspect-video border-[3px] border-[#00A3E0] overflow-hidden bg-[#0E0F19]">
|
||||||
|
{image ? (
|
||||||
|
<Image
|
||||||
|
src={image}
|
||||||
|
alt={title}
|
||||||
|
fill
|
||||||
|
className="object-cover"
|
||||||
|
sizes="(max-width: 768px) 100vw, 33vw"
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<span
|
||||||
|
className={`${vipnagorgialla.className} absolute inset-0 flex items-center justify-center p-4 text-center font-bold italic uppercase text-white/85 leading-tight text-[clamp(1rem,0.8rem+1vw,1.5rem)]`}
|
||||||
|
>
|
||||||
|
{title}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-wrap items-center gap-x-2 gap-y-1">
|
||||||
|
<span className="font-bold text-white leading-tight text-[clamp(1rem,0.85rem+0.8vw,1.5rem)]">
|
||||||
|
{title}{format ? `, ${format}` : ""}
|
||||||
|
</span>
|
||||||
|
<span className="text-xl font-bold leading-none text-white md:text-2xl">-</span>
|
||||||
|
{prizePool === "giftBags" ? (
|
||||||
|
<span
|
||||||
|
className="inline-flex items-center gap-1 text-[#EEE5E5]"
|
||||||
|
title={giftBagsLabel}
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
className="material-symbols-outlined text-2xl! leading-none! md:text-3xl!"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
redeem
|
||||||
|
</span>
|
||||||
|
<span className="text-xl font-bold leading-tight md:text-2xl">
|
||||||
|
{giftBagsLabel}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
) : (
|
||||||
|
<span className="text-xl font-bold leading-tight text-[#EEE5E5] md:text-2xl">
|
||||||
|
{prizePool}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
{includesGiftBags && prizePool !== "giftBags" && (
|
||||||
|
<>
|
||||||
|
<span className="text-xl font-bold leading-none text-white md:text-2xl">+</span>
|
||||||
|
<span
|
||||||
|
className="inline-flex items-center gap-1 text-[#EEE5E5]"
|
||||||
|
title={giftBagsLabel}
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
className="material-symbols-outlined text-2xl! leading-none! md:text-3xl!"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
redeem
|
||||||
|
</span>
|
||||||
|
<span className="text-xl font-bold leading-tight md:text-2xl">
|
||||||
|
{giftBagsLabel}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
{organizer && (
|
||||||
|
<span className="text-sm italic text-[#EEE5E5]/60">
|
||||||
|
{organizedBy}: {organizerUrl ? (
|
||||||
|
<Link
|
||||||
|
href={organizerUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="text-[#00A3E0] hover:text-[#EEE5EE] transition-colors"
|
||||||
|
>
|
||||||
|
{organizer}
|
||||||
|
</Link>
|
||||||
|
) : (
|
||||||
|
<span className="text-[#00A3E0]">{organizer}</span>
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function MiniTournaments({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: Promise<{ locale: string }>;
|
||||||
|
}) {
|
||||||
|
const { locale } = await params;
|
||||||
|
setRequestLocale(locale);
|
||||||
|
const t = await getTranslations({ locale });
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
|
||||||
|
<div className="mx-auto w-full max-w-[1920px]">
|
||||||
|
{/* Header */}
|
||||||
|
<div className={`${GUTTER} pt-12 md:pt-16`}>
|
||||||
|
<h1
|
||||||
|
className={`${vipnagorgialla.className} font-bold italic uppercase text-[#EEE5E5] leading-none text-[clamp(1.75rem,1.4rem+3vw,3.5rem)]`}
|
||||||
|
>
|
||||||
|
{t("minipage.title")}
|
||||||
|
</h1>
|
||||||
|
<p className="mt-4 text-[#EEE5E5]/70 italic text-lg md:text-xl">
|
||||||
|
{t("minipage.date")}
|
||||||
|
</p>
|
||||||
|
<p className="mt-4 text-[#EEE5E5] max-w-2xl text-base md:text-lg">
|
||||||
|
{t("minipage.description")}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{/* Buttons */}
|
||||||
|
<div className="mt-8 flex flex-wrap gap-4">
|
||||||
|
<Link
|
||||||
|
href={RULES_URL}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-3 border-4 border-[#00A3E0] bg-transparent text-[#00A3E0] hover:bg-[#00A3E0] hover:text-[#0A121F] transition`}
|
||||||
|
>
|
||||||
|
{t("minipage.readRules")}
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
href="/piletid"
|
||||||
|
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] transition`}
|
||||||
|
>
|
||||||
|
{t("minipage.buyTicket")}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Tournament groups */}
|
||||||
|
<div className={`${GUTTER} py-12 md:py-16`}>
|
||||||
|
{["simRacing", "fightingGames", "other"].map((category) => {
|
||||||
|
const games = miniTournaments.filter((game) => game.category === category);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section key={category} className="mb-14 last:mb-0">
|
||||||
|
<h2
|
||||||
|
className={`${vipnagorgialla.className} mb-6 text-3xl font-bold italic uppercase text-[#00A3E0] md:text-4xl`}
|
||||||
|
>
|
||||||
|
{t(`minipage.categories.${category}`)}
|
||||||
|
</h2>
|
||||||
|
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 lg:gap-8">
|
||||||
|
{games.map((game) => (
|
||||||
|
<MiniCard
|
||||||
|
key={game.title}
|
||||||
|
{...game}
|
||||||
|
organizedBy={t("minipage.organizedBy")}
|
||||||
|
giftBagsLabel={t("minipage.giftBags")}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -77,7 +77,7 @@ export default async function Tourney({
|
|||||||
<div className="grid grid-cols-1 auto-rows-fr">
|
<div className="grid grid-cols-1 auto-rows-fr">
|
||||||
<TournamentCard
|
<TournamentCard
|
||||||
title={t("expo.miniTournaments.title").toUpperCase()}
|
title={t("expo.miniTournaments.title").toUpperCase()}
|
||||||
buttonHref="/miniturniirid"
|
buttonHref="/turniirid/miniturniirid"
|
||||||
backgroundImage="/images/miniturniirid/minitournaments.jpg"
|
backgroundImage="/images/miniturniirid/minitournaments.jpg"
|
||||||
className="border-t-[3px] min-h-[50vh]"
|
className="border-t-[3px] min-h-[50vh]"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ interface NavItem {
|
|||||||
| "/haldus"
|
| "/haldus"
|
||||||
| "/kodukord"
|
| "/kodukord"
|
||||||
| "/messiala"
|
| "/messiala"
|
||||||
| "/miniturniirid"
|
|
||||||
| "/piletid"
|
| "/piletid"
|
||||||
| "/striim"
|
| "/striim"
|
||||||
| "/turniirid";
|
| "/turniirid";
|
||||||
@@ -50,7 +49,6 @@ const Header = ({ navItems }: HeaderProps) => {
|
|||||||
|
|
||||||
const navIconByHref: Partial<Record<NavItem["href"], string>> = {
|
const navIconByHref: Partial<Record<NavItem["href"], string>> = {
|
||||||
"/messiala": "festival",
|
"/messiala": "festival",
|
||||||
"/miniturniirid": "rewarded_ads",
|
|
||||||
"/ajakava": "event_note",
|
"/ajakava": "event_note",
|
||||||
"/piletid": "local_activity",
|
"/piletid": "local_activity",
|
||||||
"/turniirid": "rewarded_ads",
|
"/turniirid": "rewarded_ads",
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ interface NavItem {
|
|||||||
| "/haldus"
|
| "/haldus"
|
||||||
| "/kodukord"
|
| "/kodukord"
|
||||||
| "/messiala"
|
| "/messiala"
|
||||||
| "/miniturniirid"
|
|
||||||
| "/piletid"
|
| "/piletid"
|
||||||
| "/striim"
|
| "/striim"
|
||||||
| "/turniirid";
|
| "/turniirid";
|
||||||
|
|||||||
@@ -89,6 +89,22 @@ const highlightedSponsors: Sponsor[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const sponsors: Sponsor[] = [
|
const sponsors: Sponsor[] = [
|
||||||
|
{
|
||||||
|
href: "https://www.tlu.ee",
|
||||||
|
src: "/sponsors/tlu.svg",
|
||||||
|
alt: "Tallinn Ülikool",
|
||||||
|
width: 292,
|
||||||
|
height: 60,
|
||||||
|
className: "brightness-0 invert scale-115",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: "https://www.tlu.ee/dt",
|
||||||
|
src: "/sponsors/tludti.svg",
|
||||||
|
alt: "Tallinn Ülikooli Digitehnoloogiate Instituut",
|
||||||
|
width: 220,
|
||||||
|
height: 65,
|
||||||
|
className: "brightness-0 invert scale-115",
|
||||||
|
},
|
||||||
// Gaming and technology
|
// Gaming and technology
|
||||||
{
|
{
|
||||||
href: "https://k-space.ee/",
|
href: "https://k-space.ee/",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ type Slide = {
|
|||||||
image: string;
|
image: string;
|
||||||
imageAlt: string;
|
imageAlt: string;
|
||||||
hero: string;
|
hero: string;
|
||||||
href: "/turniirid" | "/piletid" | "/messiala" | "/miniturniirid";
|
href: "/turniirid" | "/piletid" | "/messiala";
|
||||||
flip?: boolean;
|
flip?: boolean;
|
||||||
fullBrightness?: boolean;
|
fullBrightness?: boolean;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,74 +5,160 @@
|
|||||||
// convention as src/data/expo.ts). Page headings and button labels are
|
// convention as src/data/expo.ts). Page headings and button labels are
|
||||||
// translated (see the `minipage` block in translations/et.json + en.json).
|
// translated (see the `minipage` block in translations/et.json + en.json).
|
||||||
//
|
//
|
||||||
// Source of truth: the organizers' "MINITURNIIRID" sheet in Google Drive
|
// Cover images live in public/images/miniturniirid/. `image` is optional and
|
||||||
// (TipiLAN 2026 → Messiala, last modified 2026-09-06). Total funded prize pool
|
// games without artwork fall back to a text tile showing the title.
|
||||||
// is 1600€ across all tournaments. Buckshot Roulette is intentionally NOT here:
|
|
||||||
// per the sheet it is a showcase/side activity, not a funded mini-tournament.
|
export type MiniTournamentCategory = "simRacing" | "fightingGames" | "other";
|
||||||
//
|
export type PrizePool = string | "giftBags";
|
||||||
// Cover images live in public/images/miniturniirid/. `image` is optional: games
|
|
||||||
// without artwork yet (Avatar Legends, osu!, Counter-Strike 1.6, Rocket League,
|
|
||||||
// Quake) fall back to a text tile showing the title.
|
|
||||||
|
|
||||||
export interface MiniTournament {
|
export interface MiniTournament {
|
||||||
/** Game name (proper noun, shown as-is). */
|
/** Game name (proper noun, shown as-is). */
|
||||||
title: string;
|
title: string;
|
||||||
/** Prize pool for this tournament, e.g. "350€", or a non-cash prize ("Kinkekott"). */
|
/** Category used to group tournaments on the page. */
|
||||||
prize: string;
|
category: MiniTournamentCategory;
|
||||||
|
/** Total prize pool, including non-cash prizes where applicable. */
|
||||||
|
prizePool: PrizePool;
|
||||||
|
/** Prizes for first through fourth place. */
|
||||||
|
placements: string[];
|
||||||
|
/** Tournament format, when it is part of the published name. */
|
||||||
|
format?: string;
|
||||||
|
/** Whether the tournament also awards gift bags alongside its cash pool. */
|
||||||
|
includesGiftBags?: boolean;
|
||||||
|
/** Organization running the tournament, when one has been confirmed. */
|
||||||
|
organizer?: string;
|
||||||
|
/** Public organizer page. */
|
||||||
|
organizerUrl?: string;
|
||||||
/** Cover image under /public. Rendered object-cover. Optional. */
|
/** Cover image under /public. Rendered object-cover. Optional. */
|
||||||
image?: string;
|
image?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const miniTournaments: MiniTournament[] = [
|
export const miniTournaments: MiniTournament[] = [
|
||||||
{ title: "WRC", prize: "350€", image: "/images/miniturniirid/wrc.jpg" },
|
|
||||||
{
|
{
|
||||||
title: "Gran Turismo 7",
|
title: "GT7",
|
||||||
prize: "200€",
|
category: "simRacing",
|
||||||
|
organizer: "Red Bull",
|
||||||
|
organizerUrl: "https://www.redbull.com/ee-et/",
|
||||||
|
prizePool: "200€",
|
||||||
|
placements: ["100€", "60€", "40€"],
|
||||||
image: "/images/miniturniirid/gran_turismo.jpg",
|
image: "/images/miniturniirid/gran_turismo.jpg",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Super Smash Bros. Ultimate",
|
title: "WRC, Dirt Rally 2",
|
||||||
prize: "100€",
|
category: "simRacing",
|
||||||
image: "/images/miniturniirid/super_smash_bros.jpg",
|
organizer: "EVAL",
|
||||||
|
organizerUrl: "https://www.simracing.ee/",
|
||||||
|
prizePool: "350€",
|
||||||
|
placements: ["200€", "100€", "50€", "Kinkekott ainult"],
|
||||||
|
includesGiftBags: true,
|
||||||
|
image: "/images/miniturniirid/wrc.jpg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Tekken 8",
|
||||||
|
category: "fightingGames",
|
||||||
|
organizer: "BFGL",
|
||||||
|
organizerUrl: "https://www.instagram.com/baltic_fighting_game_league/",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
|
image: "/images/miniturniirid/tekken8.jpg",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Street Fighter 6",
|
title: "Street Fighter 6",
|
||||||
prize: "100€",
|
category: "fightingGames",
|
||||||
|
organizer: "BFGL",
|
||||||
|
organizerUrl: "https://www.instagram.com/baltic_fighting_game_league/",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
image: "/images/miniturniirid/street_fighter.jpg",
|
image: "/images/miniturniirid/street_fighter.jpg",
|
||||||
},
|
},
|
||||||
{ title: "Tekken 8", prize: "100€", image: "/images/miniturniirid/tekken8.jpg" },
|
{
|
||||||
{ title: "2XKO", prize: "100€", image: "/images/miniturniirid/2xko.png" },
|
title: "2XKO",
|
||||||
|
category: "fightingGames",
|
||||||
|
organizer: "BFGL",
|
||||||
|
organizerUrl: "https://www.instagram.com/baltic_fighting_game_league/",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
|
image: "/images/miniturniirid/2xko.png",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Super Smash Bros. Ultimate",
|
||||||
|
category: "fightingGames",
|
||||||
|
organizer: "BFGL",
|
||||||
|
organizerUrl: "https://www.instagram.com/baltic_fighting_game_league/",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
|
image: "/images/miniturniirid/super_smash_bros.jpg",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: "Invincible Vs.",
|
title: "Invincible Vs.",
|
||||||
prize: "100€",
|
category: "fightingGames",
|
||||||
|
organizer: "BFGL",
|
||||||
|
organizerUrl: "https://www.instagram.com/baltic_fighting_game_league/",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
image: "/images/miniturniirid/invincible_vs.png",
|
image: "/images/miniturniirid/invincible_vs.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Marvel Tokon",
|
title: "Marvel Tokon: Fighting Souls",
|
||||||
prize: "100€",
|
category: "fightingGames",
|
||||||
|
organizer: "BFGL",
|
||||||
|
organizerUrl: "https://www.instagram.com/baltic_fighting_game_league/",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
image: "/images/miniturniirid/marvel_tokon.png",
|
image: "/images/miniturniirid/marvel_tokon.png",
|
||||||
},
|
},
|
||||||
{ title: "FC 26", prize: "100€", image: "/images/miniturniirid/fc26.jpg" },
|
|
||||||
{
|
{
|
||||||
title: "Avatar Legends",
|
title: "Avatar Legends: The Fighting Game",
|
||||||
prize: "100€",
|
category: "fightingGames",
|
||||||
|
organizer: "BFGL",
|
||||||
|
organizerUrl: "https://www.instagram.com/baltic_fighting_game_league/",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
image: "/images/miniturniirid/avatar_legends.jpg",
|
image: "/images/miniturniirid/avatar_legends.jpg",
|
||||||
},
|
},
|
||||||
{ title: "osu!", prize: "100€", image: "/images/miniturniirid/osu.jpg" },
|
|
||||||
{
|
{
|
||||||
title: "Dwarf Escape",
|
title: "EA FC",
|
||||||
prize: "50€",
|
category: "other",
|
||||||
image: "/images/miniturniirid/dwarf_escape.png",
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
|
image: "/images/miniturniirid/fc26.jpg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "osu!",
|
||||||
|
category: "other",
|
||||||
|
prizePool: "100€",
|
||||||
|
placements: ["50€", "30€", "20€"],
|
||||||
|
image: "/images/miniturniirid/osu.jpg",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Counter-Strike 1.6",
|
title: "Counter-Strike 1.6",
|
||||||
prize: "50€",
|
category: "other",
|
||||||
|
organizer: "K-space",
|
||||||
|
organizerUrl: "https://k-space.ee/",
|
||||||
|
prizePool: "giftBags",
|
||||||
|
placements: ["Kinkekott", "Kinkekott", "Kinkekott", "Kinkekott"],
|
||||||
image: "/images/miniturniirid/cs16.jpg",
|
image: "/images/miniturniirid/cs16.jpg",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: "Quake",
|
||||||
|
category: "other",
|
||||||
|
prizePool: "giftBags",
|
||||||
|
placements: ["Kinkekott", "Kinkekott", "Kinkekott", "Kinkekott"],
|
||||||
|
image: "/images/miniturniirid/quake.jpg",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: "Rocket League",
|
title: "Rocket League",
|
||||||
prize: "50€",
|
category: "other",
|
||||||
|
format: "2v2",
|
||||||
|
prizePool: "50€",
|
||||||
|
placements: ["25€ + 25€", "Kinkekott 2x", "Kinkekott 2x"],
|
||||||
|
includesGiftBags: true,
|
||||||
image: "/images/miniturniirid/rocket_league.jpg",
|
image: "/images/miniturniirid/rocket_league.jpg",
|
||||||
},
|
},
|
||||||
{ title: "Quake", prize: "Kinkekott", image: "/images/miniturniirid/quake.jpg" },
|
{
|
||||||
|
title: "Dwarf Escape",
|
||||||
|
category: "other",
|
||||||
|
prizePool: "50€",
|
||||||
|
placements: ["25€", "15€", "10€"],
|
||||||
|
image: "/images/miniturniirid/dwarf_escape.png",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ export const scheduleData: Record<string, ScheduleItem[]> = {
|
|||||||
"schedule.locations.studentHouse",
|
"schedule.locations.studentHouse",
|
||||||
"schedule.locations.lobbyAndLanArea"
|
"schedule.locations.lobbyAndLanArea"
|
||||||
],
|
],
|
||||||
time: "*01:00",
|
time: "~01:00",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
sep12: [
|
sep12: [
|
||||||
@@ -316,7 +316,7 @@ export const scheduleData: Record<string, ScheduleItem[]> = {
|
|||||||
{
|
{
|
||||||
titleKey: "schedule.events.doorsClose",
|
titleKey: "schedule.events.doorsClose",
|
||||||
locationKey: "schedule.locations.auditorium",
|
locationKey: "schedule.locations.auditorium",
|
||||||
time: "*01:30",
|
time: "~01:30",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
sep13: [
|
sep13: [
|
||||||
@@ -361,17 +361,17 @@ export const scheduleData: Record<string, ScheduleItem[]> = {
|
|||||||
{
|
{
|
||||||
titleKey: "schedule.events.awardCeremony",
|
titleKey: "schedule.events.awardCeremony",
|
||||||
locationKey: "schedule.locations.auditorium",
|
locationKey: "schedule.locations.auditorium",
|
||||||
time: "18:30",
|
time: "~18:30",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
titleKey: "schedule.events.closingCeremony",
|
titleKey: "schedule.events.closingCeremony",
|
||||||
locationKey: "schedule.locations.auditorium",
|
locationKey: "schedule.locations.auditorium",
|
||||||
time: "19:00",
|
time: "~19:00",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
titleKey: "schedule.events.doorsClose",
|
titleKey: "schedule.events.doorsClose",
|
||||||
locationKey: "schedule.locations.auditorium",
|
locationKey: "schedule.locations.auditorium",
|
||||||
time: "19:30",
|
time: "~19:30",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ export const routing = defineRouting({
|
|||||||
et: "/turniirid",
|
et: "/turniirid",
|
||||||
en: "/tournaments",
|
en: "/tournaments",
|
||||||
},
|
},
|
||||||
"/miniturniirid": {
|
"/turniirid/miniturniirid": {
|
||||||
et: "/miniturniirid",
|
et: "/turniirid/miniturniirid",
|
||||||
en: "/minitournaments",
|
en: "/tournaments/minitournaments",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -181,7 +181,16 @@
|
|||||||
"date": "11 & 12 September",
|
"date": "11 & 12 September",
|
||||||
"description": "TipiLAN hosts a variety of fun and competitive mini-tournaments. The full prize pool for each tournament is shown next to it.",
|
"description": "TipiLAN hosts a variety of fun and competitive mini-tournaments. The full prize pool for each tournament is shown next to it.",
|
||||||
"readRules": "READ RULES",
|
"readRules": "READ RULES",
|
||||||
"buyTicket": "BUY TICKETS"
|
"buyTicket": "BUY TICKETS",
|
||||||
|
"organizedBy": "Organized by",
|
||||||
|
"prizePool": "Prize pool",
|
||||||
|
"giftBags": "Gifts",
|
||||||
|
"top": "Top {place}",
|
||||||
|
"categories": {
|
||||||
|
"simRacing": "Sim Racing",
|
||||||
|
"fightingGames": "Fighting Games",
|
||||||
|
"other": "Other Tournaments"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"cs2page": {
|
"cs2page": {
|
||||||
"title": "COUNTER-STRIKE 2 TOURNAMENT",
|
"title": "COUNTER-STRIKE 2 TOURNAMENT",
|
||||||
|
|||||||
@@ -182,7 +182,16 @@
|
|||||||
"date": "11. ja 12. september",
|
"date": "11. ja 12. september",
|
||||||
"description": "TipiLANil toimub mitmeid erinevaid lõbusaid ja võistlushimu tekitavaid miniturniire. Iga turniiri juures on välja toodud terve turniiri auhinnafond.",
|
"description": "TipiLANil toimub mitmeid erinevaid lõbusaid ja võistlushimu tekitavaid miniturniire. Iga turniiri juures on välja toodud terve turniiri auhinnafond.",
|
||||||
"readRules": "LOE REEGLEID",
|
"readRules": "LOE REEGLEID",
|
||||||
"buyTicket": "OSTA PILET"
|
"buyTicket": "OSTA PILET",
|
||||||
|
"organizedBy": "Korraldaja",
|
||||||
|
"prizePool": "Auhinnafond",
|
||||||
|
"giftBags": "Kinkekotid",
|
||||||
|
"top": "Top {place}",
|
||||||
|
"categories": {
|
||||||
|
"simRacing": "Sim Racing",
|
||||||
|
"fightingGames": "Võitlusmängud",
|
||||||
|
"other": "Muud turniirid"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"cs2page": {
|
"cs2page": {
|
||||||
"title": "COUNTER-STRIKE 2 TURNIIR",
|
"title": "COUNTER-STRIKE 2 TURNIIR",
|
||||||
|
|||||||
Reference in New Issue
Block a user