mirror of
https://github.com/Lapikud/tipilan.git
synced 2026-06-23 06:31:30 +00:00
Bunch of minor fixes
This commit is contained in:
@@ -30,7 +30,7 @@ export default async function Page({
|
||||
|
||||
return (
|
||||
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
|
||||
<div className="max-w-480 mx-auto px-6 md:px-12 py-8 md:py-16">
|
||||
<div className="max-w-480 mx-auto px-8 md:px-16 py-10 md:py-20">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
|
||||
{/* Main content */}
|
||||
<div>
|
||||
@@ -41,50 +41,56 @@ export default async function Page({
|
||||
{t("rules.houseRules")}
|
||||
</h1>
|
||||
|
||||
<ReactMarkdown
|
||||
components={
|
||||
{
|
||||
h1: (props) => {
|
||||
const id =
|
||||
sections[headingCount]?.id || `section-${headingCount}`;
|
||||
headingCount++;
|
||||
return (
|
||||
<h1
|
||||
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`}
|
||||
<div className="rules-markdown">
|
||||
<ReactMarkdown
|
||||
components={
|
||||
{
|
||||
h1: (props) => {
|
||||
const id =
|
||||
sections[headingCount]?.id || `section-${headingCount}`;
|
||||
headingCount++;
|
||||
return (
|
||||
<h1
|
||||
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`}
|
||||
>
|
||||
{props.children}
|
||||
</h1>
|
||||
);
|
||||
},
|
||||
h2: (props) => (
|
||||
<h2
|
||||
className={`${vipnagorgialla.className} font-bold italic text-xl text-white uppercase mb-2 mt-6`}
|
||||
>
|
||||
{props.children}
|
||||
</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>
|
||||
</h2>
|
||||
),
|
||||
ol: (props) => (
|
||||
<ol className="text-white mb-4 leading-[19px]">
|
||||
{props.children}
|
||||
</ol>
|
||||
),
|
||||
ul: (props) => (
|
||||
<ul className="list-disc list-inside text-white mb-4 leading-[19px]">
|
||||
{props.children}
|
||||
</ul>
|
||||
),
|
||||
p: (props) => (
|
||||
<p className="text-white mb-4 leading-[19px]">
|
||||
{props.children}
|
||||
</p>
|
||||
),
|
||||
li: (props) => (
|
||||
<li className="text-white mb-2 leading-[19px]">
|
||||
{props.children}
|
||||
</li>
|
||||
),
|
||||
} as Components
|
||||
}
|
||||
>
|
||||
{content}
|
||||
</ReactMarkdown>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Sidebar navigation */}
|
||||
|
||||
@@ -79,7 +79,7 @@ function TicketCard({
|
||||
</ul>
|
||||
<Link href={buttonHref} target="_blank">
|
||||
<button
|
||||
className={`px-4 py-2 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] cursor-pointer ${vipnagorgialla.className} font-bold italic uppercase transition`}
|
||||
className={`px-4 py-2 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] cursor-pointer ${vipnagorgialla.className} font-bold italic leading-none uppercase transition`}
|
||||
>
|
||||
{buttonText}
|
||||
</button>
|
||||
|
||||
@@ -30,7 +30,7 @@ export default async function CS2Tournament({
|
||||
|
||||
return (
|
||||
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
|
||||
<div className="max-w-480 mx-auto px-6 md:px-12 py-8 md:py-16">
|
||||
<div className="max-w-480 mx-auto px-8 md:px-16 py-10 md:py-20">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
|
||||
{/* Main content */}
|
||||
<div>
|
||||
@@ -46,14 +46,14 @@ export default async function CS2Tournament({
|
||||
<Link
|
||||
href="https://fienta.com/et/tipilan"
|
||||
target="_blank"
|
||||
className={`${vipnagorgialla.className} font-bold italic px-4 py-3 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
|
||||
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg px-4 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
|
||||
>
|
||||
{t("cs2page.buyTicket")}
|
||||
</Link>
|
||||
<Link
|
||||
href="https://git.edunaut.ee/slunk/TipiLAN_reeglistik_ruleset/src/branch/main/CS2%20tournament"
|
||||
target="_blank"
|
||||
className={`${vipnagorgialla.className} font-bold italic text-lg uppercase px-4 py-2 border-2 border-[#00A3E0] bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black transition`}
|
||||
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-3 border-4 border-[#00A3E0] bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black transition`}
|
||||
>
|
||||
{t("cs2page.viewGithub")}
|
||||
</Link>
|
||||
@@ -66,7 +66,7 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.intro.title")}
|
||||
</h2>
|
||||
<p className="text-white mb-6">
|
||||
<p className="text-white mb-6 leading-[19px]">
|
||||
{t("cs2page.intro.description")}
|
||||
</p>
|
||||
|
||||
@@ -75,8 +75,8 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.intro.previousWinners")}
|
||||
</h3>
|
||||
<p className="text-white font-bold">2025</p>
|
||||
<ol className="text-white list-decimal list-inside mb-4">
|
||||
<p className="text-white font-bold leading-[19px]">2025</p>
|
||||
<ol className="text-white list-decimal list-inside mb-4 leading-[19px]">
|
||||
<li>RAID (Eesti)</li>
|
||||
<li>hypewrld (Läti)</li>
|
||||
<li>CSDIILIT (Soome/Eesti)</li>
|
||||
@@ -90,7 +90,9 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.info.title")}
|
||||
</h2>
|
||||
<p className="text-white">{t("cs2page.info.description")}</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("cs2page.info.description")}
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* AUHINNAFOND */}
|
||||
@@ -106,7 +108,7 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.prizes.mainTitle")}
|
||||
</h3>
|
||||
<ul className="text-white mb-2">
|
||||
<ul className="text-white mb-2 leading-[19px]">
|
||||
<li>
|
||||
1. koht - 3000€, 600€ inimese kohta, 50% ehk 1/2
|
||||
auhinnafondist.
|
||||
@@ -120,7 +122,7 @@ export default async function CS2Tournament({
|
||||
auhinnafondist.
|
||||
</li>
|
||||
</ul>
|
||||
<p className="text-white/80 text-sm mb-6">
|
||||
<p className="text-white/80 text-sm mb-6 leading-[19px]">
|
||||
{t("cs2page.prizes.mainNote")}
|
||||
</p>
|
||||
|
||||
@@ -129,7 +131,7 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.prizes.secondTitle")}
|
||||
</h3>
|
||||
<ul className="text-white mb-2">
|
||||
<ul className="text-white mb-2 leading-[19px]">
|
||||
<li>
|
||||
1. koht - 500€, 100€ inimese kohta, 66.6...(6)% ehk 2/3
|
||||
auhinnafondist.
|
||||
@@ -139,7 +141,7 @@ export default async function CS2Tournament({
|
||||
auhinnafondist.
|
||||
</li>
|
||||
</ul>
|
||||
<p className="text-white/80 text-sm">
|
||||
<p className="text-white/80 text-sm leading-[19px]">
|
||||
{t("cs2page.prizes.secondNote")}
|
||||
</p>
|
||||
</section>
|
||||
@@ -151,11 +153,15 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.format.title")}
|
||||
</h2>
|
||||
<p className="text-white mb-4">
|
||||
<p className="text-white mb-4 leading-[19px]">
|
||||
{t("cs2page.format.description")}
|
||||
</p>
|
||||
<p className="text-white">{t("cs2page.format.day1")}</p>
|
||||
<p className="text-white">{t("cs2page.format.day23")}</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("cs2page.format.day1")}
|
||||
</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("cs2page.format.day23")}
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* VRS INFO */}
|
||||
@@ -165,8 +171,12 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.vrs.title")}
|
||||
</h2>
|
||||
<p className="text-white mb-4">{t("cs2page.vrs.description1")}</p>
|
||||
<p className="text-white">{t("cs2page.vrs.description2")}</p>
|
||||
<p className="text-white mb-4 leading-[19px]">
|
||||
{t("cs2page.vrs.description1")}
|
||||
</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("cs2page.vrs.description2")}
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* FAQ - commented out until content is ready
|
||||
@@ -194,19 +204,23 @@ export default async function CS2Tournament({
|
||||
>
|
||||
{t("cs2page.rules.title")}
|
||||
</h2>
|
||||
<p className="text-white mb-6">
|
||||
<p className="text-white mb-6 leading-[19px]">
|
||||
{t("cs2page.rules.description")}
|
||||
</p>
|
||||
|
||||
<RulesContent sections={t.raw("cs2page.rules.sections")} />
|
||||
|
||||
<div className="mt-8">
|
||||
<p className="text-white mb-2">{t("cs2page.rules.contact")}</p>
|
||||
<p className="text-white mb-2 leading-[19px]">
|
||||
{t("cs2page.rules.contact")}
|
||||
</p>
|
||||
<p className="text-[#00A3E0] font-bold">
|
||||
{t("cs2page.rules.contactName")}
|
||||
</p>
|
||||
<p className="text-white">{t("cs2page.rules.contactRole")}</p>
|
||||
<p className="text-white">
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("cs2page.rules.contactRole")}
|
||||
</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
Discord:{" "}
|
||||
<a
|
||||
href="https://discord.com/users/292372329747710013"
|
||||
|
||||
@@ -29,7 +29,7 @@ export default async function LoLTournament({
|
||||
|
||||
return (
|
||||
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
|
||||
<div className="max-w-480 mx-auto px-6 md:px-12 py-8 md:py-16">
|
||||
<div className="max-w-480 mx-auto px-8 md:px-16 py-10 md:py-20">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
|
||||
{/* Main content */}
|
||||
<div>
|
||||
@@ -45,7 +45,7 @@ export default async function LoLTournament({
|
||||
<Link
|
||||
href="https://fienta.com/et/tipilan"
|
||||
target="_blank"
|
||||
className={`${vipnagorgialla.className} font-bold italic px-4 py-2 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
|
||||
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg px-4 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] uppercase transition`}
|
||||
>
|
||||
{t("lolpage.buyTicket")}
|
||||
</Link>
|
||||
@@ -58,7 +58,7 @@ export default async function LoLTournament({
|
||||
>
|
||||
{t("lolpage.intro.title")}
|
||||
</h2>
|
||||
<p className="text-white mb-6">
|
||||
<p className="text-white mb-6 leading-[19px]">
|
||||
{t("lolpage.intro.description")}
|
||||
</p>
|
||||
|
||||
@@ -67,8 +67,8 @@ export default async function LoLTournament({
|
||||
>
|
||||
{t("lolpage.intro.previousWinners")}
|
||||
</h3>
|
||||
<p className="text-white font-bold">2025</p>
|
||||
<ol className="text-white list-decimal list-inside mb-4">
|
||||
<p className="text-white font-bold leading-[19px]">2025</p>
|
||||
<ol className="text-white list-decimal list-inside mb-4 leading-[19px]">
|
||||
<li>Ükssilm (Eesti)</li>
|
||||
<li>Eesti Rästikud (Eesti)</li>
|
||||
<li>LOMiks (Läti)</li>
|
||||
@@ -82,7 +82,9 @@ export default async function LoLTournament({
|
||||
>
|
||||
{t("lolpage.info.title")}
|
||||
</h2>
|
||||
<p className="text-white">{t("lolpage.info.description")}</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("lolpage.info.description")}
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* AUHINNAFOND */}
|
||||
@@ -98,12 +100,12 @@ export default async function LoLTournament({
|
||||
>
|
||||
{t("lolpage.prizes.mainTitle")}
|
||||
</h3>
|
||||
<ul className="text-white mb-2">
|
||||
<ul className="text-white mb-2 leading-[19px]">
|
||||
<li>{t("lolpage.prizes.place1")}</li>
|
||||
<li>{t("lolpage.prizes.place2")}</li>
|
||||
<li>{t("lolpage.prizes.place3")}</li>
|
||||
</ul>
|
||||
<p className="text-white/80 text-sm">
|
||||
<p className="text-white/80 text-sm leading-[19px]">
|
||||
{t("lolpage.prizes.note")}
|
||||
</p>
|
||||
</section>
|
||||
@@ -115,11 +117,15 @@ export default async function LoLTournament({
|
||||
>
|
||||
{t("lolpage.format.title")}
|
||||
</h2>
|
||||
<p className="text-white mb-4">
|
||||
<p className="text-white mb-4 leading-[19px]">
|
||||
{t("lolpage.format.description")}
|
||||
</p>
|
||||
<p className="text-white">{t("lolpage.format.day1")}</p>
|
||||
<p className="text-white">{t("lolpage.format.day2")}</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("lolpage.format.day1")}
|
||||
</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("lolpage.format.day2")}
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* FAQ - commented out until content is ready
|
||||
@@ -147,19 +153,23 @@ export default async function LoLTournament({
|
||||
>
|
||||
{t("lolpage.rules.title")}
|
||||
</h2>
|
||||
<p className="text-white mb-6">
|
||||
<p className="text-white mb-6 leading-[19px]">
|
||||
{t("lolpage.rules.description")}
|
||||
</p>
|
||||
|
||||
<RulesContent sections={t.raw("lolpage.rules.sections")} />
|
||||
|
||||
<div className="mt-8">
|
||||
<p className="text-white mb-2">{t("lolpage.rules.contact")}</p>
|
||||
<p className="text-white mb-2 leading-[19px]">
|
||||
{t("lolpage.rules.contact")}
|
||||
</p>
|
||||
<p className="text-[#00A3E0] font-bold">
|
||||
{t("lolpage.rules.contactName")}
|
||||
</p>
|
||||
<p className="text-white">{t("lolpage.rules.contactRole")}</p>
|
||||
<p className="text-white">
|
||||
<p className="text-white leading-[19px]">
|
||||
{t("lolpage.rules.contactRole")}
|
||||
</p>
|
||||
<p className="text-white leading-[19px]">
|
||||
Discord:{" "}
|
||||
<a
|
||||
href="https://discord.com/users/125585160761638912"
|
||||
|
||||
@@ -132,6 +132,35 @@ body {
|
||||
}
|
||||
}
|
||||
|
||||
.rules-markdown ol {
|
||||
counter-reset: list-item;
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.rules-markdown ol > li {
|
||||
counter-increment: list-item;
|
||||
position: relative;
|
||||
padding-left: 2.5rem;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.rules-markdown ol > li::before {
|
||||
content: counters(list-item, ".") ".";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 2rem;
|
||||
text-align: right;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.rules-markdown ol ol {
|
||||
counter-reset: list-item;
|
||||
margin-top: 0.5rem;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
.material-symbols-outlined {
|
||||
font-variation-settings:
|
||||
"FILL" 1,
|
||||
|
||||
@@ -40,8 +40,11 @@ const Header = ({ navItems }: HeaderProps) => {
|
||||
const pathname = usePathname();
|
||||
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
||||
|
||||
// Header navigation should include all options except homepage
|
||||
const mainNavItems = navItems.filter((item) => item.href !== "/");
|
||||
// Header navigation should include all options except homepage and hidden items
|
||||
const hiddenNavHrefs: NavItem["href"][] = ["/messiala", "/ajakava"];
|
||||
const mainNavItems = navItems.filter(
|
||||
(item) => item.href !== "/" && !hiddenNavHrefs.includes(item.href),
|
||||
);
|
||||
const dropdownNavItems = mainNavItems;
|
||||
|
||||
const navIconByHref: Partial<Record<NavItem["href"], string>> = {
|
||||
@@ -86,16 +89,16 @@ const Header = ({ navItems }: HeaderProps) => {
|
||||
<Image
|
||||
src="/tipilan-icon-white.svg"
|
||||
alt="TipiLAN"
|
||||
width={49}
|
||||
width={40}
|
||||
height={40}
|
||||
className="h-10 w-auto"
|
||||
className="h-auto w-10"
|
||||
/>
|
||||
</Link>
|
||||
|
||||
{/* Right side - Navigation + controls */}
|
||||
<div className="flex items-center gap-12">
|
||||
{/* Desktop Navigation */}
|
||||
<nav className="hidden xl:flex items-center gap-12">
|
||||
<nav className="hidden xl:flex items-center gap-8">
|
||||
{mainNavItems.map((item) => {
|
||||
const isActive = pathname === item.href;
|
||||
|
||||
@@ -106,7 +109,7 @@ const Header = ({ navItems }: HeaderProps) => {
|
||||
aria-current={isActive ? "page" : undefined}
|
||||
aria-disabled={isActive ? true : undefined}
|
||||
tabIndex={isActive ? -1 : undefined}
|
||||
className={`${vipnagorgialla.className} group font-bold italic text-lg uppercase px-4 py-1.5 border-2 border-[#00A3E0] transition ${
|
||||
className={`${vipnagorgialla.className} group font-bold italic leading-none text-lg uppercase px-4 py-1.5 border-4 border-[#00A3E0] transition ${
|
||||
isActive
|
||||
? "bg-[#00A3E0] text-black cursor-default pointer-events-none"
|
||||
: "bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black"
|
||||
@@ -155,7 +158,7 @@ const Header = ({ navItems }: HeaderProps) => {
|
||||
>
|
||||
{isActive ? (
|
||||
<span
|
||||
className={`${vipnagorgialla.className} block w-full cursor-default bg-[#00A3E0] px-5 py-2.5 text-xl font-bold italic uppercase text-black ${
|
||||
className={`${vipnagorgialla.className} block w-full cursor-default bg-[#00A3E0] px-5 py-2.5 text-xl font-bold italic leading-none uppercase text-black ${
|
||||
hasBottomBorder ? "border-b-3 border-[#1F5673]" : ""
|
||||
}`}
|
||||
>
|
||||
@@ -181,7 +184,7 @@ const Header = ({ navItems }: HeaderProps) => {
|
||||
) : (
|
||||
<Link
|
||||
href={item.href}
|
||||
className={`${vipnagorgialla.className} group block w-full bg-[#0E0F19] px-5 py-2.5 text-xl font-bold italic uppercase text-[#EEE5E5] transition hover:bg-[#00A3E0] hover:text-black ${
|
||||
className={`${vipnagorgialla.className} group block w-full bg-[#0E0F19] px-5 py-2.5 text-xl font-bold italic leading-none uppercase text-[#EEE5E5] transition hover:bg-[#00A3E0] hover:text-black ${
|
||||
hasBottomBorder ? "border-b-3 border-[#1F5673]" : ""
|
||||
}`}
|
||||
>
|
||||
|
||||
@@ -35,7 +35,7 @@ export default function HeroSection() {
|
||||
</div>
|
||||
<Link
|
||||
href="/piletid"
|
||||
className={`self-center md:self-start px-6 py-3 bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] ${vipnagorgialla.className} font-bold italic text-[clamp(1rem,0.8rem+0.8vw,1.5rem)] uppercase transition`}
|
||||
className={`self-center md:self-start px-6 py-3 border-4 border-transparent bg-[#00A3E0] hover:bg-[#E5E5EE] text-[#0A121F] ${vipnagorgialla.className} font-bold italic leading-none text-[clamp(1rem,0.8rem+0.8vw,1.5rem)] uppercase transition`}
|
||||
>
|
||||
{t("hero.buyTicket")}
|
||||
</Link>
|
||||
|
||||
@@ -25,7 +25,7 @@ function RuleItem({
|
||||
}) {
|
||||
if (typeof rule === "string") {
|
||||
return (
|
||||
<li className="text-white mb-2">
|
||||
<li className="text-white mb-2 leading-[19px]">
|
||||
<span className="text-white mr-2">{index}.</span>
|
||||
{rule}
|
||||
</li>
|
||||
@@ -33,7 +33,7 @@ function RuleItem({
|
||||
}
|
||||
|
||||
return (
|
||||
<li className="text-white mb-3">
|
||||
<li className="text-white mb-3 leading-[19px]">
|
||||
<span className="text-white mr-2">{index}.</span>
|
||||
{rule.main}
|
||||
{rule.sub && rule.sub.length > 0 && (
|
||||
@@ -41,7 +41,7 @@ function RuleItem({
|
||||
{rule.sub.map((subRule, subIndex) => {
|
||||
if (typeof subRule === "string") {
|
||||
return (
|
||||
<li key={subIndex} className="text-white mb-1">
|
||||
<li key={subIndex} className="text-white mb-1 leading-[19px]">
|
||||
<span className="text-white mr-2">
|
||||
{index}.{subIndex + 1}.
|
||||
</span>
|
||||
@@ -50,7 +50,7 @@ function RuleItem({
|
||||
);
|
||||
}
|
||||
return (
|
||||
<li key={subIndex} className="text-white mb-2">
|
||||
<li key={subIndex} className="text-white mb-2 leading-[19px]">
|
||||
<span className="text-white mr-2">
|
||||
{index}.{subIndex + 1}.
|
||||
</span>
|
||||
@@ -58,7 +58,10 @@ function RuleItem({
|
||||
{subRule.sub && subRule.sub.length > 0 && (
|
||||
<ol className="ml-6 mt-1">
|
||||
{subRule.sub.map((subSubRule, subSubIndex) => (
|
||||
<li key={subSubIndex} className="text-white/80 mb-1">
|
||||
<li
|
||||
key={subSubIndex}
|
||||
className="text-white/80 mb-1 leading-[19px]"
|
||||
>
|
||||
<span className="text-white/80 mr-2">
|
||||
{index}.{subIndex + 1}.{subSubIndex + 1}.
|
||||
</span>
|
||||
|
||||
@@ -94,7 +94,7 @@ export default function TeaserCarousel() {
|
||||
return (
|
||||
<div className="border-b-3 border-[#1F5673]">
|
||||
{/* Slides (fade transition + hero lift effect) */}
|
||||
<div className="relative h-135 sm:h-140 md:h-160 lg:h-175 xl:h-155 2xl:h-165 overflow-hidden">
|
||||
<div className="relative h-135 sm:h-140 md:h-160 lg:h-[720px] xl:h-[780px] 2xl:h-[820px] overflow-hidden">
|
||||
{slides.map((slide, i) => {
|
||||
const title = t(`${slide.key}.title`);
|
||||
const description = t(`${slide.key}.description`);
|
||||
@@ -172,7 +172,7 @@ export default function TeaserCarousel() {
|
||||
})}
|
||||
|
||||
{/* Floating heading (mobile) */}
|
||||
<div className="absolute top-5 inset-x-0 px-8 z-20 md:hidden pointer-events-none">
|
||||
<div className="absolute top-8 inset-x-0 px-8 z-20 md:hidden pointer-events-none">
|
||||
<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 wrap-break-word text-left max-w-[12ch]`}
|
||||
>
|
||||
@@ -181,7 +181,7 @@ export default function TeaserCarousel() {
|
||||
</div>
|
||||
|
||||
{/* Floating heading (desktop/tablet) */}
|
||||
<div className="absolute top-8 inset-x-0 px-4 sm:px-6 md:px-12 z-20 hidden md:flex pointer-events-none">
|
||||
<div className="absolute top-12 inset-x-0 px-4 sm:px-6 md:px-12 z-20 hidden md:flex pointer-events-none">
|
||||
<div
|
||||
className="transition-[flex-grow] duration-700 ease-out"
|
||||
style={{ flexGrow: headingOnRight ? 1 : 0 }}
|
||||
|
||||
@@ -12,18 +12,18 @@ Event participation house rules apply to everyone, both visitors and competitors
|
||||
|
||||
1. Participants are obligated to behave politely and with dignity and respect other event participants.
|
||||
2. TipiLAN does not tolerate:
|
||||
2.1. Hate speech based on national, racial, gender, sexual or religious affiliation, disabilities, appearance or age; harassment, threatening, offensive or aggressive behavior, incitement or support thereof
|
||||
2.2. This applies both on the event premises (IRL) and in online environments related to the event.
|
||||
1. Hate speech based on national, racial, gender, sexual or religious affiliation, disabilities, appearance or age; harassment, threatening, offensive or aggressive behavior, incitement or support thereof
|
||||
2. This applies both on the event premises (IRL) and in online environments related to the event.
|
||||
3. Participants are obligated to treat the event building, inventory and furnishings with care. It is forbidden to break, stain or move items that do not belong to the participant.
|
||||
3.1. If a participant has organizer-provided accommodation, then in the accommodation area the participant is obligated to be quiet and allow companions to rest.
|
||||
3.2. Persons who are not provided accommodation there may not be invited to the accommodation area.
|
||||
1. If a participant has organizer-provided accommodation, then in the accommodation area the participant is obligated to be quiet and allow companions to rest.
|
||||
2. Persons who are not provided accommodation there may not be invited to the accommodation area.
|
||||
4. TipiLAN is not responsible for participants' personal property.
|
||||
4.1. The organizer-provided accommodation area is lockable and unauthorized persons are not allowed there, but regardless of this, it is worth keeping an eye on your valuables.
|
||||
4.2. If there is suspicion that theft has occurred, this must be immediately reported to the organizer.
|
||||
4.3. When finding lost items, please give them to the organizer or take them to *lost & found* (Merchandise table).
|
||||
1. The organizer-provided accommodation area is lockable and unauthorized persons are not allowed there, but regardless of this, it is worth keeping an eye on your valuables.
|
||||
2. If there is suspicion that theft has occurred, this must be immediately reported to the organizer.
|
||||
3. When finding lost items, please give them to the organizer or take them to *lost & found* (Merchandise table).
|
||||
5. Smoking and using vapes is prohibited on the event premises. There are designated smoking areas outside for this purpose.
|
||||
6. Illegal substances or drugs, sharp objects, firearms, explosives or incendiary materials and other items that may harm participants or others may not be brought to the event.
|
||||
7. Underage participants are prohibited from consuming alcohol or using nicotine-containing products.
|
||||
7.1. When purchasing alcohol from the bar, participants are obligated to show identification upon request by bar staff.
|
||||
1. When purchasing alcohol from the bar, participants are obligated to show identification upon request by bar staff.
|
||||
8. Participants are obligated to behave responsibly regarding alcohol.
|
||||
9. Any form of gambling for money or other benefits is prohibited.
|
||||
@@ -10,21 +10,21 @@
|
||||
|
||||
# Ürituse kodukord
|
||||
|
||||
1. Osaleja kohustub käituma viisakalt ning väärikalt ja austama teisi üritusel osalejaid.
|
||||
2. TipiLAN ei tolereeri:
|
||||
2.1. Vihakõnet rahvusliku, rassilise, soolise, seksuaalse või religioosse kuuluvuse, puude, välimuse või vanuse kohta; ahistamist, ähvardavat, solvavat või agressiivset käitumist, sellele õhutamist või selle pooldamist
|
||||
2.2. See kehtib nii ürituse alal (IRL) kui ka üritusega seotud online-keskkondades.
|
||||
3. Osaleja kohustub käituma ürituse hoone, inventari ja sisustuse suhtes heaperemehelikult. Keelatud on lõhkuda, määrida või viia mujale esemeid, mis ei kuulu osalejale.
|
||||
3.1. Kui osalejal on ette nähtud korraldajapoolne majutus, siis majutusalal on osalejal kohustus olla vaikselt ning lubada kaaslastel puhata.
|
||||
3.2. Majutusalale ei või kaasa kutsuda isikuid, kellel ei ole seal majutust ette nähtud.
|
||||
4. TipiLAN ei vastuta osaleja isikliku vara eest.
|
||||
4.1. Korraldajapoolne majutusala on lukustatav ning kõrvalisi isikuid sinna ei lubata, kuid sellest sõltumata tasub oma väärisesemetel silma peal hoida.
|
||||
4.2. Kui on tekkinud kahtlus, et on toimunud vargus, tuleb sellest koheselt teavitada korraldajat.
|
||||
4.3. Kaotatud asjade leidmisel palume anda need korraldajale või viia need *lost & found’i* (Merchilauda).
|
||||
1. Osaleja kohustub käituma viisakalt ning väärikalt ja austama teisi üritusel osalejaid.
|
||||
2. TipiLAN ei tolereeri:
|
||||
1. Vihakõnet rahvusliku, rassilise, soolise, seksuaalse või religioosse kuuluvuse, puude, välimuse või vanuse kohta; ahistamist, ähvardavat, solvavat või agressiivset käitumist, sellele õhutamist või selle pooldamist
|
||||
2. See kehtib nii ürituse alal (IRL) kui ka üritusega seotud online-keskkondades.
|
||||
3. Osaleja kohustub käituma ürituse hoone, inventari ja sisustuse suhtes heaperemehelikult. Keelatud on lõhkuda, määrida või viia mujale esemeid, mis ei kuulu osalejale.
|
||||
1. Kui osalejal on ette nähtud korraldajapoolne majutus, siis majutusalal on osalejal kohustus olla vaikselt ning lubada kaaslastel puhata.
|
||||
2. Majutusalale ei või kaasa kutsuda isikuid, kellel ei ole seal majutust ette nähtud.
|
||||
4. TipiLAN ei vastuta osaleja isikliku vara eest.
|
||||
1. Korraldajapoolne majutusala on lukustatav ning kõrvalisi isikuid sinna ei lubata, kuid sellest sõltumata tasub oma väärisesemetel silma peal hoida.
|
||||
2. Kui on tekkinud kahtlus, et on toimunud vargus, tuleb sellest koheselt teavitada korraldajat.
|
||||
3. Kaotatud asjade leidmisel palume anda need korraldajale või viia need *lost & found’i* (Merchilauda).
|
||||
5. Ürituse alal on keelatud suitsetada ning kasutada vape’i. Selleks on õues ette nähtud suitsetamise kohad.
|
||||
6. Üritusele ei tohi kaasa võtta illegaalseid aineid või ravimeid, terariistu, tulirelvi, lõhke- või süüteained ning muid esemeid, mis võivad osalejatele või teistele viga teha.
|
||||
7. Alaealisel osalejal on keelatud tarbida alkoholi või kasutada nikotiini sisaldavaid tooteid.
|
||||
7.1. Olles baarist alkoholi ostmas, on osalejal baaritöötaja nõudmisel kohustus näidata isikuttõendavat dokumenti.
|
||||
7. Alaealisel osalejal on keelatud tarbida alkoholi või kasutada nikotiini sisaldavaid tooteid.
|
||||
1. Olles baarist alkoholi ostmas, on osalejal baaritöötaja nõudmisel kohustus näidata isikuttõendavat dokumenti.
|
||||
8. Osaleja kohustub käituma alkoholi suhtes vastutustundlikult.
|
||||
9. Keelatud on igasugune hasartmäng nii raha kui muude hüvede peale.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user