Skip to content

Commit 99d68aa

Browse files
committed
Tweak styles
1 parent f8182ee commit 99d68aa

File tree

1 file changed

+90
-69
lines changed

1 file changed

+90
-69
lines changed

src/app/conf/2025/components/sponsors.tsx

Lines changed: 90 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,24 @@ import EscapeTechnologies from "public/img/conf/Partners/EscapeTechnologies.svg"
1616
import AmsterdamGraphQL from "public/img/conf/Partners/AmsterdamGraphQL.svg"
1717
import BangkokGraphQL from "public/img/conf/Partners/BangkokGraphQL.svg"
1818
import TypeGraphQL from "public/img/conf/Partners/TypeGraphQL.svg"
19-
import { clsx } from "clsx"
2019
import NextImage from "next-image-export-optimizer"
20+
import { clsx } from "clsx"
21+
22+
// Component for the small triangle icon before tier labels
23+
function TierIcon() {
24+
return (
25+
<svg
26+
width="8"
27+
height="10"
28+
viewBox="0 0 8 10"
29+
fill="none"
30+
xmlns="http://www.w3.org/2000/svg"
31+
className="mr-1 inline-block h-auto w-2 fill-primary"
32+
>
33+
<path d="M7.5 5L6.11959e-07 10L0 0L7.5 5Z" />
34+
</svg>
35+
)
36+
}
2137

