diff --git a/src/components/SponsorLogo.astro b/src/components/SponsorLogo.astro index 4676722bc..b99b72961 100644 --- a/src/components/SponsorLogo.astro +++ b/src/components/SponsorLogo.astro @@ -20,7 +20,7 @@ const { } = sponsor.data; const logo = sponsorLogos[sponsor.id]; -const slug = tier==="Partners"? `/community-partners#sponsor-${sponsorId}`: tier==="Platinum" ? `/sponsor/${sponsorId}` : `/sponsors#sponsor-${sponsorId}` +const slug = tier==="Partners"? `/community-partners#sponsor-${sponsorId}`: tier==="Platinum" ? `/sponsor/${sponsorId}` : tier==="Media Partners" ? `/media-partners#sponsor-${sponsorId}` : tier==="Startups" ? `/startups#sponsor-${sponsorId}` : "" --- @@ -29,7 +29,7 @@ const slug = tier==="Partners"? `/community-partners#sponsor-${sponsorId}`: tier >
{ - website ? ( + website && slug ? ( diff --git a/src/components/sections/sponsors/sponsor-tier.astro b/src/components/sections/sponsors/sponsor-tier.astro index ffe4fa413..e9abc7216 100644 --- a/src/components/sections/sponsors/sponsor-tier.astro +++ b/src/components/sections/sponsors/sponsor-tier.astro @@ -30,8 +30,9 @@ const { tier, level = 2} = Astro.props; `level-${level}`, { "grid-cols-1 md:grid-cols-2 m-20 [&>*]:scale-110": level===0, - "grid-cols-1 md:grid-cols-2 lg:grid-cols-3 [&>*]:scale-80": level > 0 && level << 6, - "grid-cols-2 md:grid-cols-3 lg:grid-cols-4 [&>*]:scale-80" : level===6, + "grid-cols-1 md:grid-cols-2 lg:grid-cols-3 [&>*]:scale-90": level > 0 && level << 6, + "grid-cols-2 md:grid-cols-3 lg:grid-cols-4 [&>*]:scale-90" : level===6, + "grid-cols-2 md:grid-cols-3 lg:grid-cols-4 [&>*]:scale-85" : level>6, }, ]} > diff --git a/src/components/sections/sponsors/sponsors.astro b/src/components/sections/sponsors/sponsors.astro index 05750dca1..7a744bce3 100644 --- a/src/components/sections/sponsors/sponsors.astro +++ b/src/components/sections/sponsors/sponsors.astro @@ -14,11 +14,13 @@ const tiers = [ "Platinum X", "Gold", "Silver", + "Startups", "Bronze", "Patron", "Financial Aid", "Supporters", - "Partners" + "Partners", + "Media Partners" ] as const; const sponsors = await getCollection("sponsors"); diff --git a/src/content/sponsors/cultrepo/cultrepo.svg b/src/content/sponsors/cultrepo/cultrepo.svg new file mode 100644 index 000000000..071c9960a --- /dev/null +++ b/src/content/sponsors/cultrepo/cultrepo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/content/sponsors/cultrepo/index.md b/src/content/sponsors/cultrepo/index.md new file mode 100644 index 000000000..6ffc6d801 --- /dev/null +++ b/src/content/sponsors/cultrepo/index.md @@ -0,0 +1,11 @@ +--- +name: CultRepo +description: "" +url: https://www.youtube.com/@cultrepo +socials: + twitter: https://x.com/CultRepo + bluesky: https://bsky.app/profile/cultrepo.bsky.social + youtube: https://www.youtube.com/channel/UCsUalyRg43M8D60mtHe6YcA +tier: Media Partners +logo_padding: "0" +--- diff --git a/src/content/sponsors/gel/index.md b/src/content/sponsors/gel/index.md index 857e69898..cfa7bc4eb 100644 --- a/src/content/sponsors/gel/index.md +++ b/src/content/sponsors/gel/index.md @@ -15,10 +15,9 @@ socials: youtube: "https://www.youtube.com/@EdgeDB" tier: Platinum logo_padding: 5px -draft: true --- -## About Gel +# About Gel Gel is a scalable, integrated data platform on top of Postgres. Gel gives the relational model a fresh facelift, solves n+1, simplifies migrations, and diff --git a/src/content/sponsors/google-cloud/index.md b/src/content/sponsors/google-cloud/index.md index c3ba4dfae..96b7feef4 100644 --- a/src/content/sponsors/google-cloud/index.md +++ b/src/content/sponsors/google-cloud/index.md @@ -10,10 +10,9 @@ socials: tier: Gold logo_padding: 15px -draft: true --- -## About Google Cloud +# About Google Cloud The new way to cloud starts here: Build with generative AI, deploy apps fast, and analyze data in seconds—all with Google-grade security. diff --git a/src/content/sponsors/junior-guru/index.md b/src/content/sponsors/junior-guru/index.md new file mode 100644 index 000000000..e42f5fee1 --- /dev/null +++ b/src/content/sponsors/junior-guru/index.md @@ -0,0 +1,10 @@ +--- +name: Junior Guru +description: "" +url: https://junior.guru/ +socials: + youtube: https://www.youtube.com/@juniordotguru + +tier: Media Partners +logo_padding: 15px +--- diff --git a/src/content/sponsors/junior-guru/junior-guru.svg b/src/content/sponsors/junior-guru/junior-guru.svg new file mode 100644 index 000000000..8e4f90405 --- /dev/null +++ b/src/content/sponsors/junior-guru/junior-guru.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/content/sponsors/lwn-net/index.md b/src/content/sponsors/lwn-net/index.md new file mode 100644 index 000000000..c0fea204e --- /dev/null +++ b/src/content/sponsors/lwn-net/index.md @@ -0,0 +1,11 @@ +--- +name: LWN.net +description: "" +url: https://LWN.net +socials: + twitter: https://x.com/CultRepo + bluesky: https://bsky.app/profile/cultrepo.bsky.social + youtube: https://www.youtube.com/channel/UCsUalyRg43M8D60mtHe6YcA +tier: Media Partners +logo_padding: "0" +--- diff --git a/src/content/sponsors/lwn-net/lwn-net.png b/src/content/sponsors/lwn-net/lwn-net.png new file mode 100644 index 000000000..05e0edba8 Binary files /dev/null and b/src/content/sponsors/lwn-net/lwn-net.png differ diff --git a/src/content/sponsors/pydantic/index.md b/src/content/sponsors/pydantic/index.md index 8e20eeb78..5a12cb162 100644 --- a/src/content/sponsors/pydantic/index.md +++ b/src/content/sponsors/pydantic/index.md @@ -11,12 +11,11 @@ socials: bluesky: https://bsky.app/profile/pydantic.dev mastodon: https://fosstodon.org/@pydantic github: https://github.com/pydantic/pydantic - +logo_padding: "0" tier: Gold -draft: true --- -## About Pydantic +# About Pydantic Pydantic is built on the pillars of open source: transparency, collaboration and excellence. Our origins inform every product we craft. Whether it’s a community diff --git a/src/content/sponsors/pyvec/index.md b/src/content/sponsors/pyvec/index.md index d23bfb5e7..46b42b8af 100644 --- a/src/content/sponsors/pyvec/index.md +++ b/src/content/sponsors/pyvec/index.md @@ -15,5 +15,5 @@ socials: mastodon: bluesky: tier: Partners -logo_padding: 30px 20px +logo_padding: 35px 20px --- diff --git a/src/content/sponsors/startup/index.md b/src/content/sponsors/startup/index.md new file mode 100644 index 000000000..22a06a711 --- /dev/null +++ b/src/content/sponsors/startup/index.md @@ -0,0 +1,10 @@ +--- +name: "Startup" +url: "https://ep2025.europython.eu/" +description: "" +socials: + youtube: "https://www.youtube.com/c/europythonconference" +tier: Startups +logo_padding: 5px +draft: true +--- diff --git a/src/content/sponsors/startup/logo.svg b/src/content/sponsors/startup/logo.svg new file mode 100644 index 000000000..184ca200d --- /dev/null +++ b/src/content/sponsors/startup/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/pages/media-partners.astro b/src/pages/media-partners.astro new file mode 100644 index 000000000..003a3c3b8 --- /dev/null +++ b/src/pages/media-partners.astro @@ -0,0 +1,36 @@ +--- +import { getCollection } from "astro:content"; +import Layout from "@layouts/SectionLayout.astro"; +import SponsorCard from "@components/SponsorCard.astro"; +import Headline from "@ui/Headline.astro"; +import Button from "@ui/Button.astro"; + +const sponsors = (await getCollection("sponsors", ({ data }) => { + const isProd = import.meta.env.MODE === "production"; + const notDraft = !isProd || data.draft !== true; + const isPartner = data.tier === "Media Partners"; + return notDraft && isPartner; +})).sort((a, b) => a.id.localeCompare(b.id)); + +--- + + + + + +

+ EuroPython is a community-driven conference, and we wouldn’t be able to amplify our message and reach as many people without the support of our amazing Media Partners. Learn more about them below (listed in alphabetical order). +

+ {sponsors.length > 0 && ( +
+ {sponsors.map((sponsor) => ( + + ))} +
+ )} +

+ Are you part of a media outlet or platform that shares Python or tech-related content? Interested in partnering with EuroPython? We’d love to hear from you — reach out to us at ! +

diff --git a/src/pages/sponsors.astro b/src/pages/sponsors.astro index 49b1ffbfd..a010022d6 100644 --- a/src/pages/sponsors.astro +++ b/src/pages/sponsors.astro @@ -7,7 +7,11 @@ import Button from "@ui/Button.astro"; import { slugify } from "@utils/content"; -const sponsors = await getCollection("sponsors"); +const sponsors = (await getCollection("sponsors", ({ data }) => { + const isProd = import.meta.env.MODE === "production"; + const notDraft = !isProd || data.draft !== true; + return notDraft ; +})).sort((a, b) => a.id.localeCompare(b.id)); const tiers = [ diff --git a/src/pages/startups.astro b/src/pages/startups.astro new file mode 100644 index 000000000..cb933f421 --- /dev/null +++ b/src/pages/startups.astro @@ -0,0 +1,38 @@ +--- +import { getCollection } from "astro:content"; +import Layout from "@layouts/SectionLayout.astro"; +import SponsorCard from "@components/SponsorCard.astro"; +import Headline from "@ui/Headline.astro"; +import Button from "@ui/Button.astro"; + + +const sponsors = (await getCollection("sponsors", ({ data }) => { + const isProd = import.meta.env.MODE === "production"; + const notDraft = !isProd || data.draft !== true; + const isPartner = data.tier === "Startups"; + return notDraft && isPartner; +})).sort((a, b) => a.id.localeCompare(b.id)); + +--- + + + + + {sponsors.length > 0 && +

+ EuroPython is a community-driven conference, and we wouldn’t be able to empower early-stage innovation and support emerging talent in the Python ecosystem without the generous support of our Startups tier sponsors. Learn more about them below (listed in alphabetical order). +

+ } + {sponsors.length > 0 && ( +
+ {sponsors.map((sponsor) => ( + + ))} +
+ )} +

+ Are you a startup working with Python or building something exciting in the tech space? Looking to grow your visibility and connect with a vibrant developer community? We’d love to hear from you — reach out to us at ! +