1.01 audrey's edits
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 46s

This commit is contained in:
2026-03-28 15:37:45 -04:00
parent 539e537572
commit 067a151be1
29 changed files with 53 additions and 67 deletions

View File

@@ -1,6 +1,6 @@
# Cachet Peintres Décorateurs — Site Web # Cachet Peintres Décorateurs — Site Web
Site vitrine statique pour **Cachet Peintres Décorateurs** (9500-5609 Québec Inc). Site vitrine statique pour **Cachet Peintres Décorateurs** (CACHETDECO).
Construit avec **Astro v5 + Tailwind v4 + Decap CMS**, déployé sur **Cloudflare Pages**. Construit avec **Astro v5 + Tailwind v4 + Decap CMS**, déployé sur **Cloudflare Pages**.
## Stack ## Stack
@@ -180,7 +180,6 @@ Aucune refactorisation structurelle n'est nécessaire — l'infrastructure est d
Conformément aux exigences légales québécoises, les informations suivantes doivent apparaître visiblement sur le site : Conformément aux exigences légales québécoises, les informations suivantes doivent apparaître visiblement sur le site :
- **Raison sociale :** 9500-5609 Québec Inc
- **Numéro RBQ :** 5839 8736 01 (obligatoire pour tout service nécessitant une modification d'un bâtiment) - **Numéro RBQ :** 5839 8736 01 (obligatoire pour tout service nécessitant une modification d'un bâtiment)
Ces informations sont affichées dans le footer de chaque page. Ces informations sont affichées dans le footer de chaque page.

0
guidline Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

