Compare commits
10 commits
b1324c53ee
...
203c5ab3fd
| Author | SHA1 | Date | |
|---|---|---|---|
| 203c5ab3fd | |||
| c7d74fd44a | |||
| a4aa1f9e0d | |||
| a8b94264cd | |||
| ed64777b76 | |||
| 4de8dab42d | |||
| 22e0067ee8 | |||
| 0f9cec3826 | |||
| b4f760036d | |||
| b3c6560796 |
10 changed files with 222 additions and 65 deletions
|
|
@ -37,11 +37,6 @@ const socialImage = structuredData?.image?.src
|
||||||
? (Astro.url.origin + structuredData.image.src)
|
? (Astro.url.origin + structuredData.image.src)
|
||||||
: Astro.url.origin + socialImageRes.src; // Get the full URL of the image (https://stackoverflow.com/a/9858694)
|
: Astro.url.origin + socialImageRes.src; // Get the full URL of the image (https://stackoverflow.com/a/9858694)
|
||||||
|
|
||||||
const languages: { [key: string]: string } = {
|
|
||||||
en: "",
|
|
||||||
fr: "fr",
|
|
||||||
};
|
|
||||||
|
|
||||||
function createHref(lang: string, prefix: string, path: string): string {
|
function createHref(lang: string, prefix: string, path: string): string {
|
||||||
const hasPrefix = path.startsWith(`/${prefix}/`);
|
const hasPrefix = path.startsWith(`/${prefix}/`);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
import { Image } from "astro:assets";
|
import { Image } from "astro:assets";
|
||||||
import { LightboxImage } from "@components/LightboxImage";
|
|
||||||
import photoBureau from "@images/grand-bureau-tout-equipe.jpg";
|
import photoBureau from "@images/grand-bureau-tout-equipe.jpg";
|
||||||
|
import PrimaryCTA from "../ui/buttons/PrimaryCTA.astro";
|
||||||
---
|
---
|
||||||
|
|
||||||
<section
|
<section
|
||||||
|
|
@ -29,8 +29,7 @@ import photoBureau from "@images/grand-bureau-tout-equipe.jpg";
|
||||||
loading="eager"
|
loading="eager"
|
||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<LightboxImage client:idle image={photoBureau}
|
<div class="my-4 max-w-64 mx-auto">
|
||||||
alt="Grand bureau tout équipé, bois massif, bureau ajustable en hauteur, grande fresque murale">
|
<PrimaryCTA title="Voir le bureau" url="/avec-un-grand-bureau/" />
|
||||||
|
</div>
|
||||||
</LightboxImage>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -18,15 +18,17 @@ interface Props {
|
||||||
>
|
>
|
||||||
<div class="max-w-screen-md">
|
<div class="max-w-screen-md">
|
||||||
<h1
|
<h1
|
||||||
class="mb-4 text-balance text-4xl font-extrabold tracking-tight text-neutral-800 dark:text-neutral-200"
|
class="text-balance text-4xl font-extrabold tracking-tight text-neutral-800 dark:text-neutral-200"
|
||||||
>
|
>
|
||||||
{title}
|
{title}
|
||||||
</h1>
|
</h1>
|
||||||
<p
|
{
|
||||||
class="mb-8 max-w-prose text-pretty font-normal text-neutral-600 dark:text-neutral-400 sm:text-xl"
|
subTitle && (
|
||||||
>
|
<p class="mt-4 mb-8 max-w-prose text-pretty font-normal text-neutral-600 dark:text-neutral-400 sm:text-xl">
|
||||||
{subTitle}
|
{subTitle}
|
||||||
</p>
|
</p>
|
||||||
|
)
|
||||||
|
}
|
||||||
<slot />
|
<slot />
|
||||||
{
|
{
|
||||||
btnTitle && btnURL ? (
|
btnTitle && btnURL ? (
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"heading": "Plein pied",
|
"heading": "Plain-pied",
|
||||||
"content": "Majoritairement de plein pied, la maison est organisée autour de sa grande terrasse orientée plein sud et accessible depuis toutes les pièces de vie, sans vis-à-vis.",
|
"content": "Majoritairement de plain-pied, la maison est organisée autour de sa grande terrasse orientée plein sud et accessible depuis toutes les pièces de vie, sans vis-à-vis.",
|
||||||
"svg": "groups"
|
"svg": "groups"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import { SITE } from "@data/constants";
|
||||||
import type { Thing, WithContext } from "schema-dts";
|
import type { Thing, WithContext } from "schema-dts";
|
||||||
|
|
||||||
// Setting expected props
|
// Setting expected props
|
||||||
const { title = SITE.title, meta, structuredData, lang = "en" } = Astro.props;
|
const { title = SITE.title, meta, structuredData, lang = "fr" } = Astro.props;
|
||||||
|
|
||||||
// Interface to type-check the properties
|
// Interface to type-check the properties
|
||||||
interface Props {
|
interface Props {
|
||||||
|
|
|
||||||
|
|
@ -1,47 +1,24 @@
|
||||||
---
|
---
|
||||||
// Import section components
|
|
||||||
import MainLayout from "@/layouts/MainLayout.astro";
|
import MainLayout from "@/layouts/MainLayout.astro";
|
||||||
import Btn404 from "@components/ui/buttons/Btn404.astro";
|
import Btn404 from "@components/ui/buttons/Btn404.astro";
|
||||||
import { SITE } from "@data/constants";
|
import { SITE } from "@data/constants";
|
||||||
|
|
||||||
// Define types for translations
|
type Texts = {
|
||||||
type TranslationKeys = "en" | "fr";
|
|
||||||
type Translations = {
|
|
||||||
[key in TranslationKeys]: {
|
|
||||||
pageTitle: string;
|
pageTitle: string;
|
||||||
subTitle: string;
|
subTitle: string;
|
||||||
content: string;
|
content: string;
|
||||||
btnTitle: string;
|
btnTitle: string;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Define variables for page content
|
const texts: Texts = {
|
||||||
const defaultLang: TranslationKeys = "en";
|
|
||||||
const translations: Translations = {
|
|
||||||
en: {
|
|
||||||
pageTitle: `Page Not Found | ${SITE.title}`,
|
|
||||||
subTitle: "Oops, this isn't the tool you were looking for!",
|
|
||||||
content:
|
|
||||||
"Don't let this hiccup slow you down. Let's get you back to building your masterpiece.",
|
|
||||||
btnTitle: "Go Back",
|
|
||||||
},
|
|
||||||
fr: {
|
|
||||||
pageTitle: `Page Non Trouvée | ${SITE.title}`,
|
pageTitle: `Page Non Trouvée | ${SITE.title}`,
|
||||||
subTitle: "Oops, ce n'est pas l'outil que vous recherchiez!",
|
subTitle: "Oops, ce n'est pas l'outil que vous recherchiez!",
|
||||||
content:
|
content:
|
||||||
"Ne laissez pas ce contretemps vous ralentir. Revenons à la construction de votre chef-d'œuvre.",
|
"Ne laissez pas ce contretemps vous ralentir. Revenons à la construction de votre chef-d'œuvre.",
|
||||||
btnTitle: "Retournez",
|
btnTitle: "Retournez",
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Determine language from the URL
|
const { pageTitle, subTitle, content, btnTitle } = texts;
|
||||||
const urlPath = Astro.url.pathname;
|
|
||||||
const langCodeMatch = urlPath.match(/^\/(en|fr)\//);
|
|
||||||
const lang: TranslationKeys = langCodeMatch
|
|
||||||
? (langCodeMatch[1] as TranslationKeys)
|
|
||||||
: defaultLang;
|
|
||||||
|
|
||||||
const { pageTitle, subTitle, content, btnTitle } = translations[lang];
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<MainLayout title={pageTitle}>
|
<MainLayout title={pageTitle}>
|
||||||
|
|
|
||||||
76
src/pages/avec-une-belle-suite.astro
Normal file
76
src/pages/avec-une-belle-suite.astro
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
---
|
||||||
|
import { websiteStructuredDescription } from "../data_files/constants";
|
||||||
|
import MainLayout from "@/layouts/MainLayout.astro";
|
||||||
|
import type { WebPage, WithContext } from "schema-dts";
|
||||||
|
import MainSection from "../components/ui/blocks/MainSection.astro";
|
||||||
|
import GrandePhotoCentrale from "../components/GrandePhotoCentrale.astro";
|
||||||
|
import photo1 from "@images/suite-du-bas-1.jpg"
|
||||||
|
import photo2 from "@images/suite-du-bas-2.jpg"
|
||||||
|
import photoSalleDEau1 from "@images/suite-du-bas-salle-d-eau-1.jpg"
|
||||||
|
import photoSalleDEau2 from "@images/suite-du-bas-salle-d-eau-2.jpg"
|
||||||
|
import PrimaryCTA from "../components/ui/buttons/PrimaryCTA.astro";
|
||||||
|
|
||||||
|
|
||||||
|
const structuredDescription = {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": "https://achat-maison-albi.fr/avec-une-belle-suite/",
|
||||||
|
"url": "https://achat-maison-albi.fr/avec-une-belle-suite/",
|
||||||
|
"name": "Maison individuelle avec une grande suite à Albi",
|
||||||
|
"description":
|
||||||
|
"Idéal pour les familles nombreuses ! 5 chambres dont une suite, 3 salles d’eau dans cette belle maison individuelle de 177 m2.",
|
||||||
|
"isPartOf": websiteStructuredDescription,
|
||||||
|
"image": photo1 as unknown as string,
|
||||||
|
"inLanguage": "fr-FR"
|
||||||
|
} satisfies WithContext<WebPage>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<MainLayout
|
||||||
|
title="Suite avec salle d’eau"
|
||||||
|
structuredData={structuredDescription}
|
||||||
|
>
|
||||||
|
<MainSection
|
||||||
|
title="Suite avec salle d’eau"
|
||||||
|
subTitle="Transformée en suite en 2019, cette chambre a été conçue pour héberger de manière très confortable une famille avec enfants."
|
||||||
|
>
|
||||||
|
<p class="mb-8 max-w-prose text-pretty font-normal text-neutral-600 dark:text-neutral-400 sm:text-xl">
|
||||||
|
Tête de lit sur mesure avec prises de courant, radiateur à grande inertie, sol en revêtement Bolon…
|
||||||
|
</p>
|
||||||
|
</MainSection>
|
||||||
|
|
||||||
|
<div class="flex gap-4">
|
||||||
|
<div class="flex-1">
|
||||||
|
<GrandePhotoCentrale src={photo1} alt="Chambre avec vue sur l’impasse" className="w-auto h-full max-h-[500px] object-contain mx-auto"/>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1">
|
||||||
|
<GrandePhotoCentrale src={photo2} alt="Vue sur la salle d’eau depuis la fenêtre" className="w-auto h-full max-h-[500px] object-contain mx-auto" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<MainSection
|
||||||
|
title="Salle d’eau"
|
||||||
|
subTitle="Nous avons fait réaliser cette salle chambre avec les meilleurs matériaux ! Nous avons fait intervenir des professionnels sérieux."
|
||||||
|
>
|
||||||
|
<p class="mb-8 max-w-prose text-pretty font-normal text-neutral-600 dark:text-neutral-400 sm:text-xl">
|
||||||
|
La transformation de l’ancien garage en suite a été confiée à <a class="text-orange-500" target="_blank" href="https://www.delphine-eche.fr/">Delphine Eche</a><br/>
|
||||||
|
|
||||||
|
Nous avons toutes les factures de tous les artisans et la garantie décennale bien entendu.
|
||||||
|
</p>
|
||||||
|
</MainSection>
|
||||||
|
|
||||||
|
<div class="flex gap-4">
|
||||||
|
<div class="flex-1">
|
||||||
|
<GrandePhotoCentrale src={photoSalleDEau1} alt="Grand vasque sur meuble en bois massif sur-mesure" className="w-auto h-full max-h-[500px] object-contain mx-auto"/>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1">
|
||||||
|
<GrandePhotoCentrale src={photoSalleDEau2} alt="Douche et WC suspendu" className="w-auto h-full max-h-[500px] object-contain mx-auto" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="mb-8">
|
||||||
|
Vous voulez en savoir plus ?
|
||||||
|
<PrimaryCTA title="Faire le tour des pièces" url="/pieces" />
|
||||||
|
</div>
|
||||||
|
</MainLayout>
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
---
|
---
|
||||||
|
import { websiteStructuredDescription } from "../data_files/constants";
|
||||||
|
import type {WebPage, WithContext } from "schema-dts";
|
||||||
import MainLayout from "@/layouts/MainLayout.astro";
|
import MainLayout from "@/layouts/MainLayout.astro";
|
||||||
import HeroSection from "@components/sections/landing/HeroSection.astro";
|
import HeroSection from "@components/sections/landing/HeroSection.astro";
|
||||||
import HeroSectionAlt from "@components/sections/landing/HeroSectionAlt.astro";
|
import HeroSectionAlt from "@components/sections/landing/HeroSectionAlt.astro";
|
||||||
|
|
@ -15,10 +17,24 @@ import photoRenovation2 from "@images/renovation-qualite.jpg";
|
||||||
import photoFondDImpasse from "@images/fond-d-impasse-albi.jpg";
|
import photoFondDImpasse from "@images/fond-d-impasse-albi.jpg";
|
||||||
import photoVuePiscine from "@images/vue-de-la-piscine.jpg";
|
import photoVuePiscine from "@images/vue-de-la-piscine.jpg";
|
||||||
import photoVueZenith from "@images/vue-zenith.jpg";
|
import photoVueZenith from "@images/vue-zenith.jpg";
|
||||||
|
import PrimaryCTA from "../components/ui/buttons/PrimaryCTA.astro";
|
||||||
|
|
||||||
|
const structuredDescription = {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": "https://achat-maison-albi.fr/",
|
||||||
|
"url": "https://achat-maison-albi.fr/",
|
||||||
|
"name": "Belle maison individuelle de 177 m2 à vendre à Albi",
|
||||||
|
"description":
|
||||||
|
"Belle maison individuelle de 177 m2 dans un écrin de verdure sur un terrain de 980 m2, non-mitoyenne, avec piscine, grande terrasse et garage. Sans vis-à-vis.",
|
||||||
|
image: photoVuePiscine as unknown as string,
|
||||||
|
"isPartOf": websiteStructuredDescription,
|
||||||
|
"inLanguage": "fr-FR"
|
||||||
|
} satisfies WithContext<WebPage>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<MainLayout>
|
<MainLayout structuredData={structuredDescription}>
|
||||||
<HeroSection
|
<HeroSection
|
||||||
title=`Maison individuelle de 177 m2 à <span
|
title=`Maison individuelle de 177 m2 à <span
|
||||||
class="text-yellow-500 dark:text-yellow-400">Albi</span>`
|
class="text-yellow-500 dark:text-yellow-400">Albi</span>`
|
||||||
|
|
@ -33,13 +49,13 @@ import photoVueZenith from "@images/vue-zenith.jpg";
|
||||||
|
|
||||||
|
|
||||||
<p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
<p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
||||||
Majoritairement de plein pied, la maison est organisée autour de sa grande terrasse orientée plein sud et accessible depuis toutes les pièces de vie, sans vis-à-vis.
|
Majoritairement de plain-pied, la maison est organisée autour de sa grande terrasse orientée plein sud et accessible depuis toutes les pièces de vie, sans vis-à-vis.
|
||||||
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
||||||
La cuisine refaite en 2017 est ouverte sur la grande pièce de vie lumineuse qui se termine par une cheminée fonctionnelle. L’entrée permet de passer directement de l’avant de la maison à la terrasse et distribue efficacement la cuisine, le salon, les toilettes, l’espace nuit et l’étage inférieur.
|
La cuisine refaite en 2017 est ouverte sur la grande pièce de vie lumineuse qui se termine par une cheminée fonctionnelle. L’entrée permet de passer directement de l’avant de la maison à la terrasse et distribue efficacement la cuisine, le salon, les toilettes, l’espace nuit et l’étage inférieur.
|
||||||
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
||||||
L’espace nuit est bien séparé, également lumineux et bien organisé : 2 grandes chambres et une belle salle d’eau refaite en 2018. Un passage par la salle de jeu, qui ouvre sur la terrasse, permet de rejoindre l’espace enfant : 2 grandes chambres plein sud, reliées par une salle d’eau commune, et par un dégagement qui offre grands placards et toilette.
|
L’espace nuit est bien séparé, également lumineux et bien organisé : 2 grandes chambres et une belle salle d’eau refaite en 2018. Un passage par la salle de jeu, qui ouvre sur la terrasse, permet de rejoindre l’espace enfant : 2 grandes chambres plein sud, reliées par une salle d’eau commune, et par un dégagement qui offre grands placards et toilette.
|
||||||
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
||||||
L’étage inférieur de la maison, semi-enterré, a été entièrement refait en 2019. Anciennement un garage et une salle de jeux que nous avons transformé en un grand bureau équipé, connecté et sécurisé, ainsi qu’une suite avec salle d'eau, conçue pour héberger un couple avec enfants.
|
L’étage inférieur de la maison a été entièrement refait en 2019. Anciennement un garage et une salle de jeux que nous avons transformé en un grand bureau équipé, connecté et sécurisé, ainsi qu’une suite avec salle d'eau, conçue pour héberger un couple avec enfants.
|
||||||
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
||||||
Piscine de 50 m3 et vue sur le Tarn. Le jardin permet de faire le tour de la maison et offre plusieurs recoins.
|
Piscine de 50 m3 et vue sur le Tarn. Le jardin permet de faire le tour de la maison et offre plusieurs recoins.
|
||||||
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
</p><p class="mt-3 text-pretty text-lg leading-relaxed text-neutral-700 dark:text-neutral-400 lg:w-4/5 mx-auto">
|
||||||
|
|
@ -54,6 +70,10 @@ import photoVueZenith from "@images/vue-zenith.jpg";
|
||||||
features={features}
|
features={features}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<div class="max-w-64 mx-auto">
|
||||||
|
<PrimaryCTA title="Tour des pièces" url="/pieces/" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<FeaturesNavs
|
<FeaturesNavs
|
||||||
title=`Des espaces pour <span class="text-yellow-500 dark:text-yellow-400">toute la famille</span>.`
|
title=`Des espaces pour <span class="text-yellow-500 dark:text-yellow-400">toute la famille</span>.`
|
||||||
tabs={[
|
tabs={[
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,26 @@
|
||||||
---
|
---
|
||||||
|
import { Image } from "astro:assets";
|
||||||
import MainLayout from "@/layouts/MainLayout.astro";
|
import MainLayout from "@/layouts/MainLayout.astro";
|
||||||
import MainSection from "@components/ui/blocks/MainSection.astro";
|
import MainSection from "@components/ui/blocks/MainSection.astro";
|
||||||
import LeftSection from "@components/ui/blocks/LeftSection.astro";
|
import LeftSection from "@components/ui/blocks/LeftSection.astro";
|
||||||
import RightSection from "@components/ui/blocks/RightSection.astro";
|
import RightSection from "@components/ui/blocks/RightSection.astro";
|
||||||
import FeaturesStats from "@components/sections/features/FeaturesStats.astro";
|
import FeaturesStats from "@components/sections/features/FeaturesStats.astro";
|
||||||
|
import BureauSection from "@components/sections/BureauSection.astro";
|
||||||
import photoSalonCheminee from "@images/salon-cheminee.jpg";
|
import photoSalonCheminee from "@images/salon-cheminee.jpg";
|
||||||
import photoSalonCuisine from "@images/salon-1.jpg";
|
import photoSalonCuisine from "@images/salon-1.jpg";
|
||||||
import photoCuisine from "@images/cuisine-1.jpg";
|
import photoCuisine from "@images/cuisine-1.jpg";
|
||||||
import photoChambreEnfantEst from "@images/chambre-enfant-est-grand-angle.jpg";
|
import photoChambreEnfantEst from "@images/chambre-enfant-est-grand-angle.jpg";
|
||||||
import photoChambreEnfantOuest from "@images/chambre-enfant-ouest-grand-angle-2.jpg";
|
import photoChambreEnfantOuest from "@images/chambre-enfant-ouest-grand-angle-2.jpg";
|
||||||
|
import photoSalleDeJeux from "@images/salle-de-jeux.jpg"
|
||||||
import photoSuite1 from "@images/suite-du-bas-1.jpg";
|
import photoSuite1 from "@images/suite-du-bas-1.jpg";
|
||||||
import photoParentale from "@images/chambre-parentale.jpg";
|
import photoParentale from "@images/chambre-parentale.jpg";
|
||||||
import photoSalleDEau from "@images/salle-d-eau-1.jpg";
|
import photoSalleDEau from "@images/salle-d-eau-1.jpg";
|
||||||
import photoChambre2 from "@images/chambre-2.jpg";
|
import photoChambre2 from "@images/chambre-2.jpg";
|
||||||
|
import photoDeLaPiscine from "@images/vue-piscine.jpg"
|
||||||
|
import vueCathedrale from "@images/vue-albi-cathedrale-sainte-cecile.jpg"
|
||||||
|
import photoVueAerienne from "@images/vue-aerienne-face-1.jpg"
|
||||||
|
import photoTerrasse from "@images/terrasse-5.jpg"
|
||||||
import { websiteStructuredDescription } from "../data_files/constants";
|
import { websiteStructuredDescription } from "../data_files/constants";
|
||||||
import BureauSection from "../components/sections/BureauSection.astro";
|
|
||||||
|
|
||||||
interface Article {
|
interface Article {
|
||||||
isRightSection: boolean;
|
isRightSection: boolean;
|
||||||
|
|
@ -32,13 +38,13 @@ interface Article {
|
||||||
imgTwoAlt?: string;
|
imgTwoAlt?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const articles: Article[] = [
|
const pieces: Article[] = [
|
||||||
{
|
{
|
||||||
isRightSection: true,
|
isRightSection: true,
|
||||||
title: "Grande pièce de vie lumineuse",
|
title: "Grande pièce de vie lumineuse",
|
||||||
subTitle: "Exposée plein sud, la pièce de vie principale est baignée de lumière, tout en restant fraiche l’été. " +
|
subTitle: "Exposée plein sud, la pièce de vie principale est baignée de lumière, tout en restant fraiche l’été. " +
|
||||||
"Elle offre un accès fluide à la terrasse à travers ses 3 portes-fenêtre." +
|
"Elle offre un accès fluide à la terrasse à travers ses 3 portes-fenêtre." +
|
||||||
"Majoritairement de plein-pied, la maison est organisée autour de sa grande terrasse orientée plein sud et accessible depuis toutes les pièces de vie, sans vis-à-vis.",
|
"Majoritairement de plain-pied, la maison est organisée autour de sa grande terrasse orientée plein sud et accessible depuis toutes les pièces de vie, sans vis-à-vis.",
|
||||||
single: false,
|
single: false,
|
||||||
imgOne: photoSalonCheminee,
|
imgOne: photoSalonCheminee,
|
||||||
imgOneAlt: "Vue du salon depuis la cuisine, avec la cheminée au fond",
|
imgOneAlt: "Vue du salon depuis la cuisine, avec la cheminée au fond",
|
||||||
|
|
@ -99,10 +105,21 @@ const articles: Article[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
isRightSection: false,
|
isRightSection: false,
|
||||||
title: "Suite du bas",
|
title: "Salle de jeux",
|
||||||
subTitle: "L’étage inférieur de la maison, semi-enterré, a été entièrement refait en 2019. L’ancienne salle de jeux a été complètement rénovée et transformée en une suite avec salle d'eau, conçue pour héberger un couple avec enfants. La meilleure chambre de la maison ?",
|
subTitle:
|
||||||
|
"Troisième chambre avant l’extension de 1990, cet espace riche en rangements relie l’espace nuit principal, l’espace des enfants et la terrasse. ",
|
||||||
|
img: photoSalleDeJeux,
|
||||||
|
imgAlt: "Photo de la salle de jeux, qui relie l’espace nuit principal, l’espace des enfants et la terrasse. ",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
isRightSection: false,
|
||||||
|
title: "Suite avec salle d’eau",
|
||||||
|
subTitle: "L’étage inférieur de la maison a été entièrement refait en 2019. L’ancienne salle de jeux a été complètement rénovée et transformée en une suite avec salle d'eau, conçue pour héberger un couple avec enfants. La meilleure chambre de la maison ?",
|
||||||
img: photoSuite1,
|
img: photoSuite1,
|
||||||
imgAlt: "Grande suite du bas. La meilleure chambre de la maison ?",
|
imgAlt: "Grande suite du bas. La meilleure chambre de la maison ?",
|
||||||
|
btnTitle: "Entrer dans la suite",
|
||||||
|
btnURL: "/avec-une-belle-suite/",
|
||||||
|
btnExists: true
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -131,7 +148,7 @@ const pageTitle: string = `Pièces de la maison | 177m2 à vendre à Albi`;
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{
|
{
|
||||||
articles.map(article => {
|
pieces.map(article => {
|
||||||
return article.isRightSection ? (
|
return article.isRightSection ? (
|
||||||
<RightSection
|
<RightSection
|
||||||
title={article.title}
|
title={article.title}
|
||||||
|
|
@ -181,4 +198,62 @@ const pageTitle: string = `Pièces de la maison | 177m2 à vendre à Albi`;
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<MainSection title="Et aussi" subTitle="" />
|
||||||
|
|
||||||
|
<div class="flex flex-col md:flex-row w-full">
|
||||||
|
<div class="flex-1 h-64 m-4">
|
||||||
|
<h3 class="text-xl font-bold m-2">Une piscine</h3>
|
||||||
|
<a href="/avec-piscine/">
|
||||||
|
<Image
|
||||||
|
src={photoDeLaPiscine}
|
||||||
|
alt="Une grande piscine de 50m3 dans un écrin composé de la terrasse et de verdure"
|
||||||
|
width={400}
|
||||||
|
densities={[1, 1.5, 2]}
|
||||||
|
class:list={["w-full object-cover object-center rounded-lg m-2"]}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1 h-64 m-4">
|
||||||
|
<h3 class="text-xl font-bold m-2">Une terrasse</h3>
|
||||||
|
<a href="/avec-terrasse/">
|
||||||
|
<Image
|
||||||
|
src={photoTerrasse}
|
||||||
|
alt="Une grande piscine de 50m3 dans un écrin composé de la terrasse et de verdure"
|
||||||
|
width={400}
|
||||||
|
densities={[1, 1.5, 2]}
|
||||||
|
class:list={["w-full object-cover object-center rounded-lg m-2"]}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1 h-64 m-4">
|
||||||
|
<h3 class="text-xl font-bold m-2">L’impasse</h3>
|
||||||
|
<a href="/dans-une-impasse/">
|
||||||
|
<Image
|
||||||
|
src={photoVueAerienne}
|
||||||
|
alt="Une grande piscine de 50m3 dans un écrin composé de la terrasse et de verdure"
|
||||||
|
width={400}
|
||||||
|
densities={[1, 1.5, 2]}
|
||||||
|
class:list={["w-full h-full object-cover object-center rounded-lg m-2 h-64"]}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1 m-4">
|
||||||
|
<h3 class="text-xl font-bold m-2">Le quartier</h3>
|
||||||
|
<a href="/quartier-cantepau/">
|
||||||
|
<Image
|
||||||
|
src={vueCathedrale}
|
||||||
|
alt="Une grande piscine de 50m3 dans un écrin composé de la terrasse et de verdure"
|
||||||
|
width={400}
|
||||||
|
densities={[1, 1.5, 2]}
|
||||||
|
class:list={["w-full object-cover object-center rounded-lg m-2 h-64"]}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,21 @@ const navBarLinks = [
|
||||||
|
|
||||||
const footerLinks = [
|
const footerLinks = [
|
||||||
{
|
{
|
||||||
section: "La maison",
|
section: "Intérieur",
|
||||||
links: [{ name: "Pièces", url: "/pieces/" }],
|
links: [
|
||||||
|
{ name: "Bureau", url: "/avec-un-grand-bureau/" },
|
||||||
|
{ name: "Suite", url: "/avec-une-belle-suite/" },
|
||||||
|
{ name: "Toutes les pièces", url: "/pieces/" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
section: "Extérieur",
|
||||||
|
links: [
|
||||||
|
{ name: "Terrasse", url: "/avec-terrasse/" },
|
||||||
|
{ name: "Piscine", url: "/avec-piscine/" },
|
||||||
|
{ name: "Impasse", url: "/dans-une-impasse/" },
|
||||||
|
{ name: "Quartier", url: "/quartier-cantepau/" },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
section: "Contact",
|
section: "Contact",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue