diff --git a/public/sponsors/Still_Frame_logo_2020_Gold_2.png b/public/sponsors/Still_Frame_logo_2020_Gold_2.png new file mode 100644 index 0000000..b0876b4 Binary files /dev/null and b/public/sponsors/Still_Frame_logo_2020_Gold_2.png differ diff --git a/public/sponsors/academic-hostel.png b/public/sponsors/academic-hostel.png new file mode 100644 index 0000000..aec095d Binary files /dev/null and b/public/sponsors/academic-hostel.png differ diff --git a/public/sponsors/lvlup_logo_export.svg b/public/sponsors/lvlup_logo_export.svg index 0afd727..cec23fd 100644 --- a/public/sponsors/lvlup_logo_export.svg +++ b/public/sponsors/lvlup_logo_export.svg @@ -1,114 +1,24 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/sponsors/poke-bowl.png b/public/sponsors/poke-bowl.png new file mode 100644 index 0000000..b479c7d Binary files /dev/null and b/public/sponsors/poke-bowl.png differ diff --git a/public/sponsors/redbull-wordmark.png b/public/sponsors/redbull-wordmark.png new file mode 100644 index 0000000..7fab1d4 Binary files /dev/null and b/public/sponsors/redbull-wordmark.png differ diff --git a/public/sponsors/redbull.png b/public/sponsors/redbull.png deleted file mode 100644 index 2c7daeb..0000000 Binary files a/public/sponsors/redbull.png and /dev/null differ diff --git a/public/sponsors/retro-burger.png b/public/sponsors/retro-burger.png new file mode 100644 index 0000000..d36ad6f Binary files /dev/null and b/public/sponsors/retro-burger.png differ diff --git a/src/components/Sponsors.tsx b/src/components/Sponsors.tsx index c4537c6..511144a 100644 --- a/src/components/Sponsors.tsx +++ b/src/components/Sponsors.tsx @@ -4,6 +4,7 @@ import { vipnagorgialla } from "@/components/Vipnagorgialla"; import { useTranslations } from "next-intl"; import Image from "next/image"; import NextLink from "next/link"; +import { useEffect, useRef, useState } from "react"; interface Sponsor { href: string; @@ -14,7 +15,7 @@ interface Sponsor { className?: string; } -const sponsors: Sponsor[] = [ +const highlightedSponsors: Sponsor[] = [ { href: "https://taltech.ee", src: "/sponsors/taltech-color.png", @@ -24,39 +25,17 @@ const sponsors: Sponsor[] = [ }, { href: "https://www.redbull.com/ee-et/", - src: "/sponsors/redbull.png", - alt: "Redbull", - width: 80, - height: 80, + src: "/sponsors/redbull-wordmark.png", + alt: "Red Bull", + width: 3509, + height: 2480, }, { - href: "https://www.simracing.ee/", - src: "/sponsors/EVAL.png", - alt: "EVAL", - width: 200, - height: 200, - }, - { - href: "https://www.instagram.com/baltic_fighting_game_league/", - src: "/sponsors/BFGL.png", - alt: "BFGL", - width: 192, - height: 192, - }, - { - href: "https://www.tomorrow.ee/", - src: "/sponsors/nt.png", - alt: "Network Tomorrow", - width: 300, - height: 200, - }, - { - href: "https://k-space.ee/", - src: "/sponsors/k-space_ee-white.png", - alt: "K-Space", - width: 244, - height: 244, - className: "not-dark:invert", + href: "https://www.stillframe.ee/", + src: "/sponsors/Still_Frame_logo_2020_Gold_2.png", + alt: "Still Frame", + width: 1335, + height: 1617, }, { href: "https://globalproductions.ee/", @@ -65,6 +44,74 @@ const sponsors: Sponsor[] = [ width: 244, height: 244, }, + { + href: "https://www.tomorrow.ee/", + src: "/sponsors/nt.png", + alt: "Network Tomorrow", + width: 300, + height: 200, + }, + { + href: "https://arvutitark.ee/", + src: "/sponsors/arvutitark.svg", + alt: "Arvutitark", + width: 344, + height: 344, + }, + { + href: "https://www.alecoq.ee/", + src: "/sponsors/alecoq.svg", + alt: "A. Le Coq", + width: 842, + height: 595, + }, + { + href: "https://www.tallinn.ee/et/haridusamet", + src: "/sponsors/Tallinna_Haridusamet_logo_RGB.svg", + alt: "Tallinna Haridusamet", + width: 244, + height: 244, + }, + { + href: "https://balsnack.ee/", + src: "/sponsors/balsnack.svg", + alt: "Balsnack", + width: 123, + height: 48, + }, + { + href: "https://www.teamspeak.com/", + src: "/sponsors/TS_InLine_BlueLight.svg", + alt: "TeamSpeak", + width: 344, + height: 344, + }, +]; + +const sponsors: Sponsor[] = [ + // Gaming and technology + { + href: "https://k-space.ee/", + src: "/sponsors/k-space_ee-white.png", + alt: "K-Space", + width: 244, + height: 244, + className: "not-dark:invert", + }, + { + href: "https://www.instagram.com/baltic_fighting_game_league/", + src: "/sponsors/BFGL.png", + alt: "BFGL", + width: 192, + height: 192, + }, + { + href: "https://www.simracing.ee/", + src: "/sponsors/EVAL.png", + alt: "EVAL", + width: 200, + height: 200, + }, { href: "https://www.linkedin.com/company/gamedev-guild/", src: "/sponsors/estonian_gamedev_guild.png", @@ -73,6 +120,20 @@ const sponsors: Sponsor[] = [ height: 244, className: "not-dark:invert", }, + { + href: "https://www.egda.ee/", + src: "/sponsors/EGDA.png", + alt: "Estonian Game Developers Association", + width: 344, + height: 344, + }, + { + href: "https://www.rara.ee/en/events/interactive-video-game-museum-lvlup/", + src: "/sponsors/lvlup_logo_export.svg", + alt: "LVLup! video games museum", + width: 148, + height: 90, + }, { href: "https://alzgamer.ee/", src: "/sponsors/alzgamer.png", @@ -88,12 +149,21 @@ const sponsors: Sponsor[] = [ height: 164, }, { - href: "https://www.tallinn.ee/et/haridusamet", - src: "/sponsors/Tallinna_Haridusamet_logo_RGB.svg", - alt: "Tallinna Haridusamet", + href: "https://2fast.ee/", + src: "/sponsors/2fast.png", + alt: "2FAST", width: 244, height: 244, }, + + // Activities and culture + { + href: "https://www.elamusgolf.eu/", + src: "/sponsors/elamusgolf.png", + alt: "Elamusgolf", + width: 164, + height: 164, + }, { href: "https://parkminigolf.ee/", src: "/sponsors/park_minigolf.png", @@ -108,54 +178,44 @@ const sponsors: Sponsor[] = [ width: 144, height: 144, }, - { - href: "https://www.elamusgolf.eu/", - src: "/sponsors/elamusgolf.png", - alt: "Elamusgolf", - width: 164, - height: 164, - }, - { - href: "https://www.egda.ee/", - src: "/sponsors/EGDA.png", - alt: "Estonian Game Developers Association", - width: 344, - height: 344, - }, - { - href: "https://www.teamspeak.com/", - src: "/sponsors/TS_InLine_BlueLight.svg", - alt: "TeamSpeak", - width: 344, - height: 344, - }, - { - href: "https://arvutitark.ee/", - src: "/sponsors/arvutitark.svg", - alt: "Arvutitark", - width: 344, - height: 344, - }, { href: "https://www.kino.ee/", src: "/sponsors/Artis_logo_white_text.png", alt: "Artis Kino", width: 344, - height: 344, + height: 344, }, { href: "https://www.tallinn.ee/et/mank", src: "/sponsors/MANK.png", alt: "Mustamäe Avatud Noortekeskus", width: 200, - height: 244, + height: 244, + }, + + // Accommodation + { + href: "https://www.academichostel.com/en/", + src: "/sponsors/academic-hostel.png", + alt: "Academic Hostel", + width: 524, + height: 338, + }, + + // Food and drink + { + href: "https://retroburger.ee/", + src: "/sponsors/retro-burger.png", + alt: "Retro Burger", + width: 1024, + height: 1024, }, { - href: "https://2fast.ee/", - src: "/sponsors/2fast.png", - alt: "2FAST", - width: 244, - height: 244, + href: "https://pokebowl.ee/", + src: "/sponsors/poke-bowl.png", + alt: "Poké Bowl", + width: 685, + height: 432, }, { href: "", @@ -173,24 +233,92 @@ interface SponsorsProps { const tickerSponsors = [...sponsors, ...sponsors, ...sponsors, ...sponsors]; +interface FeaturedSponsorProps { + sponsor: Sponsor; +} + +function FeaturedSponsor({ sponsor }: FeaturedSponsorProps) { + return ( + + + + ); +} + export default function Sponsors({ showTitle = true, className = "", }: SponsorsProps) { const t = useTranslations(); + const [isTickerPaused, setIsTickerPaused] = useState(false); + const pauseTimerRef = useRef | null>(null); + + const clearPauseTimer = () => { + if (pauseTimerRef.current) { + clearTimeout(pauseTimerRef.current); + pauseTimerRef.current = null; + } + }; + + const handleTickerMouseEnter = () => { + clearPauseTimer(); + pauseTimerRef.current = setTimeout(() => { + setIsTickerPaused(true); + pauseTimerRef.current = null; + }, 100); + }; + + const handleTickerMouseLeave = () => { + clearPauseTimer(); + setIsTickerPaused(false); + }; + + useEffect(() => { + return () => { + if (pauseTimerRef.current) { + clearTimeout(pauseTimerRef.current); + } + }; + }, []); return ( -
{showTitle && ( -

+

{t("home.sections.poweredBy")} -

+ )} -
-
+
+ {highlightedSponsors.map((sponsor) => ( + + ))} +
+ + {showTitle && ( +

+ {t("home.sections.ourSponsors")} +

+ )} + +
+
{tickerSponsors.map((sponsor, index) => ( -
+ ); } diff --git a/translations/en.json b/translations/en.json index 6f5be1a..2c478d1 100644 --- a/translations/en.json +++ b/translations/en.json @@ -78,7 +78,8 @@ "description": "The TipiLAN expo area hosts companies, additional activities and lectures." }, "reserveSpot": "Reserve your spot today!", - "poweredBy": "TipiLAN is powered by...", + "poweredBy": "TipiLAN is powered by", + "ourSponsors": "Our sponsors", "dateAndLocation": "11th–13th Sep. 2026 @ TalTech" } }, diff --git a/translations/et.json b/translations/et.json index 416640b..0243e5f 100644 --- a/translations/et.json +++ b/translations/et.json @@ -78,7 +78,8 @@ "description": "TipiLANi messialal paiknevad ettevõtted, lisategevused ja toimuvad loengud." }, "reserveSpot": "Broneeri oma koht juba täna!", - "poweredBy": "Toetajad", + "poweredBy": "TipiLANile annavad hoogu", + "ourSponsors": "Meie toetajad", "dateAndLocation": "11.–13. sept. 2026 TalTechis" } },