diff --git a/public/EuroPython2025_logo_small.png b/public/EuroPython2025_logo_small.png new file mode 100644 index 000000000..9c47e035c Binary files /dev/null and b/public/EuroPython2025_logo_small.png differ diff --git a/public/eps-logo.svg b/public/eps-logo.svg new file mode 100644 index 000000000..0460c2c71 --- /dev/null +++ b/public/eps-logo.svg @@ -0,0 +1 @@ + diff --git a/src/components/Footer.astro b/src/components/Footer.astro index f6819732a..9a0f7c488 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -1,103 +1,127 @@ --- -import links from "../data/links.json"; -import { EPSLogo } from "./logo/eps-logo"; +import SocialLinks from "@components/SocialLinks.astro"; +import links from "@data/links.json"; +import EPSLogo from "../../public/eps-logo.svg"; const buildTimestamp = __TIMESTAMP__; const gitVersion = __GIT_VERSION__; --- -
-
- -
+
+ -
-
- +
+
+
+
+

+ Excited about our mission? Want to collaborate or contribute? Let's + connect! We're open to partnership opportunities and would love to + hear your ideas. + helpdesk@europython.eu +

+
+
+
+ +
+
+
+ EuroPython Society (EPS) +
Ramnebacken 45 +
+ 424 38 Agnesberg +
+ Sweden +
+
+
-
-
- EuroPython Society (EPS) -
Ramnebacken 45 -
- 424 38 Agnesberg -
- Sweden -
+
-

- - europython-society.org - - - blog.europython.eu - -
- - fosstodon.org/@europython - -
- - linkedin.com/company/europython - -
- - bsky.app/profile/europython.eu - -
- - github.com/europython - -
- - twitter.com/europython - -

-

- version: {gitVersion} @ {buildTimestamp} -

+
+
+ { + links.terms.map((item) => ( + + {item.name} + {item.path.startsWith("http") && ( + + )} + + )) + }
+ + { + links && links["socials"] && ( + + ) + }
- +
+ +

+ version: {gitVersion} @ {buildTimestamp} +

+
+ + diff --git a/src/components/Header.astro b/src/components/Header.astro index e8cf5d5f8..5d22d57b1 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -1,5 +1,5 @@ --- -import { NavItems } from "@components/nav-items"; +import NavItems from "@components/NavItems.astro"; import HeaderActions from "@components/header/header-actions.astro"; import HeaderLogo from "@components/header/header-logo.astro"; import Search from "@components/Search.astro"; @@ -7,52 +7,66 @@ import Search from "@components/Search.astro"; import links from "../data/links.json"; --- -
- + -
+ + diff --git a/src/components/NavItems.astro b/src/components/NavItems.astro new file mode 100644 index 000000000..a77578cc3 --- /dev/null +++ b/src/components/NavItems.astro @@ -0,0 +1,196 @@ +--- +import Icon from "@ui/Icon.astro"; +import clsx from "clsx"; + +type Item = { + name: string; + path?: string; + items?: Item[]; +}; + +interface Props { + items: Item[]; + inverted?: boolean; + level?: number; +} + +const { items, inverted = false, level = 1 } = Astro.props; +--- + +
    1 ? "shadow-lg" : "" + )} + role={level === 1 ? "menubar" : "menu"} + aria-label={level === 1 ? "Main navigation" : level === 2 ? "Submenu" : "Sub-submenu"} +> + {items.map((item) => ( +
  • + {!item.items ? ( + + {item.name} + {item.path?.startsWith("http") && ( + + )} + + ) : ( + + )} + + {item.items && ( +
    + {level === 1 && ( + + )} + + {level === 2 && ( + + )} +
    + )} +
  • + ))} +
