initial commit
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
---
|
||||
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
import { getLangFromUrl, t } from '../i18n/utils';
|
||||
|
||||
const lang = getLangFromUrl(Astro.url);
|
||||
|
||||
@@ -5,6 +5,8 @@ import { getLangFromUrl, t } from '../i18n/utils';
|
||||
import general from '../content/settings/general.json';
|
||||
|
||||
const lang = getLangFromUrl(Astro.url);
|
||||
return Astro.redirect('/404');
|
||||
|
||||
---
|
||||
|
||||
<BaseLayout
|
||||
|
||||
@@ -1,2 +1,7 @@
|
||||
<a href="/landing-1">Landing 1</a>
|
||||
---
|
||||
return Astro.redirect('/landing-1');
|
||||
|
||||
---
|
||||
<!-- <a href="/landing-1">Landing 1</a>
|
||||
<a href="/landing-2">Landing 2</a>
|
||||
<a href="/landing-3">Landing 3</a> -->
|
||||
|
||||
@@ -5,19 +5,26 @@ import WhyUs from '../components/WhyUs.astro';
|
||||
import CTABanner from '../components/CTABanner.astro';
|
||||
import { getLangFromUrl, t } from '../i18n/utils';
|
||||
import general from '../content/settings/general.json';
|
||||
import BaseLayout1 from '@/layouts/BaseLayout-1.astro';
|
||||
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
import Header from '../components/Header.astro';
|
||||
import Testimonials from '../components/ui/testimonials/Grid';
|
||||
import Footer from '../components/Footer.astro';
|
||||
const lang = getLangFromUrl(Astro.url);
|
||||
|
||||
---
|
||||
|
||||
<BaseLayout1
|
||||
<BaseLayout
|
||||
title="Peintres Décorateurs | Laval & Rive-Nord"
|
||||
description={`${general.siteName} — Peintres décorateurs professionnels à Laval et sur la Rive-Nord. Peinture résidentielle et commerciale, décoration intérieure et extérieure. Soumission gratuite.`}
|
||||
canonical="/"
|
||||
>
|
||||
<Header />
|
||||
<Hero />
|
||||
<ServicesPreview />
|
||||
<WhyUs />
|
||||
<Testimonials client:load />
|
||||
<CTABanner />
|
||||
<Footer />
|
||||
|
||||
</BaseLayout>
|
||||
|
||||
|
||||
@@ -1,23 +1,29 @@
|
||||
---
|
||||
import Hero from '../components/Hero.astro';
|
||||
import ServicesPreview from '../components/ServicesPreview.astro';
|
||||
import WhyUs from '../components/WhyUs.astro';
|
||||
import CTABanner from '../components/CTABanner.astro';
|
||||
import { getLangFromUrl, t } from '../i18n/utils';
|
||||
import general from '../content/settings/general.json';
|
||||
import BaseLayout2 from '@/layouts/BaseLayout-2.astro';
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
import SimpleBackgroundVideo from '../components/ui/heroes/SimpleBackgroundVideo';
|
||||
import TwoRowBentoGridWithThreeColumnSecondRow from '@/components/ui/bento-grids/TwoRowBentoGridWithThreeColumnSecondRow';
|
||||
import WithFadingImage from '@/components/ui/product-features/WithFadingImage';
|
||||
import Testimonials from '../components/ui/testimonials/Grid';
|
||||
import Footer from '../components/Footer.astro';
|
||||
const lang = getLangFromUrl(Astro.url);
|
||||
---
|
||||
|
||||
<BaseLayout2
|
||||
<BaseLayout
|
||||
title="Peintres Décorateurs | Laval & Rive-Nord"
|
||||
description={`${general.siteName} — Peintres décorateurs professionnels à Laval et sur la Rive-Nord. Peinture résidentielle et commerciale, décoration intérieure et extérieure. Soumission gratuite.`}
|
||||
canonical="/"
|
||||
>
|
||||
|
||||
<Hero />
|
||||
<ServicesPreview />
|
||||
<WhyUs />
|
||||
<SimpleBackgroundVideo client:load />
|
||||
<TwoRowBentoGridWithThreeColumnSecondRow client:load />
|
||||
<WithFadingImage client:load />
|
||||
<Testimonials client:load />
|
||||
<CTABanner />
|
||||
<Footer />
|
||||
|
||||
</BaseLayout>
|
||||
|
||||
|
||||
119
src/pages/landing-3.astro
Normal file
119
src/pages/landing-3.astro
Normal file
@@ -0,0 +1,119 @@
|
||||
---
|
||||
import { getLangFromUrl, t } from '../i18n/utils';
|
||||
import general from '../content/settings/general.json';
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
import SimpleCenteredWithImageSlider from '@/components/ui/heroes/SimpleCenteredWithImageSlider';
|
||||
import WithAlternatingSections from '@/components/ui/product-features/WithAlternatingSections';
|
||||
import { getCollection } from 'astro:content';
|
||||
import WithTieredImages from '@/components/ui/product-features/WithTieredImages';
|
||||
import FullWidthWithBackgroundImageAndLargeContent from '@/components/ui/promo-sections/FullWidthWithBackgroundImageAndLargeContent';
|
||||
import Footer from '../components/Footer.astro';
|
||||
const lang = getLangFromUrl(Astro.url);
|
||||
|
||||
const ctaImage = (await import('@/assets/Website Content/Photos/cozy-modern-kitchen-room-interior-design-with-dark-2024-04-01-23-13-59-utc.webp')).default;
|
||||
|
||||
const allServices = await getCollection('services');
|
||||
const services = allServices
|
||||
.filter(s => s.id.startsWith('fr/'))
|
||||
.sort((a, b) => a.data.order - b.data.order);
|
||||
|
||||
const serviceImages: Record<string, { src: import('astro').ImageMetadata; alt: string }> = {
|
||||
interior: {
|
||||
src: (await import('@/assets/photos/empty-room-blue-wall-with-moulding-and-parquet-fl-2023-11-27-04-52-31-utc.webp')).default,
|
||||
alt: 'Salon avec peinture intérieure soignée',
|
||||
},
|
||||
exterior: {
|
||||
src: (await import('@/assets/Website Content/Photos/wooden-deck-with-sky-2023-11-27-05-29-44-utc.webp')).default,
|
||||
alt: 'Maison avec peinture extérieure',
|
||||
},
|
||||
commercial: {
|
||||
src: (await import('@/assets/Website Content/Photos/minimalist-bright-office-room-interior-design-mee-2023-11-27-05-17-04-utc.webp')).default,
|
||||
alt: 'Espace commercial peint',
|
||||
},
|
||||
decoration: {
|
||||
src: (await import('@/assets/Website Content/Photos/Mural_Jerkspot_02.jpg')).default,
|
||||
alt: 'Décoration intérieure et murale',
|
||||
},
|
||||
renovation: {
|
||||
src: (await import('@/assets/Website Content/Photos/amazing-design-of-a-room-with-doors-and-parquet-fl-2023-11-27-05-33-04-utc.webp')).default,
|
||||
alt: 'Rénovation et finitions',
|
||||
},
|
||||
};
|
||||
|
||||
const features = services.map(service => {
|
||||
const icon = service.data.icon ?? 'interior';
|
||||
const img = serviceImages[icon] ?? serviceImages.interior;
|
||||
const imageSrc = (img.src as import('astro').ImageMetadata).src;
|
||||
return {
|
||||
name: service.data.title,
|
||||
description: service.data.description,
|
||||
imageSrc,
|
||||
imageAlt: img.alt,
|
||||
};
|
||||
});
|
||||
---
|
||||
|
||||
<BaseLayout
|
||||
title="Peintres Décorateurs | Laval & Rive-Nord"
|
||||
description={`${general.siteName} — Peintres décorateurs professionnels à Laval et sur la Rive-Nord. Peinture résidentielle et commerciale, décoration intérieure et extérieure. Soumission gratuite.`}
|
||||
canonical="/"
|
||||
>
|
||||
<SimpleCenteredWithImageSlider client:load />
|
||||
<WithAlternatingSections
|
||||
client:load
|
||||
features={features}
|
||||
title={t(lang, 'services.title')}
|
||||
subtitle={t(lang, 'services.subtitle')}
|
||||
/>
|
||||
<WithTieredImages client:load
|
||||
title="Pourquoi choisir Cachet?"
|
||||
subtitle="Une expertise reconnue au service de votre satisfaction"
|
||||
cards={[
|
||||
{
|
||||
icon: 'shield',
|
||||
title: 'Certifié RBQ',
|
||||
description: 'Entrepreneur certifié par la Régie du Bâtiment du Québec (RBQ : 5839 8736 01). Travaux assurés et conformes aux normes.',
|
||||
},
|
||||
{
|
||||
icon: 'clock',
|
||||
title: 'Ponctualité et fiabilité',
|
||||
description: 'Nous respectons nos engagements. Les délais sont tenus et votre projet est livré à temps, selon les standards convenus.',
|
||||
},
|
||||
{
|
||||
icon: 'team',
|
||||
title: 'Équipe professionnelle',
|
||||
description: 'Nos peintres décorateurs sont formés et expérimentés. Chaque détail compte pour nous, de la préparation à la finition.',
|
||||
},
|
||||
{
|
||||
icon: 'location',
|
||||
title: 'Localisation',
|
||||
description: 'Nous sommes situés à Laval et sur la Rive-Nord. Nous pouvons vous accompagner dans vos projets de peinture et décoration.',
|
||||
},
|
||||
{
|
||||
icon: 'star',
|
||||
title: 'Excellence',
|
||||
description: 'Nous sommes une entreprise de peinture et décoration de qualité. Nous nous engageons à vous fournir un service de qualité.',
|
||||
},
|
||||
]}
|
||||
images={{
|
||||
main: (await import('@/assets/Website Content/Photos/silver-and-white-apartment-interior-2023-11-27-05-32-03-utc.webp')).default.src,
|
||||
mainAlt: 'Peintres décorateurs au travail',
|
||||
detail2: (await import('@/assets/Website Content/Photos/choosing-wall-paints-2023-11-27-05-09-01-utc.webp')).default.src,
|
||||
detail2Alt: 'Peintres décorateurs au travail',
|
||||
detail1: (await import('@/assets/Website Content/Photos/choosing-wall-paints-2023-11-27-04-59-54-utc.webp')).default.src,
|
||||
detail1Alt: 'Peintres décorateurs au travail',
|
||||
}}
|
||||
/>
|
||||
<FullWidthWithBackgroundImageAndLargeContent
|
||||
client:load
|
||||
title={t(lang, 'cta_banner.title')}
|
||||
subtitle={t(lang, 'cta_banner.subtitle')}
|
||||
buttonText={t(lang, 'cta_banner.button')}
|
||||
buttonHref="/soumission"
|
||||
imageSrc={ctaImage.src}
|
||||
imageAlt="Intérieur peint avec soin par Cachet Peintres Décorateurs"
|
||||
/>
|
||||
<Footer />
|
||||
|
||||
</BaseLayout>
|
||||
|
||||
@@ -18,6 +18,9 @@ const icons: Record<string, string> = {
|
||||
decoration: `<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>`,
|
||||
renovation: `<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>`,
|
||||
};
|
||||
|
||||
return Astro.redirect('/404');
|
||||
|
||||
---
|
||||
|
||||
<BaseLayout
|
||||
|
||||
@@ -5,8 +5,9 @@ import { getLangFromUrl, t } from '../i18n/utils';
|
||||
import general from '../content/settings/general.json';
|
||||
|
||||
const lang = getLangFromUrl(Astro.url);
|
||||
---
|
||||
return Astro.redirect('/404');
|
||||
|
||||
---
|
||||
<BaseLayout
|
||||
title={t(lang, 'nav.soumission')}
|
||||
description="Demandez votre soumission gratuite pour vos travaux de peinture ou décoration à Laval et sur la Rive-Nord. Cachet Peintres Décorateurs vous répond rapidement."
|
||||
@@ -256,3 +257,4 @@ const lang = getLangFromUrl(Astro.url);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user