diff --git a/package-lock.json b/package-lock.json index b467c6b..d96ae93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "react": "^19.2.4", "react-dom": "^19.2.4", "react-hook-form": "^7.72.0", + "react-social-media-embed": "^2.5.18", "shadcn": "^4.0.5", "tailwind-merge": "^3.5.0", "tailwindcss": "^4.2.1", @@ -4684,6 +4685,12 @@ "integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==", "license": "MIT" }, + "node_modules/@types/youtube-player": { + "version": "5.5.11", + "resolved": "https://registry.npmjs.org/@types/youtube-player/-/youtube-player-5.5.11.tgz", + "integrity": "sha512-pM41CDBqJqBmTeJWnF7NOGz82IQoYOhqzMYXv5vKCXBqGiYSLldxMtpCk6KAEtADTy49S45AriYaCaZyeUX38Q==", + "license": "MIT" + }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", @@ -5258,6 +5265,12 @@ "url": "https://polar.sh/cva" } }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -7690,6 +7703,12 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, + "node_modules/load-script": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", + "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", @@ -7728,6 +7747,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "11.2.7", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", @@ -9421,6 +9452,17 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/property-information": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", @@ -9625,6 +9667,22 @@ "react": "^16.8.0 || ^17 || ^18 || ^19" } }, + "node_modules/react-html-props": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-html-props/-/react-html-props-2.1.1.tgz", + "integrity": "sha512-tM+YCYlr90m3JontKUAa+gNVU2zkyprlCS7OQ9aa3z2MfyJjAioJzrSmi1Vef/+UCTE6CQlPqLX4ebdLIJDKxw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/react-refresh": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", @@ -9681,6 +9739,40 @@ } } }, + "node_modules/react-social-media-embed": { + "version": "2.5.18", + "resolved": "https://registry.npmjs.org/react-social-media-embed/-/react-social-media-embed-2.5.18.tgz", + "integrity": "sha512-+PkzLRGAwnySkxKajaiK5VD+EjOhlFsh/vjNxgHsDfKBTseDpFxPrMXXQWkk6BRCwFBNVWX+V1HZ9AU0y54Wgw==", + "license": "MIT", + "dependencies": { + "@types/youtube-player": "^5.5.5", + "classnames": "^2.5.1", + "react-html-props": "^2.0.3", + "react-sub-unsub": "^2.2.1", + "react-twitter-embed": "^4.0.4", + "react-youtube": "^10.1.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0" + } + }, + "node_modules/react-social-media-embed/node_modules/react-twitter-embed": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-twitter-embed/-/react-twitter-embed-4.0.4.tgz", + "integrity": "sha512-2JIL7qF+U62zRzpsh6SZDXNI3hRNVYf5vOZ1WRcMvwKouw+xC00PuFaD0aEp2wlyGaZ+f4x2VvX+uDadFQ3HVA==", + "license": "MIT", + "dependencies": { + "scriptjs": "^2.5.9" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-style-singleton": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", @@ -9703,6 +9795,33 @@ } } }, + "node_modules/react-sub-unsub": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/react-sub-unsub/-/react-sub-unsub-2.2.8.tgz", + "integrity": "sha512-o3tmiOOZPdQUCmRhkdCHXRFLOHnCwdz/N3QZ1JQ14fQGA2HysKMF0kWu56ERnQUCK7wYVCQzI8pFbnivAYNQ+A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0" + } + }, + "node_modules/react-youtube": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/react-youtube/-/react-youtube-10.1.0.tgz", + "integrity": "sha512-ZfGtcVpk0SSZtWCSTYOQKhfx5/1cfyEW1JN/mugGNfAxT3rmVJeMbGpA9+e78yG21ls5nc/5uZJETE3cm3knBg==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "3.1.3", + "prop-types": "15.8.1", + "youtube-player": "5.5.2" + }, + "engines": { + "node": ">= 14.x" + }, + "peerDependencies": { + "react": ">=0.14.1" + } + }, "node_modules/readdirp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", @@ -10145,6 +10264,12 @@ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, + "node_modules/scriptjs": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", + "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==", + "license": "MIT" + }, "node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -10456,6 +10581,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sister": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sister/-/sister-3.0.2.tgz", + "integrity": "sha512-p19rtTs+NksBRKW9qn0UhZ8/TUI9BPw9lmtHny+Y3TinWlOa9jWh9xB0AtPSdmOy49NJJJSSe0Ey4C7h0TrcYA==", + "license": "BSD-3-Clause" + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -11644,6 +11775,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/youtube-player": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/youtube-player/-/youtube-player-5.5.2.tgz", + "integrity": "sha512-ZGtsemSpXnDky2AUYWgxjaopgB+shFHgXVpiJFeNB5nWEugpW1KWYDaHKuLqh2b67r24GtP6HoSW5swvf0fFIQ==", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^2.6.6", + "load-script": "^1.0.0", + "sister": "^3.0.0" + } + }, + "node_modules/youtube-player/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/youtube-player/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/zod": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", diff --git a/package.json b/package.json index a951f88..10ed081 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "react": "^19.2.4", "react-dom": "^19.2.4", "react-hook-form": "^7.72.0", + "react-social-media-embed": "^2.5.18", "shadcn": "^4.0.5", "tailwind-merge": "^3.5.0", "tailwindcss": "^4.2.1", diff --git a/public/admin/config.yml b/public/admin/config.yml index c728d08..8c9d588 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -347,7 +347,6 @@ collections: fields: - { name: "key", label: "Identifiant unique", widget: "string" } - { name: "src", label: "URL du post Facebook (embed)", widget: "string" } - - { name: "height", label: "Hauteur de l'iframe (px)", widget: "number" } - name: "settings" label: "Paramètres du site" diff --git a/public/images/carrousel-4.webp b/public/images/carrousel-4.webp index fd1ed8e..2095e5d 100644 Binary files a/public/images/carrousel-4.webp and b/public/images/carrousel-4.webp differ diff --git a/public/images/carrousel-5.webp b/public/images/carrousel-5.webp index 2235e91..5d2c2ba 100644 Binary files a/public/images/carrousel-5.webp and b/public/images/carrousel-5.webp differ diff --git a/public/images/services-1.webp b/public/images/services-1.webp index 698c44a..2cd2608 100644 Binary files a/public/images/services-1.webp and b/public/images/services-1.webp differ diff --git a/public/images/services-2.webp b/public/images/services-2.webp index 6259887..591a785 100644 Binary files a/public/images/services-2.webp and b/public/images/services-2.webp differ diff --git a/public/images/services-3.webp b/public/images/services-3.webp index 3247b49..3560333 100644 Binary files a/public/images/services-3.webp and b/public/images/services-3.webp differ diff --git a/public/images/services-4.webp b/public/images/services-4.webp index fd1ed8e..6a9499d 100644 Binary files a/public/images/services-4.webp and b/public/images/services-4.webp differ diff --git a/public/images/services-5.webp b/public/images/services-5.webp index 2235e91..7c43536 100644 Binary files a/public/images/services-5.webp and b/public/images/services-5.webp differ diff --git a/src/components/sections/testimonials.tsx b/src/components/sections/testimonials.tsx index c5b683d..735bcda 100644 --- a/src/components/sections/testimonials.tsx +++ b/src/components/sections/testimonials.tsx @@ -1,11 +1,12 @@ + + +import { motion } from "motion/react"; +import { FacebookEmbed } from 'react-social-media-embed'; + interface TestimonialItem { key: string; src: string; - height: number; } - -import { motion } from "motion/react"; - interface Props { sectionLabel: string; title: string; @@ -19,7 +20,6 @@ const iframeProps = { allowFullScreen: true, allow: 'autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share', style: { border: 'none', overflow: 'hidden' } as React.CSSProperties, - className: 'w-full rounded-2xl', } const fadeUp = (delay: number) => ({ @@ -92,9 +92,10 @@ export default function Grid({ sectionLabel, title, items }: Props) {
{legalNotice}
diff --git a/src/content.config.ts b/src/content.config.ts index 9cefcb1..a3f1129 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -209,7 +209,6 @@ const testimonials = defineCollection({ z.object({ key: z.string(), src: z.string().url(), - height: z.number(), }), ), }), diff --git a/src/content/footer/fr/main.json b/src/content/footer/fr/main.json index 93e9b72..8489cd6 100644 --- a/src/content/footer/fr/main.json +++ b/src/content/footer/fr/main.json @@ -9,29 +9,85 @@ "neq": "NEQ : 9500-5609", "facebookLabel": "Facebook", "serviceLinks": [ - { "label": "Peinture intérieure", "href": "/services#peinture-interieure" }, - { "label": "Peinture extérieure", "href": "/services#peinture-exterieure" }, - { "label": "Peinture commerciale", "href": "/services#peinture-commerciale" }, - { "label": "Décoration intérieure", "href": "/services#decoration-interieure" } + { "label": "Peinture intérieure", "href": "/#services" }, + { "label": "Peinture extérieure", "href": "/#services" }, + { "label": "Peinture commerciale", "href": "/#services" }, + { "label": "Solutions clef en main", "href": "/#services" }, + { "label": "Finitions de luxe", "href": "/#services" } ], "serviceAreas": [ - "Saint-Basile-le-Grand", - "Longueuil", - "Brossard", - "Saint-Hubert", - "Saint-Lambert", - "Saint-Bruno-de-Montarville", - "Beloeil", - "Mont-Saint-Hilaire", - "Sainte-Julie", + "Montréal (Ville-centre, avec 19 arrondissements)", + "Baie-D'Urfé", + "Beaconsfield", + "Côte-Saint-Luc", + "Dollard-des-Ormeaux", + "Dorval", + "Hampstead", + "Kirkland", + "L'Île-Dorval", + "Mont-Royal (Ville de Mont-Royal)", + "Montréal-Est", + "Montréal-Ouest", + "Pointe-Claire", + "Sainte-Anne-de-Bellevue", + "Senneville", + "Westmount", + "Belœil", "Boucherville", - "La Prairie", - "Carignan", + "Brossard", "Candiac", - "McMasterville", - "Otterburn Park", + "Carignan", "Chambly", - "Partout sur la Rive-Sud", - "Montréal" + "Châteauguay", + "Delson", + "La Prairie", + "Longueuil", + "Greenfield Park", + "Saint-Hubert", + "Vieux-Longueuil", + "McMasterville", + "Mont-Saint-Hilaire", + "Otterburn Park", + "Saint-Basile-le-Grand", + "Saint-Bruno-de-Montarville", + "Sainte-Catherine", + "Saint-Constant", + "Saint-Isidore", + "Sainte-Julie", + "Saint-Lambert", + "Saint-Philippe", + "Saint-Jean-sur-Richelieu", + "Varennes", + "Saint-Mathias", + "Beauharnois", + "Salaberry-de-Valleyfield", + "Saint-Étienne-de-Beauharnois", + "Saint-Stanislas-de-Kostka", + "Saint-Urbain-Premier", + "Sainte-Martine", + "Saint-Louis-de-Gonzague", + "Coteau-du-Lac", + "Hudson", + "L'Île-Cadieux", + "L'Île-Perrot", + "Les Cèdres", + "Les Coteaux", + "Notre-Dame-de-l'Île-Perrot", + "Pincourt", + "Pointe-des-Cascades", + "Pointe-Fortune", + "Rigaud", + "Rivière-Beaudette", + "Saint-Clet", + "Saint-Lazare", + "Saint-Polycarpe", + "Saint-Télesphore", + "Saint-Zotique", + "Sainte-Justine-de-Newton", + "Sainte-Marthe", + "Terrasse-Vaudreuil", + "Très-Saint-Rédempteur", + "Vaudreuil-Dorion", + "Vaudreuil-sur-le-Lac" ] } diff --git a/src/content/services/fr/clef-en-main.md b/src/content/services/fr/clef-en-main.md new file mode 100644 index 0000000..50e562b --- /dev/null +++ b/src/content/services/fr/clef-en-main.md @@ -0,0 +1,7 @@ +--- +title: Solutions clef en main +description: De la réparation de plâtre au ménage, nous proposons une variété de solutions pour faciliter le processus de rénovation. Nous proposons également des options pour sélectionner la couleur et l'agencement de vos espaces intérieurs afin de les adapter à vos besoins en décoration. Contactez-nous avec les détails de votre projet pour une soumission gratuite! +icon: renovation +order: 5 +featured: false +--- diff --git a/src/content/services/fr/decoration-interieure.md b/src/content/services/fr/decoration-interieure.md deleted file mode 100644 index f0d25a9..0000000 --- a/src/content/services/fr/decoration-interieure.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Décoration intérieure -description: Conseils personnalisés en couleur et décoration. Nos experts vous aident à créer l'ambiance parfaite pour chaque pièce de votre maison. -icon: decoration -order: 4 -featured: false ---- - -Au-delà de la peinture, nos peintres décorateurs apportent leur expertise en design pour vous aider à créer des espaces qui vous ressemblent. - -## Nos services de décoration - -- Consultation couleur et tendances -- Effets décoratifs et textures -- Trompe-l'œil et murales -- Application de papier peint -- Conseil en éclairage et mise en valeur des espaces - -## Techniques spécialisées - -- Badigeon et enduit à la chaux -- Effet béton ciré -- Patines et vieillissements -- Peintures texturées -- Finitions métalliques diff --git a/src/content/services/fr/finition-de-luxe.md b/src/content/services/fr/finition-de-luxe.md new file mode 100644 index 0000000..fe177fc --- /dev/null +++ b/src/content/services/fr/finition-de-luxe.md @@ -0,0 +1,8 @@ +--- +title: Finitions de luxe +description: Pour une personnalisation maximale de vos espaces, nous proposons des enduits à la chaux, des enduits de plâtre vénitien, ainsi que des fresques et des murales. +icon: decoration +order: 4 +featured: false +--- + diff --git a/src/content/services/fr/peinture-commerciale.md b/src/content/services/fr/peinture-commerciale.md index dc18905..74b0692 100644 --- a/src/content/services/fr/peinture-commerciale.md +++ b/src/content/services/fr/peinture-commerciale.md @@ -1,6 +1,6 @@ --- -title: Peinture commerciale -description: Solutions de peinture pour bureaux, commerces et espaces institutionnels. Travaux réalisés en dehors des heures d'ouverture pour minimiser les perturbations. +title: 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 featured: true diff --git a/src/content/services/fr/peinture-exterieure.md b/src/content/services/fr/peinture-exterieure.md index ade84d1..e59059e 100644 --- a/src/content/services/fr/peinture-exterieure.md +++ b/src/content/services/fr/peinture-exterieure.md @@ -1,25 +1,7 @@ --- -title: Peinture extérieure -description: Protection et embellissement de la façade de votre maison. Travaux résistants aux conditions climatiques du Québec pour une durabilité maximale. +title: 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 featured: true --- - -La peinture extérieure protège votre investissement tout en rehaussant l'apparence de votre propriété. Nous utilisons des produits spécialement formulés pour résister aux hivers québécois. - -## Ce qui est inclus - -- Nettoyage haute pression des surfaces -- Réparation des fissures et dommages -- Application d'apprêt spécialisé -- 2 couches de peinture extérieure haute performance -- Protection et calfeutrage aux joints - -## Nos spécialités - -- Revêtements en bois, aluminium et vinyle -- Briques et stucco -- Balcons, vérandas et galeries -- Clôtures et cabanons -- Portes et fenêtres (cadres et contours) diff --git a/src/content/services/fr/peinture-interieure.md b/src/content/services/fr/peinture-interieure.md index 039d1c3..c1e117b 100644 --- a/src/content/services/fr/peinture-interieure.md +++ b/src/content/services/fr/peinture-interieure.md @@ -1,25 +1,7 @@ --- -title: Peinture intérieure -description: Transformation complète de vos espaces intérieurs. Préparation des surfaces, application soignée et finitions impeccables pour tous types de pièces. +title: 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 featured: true --- - -Nos peintres décorateurs réalisent tous vos projets de peinture intérieure avec professionnalisme et souci du détail. De la préparation minutieuse des surfaces à la finition parfaite, chaque étape est effectuée avec rigueur. - -## Ce qui est inclus - -- Évaluation et préparation des surfaces (rebouchage, sablage, apprêt) -- Application de 2 couches de peinture de qualité professionnelle -- Protection des planchers, meubles et garnitures -- Nettoyage complet après les travaux -- Garantie sur la main-d'œuvre - -## Nos spécialités - -- Salons et salles à manger -- Chambres à coucher -- Cuisines et salles de bain -- Sous-sols et espaces récréatifs -- Couloirs et entrées diff --git a/src/content/services/fr/renovation-complete.md b/src/content/services/fr/renovation-complete.md deleted file mode 100644 index d2e0af4..0000000 --- a/src/content/services/fr/renovation-complete.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Rénovation complète -description: Coordination de projets de rénovation résidentielle. De la peinture aux finitions, un seul entrepreneur pour tous vos travaux de décoration. -icon: renovation -order: 5 -featured: false ---- - -Pour les projets de rénovation importants, Cachet Peintres Décorateurs coordonne l'ensemble des travaux de finition, vous offrant un interlocuteur unique pour simplifier votre projet. - -## Ce qui est inclus - -- Évaluation complète du projet -- Coordination des corps de métier -- Peinture intérieure et extérieure -- Travaux de finition et moulures -- Supervision et contrôle qualité - -## Projets réalisés - -- Rénovations complètes de condos -- Mises à jour de maisons avant vente -- Rénovations post-construction -- Remises en état locatives diff --git a/src/content/settings/general.json b/src/content/settings/general.json index e78f831..1ae3528 100644 --- a/src/content/settings/general.json +++ b/src/content/settings/general.json @@ -11,7 +11,7 @@ "fromAddressSubmission": "Cachet Peintres Décorateurs