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
81 changes: 75 additions & 6 deletions src/components/sponsor-tiers/sponsor-tiers.astro
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,18 @@ const tiers: SponsorTierProps[] = [
"Welcome post on EuroPython social media",
],
},
{
title: "Startup",
price: 3_000,
slotsLeft: "5",
features: [
"<strong>Exhibition Space for 3 days</strong>",
"<strong>2 conference tickets (€1000 value)</strong>",
"1 remote ticket (€150 value)",
"Logo on website and signage",
"Welcome post on EuroPython social media",
],
},
{
title: "Bronze",
price: 2_000,
Expand Down Expand Up @@ -153,6 +165,7 @@ const getRibbonClass = (title: string) => {
Platinum: "text-sponsor-platinum",
Gold: "text-sponsor-gold",
Silver: "text-sponsor-silver",
Startup: "text-sponsor-startup",
Bronze: "text-sponsor-bronze",
Patron: "text-sponsor-patron",
};
Expand Down Expand Up @@ -212,8 +225,64 @@ const formatPrice = (price: number | string) => {
<div class="text-xl mt-4">
{tier.slotsLeft ? (
<>
<span>{tier.slotsLeft}</span> slot
{tier.slotsLeft == 1 ? "" : "s"} remaining
<span>{tier.slotsLeft}</span>
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
</>
) : (
<>Fully booked</>
)}
</div>
</div>

<p class="font-bold text-base">This tier includes:</p>
<ul class="text-base list-none pl-0">
{tier.features.map((feature) => (
<li class="flex items-start">
<span class="flex-shrink-0 w-6">✔️</span>
<span set:html={feature} />
</li>
))}
</ul>
<div class="absolute bottom-4 right-4">
<Button url={signupLink}>Sign Up Now!</Button>
</div>
</div>
))
}
</div>


<div class="text-center mb-8 mt-16">
<h2 class="text-3xl font-bold">Startups</h2>
<p class="text-xl mt-2 mb-12">
For early-stage companies ready to connect with the community, boost visibility, and make a strong first impression.
</p>
</div>
<div class="grid grid-cols-1 sm:grid-cols-1 gap-10 mx-96">
{
tiers
.filter((tier) => tier.title === "Startup")
.sort((a, b) => {
const order: { [key: string]: number } = { Startup: 1 };
return order[a.title] - order[b.title];
})

.map((tier) => (
<div class="bg-white text-black rounded-2xl p-6 pb-20 relative not-prose z-0">
<div class="h-[160px]">
<Ribbon
className={`absolute -right-6 -top-8 ${getRibbonClass(tier.title)}`}
style={{ zIndex: "-1", top: "-55px" }}
/>
<Headline as="h3" title={tier.title} />
<div class="font-bold text-3xl">{formatPrice(tier.price)}</div>
<div class="text-xl">
{tier.slotsLeft === "Exclusive" ? (
<>Exclusive</>
) : tier.slotsLeft ? (
<>
<span>{tier.slotsLeft}</span>
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
</>
) : (
<>Fully booked</>
Expand Down Expand Up @@ -268,8 +337,8 @@ const formatPrice = (price: number | string) => {
<>Exclusive</>
) : tier.slotsLeft ? (
<>
<span>{tier.slotsLeft}</span> slot
{tier.slotsLeft == 1 ? "" : "s"} remaining
<span>{tier.slotsLeft}</span>
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
</>
) : (
<>Fully booked</>
Expand Down Expand Up @@ -322,8 +391,8 @@ const formatPrice = (price: number | string) => {
<div class="text-xl">
{tier.slotsLeft ? (
<>
<span>{tier.slotsLeft}</span> slot
{tier.slotsLeft == 1 ? "" : "s"} remaining
<span>{tier.slotsLeft}</span>
{tier.slotsLeft == 1 ? "slot" : "slots"} availalbe
</>
) : (
<>Fully booked</>
Expand Down
1 change: 1 addition & 0 deletions src/styles/tailwind.css
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
--color-sponsor-platinum: #6b6c6e;
--color-sponsor-gold: #f5c251;
--color-sponsor-silver: #c0c0c0;
--color-sponsor-startup: #8572c6;
--color-sponsor-bronze: #6e6151;
--color-sponsor-patron: #a11217;

Expand Down