diff options
| author | Dawid Rycerz <dawid@rycerz.xyz> | 2025-07-22 17:11:44 +0300 |
|---|---|---|
| committer | Dawid Rycerz <dawid@rycerz.xyz> | 2025-07-22 17:11:44 +0300 |
| commit | d6608c822370ca7aad42c0ed54caf421ead8bb50 (patch) | |
| tree | 468ec79a662b1bdfa48e78b2657ce490f5e30192 /src | |
| parent | 6c71a67a7473ee30c424ac63b4d2b27c38007d5e (diff) | |
Update widget
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/CustomStyles.astro | 20 | ||||
| -rw-r--r-- | src/components/blog/GridItem.astro | 5 | ||||
| -rw-r--r-- | src/components/blog/ListItem.astro | 2 | ||||
| -rw-r--r-- | src/components/widgets/Announcement.astro | 1 | ||||
| -rw-r--r-- | src/components/widgets/CallToActionImage.astro | 18 | ||||
| -rw-r--r-- | src/components/widgets/Features2Custom.astro | 9 | ||||
| -rw-r--r-- | src/components/widgets/Footer.astro | 4 | ||||
| -rw-r--r-- | src/components/widgets/Header.astro | 35 | ||||
| -rw-r--r-- | src/components/widgets/Map.astro | 6 | ||||
| -rw-r--r-- | src/components/widgets/Portfolio.astro | 6 | ||||
| -rw-r--r-- | src/components/widgets/Pricing.astro | 101 | ||||
| -rw-r--r-- | src/components/widgets/Steps2.astro | 10 | ||||
| -rw-r--r-- | src/config.yaml | 10 | ||||
| -rw-r--r-- | src/navigation.ts | 23 | ||||
| -rw-r--r-- | src/pages/index.astro | 75 | ||||
| -rw-r--r-- | src/utils/images.ts | 4 |
16 files changed, 191 insertions, 138 deletions
diff --git a/src/components/CustomStyles.astro b/src/components/CustomStyles.astro index 9798cb6..696b899 100644 --- a/src/components/CustomStyles.astro +++ b/src/components/CustomStyles.astro @@ -34,14 +34,14 @@ import '@fontsource/poppins'; --aw-color-text-heading: #162130; /* Głęboki granat dla nagłówków */ --aw-color-text-default: #000000; /* Czerń dla tekstu na jasnym tle */ --aw-color-text-muted: #888888; /* Stonowana szarość */ - --aw-color-bg-page: #FFFFFF; /* Klasyczna biel */ - --aw-color-bg-section: #FFFFFF; /* Klasyczna biel */ + --aw-color-bg-page: #ffffff; /* Klasyczna biel */ + --aw-color-bg-section: #ffffff; /* Klasyczna biel */ --aw-color-bg-page-dark: #162130; /* Głęboki granat */ ::selection { background-color: #162130; - color: #FFFFFF; + color: #ffffff; } } @@ -51,18 +51,18 @@ import '@fontsource/poppins'; --aw-font-heading: 'Kanit'; /* Dark mode */ - --aw-color-primary: #FFFFFF; /* Biały dla kontrastu na ciemnym tle */ - --aw-color-secondary: #FFFFFF; /* Biały dla kontrastu na ciemnym tle */ - --aw-color-accent: #FFFFFF; /* Biały dla kontrastu na ciemnym tle */ + --aw-color-primary: #ffffff; /* Biały dla kontrastu na ciemnym tle */ + --aw-color-secondary: #ffffff; /* Biały dla kontrastu na ciemnym tle */ + --aw-color-accent: #ffffff; /* Biały dla kontrastu na ciemnym tle */ - --aw-color-text-heading: #CCCCCC; /* Jasna szarość na ciemnym tle */ - --aw-color-text-default: #CCCCCC; /* Jasna szarość na ciemnym tle */ + --aw-color-text-heading: #cccccc; /* Jasna szarość na ciemnym tle */ + --aw-color-text-default: #cccccc; /* Jasna szarość na ciemnym tle */ --aw-color-text-muted: #888888; /* Stonowana szarość */ --aw-color-bg-page: #162130; /* Głęboki granat */ - --aw-color-bg-section: #FFFFFF; /* Klasyczna biel dla jasnych sekcji */ + --aw-color-bg-section: #ffffff; /* Klasyczna biel dla jasnych sekcji */ ::selection { - background-color: #FFFFFF; + background-color: #ffffff; color: #162130; } } diff --git a/src/components/blog/GridItem.astro b/src/components/blog/GridItem.astro index 73353ca..823063c 100644 --- a/src/components/blog/GridItem.astro +++ b/src/components/blog/GridItem.astro @@ -58,7 +58,10 @@ const link = APP_BLOG?.post?.isEnabled ? getPermalink(post.permalink, 'post') : <h3 class="text-xl sm:text-2xl font-bold leading-tight mb-2 font-heading dark:text-slate-300"> { link ? ( - <a class="inline-block hover:text-primary dark:hover:text-secondary transition ease-in duration-200" href={link}> + <a + class="inline-block hover:text-primary dark:hover:text-secondary transition ease-in duration-200" + href={link} + > {post.title} </a> ) : ( diff --git a/src/components/blog/ListItem.astro b/src/components/blog/ListItem.astro index 36602f2..f078c25 100644 --- a/src/components/blog/ListItem.astro +++ b/src/components/blog/ListItem.astro @@ -94,7 +94,7 @@ const link = APP_BLOG?.post?.isEnabled ? getPermalink(post.permalink, 'post') : { link ? ( <a - class="inline-block hover:text-primary dark:hover:text-secondary transition ease-in duration-200" + class="inline-block hover:text-primary dark:hover:text-secondary transition ease-in duration-200" href={link} > {post.title} diff --git a/src/components/widgets/Announcement.astro b/src/components/widgets/Announcement.astro index 8e4bf78..e3098d5 100644 --- a/src/components/widgets/Announcement.astro +++ b/src/components/widgets/Announcement.astro @@ -12,5 +12,4 @@ <a href="#contact" class="text-muted hover:underline dark:text-slate-400 font-medium" >Skontaktuj się z nami - Darmowa wycena! »</a > - </div> diff --git a/src/components/widgets/CallToActionImage.astro b/src/components/widgets/CallToActionImage.astro index df13145..80e181e 100644 --- a/src/components/widgets/CallToActionImage.astro +++ b/src/components/widgets/CallToActionImage.astro @@ -47,27 +47,19 @@ const { image && ( <div class="flex justify-center mt-6 px-4"> {image.href ? ( - <a - href={image.href} + <a + href={image.href} target={image.target || '_self'} rel={image.target === '_blank' ? 'noopener noreferrer' : ''} class="inline-block hover:opacity-80 transition-opacity duration-200" > - <Image - src={image.src} - alt={image.alt} - class="max-h-20 h-auto w-auto max-w-full object-contain" - /> + <Image src={image.src} alt={image.alt} class="max-h-20 h-auto w-auto max-w-full object-contain" /> </a> ) : ( - <Image - src={image.src} - alt={image.alt} - class="max-h-20 h-auto w-auto max-w-full object-contain" - /> + <Image src={image.src} alt={image.alt} class="max-h-20 h-auto w-auto max-w-full object-contain" /> )} </div> ) } </div> -</WidgetWrapper>
\ No newline at end of file +</WidgetWrapper> diff --git a/src/components/widgets/Features2Custom.astro b/src/components/widgets/Features2Custom.astro index 18c1546..605fd08 100644 --- a/src/components/widgets/Features2Custom.astro +++ b/src/components/widgets/Features2Custom.astro @@ -33,7 +33,7 @@ const { <WidgetWrapper id={id} isDark={isDark} containerClass={`max-w-7xl mx-auto ${classes?.container ?? ''}`} bg={bg}> <Headline title={title} subtitle={subtitle} tagline={tagline} classes={classes?.headline as Record<string, string>} /> - + { items && items.length > 0 && ( <div @@ -69,7 +69,10 @@ const { )} <div class={twMerge('text-xl font-bold', titleClass, itemClasses?.title)}>{title}</div> {description && ( - <p class={twMerge('text-muted mt-2', descriptionClass, itemClasses?.description)} set:html={description} /> + <p + class={twMerge('text-muted mt-2', descriptionClass, itemClasses?.description)} + set:html={description} + /> )} {callToAction && ( <div class="mt-2"> @@ -81,4 +84,4 @@ const { </div> ) } -</WidgetWrapper>
\ No newline at end of file +</WidgetWrapper> diff --git a/src/components/widgets/Footer.astro b/src/components/widgets/Footer.astro index 70cac54..55501ff 100644 --- a/src/components/widgets/Footer.astro +++ b/src/components/widgets/Footer.astro @@ -1,7 +1,5 @@ --- import { Icon } from 'astro-icon/components'; -import { SITE } from 'astrowind:config'; -import { getHomePermalink } from '~/utils/permalinks'; interface Link { text?: string; @@ -23,7 +21,7 @@ export interface Props { theme?: string; } -const { socialLinks = [], secondaryLinks = [], links = [], footNote = '', theme = 'light' } = Astro.props; +const { socialLinks = [], footNote = '', theme = 'light' } = Astro.props; --- <footer class:list={[{ dark: theme === 'dark' }, 'relative border-t border-gray-200 dark:border-slate-800 not-prose']}> diff --git a/src/components/widgets/Header.astro b/src/components/widgets/Header.astro index 0064a30..f5d5236 100644 --- a/src/components/widgets/Header.astro +++ b/src/components/widgets/Header.astro @@ -1,14 +1,41 @@ --- import { Icon } from 'astro-icon/components'; +import { SITE } from 'astrowind:config'; --- <header class="bg-black text-white py-2 px-4"> - <div class="max-w-7xl mx-auto flex items-center justify-center"> + <div class="max-w-7xl mx-auto flex items-center justify-between"> <div class="flex items-center space-x-2"> <Icon name="tabler:phone" class="w-4 h-4" /> - <a href="tel:+48790209770" class="text-sm font-medium hover:text-gray-300 transition-colors"> - +48 790-209-770 - </a> + <a href="tel:+48790209770" class="text-sm font-medium hover:text-gray-300 transition-colors"> +48 790-209-770 </a> </div> + { + SITE.social && (SITE.social.facebook || SITE.social.instagram) && ( + <div class="flex items-center space-x-3"> + {SITE.social.facebook && ( + <a + href={SITE.social.facebook} + aria-label="Facebook" + class="text-white hover:text-gray-300 transition-colors" + target="_blank" + rel="noopener noreferrer" + > + <Icon name="tabler:brand-facebook" class="w-4 h-4" /> + </a> + )} + {SITE.social.instagram && ( + <a + href={SITE.social.instagram} + aria-label="Instagram" + class="text-white hover:text-gray-300 transition-colors" + target="_blank" + rel="noopener noreferrer" + > + <Icon name="tabler:brand-instagram" class="w-4 h-4" /> + </a> + )} + </div> + ) + } </div> </header> diff --git a/src/components/widgets/Map.astro b/src/components/widgets/Map.astro index dae8253..76d81a4 100644 --- a/src/components/widgets/Map.astro +++ b/src/components/widgets/Map.astro @@ -21,11 +21,11 @@ const { // Use provided coordinates or default to Bydgoszcz, Miedzyń const coordinates = { lat: lat, - lon: lon + lon: lon, }; // Create map URL with proper coordinates -const mapUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${coordinates.lon-0.01},${coordinates.lat-0.01},${coordinates.lon+0.01},${coordinates.lat+0.01}&layer=mapnik&marker=${coordinates.lat},${coordinates.lon}`; +const mapUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${coordinates.lon - 0.01},${coordinates.lat - 0.01},${coordinates.lon + 0.01},${coordinates.lat + 0.01}&layer=mapnik&marker=${coordinates.lat},${coordinates.lon}`; --- <WidgetWrapper id={id} isDark={isDark} containerClass={`max-w-7xl mx-auto ${classes?.container ?? ''}`} bg={bg}> @@ -57,4 +57,4 @@ const mapUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${coordinat </div> </div> </div> -</WidgetWrapper>
\ No newline at end of file +</WidgetWrapper> diff --git a/src/components/widgets/Portfolio.astro b/src/components/widgets/Portfolio.astro index 8cd230c..d4016a7 100644 --- a/src/components/widgets/Portfolio.astro +++ b/src/components/widgets/Portfolio.astro @@ -10,7 +10,7 @@ const { subtitle = '', tagline = '', items = [], - columns = 3, + callToAction, id, @@ -38,7 +38,7 @@ const { layout="responsive" {...image} /> - <div class="absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-20 transition-all duration-300"></div> + <div class="absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-20 transition-all duration-300" /> </div> </div> )) @@ -53,4 +53,4 @@ const { </div> ) } -</WidgetWrapper>
\ No newline at end of file +</WidgetWrapper> diff --git a/src/components/widgets/Pricing.astro b/src/components/widgets/Pricing.astro index d8cd2a6..b0c2fa1 100644 --- a/src/components/widgets/Pricing.astro +++ b/src/components/widgets/Pricing.astro @@ -18,12 +18,7 @@ const { } = Astro.props; --- -<WidgetWrapper - id={id} - isDark={isDark} - containerClass={`mx-auto ${classes?.container ?? ''}`} - bg={bg} -> +<WidgetWrapper id={id} isDark={isDark} containerClass={`mx-auto ${classes?.container ?? ''}`} bg={bg}> <Headline title={title} subtitle={subtitle} @@ -38,60 +33,66 @@ const { <div class="md:flex md:gap-8"> <div class="md:w-1/2"> { - items && items.length > 0 && items.filter((_, index) => index % 2 === 0).map((item) => ( - <div class="mb-8"> - {item.title && ( - <h3 class="text-lg font-bold leading-6 dark:text-white mb-4">{item.title}</h3> - )} - <hr class="mb-8 border-2"> - {item.entries && item.entries.length > 0 && ( - <table class="w-full border-collapse"> - <tbody> - {item.entries.map((entry) => ( - <tr class="h-12"> - <td class="w-1/2 h-12 px-4 text-muted dark:text-slate-400" set:html={entry.description}></td> - <td class="w-1/2 text-right h-12 px-4 text-muted dark:text-slate-400">{entry.price}</td> - </tr> - ))} - </tbody> - </table> - )} - </div> - )) + items && + items.length > 0 && + items + .filter((_, index) => index % 2 === 0) + .map((item) => ( + <div class="mb-8"> + {item.title && <h3 class="text-lg font-bold leading-6 dark:text-white mb-4">{item.title}</h3>} + <hr class="mb-8 border-2" /> + {item.entries && item.entries.length > 0 && ( + <table class="w-full border-collapse"> + <tbody> + {item.entries.map((entry) => ( + <tr class="h-12"> + <td class="w-1/2 h-12 px-4 text-muted dark:text-slate-400" set:html={entry.description} /> + <td class="w-1/2 text-right h-12 px-4 text-muted dark:text-slate-400">{entry.price}</td> + </tr> + ))} + </tbody> + </table> + )} + </div> + )) } </div> <div class="md:w-1/2"> { - items && items.length > 0 && items.filter((_, index) => index % 2 === 1).map((item) => ( - <div class="mb-8"> - {item.title && ( - <h3 class="text-lg font-bold leading-6 dark:text-white mb-4">{item.title}</h3> - )} - <hr class="mb-8 border-2"> - {item.entries && item.entries.length > 0 && ( - <table class="w-full border-collapse"> - <tbody> - {item.entries.map((entry) => ( - <tr class="h-12"> - <td class="w-1/2 h-12 px-4 text-muted dark:text-slate-400" set:html={entry.description}></td> - <td class="w-1/2 text-right h-12 px-4 text-muted dark:text-slate-400">{entry.price}</td> - </tr> - ))} - </tbody> - </table> - )} - </div> - )) + items && + items.length > 0 && + items + .filter((_, index) => index % 2 === 1) + .map((item) => ( + <div class="mb-8"> + {item.title && <h3 class="text-lg font-bold leading-6 dark:text-white mb-4">{item.title}</h3>} + <hr class="mb-8 border-2" /> + {item.entries && item.entries.length > 0 && ( + <table class="w-full border-collapse"> + <tbody> + {item.entries.map((entry) => ( + <tr class="h-12"> + <td class="w-1/2 h-12 px-4 text-muted dark:text-slate-400" set:html={entry.description} /> + <td class="w-1/2 text-right h-12 px-4 text-muted dark:text-slate-400">{entry.price}</td> + </tr> + ))} + </tbody> + </table> + )} + </div> + )) } </div> </div> </div> <div class="mt-12 text-center"> - {await Astro.slots.render('disclaimer') && ( - <div class="text-xs text-muted dark:text-slate-400 mb-8" set:html={await Astro.slots.render('disclaimer')} /> - )} - + { + (await Astro.slots.render('disclaimer')) && ( + <div class="text-xs text-muted dark:text-slate-400 mb-8" set:html={await Astro.slots.render('disclaimer')} /> + ) + } + { actions && actions.length > 0 && ( <div class="max-w-xs sm:max-w-md m-auto flex flex-nowrap flex-col sm:flex-row sm:justify-center gap-4 mt-6"> diff --git a/src/components/widgets/Steps2.astro b/src/components/widgets/Steps2.astro index 0891663..7a84282 100644 --- a/src/components/widgets/Steps2.astro +++ b/src/components/widgets/Steps2.astro @@ -23,7 +23,10 @@ const { function makeEmailsClickable(text: string | undefined): string { if (!text) return ''; const emailRegex = /([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/g; - return text.replace(emailRegex, '<a href="mailto:$1" class="text-primary hover:text-secondary transition-colors">$1</a>'); + return text.replace( + emailRegex, + '<a href="mailto:$1" class="text-primary hover:text-secondary transition-colors">$1</a>' + ); } --- @@ -67,7 +70,10 @@ function makeEmailsClickable(text: string | undefined): string { </div> <div class="pl-4 rtl:pl-0 rtl:pr-4"> <h3 class="mb-4 text-xl font-semibold font-heading" set:html={title2} /> - <p class="text-muted dark:text-gray-400" set:html={description ? makeEmailsClickable(description) : ''} /> + <p + class="text-muted dark:text-gray-400" + set:html={description ? makeEmailsClickable(description) : ''} + /> </div> </li> )) diff --git a/src/config.yaml b/src/config.yaml index 0c5c1b1..87d121b 100644 --- a/src/config.yaml +++ b/src/config.yaml @@ -6,17 +6,21 @@ site: googleSiteVerificationId: orcPxI47GSa-cRvY11tUe6iGg2IO_RPvnA1q95iEM3M + social: + facebook: 'https://www.facebook.com/profile.php?id=100091581500469' + instagram: 'https://www.instagram.com/custom_works_bdg' + # Default SEO metadata metadata: title: - default: CustomWorks – Detailing, wrapping, tuning | Profesjonalne usługi pielęgnacji samochodów – Bydgoszcz + default: CustomWorks – Detailing, wrapping, tuning | Profesjonalne usługi pielęgnacji samochodów – Bydgoszcz template: '%s — CustomWorks' - description: "CustomWorks oferuje detailing, wrapping, tuning i powłoki ochronne. Renowacja lakieru, folie PPF, powłoki ceramiczne – Bydgoszcz, kujawsko-pomorskie." + description: 'CustomWorks oferuje detailing, wrapping, tuning i powłoki ochronne. Renowacja lakieru, folie PPF, powłoki ceramiczne – Bydgoszcz, kujawsko-pomorskie.' robots: index: true follow: true openGraph: - site_name: CustomWorks – Detailing, wrapping, tuning | Profesjonalne usługi pielęgnacji samochodów – Bydgoszcz + site_name: CustomWorks – Detailing, wrapping, tuning | Profesjonalne usługi pielęgnacji samochodów – Bydgoszcz images: - url: '~/assets/images/customworks-hero.webp' width: 819 diff --git a/src/navigation.ts b/src/navigation.ts index 7186a35..baa9bb4 100644 --- a/src/navigation.ts +++ b/src/navigation.ts @@ -1,4 +1,5 @@ -import { getPermalink, getBlogPermalink, getAsset } from './utils/permalinks'; +import { getPermalink, getBlogPermalink } from './utils/permalinks'; +import { SITE } from 'astrowind:config'; export const headerData = { links: [ @@ -123,8 +124,26 @@ export const footerData = { secondaryLinks: [], socialLinks: [ { text: 'Polityka prywatności', href: getPermalink('/polityka-prywatnosci') }, + ...(SITE.social?.facebook + ? [ + { + ariaLabel: 'Facebook', + href: SITE.social.facebook, + icon: 'tabler:brand-facebook', + }, + ] + : []), + ...(SITE.social?.instagram + ? [ + { + ariaLabel: 'Instagram', + href: SITE.social.instagram, + icon: 'tabler:brand-instagram', + }, + ] + : []), ], footNote: ` - Strona obsługiwana przez <a class="text-primary underline dark:text-muted" href="https://www.rycerz.xyz/">Craftknight</a> Copyright 2025 © Wszystkie prawa zastrzeżone + <span class="text-xs text-muted dark:text-slate-400">Strona obsługiwana przez <a class="text-primary underline dark:text-muted" href="https://www.rycerz.xyz/">Craftknight</a> Copyright 2025 © Wszystkie prawa zastrzeżone</span> `, }; diff --git a/src/pages/index.astro b/src/pages/index.astro index df14280..e095fe0 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -2,16 +2,9 @@ import Layout from '~/layouts/PageLayout.astro'; import Hero from '~/components/widgets/Hero2.astro'; -import Note from '~/components/widgets/Note.astro'; -import Features from '~/components/widgets/Features.astro'; import Features2Custom from '~/components/widgets/Features2Custom.astro'; import Steps2 from '~/components/widgets/Steps2.astro'; import Content from '~/components/widgets/Content.astro'; -import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro'; -import FAQs from '~/components/widgets/FAQs.astro'; -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'; import Map from '~/components/widgets/Map.astro'; @@ -35,7 +28,10 @@ const metadata = { }, { text: 'Usługi', href: '#features' }, ]} - image={{ src: '~/assets/images/hero-image.webp', alt: 'CustomWorks - Profesjonalne usługi detailingu samochodowego' }} + image={{ + src: '~/assets/images/hero-image.webp', + alt: 'CustomWorks - Profesjonalne usługi detailingu samochodowego', + }} > <Fragment slot="title"> <span class="text-accent dark:text-white"> @@ -44,9 +40,7 @@ const metadata = { </span> </Fragment> - <Fragment slot="subtitle"> - Twój specjalista od pielęgnacji samochodów - </Fragment> + <Fragment slot="subtitle"> Twój specjalista od pielęgnacji samochodów </Fragment> </Hero> <!-- Oferowane usługi *************** --> @@ -58,42 +52,50 @@ const metadata = { items={[ { title: 'Renowacja lakieru', - description: 'Przywracam blask i witalność Twojego samochodu, usuwając wszelkie rysy, zadrapania i oznaki zużycia', + description: + 'Przywracam blask i witalność Twojego samochodu, usuwając wszelkie rysy, zadrapania i oznaki zużycia', iconSvg: '/src/assets/images/spray-gun.svg', }, { title: 'Detailing wnętrz', - description: 'Pielęgnuję wnętrze Twojego samochodu, stosując zaawansowane metody czyszczenia i zabezpieczania materiałów', + description: + 'Pielęgnuję wnętrze Twojego samochodu, stosując zaawansowane metody czyszczenia i zabezpieczania materiałów', iconSvg: '/src/assets/images/interior-detailing.svg', }, { title: 'Powłoki ochronne', - description: 'Specjalizuję się w aplikacji powłok ceramicznych, grafenowych i kwarcowych, zapewniając najwyższą jakość ochrony lakieru, a jednocześnie zachwycając wyglądem', + description: + 'Specjalizuję się w aplikacji powłok ceramicznych, grafenowych i kwarcowych, zapewniając najwyższą jakość ochrony lakieru, a jednocześnie zachwycając wyglądem', iconSvg: '/src/assets/images/ceramic-coating.svg', }, { title: 'Niewidzialne wycieraczki', - description: 'Zapewniam czyste i suche szyby dzięki rewolucyjnym niewidzialnym wycieraczkom, które utrzymują widoczność nawet w trudnych warunkach atmosferycznych', + description: + 'Zapewniam czyste i suche szyby dzięki rewolucyjnym niewidzialnym wycieraczkom, które utrzymują widoczność nawet w trudnych warunkach atmosferycznych', iconSvg: '/src/assets/images/invisible-wipers.svg', }, { title: 'Ochrona lakieru foliami PPF', - description: 'Zabezpieczam Twoje auto przed uszkodzeniami mechanicznymi, odpryskami i rysami, dzięki innowacyjnym foliom ochronnym PPF', + description: + 'Zabezpieczam Twoje auto przed uszkodzeniami mechanicznymi, odpryskami i rysami, dzięki innowacyjnym foliom ochronnym PPF', iconSvg: '/src/assets/images/ppf-protection.svg', }, { title: 'Czyszczenie komory silnika', - description: 'Dbam o serce Twojego samochodu, przeprowadzając profesjonalne czyszczenie komory silnika oraz jego podzespołów', + description: + 'Dbam o serce Twojego samochodu, przeprowadzając profesjonalne czyszczenie komory silnika oraz jego podzespołów', iconSvg: '/src/assets/images/engine-cleaning.svg', }, { title: 'Zmiana koloru foliami', - description: 'Daję Ci możliwość szybkiej i skutecznej metamorfozy Twojego pojazdu poprzez zmianę koloru za pomocą wysokiej jakości folii', + description: + 'Daję Ci możliwość szybkiej i skutecznej metamorfozy Twojego pojazdu poprzez zmianę koloru za pomocą wysokiej jakości folii', iconSvg: '/src/assets/images/color-change.svg', }, { title: 'Tuning wizualny', - description: 'Realizuję Twoje wizje i pomysły na wyjątkowy wygląd samochodu, oferując szeroki zakres opcji stylizacji zewnętrznej i wewnętrznej', + description: + 'Realizuję Twoje wizje i pomysły na wyjątkowy wygląd samochodu, oferując szeroki zakres opcji stylizacji zewnętrznej i wewnętrznej', iconSvg: '/src/assets/images/visual-tuning.svg', }, ]} @@ -112,8 +114,7 @@ const metadata = { }, { title: 'Doświadczenie i jakość', - description: - 'Działam z myślą o Twoim zadowoleniu, gwarantując solidność i niezawodność usług.', + description: 'Działam z myślą o Twoim zadowoleniu, gwarantując solidność i niezawodność usług.', }, { title: 'Kompleksowa opieka', @@ -127,8 +128,12 @@ const metadata = { }} > <Fragment slot="content"> - <h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Profesjonalna opieka nad Twoim samochodem</h3> - W Custom Works zawsze dokładam wszelkich starań, aby spełnić oczekiwania moich klientów, a nawet je przekroczyć. Działam z myślą o Twoim zadowoleniu, gwarantując solidność i niezawodność usług. Zapraszam do kontaktu ze mną, by dowiedzieć się więcej o tym, jak mogę nadać Twojemu samochodowi wyjątkowy charakter! + <h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2"> + Profesjonalna opieka nad Twoim samochodem + </h3> + W Custom Works zawsze dokładam wszelkich starań, aby spełnić oczekiwania moich klientów, a nawet je przekroczyć. Działam + z myślą o Twoim zadowoleniu, gwarantując solidność i niezawodność usług. Zapraszam do kontaktu ze mną, by dowiedzieć + się więcej o tym, jak mogę nadać Twojemu samochodowi wyjątkowy charakter! </Fragment> <Fragment slot="bg"> @@ -165,8 +170,12 @@ const metadata = { }} > <Fragment slot="content"> - <h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2">Kompleksowe rozwiązania dla Twojego samochodu</h3> - Oferuję pełen zakres usług detailingowych, od podstawowego mycia po zaawansowane powłoki ochronne. Każdy samochód traktuję indywidualnie, dostosowując metody pracy do jego specyfiki. Używam tylko sprawdzonych i certyfikowanych produktów, gwarantując trwałe i satysfakcjonujące rezultaty. + <h3 class="text-2xl font-bold tracking-tight dark:text-white sm:text-3xl mb-2"> + Kompleksowe rozwiązania dla Twojego samochodu + </h3> + Oferuję pełen zakres usług detailingowych, od podstawowego mycia po zaawansowane powłoki ochronne. Każdy samochód traktuję + indywidualnie, dostosowując metody pracy do jego specyfiki. Używam tylko sprawdzonych i certyfikowanych produktów, + gwarantując trwałe i satysfakcjonujące rezultaty. </Fragment> <Fragment slot="bg"> @@ -253,10 +262,11 @@ const metadata = { download: true, }, ]} - > + > <Fragment slot="disclaimer"> - Podane ceny są cenami orientacyjnymi, dokładna wycena podawana jest po oględzinach pojazdu.<br><br> - Lista usług jest orientacyjna i ogólna, jeśli jesteś zainteresowany czymś nietypowym to zapraszam do kontaktu, postaram się pomóc. + Podane ceny są cenami orientacyjnymi, dokładna wycena podawana jest po oględzinach pojazdu.<br /><br /> + Lista usług jest orientacyjna i ogólna, jeśli jesteś zainteresowany czymś nietypowym to zapraszam do kontaktu, postaram + się pomóc. </Fragment> </Pricing> @@ -282,13 +292,7 @@ const metadata = { <!-- Mapa **************** --> - <Map - title="Lokalizacja" - location="Bydgoszcz, Miedzyń" - lat={53.13105} - lon={17.93132} - height={600} - /> + <Map title="Lokalizacja" location="Bydgoszcz, Miedzyń" lat={53.13105} lon={17.93132} height={600} /> <!-- Kontakt **************** --> @@ -309,5 +313,4 @@ const metadata = { }, ]} /> - </Layout> diff --git a/src/utils/images.ts b/src/utils/images.ts index d6f14f0..a33584e 100644 --- a/src/utils/images.ts +++ b/src/utils/images.ts @@ -84,9 +84,7 @@ export const adaptOpenGraphImages = async ( typeof resolvedImage !== 'string' && resolvedImage?.width <= defaultWidth ? [resolvedImage?.width, resolvedImage?.height] : [defaultWidth, defaultHeight]; - _image = ( - await astroAssetsOptimizer(resolvedImage, [dimensions[0]], dimensions[0], dimensions[1], 'jpg') - )[0]; + _image = (await astroAssetsOptimizer(resolvedImage, [dimensions[0]], dimensions[0], dimensions[1], 'jpg'))[0]; } if (typeof _image === 'object') { |
