summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-07-22 16:58:20 +0300
committerDawid Rycerz <dawid@rycerz.xyz>2025-07-22 16:58:20 +0300
commit294d0121f58df76743ccb752dd8c03616b8b272d (patch)
treeb27c2c717f7d5f71a81adeacc3a1b95e434362d8
parent574c262dc170bd22ca0ea7ada08a70244d7fab4f (diff)
Add portfolio
-rw-r--r--src/assets/images/portfolio/portfolio-1.webpbin0 -> 353342 bytes
-rw-r--r--src/assets/images/portfolio/portfolio-2.webpbin0 -> 304020 bytes
-rw-r--r--src/assets/images/portfolio/portfolio-3.webpbin0 -> 26784 bytes
-rw-r--r--src/components/widgets/Portfolio.astro56
-rw-r--r--src/pages/index.astro21
-rw-r--r--src/types.d.ts6
6 files changed, 83 insertions, 0 deletions
diff --git a/src/assets/images/portfolio/portfolio-1.webp b/src/assets/images/portfolio/portfolio-1.webp
new file mode 100644
index 0000000..2e95222
--- /dev/null
+++ b/src/assets/images/portfolio/portfolio-1.webp
Binary files differ
diff --git a/src/assets/images/portfolio/portfolio-2.webp b/src/assets/images/portfolio/portfolio-2.webp
new file mode 100644
index 0000000..8b45442
--- /dev/null
+++ b/src/assets/images/portfolio/portfolio-2.webp
Binary files differ
diff --git a/src/assets/images/portfolio/portfolio-3.webp b/src/assets/images/portfolio/portfolio-3.webp
new file mode 100644
index 0000000..32574bd
--- /dev/null
+++ b/src/assets/images/portfolio/portfolio-3.webp
Binary files differ
diff --git a/src/components/widgets/Portfolio.astro b/src/components/widgets/Portfolio.astro
new file mode 100644
index 0000000..8cd230c
--- /dev/null
+++ b/src/components/widgets/Portfolio.astro
@@ -0,0 +1,56 @@
+---
+import type { Portfolio as Props } from '~/types';
+import Headline from '~/components/ui/Headline.astro';
+import WidgetWrapper from '~/components/ui/WidgetWrapper.astro';
+import Image from '~/components/common/Image.astro';
+import Button from '~/components/ui/Button.astro';
+
+const {
+ title = '',
+ subtitle = '',
+ tagline = '',
+ items = [],
+ columns = 3,
+ callToAction,
+
+ id,
+ isDark = false,
+ classes = {},
+ bg = await Astro.slots.render('bg'),
+} = Astro.props;
+---
+
+<WidgetWrapper id={id} isDark={isDark} containerClass={`max-w-7xl mx-auto ${classes?.container ?? ''}`} bg={bg}>
+ <Headline title={title} subtitle={subtitle} tagline={tagline} />
+
+ <div class="mx-auto max-w-7xl p-4 md:px-8">
+ <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
+ {
+ items &&
+ items.map((image) => (
+ <div class="flex h-auto intersect-once motion-safe:md:intersect:animate-fade motion-safe:md:opacity-0 intersect-quarter">
+ <div class="relative overflow-hidden rounded-lg shadow-xl dark:shadow-none dark:border dark:border-slate-600 group">
+ <Image
+ class="w-full h-64 object-cover transition-transform duration-300 group-hover:scale-105"
+ width={400}
+ height={256}
+ widths={[400, 768, 1200]}
+ layout="responsive"
+ {...image}
+ />
+ <div class="absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-20 transition-all duration-300"></div>
+ </div>
+ </div>
+ ))
+ }
+ </div>
+ </div>
+
+ {
+ callToAction && (
+ <div class="flex justify-center mx-auto w-fit mt-8 md:mt-12 font-medium">
+ <Button {...callToAction} />
+ </div>
+ )
+ }
+</WidgetWrapper> \ No newline at end of file
diff --git a/src/pages/index.astro b/src/pages/index.astro
index cd79040..7b5ae89 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -13,6 +13,7 @@ import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import CallToActionImage from '~/components/widgets/CallToActionImage.astro';
import Pricing from '~/components/widgets/Pricing.astro';
+import Portfolio from '~/components/widgets/Portfolio.astro';
const metadata = {
title: 'CustomWorks – Detailing, wrapping, tuning | Profesjonalne usługi pielęgnacji samochodów – Bydgoszcz',
@@ -258,6 +259,26 @@ const metadata = {
</Fragment>
</Pricing>
+ <!-- Portfolio **************** -->
+
+ <Portfolio
+ title="Portfolio"
+ items={[
+ {
+ src: '~/assets/images/portfolio/portfolio-1.webp',
+ alt: 'CustomWorks - Przykład pracy detailingowej',
+ },
+ {
+ src: '~/assets/images/portfolio/portfolio-2.webp',
+ alt: 'CustomWorks - Przykład pracy detailingowej',
+ },
+ {
+ src: '~/assets/images/portfolio/portfolio-3.webp',
+ alt: 'CustomWorks - Przykład pracy detailingowej',
+ },
+ ]}
+ />
+
<!-- Kontakt **************** -->
<Steps2
diff --git a/src/types.d.ts b/src/types.d.ts
index 491ba89..6d0a0e9 100644
--- a/src/types.d.ts
+++ b/src/types.d.ts
@@ -288,4 +288,10 @@ export interface Content extends Omit<Headline, 'classes'>, Widget {
callToAction?: CallToAction;
}
+export interface Portfolio extends Omit<Headline, 'classes'>, Widget {
+ items?: Array<Image>;
+ columns?: number;
+ callToAction?: CallToAction;
+}
+
export interface Contact extends Omit<Headline, 'classes'>, Form, Widget {}