diff --git a/src/components/header/header-actions.astro b/src/components/header/header-actions.astro index 2786369e8..955622cdf 100644 --- a/src/components/header/header-actions.astro +++ b/src/components/header/header-actions.astro @@ -21,8 +21,8 @@ const IS_LIVE = false; - - Community vote + + Tickets {IS_LIVE && ( diff --git a/src/components/hero-section/title-with-cta.astro b/src/components/hero-section/title-with-cta.astro new file mode 100644 index 000000000..fa17c2697 --- /dev/null +++ b/src/components/hero-section/title-with-cta.astro @@ -0,0 +1,26 @@ +--- +import ButtonLink from "../button-link/button-link.astro"; +import { Title } from "../typography/title"; + +interface Props { + title: string; + subtitle: string; + buttonText?: string; + buttonUrl?: string; +} + +const { title, subtitle, buttonText, buttonUrl } = Astro.props; +--- + +
+ {title} +

{subtitle}

+ + {buttonText && buttonUrl && ( +
+ {buttonText} +
+ )} + + +
diff --git a/src/components/note/note.tsx b/src/components/note/note.tsx index 1b9467c72..e9790626f 100644 --- a/src/components/note/note.tsx +++ b/src/components/note/note.tsx @@ -1,5 +1,7 @@ -export const Note = ({ children }: { children: string }) => { +export const Note = ({ children }: { children: React.ReactNode }) => { return ( -

{children}

+

+ {children} +

); }; diff --git a/src/components/ticket-tiers/ticket-tiers.astro b/src/components/ticket-tiers/ticket-tiers.astro new file mode 100644 index 000000000..1ae927285 --- /dev/null +++ b/src/components/ticket-tiers/ticket-tiers.astro @@ -0,0 +1,152 @@ +--- +import { Title } from "../typography/title"; + +interface Props { + ticketShopLink: string; +} + +interface TicketTierProps { + title: string; + educationPrice: number | string; + personalPrice: number | string; + businessPrice: number | string; + lateBusinessPrice?: number | string; + latePersonalPrice?: number | string; + features: string[]; +} + +const tiers: TicketTierProps[] = [ + { + title: "Tutorial Only", + educationPrice: 100, + personalPrice: 200, + businessPrice: 400, + features: [ + { text: "Access to two full days of workshops, summits, and tutorials across six parallel tracks (14-15 July)" }, + { text: "Does NOT include access to three days of talks across six parallel tracks with 130+ talks (16-18 July)", icon: "❌" }, + { text: "Does NOT include access to open spaces throughout the three conference days", icon: "❌" }, + { text: "Does NOT include access to sponsor booths with opportunities to connect with sponsoring companies", icon: "❌" }, + { text: "Access to Sprint Weekend (19-20 July)" }, + { text: "Light lunch provided each day" }, + { text: "Break refreshments (coffee, tea, water, and more)" }, + { text: "Access to in-person networking opportunities during the tutorial days" }, + { text: "Access to free childcare if needed" }, + { text: "Conference T-shirt included" }, + { text: "Limited to only 300, due to tutorial capacity", icon: "⚠️" }, + ], + }, + { + title: "Conference Only", + educationPrice: 135, + personalPrice: 300, + businessPrice: 500, + latePersonalPrice: 450, + lateBusinessPrice: 750, + features: [ + { text: "Access to two full days of workshops, summits, and tutorials across six parallel tracks (14-15 July)", icon: "❌" }, + { text: "Access to three days of talks across six parallel tracks with 130+ talks (16-18 July)" }, + { text: "Access to open spaces throughout the three conference days" }, + { text: "Access to Sprint Weekend (19-20 July)" }, + { text: "Access to sponsor booths with opportunities to connect with sponsoring companies" }, + { text: "Access to Sprint Weekend (19-20 July)" }, + { text: "Limited access to specific sponsored workshops" }, + { text: "Light lunch provided each day" }, + { text: "Break refreshments (coffee, tea, water, and more)" }, + { text: "Access to in-person networking opportunities during the main conference days" }, + { text: "Access to free childcare if needed" }, + { text: "Conference T-shirt included" }, + ], + }, + { + title: "Combined", + educationPrice: 210, + personalPrice: 450, + businessPrice: 800, + latePersonalPrice: 675, + lateBusinessPrice: 1200, + features: [ + { text: "Access to two full days of workshops, summits, and tutorials across six parallel tracks (14-15 July)" }, + { text: "Access to three days of talks across six parallel tracks with 130+ talks (16-18 July)" }, + { text: "Access to open spaces throughout the three conference days" }, + { text: "Access to sponsor booths with opportunities to connect with sponsoring companies" }, + { text: "Access to Sprint Weekend (19-20 July)" }, + { text: "Limited access to specific sponsored workshops" }, + { text: "Light lunch provided each day" }, + { text: "Break refreshments (coffee, tea, water, and more)" }, + { text: "Access to in-person networking opportunities throughout the entire conference" }, + { text: "Access to free childcare if needed" }, + { text: "Conference T-shirt included" }, + { text: "Limited to only 300, due to tutorial capacity", icon: "⚠️" }, + ], + }, +]; + + +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); +}; +--- + +
+
+ {tiers.map((tier) => ( +
+
+ + {tier.title} + + +
+
Education: {formatPrice(tier.educationPrice)}
+
Personal: {formatPrice(tier.personalPrice)} + {tier.latePersonalPrice && ( + (Late: {formatPrice(tier.latePersonalPrice)}) + )} +
+
Business: {formatPrice(tier.businessPrice)} (+ VAT) + {tier.lateBusinessPrice && ( + (Late: {formatPrice(tier.lateBusinessPrice)} + VAT) + )} +
+
+
+ +

This ticket includes:

+
    + {tier.features.map((feature) => ( +
  • + + {feature.icon ? feature.icon : "✔️"} + + +
  • + ))} +
+
+ ))} +
+ + diff --git a/src/content/pages/tickets.mdx b/src/content/pages/tickets.mdx new file mode 100644 index 000000000..44adecf16 --- /dev/null +++ b/src/content/pages/tickets.mdx @@ -0,0 +1,147 @@ +--- +title: Sponsor +subtitle: + Sponsoring EuroPython guarantees you highly targeted visibility + and the opportunity to present yourself and your company to one + of the largest and most diverse Python communities in Europe and beyond. +--- + +import TicketTiers from "../../components/ticket-tiers/ticket-tiers.astro"; + + +# EuroPython 2025 Tickets +
+Discover the latest Python trends, learn from 180+ expert speakers, network with fellow developers, enjoy social events, and explore open spaces to spark new ideas! Organized by the community for the community. +
+ +
+Registration Starting Soon! +
+ + +## Where and When? +🏛️ Prague Congress Centre (PCC), Czech Republic + +
+

A week of all things Python:

+
    +
  • + 🗓️ Monday–Tuesday, 14–15 July: Workshops & Tutorials +
  • +
  • + 🗓️ Wednesday–Friday, 16–18 July: Talks & Open-Spaces +
  • +
  • + 🗓️ Saturday–Sunday, 19–20 July: Sprints Weekend +
  • +
+
+ + +## Which Ticket Tier Should I Buy? +Each ticket type is available in three pricing tiers. We trust you to choose the option that best fits your situation. + +As a non-profit, every ticket you buy goes back into the Python community. Whether by our financial aid programme, helping those in need of support, like students, attend the conference, or supporting Python communities across Europe through our EPS Grants programme. + + + + + If your company is covering your ticket or you use Python professionally, this is the right tier for you. By choosing this option, you help us keep the conference accessible. Thank you! + + + Are you a Python enthusiast, hobbyist, or freelancer? This ticket is for you! It's priced for individuals paying their own way, so you can enjoy the conference at a fair and affordable rate. + + + If you're a student or an educator working in schools or universities, this ticket is for you. We offer subsidized pricing so students and educators can join in and be part of the conference! + + + +If you need a VAT invoice with your company's name, please purchase a Business Ticket. Personal Tickets do not include a company name. To assist the registration staff, your conference badge will display the ticket tier and type. + + +## Ticket Prices +Regular tickets are available until June 27, 2025—late-bird rates apply after. + +Combined tickets are **limited to 300** due to tutorial capacity! + + + + +### Volume Discounts +Is your company attending the conference as a team? We offer the following volume discounts: + +
+
    +
  • + 💰 Buy 5 business tickets of any type, pay for only 4 +
  • +
  • + 💰 Buy 10 business tickets of any type, pay for only 8 +
  • +
  • + 💰 Buy 15 business tickets of any type, pay for only 11 +
  • +
+
+ +Volume discounts apply only to Business Tickets. The discount is automatically applied when you add enough tickets to your basket. + If purchasing different types of Business Tickets (e.g., Conference Only & Combined), the discount will apply to the lower-priced ticket. + +#### Sponsorship +If you're purchasing multiple tickets, please consider sponsoring the event! + +
+ Learn About Sponsorship +
+ + +### Additional Information +
+
+
Special Grants
+

+ Are you a CPython Core Developer or an EPS Fellow? You're eligible for a free combined ticket! +

+

+ Please check out our grant page for details on how to apply for the + GvR grant or + EuroPython Fellow grant. +

+
+ +
+
Refund Policy
+

+ We know plans can change! If you can't attend, you can request a full refund via your order confirmation email until June 8, 2025. +

+

+ After that, email us at refunds@europython.eu if you need a refund due to special circumstances. +

+
+
+ +

+ +
+
Important Notes
+
    +
  • + ☕ Every ticket includes break refreshments and a light lunch for each day. +
  • +
  • + 👶 Free Childcare is available at the conference for those who need it. Please make sure to register a ticket for yourself and select how many children will require childcare at checkout. +
  • +
  • + ⏰ We encourage you to book your ticket early. This makes it easier for us to plan for the event and arrange important things like catering, badge printing, and other logistics. +
  • +
+
+ + +### Questions +If you have any questions, check our FAQ first. Still need help? Our wonderful volunteer team at the EuroPython Helpdesk is happy to assist—don't hesitate to reach out! + + +
+Registration Starting Soon! +