Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/components/Sponsor.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import React from "react";
import { cn } from "@/lib/utils";
import { ISponsor } from "@/types/types.ts";

interface SponsorProps {
Expand All @@ -9,7 +10,13 @@ const Sponsor: React.FC<SponsorProps> = ({ sponsor }) => {
if (!sponsor.isPaid) return null;

const content = sponsor.image ? (
<img src={sponsor.image} alt={sponsor.name} loading="lazy" decoding="async" className="sponsor-logo" />
<img
src={sponsor.image}
alt={sponsor.name}
loading="lazy"
decoding="async"
className={cn("sponsor-logo", sponsor.type && `sponsor-logo--${sponsor.type}`)}
/>
) : (
<span className="sponsor-name">{sponsor.name}</span>
);
Expand Down
56 changes: 56 additions & 0 deletions src/components/VenueMap.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import React from 'react';
import Win from '@/components/Win';

const VENUE_FACTS = [
{ label: 'Aforo', value: '350 personas' },
{ label: 'Qué hay cerca', value: 'Plaza del Sol y plaza La Perla · 6 min' },
{ label: 'Bici', value: 'MiBici Avenida Moctezuma (ZPN-080)' },
{ label: 'Rutas de transporte', value: 'C70, T11B, T04-B, V2, C130, T04-B, TL-1, T10' },
{ label: 'Accesibilidad', value: 'Elevador' },
];

const MAP_QUERY = encodeURIComponent(
'Holiday Inn Guadalajara Expo by IHG, Av. Lopez Mateos Sur 2500, Cd del Sol, 45050 Zapopan, Jal.'
);

const VenueMap = () => (
<Win
title="📍 Sede.map"
footer={
<>
<span>Holiday Inn Guadalajara Expo by IHG</span>
<span>Zapopan, Jal.</span>
</>
}
>
<div className="sec-head">
<h2>Dónde<br />nos vemos<em>.</em></h2>
</div>
<div className="venue-grid">
<div className="venue-map-frame">
<iframe
src={`https://www.google.com/maps?q=${MAP_QUERY}&output=embed`}
title="Mapa de ubicación de Holiday Inn Guadalajara Expo by IHG"
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
/>
</div>
<div className="venue-info">
<h3 className="venue-name">Holiday Inn Guadalajara Expo<br />by IHG</h3>
<p className="venue-address">
Ave. Lopez Mateos Sur 2500, Cd del Sol, 45050 Zapopan, Jal.
</p>
<div className="venue-facts">
{VENUE_FACTS.map(({ label, value }) => (
<div className="venue-fact-row" key={label}>
<span className="venue-fact-label">{label}</span>
<span className="venue-fact-value">{value}</span>
</div>
))}
</div>
</div>
</div>
</Win>
);

export default VenueMap;
2 changes: 1 addition & 1 deletion src/components/sponsors/SponsorsByTier.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ interface SponsorsByTierProps {
const TIERS: { key: NonNullable<ISponsor["type"]>; label: string; icon: string }[] = [
{ key: "diamond", label: "Diamond", icon: "💎" },
{ key: "gold", label: "Gold", icon: "⭐" },
{ key: "silver", label: "Silver", icon: "🌟" },
{ key: "silver", label: "Silver", icon: "🥈" },
{ key: "virtual", label: "Virtual", icon: "🖥" },
];

Expand Down
8 changes: 8 additions & 0 deletions src/data/sponsors.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { ISponsor } from "@/types/types.ts";
import zillow from "@/img/sponsors/zillow.png";
import atdac from "@/img/sponsors/atdac.png";

export const sponsors: Array<ISponsor> = [
{
Expand All @@ -9,4 +10,11 @@ export const sponsors: Array<ISponsor> = [
isPaid: true,
type: "diamond",
},
{
id: "atdac",
name: "ATDAC",
image: atdac,
isPaid: true,
type: "silver",
},
];
Binary file added src/img/sponsors/atdac.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
46 changes: 46 additions & 0 deletions src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -584,6 +584,50 @@
.ally-grid { grid-template-columns: 1fr; }
}

/* ── Dónde nos vemos (sede) ──────────────────────────────────────── */
.venue-grid {
display: grid; grid-template-columns: 1.1fr 1fr;
gap: 24px; align-items: stretch;
}
.venue-map-frame {
border: 2px solid var(--ink); box-shadow: var(--win-shadow-sm);
min-height: 340px; overflow: hidden;
}
.venue-map-frame iframe { width: 100%; height: 100%; min-height: 340px; border: 0; display: block; }

.venue-info { display: flex; flex-direction: column; }
.venue-name {
font-family: "Pixelify Sans", monospace; font-weight: 700;
font-size: 22px; line-height: 1.15; color: var(--ink); margin-bottom: 8px;
}
.venue-address {
font-family: "Space Grotesk", sans-serif; font-size: 14px;
color: var(--ink-2); line-height: 1.5; margin-bottom: 20px;
}
.venue-facts { border: 2px solid var(--ink); background: var(--paper); }
.venue-fact-row {
display: flex; align-items: center; justify-content: space-between; gap: 16px;
padding: 12px 16px;
}
.venue-fact-row + .venue-fact-row { border-top: 1px solid var(--ink); }
.venue-fact-label {
font-family: "Press Start 2P", monospace; font-size: 8px; letter-spacing: .08em;
text-transform: uppercase; color: var(--ink-2); flex-shrink: 0;
}
.venue-fact-value {
font-family: "Space Grotesk", sans-serif; font-weight: 700; font-size: 14px;
color: var(--ink); text-align: right;
}
@media (max-width: 900px) {
.venue-grid { grid-template-columns: 1fr; }
.venue-map-frame { min-height: 260px; }
.venue-map-frame iframe { min-height: 260px; }
}
@media (max-width: 500px) {
.venue-fact-row { flex-direction: column; align-items: flex-start; gap: 4px; }
.venue-fact-value { text-align: left; }
}

/* ── Kit de prensa ───────────────────────────────────────────────── */
.presskit-subtitle {
font-family: "Pixelify Sans", monospace; font-weight: 700;
Expand Down Expand Up @@ -690,12 +734,14 @@
}
.sponsor-item { display: flex; align-items: center; justify-content: center; }
.sponsor-logo { max-height: 192px; max-width: 660px; object-fit: contain; }
.sponsor-logo--silver { max-height: 134px; max-width: 462px; }
.sponsor-name {
font-family: "Pixelify Sans", monospace; font-weight: 700;
font-size: 20px; color: var(--ink);
}
@media (max-width: 600px) {
.sponsor-logo { max-height: 132px; max-width: 90%; }
.sponsor-logo--silver { max-height: 92px; max-width: 63%; }
.sponsor-name { font-size: 16px; }
}

Expand Down
4 changes: 4 additions & 0 deletions src/pages/Index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import Gallery from '@/components/Gallery';
import { useLocation } from 'react-router-dom';
import BecomeSponsor from '@/components/BecomeSponsor';
import Sponsors from '@/components/Sponsors';
import VenueMap from '@/components/VenueMap';
import Organizers from '@/components/Organizers';
import CommunityAllies from '@/components/CommunityAllies';

Expand Down Expand Up @@ -56,6 +57,9 @@ const Index = () => {
<div className="desktop-wrap">
<Hero />
<Stripe />
<section id="sede">
<VenueMap />
</section>
<section id="sponsors">
<Sponsors />
</section>
Expand Down
Loading