mirror of
https://github.com/Lapikud/tipilan.git
synced 2026-03-23 13:24:21 +00:00
@@ -7,6 +7,7 @@ import { useEffect, useRef, useState, useMemo } from "react";
|
||||
import { EyeClosed, Eye } from "lucide-react";
|
||||
import SectionDivider from "@/components/SectionDivider";
|
||||
import { useTranslations } from "next-intl";
|
||||
import gamedevData from "@/data/gamedev.json";
|
||||
|
||||
// Define interface for the ref with toggle function
|
||||
interface MountRefCurrent extends HTMLDivElement {
|
||||
@@ -968,6 +969,212 @@ export default function Expo() {
|
||||
</div>
|
||||
|
||||
<SectionDivider />
|
||||
|
||||
{/* MINITURNIIRID Section */}
|
||||
<div className="flex flex-col lg:flex-row items-center gap-8 m-6 md:m-16 mb-16">
|
||||
<div className="flex-1">
|
||||
<h2
|
||||
className={`text-4xl md:text-5xl lg:text-6xl ${vipnagorgialla.className} font-bold italic text-[#2A2C3F] dark:text-[#EEE5E5] mb-6 uppercase`}
|
||||
>
|
||||
MINITURNIIRID
|
||||
</h2>
|
||||
<p className="text-[#2A2C3F] dark:text-[#EEE5E5] text-lg mb-4">
|
||||
TipiLANil toimub mitmeid erinevaid lõbusaid ja võistlushimu tekitavaid miniturniire. Osaleda saavad ka niisama külastajad! Auhinnafond on kõigi turniiride peale 1250€.
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex-shrink-0 relative overflow-hidden">
|
||||
<img
|
||||
src="/images/minitournament_logo.png"
|
||||
alt="Miniturniirid logo"
|
||||
style={{
|
||||
width: '649.7214965820312px',
|
||||
height: '400.99997840027544px',
|
||||
transform: 'rotate(0deg)',
|
||||
opacity: 1,
|
||||
position: 'relative'
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<SectionDivider />
|
||||
|
||||
{/* PUHKA JA MÄNGI Section */}
|
||||
<div className="flex flex-col m-6 md:m-16 mb-16">
|
||||
<h2
|
||||
className={`text-4xl md:text-5xl lg:text-6xl ${vipnagorgialla.className} font-bold italic text-[#2A2C3F] dark:text-[#EEE5E5] mb-8 uppercase`}
|
||||
>
|
||||
PUHKA JA MÄNGI
|
||||
</h2>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||
{/* Card 1 - Chill-ala */}
|
||||
<div className="flex flex-col">
|
||||
<div className="bg-[#1a1a2e] rounded-lg overflow-hidden mb-4">
|
||||
<div className="relative h-48">
|
||||
<img
|
||||
src="/images/EXPO/chill_ala.jpg"
|
||||
alt="Chill-ala"
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<h3
|
||||
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
||||
style={{
|
||||
fontFamily: 'Work Sans',
|
||||
fontWeight: 700,
|
||||
fontSize: '36px',
|
||||
lineHeight: '100%',
|
||||
letterSpacing: '-3%',
|
||||
verticalAlign: 'middle'
|
||||
}}
|
||||
>
|
||||
Chill-ala koos turniiride otseülekandega
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
{/* Card 2 - Mänguklubi */}
|
||||
<div className="flex flex-col">
|
||||
<div className="bg-[#1a1a2e] rounded-lg overflow-hidden mb-4">
|
||||
<div className="relative h-48">
|
||||
<img
|
||||
src="/images/EXPO/mklubi.jpg"
|
||||
alt="Mänguklubi"
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<h3
|
||||
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
||||
style={{
|
||||
fontFamily: 'Work Sans',
|
||||
fontWeight: 700,
|
||||
fontSize: '36px',
|
||||
lineHeight: '100%',
|
||||
letterSpacing: '-3%',
|
||||
verticalAlign: 'middle'
|
||||
}}
|
||||
>
|
||||
Mänguklubi lauamängud ja konsoolid
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
{/* Card 3 - Baariala */}
|
||||
<div className="flex flex-col">
|
||||
<div className="bg-[#1a1a2e] rounded-lg overflow-hidden mb-4">
|
||||
<div className="relative h-48">
|
||||
<img
|
||||
src="/images/EXPO/baar.jpg"
|
||||
alt="Baariala"
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<h3
|
||||
className="text-[#2A2C3F] dark:text-[#EEE5E5]"
|
||||
style={{
|
||||
fontFamily: 'Work Sans',
|
||||
fontWeight: 700,
|
||||
fontSize: '36px',
|
||||
lineHeight: '100%',
|
||||
letterSpacing: '-3%',
|
||||
verticalAlign: 'middle'
|
||||
}}
|
||||
>
|
||||
Baariala jookide ja snäkkidega
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<SectionDivider />
|
||||
|
||||
{/* EESTI MÄNGUARENDAJAD Section */}
|
||||
<div className="flex flex-col m-6 md:m-16 mb-16">
|
||||
<h2
|
||||
className={`text-4xl md:text-5xl lg:text-6xl ${vipnagorgialla.className} font-bold italic text-[#2A2C3F] dark:text-[#EEE5E5] mb-8 uppercase`}
|
||||
>
|
||||
Eesti mänguarendajad
|
||||
</h2>
|
||||
|
||||
<div className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-6">
|
||||
{gamedevData.games.map((game) => (
|
||||
<div key={game.id} className="flex flex-col">
|
||||
<div className="bg-[#1a1a2e] rounded-lg overflow-hidden aspect-square mb-2">
|
||||
<img
|
||||
src={game.logo}
|
||||
alt={game.name}
|
||||
className="w-full h-full object-contain p-4"
|
||||
/>
|
||||
</div>
|
||||
<h3 className="text-[#2A2C3F] dark:text-[#EEE5E5] text-center font-semibold mb-1">
|
||||
{game.name}
|
||||
</h3>
|
||||
<p className="text-[#666] dark:text-[#AAA] text-center text-sm">
|
||||
{game.developer}
|
||||
</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<SectionDivider />
|
||||
|
||||
{/* ÜLIKOOLID Section */}
|
||||
<div className="flex flex-col m-6 md:m-16 mb-16">
|
||||
<h2
|
||||
className={`text-4xl md:text-5xl lg:text-6xl ${vipnagorgialla.className} font-bold italic text-[#2A2C3F] dark:text-[#EEE5E5] mb-8 uppercase`}
|
||||
>
|
||||
Ülikoolid
|
||||
</h2>
|
||||
|
||||
{/* First 12 games in 3x4 grid */}
|
||||
<div className="grid grid-cols-3 md:grid-cols-4 gap-6 mb-6">
|
||||
{gamedevData.universities?.slice(0, 12).map((university) => (
|
||||
<div key={university.id} className="flex flex-col">
|
||||
<div className="bg-[#1a1a2e] rounded-lg overflow-hidden aspect-square mb-2">
|
||||
<img
|
||||
src={university.logo}
|
||||
alt={university.name}
|
||||
className="w-full h-full object-contain p-4"
|
||||
/>
|
||||
</div>
|
||||
<h3 className="text-[#2A2C3F] dark:text-[#EEE5E5] text-center font-semibold mb-1">
|
||||
{university.name}
|
||||
</h3>
|
||||
<p className="text-[#666] dark:text-[#AAA] text-center text-sm">
|
||||
{university.university}
|
||||
</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* Remaining games in new grid */}
|
||||
{gamedevData.universities && gamedevData.universities.length > 12 && (
|
||||
<div className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-6">
|
||||
{gamedevData.universities.slice(12).map((university) => (
|
||||
<div key={university.id} className="flex flex-col">
|
||||
<div className="bg-[#1a1a2e] rounded-lg overflow-hidden aspect-square mb-2">
|
||||
<img
|
||||
src={university.logo}
|
||||
alt={university.name}
|
||||
className="w-full h-full object-contain p-4"
|
||||
/>
|
||||
</div>
|
||||
<h3 className="text-[#2A2C3F] dark:text-[#EEE5E5] text-center font-semibold mb-1">
|
||||
{university.name}
|
||||
</h3>
|
||||
<p className="text-[#666] dark:text-[#AAA] text-center text-sm">
|
||||
{university.university}
|
||||
</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<SectionDivider />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
231
src/data/gamedev.json
Normal file
231
src/data/gamedev.json
Normal file
@@ -0,0 +1,231 @@
|
||||
{
|
||||
"games": [
|
||||
{
|
||||
"id": "broken-alliance",
|
||||
"name": "Broken Alliance",
|
||||
"logo": "/images/EXPO/GameDev logos/broken_alliance.png",
|
||||
"developer": "Placeholder Gameworks",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "buckshot-tournament",
|
||||
"name": "Buckshot Tournament",
|
||||
"logo": "/images/miniturniirid/buckshot_tournament.png",
|
||||
"developer": "Mike Klubnika",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "eleball",
|
||||
"name": "Eleball",
|
||||
"logo": "/images/EXPO/GameDev logos/Eleball.png",
|
||||
"developer": "Pulsar Twin",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "craftcraft-simulator",
|
||||
"name": "CraftCraft Simulator",
|
||||
"logo": "/images/EXPO/GameDev logos/craftcat_sim.png",
|
||||
"developer": "Placeholder Gameworks",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "cyber-dog-rescue",
|
||||
"name": "Cyber Dog Rescue",
|
||||
"logo": "/images/EXPO/GameDev logos/Cyber_Doc_Rogue.png",
|
||||
"developer": "HRA Interactive",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "death-and-taxes",
|
||||
"name": "Death and Taxes",
|
||||
"logo": "/images/EXPO/GameDev logos/death_and_taxes.png",
|
||||
"developer": "Placeholder Gameworks",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "deep-pixel-melancholy",
|
||||
"name": "Deep Pixel Melancholy",
|
||||
"logo": "/images/EXPO/GameDev logos/deep_pixel_melancholy.svg",
|
||||
"developer": "ok/no",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "delusional",
|
||||
"name": "Delusional",
|
||||
"logo": "/images/EXPO/GameDev logos/DELUSIONAL_logo.svg",
|
||||
"developer": "AUTOPLAY",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "hardwired",
|
||||
"name": "Hardwired",
|
||||
"logo": "/images/EXPO/GameDev logos/Hardwired.png",
|
||||
"developer": "Lostbyte",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "hexwave",
|
||||
"name": "HexWave",
|
||||
"logo": "/images/EXPO/GameDev logos/Hexwave.png",
|
||||
"developer": "HardBoyled Games",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "immortal",
|
||||
"name": "IMMORTAL: And the death that follows",
|
||||
"logo": "/images/EXPO/GameDev logos/Immortal.png",
|
||||
"developer": "Mishura Games",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "kalawindow",
|
||||
"name": "Kalawindow",
|
||||
"logo": "/images/EXPO/GameDev logos/Kalawindow.png",
|
||||
"developer": "Lost Empire Entertainment",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "kortel-1996",
|
||||
"name": "Kortel 1996",
|
||||
"logo": "/images/EXPO/GameDev logos/Korter1996.png",
|
||||
"developer": "Mari-Anna Lepasson",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "midnight-souveneirs",
|
||||
"name": "Midnight Souveneirs",
|
||||
"logo": "/images/EXPO/GameDev logos/Midnight_Souveneirs.png",
|
||||
"developer": "Path of Pixels",
|
||||
"description": ""
|
||||
},
|
||||
|
||||
{
|
||||
"id": "planet-hoarders",
|
||||
"name": "Planet Hoarders",
|
||||
"logo": "/images/EXPO/GameDev logos/Planet_hoarders.png",
|
||||
"developer": "Imago Games",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "realm-hearts",
|
||||
"name": "Realm Hearts",
|
||||
"logo": "/images/EXPO/GameDev logos/realm_hearts.png",
|
||||
"developer": "Dreamaster",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "season-of-solitude",
|
||||
"name": "Season of Solitude",
|
||||
"logo": "/images/EXPO/GameDev logos/Seasons_of_Solitude.png",
|
||||
"developer": "Ninjarithm Studio",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "war-thorn",
|
||||
"name": "War-thorn",
|
||||
"logo": "/images/EXPO/GameDev logos/War_torn.png",
|
||||
"developer": "KingOfTheEnd, ForgottenCup",
|
||||
"description": ""
|
||||
}
|
||||
],
|
||||
"universities": [
|
||||
{
|
||||
"id": "deltavr",
|
||||
"name": "DeltaVR",
|
||||
"logo": "/images/EXPO/ylikoolid/deltavr.png",
|
||||
"university": "Tartu Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "tiksu-toksu",
|
||||
"name": "Tiksu-Toksu",
|
||||
"logo": "/images/EXPO/ylikoolid/tiksu-toksu.jpg",
|
||||
"university": "Tartu Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "psyrreal",
|
||||
"name": "Psyrreal",
|
||||
"logo": "/images/EXPO/ylikoolid/psyrreal.png",
|
||||
"university": "Tartu Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "blastronaut",
|
||||
"name": "Blastronaut",
|
||||
"logo": "/images/EXPO/ylikoolid/blastronaut.png",
|
||||
"university": "Tartu Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "oh-crap",
|
||||
"name": "Oh Crap!",
|
||||
"logo": "/images/EXPO/ylikoolid/oh_crap.png",
|
||||
"university": "Tallinna Tehnikaülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "dwarf-escape",
|
||||
"name": "Dwarf Escape",
|
||||
"logo": "/images/EXPO/ylikoolid/dwarf_escape.png",
|
||||
"university": "Tallinna Tehnikaülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "void-of-hermes",
|
||||
"name": "Void of Hermes",
|
||||
"logo": "/images/EXPO/ylikoolid/void_of_hermes.png",
|
||||
"university": "Tallinna Tehnikaülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "nullis",
|
||||
"name": "Nullis",
|
||||
"logo": "/images/EXPO/GameDev logos/Nullis.png",
|
||||
"university": "Tallinna Tehnikaülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "packet-tracers",
|
||||
"name": "Packet Tracers",
|
||||
"logo": "/images/EXPO/ylikoolid/packet_tracers.png",
|
||||
"university": "Tallinna Tehnikaülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "a-bottles-journey",
|
||||
"name": "A Bottle's Journey",
|
||||
"logo": "/images/EXPO/ylikoolid/a_bottles_journey.png",
|
||||
"university": "Tallinna Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "wildings",
|
||||
"name": "Wildings",
|
||||
"logo": "/images/EXPO/ylikoolid/wildings.png",
|
||||
"university": "Tallinna Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "the-return",
|
||||
"name": "The Return",
|
||||
"logo": "/images/EXPO/ylikoolid/the_return.png",
|
||||
"university": "Tallinna Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "magic-mineral",
|
||||
"name": "Magic Mineral",
|
||||
"logo": "/images/EXPO/ylikoolid/magic_mineral.png",
|
||||
"university": "Tallinna Ülikool",
|
||||
"description": ""
|
||||
},
|
||||
{
|
||||
"id": "type-n-magic",
|
||||
"name": "Type 'n Magic",
|
||||
"logo": "/images/EXPO/ylikoolid/type_n_magic.png",
|
||||
"university": "Tallinna Ülikool",
|
||||
"description": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user