mirror of
https://github.com/Lapikud/tipilan.git
synced 2026-05-08 18:08:32 +00:00
Adjustments to fit within Figma design
This commit is contained in:
6
public/flags/eng.svg
Normal file
6
public/flags/eng.svg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M0 9.93346V14.4808H6.25333L0 9.93346ZM5.18222 35.25H14.4444V28.515L5.18222 35.25ZM25.5556 28.5162V35.25H34.8167L25.5556 28.5162ZM0 26.0192V30.5665L6.25556 26.0192H0ZM34.8189 5.25H25.5556V11.985L34.8189 5.25ZM40 30.5677V26.0192H33.7433L40 30.5677ZM40 14.4808V9.93346L33.7456 14.4808H40ZM14.4444 5.25H5.18222L14.4444 11.985V5.25Z" fill="#00247D"/>
|
||||||
|
<path d="M27.9332 26.0196L38.7243 33.8669C39.2513 33.3031 39.6301 32.6083 39.8243 31.8489L31.8076 26.0196H27.9332ZM14.4443 26.0196H12.0654L1.27543 33.8658C1.85432 34.4773 2.59654 34.9146 3.42876 35.1177L14.4443 27.1077V26.0196ZM25.5554 14.4812H27.9343L38.7243 6.63503C38.1355 6.01457 37.3891 5.58044 36.5721 5.3831L25.5554 13.3931V14.4812ZM12.0654 14.4812L1.27543 6.63503C0.748709 7.19923 0.369666 7.89392 0.174316 8.6531L8.19098 14.4812H12.0654Z" fill="#C8102E"/>
|
||||||
|
<path d="M40 23.7115H23.3333V35.25H25.5556V28.5162L34.8167 35.25H35.5556C36.1458 35.2501 36.7302 35.1278 37.2744 34.8902C37.8185 34.6526 38.3114 34.305 38.7243 33.8669L27.9332 26.0196H31.8076L39.8243 31.8489C39.9276 31.46 40 31.0569 40 30.6346V30.5677L33.7433 26.0192H40V23.7115ZM0 23.7115V26.0192H6.25556L0 30.5665V30.6346C0 31.8935 0.48765 33.0327 1.27543 33.8658L12.0654 26.0196H14.4443V27.1077L3.42889 35.1162C3.75556 35.1969 4.09333 35.25 4.44444 35.25H5.18222L14.4444 28.515V35.25H16.6667V23.7115H0ZM40 9.86539C40.0007 8.65613 39.5422 7.49574 38.7243 6.63503L27.9343 14.4812H25.5554V13.3931L36.5721 5.3831C36.2393 5.29833 35.8982 5.25339 35.5556 5.25L34.8189 5.25L25.5556 11.985V5.25L23.3333 5.25V16.7885H40V14.4808H33.7456L40 9.93346V9.86539ZM14.4444 5.25V11.985L5.18222 5.25L4.44444 5.25C3.85403 5.24973 3.26952 5.37209 2.72531 5.60988C2.1811 5.84767 1.68805 6.19649 1.27543 6.63503L12.0654 14.4812H8.19098L0.174316 8.6531C0.0640721 9.04738 0.00552601 9.45486 0 9.86539V9.93346L6.25333 14.4808H0V16.7885H16.6667V5.25L14.4444 5.25Z" fill="white"/>
|
||||||
|
<path d="M23.3333 16.7885V5.25H16.6667V16.7885H0V23.7115H16.6667V35.25H23.3333V23.7115H40V16.7885H23.3333Z" fill="#C8102E"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
5
public/flags/est.svg
Normal file
5
public/flags/est.svg
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M35.5556 5.25H4.44444C3.2657 5.25 2.13524 5.71825 1.30175 6.55175C0.468253 7.38524 0 8.5157 0 9.69444V15.25H40V9.69444C40 8.5157 39.5317 7.38524 38.6983 6.55175C37.8648 5.71825 36.7343 5.25 35.5556 5.25Z" fill="#0072CE"/>
|
||||||
|
<path d="M0 15.25H40V25.25H0V15.25Z" fill="black"/>
|
||||||
|
<path d="M35.5556 35.25H4.44444C3.2657 35.25 2.13524 34.7232 1.30175 33.7855C0.468253 32.8479 0 31.5761 0 30.25V25.25H40V30.25C40 31.5761 39.5317 32.8479 38.6983 33.7855C37.8648 34.7232 36.7343 35.25 35.5556 35.25Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 617 B |
@@ -13,12 +13,12 @@ export default async function Timetable({
|
|||||||
return (
|
return (
|
||||||
<div className="bg-[#0E0F19] min-h-screen flex flex-col items-center justify-center">
|
<div className="bg-[#0E0F19] min-h-screen flex flex-col items-center justify-center">
|
||||||
<h1
|
<h1
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-4xl md:text-5xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-[clamp(1.75rem,5vw,3rem)] text-[#EEE5E5] uppercase mb-4 text-center`}
|
||||||
>
|
>
|
||||||
{t("schedule.title")}
|
{t("schedule.title")}
|
||||||
</h1>
|
</h1>
|
||||||
<p
|
<p
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-5xl md:text-7xl text-[#EEE5E5] uppercase`}
|
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2rem,8vw,4.5rem)] text-[#EEE5E5] uppercase text-center`}
|
||||||
>
|
>
|
||||||
{t("schedule.comingSoon")}
|
{t("schedule.comingSoon")}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
// app/kodukord/page.tsx (App Router)
|
// app/kodukord/page.tsx (App Router)
|
||||||
import ReactMarkdown, { Components } from "react-markdown";
|
import ReactMarkdown, { Components } from "react-markdown";
|
||||||
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
||||||
import SectionDivider from "@/components/SectionDivider";
|
import RuleNav from "@/components/RuleNav";
|
||||||
import { getTranslations, setRequestLocale } from "next-intl/server";
|
import { getTranslations, setRequestLocale } from "next-intl/server";
|
||||||
import { loadRulesBun } from "@/lib/loadRules";
|
import { loadRulesBun } from "@/lib/loadRules";
|
||||||
|
|
||||||
|
const sectionKeys = [
|
||||||
|
{ id: "reminder", labelKey: "rules.reminder" },
|
||||||
|
{ id: "code", labelKey: "rules.code" },
|
||||||
|
];
|
||||||
|
|
||||||
export default async function Page({
|
export default async function Page({
|
||||||
params,
|
params,
|
||||||
}: {
|
}: {
|
||||||
@@ -15,50 +20,77 @@ export default async function Page({
|
|||||||
const t = await getTranslations({ locale });
|
const t = await getTranslations({ locale });
|
||||||
const content = await loadRulesBun("kodukord", locale as "et" | "en");
|
const content = await loadRulesBun("kodukord", locale as "et" | "en");
|
||||||
|
|
||||||
return (
|
const sections = sectionKeys.map((section) => ({
|
||||||
<div>
|
id: section.id,
|
||||||
<div className="flex flex-col min-h-[90vh] m-6 mt-16 md:m-16">
|
label: t(section.labelKey),
|
||||||
{/* Page title (separate from markdown headings) */}
|
}));
|
||||||
<h1
|
|
||||||
className={`text-4xl md:text-5xl lg:text-6xl ${vipnagorgialla.className} font-bold italic text-[#2A2C3F] dark:text-[#EEE5E5] mt-8 md:mt-16 mb-4 uppercase`}
|
|
||||||
>
|
|
||||||
{t("rules.houseRules")}
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<div className="prose prose-lg dark:prose-invert max-w-none">
|
// Track heading count for ID assignment
|
||||||
<ReactMarkdown
|
let headingCount = 0;
|
||||||
components={
|
|
||||||
{
|
return (
|
||||||
h1: (props) => (
|
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
|
||||||
<h1 className="text-3xl md:text-4xl font-bold my-4">
|
<div className="max-w-480 mx-auto px-6 md:px-12 py-8 md:py-16">
|
||||||
{props.children}
|
<div className="grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
|
||||||
</h1>
|
{/* Main content */}
|
||||||
),
|
<div>
|
||||||
h2: (props) => (
|
{/* Page title */}
|
||||||
<h2 className="text-2xl md:text-3xl font-semibold my-3">
|
<h1
|
||||||
{props.children}
|
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2.5rem,2rem+3vw,4rem)] leading-tight text-[#00A3E0] uppercase mb-8`}
|
||||||
</h2>
|
>
|
||||||
),
|
{t("rules.houseRules")}
|
||||||
ol: (props) => (
|
</h1>
|
||||||
<ol className="list-decimal ml-6 md:text-xl">
|
|
||||||
{props.children}
|
<ReactMarkdown
|
||||||
</ol>
|
components={
|
||||||
),
|
{
|
||||||
ul: (props) => (
|
h1: (props) => {
|
||||||
<ul className="list-disc ml-6 md:text-xl">
|
const id =
|
||||||
{props.children}
|
sections[headingCount]?.id || `section-${headingCount}`;
|
||||||
</ul>
|
headingCount++;
|
||||||
),
|
return (
|
||||||
p: (props) => <p className="md:text-xl">{props.children}</p>,
|
<h1
|
||||||
} as Components
|
id={id}
|
||||||
}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4 mt-12 first:mt-0 scroll-mt-24 md:scroll-mt-28`}
|
||||||
>
|
>
|
||||||
{content}
|
{props.children}
|
||||||
</ReactMarkdown>
|
</h1>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
h2: (props) => (
|
||||||
|
<h2
|
||||||
|
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2 mt-6`}
|
||||||
|
>
|
||||||
|
{props.children}
|
||||||
|
</h2>
|
||||||
|
),
|
||||||
|
ol: (props) => (
|
||||||
|
<ol className="list-decimal list-inside text-white mb-4">
|
||||||
|
{props.children}
|
||||||
|
</ol>
|
||||||
|
),
|
||||||
|
ul: (props) => (
|
||||||
|
<ul className="list-disc list-inside text-white mb-4">
|
||||||
|
{props.children}
|
||||||
|
</ul>
|
||||||
|
),
|
||||||
|
p: (props) => (
|
||||||
|
<p className="text-white mb-4">{props.children}</p>
|
||||||
|
),
|
||||||
|
li: (props) => (
|
||||||
|
<li className="text-white mb-2">{props.children}</li>
|
||||||
|
),
|
||||||
|
} as Components
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{content}
|
||||||
|
</ReactMarkdown>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Sidebar navigation */}
|
||||||
|
<RuleNav sections={sections} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<SectionDivider />
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ export default async function Expo({
|
|||||||
return (
|
return (
|
||||||
<div className="bg-[#0E0F19] min-h-screen flex flex-col items-center justify-center">
|
<div className="bg-[#0E0F19] min-h-screen flex flex-col items-center justify-center">
|
||||||
<h1
|
<h1
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-4xl md:text-5xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-[clamp(1.75rem,5vw,3rem)] text-[#EEE5E5] uppercase mb-4 text-center`}
|
||||||
>
|
>
|
||||||
{t("expo.title")}
|
{t("expo.title")}
|
||||||
</h1>
|
</h1>
|
||||||
<p
|
<p
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-5xl md:text-7xl text-[#EEE5E5] uppercase`}
|
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2rem,8vw,4.5rem)] text-[#EEE5E5] uppercase text-center`}
|
||||||
>
|
>
|
||||||
{t("expo.comingSoon")}
|
{t("expo.comingSoon")}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export default async function Home({
|
|||||||
>
|
>
|
||||||
<div className="flex flex-col gap-4">
|
<div className="flex flex-col gap-4">
|
||||||
<span
|
<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]"
|
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]"
|
||||||
style={{
|
style={{
|
||||||
fontVariationSettings:
|
fontVariationSettings:
|
||||||
'"FILL" 0, "wght" 700, "GRAD" 0, "opsz" 24',
|
'"FILL" 0, "wght" 700, "GRAD" 0, "opsz" 24',
|
||||||
@@ -44,7 +44,7 @@ export default async function Home({
|
|||||||
>
|
>
|
||||||
{t("navigation.tickets")}
|
{t("navigation.tickets")}
|
||||||
</h2>
|
</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">
|
<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
|
arrow_right_alt
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -55,7 +55,7 @@ export default async function Home({
|
|||||||
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 md: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">
|
<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]">
|
<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]">
|
||||||
rewarded_ads
|
rewarded_ads
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -65,7 +65,7 @@ export default async function Home({
|
|||||||
>
|
>
|
||||||
{t("navigation.tournaments")}
|
{t("navigation.tournaments")}
|
||||||
</h2>
|
</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">
|
<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
|
arrow_right_alt
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ function TicketCard({
|
|||||||
}: TicketCardProps) {
|
}: TicketCardProps) {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`relative bg-[#0E0F19] border-[#1F5673] p-8 flex flex-col min-h-87.5 h-full ${className}`}
|
className={`relative bg-[#0E0F19] border-[#1F5673] px-12 py-16 flex flex-col min-h-87.5 h-full ${className}`}
|
||||||
>
|
>
|
||||||
{backgroundImage && (
|
{backgroundImage && (
|
||||||
<Image
|
<Image
|
||||||
@@ -46,7 +46,7 @@ function TicketCard({
|
|||||||
{title}
|
{title}
|
||||||
</h2>
|
</h2>
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl text-[#EEE5E5] uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{subtitle}
|
{subtitle}
|
||||||
</h3>
|
</h3>
|
||||||
@@ -66,7 +66,7 @@ function TicketCard({
|
|||||||
</span>
|
</span>
|
||||||
))}
|
))}
|
||||||
</p>
|
</p>
|
||||||
<ul className="flex flex-col gap-1 mb-6 grow">
|
<ul className="flex flex-col gap-2 mb-6 grow">
|
||||||
{features.map((feature, index) => (
|
{features.map((feature, index) => (
|
||||||
<li
|
<li
|
||||||
key={index}
|
key={index}
|
||||||
|
|||||||
@@ -41,12 +41,12 @@ export default async function Home({
|
|||||||
>
|
>
|
||||||
{t("navigation.schedule")}
|
{t("navigation.schedule")}
|
||||||
</h2>
|
</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">
|
<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
|
arrow_right_alt
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-4">
|
<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]">
|
<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]">
|
||||||
event_note
|
event_note
|
||||||
</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">
|
<p className="text-[clamp(0.875rem,0.75rem+0.5vw,1.25rem)] tracking-[-0.045rem] dark:group-hover:text-[#2A2C3F] group-hover:text-black">
|
||||||
@@ -61,7 +61,7 @@ export default async function Home({
|
|||||||
src="https://player.twitch.tv/?channel=tipilan_ee&parent=localhost&parent=tipilan.ee"
|
src="https://player.twitch.tv/?channel=tipilan_ee&parent=localhost&parent=tipilan.ee"
|
||||||
height="100%"
|
height="100%"
|
||||||
width="100%"
|
width="100%"
|
||||||
className="w-full h-full min-h-[400px]"
|
className="w-full h-full min-h-100"
|
||||||
allow="autoplay; encrypted-media"
|
allow="autoplay; encrypted-media"
|
||||||
></iframe>
|
></iframe>
|
||||||
</div>
|
</div>
|
||||||
@@ -78,13 +78,13 @@ export default async function Home({
|
|||||||
>
|
>
|
||||||
{t("navigation.tournaments")}
|
{t("navigation.tournaments")}
|
||||||
</h2>
|
</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">
|
<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
|
arrow_right_alt
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex flex-col gap-4">
|
<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]">
|
<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">
|
<p className="text-[clamp(0.875rem,0.75rem+0.5vw,1.25rem)] tracking-[-0.045rem] dark:group-hover:text-[#2A2C3F] group-hover:text-black">
|
||||||
@@ -102,12 +102,12 @@ export default async function Home({
|
|||||||
>
|
>
|
||||||
{t("navigation.expo")}
|
{t("navigation.expo")}
|
||||||
</h2>
|
</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">
|
<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
|
arrow_right_alt
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-4">
|
<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]">
|
<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]">
|
||||||
weekend
|
weekend
|
||||||
</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">
|
<p className="text-[clamp(0.875rem,0.75rem+0.5vw,1.25rem)] tracking-[-0.045rem] dark:group-hover:text-[#2A2C3F] group-hover:text-black">
|
||||||
@@ -125,7 +125,7 @@ export default async function Home({
|
|||||||
<h3 className="text-4xl md:text-5xl dark:text-[#EEE5E5] dark:group-hover:text-[#2A2C3F] text-[#2A2C3F] group-hover:text-black">
|
<h3 className="text-4xl md:text-5xl dark:text-[#EEE5E5] dark:group-hover:text-[#2A2C3F] text-[#2A2C3F] group-hover:text-black">
|
||||||
{t("home.sections.reserveSpot")}
|
{t("home.sections.reserveSpot")}
|
||||||
</h3>
|
</h3>
|
||||||
<span className="material-symbols-outlined !text-[clamp(2rem,1.5rem+1.5vw,3.5rem)] !font-bold text-[#007CAB] dark:text-[#00A3E0] hidden md:block group-hover:translate-x-2 group-hover:text-[#EEE5E5] dark:group-hover:text-[#EEE5E5] transition">
|
<span className="material-symbols-outlined text-[clamp(2rem,1.5rem+1.5vw,3.5rem)]! font-bold! text-[#007CAB] dark:text-[#00A3E0] hidden md:block group-hover:translate-x-2 group-hover:text-[#EEE5E5] dark:group-hover:text-[#EEE5E5] transition">
|
||||||
arrow_right_alt
|
arrow_right_alt
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -62,21 +62,21 @@ export default async function CS2Tournament({
|
|||||||
{/* SISSEJUHATUS */}
|
{/* SISSEJUHATUS */}
|
||||||
<section id="intro" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="intro" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("cs2page.intro.title")}
|
{t("cs2page.intro.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80 mb-6">
|
<p className="text-white mb-6">
|
||||||
{t("cs2page.intro.description")}
|
{t("cs2page.intro.description")}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#EEE5E5] uppercase mb-2`}
|
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2`}
|
||||||
>
|
>
|
||||||
{t("cs2page.intro.previousWinners")}
|
{t("cs2page.intro.previousWinners")}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-[#EEE5E5]/80 font-bold">2025</p>
|
<p className="text-white font-bold">2025</p>
|
||||||
<ol className="text-[#EEE5E5]/80 list-decimal list-inside mb-4">
|
<ol className="text-white list-decimal list-inside mb-4">
|
||||||
<li>RAID (Eesti)</li>
|
<li>RAID (Eesti)</li>
|
||||||
<li>hypewrld (Läti)</li>
|
<li>hypewrld (Läti)</li>
|
||||||
<li>CSDIILIT (Soome/Eesti)</li>
|
<li>CSDIILIT (Soome/Eesti)</li>
|
||||||
@@ -86,29 +86,27 @@ export default async function CS2Tournament({
|
|||||||
{/* ÜLDINE INFO */}
|
{/* ÜLDINE INFO */}
|
||||||
<section id="info" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="info" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("cs2page.info.title")}
|
{t("cs2page.info.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80">
|
<p className="text-white">{t("cs2page.info.description")}</p>
|
||||||
{t("cs2page.info.description")}
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* AUHINNAFOND */}
|
{/* AUHINNAFOND */}
|
||||||
<section id="prizes" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="prizes" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("cs2page.prizes.title")}
|
{t("cs2page.prizes.title")}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#00A3E0] uppercase mb-2`}
|
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2`}
|
||||||
>
|
>
|
||||||
{t("cs2page.prizes.mainTitle")}
|
{t("cs2page.prizes.mainTitle")}
|
||||||
</h3>
|
</h3>
|
||||||
<ul className="text-[#EEE5E5]/80 mb-2">
|
<ul className="text-white mb-2">
|
||||||
<li>
|
<li>
|
||||||
1. koht - 3000€, 600€ inimese kohta, 50% ehk 1/2
|
1. koht - 3000€, 600€ inimese kohta, 50% ehk 1/2
|
||||||
auhinnafondist.
|
auhinnafondist.
|
||||||
@@ -122,16 +120,16 @@ export default async function CS2Tournament({
|
|||||||
auhinnafondist.
|
auhinnafondist.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p className="text-[#EEE5E5]/60 text-sm mb-6">
|
<p className="text-white/80 text-sm mb-6">
|
||||||
{t("cs2page.prizes.mainNote")}
|
{t("cs2page.prizes.mainNote")}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#00A3E0] uppercase mb-2`}
|
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2`}
|
||||||
>
|
>
|
||||||
{t("cs2page.prizes.secondTitle")}
|
{t("cs2page.prizes.secondTitle")}
|
||||||
</h3>
|
</h3>
|
||||||
<ul className="text-[#EEE5E5]/80 mb-2">
|
<ul className="text-white mb-2">
|
||||||
<li>
|
<li>
|
||||||
1. koht - 500€, 100€ inimese kohta, 66.6...(6)% ehk 2/3
|
1. koht - 500€, 100€ inimese kohta, 66.6...(6)% ehk 2/3
|
||||||
auhinnafondist.
|
auhinnafondist.
|
||||||
@@ -141,7 +139,7 @@ export default async function CS2Tournament({
|
|||||||
auhinnafondist.
|
auhinnafondist.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p className="text-[#EEE5E5]/60 text-sm">
|
<p className="text-white/80 text-sm">
|
||||||
{t("cs2page.prizes.secondNote")}
|
{t("cs2page.prizes.secondNote")}
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
@@ -149,45 +147,41 @@ export default async function CS2Tournament({
|
|||||||
{/* TURNIIRI FORMAAT */}
|
{/* TURNIIRI FORMAAT */}
|
||||||
<section id="format" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="format" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("cs2page.format.title")}
|
{t("cs2page.format.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80 mb-4">
|
<p className="text-white mb-4">
|
||||||
{t("cs2page.format.description")}
|
{t("cs2page.format.description")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-[#EEE5E5]/80">{t("cs2page.format.day1")}</p>
|
<p className="text-white">{t("cs2page.format.day1")}</p>
|
||||||
<p className="text-[#EEE5E5]/80">{t("cs2page.format.day23")}</p>
|
<p className="text-white">{t("cs2page.format.day23")}</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* VRS INFO */}
|
{/* VRS INFO */}
|
||||||
<section id="vrs" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="vrs" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("cs2page.vrs.title")}
|
{t("cs2page.vrs.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80 mb-4">
|
<p className="text-white mb-4">{t("cs2page.vrs.description1")}</p>
|
||||||
{t("cs2page.vrs.description1")}
|
<p className="text-white">{t("cs2page.vrs.description2")}</p>
|
||||||
</p>
|
|
||||||
<p className="text-[#EEE5E5]/80">
|
|
||||||
{t("cs2page.vrs.description2")}
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* FAQ - commented out until content is ready
|
{/* FAQ - commented out until content is ready
|
||||||
<section id="faq" className="mb-12">
|
<section id="faq" className="mb-12">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("cs2page.faq.title")}
|
{t("cs2page.faq.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-lg text-[#EEE5E5] uppercase mb-2`}
|
className={`${vipnagorgialla.className} font-bold italic text-lg text-white uppercase mb-2`}
|
||||||
>
|
>
|
||||||
{t("cs2page.faq.q1")}
|
{t("cs2page.faq.q1")}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-[#EEE5E5]/80 mb-4">
|
<p className="text-white mb-4">
|
||||||
{t("cs2page.faq.a1")}
|
{t("cs2page.faq.a1")}
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
@@ -196,32 +190,28 @@ export default async function CS2Tournament({
|
|||||||
{/* REEGLID */}
|
{/* REEGLID */}
|
||||||
<section id="rules" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="rules" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("cs2page.rules.title")}
|
{t("cs2page.rules.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80 mb-6">
|
<p className="text-white mb-6">
|
||||||
{t("cs2page.rules.description")}
|
{t("cs2page.rules.description")}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<RulesContent sections={t.raw("cs2page.rules.sections")} />
|
<RulesContent sections={t.raw("cs2page.rules.sections")} />
|
||||||
|
|
||||||
<div className="mt-8">
|
<div className="mt-8">
|
||||||
<p className="text-[#EEE5E5]/80 mb-2">
|
<p className="text-white mb-2">{t("cs2page.rules.contact")}</p>
|
||||||
{t("cs2page.rules.contact")}
|
|
||||||
</p>
|
|
||||||
<p className="text-[#00A3E0] font-bold">
|
<p className="text-[#00A3E0] font-bold">
|
||||||
{t("cs2page.rules.contactName")}
|
{t("cs2page.rules.contactName")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-[#EEE5E5]/70">
|
<p className="text-white">{t("cs2page.rules.contactRole")}</p>
|
||||||
{t("cs2page.rules.contactRole")}
|
<p className="text-white">
|
||||||
</p>
|
|
||||||
<p className="text-[#EEE5E5]/70">
|
|
||||||
Discord:{" "}
|
Discord:{" "}
|
||||||
<a
|
<a
|
||||||
href="https://discord.com/users/292372329747710013"
|
href="https://discord.com/users/292372329747710013"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
className="text-[#00A3E0] hover:text-[#EEE5E5] transition"
|
className="text-[#00A3E0] hover:text-white transition"
|
||||||
>
|
>
|
||||||
hrkruger
|
hrkruger
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -54,21 +54,21 @@ export default async function LoLTournament({
|
|||||||
{/* SISSEJUHATUS */}
|
{/* SISSEJUHATUS */}
|
||||||
<section id="intro" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="intro" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("lolpage.intro.title")}
|
{t("lolpage.intro.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80 mb-6">
|
<p className="text-white mb-6">
|
||||||
{t("lolpage.intro.description")}
|
{t("lolpage.intro.description")}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#EEE5E5] uppercase mb-2`}
|
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2`}
|
||||||
>
|
>
|
||||||
{t("lolpage.intro.previousWinners")}
|
{t("lolpage.intro.previousWinners")}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-[#EEE5E5]/80 font-bold">2025</p>
|
<p className="text-white font-bold">2025</p>
|
||||||
<ol className="text-[#EEE5E5]/80 list-decimal list-inside mb-4">
|
<ol className="text-white list-decimal list-inside mb-4">
|
||||||
<li>Ükssilm (Eesti)</li>
|
<li>Ükssilm (Eesti)</li>
|
||||||
<li>Eesti Rästikud (Eesti)</li>
|
<li>Eesti Rästikud (Eesti)</li>
|
||||||
<li>LOMiks (Läti)</li>
|
<li>LOMiks (Läti)</li>
|
||||||
@@ -78,34 +78,32 @@ export default async function LoLTournament({
|
|||||||
{/* ÜLDINE INFO */}
|
{/* ÜLDINE INFO */}
|
||||||
<section id="info" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="info" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("lolpage.info.title")}
|
{t("lolpage.info.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80">
|
<p className="text-white">{t("lolpage.info.description")}</p>
|
||||||
{t("lolpage.info.description")}
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* AUHINNAFOND */}
|
{/* AUHINNAFOND */}
|
||||||
<section id="prizes" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="prizes" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("lolpage.prizes.title")}
|
{t("lolpage.prizes.title")}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#00A3E0] uppercase mb-2`}
|
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2`}
|
||||||
>
|
>
|
||||||
{t("lolpage.prizes.mainTitle")}
|
{t("lolpage.prizes.mainTitle")}
|
||||||
</h3>
|
</h3>
|
||||||
<ul className="text-[#EEE5E5]/80 mb-2">
|
<ul className="text-white mb-2">
|
||||||
<li>{t("lolpage.prizes.place1")}</li>
|
<li>{t("lolpage.prizes.place1")}</li>
|
||||||
<li>{t("lolpage.prizes.place2")}</li>
|
<li>{t("lolpage.prizes.place2")}</li>
|
||||||
<li>{t("lolpage.prizes.place3")}</li>
|
<li>{t("lolpage.prizes.place3")}</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p className="text-[#EEE5E5]/60 text-sm">
|
<p className="text-white/80 text-sm">
|
||||||
{t("lolpage.prizes.note")}
|
{t("lolpage.prizes.note")}
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
@@ -113,30 +111,30 @@ export default async function LoLTournament({
|
|||||||
{/* TURNIIRI FORMAAT */}
|
{/* TURNIIRI FORMAAT */}
|
||||||
<section id="format" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="format" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("lolpage.format.title")}
|
{t("lolpage.format.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80 mb-4">
|
<p className="text-white mb-4">
|
||||||
{t("lolpage.format.description")}
|
{t("lolpage.format.description")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-[#EEE5E5]/80">{t("lolpage.format.day1")}</p>
|
<p className="text-white">{t("lolpage.format.day1")}</p>
|
||||||
<p className="text-[#EEE5E5]/80">{t("lolpage.format.day2")}</p>
|
<p className="text-white">{t("lolpage.format.day2")}</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* FAQ - commented out until content is ready
|
{/* FAQ - commented out until content is ready
|
||||||
<section id="faq" className="mb-12">
|
<section id="faq" className="mb-12">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("lolpage.faq.title")}
|
{t("lolpage.faq.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-lg text-[#EEE5E5] uppercase mb-2`}
|
className={`${vipnagorgialla.className} font-bold italic text-lg text-white uppercase mb-2`}
|
||||||
>
|
>
|
||||||
{t("lolpage.faq.q1")}
|
{t("lolpage.faq.q1")}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-[#EEE5E5]/80 mb-4">
|
<p className="text-white mb-4">
|
||||||
{t("lolpage.faq.a1")}
|
{t("lolpage.faq.a1")}
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
@@ -145,32 +143,28 @@ export default async function LoLTournament({
|
|||||||
{/* REEGLID */}
|
{/* REEGLID */}
|
||||||
<section id="rules" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
<section id="rules" className="mb-12 scroll-mt-24 md:scroll-mt-28">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-[#EEE5E5] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-2xl md:text-3xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{t("lolpage.rules.title")}
|
{t("lolpage.rules.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-[#EEE5E5]/80 mb-6">
|
<p className="text-white mb-6">
|
||||||
{t("lolpage.rules.description")}
|
{t("lolpage.rules.description")}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<RulesContent sections={t.raw("lolpage.rules.sections")} />
|
<RulesContent sections={t.raw("lolpage.rules.sections")} />
|
||||||
|
|
||||||
<div className="mt-8">
|
<div className="mt-8">
|
||||||
<p className="text-[#EEE5E5]/80 mb-2">
|
<p className="text-white mb-2">{t("lolpage.rules.contact")}</p>
|
||||||
{t("lolpage.rules.contact")}
|
|
||||||
</p>
|
|
||||||
<p className="text-[#00A3E0] font-bold">
|
<p className="text-[#00A3E0] font-bold">
|
||||||
{t("lolpage.rules.contactName")}
|
{t("lolpage.rules.contactName")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-[#EEE5E5]/70">
|
<p className="text-white">{t("lolpage.rules.contactRole")}</p>
|
||||||
{t("lolpage.rules.contactRole")}
|
<p className="text-white">
|
||||||
</p>
|
|
||||||
<p className="text-[#EEE5E5]/70">
|
|
||||||
Discord:{" "}
|
Discord:{" "}
|
||||||
<a
|
<a
|
||||||
href="https://discord.com/users/125585160761638912"
|
href="https://discord.com/users/125585160761638912"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
className="text-[#00A3E0] hover:text-[#EEE5E5] transition"
|
className="text-[#00A3E0] hover:text-white transition"
|
||||||
>
|
>
|
||||||
Kukkel
|
Kukkel
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ body {
|
|||||||
|
|
||||||
:root {
|
:root {
|
||||||
--radius: 0.625rem;
|
--radius: 0.625rem;
|
||||||
--background: oklch(1 0 0);
|
--background: #0a121f;
|
||||||
--foreground: oklch(0.145 0 0);
|
--foreground: oklch(0.145 0 0);
|
||||||
--card: oklch(1 0 0);
|
--card: oklch(1 0 0);
|
||||||
--card-foreground: oklch(0.145 0 0);
|
--card-foreground: oklch(0.145 0 0);
|
||||||
@@ -90,7 +90,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
--background: oklch(0.145 0 0);
|
--background: #0a121f;
|
||||||
--foreground: oklch(0.985 0 0);
|
--foreground: oklch(0.985 0 0);
|
||||||
--card: oklch(0.205 0 0);
|
--card: oklch(0.205 0 0);
|
||||||
--card-foreground: oklch(0.985 0 0);
|
--card-foreground: oklch(0.985 0 0);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ const Footer = () => {
|
|||||||
<div className="flex flex-col justify-center sm:justify-between px-6 py-6 md:px-12 md:py-8 gap-4 border-t-3 border-[#1F5673]">
|
<div className="flex flex-col justify-center sm:justify-between px-6 py-6 md:px-12 md:py-8 gap-4 border-t-3 border-[#1F5673]">
|
||||||
<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] mb-4`}
|
className={`text-3xl sm:text-4xl ${vipnagorgialla.className} font-bold italic uppercase text-[#2A2C3F] dark:text-[#EEE5E5] mb-4 text-center sm:text-left`}
|
||||||
>
|
>
|
||||||
{t("footer.contact")}
|
{t("footer.contact")}
|
||||||
</h2>
|
</h2>
|
||||||
@@ -30,7 +30,7 @@ const Footer = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-2 items-center text-center sm:justify-self-center">
|
<div className="flex flex-col gap-2 items-center text-center sm:justify-self-center">
|
||||||
<div className="flex flex-row gap-2">
|
<div className="flex flex-row gap-2">
|
||||||
<span className="material-symbols-outlined !font-bold text-[#007CAB] dark:text-[#00A3E0]">
|
<span className="material-symbols-outlined font-bold! text-[#007CAB] dark:text-[#00A3E0]">
|
||||||
mail
|
mail
|
||||||
</span>
|
</span>
|
||||||
<a href="mailto:tipilaninfogmail.com" className="underline">
|
<a href="mailto:tipilaninfogmail.com" className="underline">
|
||||||
@@ -38,7 +38,7 @@ const Footer = () => {
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-row gap-2">
|
<div className="flex flex-row gap-2">
|
||||||
<span className="material-symbols-outlined !font-bold text-[#007CAB] dark:text-[#00A3E0]">
|
<span className="material-symbols-outlined font-bold! text-[#007CAB] dark:text-[#00A3E0]">
|
||||||
phone
|
phone
|
||||||
</span>
|
</span>
|
||||||
<a href="tel:+37256931193" className="underline">
|
<a href="tel:+37256931193" className="underline">
|
||||||
|
|||||||
@@ -49,10 +49,11 @@ const Header = ({ navItems }: HeaderProps) => {
|
|||||||
"/ajakava": "event_note",
|
"/ajakava": "event_note",
|
||||||
"/piletid": "local_activity",
|
"/piletid": "local_activity",
|
||||||
"/turniirid": "rewarded_ads",
|
"/turniirid": "rewarded_ads",
|
||||||
|
"/kodukord": "gavel",
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const largeScreenQuery = window.matchMedia("(min-width: 1024px)");
|
const largeScreenQuery = window.matchMedia("(min-width: 1280px)");
|
||||||
|
|
||||||
const handleScaleOrViewportChange = (event: MediaQueryListEvent) => {
|
const handleScaleOrViewportChange = (event: MediaQueryListEvent) => {
|
||||||
if (event.matches) {
|
if (event.matches) {
|
||||||
@@ -79,7 +80,7 @@ const Header = ({ navItems }: HeaderProps) => {
|
|||||||
}, [pathname]);
|
}, [pathname]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<header className="px-4 py-2 md:px-8 flex items-center bg-[#0E0F19] border-b-3 border-[#1F5673] justify-between">
|
<header className="px-4 sm:px-8 md:px-12 lg:px-16 py-3 flex items-center bg-[#0E0F19] border-b-3 border-[#1F5673] justify-between">
|
||||||
{/* Logo */}
|
{/* Logo */}
|
||||||
<Link href="/" className="shrink-0">
|
<Link href="/" className="shrink-0">
|
||||||
<Image
|
<Image
|
||||||
@@ -92,9 +93,9 @@ const Header = ({ navItems }: HeaderProps) => {
|
|||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{/* Right side - Navigation + controls */}
|
{/* Right side - Navigation + controls */}
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-12">
|
||||||
{/* Desktop Navigation */}
|
{/* Desktop Navigation */}
|
||||||
<nav className="hidden lg:flex items-center gap-3">
|
<nav className="hidden xl:flex items-center gap-12">
|
||||||
{mainNavItems.map((item) => {
|
{mainNavItems.map((item) => {
|
||||||
const isActive = pathname === item.href;
|
const isActive = pathname === item.href;
|
||||||
|
|
||||||
@@ -127,7 +128,7 @@ const Header = ({ navItems }: HeaderProps) => {
|
|||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="lg:hidden size-10 cursor-pointer"
|
className="xl:hidden size-10 cursor-pointer"
|
||||||
>
|
>
|
||||||
{isMobileMenuOpen ? (
|
{isMobileMenuOpen ? (
|
||||||
<MdClose className="size-10 text-[#EEE5E5]" />
|
<MdClose className="size-10 text-[#EEE5E5]" />
|
||||||
@@ -139,7 +140,8 @@ const Header = ({ navItems }: HeaderProps) => {
|
|||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent
|
<DropdownMenuContent
|
||||||
align="end"
|
align="end"
|
||||||
className="lg:hidden w-72 translate-x-2 translate-y-0 rounded-none border-3 border-[#1F5673] bg-[#0E0F19] p-0"
|
sideOffset={0}
|
||||||
|
className="xl:hidden w-screen sm:w-72 translate-x-0 sm:translate-x-4 translate-y-3 rounded-none border-3 border-[#1F5673] bg-[#0E0F19] p-0"
|
||||||
>
|
>
|
||||||
{dropdownNavItems.map((item, index) => {
|
{dropdownNavItems.map((item, index) => {
|
||||||
const isActive = pathname === item.href;
|
const isActive = pathname === item.href;
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
import { useLocale } from "next-intl";
|
import { useLocale } from "next-intl";
|
||||||
import { useRouter, usePathname } from "@/i18n/routing";
|
import { useRouter, usePathname } from "@/i18n/routing";
|
||||||
import { routing } from "@/i18n/routing";
|
import { routing } from "@/i18n/routing";
|
||||||
|
import Image from "next/image";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
|
||||||
|
|
||||||
export default function LanguageSwitcher() {
|
export default function LanguageSwitcher() {
|
||||||
const locale = useLocale();
|
const locale = useLocale();
|
||||||
@@ -17,15 +17,15 @@ export default function LanguageSwitcher() {
|
|||||||
return routing.locales[nextIndex] as "et" | "en";
|
return routing.locales[nextIndex] as "et" | "en";
|
||||||
};
|
};
|
||||||
|
|
||||||
const getNextLanguageName = () => {
|
const getNextLanguageFlag = () => {
|
||||||
const nextLocale = getNextLocale();
|
const nextLocale = getNextLocale();
|
||||||
switch (nextLocale) {
|
switch (nextLocale) {
|
||||||
case "et":
|
case "et":
|
||||||
return "EST";
|
return { src: "/flags/est.svg", alt: "Estonian flag" };
|
||||||
case "en":
|
case "en":
|
||||||
return "ENG";
|
return { src: "/flags/eng.svg", alt: "English flag" };
|
||||||
default:
|
default:
|
||||||
return nextLocale;
|
return { src: "/flags/est.svg", alt: nextLocale };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -38,10 +38,16 @@ export default function LanguageSwitcher() {
|
|||||||
<Button
|
<Button
|
||||||
onClick={handleLanguageSwitch}
|
onClick={handleLanguageSwitch}
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="lg"
|
size="icon"
|
||||||
className={`${vipnagorgialla.className} text-3xl font-bold italic uppercase cursor-pointer hover:bg-[#007CAB]/10 dark:hover:bg-[#00A3E0]/10 text-[#007CAB] dark:text-[#00A3E0] hover:text-[#2A2C3F] dark:hover:text-[#EEE5E5] transition-colors`}
|
className="cursor-pointer hover:bg-[#007CAB]/10 dark:hover:bg-[#00A3E0]/10 transition-colors rounded-md"
|
||||||
>
|
>
|
||||||
{getNextLanguageName()}
|
<Image
|
||||||
|
src={getNextLanguageFlag().src}
|
||||||
|
alt={getNextLanguageFlag().alt}
|
||||||
|
width={40}
|
||||||
|
height={40}
|
||||||
|
className="rounded-sm"
|
||||||
|
/>
|
||||||
</Button>
|
</Button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,16 +61,23 @@ export default function RuleNav({ sections }: RuleNavProps) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<aside className="hidden lg:block">
|
<aside className="hidden lg:block">
|
||||||
<nav className="sticky top-24 border-l border-[#1F5673] pl-6">
|
<nav className="sticky top-24">
|
||||||
<ul className="flex flex-col gap-2">
|
<ul className="flex flex-col">
|
||||||
{sections.map((section) => (
|
{sections.map((section) => (
|
||||||
<li key={section.id}>
|
<li
|
||||||
|
key={section.id}
|
||||||
|
className={`border-l-2 pl-4 py-1 transition ${
|
||||||
|
activeSection === section.id
|
||||||
|
? "border-[#00A3E0]"
|
||||||
|
: "border-white hover:border-[#00A3E0]"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
<a
|
<a
|
||||||
href={`#${section.id}`}
|
href={`#${section.id}`}
|
||||||
className={`transition ${
|
className={`transition ${
|
||||||
activeSection === section.id
|
activeSection === section.id
|
||||||
? "text-[#EEE5E5] font-bold"
|
? "text-[#00A3E0] font-bold"
|
||||||
: "text-[#00A3E0] hover:text-[#EEE5E5]"
|
: "text-white hover:text-[#00A3E0]"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{section.label}
|
{section.label}
|
||||||
|
|||||||
@@ -25,24 +25,24 @@ function RuleItem({
|
|||||||
}) {
|
}) {
|
||||||
if (typeof rule === "string") {
|
if (typeof rule === "string") {
|
||||||
return (
|
return (
|
||||||
<li className="text-[#EEE5E5]/80 mb-2">
|
<li className="text-white mb-2">
|
||||||
<span className="text-[#00A3E0] mr-2">{index}.</span>
|
<span className="text-white mr-2">{index}.</span>
|
||||||
{rule}
|
{rule}
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li className="text-[#EEE5E5]/80 mb-3">
|
<li className="text-white mb-3">
|
||||||
<span className="text-[#00A3E0] mr-2">{index}.</span>
|
<span className="text-white mr-2">{index}.</span>
|
||||||
{rule.main}
|
{rule.main}
|
||||||
{rule.sub && rule.sub.length > 0 && (
|
{rule.sub && rule.sub.length > 0 && (
|
||||||
<ol className="ml-6 mt-2">
|
<ol className="ml-6 mt-2">
|
||||||
{rule.sub.map((subRule, subIndex) => {
|
{rule.sub.map((subRule, subIndex) => {
|
||||||
if (typeof subRule === "string") {
|
if (typeof subRule === "string") {
|
||||||
return (
|
return (
|
||||||
<li key={subIndex} className="text-[#EEE5E5]/70 mb-1">
|
<li key={subIndex} className="text-white mb-1">
|
||||||
<span className="text-[#00A3E0]/70 mr-2">
|
<span className="text-white mr-2">
|
||||||
{index}.{subIndex + 1}.
|
{index}.{subIndex + 1}.
|
||||||
</span>
|
</span>
|
||||||
{subRule}
|
{subRule}
|
||||||
@@ -50,16 +50,16 @@ function RuleItem({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<li key={subIndex} className="text-[#EEE5E5]/70 mb-2">
|
<li key={subIndex} className="text-white mb-2">
|
||||||
<span className="text-[#00A3E0]/70 mr-2">
|
<span className="text-white mr-2">
|
||||||
{index}.{subIndex + 1}.
|
{index}.{subIndex + 1}.
|
||||||
</span>
|
</span>
|
||||||
{subRule.main}
|
{subRule.main}
|
||||||
{subRule.sub && subRule.sub.length > 0 && (
|
{subRule.sub && subRule.sub.length > 0 && (
|
||||||
<ol className="ml-6 mt-1">
|
<ol className="ml-6 mt-1">
|
||||||
{subRule.sub.map((subSubRule, subSubIndex) => (
|
{subRule.sub.map((subSubRule, subSubIndex) => (
|
||||||
<li key={subSubIndex} className="text-[#EEE5E5]/60 mb-1">
|
<li key={subSubIndex} className="text-white/80 mb-1">
|
||||||
<span className="text-[#00A3E0]/50 mr-2">
|
<span className="text-white/80 mr-2">
|
||||||
{index}.{subIndex + 1}.{subSubIndex + 1}.
|
{index}.{subIndex + 1}.{subSubIndex + 1}.
|
||||||
</span>
|
</span>
|
||||||
{subSubRule}
|
{subSubRule}
|
||||||
@@ -82,7 +82,7 @@ export default function RulesContent({ sections }: RulesContentProps) {
|
|||||||
{sections.map((section, sectionIndex) => (
|
{sections.map((section, sectionIndex) => (
|
||||||
<div key={sectionIndex} className="mb-8">
|
<div key={sectionIndex} className="mb-8">
|
||||||
<h3
|
<h3
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#00A3E0] uppercase mb-4`}
|
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-4`}
|
||||||
>
|
>
|
||||||
{sectionIndex + 1}) {section.title}
|
{sectionIndex + 1}) {section.title}
|
||||||
</h3>
|
</h3>
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ export default function TeaserCarousel() {
|
|||||||
return (
|
return (
|
||||||
<div className="border-b-3 border-[#1F5673]">
|
<div className="border-b-3 border-[#1F5673]">
|
||||||
{/* Slides (fade transition + hero lift effect) */}
|
{/* Slides (fade transition + hero lift effect) */}
|
||||||
<div className="relative h-[729px] overflow-hidden">
|
<div className="relative h-182.25 overflow-hidden">
|
||||||
{slides.map((slide, i) => {
|
{slides.map((slide, i) => {
|
||||||
const title = t(`${slide.key}.title`);
|
const title = t(`${slide.key}.title`);
|
||||||
const description = t(`${slide.key}.description`);
|
const description = t(`${slide.key}.description`);
|
||||||
@@ -117,7 +117,7 @@ export default function TeaserCarousel() {
|
|||||||
|
|
||||||
{/* Overlay */}
|
{/* Overlay */}
|
||||||
<div
|
<div
|
||||||
className={`absolute inset-0 ${slide.fullBrightness ? "" : "bg-gradient-to-r from-[#0E0F19]/90 via-[#0E0F19]/60 to-[#0E0F19]/20"}`}
|
className={`absolute inset-0 ${slide.fullBrightness ? "" : "bg-linear-to-r from-[#0E0F19]/90 via-[#0E0F19]/60 to-[#0E0F19]/20"}`}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Content */}
|
{/* Content */}
|
||||||
@@ -174,7 +174,7 @@ export default function TeaserCarousel() {
|
|||||||
{/* Floating heading (mobile) */}
|
{/* Floating heading (mobile) */}
|
||||||
<div className="absolute top-5 inset-x-0 px-8 z-20 md:hidden pointer-events-none">
|
<div className="absolute top-5 inset-x-0 px-8 z-20 md:hidden pointer-events-none">
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2rem,1.5rem+4.6vw,3rem)] leading-[0.95] tracking-normal uppercase text-[#EEE5E5] whitespace-normal break-words text-left max-w-[12ch]`}
|
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2rem,1.5rem+4.6vw,3rem)] leading-[0.95] tracking-normal uppercase text-[#EEE5E5] whitespace-normal wrap-break-word text-left max-w-[12ch]`}
|
||||||
>
|
>
|
||||||
{highlightLAN(t("heading"))}
|
{highlightLAN(t("heading"))}
|
||||||
</h2>
|
</h2>
|
||||||
@@ -187,7 +187,7 @@ export default function TeaserCarousel() {
|
|||||||
style={{ flexGrow: headingOnRight ? 1 : 0 }}
|
style={{ flexGrow: headingOnRight ? 1 : 0 }}
|
||||||
/>
|
/>
|
||||||
<h2
|
<h2
|
||||||
className={`${vipnagorgialla.className} font-bold italic text-[64px] leading-none tracking-normal uppercase text-[#EEE5E5] whitespace-normal [overflow-wrap:anywhere] text-center shrink`}
|
className={`${vipnagorgialla.className} font-bold italic text-[64px] leading-none tracking-normal uppercase text-[#EEE5E5] whitespace-normal wrap-anywhere text-center shrink`}
|
||||||
>
|
>
|
||||||
{highlightLAN(t("heading"))}
|
{highlightLAN(t("heading"))}
|
||||||
</h2>
|
</h2>
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
"use client"
|
"use client";
|
||||||
|
|
||||||
import * as React from "react"
|
import * as React from "react";
|
||||||
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
||||||
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
|
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
||||||
|
|
||||||
import { cn } from "@/lib/utils"
|
import { cn } from "@/lib/utils";
|
||||||
|
|
||||||
function DropdownMenu({
|
function DropdownMenu({
|
||||||
...props
|
...props
|
||||||
}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {
|
||||||
return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props} />
|
return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuPortal({
|
function DropdownMenuPortal({
|
||||||
@@ -17,7 +17,7 @@ function DropdownMenuPortal({
|
|||||||
}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
|
||||||
return (
|
return (
|
||||||
<DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
|
<DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuTrigger({
|
function DropdownMenuTrigger({
|
||||||
@@ -28,7 +28,7 @@ function DropdownMenuTrigger({
|
|||||||
data-slot="dropdown-menu-trigger"
|
data-slot="dropdown-menu-trigger"
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuContent({
|
function DropdownMenuContent({
|
||||||
@@ -42,13 +42,13 @@ function DropdownMenuContent({
|
|||||||
data-slot="dropdown-menu-content"
|
data-slot="dropdown-menu-content"
|
||||||
sideOffset={sideOffset}
|
sideOffset={sideOffset}
|
||||||
className={cn(
|
className={cn(
|
||||||
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
|
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
</DropdownMenuPrimitive.Portal>
|
</DropdownMenuPrimitive.Portal>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuGroup({
|
function DropdownMenuGroup({
|
||||||
@@ -56,7 +56,7 @@ function DropdownMenuGroup({
|
|||||||
}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
|
||||||
return (
|
return (
|
||||||
<DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
|
<DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuItem({
|
function DropdownMenuItem({
|
||||||
@@ -65,8 +65,8 @@ function DropdownMenuItem({
|
|||||||
variant = "default",
|
variant = "default",
|
||||||
...props
|
...props
|
||||||
}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
||||||
inset?: boolean
|
inset?: boolean;
|
||||||
variant?: "default" | "destructive"
|
variant?: "default" | "destructive";
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<DropdownMenuPrimitive.Item
|
<DropdownMenuPrimitive.Item
|
||||||
@@ -74,12 +74,12 @@ function DropdownMenuItem({
|
|||||||
data-inset={inset}
|
data-inset={inset}
|
||||||
data-variant={variant}
|
data-variant={variant}
|
||||||
className={cn(
|
className={cn(
|
||||||
"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuCheckboxItem({
|
function DropdownMenuCheckboxItem({
|
||||||
@@ -92,8 +92,8 @@ function DropdownMenuCheckboxItem({
|
|||||||
<DropdownMenuPrimitive.CheckboxItem
|
<DropdownMenuPrimitive.CheckboxItem
|
||||||
data-slot="dropdown-menu-checkbox-item"
|
data-slot="dropdown-menu-checkbox-item"
|
||||||
className={cn(
|
className={cn(
|
||||||
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
checked={checked}
|
checked={checked}
|
||||||
{...props}
|
{...props}
|
||||||
@@ -105,7 +105,7 @@ function DropdownMenuCheckboxItem({
|
|||||||
</span>
|
</span>
|
||||||
{children}
|
{children}
|
||||||
</DropdownMenuPrimitive.CheckboxItem>
|
</DropdownMenuPrimitive.CheckboxItem>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuRadioGroup({
|
function DropdownMenuRadioGroup({
|
||||||
@@ -116,7 +116,7 @@ function DropdownMenuRadioGroup({
|
|||||||
data-slot="dropdown-menu-radio-group"
|
data-slot="dropdown-menu-radio-group"
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuRadioItem({
|
function DropdownMenuRadioItem({
|
||||||
@@ -128,8 +128,8 @@ function DropdownMenuRadioItem({
|
|||||||
<DropdownMenuPrimitive.RadioItem
|
<DropdownMenuPrimitive.RadioItem
|
||||||
data-slot="dropdown-menu-radio-item"
|
data-slot="dropdown-menu-radio-item"
|
||||||
className={cn(
|
className={cn(
|
||||||
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
@@ -140,7 +140,7 @@ function DropdownMenuRadioItem({
|
|||||||
</span>
|
</span>
|
||||||
{children}
|
{children}
|
||||||
</DropdownMenuPrimitive.RadioItem>
|
</DropdownMenuPrimitive.RadioItem>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuLabel({
|
function DropdownMenuLabel({
|
||||||
@@ -148,19 +148,19 @@ function DropdownMenuLabel({
|
|||||||
inset,
|
inset,
|
||||||
...props
|
...props
|
||||||
}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
||||||
inset?: boolean
|
inset?: boolean;
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<DropdownMenuPrimitive.Label
|
<DropdownMenuPrimitive.Label
|
||||||
data-slot="dropdown-menu-label"
|
data-slot="dropdown-menu-label"
|
||||||
data-inset={inset}
|
data-inset={inset}
|
||||||
className={cn(
|
className={cn(
|
||||||
"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
|
"px-2 py-1.5 text-sm font-medium data-inset:pl-8",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuSeparator({
|
function DropdownMenuSeparator({
|
||||||
@@ -173,7 +173,7 @@ function DropdownMenuSeparator({
|
|||||||
className={cn("bg-border -mx-1 my-1 h-px", className)}
|
className={cn("bg-border -mx-1 my-1 h-px", className)}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuShortcut({
|
function DropdownMenuShortcut({
|
||||||
@@ -185,17 +185,17 @@ function DropdownMenuShortcut({
|
|||||||
data-slot="dropdown-menu-shortcut"
|
data-slot="dropdown-menu-shortcut"
|
||||||
className={cn(
|
className={cn(
|
||||||
"text-muted-foreground ml-auto text-xs tracking-widest",
|
"text-muted-foreground ml-auto text-xs tracking-widest",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuSub({
|
function DropdownMenuSub({
|
||||||
...props
|
...props
|
||||||
}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
|
||||||
return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />
|
return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuSubTrigger({
|
function DropdownMenuSubTrigger({
|
||||||
@@ -204,22 +204,22 @@ function DropdownMenuSubTrigger({
|
|||||||
children,
|
children,
|
||||||
...props
|
...props
|
||||||
}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
||||||
inset?: boolean
|
inset?: boolean;
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<DropdownMenuPrimitive.SubTrigger
|
<DropdownMenuPrimitive.SubTrigger
|
||||||
data-slot="dropdown-menu-sub-trigger"
|
data-slot="dropdown-menu-sub-trigger"
|
||||||
data-inset={inset}
|
data-inset={inset}
|
||||||
className={cn(
|
className={cn(
|
||||||
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8",
|
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
<ChevronRightIcon className="ml-auto size-4" />
|
<ChevronRightIcon className="ml-auto size-4" />
|
||||||
</DropdownMenuPrimitive.SubTrigger>
|
</DropdownMenuPrimitive.SubTrigger>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenuSubContent({
|
function DropdownMenuSubContent({
|
||||||
@@ -230,12 +230,12 @@ function DropdownMenuSubContent({
|
|||||||
<DropdownMenuPrimitive.SubContent
|
<DropdownMenuPrimitive.SubContent
|
||||||
data-slot="dropdown-menu-sub-content"
|
data-slot="dropdown-menu-sub-content"
|
||||||
className={cn(
|
className={cn(
|
||||||
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
|
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
|
||||||
className
|
className,
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
@@ -254,4 +254,4 @@ export {
|
|||||||
DropdownMenuSub,
|
DropdownMenuSub,
|
||||||
DropdownMenuSubTrigger,
|
DropdownMenuSubTrigger,
|
||||||
DropdownMenuSubContent,
|
DropdownMenuSubContent,
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
"welcome": "Welcome to TipiLAN 2026!",
|
"welcome": "Welcome to TipiLAN 2026!",
|
||||||
"description": "Join us at Estonia's largest student-organized LAN event. Games, competitions and much more await you!",
|
"description": "Join us at Estonia's largest student-organized LAN event. Games, competitions and much more await you!",
|
||||||
"hero": {
|
"hero": {
|
||||||
"date": "11–13 OCTOBER 2026",
|
"date": "11–13 SEPTEMBER 2026",
|
||||||
"location": "TALTECH, EHITAJATE TEE 5",
|
"location": "TALTECH, EHITAJATE TEE 5",
|
||||||
"buyTicket": "BUY TICKETS",
|
"buyTicket": "BUY TICKETS",
|
||||||
"prizePool": "PRIZE POOL",
|
"prizePool": "PRIZE POOL",
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
},
|
},
|
||||||
"reserveSpot": "Reserve your spot today!",
|
"reserveSpot": "Reserve your spot today!",
|
||||||
"poweredBy": "Toetajad",
|
"poweredBy": "Toetajad",
|
||||||
"dateAndLocation": "11th–13th Oct. @ TalTech"
|
"dateAndLocation": "11th–13th Sep. 2026 @ TalTech"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tickets": {
|
"tickets": {
|
||||||
@@ -762,7 +762,9 @@
|
|||||||
"houseRules": "House Rules",
|
"houseRules": "House Rules",
|
||||||
"cs2Rules": "CS2 Rules",
|
"cs2Rules": "CS2 Rules",
|
||||||
"lolRules": "LoL Rules",
|
"lolRules": "LoL Rules",
|
||||||
"miniRules": "Mini-tournament\n Rules"
|
"miniRules": "Mini-tournament\n Rules",
|
||||||
|
"reminder": "Participant Reminder",
|
||||||
|
"code": "Event Code of Conduct"
|
||||||
},
|
},
|
||||||
"admin": {
|
"admin": {
|
||||||
"title": "Admin",
|
"title": "Admin",
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
"welcome": "Tere tulemast TipiLAN 2026 sündmusele!",
|
"welcome": "Tere tulemast TipiLAN 2026 sündmusele!",
|
||||||
"description": "Liitu meiega Eesti suurimal tudengite korraldatud LAN-üritusel. Mängud, võistlused ja palju muud ootavad sind!",
|
"description": "Liitu meiega Eesti suurimal tudengite korraldatud LAN-üritusel. Mängud, võistlused ja palju muud ootavad sind!",
|
||||||
"hero": {
|
"hero": {
|
||||||
"date": "11.–13. OKTOOBER 2026",
|
"date": "11.–13. SEPTEMBER 2026",
|
||||||
"location": "TALTECH, EHITAJATE TEE 5",
|
"location": "TALTECH, EHITAJATE TEE 5",
|
||||||
"buyTicket": "OSTA PILET",
|
"buyTicket": "OSTA PILET",
|
||||||
"prizePool": "AUHINNAFOND",
|
"prizePool": "AUHINNAFOND",
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
},
|
},
|
||||||
"reserveSpot": "Broneeri oma koht juba täna!",
|
"reserveSpot": "Broneeri oma koht juba täna!",
|
||||||
"poweredBy": "Toetajad",
|
"poweredBy": "Toetajad",
|
||||||
"dateAndLocation": "11.–13. okt. TalTechis"
|
"dateAndLocation": "11.–13. sept. 2026 TalTechis"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tickets": {
|
"tickets": {
|
||||||
@@ -763,7 +763,9 @@
|
|||||||
"houseRules": "Kodukord",
|
"houseRules": "Kodukord",
|
||||||
"cs2Rules": "CS2 reeglid",
|
"cs2Rules": "CS2 reeglid",
|
||||||
"lolRules": "LoL reeglid",
|
"lolRules": "LoL reeglid",
|
||||||
"miniRules": "Miniturniiride\n reeglid"
|
"miniRules": "Miniturniiride\n reeglid",
|
||||||
|
"reminder": "Osaleja meelespea",
|
||||||
|
"code": "Ürituse kodukord"
|
||||||
},
|
},
|
||||||
"admin": {
|
"admin": {
|
||||||
"title": "Haldus",
|
"title": "Haldus",
|
||||||
|
|||||||
Reference in New Issue
Block a user