initial commit

This commit is contained in:
2026-03-15 23:38:36 -04:00
parent b7f8423b75
commit 861fb44ece
126 changed files with 5682 additions and 136 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -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> -->

View File

@@ -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>

View File

@@ -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
View 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>

View File

@@ -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

View File

@@ -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>