diff --git a/package.json b/package.json index 83864ba4a..ecfd184f5 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@astrojs/sitemap": "^3.3.0", "@astrojs/tailwind": "^5.1.4", "@fontsource-variable/inter": "^5.1.1", + "@fortawesome/fontawesome-free": "^6.7.2", "@tailwindcss/typography": "^0.5.16", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b9a1447a..15eb290db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,9 @@ importers: '@fontsource-variable/inter': specifier: ^5.1.1 version: 5.2.5 + '@fortawesome/fontawesome-free': + specifier: ^6.7.2 + version: 6.7.2 '@tailwindcss/typography': specifier: ^0.5.16 version: 0.5.16(tailwindcss@3.4.17) @@ -604,6 +607,10 @@ packages: '@fontsource-variable/inter@5.2.5': resolution: {integrity: sha512-TrWffUAFOnT8zroE9YmGybagoOgM/HjRqMQ8k9R0vVgXlnUh/vnpbGPAS/Caz1KIlOPnPGh6fvJbb7DHbFCncA==} + '@fortawesome/fontawesome-free@6.7.2': + resolution: {integrity: sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==} + engines: {node: '>=6'} + '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3498,6 +3505,8 @@ snapshots: '@fontsource-variable/inter@5.2.5': {} + '@fortawesome/fontawesome-free@6.7.2': {} + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 diff --git a/public/carousel/1.jpg b/public/carousel/1.jpg new file mode 100644 index 000000000..6fc763341 Binary files /dev/null and b/public/carousel/1.jpg differ diff --git a/public/carousel/2.jpg b/public/carousel/2.jpg new file mode 100644 index 000000000..9c1e8542b Binary files /dev/null and b/public/carousel/2.jpg differ diff --git a/public/carousel/3.jpg b/public/carousel/3.jpg new file mode 100644 index 000000000..ea02fe010 Binary files /dev/null and b/public/carousel/3.jpg differ diff --git a/public/carousel/4.jpg b/public/carousel/4.jpg new file mode 100644 index 000000000..6691738b2 Binary files /dev/null and b/public/carousel/4.jpg differ diff --git a/public/carousel/5.jpg b/public/carousel/5.jpg new file mode 100644 index 000000000..518573e2b Binary files /dev/null and b/public/carousel/5.jpg differ diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro index 372114db3..01f0cce29 100644 --- a/src/components/BaseHead.astro +++ b/src/components/BaseHead.astro @@ -3,6 +3,7 @@ // all pages through the use of the component. import "../styles/global.css"; import "@fontsource-variable/inter"; +import "@fortawesome/fontawesome-free/css/all.min.css" interface Props { title: string; diff --git a/src/components/Carousel.astro b/src/components/Carousel.astro new file mode 100644 index 000000000..24da18810 --- /dev/null +++ b/src/components/Carousel.astro @@ -0,0 +1,245 @@ +--- +interface CarouselItem { + src: string; + alt: string; + width?: number; + height?: number; +} + +interface Props { + items: CarouselItem[]; + autoplay?: boolean; + interval?: number; // milliseconds + showControls?: boolean; + showIndicators?: boolean; + className?: string; +} + +// Default props +const { + items = [], + autoplay = true, + interval = 3000, + showControls = true, + showIndicators = true, + className = "w-full h-full", +} = Astro.props; + +// Generate unique ID for this carousel instance +const carouselId = `carousel-${Math.random().toString(36).substring(2, 11)}`; +--- + +
+ + + {showControls && ( + + )} + + {showIndicators && ( + + )} +
+ + + + diff --git a/src/components/hero2/hero.astro b/src/components/hero2/hero.astro index fe586638a..ff5902d25 100644 --- a/src/components/hero2/hero.astro +++ b/src/components/hero2/hero.astro @@ -6,6 +6,43 @@ import heroImage from "./conference_photo.jpg"; import IconWithLabel from "./icon-label.astro"; import Button from "@ui/Button.astro"; +import Carousel from "@components/Carousel.astro"; + +// Define your carousel items +const carouselItems = [ + { + src: '/carousel/1.jpg', + alt: 'Logo 1', + width: 800, + height: 600 + }, + { + src: '/carousel/2.jpg', + alt: 'Logo 2', + width: 800, + height: 600 + }, + { + src: '/carousel/3.jpg', + alt: 'Logo 3', + width: 800, + height: 600 + }, + { + src: '/carousel/4.jpg', + alt: 'Logo 4', + width: 800, + height: 600 + }, + { + src: '/carousel/5.jpg', + alt: 'Logo 5', + width: 800, + height: 600 + }, +]; + + const action1 = "/tickets"; const action2 = "/sponsorship/sponsor/"; --- @@ -124,11 +161,14 @@ const action2 = "/sponsorship/sponsor/";
- EuroPython 2025 Hero Image + +
diff --git a/src/pages/index.astro b/src/pages/index.astro index c1c8b74b3..cb6344a15 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -9,11 +9,6 @@ import Prague from "@sections/prague.astro"; import Sponsors from "@components/sponsors/sponsors.astro"; import Subscribe from "@sections/subscribe.astro"; -let deadlines = await getCollection("deadlines"); -deadlines = deadlines - .sort((a, b) => a.slug.localeCompare(b.slug)) - .reverse() - .slice(0, 3); ---