Skip to content

Commit 0d653dc

Browse files
Merge branch 'ep2025' into ep2025-hero3
2 parents d5e9f99 + d7f515e commit 0d653dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+727
-78
lines changed

Dockerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
FROM node:20-slim
22

3+
RUN apt-get update && apt-get install -y make
4+
35
ENV PNPM_HOME="/pnpm"
46
ENV PATH="$PNPM_HOME:$PATH"
57

@@ -9,7 +11,7 @@ RUN pnpm config set store-dir /home/node/.local/share/pnpm/store
911

1012
WORKDIR /app
1113

12-
COPY package.json pnpm-lock.yaml ./
13-
RUN pnpm install
14+
COPY Makefile package.json pnpm-lock.yaml ./
15+
RUN make install
1416

1517
RUN mkdir -p /app/src

src/components/SocialLinks.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const socialMap = {
2121
};
2222
---
2323

24-
<div class=`social-links flex justify-center space-x-4 ${className}`>
24+
<div class=`social-links flex justify-center space-x-4 ${className} h-[36px]`>
2525
{
2626
Object.entries(socialMap)
2727
.filter(([key]) => socials?.[key])

src/components/SponsorCard.astro

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ const logo = sponsorLogos[sponsor.id];
6666
{
6767
description && (
6868
<div class="flex-1">
69-
<h2 class="text-2xl font-bold mb-2 ">
69+
<h2 id=`sponsor-${sponsorId}` class="sponsor text-2xl font-bold mb-2 ">
7070
{ !isSponsorPage && tier !== 'Partners' ?
7171
<a href={`/sponsor/${sponsor.id}`}>
7272
{title}
@@ -95,10 +95,15 @@ const logo = sponsorLogos[sponsor.id];
9595
)}
9696

9797

98+
</div>
99+
)
100+
}
101+
<div>
102+
98103
{(tier !== "Partners") && website && (
99104
<div class="website-btn-container flex flex-col sm:flex-row justify-center gap-2 mt-4">
100105

101-
{ !isSponsorPage && sponsor.body &&
106+
{ !isSponsorPage && sponsor.body && tier && ["Gold", "Platinum"].includes(tier) &&
102107
<a href={`/sponsor/${sponsor.id}`} class="website-btn-outline">
103108
About {title}
104109
</a>
@@ -114,9 +119,7 @@ const logo = sponsorLogos[sponsor.id];
114119
{ (tier !== "Partners") &&
115120
<SocialLinks socials={socials} />
116121
}
117-
</div>
118-
)
119-
}
122+
</div>
120123
</div>
121124

122125
<style>

src/components/SponsorDisplay.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { sponsorDisplay } from "@data/sponsorDisplay";
1515
const image = sponsorDisplay[sponsor.id]
1616
---
1717

18-
{ image &&
18+
{ sponsor.data.tier == "Platinum" && image &&
1919
<section class="space-y-12 pb-6 overflow-hidden">
2020
<Image
2121
src={image}

src/components/SponsorLogo.astro

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,29 @@ if (!sponsor) {
1515
const {
1616
name: title,
1717
url: website,
18+
tier,
1819
logo_padding = false,
1920
} = sponsor.data;
2021
2122
const logo = sponsorLogos[sponsor.id];
23+
const slug = tier==="Partners"? `/community-partners#sponsor-${sponsorId}`: tier==="Platinum" ? `/sponsor/${sponsorId}` : tier==="Media Partners" ? `/media-partners#sponsor-${sponsorId}` : tier==="Startups" ? `/startups#sponsor-${sponsorId}` : ""
24+
2225
---
2326

2427
<div
2528
class="lg:max-w-[400px] flex flex-col p-6 bg-white"
2629
>
2730
<div class="w-full flex justify-center items-center md:items-center">
2831
{
29-
website ? (
32+
website && slug ? (
3033

31-
<a href={website} target="_blank" aria-label={`Link to ${title}`}
34+
<a href={slug} aria-label={`Link to ${title}`}
3235
>
3336
<Image
3437
src={logo}
3538
alt={`${title} Logo`}
3639
style={{
37-
minWidth: "250px",
40+
minWidth: "170px",
3841
maxHeight: "120px",
3942
objectFit: "contain",
4043
padding: logo_padding ? logo_padding : undefined,
@@ -46,7 +49,7 @@ const logo = sponsorLogos[sponsor.id];
4649
src={logo}
4750
alt={`${title} Logo`}
4851
style={{
49-
minWidth: "250px",
52+
minWidth: "170px",
5053
maxHeight: "120px",
5154
objectFit: "contain",
5255
padding: logo_padding ? logo_padding : undefined,

src/components/sponsors/sponsor-tier.astro renamed to src/components/sections/sponsors/sponsor-tier.astro

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ export interface Props {
1010
sponsors: Sponsor[];
1111
};
1212
13-
top?: boolean;
13+
level: number;
1414
}
1515
16-
const { tier, top } = Astro.props;
16+
const { tier, level = 2} = Astro.props;
1717
---
1818

1919
<div class="relative">
@@ -27,9 +27,12 @@ const { tier, top } = Astro.props;
2727
<div
2828
class:list={[
2929
"grid ml-12 items-center justify-items-center",
30+
`level-${level}`,
3031
{
31-
"grid-cols-1 md:grid-cols-2 lg:grid-cols-3": !top,
32-
"grid-cols-1 md:grid-cols-2": top,
32+
"grid-cols-1 md:grid-cols-2 m-20 [&>*]:scale-110": level===0,
33+
"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 [&>*]:scale-90": level > 0 && level << 6,
34+
"grid-cols-2 md:grid-cols-3 lg:grid-cols-4 [&>*]:scale-90" : level===6,
35+
"grid-cols-2 md:grid-cols-3 lg:grid-cols-4 [&>*]:scale-85" : level>6,
3336
},
3437
]}
3538
>

src/components/sponsors/sponsors.astro renamed to src/components/sections/sponsors/sponsors.astro

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ const tiers = [
1414
"Platinum X",
1515
"Gold",
1616
"Silver",
17+
"Startups",
1718
"Bronze",
1819
"Patron",
1920
"Financial Aid",
2021
"Supporters",
21-
"Partners"
22+
"Partners",
23+
"Media Partners"
2224
] as const;
2325
2426
const sponsors = await getCollection("sponsors");
@@ -67,20 +69,15 @@ const topTier = sponsorTiers.find((tier) => tier.name === "Keystone");
6769
<div class="mt-4 text-center">
6870
<Button url="/sponsor">Become a sponsor</Button>
6971
</div>
70-
{
71-
topTier && topTier.sponsors.length > 0 && (
72-
<SponsorTier tier={topTier} top={true} />
73-
)
74-
}
7572
</div>
7673

7774
{sponsorTiers.length > 0 && <hr />}
7875

79-
<div class="">
76+
<div >
8077
{
8178
sponsorTiers.map((tier, index) => (
8279
<Fragment>
83-
<SponsorTier tier={tier} top={tier.name === "Platinum"} />
80+
<SponsorTier tier={tier} level={index} />
8481
{index !== sponsorTiers.length - 1 && <hr />}
8582
</Fragment>
8683
))

src/components/sponsor-tiers/sponsor-tiers.astro

Lines changed: 75 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,18 @@ const tiers: SponsorTierProps[] = [
123123
"Welcome post on EuroPython social media",
124124
],
125125
},
126+
{
127+
title: "Startup",
128+
price: 3_000,
129+
slotsLeft: "5",
130+
features: [
131+
"<strong>Exhibition Space for 3 days</strong>",
132+
"<strong>2 conference tickets (€1000 value)</strong>",
133+
"1 remote ticket (€150 value)",
134+
"Logo on website and signage",
135+
"Welcome post on EuroPython social media",
136+
],
137+
},
126138
{
127139
title: "Bronze",
128140
price: 2_000,
@@ -153,6 +165,7 @@ const getRibbonClass = (title: string) => {
153165
Platinum: "text-sponsor-platinum",
154166
Gold: "text-sponsor-gold",
155167
Silver: "text-sponsor-silver",
168+
Startup: "text-sponsor-startup",
156169
Bronze: "text-sponsor-bronze",
157170
Patron: "text-sponsor-patron",
158171
};
@@ -212,8 +225,64 @@ const formatPrice = (price: number | string) => {
212225
<div class="text-xl mt-4">
213226
{tier.slotsLeft ? (
214227
<>
215-
<span>{tier.slotsLeft}</span> slot
216-
{tier.slotsLeft == 1 ? "" : "s"} remaining
228+
<span>{tier.slotsLeft}</span>
229+
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
230+
</>
231+
) : (
232+
<>Fully booked</>
233+
)}
234+
</div>
235+
</div>
236+
237+
<p class="font-bold text-base">This tier includes:</p>
238+
<ul class="text-base list-none pl-0">
239+
{tier.features.map((feature) => (
240+
<li class="flex items-start">
241+
<span class="flex-shrink-0 w-6">✔️</span>
242+
<span set:html={feature} />
243+
</li>
244+
))}
245+
</ul>
246+
<div class="absolute bottom-4 right-4">
247+
<Button url={signupLink}>Sign Up Now!</Button>
248+
</div>
249+
</div>
250+
))
251+
}
252+
</div>
253+
254+
255+
<div class="text-center mb-8 mt-16">
256+
<h2 class="text-3xl font-bold">Startups</h2>
257+
<p class="text-xl mt-2 mb-12">
258+
For early-stage companies ready to connect with the community, boost visibility, and make a strong first impression.
259+
</p>
260+
</div>
261+
<div class="grid grid-cols-1 gap-10 md:mx-50 lg:mx-60 xl:mx-96">
262+
{
263+
tiers
264+
.filter((tier) => tier.title === "Startup")
265+
.sort((a, b) => {
266+
const order: { [key: string]: number } = { Startup: 1 };
267+
return order[a.title] - order[b.title];
268+
})
269+
270+
.map((tier) => (
271+
<div class="bg-white text-black rounded-2xl p-6 pb-20 relative not-prose z-0">
272+
<div class="h-[160px]">
273+
<Ribbon
274+
className={`absolute -right-6 -top-8 ${getRibbonClass(tier.title)}`}
275+
style={{ zIndex: "-1", top: "-55px" }}
276+
/>
277+
<Headline as="h3" title={tier.title} />
278+
<div class="font-bold text-3xl">{formatPrice(tier.price)}</div>
279+
<div class="text-xl">
280+
{tier.slotsLeft === "Exclusive" ? (
281+
<>Exclusive</>
282+
) : tier.slotsLeft ? (
283+
<>
284+
<span>{tier.slotsLeft}</span>
285+
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
217286
</>
218287
) : (
219288
<>Fully booked</>
@@ -268,8 +337,8 @@ const formatPrice = (price: number | string) => {
268337
<>Exclusive</>
269338
) : tier.slotsLeft ? (
270339
<>
271-
<span>{tier.slotsLeft}</span> slot
272-
{tier.slotsLeft == 1 ? "" : "s"} remaining
340+
<span>{tier.slotsLeft}</span>
341+
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
273342
</>
274343
) : (
275344
<>Fully booked</>
@@ -322,8 +391,8 @@ const formatPrice = (price: number | string) => {
322391
<div class="text-xl">
323392
{tier.slotsLeft ? (
324393
<>
325-
<span>{tier.slotsLeft}</span> slot
326-
{tier.slotsLeft == 1 ? "" : "s"} remaining
394+
<span>{tier.slotsLeft}</span>
395+
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
327396
</>
328397
) : (
329398
<>Fully booked</>

src/content/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ const sponsors = defineCollection({
209209
schema: z.object({
210210
name: z.string(),
211211
url: z.string().url(),
212-
tier: z.string().nullable(),
212+
tier: z.string(),
213213
location: z.string().optional(),
214214
industry: z.string().optional(),
215215
description: z.string().optional(),

0 commit comments

Comments
 (0)