+ + + + diff --git a/src/components/SocialLinks.astro b/src/components/SocialLinks.astro new file mode 100644 index 000000000..1a87770eb --- /dev/null +++ b/src/components/SocialLinks.astro @@ -0,0 +1,49 @@ +--- +import Icon from "@ui/Icon.astro"; + +const { + class: className, + socials, + variant = "color", +} = Astro.props; +const socialMap = { + website: { icon: "globe", label: "Website", color: "#0077b5" }, + blog: { icon: "rss", label: "Blog", color: "" }, + linkedin: { icon: "linkedin", label: "LinkedIn", color: "#0a66c2" }, + github: { icon: "github", label: "GitHub", color: "#333333" }, + mastodon: { icon: "mastodon", label: "Mastodon", color: "#6364ff" }, + bluesky: { icon: "bluesky", label: "Bluesky", color: "#0085ff" }, + twitter: { icon: "x-twitter", label: "Twitter", color: "#1da1f2" }, + instagram: { icon: "instagram", label: "Instagram", color: "#e4405f" }, + discord: { icon: "discord", label: "Discord", color: "#5865f2" }, + facebook: { icon: "facebook", label: "Facebook", color: "#1877f2" }, + youtube: { icon: "youtube", label: "YouTube", color: "#ff0000" }, +}; +--- + + diff --git a/src/components/SponsorCard.astro b/src/components/SponsorCard.astro index 07ef4065d..38e1f84fc 100644 --- a/src/components/SponsorCard.astro +++ b/src/components/SponsorCard.astro @@ -3,6 +3,7 @@ import { type CollectionEntry, getEntry } from "astro:content"; import { Image } from "astro:assets"; import { sponsorLogos } from "@data/sponsorLogos"; import Icon from "@ui/Icon.astro"; +import SocialLinks from "@components/SocialLinks.astro"; const { sponsor: sponsorId, showJobs=false } = Astro.props; const sponsor = await getEntry("sponsors", sponsorId); @@ -38,21 +39,8 @@ for (const path in jobFiles) { } const jobs: CollectionEntry<"jobs">[] = sponsorsJobsMap[sponsor.id]; - const isSponsorPage = Astro.url.pathname == `/sponsor/${sponsor.id}`; - const logo = sponsorLogos[sponsor.id]; - -const socialLinks = [ - { key: "linkedin", icon: "linkedin-in", label: "LinkedIn Profile" }, - { key: "twitter", icon: "twitter", label: "Twitter Profile" }, - { key: "discord", icon: "discord", label: "Discord Profile" }, - { key: "mastodon", icon: "mastodon", label: "Mastodon Profile" }, - { key: "bluesky", icon: "bluesky", label: "Bluesky Profile" }, - { key: "facebook", icon: "facebook-f", label: "Facebook Profile" }, - { key: "github", icon: "github", label: "GitHub Profile" }, - { key: "instagram", icon: "instagram", label: "Instagram Profile" }, -]; --- + }
) @@ -185,63 +120,6 @@ const socialLinks = [
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; diff --git a/src/components/sections/prague.astro b/src/components/sections/prague.astro index bc0bac0ea..e58f1f5c7 100644 --- a/src/components/sections/prague.astro +++ b/src/components/sections/prague.astro @@ -10,7 +10,7 @@ import Section from "@ui/Section.astro"
-
+
-
diff --git a/src/components/ui/Button.astro b/src/components/ui/Button.astro index 44081f67c..270f1b99e 100644 --- a/src/components/ui/Button.astro +++ b/src/components/ui/Button.astro @@ -11,6 +11,7 @@ const { outline = false, disabled = false, clear = false, + custom = false, isExternal, icon, iconSvg = false, @@ -40,7 +41,7 @@ const slotContent = await Astro.slots.render('default'); href={disabled ? undefined : url} title={title} aria-label={title ? title : slotContent} - class={`${baseClasses} + class={custom ? `${className}`: `${baseClasses} ${clear ? clearClasses : outline ? outlineClasses : secondary ? secondaryClasses : primaryClasses} ${disabled ? disabledClasses : ""} ${className}`} diff --git a/src/components/ui/Headline.astro b/src/components/ui/Headline.astro index 4fa7131b6..5af5ee7cf 100644 --- a/src/components/ui/Headline.astro +++ b/src/components/ui/Headline.astro @@ -24,7 +24,7 @@ const isCenter = center ? "text-center" : ""; h4, h5, h6 { - font-weight: bold; + font-weight: 500; font-family: var(--font-display); line-height: 1.25; @@ -84,4 +84,8 @@ const isCenter = center ? "text-center" : ""; --min-fs: 1; --max-fs: 1.5; } + + a:hover { + color:var(--color-primary-hover); + } diff --git a/src/content/config.ts b/src/content/config.ts index a43d00f8d..9e9b3dee4 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -203,11 +203,14 @@ const sponsors = defineCollection({ socials: z .object({ linkedin: z.string().url().optional().nullable(), - twitter: z.string().url().optional().nullable(), github: z.string().url().optional().nullable(), - discord: z.string().url().optional().nullable(), mastodon: z.string().url().optional().nullable(), bluesky: z.string().url().optional().nullable(), + twitter: z.string().url().optional().nullable(), + instagram: z.string().url().optional().nullable(), + discord: z.string().url().optional().nullable(), + facebook: z.string().url().optional().nullable(), + youtube: z.string().url().optional().nullable(), }) .optional(), logo_padding: z.string().optional(), diff --git a/src/content/pages/childcare.mdx b/src/content/pages/childcare.mdx index c5d9513b7..17bb527b4 100644 --- a/src/content/pages/childcare.mdx +++ b/src/content/pages/childcare.mdx @@ -8,7 +8,7 @@ import childcareArea from "./images/childcare-area.jpg"; import childcareBalls from "./images/childcare-balls.jpg"; -## Childcare at EuroPython 2025 +# Childcare at EuroPython 2025 We’re committed to making EuroPython as inclusive and accessible as possible — and that includes supporting parents attending the conference. diff --git a/src/content/pages/venue.mdx b/src/content/pages/venue.mdx index 0dd9a545a..f0d2e8efd 100644 --- a/src/content/pages/venue.mdx +++ b/src/content/pages/venue.mdx @@ -8,7 +8,7 @@ import { Image } from "astro:assets"; import venueImage from "./images/prague.jpg"; import pccEntrance from "images/entrance5-pcc5.jpg"; -## Conference Venue - Prague Congress Centre +# Conference Venue - Prague Congress Centre [The Prague Congress Centre](https://www.praguecc.cz/en/homepage) will host EuroPython 2025 from **July 14th to July 20th**. It’s a renowned venue, having diff --git a/src/content/sponsors/bloomberg/bloomberg.svg b/src/content/sponsors/bloomberg/bloomberg.svg new file mode 100644 index 000000000..20dc85555 --- /dev/null +++ b/src/content/sponsors/bloomberg/bloomberg.svg @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/content/sponsors/bloomberg/display.png b/src/content/sponsors/bloomberg/display.png new file mode 100644 index 000000000..9760d7825 Binary files /dev/null and b/src/content/sponsors/bloomberg/display.png differ diff --git a/src/content/sponsors/bloomberg/index.md b/src/content/sponsors/bloomberg/index.md new file mode 100644 index 000000000..f5b024488 --- /dev/null +++ b/src/content/sponsors/bloomberg/index.md @@ -0,0 +1,70 @@ +--- +name: Bloomberg +url: https://bloomberg.net +description: + "Bloomberg is building the world's most trusted information network for + financial professionals. Our 9,000+ dedicated engineers are advancing and + building new systems for the Bloomberg Terminal to solve complex, real-world + problems. We trust our teams to choose the right technologies for the job; at + Bloomberg, the answer’s often Python. Our active community of 4,000+ Python + developers have their hands in everything from financial analytics and data + science to contributing to open source technologies like Project Jupyter. + Bloomberg is a Visionary Sponsor of the Python Software Foundation and hosts + many Python community events around the world." +socials: + linkedin: https://www.linkedin.com/company/bloomberg/ + twitter: https://x.com/bloomberg + facebook: https://www.facebook.com/bloombergbusiness/ + instagram: https://www.instagram.com/bloomberg/ + youtube: https://www.youtube.com/@markets +tier: Platinum +logo_padding: 0 10px +draft: true +--- + +Our culture: \ +We don't just work. \ +We thrive. ================================================= + +Here at Bloomberg, employees are the beating heart of our organization. Your +passion drives our success, shapes our culture and makes us truly unique. + +Working here means you'll be surrounded by people who value nurturing potential, +unleashing creativity, leading the way on world-changing solutions and seeing +communities flourish. + +We don't just discuss culture.\ +We create it together. + +--- + +![](https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/company/sites/51/2024/12/Our-Culture4.png "Our-Culture4") + +### We're passionate. + +We celebrate you, recognizing your talents and fueling your ambitions. Because +when you're at the top of your game, we're at the top of ours. + +![](https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/company/sites/51/2024/12/Our-Culture3.png "Our-Culture3") + +### We're inspired. + +Helping you find your purpose is our purpose --- whether that means giving back +to communities through volunteering, learning from the work of our charitable +partners or enriching perspectives. + +![](https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/company/sites/51/2024/12/Our-Culture2.png "Our-Culture2") + +### We're curious. + +Supporting you in your pursuit of healthier, happier lives through personalized +benefits and enrichment programs is always front of mind, along with continuous +learning and career development. + +![](https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/image/v1/resize?width=auto&type=webp&url=https://assets.bbhub.io/company/sites/51/2024/12/Our-Culture5.png "Our-Culture5") + +### We're proud. + +Championing a culture where everyone belongs --- through ERGs (Employee Resource +Groups), social activities and networking --- is something we never negotiate or +stop striving towards. diff --git a/src/content/sponsors/bloomberg/senior-ml-platform-engineer-artificial-intelligence.md b/src/content/sponsors/bloomberg/senior-ml-platform-engineer-artificial-intelligence.md new file mode 100644 index 000000000..356af57dd --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-ml-platform-engineer-artificial-intelligence.md @@ -0,0 +1,14 @@ +--- +title: Senior ML Platform Engineer - Artificial Intelligence +location: London, United Kingdom +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-ML-Platform-Engineer-London-Artificial-Intelligence/11268 +draft: true +--- diff --git a/src/content/sponsors/bloomberg/senior-software-engineer-ib-integrations.md b/src/content/sponsors/bloomberg/senior-software-engineer-ib-integrations.md new file mode 100644 index 000000000..97c0dc9d1 --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-software-engineer-ib-integrations.md @@ -0,0 +1,14 @@ +--- +title: Senior Software Engineer - IB Integrations +location: London, United Kingdom +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-Software-Engineer-IB-Integrations-EXT-LDN/10463 +draft: true +--- diff --git a/src/content/sponsors/bloomberg/senior-software-engineer-java-infrastructure.md b/src/content/sponsors/bloomberg/senior-software-engineer-java-infrastructure.md new file mode 100644 index 000000000..4c137796e --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-software-engineer-java-infrastructure.md @@ -0,0 +1,14 @@ +--- +title: Senior Software Engineer - Java Infrastructure +location: London, United Kingdom +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-Software-Engineer-Java-Infrastructure/10394 +draft: true +--- diff --git a/src/content/sponsors/bloomberg/senior-software-engineer-market-oversight.md b/src/content/sponsors/bloomberg/senior-software-engineer-market-oversight.md new file mode 100644 index 000000000..ec4e7fc48 --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-software-engineer-market-oversight.md @@ -0,0 +1,14 @@ +--- +title: Senior Software Engineer - Market Oversight +location: Frankfurt, Germany +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-Software-Engineer-Market-Oversight/9230 +draft: true +--- diff --git a/src/content/sponsors/bloomberg/senior-software-engineer-network-production-engineer.md b/src/content/sponsors/bloomberg/senior-software-engineer-network-production-engineer.md new file mode 100644 index 000000000..6d12b2e34 --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-software-engineer-network-production-engineer.md @@ -0,0 +1,14 @@ +--- +title: Senior Software Engineer - Network Production Engineer +location: London, United Kingdom +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-Software-Engineer-Network-Production-Engineer/11694 +draft: true +--- diff --git a/src/content/sponsors/bloomberg/senior-software-engineer-port-data-validation-services.md b/src/content/sponsors/bloomberg/senior-software-engineer-port-data-validation-services.md new file mode 100644 index 000000000..60cdae2fb --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-software-engineer-port-data-validation-services.md @@ -0,0 +1,14 @@ +--- +title: Senior Software Engineer - PORT Data Validation Services +location: London, United Kingdom +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-Software-Engineer-PORT-Data-Validation-Services/10371 +draft: true +--- diff --git a/src/content/sponsors/bloomberg/senior-software-engineersre-managed-systems-engineering.md b/src/content/sponsors/bloomberg/senior-software-engineersre-managed-systems-engineering.md new file mode 100644 index 000000000..c7b9c5ad4 --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-software-engineersre-managed-systems-engineering.md @@ -0,0 +1,14 @@ +--- +title: Senior Software Engineer/SRE - Managed Systems Engineering +location: London, United Kingdom +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-Software-Engineer-SRE-Managed-Systems-Engineering/9681 +draft: true +--- diff --git a/src/content/sponsors/bloomberg/senior-software-engineersre-trade-automation-and-execution.md b/src/content/sponsors/bloomberg/senior-software-engineersre-trade-automation-and-execution.md new file mode 100644 index 000000000..46a4be9da --- /dev/null +++ b/src/content/sponsors/bloomberg/senior-software-engineersre-trade-automation-and-execution.md @@ -0,0 +1,14 @@ +--- +title: Senior Software Engineer/SRE - Trade Automation and Execution +location: London, United Kingdom +type: +level: +salary: +tags: [] +description: +responsibilities: +requirements: +benefits: +apply_link: https://bloomberg.avature.net/careers/JobDetail/Senior-Software-Engineer-SRE-Trade-Automation-Execution/9692 +draft: true +--- diff --git a/src/data/links.json b/src/data/links.json index b28b7d932..f1736d9c1 100644 --- a/src/data/links.json +++ b/src/data/links.json @@ -4,9 +4,17 @@ "name": "Programme", "items": [ { - "name": "Programme & Events Overview", + "name": "Overview", "path": "/overview" }, + { + "name": "Talks Schedule", + "path": "/schedule/talks" + }, + { + "name": "Tutorials Schedule", + "path": "/schedule/tutorials" + }, { "name": "List of Sessions", "path": "/sessions" @@ -19,26 +27,31 @@ "name": "Tracks", "path": "/tracks" }, - { - "name": "Selection Process", - "path": "/selection" - }, - { - "name": "Community Voting", - "path": "/voting" - }, { "name": "Speaker Mentorship", "path": "/mentorship" + } + ] + }, + { + "name": "Events", + "items": [ + { + "name": "Speakers' Dinner", + "path": "/speakers-dinner" }, { - "name": "C API Summit", - "path": "/c-api-summit" + "name": "Beginners' Day", + "path": "/beginners-day" }, { - "name": "WebAssembly Summit", + "name": "WASM Summit", "path": "/wasm-summit" }, + { + "name": "C-API Summit", + "path": "/c-api-summit" + }, { "name": "Rust Summit", "path": "/rust-summit" @@ -46,34 +59,73 @@ ] }, { - "name": "Events", + "name": "Venue", "items": [ { - "name": "Speakers' Dinner", - "path": "/speakers-dinner" + "name": "Prague", + "path": "/prague" }, { - "name": "Beginners' Day", - "path": "/beginners-day" + "name": "Venue", + "path": "/venue" } ] }, { - "name": "Schedule", + "name": "Sponsorship", "items": [ { - "name": "Tutorials", - "path": "/schedule/tutorials" + "name": "Sponsor Packages", + "path": "/sponsorship/sponsor" }, { - "name": "Talks", - "path": "/schedule/talks" + "name": "Sponsor Information", + "path": "/sponsorship/information" } ] }, { - "name": "Prague & Venue", + "name": "Registration", "items": [ + { + "name": "Tickets", + "path": "/tickets" + }, + { + "name": "Financial Aid", + "path": "/finaid" + }, + { + "name": "Visa Support Letter", + "path": "/visa" + }, + { + "name": "Childcare", + "path": "/childcare" + }, + { + "name": "FAQ", + "path": "/faq" + } + ] + }, + { + "name": "Community", + "path": "/community-partners" + }, + { + "name": "Jobs", + "path": "/jobs" + } + ], + "footer": [ + { + "name": "Quick links", + "items": [ + { + "name": "FAQ", + "path": "/faq" + }, { "name": "Prague", "path": "/prague" @@ -81,41 +133,94 @@ { "name": "Venue", "path": "/venue" + }, + { + "name": "Jobs", + "path": "/jobs" } ] }, { - "name": "Sponsorship", + "name": "Programme", "items": [ { - "name": "Sponsor Packages", - "path": "/sponsorship/sponsor" + "name": "Overview", + "path": "/overview" }, { - "name": "Sponsor Information", - "path": "/sponsorship/information" + "name": "Talks Schedule", + "path": "/schedule/talks" + }, + { + "name": "Tutorials Schedule", + "path": "/schedule/tutorials" + }, + { + "name": "List of Sessions", + "path": "/sessions" + }, + { + "name": "List of Speakers", + "path": "/speakers" + }, + { + "name": "Tracks", + "path": "/tracks" + }, + { + "name": "Speaker Mentorship", + "path": "/mentorship" } ] }, { - "name": "Registration", + "name": "Events", "items": [ { - "name": "Tickets information", - "path": "/tickets" + "name": "Speakers' Dinner", + "path": "/speakers-dinner" + }, + { + "name": "Beginners' Day", + "path": "/beginners-day" + }, + { + "name": "WASM Summit", + "path": "/wasm-summit" + }, + { + "name": "C-API Summit", + "path": "/c-api-summit" + }, + { + "name": "Rust Summit", + "path": "/rust-summit" + }, + { + "name": "Community", + "path": "/community-partners" } ] }, { - "name": "Info & Support", + "name": "Sponsorship", "items": [ { - "name": "Code of Conduct", - "path": "https://www.europython-society.org/coc/" + "name": "Sponsor Packages", + "path": "/sponsorship/sponsor" }, { - "name": "FAQ", - "path": "/faq" + "name": "Sponsor Information", + "path": "/sponsorship/information" + } + ] + }, + { + "name": "Registration", + "items": [ + { + "name": "Tickets", + "path": "/tickets" }, { "name": "Financial Aid", @@ -132,15 +237,20 @@ ] }, { - "name": "Jobs", - "path": "/jobs" + "name": "Sites", + "items": [ + { + "name": "EuroPython Society", + "path": "https://europython-society.org" + }, + { + "name": "EuroPython Blog", + "path": "https://blog.europython.eu" + } + ] } ], - "footer": [ - { - "name": "2024 Photos", - "path": "https://ep2024.europython.eu/photos" - }, + "terms": [ { "name": "Contacts", "path": "/contacts" @@ -149,9 +259,22 @@ "name": "Terms", "path": "/terms" }, + { + "name": "Code of Conduct", + "path": "https://www.europython-society.org/coc/" + }, { "name": "Privacy Policy", "path": "https://www.europython-society.org/privacy/" } - ] + ], + "socials": { + "mastodon": "https://fosstodon.org/@europython", + "linkedin": "https://linkedin.com/company/europython", + "github": "https://github.com/europython", + "bluesky": "https://bsky.app/profile/europython.eu", + "twitter": "https://x.com/europython", + "instagram": "https://instagram.com/europython/", + "youtube": "https://youtube.com/channel/UC98CzaYuFNAA_gOINFB0e4Q" + } } diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 8aa0dcb8d..56ac93229 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -35,7 +35,7 @@ const externalDomain = new URL(Astro.site || "").hostname;
-
+
@@ -80,4 +80,20 @@ const externalDomain = new URL(Astro.site || "").hostname; footer { @apply bg-primary py-10; } + + @media screen and (width>1200px){ + main { + margin-bottom:800px; + } + footer { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + padding: 40px 20px 40px 20px; + text-align: center; + z-index: -1; + /*height: 600px;*/ + } +} diff --git a/src/pages/community-partners.astro b/src/pages/community-partners.astro index 5e168b12b..cb19d7bbf 100644 --- a/src/pages/community-partners.astro +++ b/src/pages/community-partners.astro @@ -19,7 +19,7 @@ const sponsors = await getCollection("sponsors", ({ data }) => { > - +

EuroPython is a community-driven conference, we wouldn't be able to make as much impact without the support of our brilliant Community Partners. Get to know our partners better below (alphabetical order).

diff --git a/src/pages/jobs.astro b/src/pages/jobs.astro index 10f8d4933..d90b87872 100644 --- a/src/pages/jobs.astro +++ b/src/pages/jobs.astro @@ -2,7 +2,7 @@ import { type CollectionEntry, getEntry, getCollection } from "astro:content"; import Layout from "@layouts/SectionLayout.astro"; - +import Headline from "@ui/Headline.astro" import SponsorCard from "@components/SponsorCard.astro"; import JobCard from "@components/JobCard.astro"; import TwoCols from "@components/TwoCols.astro"; @@ -52,6 +52,8 @@ sponsors.forEach((sponsor) => { title="EuroPython 2025 | July 14th-20th 2025 | Prague, Czech Republic & Remote" description="EuroPython is the largest Python conference in Europe. We are looking forward to seeing you in Prague, Czech Republic & Remote from July 14th-20th 2025." > + + { sponsors.map((sponsor) => { if (!(sponsor.data.jobs && sponsor.data.jobs.length > 0)) return; diff --git a/src/pages/sessions.astro b/src/pages/sessions.astro index 382e8972d..e15b8f05c 100644 --- a/src/pages/sessions.astro +++ b/src/pages/sessions.astro @@ -2,6 +2,7 @@ import { getCollection } from "astro:content"; import Layout from "../layouts/Layout.astro"; import Prose from "../components/prose/prose.astro"; +import Headline from "@ui/Headline.astro" import Filter from "../components/sessions/filter.astro"; import ListSessions from "../components/sessions/list-sessions.astro"; import Section from "@ui/Section.astro"; @@ -26,18 +27,16 @@ const description = "A list of all the sessions at the conference";
+ -

Sessions

Here you can find a list of all the sessions at the conference.

You can filter the sessions by track, type, and level.

-

Filters

+ - -

List of Sessions

-
+
diff --git a/src/pages/speakers.astro b/src/pages/speakers.astro index 3b448f512..1a6cd1c3a 100644 --- a/src/pages/speakers.astro +++ b/src/pages/speakers.astro @@ -1,7 +1,7 @@ --- import { getCollection, type CollectionEntry } from "astro:content"; import Layout from "@layouts/Layout.astro"; -import Prose from "@components/prose/prose.astro"; +import Headline from "@ui/Headline.astro" import { Image } from "astro:assets"; import Section from "@ui/Section.astro"; @@ -65,9 +65,8 @@ const description = "Our conference speakers organized alphabetically";
- -

Speakers

-
+ + { groupKeys.map((key, _index) => ( diff --git a/src/styles/global.css b/src/styles/global.css index 9ff40d31c..c2d5e81ac 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -270,3 +270,26 @@ main a[href^="#"]::before { background-size: 65%; background-color: white; } + +.social-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + transition: + transform 0.3s ease, + color 0.3s ease; +} + +.social-icon:hover { + transform: scale(1.2) rotate(6deg); +} + +.social-icon-inner { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; +}