From 425c6624386516622d18d13c7958f887e503d8b0 Mon Sep 17 00:00:00 2001 From: Thalyson Date: Thu, 11 Jun 2026 20:15:20 -0300 Subject: [PATCH] feat: add tier-colored insignias with shadow to sponsors, add popular badge to tickets, and update contact links --- components/sponsors.tsx | 207 +++++++++++++++++++++++----------------- components/tickets.tsx | 21 ++-- 2 files changed, 135 insertions(+), 93 deletions(-) diff --git a/components/sponsors.tsx b/components/sponsors.tsx index 102c717..03e373a 100644 --- a/components/sponsors.tsx +++ b/components/sponsors.tsx @@ -4,7 +4,10 @@ import Image from "next/image"; import { ArrowRight, Mail, - UsersRound + UsersRound, + Gem, + Trophy, + Award } from "lucide-react"; type SponsorLogo = { @@ -64,23 +67,6 @@ export function Sponsors() { }, ]; - const smallTierStyles: Record = { - Ouro: "bg-[#f9de85] border-[#f2c34f]", - Prata: "bg-[#f4f4f4] border-[#d6d6d6]", - Bronze: "bg-[#fff8ee] border-[#f19a6e]", - }; - - const smallTierItems = tiers - .filter((tier) => tier.name !== "Diamante") - .flatMap((tier) => - tier.logos.map((logo) => ({ - tierName: tier.name, - logo, - })) - ); - - const diamondTier = tiers.find((tier) => tier.name === "Diamante"); - const pyeguaBadges: string[] = [ // Placeholder data for PyEgua badges ]; @@ -102,75 +88,125 @@ export function Sponsors() {

- Empresas e comunidades que tornam a Python Norte 2026 possivel + Empresas e comunidades que tornam a Python Norte 2026 possível

-
-
- {diamondTier?.logos.map((logo) => ( - -
- {logo.src ? ( - {logo.name} - ) : ( - - {logo.placeholder} - - )} -
-

- Patrocinador {diamondTier.name} -

-
- ))} -
+
+ {tiers.map((tier) => { + if (tier.logos.length === 0) return null; -
- {smallTierItems.map((item, idx) => ( - -
- {item.logo.src ? ( - {item.logo.name} - ) : ( - item.logo.name.slice(0, 1) - )} + // Configurações específicas de estilo para cada nível de patrocínio + let tierHeadingClass = ""; + let gridClass = ""; + let cardClass = ""; + let logoHeightClass = ""; + let logoContainerMinHeightClass = ""; + let badgeClass = ""; + let insigniaBgClass = ""; + let insigniaIconClass = ""; + let InsigniaIcon = Award; + let imageWidth = 140; + let imageHeight = 50; + + if (tier.name === "Diamante") { + tierHeadingClass = "text-[#A33D06] dark:text-[#E37700]"; // Gold/Orange theme + gridClass = "flex flex-wrap justify-center gap-8"; + cardClass = "relative overflow-hidden w-full max-w-[380px] rounded-3xl border-2 border-[#FFB000] bg-white p-8 shadow-[0_16px_36px_rgba(255,176,0,0.18)] hover:-translate-y-1.5 hover:shadow-[0_24px_48px_rgba(255,176,0,0.28)] transition-all duration-300"; + logoHeightClass = "h-20 md:h-24"; + logoContainerMinHeightClass = "min-h-[110px]"; + badgeClass = "bg-[#FEF5E9] text-[#E37700] border-[#FDE7C2]"; + insigniaBgClass = "bg-gradient-to-br from-amber-50 to-orange-50 border-2 border-[#FFB000] shadow-[0_0_12px_rgba(255,176,0,0.6)]"; + insigniaIconClass = "text-[#E37700] animate-pulse"; + InsigniaIcon = Gem; + imageWidth = 300; + imageHeight = 110; + } else if (tier.name === "Ouro") { + tierHeadingClass = "text-[#C49A28]"; // Gold theme + gridClass = "flex flex-wrap justify-center gap-6"; + cardClass = "relative overflow-hidden w-full max-w-[300px] rounded-2xl border border-[#FDE7C2] bg-white p-6 shadow-[0_10px_24px_rgba(242,195,79,0.1)] hover:-translate-y-1 hover:shadow-[0_16px_32px_rgba(242,195,79,0.18)] transition-all duration-300"; + logoHeightClass = "h-14 md:h-16"; + logoContainerMinHeightClass = "min-h-[85px]"; + badgeClass = "bg-amber-50 text-amber-700 border-amber-200"; + insigniaBgClass = "bg-gradient-to-br from-amber-50 to-[#fffbeb] border border-[#FDE7C2] shadow-[0_0_10px_rgba(196,154,40,0.5)]"; + insigniaIconClass = "text-amber-600"; + InsigniaIcon = Trophy; + imageWidth = 220; + imageHeight = 80; + } else { // Prata e outros + tierHeadingClass = "text-neutral-500"; // Silver/Neutral theme + gridClass = "flex flex-wrap justify-center gap-5"; + cardClass = "relative overflow-hidden w-full max-w-[220px] rounded-xl border border-neutral-200 bg-white p-5 shadow-sm hover:-translate-y-0.5 hover:shadow-md transition-all duration-300"; + logoHeightClass = "h-10 md:h-11"; + logoContainerMinHeightClass = "min-h-[65px]"; + badgeClass = "bg-neutral-50 text-neutral-600 border-neutral-200"; + insigniaBgClass = "bg-neutral-50 border border-neutral-200 shadow-[0_0_8px_rgba(115,115,115,0.4)]"; + insigniaIconClass = "text-neutral-500"; + InsigniaIcon = Award; + imageWidth = 160; + imageHeight = 60; + } + + return ( + )} -
diff --git a/components/tickets.tsx b/components/tickets.tsx index 4b46a8d..15ddf8c 100644 --- a/components/tickets.tsx +++ b/components/tickets.tsx @@ -116,13 +116,20 @@ export function Tickets() { )}
-

- {ticket.name} -

+
+

+ {ticket.name} +

+ {ticket.popular && ( + + Últimas Vagas + + )} +