1.01 audrey's edits
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 46s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 46s
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 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**.
|
||||
|
||||
## 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 :
|
||||
|
||||
- **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)
|
||||
|
||||
Ces informations sont affichées dans le footer de chaque page.
|
||||
|
||||
BIN
public/images/logo-text.webp
Normal file
BIN
public/images/logo-text.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 219 KiB |
@@ -27,7 +27,7 @@ export default function Header({
|
||||
<div className="flex lg:flex-1">
|
||||
<a
|
||||
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 ">
|
||||
<span className="sr-only">{general.siteName}</span>
|
||||
@@ -70,21 +70,21 @@ export default function Header({
|
||||
{ctaLabel}
|
||||
</a> */}
|
||||
<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 }}
|
||||
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>
|
||||
<PhoneIcon
|
||||
aria-hidden="true"
|
||||
className="h-8 w-8 text-brand-600 "
|
||||
className="h-8 w-8 text-brand-600"
|
||||
/>
|
||||
</dt>
|
||||
<dd>
|
||||
<dd className="m-0 flex min-w-0 items-center justify-center">
|
||||
<a
|
||||
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}
|
||||
</a>
|
||||
|
||||
@@ -44,11 +44,11 @@ export default function WithAlternatingSections({
|
||||
<div className="mx-auto max-w-3xl text-center">
|
||||
<motion.h2
|
||||
{...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}
|
||||
</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}
|
||||
</motion.p>
|
||||
</div>
|
||||
@@ -67,11 +67,11 @@ export default function WithAlternatingSections({
|
||||
>
|
||||
<motion.h3
|
||||
{...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}
|
||||
</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}
|
||||
</motion.p>
|
||||
</div>
|
||||
|
||||
@@ -84,7 +84,7 @@ export default function Grid({ sectionLabel, title, items }: Props) {
|
||||
</motion.h2>
|
||||
<motion.p
|
||||
{...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}
|
||||
</motion.p>
|
||||
|
||||
@@ -75,7 +75,7 @@ export default function WithTieredImages({
|
||||
</motion.h2>
|
||||
<motion.p
|
||||
{...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}
|
||||
</motion.p>
|
||||
@@ -121,8 +121,8 @@ export default function WithTieredImages({
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
<dt className="text-base font-medium text-white">{card.title}</dt>
|
||||
<dd className="mt-3 text-base text-white/90">{card.description}</dd>
|
||||
<dt className="text-base font-medium text-white lg:text-[0.9375rem]">{card.title}</dt>
|
||||
<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>
|
||||
</motion.div>
|
||||
))}
|
||||
|
||||
@@ -47,7 +47,7 @@ const structuredData = {
|
||||
email: general.email,
|
||||
address: {
|
||||
'@type': 'PostalAddress',
|
||||
addressLocality: 'Laval',
|
||||
addressLocality: 'Sainte-Catherine',
|
||||
addressRegion: 'QC',
|
||||
addressCountry: 'CA',
|
||||
},
|
||||
|
||||
@@ -53,11 +53,11 @@ export default function FullWidthWithBackgroundImageAndLargeContent({
|
||||
<motion.h2
|
||||
{...fadeUp(0)}
|
||||
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}
|
||||
</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}
|
||||
</motion.p>
|
||||
<motion.a
|
||||
|
||||
@@ -21,7 +21,6 @@ type Props = {
|
||||
navTitle: string;
|
||||
contactTitle: string;
|
||||
rbq: string;
|
||||
neq: string;
|
||||
};
|
||||
navLinks: NavLink[];
|
||||
legalNotice: string;
|
||||
@@ -302,10 +301,8 @@ export default function FooterAnimated({
|
||||
MBCube Consulting
|
||||
</motion.a>
|
||||
</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 aria-hidden="true">·</span>
|
||||
<span>{footer.neq}</span>
|
||||
</p>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
@@ -49,7 +49,7 @@ export default function Hero({ content }: { content: HeroContent }) {
|
||||
|
||||
return (
|
||||
<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
|
||||
className="absolute inset-0 -z-10 size-full [&_[data-slot='carousel-content']]:h-full"
|
||||
opts={{ loop: true, dragFree: false }}
|
||||
@@ -63,22 +63,15 @@ export default function Hero({ content }: { content: HeroContent }) {
|
||||
alt={slide.alt}
|
||||
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>
|
||||
))}
|
||||
</CarouselContent>
|
||||
</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="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">
|
||||
<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
|
||||
className="relative"
|
||||
viewBox="0 0 1390 500"
|
||||
@@ -89,7 +82,8 @@ export default function Hero({ content }: { content: HeroContent }) {
|
||||
y="312"
|
||||
fontFamily="Cocogoose"
|
||||
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)}
|
||||
>
|
||||
CACHET
|
||||
@@ -98,7 +92,8 @@ export default function Hero({ content }: { content: HeroContent }) {
|
||||
id="Rectangle"
|
||||
fill="#b0b0ac"
|
||||
fillRule="evenodd"
|
||||
stroke="none"
|
||||
stroke="white"
|
||||
strokeWidth="2"
|
||||
d="M 228 360 L 1161 360 L 1161 334 L 228 334 Z"
|
||||
initial={{ scaleX: 0 }}
|
||||
animate={{ scaleX: 1 }}
|
||||
@@ -119,9 +114,8 @@ export default function Hero({ content }: { content: HeroContent }) {
|
||||
fontFamily="Geoform"
|
||||
fontSize="72"
|
||||
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)}
|
||||
|
||||
>
|
||||
PEINTRES DECORATEURS
|
||||
</motion.text>
|
||||
@@ -130,7 +124,7 @@ export default function Hero({ content }: { content: HeroContent }) {
|
||||
|
||||
<motion.p
|
||||
{...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}
|
||||
</motion.p>
|
||||
|
||||
@@ -44,13 +44,13 @@ const fadeUp = (delay: number) => ({
|
||||
<motion.h2
|
||||
{...fadeUp(0.15)}
|
||||
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}
|
||||
</motion.h2>
|
||||
<motion.p
|
||||
{...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}
|
||||
</motion.p>
|
||||
|
||||
@@ -88,7 +88,7 @@ const contact = defineCollection({
|
||||
}),
|
||||
breadcrumbHome: z.string(),
|
||||
rbq: z.string(),
|
||||
neq: z.string(),
|
||||
neq: z.string().optional(),
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -164,7 +164,7 @@ const footer = defineCollection({
|
||||
serviceAreasTitle: z.string(),
|
||||
legal: z.string(),
|
||||
rbq: z.string(),
|
||||
neq: z.string(),
|
||||
neq: z.string().optional(),
|
||||
facebookLabel: z.string(),
|
||||
serviceLinks: z.array(
|
||||
z.object({
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"facebookCta": "Suivez-nous sur Facebook",
|
||||
"map": {
|
||||
"title": "Notre territoire de service",
|
||||
"region": "Laval & Rive-Nord, Québec",
|
||||
"region": "Rive Sud & Grand Montréal, Québec",
|
||||
"mapsButton": "Voir sur Google Maps"
|
||||
},
|
||||
"ctaCard": {
|
||||
@@ -24,6 +24,5 @@
|
||||
"button": "Soumission gratuite"
|
||||
},
|
||||
"breadcrumbHome": "Accueil",
|
||||
"rbq": "RBQ : ",
|
||||
"neq": "NEQ : "
|
||||
"rbq": "RBQ : "
|
||||
}
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
"servicesTitle": "Nos services",
|
||||
"contactTitle": "Contact",
|
||||
"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",
|
||||
"neq": "NEQ : 9500-5609",
|
||||
"facebookLabel": "Facebook",
|
||||
"serviceLinks": [
|
||||
{ "label": "Peinture intérieure", "href": "/#services" },
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"title": "CACHET",
|
||||
"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",
|
||||
"ctaHref": "/contact"
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
{
|
||||
"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."
|
||||
"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",
|
||||
|
||||
@@ -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.
|
||||
icon: commercial
|
||||
order: 3
|
||||
|
||||
@@ -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.
|
||||
icon: exterior
|
||||
order: 2
|
||||
|
||||
@@ -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.
|
||||
icon: interior
|
||||
order: 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"brandName": "Cachet",
|
||||
"siteName": "Cachet Peintres Décorateurs",
|
||||
"legalName": "9500-5609 Québec Inc",
|
||||
"legalName": "CACHETDECO",
|
||||
"tagline": "Peintres Décorateurs professionnels",
|
||||
"taglineHero": "Qualité et expertise en peinture résidentielle et commerciale",
|
||||
"phone": "(514) 552-1049",
|
||||
@@ -11,11 +11,10 @@
|
||||
"fromAddressSubmission": "Cachet Peintres Décorateurs <notifications@mbcubeconsulting.ca>",
|
||||
"toAddressSubmission": "mouad@mbcubeconsulting.ca",
|
||||
"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/",
|
||||
"instagram": "https://www.instagram.com/cachet.deco/",
|
||||
"linkedin": "",
|
||||
"rbq": "5839 8736 01",
|
||||
"neq": "9500-5609",
|
||||
"carouselDelay": 2500
|
||||
"carouselDelay": 4000
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
"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.",
|
||||
"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",
|
||||
"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 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",
|
||||
"twitterCard": "summary_large_image"
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"phoneLabel": "Téléphone",
|
||||
"phonePlaceholder": "(450) 555-1234",
|
||||
"workAddressLabel": "Adresse des travaux",
|
||||
"workAddressPlaceholder": "123 rue Principale, Laval, QC",
|
||||
"workAddressPlaceholder": "123 rue Principale, Sainte-Catherine, QC",
|
||||
"serviceTypeLabel": "Type de service",
|
||||
"serviceTypePlaceholder": "Sélectionnez un service",
|
||||
"serviceTypeOptions": {
|
||||
|
||||
@@ -63,7 +63,7 @@ function buildContactNotificationHtml(data: ContactBody): string {
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -137,7 +137,7 @@ function buildNotificationHtml(data: SubmissionPayload, attachmentNames: string[
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -16,7 +16,7 @@ const contact = contactEntry.data;
|
||||
|
||||
<Layout
|
||||
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"
|
||||
>
|
||||
<ShortHero
|
||||
|
||||
@@ -82,7 +82,7 @@ const heroContent = {
|
||||
|
||||
<Layout
|
||||
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="/"
|
||||
>
|
||||
<Hero client:load content={heroContent} />
|
||||
|
||||
@@ -16,7 +16,7 @@ const submissionPage = submissionEntry.data;
|
||||
|
||||
<Layout
|
||||
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"
|
||||
>
|
||||
<ShortHero
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
@import "tailwindcss";
|
||||
@import "tw-animate-css";
|
||||
@import "shadcn/tailwind.css";
|
||||
@import "@fontsource-variable/geist";
|
||||
|
||||
@custom-variant dark (&:is(.dark *));
|
||||
|
||||
@@ -187,7 +186,7 @@
|
||||
}
|
||||
|
||||
@theme inline {
|
||||
--font-sans: 'Geist Variable', sans-serif;
|
||||
--font-sans: 'Cocogoose', sans-serif;
|
||||
--color-sidebar-ring: var(--sidebar-ring);
|
||||
--color-sidebar-border: var(--sidebar-border);
|
||||
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
||||
|
||||
Reference in New Issue
Block a user