mirror of
https://github.com/Lapikud/tipilan.git
synced 2026-05-08 10:00:46 +00:00
Ticket page
This commit is contained in:
BIN
public/images/landing/league_tournament.jpg
Normal file
BIN
public/images/landing/league_tournament.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 MiB |
BIN
public/images/landing/visitor_tournament.jpg
Normal file
BIN
public/images/landing/visitor_tournament.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 747 KiB |
@@ -1,8 +1,76 @@
|
||||
import { vipnagorgialla } from "@/components/Vipnagorgialla";
|
||||
import Link from "next/link";
|
||||
import SectionDivider from "@/components/SectionDivider";
|
||||
import Image from "next/image";
|
||||
import { getTranslations, setRequestLocale } from "next-intl/server";
|
||||
|
||||
interface TicketCardProps {
|
||||
title: string;
|
||||
subtitle: string;
|
||||
price: string;
|
||||
features: string[];
|
||||
buttonText: string;
|
||||
buttonHref: string;
|
||||
backgroundImage?: string;
|
||||
}
|
||||
|
||||
function TicketCard({
|
||||
title,
|
||||
subtitle,
|
||||
price,
|
||||
features,
|
||||
buttonText,
|
||||
buttonHref,
|
||||
backgroundImage,
|
||||
}: TicketCardProps) {
|
||||
return (
|
||||
<div className="relative bg-[#0E0F19] border-r border-[#1F5673] p-8 flex flex-col min-h-[350px]">
|
||||
{backgroundImage && (
|
||||
<Image
|
||||
src={backgroundImage}
|
||||
alt=""
|
||||
fill
|
||||
className="object-cover object-center opacity-40"
|
||||
/>
|
||||
)}
|
||||
<div className="relative z-10 flex flex-col h-full">
|
||||
<h2
|
||||
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2rem,1.5rem+2vw,3rem)] leading-none text-[#00A3E0] uppercase`}
|
||||
>
|
||||
{title}
|
||||
</h2>
|
||||
<h3
|
||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-[#EEE5E5] uppercase mb-4`}
|
||||
>
|
||||
{subtitle}
|
||||
</h3>
|
||||
<p
|
||||
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2.5rem,2rem+2vw,4rem)] leading-none text-[#00A3E0] mb-4`}
|
||||
>
|
||||
{price}
|
||||
</p>
|
||||
<ul className="flex flex-col gap-1 mb-6 flex-grow">
|
||||
{features.map((feature, index) => (
|
||||
<li
|
||||
key={index}
|
||||
className="flex items-start gap-2 text-[#EEE5E5] text-sm"
|
||||
>
|
||||
<span className="w-1 h-full min-h-[1.25rem] bg-[#00A3E0] flex-shrink-0" />
|
||||
<span>{feature}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
<Link href={buttonHref} target="_blank">
|
||||
<button
|
||||
className={`px-4 py-2 bg-[#007CAB] hover:bg-[#00A3E0] text-[#EEE5E5] ${vipnagorgialla.className} font-bold italic uppercase transition`}
|
||||
>
|
||||
{buttonText}
|
||||
</button>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default async function Tickets({
|
||||
params,
|
||||
}: {
|
||||
@@ -11,108 +79,55 @@ export default async function Tickets({
|
||||
const { locale } = await params;
|
||||
setRequestLocale(locale);
|
||||
const t = await getTranslations({ locale });
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="flex flex-col min-h-[90vh] m-6 mt-16 md:m-16">
|
||||
<h1
|
||||
className={`text-4xl wrap-break-word md:text-5xl lg:text-6xl ${vipnagorgialla.className} font-bold italic text-[#2A2C3F] dark:text-[#EEE5E5] mt-8 md:mt-16 mb-4`}
|
||||
>
|
||||
{t("tickets.title")}
|
||||
</h1>
|
||||
<div className="bg-[#0E0F19]">
|
||||
{/* 2x2 Grid */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 pt-16 md:pt-20">
|
||||
{/* KÜLASTAJA PILET */}
|
||||
<TicketCard
|
||||
title={t("tickets.visitor.name")}
|
||||
subtitle={t("tickets.subtitle")}
|
||||
price={t("tickets.visitor.price")}
|
||||
features={t.raw("tickets.visitor.features")}
|
||||
buttonText={t("tickets.buyButton")}
|
||||
buttonHref="https://fienta.com/et/tipilan"
|
||||
backgroundImage="/images/landing/visitor_tournament.jpg"
|
||||
/>
|
||||
|
||||
<div className="flex justify-center lg:items-center flex-col lg:flex-row gap-8 md:gap-12 flex-grow mb-16 md:mt-8 lg:mt-0">
|
||||
<div className="bg-[#007CAB] -skew-x-2 md:-skew-x-5 text-white italic px-8 md:px-12 py-16 hover:scale-103 transition-all duration-150 w-full md:w-xl lg:w-[400px]">
|
||||
<h2
|
||||
className={`text-6xl ${vipnagorgialla.className} font-bold text-[#EEE5E5] pb-2`}
|
||||
>
|
||||
{t("tickets.visitor.latePrice")}
|
||||
</h2>
|
||||
<h3
|
||||
className={`text-3xl ${vipnagorgialla.className} font-bold text-[#EEE5E5] pb-4`}
|
||||
>
|
||||
{t("tickets.visitor.title")}
|
||||
</h3>
|
||||
<ul className="pl-4 mb-8 list-[square] marker:text-[#1F5673]">
|
||||
{t
|
||||
.raw("tickets.visitor.features")
|
||||
.map((feature: string, index: number) => (
|
||||
<li key={index} className="text-xl">
|
||||
{feature}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
<Link href="https://fienta.com/et/tipilan" target="_blank">
|
||||
<button
|
||||
className={`px-4 py-2 bg-[#1F5673] cursor-pointer ${vipnagorgialla.className} font-bold`}
|
||||
>
|
||||
{t("tickets.buyTicket")}
|
||||
</button>
|
||||
</Link>
|
||||
</div>
|
||||
{/* TOETAJA PILET */}
|
||||
<TicketCard
|
||||
title={t("tickets.supporter.name")}
|
||||
subtitle={t("tickets.subtitle")}
|
||||
price={t("tickets.supporter.price")}
|
||||
features={t.raw("tickets.supporter.features")}
|
||||
buttonText={t("tickets.buyButton")}
|
||||
buttonHref="https://fienta.com/et/tipilan"
|
||||
backgroundImage="/images/landing/explore_teaser.png"
|
||||
/>
|
||||
|
||||
<div className="bg-[#007CAB] -skew-x-2 md:-skew-x-5 text-white italic px-8 md:px-12 py-16 hover:scale-103 transition-all duration-150 w-full md:w-xl lg:w-[400px]">
|
||||
<h2
|
||||
className={`text-6xl ${vipnagorgialla.className} font-bold text-[#EEE5E5] pb-2`}
|
||||
>
|
||||
{t("tickets.computerParticipant.latePrice")}
|
||||
</h2>
|
||||
<h3
|
||||
className={`text-3xl ${vipnagorgialla.className} font-bold text-[#EEE5E5] pb-4`}
|
||||
>
|
||||
{t("tickets.computerParticipant.title")}
|
||||
</h3>
|
||||
<ul className="pl-4 mb-8 list-[square] marker:text-[#1F5673]">
|
||||
{t
|
||||
.raw("tickets.computerParticipant.features")
|
||||
.map((feature: string, index: number) => (
|
||||
<li key={index} className="text-xl">
|
||||
{feature}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
<Link href="https://fienta.com/et/tipilan" target="_blank">
|
||||
<button
|
||||
className={`px-4 py-2 bg-[#1F5673] cursor-pointer ${vipnagorgialla.className} font-bold`}
|
||||
>
|
||||
{t("tickets.buyTicket")}
|
||||
</button>
|
||||
</Link>
|
||||
</div>
|
||||
{/* LOL TURNIIRI PILET */}
|
||||
<TicketCard
|
||||
title={t("tickets.lol.name")}
|
||||
subtitle={t("tickets.subtitle")}
|
||||
price={t("tickets.lol.price")}
|
||||
features={t.raw("tickets.lol.features")}
|
||||
buttonText={t("tickets.buyButton")}
|
||||
buttonHref="https://fienta.com/et/tipilan"
|
||||
backgroundImage="/images/landing/league_tournament.jpg"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
<div className="bg-[#1F5673] -skew-x-2 md:-skew-x-5 text-gray-400 italic px-8 md:px-12 py-16 w-full md:w-xl lg:w-[400px]">
|
||||
<h2
|
||||
className={`text-4xl ${vipnagorgialla.className} font-bold pb-2`}
|
||||
>
|
||||
<s>{t("tickets.competitor.price")}</s>
|
||||
</h2>
|
||||
<h3
|
||||
className={`text-2xl ${vipnagorgialla.className} font-bold pb-4`}
|
||||
>
|
||||
<s>{t("tickets.competitor.title")}</s>
|
||||
</h3>
|
||||
<ul className="pl-4 mb-8 list-[square] marker:text-[#007CAB]">
|
||||
{t
|
||||
.raw("tickets.competitor.features")
|
||||
.map((feature: string, index: number) => (
|
||||
<li key={index} className="text-sm">
|
||||
{feature}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
{/*<Link href="https://fienta.com/et/tipilan" target="_blank">*/}
|
||||
<button
|
||||
className={`px-4 py-2 bg-[#007CAB] text-white ${vipnagorgialla.className} font-bold text-xl uppercase opacity-55`}
|
||||
>
|
||||
{t("tickets.soldOut")}!
|
||||
</button>
|
||||
{/*</Link>*/}
|
||||
</div>
|
||||
</div>
|
||||
{/* CS2 TURNIIRI PILET */}
|
||||
<TicketCard
|
||||
title={t("tickets.cs2.name")}
|
||||
subtitle={t("tickets.subtitle")}
|
||||
price={t("tickets.cs2.price")}
|
||||
features={t.raw("tickets.cs2.features")}
|
||||
buttonText={t("tickets.buyButton")}
|
||||
buttonHref="https://fienta.com/et/tipilan"
|
||||
backgroundImage="/images/landing/compete_teaser.jpg"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<SectionDivider />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ const Footer = () => {
|
||||
const t = useTranslations();
|
||||
|
||||
return (
|
||||
<div className="flex flex-col justify-center sm:justify-between px-6 py-6 md:px-12 md:py-8 gap-4">
|
||||
<div className="flex 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">
|
||||
<h2
|
||||
className={`text-3xl sm:text-4xl ${vipnagorgialla.className} font-bold italic uppercase text-[#2A2C3F] dark:text-[#EEE5E5] mb-4`}
|
||||
|
||||
@@ -82,45 +82,45 @@
|
||||
}
|
||||
},
|
||||
"tickets": {
|
||||
"title": "TICKETS AND REGISTRATION",
|
||||
"buyNow": "Buy now",
|
||||
"soldOut": "Sold out",
|
||||
"available": "Available",
|
||||
"price": "Price",
|
||||
"includes": "Includes",
|
||||
"computerParticipant": {
|
||||
"title": "Computer Participant",
|
||||
"earlyPrice": "8€",
|
||||
"latePrice": "10€",
|
||||
"features": [
|
||||
"Personal desk, power and internet connection",
|
||||
"Access to expo area",
|
||||
"Tournament spectating",
|
||||
"Ability to participate in mini-tournaments"
|
||||
]
|
||||
},
|
||||
"competitor": {
|
||||
"title": "Competitor",
|
||||
"price": "12-15€",
|
||||
"features": [
|
||||
"Ability to participate in the CS2 or LoL tournament",
|
||||
"Personal desk, power and internet connection",
|
||||
"Access to expo area",
|
||||
"Tournament spectating",
|
||||
"Ability to participate in mini-tournaments"
|
||||
]
|
||||
},
|
||||
"title": "TICKETS",
|
||||
"subtitle": "TICKET",
|
||||
"buyButton": "BUY TICKET FROM FIENTA",
|
||||
"visitor": {
|
||||
"title": "Visitor",
|
||||
"earlyPrice": "6€",
|
||||
"latePrice": "8€",
|
||||
"name": "VISITOR",
|
||||
"price": "8€",
|
||||
"features": [
|
||||
"Access to expo area",
|
||||
"Tournament spectating",
|
||||
"Ability to participate in mini-tournaments"
|
||||
"Area access throughout the event",
|
||||
"Ability to enter and leave the event area",
|
||||
"Access to all TipiLAN activities, side events, good vibes and engaging atmosphere."
|
||||
]
|
||||
},
|
||||
"buyTicket": "BUY TICKETS"
|
||||
"supporter": {
|
||||
"name": "SUPPORTER",
|
||||
"price": "25+€",
|
||||
"features": [
|
||||
"TipiLAN t-shirt to thank you for your support",
|
||||
"Opportunity to contribute to TipiLAN's development and future.",
|
||||
"Everything that comes with the visitor ticket"
|
||||
]
|
||||
},
|
||||
"lol": {
|
||||
"name": "LOL TOURNAMENT",
|
||||
"price": "15€",
|
||||
"features": [
|
||||
"Right to participate in LoL tournament",
|
||||
"Personal desk, power and internet connection",
|
||||
"Access to all TipiLAN activities, side events, good vibes and engaging atmosphere."
|
||||
]
|
||||
},
|
||||
"cs2": {
|
||||
"name": "CS2 TOURNAMENT",
|
||||
"price": "20€",
|
||||
"features": [
|
||||
"Right to participate in CS2 tournament",
|
||||
"Personal desk, power and internet connection",
|
||||
"Access to all TipiLAN activities, side events, good vibes and engaging atmosphere."
|
||||
]
|
||||
}
|
||||
},
|
||||
"tournaments": {
|
||||
"title": "Tournaments",
|
||||
|
||||
@@ -82,45 +82,45 @@
|
||||
}
|
||||
},
|
||||
"tickets": {
|
||||
"title": "PILETID JA REGISTREERIMINE",
|
||||
"buyNow": "Osta nüüd",
|
||||
"soldOut": "Välja müüdud",
|
||||
"available": "Saadaval",
|
||||
"price": "Hind",
|
||||
"includes": "Sisaldab",
|
||||
"computerParticipant": {
|
||||
"title": "Arvutiga osaleja",
|
||||
"earlyPrice": "8€",
|
||||
"latePrice": "10€",
|
||||
"features": [
|
||||
"Isiklik laud, voolu- ja internetiühendus",
|
||||
"Ligipääs messialale",
|
||||
"Turniiride pealt vaatamine",
|
||||
"Võimalus osaleda miniturniiridel"
|
||||
]
|
||||
},
|
||||
"competitor": {
|
||||
"title": "Võistleja",
|
||||
"price": "12-15€",
|
||||
"features": [
|
||||
"Võimalus osaleda CS2 või LoL turniiril",
|
||||
"Isiklik laud, voolu- ja internetiühendus",
|
||||
"Ligipääs messialale",
|
||||
"Turniiride pealt vaatamine",
|
||||
"Võimalus osaleda miniturniiridel"
|
||||
]
|
||||
},
|
||||
"title": "PILETID",
|
||||
"subtitle": "PILET",
|
||||
"buyButton": "OSTA PILET FIENTAST",
|
||||
"visitor": {
|
||||
"title": "Külastaja",
|
||||
"earlyPrice": "6€",
|
||||
"latePrice": "8€",
|
||||
"name": "KÜLASTAJA",
|
||||
"price": "8€",
|
||||
"features": [
|
||||
"Ligipääs messialale",
|
||||
"Turniiride pealt vaatamine",
|
||||
"Võimalus osaleda miniturniiridel"
|
||||
"Alade ligipääs kogu ürituse vältel",
|
||||
"Võimalus ürituse alalt sisse ja välja liikuda",
|
||||
"Juurdepääs kogu TipiLAN melule, tegevustele, kõrvalsündmustele, headele vibe'dele ja kaasahaaravale atmosfäärile."
|
||||
]
|
||||
},
|
||||
"buyTicket": "OSTA PILET"
|
||||
"supporter": {
|
||||
"name": "TOETAJA",
|
||||
"price": "25+€",
|
||||
"features": [
|
||||
"TipiLANi t-särk, et tänada sind meie toetamise eest",
|
||||
"Võimalust anda oma panus TipiLANi arengusse ja tulevikku.",
|
||||
"Kõik, mis kaasneb külastaja piletiga"
|
||||
]
|
||||
},
|
||||
"lol": {
|
||||
"name": "LOL TURNIIRI",
|
||||
"price": "15€",
|
||||
"features": [
|
||||
"Õigus osaleda LoL turniiril",
|
||||
"Isiklik laud, voolu- ja internetiühendus",
|
||||
"Juurdepääs kogu TipiLAN melule, tegevustele, kõrvalsündmustele, headele vibe'dele ja kaasahaaravale atmosfäärile."
|
||||
]
|
||||
},
|
||||
"cs2": {
|
||||
"name": "CS2 TURNIIRI",
|
||||
"price": "20€",
|
||||
"features": [
|
||||
"Õigus osaleda CS2 turniiril",
|
||||
"Isiklik laud, voolu- ja internetiühendus",
|
||||
"Juurdepääs kogu TipiLAN melule, tegevustele, kõrvalsündmustele, headele vibe'dele ja kaasahaaravale atmosfäärile."
|
||||
]
|
||||
}
|
||||
},
|
||||
"tournaments": {
|
||||
"title": "Turniirid",
|
||||
|
||||
Reference in New Issue
Block a user