cleaning up assets
Some checks are pending
Build and Deploy / build-and-deploy (push) Waiting to run
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 164 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
BIN
public/images/landing-cta.webp
Normal file
|
After Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
BIN
public/images/services-2.webp
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
public/images/services-3.webp
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
public/images/services-4.webp
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
public/images/services-5.webp
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
public/images/short-hero.webp
Normal file
|
After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 320 KiB After Width: | Height: | Size: 320 KiB |
BIN
src/assets/photos/carrousel-1.webp
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
src/assets/photos/carrousel-2.webp
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
src/assets/photos/carrousel-3.webp
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
src/assets/photos/carrousel-4.webp
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
src/assets/photos/carrousel-5.webp
Normal file
|
After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
BIN
src/assets/photos/services-1.webp
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
src/assets/photos/services-2.webp
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
src/assets/photos/services-3.webp
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
src/assets/photos/services-4.webp
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
src/assets/photos/services-5.webp
Normal file
|
After Width: | Height: | Size: 202 KiB |
@@ -179,17 +179,9 @@ export default function SubmissionForm({ imageSrc, imageAlt, title, subtitle, fo
|
|||||||
const totalSize = uploadedFiles.reduce((sum, f) => sum + f.size, 0);
|
const totalSize = uploadedFiles.reduce((sum, f) => sum + f.size, 0);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative flex flex-col bg-brand-50 dark:bg-brand-900">
|
<div className="bg-brand-50 dark:bg-brand-900 lg:grid lg:grid-cols-2">
|
||||||
<div className="order-2 lg:absolute lg:inset-0 lg:left-1/2">
|
<div className="px-6 pt-8 pb-16 lg:px-6 lg:pt-8 lg:pb-16">
|
||||||
<img
|
<div className="mx-auto max-w-lg">
|
||||||
src={imageSrc}
|
|
||||||
alt={imageAlt}
|
|
||||||
className="h-64 w-full bg-brand-50 object-cover sm:h-80 lg:absolute lg:h-full dark:bg-brand-900"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="order-1 pt-8 pb-24 lg:mx-auto lg:grid lg:max-w-7xl lg:grid-cols-2">
|
|
||||||
<div className="px-6 lg:px-8">
|
|
||||||
<div className="mx-auto max-w-xl lg:mx-0 lg:max-w-lg">
|
|
||||||
{submitStatus === "success" ? (
|
{submitStatus === "success" ? (
|
||||||
<div className="mt-16 flex flex-col items-center gap-4 rounded-2xl bg-green-50 p-10 text-center ring-1 ring-green-200 dark:bg-green-900/20 dark:ring-green-500/30">
|
<div className="mt-16 flex flex-col items-center gap-4 rounded-2xl bg-green-50 p-10 text-center ring-1 ring-green-200 dark:bg-green-900/20 dark:ring-green-500/30">
|
||||||
<CheckCircleIcon className="h-12 w-12 text-green-500" />
|
<CheckCircleIcon className="h-12 w-12 text-green-500" />
|
||||||
@@ -414,6 +406,13 @@ export default function SubmissionForm({ imageSrc, imageAlt, title, subtitle, fo
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="relative hidden lg:block">
|
||||||
|
<img
|
||||||
|
src={imageSrc}
|
||||||
|
alt={imageAlt}
|
||||||
|
className="absolute inset-0 h-full w-full object-cover"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ export default function Contact({
|
|||||||
const labelClass = 'block text-sm/6 font-semibold text-brand-dark dark:text-white'
|
const labelClass = 'block text-sm/6 font-semibold text-brand-dark dark:text-white'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative isolate bg-white dark:bg-brand-900">
|
<div className="relative isolate bg-brand-50/50 dark:bg-brand-900">
|
||||||
<div className="mx-auto grid max-w-7xl grid-cols-1 lg:grid-cols-2">
|
<div className="mx-auto grid max-w-7xl grid-cols-1 lg:grid-cols-2">
|
||||||
<div className="relative px-6 pt-12 pb-20 lg:static">
|
<div className="relative px-6 pt-12 pb-20 lg:static">
|
||||||
<div className="mx-auto max-w-xl lg:mx-0 lg:max-w-lg">
|
<div className="mx-auto max-w-xl lg:mx-0 lg:max-w-lg">
|
||||||
|
|||||||
@@ -5,11 +5,7 @@ import {
|
|||||||
} from "@/components/ui/carousel";
|
} from "@/components/ui/carousel";
|
||||||
import Autoplay from "embla-carousel-autoplay";
|
import Autoplay from "embla-carousel-autoplay";
|
||||||
import general from "../../content/settings/general.json";
|
import general from "../../content/settings/general.json";
|
||||||
import photo1 from "@/assets/photos/empty-room-blue-wall-with-moulding-and-parquet-fl-2023-11-27-04-52-31-utc.webp";
|
|
||||||
import photo2 from "@/assets/photos/the-attic-of-a-home-with-white-ceilings-and-white-2023-11-27-05-27-44-utc.webp";
|
|
||||||
import photo3 from "@/assets/photos/silver-and-white-apartment-interior-2023-11-27-05-32-03-utc.webp";
|
|
||||||
import photo4 from "@/assets/photos/a-bedroom-with-white-walls-and-a-bed-and-a-2023-11-27-05-25-30-utc.webp";
|
|
||||||
import photo5 from "@/assets/photos/empty-room-with-window-2023-11-27-05-08-12-utc.webp";
|
|
||||||
import logo from "@/assets/cachet-hero-logo.svg";
|
import logo from "@/assets/cachet-hero-logo.svg";
|
||||||
|
|
||||||
export type HeroContent = {
|
export type HeroContent = {
|
||||||
@@ -21,11 +17,11 @@ export type HeroContent = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const slides = [
|
const slides = [
|
||||||
{ src: photo1.src, alt: "Peinture intérieure" },
|
{ src: '/images/carrousel-1.webp', alt: "Peinture intérieure" },
|
||||||
{ src: photo2.src, alt: "Décoration murale" },
|
{ src: '/images/carrousel-2.webp', alt: "Décoration murale" },
|
||||||
{ src: photo3.src, alt: "Finition de qualité" },
|
{ src: '/images/carrousel-3.webp', alt: "Finition de qualité" },
|
||||||
{ src: photo4.src, alt: "Chambre" },
|
{ src: '/images/carrousel-4.webp', alt: "Chambre" },
|
||||||
{ src: photo5.src, alt: "Pièce lumineuse" },
|
{ src: '/images/carrousel-5.webp', alt: "Pièce lumineuse" },
|
||||||
];
|
];
|
||||||
|
|
||||||
const autoplayPlugin = Autoplay({
|
const autoplayPlugin = Autoplay({
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ interface ContactHeroContent {
|
|||||||
<div className="absolute inset-0 mx-auto overflow-hidden">
|
<div className="absolute inset-0 mx-auto overflow-hidden">
|
||||||
<img
|
<img
|
||||||
alt={imageAlt}
|
alt={imageAlt}
|
||||||
src="/images/empty-room-blue-wall-with-moulding-and-parquet-fl-2023-11-27-04-52-31-utc.webp"
|
src={imageSrc}
|
||||||
className="size-full object-cover"
|
className="size-full object-cover"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ const contact = contactEntry.data;
|
|||||||
content={{
|
content={{
|
||||||
title: contact.title,
|
title: contact.title,
|
||||||
subtitle: contact.subtitle,
|
subtitle: contact.subtitle,
|
||||||
imageSrc: "/images/empty-room-blue-wall-with-moulding-and-parquet-fl-2023-11-27-04-52-31-utc.webp",
|
imageSrc: "/images/short-hero.webp",
|
||||||
imageAlt: "Peintres décorateurs au travail",
|
imageAlt: "Peintres décorateurs au travail",
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -28,30 +28,34 @@ const ctaData = ctaEntry.data;
|
|||||||
const pourquoiData = pourquoiEntry.data;
|
const pourquoiData = pourquoiEntry.data;
|
||||||
const testimonialsData = testimonialsEntry.data;
|
const testimonialsData = testimonialsEntry.data;
|
||||||
|
|
||||||
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 ctaImage =
|
||||||
|
{
|
||||||
|
src: '/images/landing-cta.webp',
|
||||||
|
alt: 'Peintres décorateurs au travail',
|
||||||
|
};
|
||||||
|
|
||||||
const allServices = await getCollection('services', (s) => s.id.startsWith(`${locale}/`));
|
const allServices = await getCollection('services', (s) => s.id.startsWith(`${locale}/`));
|
||||||
const services = allServices.sort((a, b) => a.data.order - b.data.order);
|
const services = allServices.sort((a, b) => a.data.order - b.data.order);
|
||||||
|
|
||||||
const serviceImages: Record<string, { src: import('astro').ImageMetadata; alt: string }> = {
|
const serviceImages: Record<string, { src: string; alt: string }> = {
|
||||||
interior: {
|
interior: {
|
||||||
src: (await import('@/assets/photos/empty-room-blue-wall-with-moulding-and-parquet-fl-2023-11-27-04-52-31-utc.webp')).default,
|
src: '/images/services-1.webp',
|
||||||
alt: 'Salon avec peinture intérieure soignée',
|
alt: 'Salon avec peinture intérieure soignée',
|
||||||
},
|
},
|
||||||
exterior: {
|
exterior: {
|
||||||
src: (await import('@/assets/Website Content/Photos/wooden-deck-with-sky-2023-11-27-05-29-44-utc.webp')).default,
|
src: '/images/services-2.webp',
|
||||||
alt: 'Maison avec peinture extérieure',
|
alt: 'Maison avec peinture extérieure',
|
||||||
},
|
},
|
||||||
commercial: {
|
commercial: {
|
||||||
src: (await import('@/assets/Website Content/Photos/minimalist-bright-office-room-interior-design-mee-2023-11-27-05-17-04-utc.webp')).default,
|
src: '/images/services-3.webp',
|
||||||
alt: 'Espace commercial peint',
|
alt: 'Espace commercial peint',
|
||||||
},
|
},
|
||||||
decoration: {
|
decoration: {
|
||||||
src: (await import('@/assets/Website Content/Photos/Mural_Jerkspot_02.jpg')).default,
|
src: '/images/services-4.webp',
|
||||||
alt: 'Décoration intérieure et murale',
|
alt: 'Décoration intérieure et murale',
|
||||||
},
|
},
|
||||||
renovation: {
|
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,
|
src: '/images/services-5.webp',
|
||||||
alt: 'Rénovation et finitions',
|
alt: 'Rénovation et finitions',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -59,11 +63,10 @@ const serviceImages: Record<string, { src: import('astro').ImageMetadata; alt: s
|
|||||||
const features = services.map((service) => {
|
const features = services.map((service) => {
|
||||||
const icon = service.data.icon ?? 'interior';
|
const icon = service.data.icon ?? 'interior';
|
||||||
const img = serviceImages[icon] ?? serviceImages.interior;
|
const img = serviceImages[icon] ?? serviceImages.interior;
|
||||||
const imageSrc = (img.src as import('astro').ImageMetadata).src;
|
|
||||||
return {
|
return {
|
||||||
name: service.data.title,
|
name: service.data.title,
|
||||||
description: service.data.description,
|
description: service.data.description,
|
||||||
imageSrc,
|
imageSrc: img.src ,
|
||||||
imageAlt: img.alt,
|
imageAlt: img.alt,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,15 +24,15 @@ const soumission = soumissionEntry.data;
|
|||||||
content={{
|
content={{
|
||||||
title: soumission.title,
|
title: soumission.title,
|
||||||
subtitle: soumission.subtitle,
|
subtitle: soumission.subtitle,
|
||||||
imageSrc: "/images/empty-room-blue-wall-with-moulding-and-parquet-fl-2023-11-27-04-52-31-utc.webp",
|
imageSrc: "/images/short-hero.webp",
|
||||||
imageAlt: "Peintres décorateurs au travail",
|
imageAlt: "Peintres décorateurs au travail",
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<SubmissionForm
|
<SubmissionForm
|
||||||
client:load
|
client:load
|
||||||
imageSrc="/images/stylish-bedroom-interior-with-double-bed-and-emera-2023-11-27-05-08-37-utc.webp"
|
imageSrc="/images/submission.webp"
|
||||||
imageAlt="Peintres décorateurs au travail"
|
imageAlt="chambre avec peinture intérieure verte"
|
||||||
title={soumission.title}
|
title={soumission.title}
|
||||||
subtitle={soumission.subtitle}
|
subtitle={soumission.subtitle}
|
||||||
form={soumission.form}
|
form={soumission.form}
|
||||||
|
|||||||