Merge pull request #149 from Lapikud/miniturniirid
Mini-tournament info updated, new sponsors
BIN
public/images/miniturniirid/avatar_legends.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
public/images/miniturniirid/cs16.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
public/images/miniturniirid/invincible_vs.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
public/images/miniturniirid/marvel_tokon.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
public/images/miniturniirid/minitournaments.jpg
Normal file
|
After Width: | Height: | Size: 746 KiB |
BIN
public/images/miniturniirid/osu.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
public/images/miniturniirid/quake.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
public/images/miniturniirid/rocket_league.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
1
public/sponsors/tlu.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
1
public/sponsors/tludti.svg
Normal file
|
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]`}
|
||||
>
|
||||
<Image
|
||||
src="/images/landing/compete_teaser.jpg"
|
||||
src="/images/miniturniirid/minitournaments.jpg"
|
||||
alt=""
|
||||
fill
|
||||
className="object-cover"
|
||||
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
|
||||
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">
|
||||
{t("expo.miniTournaments.description")}
|
||||
</p>
|
||||
<Link href="/turniirid" className="w-fit">
|
||||
<Link href="/turniirid/miniturniirid" className="w-fit">
|
||||
<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`}
|
||||
>
|
||||
@@ -322,7 +322,7 @@ export default function Expo() {
|
||||
</section>
|
||||
|
||||
{/* Universities */}
|
||||
<section className={`${DIVIDER} ${GUTTER} py-12 md:py-16`}>
|
||||
<section className={`${DIVIDER} ${GUTTER} py-12 md:py-16 hidden`}>
|
||||
<SectionHeading>{t("expo.universities")}</SectionHeading>
|
||||
<div className="grid grid-cols-2 lg:grid-cols-4 gap-6 lg:gap-8">
|
||||
{universities.map((uni) => (
|
||||
|
||||
@@ -26,10 +26,10 @@ export default async function Home({
|
||||
<Livestreams />
|
||||
|
||||
{/* Nav cards: Piletid + Ajakava + Turniirid */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 md:h-65 border-b-3 border-[#1F5673]">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 3xl:grid-cols-4 3xl:h-65 border-b-3 border-[#1F5673]">
|
||||
<Link
|
||||
href="/piletid"
|
||||
className="px-8 md:px-12 py-8 flex flex-col justify-center gap-4 border-b-3 md:border-b-0 md:border-r-3 group border-[#1F5673] hover:bg-[#007CAB] dark:hover:bg-[#00A3E0] transition"
|
||||
className="px-8 xl:px-12 py-8 flex flex-col justify-center gap-4 border-b-3 3xl:border-b-0 lg:border-r-3 group border-[#1F5673] hover:bg-[#007CAB] dark:hover:bg-[#00A3E0] transition"
|
||||
>
|
||||
<div className="flex flex-col gap-4">
|
||||
<span
|
||||
@@ -56,7 +56,7 @@ export default async function Home({
|
||||
|
||||
<Link
|
||||
href="/ajakava"
|
||||
className="px-8 md:px-12 py-8 flex flex-col justify-center gap-4 border-b-3 md:border-b-0 md:border-r-3 group border-[#1F5673] hover:bg-[#007CAB] dark:hover:bg-[#00A3E0] transition"
|
||||
className="px-8 xl:px-12 py-8 flex flex-col justify-center gap-4 border-b-3 3xl:border-b-0 3xl:border-r-3 group border-[#1F5673] hover:bg-[#007CAB] dark:hover:bg-[#00A3E0] transition"
|
||||
>
|
||||
<div className="flex flex-col gap-4">
|
||||
<span
|
||||
@@ -81,9 +81,30 @@ export default async function Home({
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
href="/messiala"
|
||||
className="px-8 xl:px-12 py-8 flex flex-col justify-center gap-4 border-b-3 lg:border-b-0 lg:border-r-3 group border-[#1F5673] hover:bg-[#007CAB] dark:hover:bg-[#00A3E0] transition"
|
||||
>
|
||||
<div className="flex flex-col gap-4">
|
||||
<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]">
|
||||
festival
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex flex-row justify-between gap-4 items-center">
|
||||
<h2
|
||||
className={`text-[clamp(2rem,1.8rem+1vw,3rem)] ${vipnagorgialla.className} font-bold italic uppercase dark:text-[#EEE5E5] text-[#2A2C3F] dark:group-hover:text-[#2A2C3F] group-hover:text-black`}
|
||||
>
|
||||
{t("navigation.expo")}
|
||||
</h2>
|
||||
<span className="material-symbols-outlined text-[clamp(2rem,1.5rem+1.5vw,3.5rem)]! font-bold! text-[#007CAB] dark:text-[#00A3E0] group-hover:translate-x-2 dark:group-hover:text-[#EEE5E5] group-hover:text-[#EEE5E5] transition">
|
||||
arrow_right_alt
|
||||
</span>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
href="/turniirid"
|
||||
className="px-8 md:px-12 py-8 flex flex-col justify-center gap-4 group border-[#1F5673] hover:bg-[#007CAB] dark:hover:bg-[#00A3E0] transition"
|
||||
className="px-8 xl:px-12 py-8 flex flex-col justify-center gap-4 group border-[#1F5673] hover:bg-[#007CAB] dark:hover:bg-[#00A3E0] transition"
|
||||
>
|
||||
<div className="flex flex-col gap-4">
|
||||
<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]">
|
||||
|
||||
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>
|
||||
);
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
||||
import Link from "next/link";
|
||||
import Image from "next/image";
|
||||
import { setRequestLocale } from "next-intl/server";
|
||||
import { getTranslations, setRequestLocale } from "next-intl/server";
|
||||
|
||||
interface TournamentCardProps {
|
||||
title: string;
|
||||
@@ -50,6 +50,7 @@ export default async function Tourney({
|
||||
}) {
|
||||
const { locale } = await params;
|
||||
setRequestLocale(locale);
|
||||
const t = await getTranslations({ locale });
|
||||
return (
|
||||
<div className="bg-[#0E0F19] min-h-0 flex flex-col flex-1">
|
||||
{/* 1x2 Grid */}
|
||||
@@ -59,7 +60,7 @@ export default async function Tourney({
|
||||
title="COUNTER-STRIKE 2"
|
||||
buttonHref="/turniirid/cs2"
|
||||
backgroundImage="/images/landing/cs2_tournament.jpg"
|
||||
className="border-b-[3px] md:border-b-0 md:border-r-3"
|
||||
className="border-b-[3px] md:border-b-0 md:border-r-3 min-h-[50vh]"
|
||||
/>
|
||||
|
||||
{/* LoL */}
|
||||
@@ -68,7 +69,17 @@ export default async function Tourney({
|
||||
buttonHref="/turniirid/lol"
|
||||
backgroundImage="/images/landing/lol_tournament.png"
|
||||
objectPosition="bottom left"
|
||||
className="border-b-0"
|
||||
className="border-b-0 min-h-[50vh]"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Full-width Mini-tournaments */}
|
||||
<div className="grid grid-cols-1 auto-rows-fr">
|
||||
<TournamentCard
|
||||
title={t("expo.miniTournaments.title").toUpperCase()}
|
||||
buttonHref="/turniirid/miniturniirid"
|
||||
backgroundImage="/images/miniturniirid/minitournaments.jpg"
|
||||
className="border-t-[3px] min-h-[50vh]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
|
||||
@theme {
|
||||
--breakpoint-xs: 30rem;
|
||||
--breakpoint-3xl: 112rem;
|
||||
}
|
||||
|
||||
body {
|
||||
|
||||
@@ -48,7 +48,7 @@ const Header = ({ navItems }: HeaderProps) => {
|
||||
const dropdownNavItems = mainNavItems;
|
||||
|
||||
const navIconByHref: Partial<Record<NavItem["href"], string>> = {
|
||||
"/messiala": "weekend",
|
||||
"/messiala": "festival",
|
||||
"/ajakava": "event_note",
|
||||
"/piletid": "local_activity",
|
||||
"/turniirid": "rewarded_ads",
|
||||
|
||||
@@ -89,6 +89,22 @@ const highlightedSponsors: 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
|
||||
{
|
||||
href: "https://k-space.ee/",
|
||||
|
||||
164
src/data/miniturniirid.ts
Normal file
@@ -0,0 +1,164 @@
|
||||
// Content for the Miniturniirid (mini-tournaments) page.
|
||||
//
|
||||
// Game titles and prize amounts are proper nouns / language-neutral, so they
|
||||
// live here as plain strings rather than in the translation files (same
|
||||
// convention as src/data/expo.ts). Page headings and button labels are
|
||||
// translated (see the `minipage` block in translations/et.json + en.json).
|
||||
//
|
||||
// Cover images live in public/images/miniturniirid/. `image` is optional and
|
||||
// games without artwork fall back to a text tile showing the title.
|
||||
|
||||
export type MiniTournamentCategory = "simRacing" | "fightingGames" | "other";
|
||||
export type PrizePool = string | "giftBags";
|
||||
|
||||
export interface MiniTournament {
|
||||
/** Game name (proper noun, shown as-is). */
|
||||
title: string;
|
||||
/** Category used to group tournaments on the page. */
|
||||
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. */
|
||||
image?: string;
|
||||
}
|
||||
|
||||
export const miniTournaments: MiniTournament[] = [
|
||||
{
|
||||
title: "GT7",
|
||||
category: "simRacing",
|
||||
organizer: "Red Bull",
|
||||
organizerUrl: "https://www.redbull.com/ee-et/",
|
||||
prizePool: "200€",
|
||||
placements: ["100€", "60€", "40€"],
|
||||
image: "/images/miniturniirid/gran_turismo.jpg",
|
||||
},
|
||||
{
|
||||
title: "WRC, Dirt Rally 2",
|
||||
category: "simRacing",
|
||||
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",
|
||||
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",
|
||||
},
|
||||
{
|
||||
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.",
|
||||
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",
|
||||
},
|
||||
{
|
||||
title: "Marvel Tokon: Fighting Souls",
|
||||
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",
|
||||
},
|
||||
{
|
||||
title: "Avatar Legends: The Fighting Game",
|
||||
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",
|
||||
},
|
||||
{
|
||||
title: "EA FC",
|
||||
category: "other",
|
||||
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",
|
||||
category: "other",
|
||||
organizer: "K-space",
|
||||
organizerUrl: "https://k-space.ee/",
|
||||
prizePool: "giftBags",
|
||||
placements: ["Kinkekott", "Kinkekott", "Kinkekott", "Kinkekott"],
|
||||
image: "/images/miniturniirid/cs16.jpg",
|
||||
},
|
||||
{
|
||||
title: "Quake",
|
||||
category: "other",
|
||||
prizePool: "giftBags",
|
||||
placements: ["Kinkekott", "Kinkekott", "Kinkekott", "Kinkekott"],
|
||||
image: "/images/miniturniirid/quake.jpg",
|
||||
},
|
||||
{
|
||||
title: "Rocket League",
|
||||
category: "other",
|
||||
format: "2v2",
|
||||
prizePool: "50€",
|
||||
placements: ["25€ + 25€", "Kinkekott 2x", "Kinkekott 2x"],
|
||||
includesGiftBags: true,
|
||||
image: "/images/miniturniirid/rocket_league.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.lobbyAndLanArea"
|
||||
],
|
||||
time: "*01:00",
|
||||
time: "~01:00",
|
||||
},
|
||||
],
|
||||
sep12: [
|
||||
@@ -316,7 +316,7 @@ export const scheduleData: Record<string, ScheduleItem[]> = {
|
||||
{
|
||||
titleKey: "schedule.events.doorsClose",
|
||||
locationKey: "schedule.locations.auditorium",
|
||||
time: "*01:30",
|
||||
time: "~01:30",
|
||||
},
|
||||
],
|
||||
sep13: [
|
||||
@@ -361,17 +361,17 @@ export const scheduleData: Record<string, ScheduleItem[]> = {
|
||||
{
|
||||
titleKey: "schedule.events.awardCeremony",
|
||||
locationKey: "schedule.locations.auditorium",
|
||||
time: "18:30",
|
||||
time: "~18:30",
|
||||
},
|
||||
{
|
||||
titleKey: "schedule.events.closingCeremony",
|
||||
locationKey: "schedule.locations.auditorium",
|
||||
time: "19:00",
|
||||
time: "~19:00",
|
||||
},
|
||||
{
|
||||
titleKey: "schedule.events.doorsClose",
|
||||
locationKey: "schedule.locations.auditorium",
|
||||
time: "19:30",
|
||||
time: "~19:30",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -46,6 +46,10 @@ export const routing = defineRouting({
|
||||
et: "/turniirid",
|
||||
en: "/tournaments",
|
||||
},
|
||||
"/turniirid/miniturniirid": {
|
||||
et: "/turniirid/miniturniirid",
|
||||
en: "/tournaments/minitournaments",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
"tickets": "Tickets",
|
||||
"rules": "Game rules",
|
||||
"stream": "Stream",
|
||||
"tournaments": "Tourna\u00ADments"
|
||||
"tournaments": "Tourna\u00ADments",
|
||||
"minitournaments": "Mini-tournaments"
|
||||
},
|
||||
"common": {
|
||||
"loading": "Loading...",
|
||||
@@ -175,6 +176,22 @@
|
||||
"buyTicket": "BUY TICKETS"
|
||||
}
|
||||
},
|
||||
"minipage": {
|
||||
"title": "Mini-tournaments",
|
||||
"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.",
|
||||
"readRules": "READ RULES",
|
||||
"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": {
|
||||
"title": "COUNTER-STRIKE 2 TOURNAMENT",
|
||||
"buyTicket": "BUY TICKET",
|
||||
@@ -839,7 +856,8 @@
|
||||
"entranceHall": "Lobby",
|
||||
"fuajeeLanAla": "Fuajee/LAN Area",
|
||||
"foyerAndLanArea": "Fuajee/LAN Area",
|
||||
"lobbyAndLanArea": "Lobby/LAN area"
|
||||
"lobbyAndLanArea": "Lobby/LAN area",
|
||||
"miniTournaments": "Mini-tournaments"
|
||||
},
|
||||
"transportInfo": "Come to TipiLAN by public transport if possible! Buses 10, 11, 19, 23, 24A, 27, 33, 36, 37, 45, 67 and trolleybuses 72 and 83 will take you to TalTech. If you come by car, don't come alone - bring your friends!"
|
||||
},
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
"tickets": "Piletid",
|
||||
"rules": "Reeglid",
|
||||
"stream": "Striim",
|
||||
"tournaments": "Turniirid"
|
||||
"tournaments": "Turniirid",
|
||||
"minitournaments": "Miniturniirid"
|
||||
},
|
||||
"common": {
|
||||
"loading": "Laadimine...",
|
||||
@@ -176,6 +177,22 @@
|
||||
"buyTicket": "OSTA PILET"
|
||||
}
|
||||
},
|
||||
"minipage": {
|
||||
"title": "Miniturniirid",
|
||||
"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.",
|
||||
"readRules": "LOE REEGLEID",
|
||||
"buyTicket": "OSTA PILET",
|
||||
"organizedBy": "Korraldaja",
|
||||
"prizePool": "Auhinnafond",
|
||||
"giftBags": "Kinkekotid",
|
||||
"top": "Top {place}",
|
||||
"categories": {
|
||||
"simRacing": "Sim Racing",
|
||||
"fightingGames": "Võitlusmängud",
|
||||
"other": "Muud turniirid"
|
||||
}
|
||||
},
|
||||
"cs2page": {
|
||||
"title": "COUNTER-STRIKE 2 TURNIIR",
|
||||
"buyTicket": "OSTA PILET",
|
||||
@@ -840,7 +857,8 @@
|
||||
"entranceHall": "Fuajee",
|
||||
"fuajeeLanAla": "Fuajee/LAN-ala",
|
||||
"foyerAndLanArea": "Fuajee/LAN-ala",
|
||||
"lobbyAndLanArea": "Fuajee/LAN-ala"
|
||||
"lobbyAndLanArea": "Fuajee/LAN-ala",
|
||||
"miniTournaments": "Miniturniirid"
|
||||
},
|
||||
"transportInfo": "Tule võimaluse korral TipiLANile ühistranspordiga! TalTechi toovad sind bussid 10, 11, 19, 23, 24A, 27, 33, 36, 37, 45, 67 ning trollid 72 ja 83. Kui tuled autoga, siis ära tule üksi, võta sõbrad kaasa!"
|
||||
},
|
||||
|
||||