@@ -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</>
0 commit comments