diff --git a/src/components/benefits-list/benefit-item.astro b/src/components/benefits-list/benefit-item.astro index 1e96bb018..44991920e 100644 --- a/src/components/benefits-list/benefit-item.astro +++ b/src/components/benefits-list/benefit-item.astro @@ -23,11 +23,12 @@ const Icon = { }[icon]; --- -
  • - -
    -
    {title}
    -

    +
    +
    + +
    {title}
    -
  • +
    + +
    + diff --git a/src/components/benefits-list/benefits-list.astro b/src/components/benefits-list/benefits-list.astro index 87d0a7282..b312fe0a7 100644 --- a/src/components/benefits-list/benefits-list.astro +++ b/src/components/benefits-list/benefits-list.astro @@ -1 +1 @@ - +
    diff --git a/src/components/highlight-list/highlight-card.astro b/src/components/highlight-list/highlight-card.astro new file mode 100644 index 000000000..a1870fb04 --- /dev/null +++ b/src/components/highlight-list/highlight-card.astro @@ -0,0 +1,5 @@ +
    + +
    diff --git a/src/components/highlight-list/highlight-item.astro b/src/components/highlight-list/highlight-item.astro new file mode 100644 index 000000000..4d20d596e --- /dev/null +++ b/src/components/highlight-list/highlight-item.astro @@ -0,0 +1,4 @@ +
  • + 📌 + +
  • diff --git a/src/components/sponsor-tiers/index.tsx b/src/components/sponsor-tiers/index.tsx deleted file mode 100644 index b4f8bd103..000000000 --- a/src/components/sponsor-tiers/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { SponsorTiers } from "./sponsor-tiers"; diff --git a/src/components/sponsor-tiers/ribbon.astro b/src/components/sponsor-tiers/ribbon.astro new file mode 100644 index 000000000..1b9910d59 --- /dev/null +++ b/src/components/sponsor-tiers/ribbon.astro @@ -0,0 +1,53 @@ +--- +interface Props { + className?: string; + style?: Record; +} + +const { className, style } = Astro.props; +--- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/sponsor-tiers/sponsor-tiers.astro b/src/components/sponsor-tiers/sponsor-tiers.astro new file mode 100644 index 000000000..ee17ae474 --- /dev/null +++ b/src/components/sponsor-tiers/sponsor-tiers.astro @@ -0,0 +1,343 @@ +--- +import { Title } from "../typography/title"; +import Ribbon from "./ribbon.astro"; +import ButtonLink from "../button-link/button-link.astro" + +interface Props { + signupLink: string; +} + +const { signupLink = "#" } = Astro.props; + +interface SponsorTierProps { + title: string; + slotsLeft?: number | null | string; + price: number | string; + features: string[]; +} + +const tiers: SponsorTierProps[] = [ + { + title: "Keystone", + slotsLeft: "Exclusive", + price: "Custom Pricing", + features: [ + `Everything in the Diamond tier, plus white glove bespoke customisation tailored specifically to your needs.

    `, + + `We’re happy to walk you through every step to create a sponsorship experience that’s uniquely yours, with full support to bring your vision to life.`, + ], + }, + { + title: "Diamond", + slotsLeft: "2", + price: 30_000, +features: [ + "Extra large booth in exhibit hall", + "10 conference tickets (€5000 value)", + "10 remote tickets (€1500 value)", + "10 conference vouchers with 30% discount (€1500 value)", + "5 min slot during the opening session", + "5 min lightning talk slot", + "5 min slot during the closing session", + "One-time email to all conference participants", + "1 technical case study posted on dev.to and the EuroPython blog ", + "Video ad(s) (silent) on venue digital signage", + "1 technical talk slot (30 min)", + "Unlimited job postings on website", + "1 job posting on EuroPython blog", + "Dedicated sponsor page on website", + "Sponsor spotlight in 6 newsletters", + "Custom Discord channel", + "Video ad(s) on livestreams", + "Recruiting Session/Talent Track access", + "Media corner access", + "Published interview on YouTube channel", + "1 custom YouTube short", + "Logo on lecterns, livestreams, recordings, banners, website, signage", + "1 repost on EuroPython socials (35k total reach)", + "Welcome post on EuroPython social media", + ], + }, + { + title: "Platinum", + slotsLeft: "4", + price: 18_000, + features: [ + "Large booth in exhibit hall", + "6 conference tickets (€3000 value)", + "6 remote tickets (€900 value)", + "6 conference vouchers with 30% discount (€900 value)", + "Video ad(s) (silent) on venue digital signage", + "1 technical talk slot (30 min)", + "Unlimited job postings on website", + "1 job posting on EuroPython blog", + "Dedicated sponsor page on website", + "Sponsor spotlight in 6 newsletters", + "Custom Discord channel", + "Video ad(s) on livestreams", + "Recruiting Session/Talent Track access", + "Media corner access", + "Published interview on YouTube channel", + "1 custom YouTube short", + "Logo on livestreams, recordings, banners, website, signage", + "1 repost on EuroPython socials (35k total reach)", + "Welcome post on EuroPython social media", + ], + }, + + { + title: "Gold", + price: 9_500, + slotsLeft: "10", + features: [ + "Booth in exhibit hall", + "3 conference tickets (€1500 value)", + "3 remote tickets (€450 value)", + "Video ad(s) (silent) on venue digital signage", + "1 job posting on EuroPython blog", + "5 job postings on website", + "Custom Discord channel", + "Video ad(s) on livestreams", + "Recruiting Session/Talent Track access", + "Logo on recordings, banners, website, signage", + "1 repost on EuroPython socials (35k total reach)", + "Welcome post on EuroPython social media", + ], + }, + + { + title: "Silver", + price: 7_000, + slotsLeft: "10", + features: [ + "Small booth in exhibit hall", + "2 conference tickets (€1000 value)", + "2 remote tickets (€300 value)", + "Video ad(s) (silent) on venue digital signage", + "1 job posting on EuroPython blog", + "2 job postings on website", + "Logo on website and signage", + "Welcome post on EuroPython social media", + ], + }, + { + title: "Bronze", + price: 2_000, + slotsLeft: "unlimited", + features: [ + "1 conference ticket (€500 value)", + "1 remote ticket (€150 value)", + "Logo on website and signage", + "Welcome post on EuroPython social media", + ], + }, + { + title: "Patron", + price: 1_000, + slotsLeft: "unlimited", + features: [ + "1 remote ticket (€150 value)", + "Logo on website and signage", + "Welcome post on EuroPython social media", + ], }, +]; + +const getRibbonClass = (title: string) => { + const classes = { + Keystone: "text-sponsor-keystone", + Diamond: "text-sponsor-diamond", + Platinum: "text-sponsor-platinum", + Gold: "text-sponsor-gold", + Silver: "text-sponsor-silver", + Bronze: "text-sponsor-bronze", + Patron: "text-sponsor-patron", + }; + return classes[title as keyof typeof classes] || ""; +}; + +const formatPrice = (price: number | string) => { + if (typeof price === "string") return price; + return new Intl.NumberFormat("en", { + style: "currency", + currency: "EUR", + maximumFractionDigits: 0, + minimumFractionDigits: 0, + }).format(price); +}; +--- + + + + + diff --git a/src/components/sponsor-tiers/sponsor-tiers.tsx b/src/components/sponsor-tiers/sponsor-tiers.tsx deleted file mode 100644 index 7c898bc78..000000000 --- a/src/components/sponsor-tiers/sponsor-tiers.tsx +++ /dev/null @@ -1,223 +0,0 @@ -import clsx from "clsx"; -import { Title } from "../typography/title"; - -import type { SVGProps } from "react"; - -const Ribbon = (props: SVGProps) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -const SponsorTier = ({ - title, - totalSlots, - price, - features, -}: { - title: string; - totalSlots?: number | null | string; - price: number | string; - features: string[]; -}) => { - const formattedPrice = - typeof price === "number" - ? new Intl.NumberFormat("en", { - style: "currency", - currency: "EUR", - maximumFractionDigits: 0, - minimumFractionDigits: 0, - }).format(price) - : price; - - return ( -
    -
    - - - - {title} - - -
    {formattedPrice}
    -
    - {totalSlots ? ( - <> - {totalSlots} slot{totalSlots == 1 ? "" : "s"}{" "} - available - - ) : ( - <>No slot available - )} -
    -
    - -

    This tier includes:

    -
      - {features.map((feature) => ( -
    • ✔️ {feature}
    • - ))} -
    -
    - ); -}; - -export const SponsorTiers = () => { - return ( -
    - - - - - - - - - - - - - - - -
    - ); -}; diff --git a/src/content/deadlines/02_voting.md b/src/content/deadlines/00_voting.md similarity index 100% rename from src/content/deadlines/02_voting.md rename to src/content/deadlines/00_voting.md diff --git a/src/content/deadlines/02_sponsorship.md b/src/content/deadlines/02_sponsorship.md new file mode 100644 index 000000000..a378ba40f --- /dev/null +++ b/src/content/deadlines/02_sponsorship.md @@ -0,0 +1,10 @@ +--- +title: Call for Sponsors +subtitle: Sign Up Now + +url: /sponsorship/sponsor/ +image: ep-sponsors.png +--- + +Gain visibility and connect with **1,500 Pythonistas** at the world’s oldest +volunteer-led Python conference. Become a sponsor! diff --git a/src/content/deadlines/ep-sponsors.png b/src/content/deadlines/ep-sponsors.png new file mode 100755 index 000000000..2c1844e31 Binary files /dev/null and b/src/content/deadlines/ep-sponsors.png differ diff --git a/src/content/pages/faq.mdx b/src/content/pages/faq.mdx index a0ed339ae..8d9dd1c26 100644 --- a/src/content/pages/faq.mdx +++ b/src/content/pages/faq.mdx @@ -18,7 +18,7 @@ subtitle: Frequently Asked Questions about EuroPython
  • **6 February 2025:** [Community Voting](/programme/voting/) starts
  • **17 February 2025:** Community Voting and Review ends
  • **8 March 2025** [Financial Aid](/finaid/) Programme starts
  • - +
  • **11 March 2025:** [Sponsorship](/sponsor) Sign-up Starts