2238
interface Image {
2339
icon: string
@@ -86,104 +102,109 @@ function List({
86102
className,
87103
linkClassName,
88104
}: {
89-
className?: string
90105
items: Image[]
106+
className?: string
91107
linkClassName?: string
92108
}) {
93109
return (
94-
<div className={clsx("grid w-full gap-7", className)}>
110+
<div className={clsx("flex flex-row flex-wrap gap-x-8 gap-y-4", className)}>
95111
{items.map(({ link, icon, name }, i) => (
96112
<a
97113
key={i}
98-
className={clsx(
99-
"relative shrink-0 rounded-md bg-[#251f30]",
100-
"flex justify-center",
101-
"border border-solid border-transparent hover:border-primary focus:border-primary",
102-
"transition-colors",
103-
"shadow-md outline-none hover:shadow-primary/20 focus:shadow-primary/20",
104-
linkClassName,
105-
)}
106114
href={link}
107115
target="_blank"
108116
rel="noreferrer"
109117
title={name}
118+
className={clsx(
119+
"flex h-24 w-72 items-center justify-center",
120+
linkClassName,
121+
)}
110122
>
111123
<NextImage
112124
alt={`${name} logo`}
113125
src={icon}
114-
className="h-auto shrink lg:max-w-60"
126+
className="max-h-16 w-auto max-w-[80%] shrink-0 object-contain text-neu-600"
115127
/>
116-
<span className="absolute right-5 top-5 font-sans leading-none text-white lg:text-2xl">
117-
118-
</span>
119128
</a>
120129
))}
121130
</div>
122131
)
123132
}
124133

125-
const classes = {
126-
heading:
127-
"text-center text-primary text-2xl lg:text-3xl font-bold mb-10 mt-20",
128-
title: "md:text-center text-white conf-heading",
129-
}
130-
131134
export interface SponsorsProps {
132135
heading?: string
133136
}
134137

138+
// --- Data structure for Tiers ---
139+
interface Tier {
140+
name: string
141+
items: Image[]
142+
}
143+
144+
const sponsorTiers: Tier[] = [
145+
{
146+
name: "Diamond",
147+
items: sponsorDiamond,
148+
},
149+
{
150+
name: "Platinum",
151+
items: sponsorPlatinum,
152+
},
153+
{
154+
name: "Gold",
155+
items: sponsorGold,
156+
},
157+
{
158+
name: "Silver",
159+
items: sponsorSilver,
160+
},
161+
{
162+
name: "Workshop Day Sponsor",
163+
items: workshopDaySponsors,
164+
},
165+
]
166+
167+
const partnerTiers: Tier[] = [
168+
{
169+
name: "Media Partners",
170+
items: mediaPartners,
171+
},
172+
{
173+
name: "Community Partners",
174+
items: communityPartners,
175+
},
176+
]
177+
// --- End Data structure ---
178+
135179
export function Sponsors({ heading }: SponsorsProps) {
136180
return (
137-
<section className="bg-conf-black">
138-
<h2 className="typography-h2">{heading}</h2>
139-
<div className="conf-block container">
140-
<h1 className={classes.title}>Sponsors</h1>
141-
<h3 className={classes.heading}>Diamond</h3>
142-
<List
143-
items={sponsorDiamond}
144-
className="grid-cols-1"
145-
linkClassName="p-8 lg:p-16 h-28 lg:h-[220px]"
146-
/>
147-
<h3 className={classes.heading}>Platinum</h3>
148-
<List
149-
items={sponsorPlatinum}
150-
className="grid-cols-2"
151-
linkClassName="p-8 lg:py-14 h-28 lg:h-[210px]"
152-
/>
153-
<h3 className={classes.heading}>Gold</h3>
154-
<List
155-
items={sponsorGold}
156-
className="grid-cols-2 xl:grid-cols-3"
157-
linkClassName="p-8 lg:py-14 h-28 lg:h-[170px]"
158-
/>
159-
<h3 className={classes.heading}>Silver</h3>
160-
<List
161-
items={sponsorSilver}
162-
className="grid-cols-2 xl:grid-cols-4"
163-
linkClassName="p-6 lg:p-10 h-28 lg:h-[155px]"
164-
/>
165-
<h3 className={classes.heading}>Workshop Day Sponsor</h3>
166-
<List
167-
items={workshopDaySponsors}
168-
className="mx-auto grid-cols-2 lg:w-1/2 lg:grid-cols-1"
169-
linkClassName="p-8 lg:p-10 h-28 lg:h-[155px]"
170-
/>
181+
<section className="gql-conf-section py-16">
182+
<h1 className="typography-h2">{heading}</h1>
183+
184+
<div className="mt-10 md:mt-16">
185+
{sponsorTiers.map(tier => (
186+
<Tier key={tier.name} tier={tier} />
187+
))}
171188
</div>
172-
<div className="container py-24">
173-
<h1 className={classes.title}>Partners</h1>
174-
<h3 className={classes.heading}>Media Partners</h3>
175-
<List
176-
items={mediaPartners}
177-
className="mx-auto grid-cols-2 xl:w-1/2"
178-
linkClassName="p-9 lg:p-12 h-28 lg:h-[155px]"
179-
/>
180-
<h3 className={classes.heading}>Community Partners</h3>
181-
<List
182-
items={communityPartners}
183-
className="grid-cols-2 xl:grid-cols-4"
184-
linkClassName="p-6 lg:p-10 h-28 lg:h-[155px]"
185-
/>
189+
190+
<div className="flex flex-col self-stretch border-t border-[#E7E9E2] pt-16">
191+
<h1 className="mb-4 text-5xl font-normal text-[#0E0F0B]">Partners</h1>
192+
{partnerTiers.map(tier => (
193+
<Tier key={tier.name} tier={tier} />
194+
))}
186195
</div>
187196
</section>
188197
)
189198
}
199+
200+
function Tier({ tier }: { tier: Tier }) {
201+
return (
202+
<div className="flex gap-x-12 gap-y-4 border-t border-neu-200 py-4 dark:border-neu-50 max-md:flex-col">
203+
<h3 className="min-w-[180px] whitespace-nowrap font-mono text-sm font-normal uppercase text-primary">
204+
<TierIcon />
205+
{tier.name}
206+
</h3>
207+
<List items={tier.items} />
208+
</div>
209+
)
210+
}

0 commit comments

Comments
 (0)