@@ -27,7 +27,7 @@ export default function Header({
<div className="flex lg:flex-1"> <div className="flex lg:flex-1">
<a <a
href="/" href="/"
className="flex items-center justify-center bg-[white] rounded-full shadow-md p-2" className="flex items-center justify-center bg-[white] rounded-full shadow-md p-2 lg:translate-y-1.5"
> >
<div className="rounded-full "> <div className="rounded-full ">
<span className="sr-only">{general.siteName}</span> <span className="sr-only">{general.siteName}</span>
@@ -70,21 +70,21 @@ export default function Header({
{ctaLabel} {ctaLabel}
</a> */} </a> */}
<motion.dl <motion.dl
className="flex gap-x-2 items-center justify-center text-xl font-semibold bg-white rounded-full p-2" className="m-0 inline-flex items-center gap-1.5 rounded-full bg-white px-3 py-2 text-xl font-semibold font-[family-name:var(--font-body)]"
whileHover={{ scale: 1.05 }} whileHover={{ scale: 1.05 }}
transition={{ type: "spring", stiffness: 400, damping: 25 }} transition={{ type: "spring", stiffness: 400, damping: 25 }}
> >
<dt className="flex-none"> <dt className="m-0 flex shrink-0 items-center">
<span className="sr-only">Telephone</span> <span className="sr-only">Telephone</span>
<PhoneIcon <PhoneIcon
aria-hidden="true" aria-hidden="true"
className="h-8 w-8 text-brand-600" className="h-8 w-8 text-brand-600"
/> />
</dt> </dt>
<dd> <dd className="m-0 flex min-w-0 items-center justify-center">
<a <a
href={phoneHref} href={phoneHref}
className="text-brand-600 hover:text-brand-700 " className="whitespace-nowrap tabular-nums tracking-tight text-brand-600 hover:text-brand-700"
> >
{general.phone} {general.phone}
</a> </a>

View File

@@ -44,11 +44,11 @@ export default function WithAlternatingSections({
<div className="mx-auto max-w-3xl text-center"> <div className="mx-auto max-w-3xl text-center">
<motion.h2 <motion.h2
{...fadeUp} {...fadeUp}
className="text-4xl font-bold tracking-tight text-brand-600 sm:text-5xl" className="text-4xl font-bold tracking-tight text-brand-600 sm:text-5xl lg:text-4xl"
> >
{title} {title}
</motion.h2> </motion.h2>
<motion.p {...fadeUp} className="mt-4 text-lg text-brand-500"> <motion.p {...fadeUp} className="mt-4 text-lg text-brand-500 lg:text-base">
{subtitle} {subtitle}
</motion.p> </motion.p>
</div> </div>
@@ -67,11 +67,11 @@ export default function WithAlternatingSections({
> >
<motion.h3 <motion.h3
{...fadeUp} {...fadeUp}
className="text-4xl font-semibold tracking-tight text-brand-600" className="text-4xl font-semibold tracking-tight text-brand-600 lg:text-3xl"
> >
{feature.name} {feature.name}
</motion.h3> </motion.h3>
<motion.p {...fadeUp} className="mt-2 text-base text-brand-800"> <motion.p {...fadeUp} className="mt-2 text-base text-brand-800 lg:text-[0.9375rem] lg:leading-relaxed font-[family-name:var(--font-body)]">
{feature.description} {feature.description}
</motion.p> </motion.p>
</div> </div>

View File

@@ -84,7 +84,7 @@ export default function Grid({ sectionLabel, title, items }: Props) {
</motion.h2> </motion.h2>
<motion.p <motion.p
{...fadeUp(0.1)} {...fadeUp(0.1)}
className="mt-2 text-4xl font-semibold tracking-tight text-balance text-brand-600 sm:text-5xl dark:text-white" className="mt-2 text-4xl font-semibold tracking-tight text-balance text-brand-600 sm:text-5xl lg:text-4xl dark:text-white"
> >
{title} {title}
</motion.p> </motion.p>

View File

@@ -75,7 +75,7 @@ export default function WithTieredImages({
</motion.h2> </motion.h2>
<motion.p <motion.p
{...fadeUp(0.1)} {...fadeUp(0.1)}
className="mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl" className="mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl lg:text-4xl"
> >
{subtitle} {subtitle}
</motion.p> </motion.p>
@@ -121,8 +121,8 @@ export default function WithTieredImages({
</svg> </svg>
</div> </div>
<div> <div>
<dt className="text-base font-medium text-white">{card.title}</dt> <dt className="text-base font-medium text-white lg:text-[0.9375rem]">{card.title}</dt>
<dd className="mt-3 text-base text-white/90">{card.description}</dd> <dd className="mt-3 text-base text-white/90 lg:text-[0.9375rem] lg:leading-relaxed font-[family-name:var(--font-body)]">{card.description}</dd>
</div> </div>
</motion.div> </motion.div>
))} ))}

View File

@@ -47,7 +47,7 @@ const structuredData = {
email: general.email, email: general.email,
address: { address: {
'@type': 'PostalAddress', '@type': 'PostalAddress',
addressLocality: 'Laval', addressLocality: 'Sainte-Catherine',
addressRegion: 'QC', addressRegion: 'QC',
addressCountry: 'CA', addressCountry: 'CA',
}, },

View File

@@ -53,11 +53,11 @@ export default function FullWidthWithBackgroundImageAndLargeContent({
<motion.h2 <motion.h2
{...fadeUp(0)} {...fadeUp(0)}
id="cta-heading" id="cta-heading"
className="text-3xl font-bold tracking-tight text-brand-50 sm:text-4xl lg:text-5xl" className="text-3xl font-bold tracking-tight text-brand-50 sm:text-4xl lg:text-4xl"
> >
{title} {title}
</motion.h2> </motion.h2>
<motion.p {...fadeUp(0.1)} className="mt-4 text-lg text-brand-50/95 sm:text-xl"> <motion.p {...fadeUp(0.1)} className="mt-4 text-lg text-brand-50/95 sm:text-xl lg:text-lg font-[family-name:var(--font-body)]">
{subtitle} {subtitle}
</motion.p> </motion.p>
<motion.a <motion.a

View File

@@ -21,7 +21,6 @@ type Props = {
navTitle: string; navTitle: string;
contactTitle: string; contactTitle: string;
rbq: string; rbq: string;
neq: string;
}; };
navLinks: NavLink[]; navLinks: NavLink[];
legalNotice: string; legalNotice: string;
@@ -302,10 +301,8 @@ export default function FooterAnimated({
MBCube Consulting MBCube Consulting
</motion.a> </motion.a>
</motion.p> </motion.p>
<p className="flex items-center gap-2.5 text-xs tracking-[0.02em] text-white/40"> <p className="text-xs tracking-[0.02em] text-white/40">
<span>{footer.rbq}</span> <span>{footer.rbq}</span>
<span aria-hidden="true">·</span>
<span>{footer.neq}</span>
</p> </p>
</div> </div>
</motion.div> </motion.div>

View File

@@ -49,7 +49,7 @@ export default function Hero({ content }: { content: HeroContent }) {
return ( return (
<div className="bg-white dark:bg-gray-900"> <div className="bg-white dark:bg-gray-900">
<div className="relative isolate overflow-hidden h-screen min-h-[600px]"> <div className="relative isolate overflow-hidden h-screen min-h-[800px]">
<Carousel <Carousel
className="absolute inset-0 -z-10 size-full [&_[data-slot='carousel-content']]:h-full" className="absolute inset-0 -z-10 size-full [&_[data-slot='carousel-content']]:h-full"
opts={{ loop: true, dragFree: false }} opts={{ loop: true, dragFree: false }}
@@ -63,22 +63,15 @@ export default function Hero({ content }: { content: HeroContent }) {
alt={slide.alt} alt={slide.alt}
className="size-full object-cover" className="size-full object-cover"
/> />
<div className="absolute inset-0 bg-black/50" /> <div className="absolute inset-0 bg-gradient-to-b from-black/00 via-black/35 to-black/60" />
</CarouselItem> </CarouselItem>
))} ))}
</CarouselContent> </CarouselContent>
</Carousel> </Carousel>
<div className="relative z-10 mx-auto max-w-7xl px-6 lg:px-8 h-full flex items-center justify-center pt-14"> <div className="relative z-10 mx-auto max-w-7xl px-6 lg:px-8 h-full flex items-center justify-center pt-14">
<div className="mx-auto max-w-4xl text-center"> <div className="mx-auto max-w-4xl text-center lg:mt-20">
<div className="relative rounded-lg px-6 py-2"> <div className="relative rounded-lg px-6 py-2">
<motion.div
className="absolute inset-0 rounded-lg bg-brand-50"
initial={{ opacity: 0, scaleY: 0 }}
animate={{ opacity: 1, scaleY: 1 }}
style={{ originY: "50%" }}
transition={{ delay: 0.85, duration: 1, ease: [0.22, 1, 0.36, 1] }}
/>
<svg <svg
className="relative" className="relative"
viewBox="0 0 1390 500" viewBox="0 0 1390 500"
@@ -89,7 +82,8 @@ export default function Hero({ content }: { content: HeroContent }) {
y="312" y="312"
fontFamily="Cocogoose" fontFamily="Cocogoose"
fontSize="350" fontSize="350"
className="fill-brand-600" className="fill-brand-600
[text-shadow:0_1px_0_white,0_-1px_0_white,1px_0_0_white,-1px_0_0_white,1px_1px_0_white,-1px_-1px_0_white,1px_-1px_0_white,-1px_1px_0_white]"
{...fadeUp(1.05)} {...fadeUp(1.05)}
> >
CACHET CACHET
@@ -98,7 +92,8 @@ export default function Hero({ content }: { content: HeroContent }) {
id="Rectangle" id="Rectangle"
fill="#b0b0ac" fill="#b0b0ac"
fillRule="evenodd" fillRule="evenodd"
stroke="none" stroke="white"
strokeWidth="2"
d="M 228 360 L 1161 360 L 1161 334 L 228 334 Z" d="M 228 360 L 1161 360 L 1161 334 L 228 334 Z"
initial={{ scaleX: 0 }} initial={{ scaleX: 0 }}
animate={{ scaleX: 1 }} animate={{ scaleX: 1 }}
@@ -119,9 +114,8 @@ export default function Hero({ content }: { content: HeroContent }) {
fontFamily="Geoform" fontFamily="Geoform"
fontSize="72" fontSize="72"
fontWeight="700" fontWeight="700"
className="fill-graphite-600" className="fill-graphite-600 [text-shadow:0_1px_0_white,0_-1px_0_white,1px_0_0_white,-1px_0_0_white,1px_1px_0_white,-1px_-1px_0_white,1px_-1px_0_white,-1px_1px_0_white]"
{...fadeUp(1.05)} {...fadeUp(1.05)}
> >
PEINTRES DECORATEURS PEINTRES DECORATEURS
</motion.text> </motion.text>
@@ -130,7 +124,7 @@ export default function Hero({ content }: { content: HeroContent }) {
<motion.p <motion.p
{...fadeUp(1.15)} {...fadeUp(1.15)}
className="p-4 mt-8 text-lg font-medium text-pretty text-white sm:text-xl/8 lg:text-2xl/8" className="p-4 text-lg font-medium font-[family-name:var(--font-body)] text-pretty text-white sm:text-xl/8 lg:text-2xl/8"
> >
{subtitle} {subtitle}
</motion.p> </motion.p>

View File

@@ -44,13 +44,13 @@ const fadeUp = (delay: number) => ({
<motion.h2 <motion.h2
{...fadeUp(0.15)} {...fadeUp(0.15)}
id="sale-heading" id="sale-heading"
className="text-4xl font-bold tracking-tight text-white sm:text-5xl lg:text-6xl" className="text-4xl font-bold tracking-tight text-white sm:text-5xl lg:text-5xl"
> >
{title} {title}
</motion.h2> </motion.h2>
<motion.p <motion.p
{...fadeUp(0.3)} {...fadeUp(0.3)}
className="mx-auto mt-4 max-w-xl text-xl text-white" className="mx-auto mt-4 max-w-xl text-xl text-white lg:text-xl font-[family-name:var(--font-body)]"
> >
{subtitle} {subtitle}
</motion.p> </motion.p>

View File

@@ -88,7 +88,7 @@ const contact = defineCollection({
}), }),
breadcrumbHome: z.string(), breadcrumbHome: z.string(),
rbq: z.string(), rbq: z.string(),
neq: z.string(), neq: z.string().optional(),
}), }),
}); });
@@ -164,7 +164,7 @@ const footer = defineCollection({
serviceAreasTitle: z.string(), serviceAreasTitle: z.string(),
legal: z.string(), legal: z.string(),
rbq: z.string(), rbq: z.string(),
neq: z.string(), neq: z.string().optional(),
facebookLabel: z.string(), facebookLabel: z.string(),
serviceLinks: z.array( serviceLinks: z.array(
z.object({ z.object({

View File

@@ -15,7 +15,7 @@
"facebookCta": "Suivez-nous sur Facebook", "facebookCta": "Suivez-nous sur Facebook",
"map": { "map": {
"title": "Notre territoire de service", "title": "Notre territoire de service",
"region": "Laval & Rive-Nord, Québec", "region": "Rive Sud & Grand Montréal, Québec",
"mapsButton": "Voir sur Google Maps" "mapsButton": "Voir sur Google Maps"
}, },
"ctaCard": { "ctaCard": {
@@ -24,6 +24,5 @@
"button": "Soumission gratuite" "button": "Soumission gratuite"
}, },
"breadcrumbHome": "Accueil", "breadcrumbHome": "Accueil",
"rbq": "RBQ : ", "rbq": "RBQ : "
"neq": "NEQ : "
} }

View File

@@ -4,9 +4,8 @@
"servicesTitle": "Nos services", "servicesTitle": "Nos services",
"contactTitle": "Contact", "contactTitle": "Contact",
"serviceAreasTitle": "Zone de service", "serviceAreasTitle": "Zone de service",
"legal": "© {year} 9500-5609 Québec Inc. Tous droits réservés.", "legal": "© {year} CACHETDECO. Tous droits réservés.",
"rbq": "RBQ : 5839 8736 01", "rbq": "RBQ : 5839 8736 01",
"neq": "NEQ : 9500-5609",
"facebookLabel": "Facebook", "facebookLabel": "Facebook",
"serviceLinks": [ "serviceLinks": [
{ "label": "Peinture intérieure", "href": "/#services" }, { "label": "Peinture intérieure", "href": "/#services" },

View File

@@ -1,7 +1,7 @@
{ {
"title": "CACHET", "title": "CACHET",
"title2": "PEINTRES DÉCORATEURS", "title2": "PEINTRES DÉCORATEURS",
"subtitle": "Travaux de peinture résidentielle et commerciale, décoration intérieure et extérieure. Qualité professionnelle sur la Rive-Nord et Laval.", "subtitle": "Travaux de peinture résidentielle et commerciale pour l'intérieur et l'extérieur. Qualité professionnelle dans le Grand Montréal et sur la Rive Sud.",
"cta": "Contactez-nous", "cta": "Contactez-nous",
"ctaHref": "/contact" "ctaHref": "/contact"
} }

View File

@@ -25,7 +25,7 @@
{ {
"icon": "location", "icon": "location",
"title": "Localisation", "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." "description": "Nous sommes situés sur la Rive Sud et dans le Grand Montréal. Nous pouvons vous accompagner dans vos projets de peinture et décoration."
}, },
{ {
"icon": "star", "icon": "star",

View File

@@ -1,5 +1,5 @@
--- ---
title: Commerciale title: Peinture commerciale
description: Solutions de peinture adaptées aux besoins des bureaux, des commerces et des institutions. Nos partenaires certifiés par la Commission de la Construction du Québec seront là pour vous guider dans un large éventail de projets. description: Solutions de peinture adaptées aux besoins des bureaux, des commerces et des institutions. Nos partenaires certifiés par la Commission de la Construction du Québec seront là pour vous guider dans un large éventail de projets.
icon: commercial icon: commercial
order: 3 order: 3

View File

@@ -1,5 +1,5 @@
--- ---
title: Extérieure title: Peinture extérieure
description: Préservez et embellissez vos espaces extérieurs! Réfection d'espaces extérieurs tels que les terrasses, les balcons, les rambardes, les rampes et les garde-corps. Des travaux qui peuvent résister aux conditions climatiques du Québec pour une durabilité maximale. description: Préservez et embellissez vos espaces extérieurs! Réfection d'espaces extérieurs tels que les terrasses, les balcons, les rambardes, les rampes et les garde-corps. Des travaux qui peuvent résister aux conditions climatiques du Québec pour une durabilité maximale.
icon: exterior icon: exterior
order: 2 order: 2

View File

@@ -1,5 +1,5 @@
--- ---
title: Intérieure title: Peinture intérieure
description: Réaménagement complet de votre espace intérieur. Nous nous chargeons de préparer les surfaces, d'appliquer soigneusement et de finaliser de manière impeccable tous les types de pièces. description: Réaménagement complet de votre espace intérieur. Nous nous chargeons de préparer les surfaces, d'appliquer soigneusement et de finaliser de manière impeccable tous les types de pièces.
icon: interior icon: interior
order: 1 order: 1

View File

@@ -1,7 +1,7 @@
{ {
"brandName": "Cachet", "brandName": "Cachet",
"siteName": "Cachet Peintres Décorateurs", "siteName": "Cachet Peintres Décorateurs",
"legalName": "9500-5609 Québec Inc", "legalName": "CACHETDECO",
"tagline": "Peintres Décorateurs professionnels", "tagline": "Peintres Décorateurs professionnels",
"taglineHero": "Qualité et expertise en peinture résidentielle et commerciale", "taglineHero": "Qualité et expertise en peinture résidentielle et commerciale",
"phone": "(514) 552-1049", "phone": "(514) 552-1049",
@@ -11,11 +11,10 @@
"fromAddressSubmission": "Cachet Peintres Décorateurs <notifications@mbcubeconsulting.ca>", "fromAddressSubmission": "Cachet Peintres Décorateurs <notifications@mbcubeconsulting.ca>",
"toAddressSubmission": "mouad@mbcubeconsulting.ca", "toAddressSubmission": "mouad@mbcubeconsulting.ca",
"address": "Sainte Catherine, Québec", "address": "Sainte Catherine, Québec",
"serviceArea": "Rive sud et Le Grand Montréal", "serviceArea": "Rive Sud et Grand Montréal",
"facebook": "https://www.facebook.com/cachetdecor/", "facebook": "https://www.facebook.com/cachetdecor/",
"instagram": "https://www.instagram.com/cachet.deco/", "instagram": "https://www.instagram.com/cachet.deco/",
"linkedin": "", "linkedin": "",
"rbq": "5839 8736 01", "rbq": "5839 8736 01",
"neq": "9500-5609", "carouselDelay": 4000
"carouselDelay": 2500
} }

View File

@@ -1,8 +1,8 @@
{ {
"defaultTitle": "Cachet Peintres Décorateurs | Rive sud et Le Grand Montréal", "defaultTitle": "Cachet Peintres Décorateurs | Rive Sud et Grand Montréal",
"titleTemplate": "%s | Cachet Peintres Décorateurs", "titleTemplate": "%s | Cachet Peintres Décorateurs",
"defaultDescription": "Peintres décorateurs professionnels à Rive sud et Le Grand Montréal. Peinture résidentielle et commerciale, décoration intérieure et extérieure. RBQ 5839 8736 01. Soumission gratuite.", "defaultDescription": "Peintres décorateurs professionnels sur la Rive Sud et dans le Grand Montréal. Peinture résidentielle et commerciale, intérieur et extérieur. RBQ 5839 8736 01. Soumission gratuite.",
"keywords": "peintre Rive sud, peintre Montréal, peinture résidentielle Rive sud, peinture résidentielle Montréal, peinture commerciale Rive sud, peinture commerciale Montréal, décoration intérieure Rive sud, décoration intérieure Montréal, peintres décorateurs Rive sud, peintres décorateurs Montréal, peinture extérieure Rive sud, peinture extérieure Montréal, rénovation Rive sud, rénovation Montréal, soumission peinture gratuite Rive sud, soumission peinture gratuite Montréal", "keywords": "peintre Rive Sud, peintre Grand Montréal, peinture résidentielle Rive Sud, peinture résidentielle Montréal, peinture commerciale Rive Sud, peinture commerciale Montréal, peintres décorateurs Rive Sud, peintres décorateurs Montréal, peinture extérieure Rive Sud, peinture extérieure Montréal, rénovation Rive Sud, rénovation Montréal, soumission peinture gratuite Rive Sud, soumission peinture gratuite Montréal",
"ogImage": "/images/logo-full.webp", "ogImage": "/images/logo-full.webp",
"twitterCard": "summary_large_image" "twitterCard": "summary_large_image"
} }

View File

@@ -11,7 +11,7 @@
"phoneLabel": "Téléphone", "phoneLabel": "Téléphone",
"phonePlaceholder": "(450) 555-1234", "phonePlaceholder": "(450) 555-1234",
"workAddressLabel": "Adresse des travaux", "workAddressLabel": "Adresse des travaux",
"workAddressPlaceholder": "123 rue Principale, Laval, QC", "workAddressPlaceholder": "123 rue Principale, Sainte-Catherine, QC",
"serviceTypeLabel": "Type de service", "serviceTypeLabel": "Type de service",
"serviceTypePlaceholder": "Sélectionnez un service", "serviceTypePlaceholder": "Sélectionnez un service",
"serviceTypeOptions": { "serviceTypeOptions": {

View File

@@ -63,7 +63,7 @@ function buildContactNotificationHtml(data: ContactBody): string {
</div> </div>
</div> </div>
<p style="margin:24px 0 0;text-align:center;font-size:11px;color:#999"> <p style="margin:24px 0 0;text-align:center;font-size:11px;color:#999">
Cachet Peintres Décorateurs · 9500-5609 Québec Inc · RBQ 5839 8736 01 Cachet Peintres Décorateurs · CACHETDECO · RBQ 5839 8736 01
</p> </p>
</div> </div>
</body> </body>

View File

@@ -137,7 +137,7 @@ function buildNotificationHtml(data: SubmissionPayload, attachmentNames: string[
</div> </div>
</div> </div>
<p style="margin:24px 0 0;text-align:center;font-size:11px;color:#999"> <p style="margin:24px 0 0;text-align:center;font-size:11px;color:#999">
Cachet Peintres Décorateurs · 9500-5609 Québec Inc · RBQ 5839 8736 01 Cachet Peintres Décorateurs · RBQ 5839 8736 01
</p> </p>
</div> </div>
</body> </body>

View File

@@ -16,7 +16,7 @@ const contact = contactEntry.data;
<Layout <Layout
title={contact.title} title={contact.title}
description={`Contactez Cachet Peintres Décorateurs — ${general.phone} — ${general.email}. Nous servons Laval, la Rive-Nord et les environs.`} description={`Contactez Cachet Peintres Décorateurs — ${general.phone} — ${general.email}. Nous servons la Rive Sud, le Grand Montréal et les environs.`}
canonical="/contact" canonical="/contact"
> >
<ShortHero <ShortHero

View File

@@ -82,7 +82,7 @@ const heroContent = {
<Layout <Layout
title={seo.defaultTitle} title={seo.defaultTitle}
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.`} description={`${general.siteName} — Peintres décorateurs professionnels sur la Rive Sud et dans le Grand Montréal. Peinture résidentielle et commerciale, intérieur et extérieur. Soumission gratuite.`}
canonical="/" canonical="/"
> >
<Hero client:load content={heroContent} /> <Hero client:load content={heroContent} />

View File

@@ -16,7 +16,7 @@ const submissionPage = submissionEntry.data;
<Layout <Layout
title={submissionPage.title} title={submissionPage.title}
description={`Contactez Cachet Peintres Décorateurs — ${general.phone} — ${general.email}. Nous servons Laval, la Rive-Nord et les environs.`} description={`Contactez Cachet Peintres Décorateurs — ${general.phone} — ${general.email}. Nous servons la Rive Sud, le Grand Montréal et les environs.`}
canonical="/submission" canonical="/submission"
> >
<ShortHero <ShortHero

View File

@@ -1,7 +1,6 @@
@import "tailwindcss"; @import "tailwindcss";
@import "tw-animate-css"; @import "tw-animate-css";
@import "shadcn/tailwind.css"; @import "shadcn/tailwind.css";
@import "@fontsource-variable/geist";
@custom-variant dark (&:is(.dark *)); @custom-variant dark (&:is(.dark *));
@@ -187,7 +186,7 @@
} }
@theme inline { @theme inline {
--font-sans: 'Geist Variable', sans-serif; --font-sans: 'Cocogoose', sans-serif;
--color-sidebar-ring: var(--sidebar-ring); --color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border); --color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);