mirror of
https://github.com/rjNemo/vf-site
synced 2026-06-06 09:16:39 +00:00
refactor(i18n): use route manifest for all internal links; fix Astro frontmatter blocks; build passes
This commit is contained in:
parent
cc09505eca
commit
4c4224eb46
10 changed files with 42 additions and 21 deletions
|
|
@ -1,5 +1,8 @@
|
|||
---
|
||||
import BaseLayout from '../../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../../i18n/routes';
|
||||
const t2Href = hrefFor('apartment_t2', 'en');
|
||||
const t3Href = hrefFor('apartment_t3', 'en');
|
||||
---
|
||||
<BaseLayout title="Apartments" lang="en">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
|
|
@ -8,14 +11,13 @@ import BaseLayout from '../../../layouts/BaseLayout.astro';
|
|||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h2 class="text-lg font-semibold">T2 Corail</h2>
|
||||
<p class="text-sm text-slate-600">45 m² • 2–3 guests • 1 queen + sofa‑bed • €59/night</p>
|
||||
<a href="/en/apartments/t2-corail/" class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
<a href={t2Href} class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
</article>
|
||||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h2 class="text-lg font-semibold">T3 Azur</h2>
|
||||
<p class="text-sm text-slate-600">55 m² • up to 4 guests • 2 queen beds • €79/night</p>
|
||||
<a href="/en/apartments/t3-azur/" class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
<a href={t3Href} class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
---
|
||||
import BaseLayout from '../../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../../i18n/routes';
|
||||
const contactHref = hrefFor('contact', 'en');
|
||||
---
|
||||
<BaseLayout title="T2 Corail" lang="en">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
|
|
@ -16,9 +18,8 @@ import BaseLayout from '../../../layouts/BaseLayout.astro';
|
|||
<li>Check‑in 14:00 / Check‑out 11:00</li>
|
||||
</ul>
|
||||
<div class="mt-6 flex gap-3">
|
||||
<a href="/en/contact/" class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Send a Request</a>
|
||||
<a href={contactHref} class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Send a Request</a>
|
||||
<a href="https://airbnb.fr/h/villafleurie-t2" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 px-4 py-2">Book on Airbnb (T2)</a>
|
||||
</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
---
|
||||
import BaseLayout from '../../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../../i18n/routes';
|
||||
const contactHref = hrefFor('contact', 'en');
|
||||
---
|
||||
<BaseLayout title="T3 Azur" lang="en">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
|
|
@ -16,9 +18,8 @@ import BaseLayout from '../../../layouts/BaseLayout.astro';
|
|||
<li>Check‑in 14:00 / Check‑out 11:00</li>
|
||||
</ul>
|
||||
<div class="mt-6 flex gap-3">
|
||||
<a href="/en/contact/" class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Send a Request</a>
|
||||
<a href={contactHref} class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Send a Request</a>
|
||||
<a href="https://airbnb.fr/h/villafleurie-t3" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 px-4 py-2">Book on Airbnb (T3)</a>
|
||||
</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
---
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../i18n/routes';
|
||||
const thankHref = hrefFor('thank_you', 'en');
|
||||
---
|
||||
<BaseLayout title="Contact" lang="en">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
<h1 class="text-3xl font-semibold">Send a Request</h1>
|
||||
<form name="bookingForm" method="POST" data-netlify="true" action="/en/thank-you/" class="mt-6 grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<form name="bookingForm" method="POST" data-netlify="true" action={thankHref} class="mt-6 grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<input type="hidden" name="form-name" value="bookingForm" />
|
||||
<label class="flex flex-col gap-1">
|
||||
<span class="text-sm">Full name</span>
|
||||
|
|
@ -52,4 +54,3 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||
</form>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
---
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../i18n/routes';
|
||||
const title = 'Home';
|
||||
const contactHref = hrefFor('contact', 'en');
|
||||
const t2Href = hrefFor('apartment_t2', 'en');
|
||||
const t3Href = hrefFor('apartment_t3', 'en');
|
||||
---
|
||||
<BaseLayout title={title} lang="en" description="Comfortable stays in Le Gosier for couples and small families">
|
||||
<section class="relative">
|
||||
|
|
@ -11,7 +15,7 @@ const title = 'Home';
|
|||
<h1 class="text-white text-3xl md:text-5xl font-semibold max-w-3xl">Comfortable stays in Le Gosier for couples and small families</h1>
|
||||
<p class="text-white/90 mt-3 max-w-2xl">Two bright apartments near the beaches. Send a request or book instantly.</p>
|
||||
<div class="mt-6 flex gap-3">
|
||||
<a href="/en/contact/" class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Send a Request</a>
|
||||
<a href={contactHref} class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Send a Request</a>
|
||||
<a href="https://www.booking.com/hotel/gp/villafleurie.fr.html" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 bg-white/90 px-4 py-2 text-slate-900 hover:bg-white" onclick="plausible('click_booking',{props:{locale:'en',page:'home',position:'hero'}})">Book on Booking.com</a>
|
||||
<a href="https://airbnb.fr/h/villafleurie-t2" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 bg-white/90 px-4 py-2 text-slate-900 hover:bg-white" onclick="plausible('click_airbnb',{props:{locale:'en',page:'home',position:'hero'}})">Book on Airbnb (T2)</a>
|
||||
</div>
|
||||
|
|
@ -44,12 +48,12 @@ const title = 'Home';
|
|||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h3 class="text-lg font-semibold">T2 Corail</h3>
|
||||
<p class="text-sm text-slate-600">45 m² • 2–3 guests • 1 queen + sofa‑bed • €59/night</p>
|
||||
<a href="/en/apartments/t2-corail/" class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
<a href={t2Href} class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
</article>
|
||||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h3 class="text-lg font-semibold">T3 Azur</h3>
|
||||
<p class="text-sm text-slate-600">55 m² • up to 4 guests • 2 queen beds • €79/night</p>
|
||||
<a href="/en/apartments/t3-azur/" class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
<a href={t3Href} class="mt-3 inline-block text-brand-600 underline">Discover</a>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -63,4 +67,3 @@ const title = 'Home';
|
|||
</div>
|
||||
</section>
|
||||
</BaseLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
---
|
||||
import BaseLayout from '../../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../../i18n/routes';
|
||||
const t2Href = hrefFor('apartment_t2', 'fr');
|
||||
const t3Href = hrefFor('apartment_t3', 'fr');
|
||||
---
|
||||
<BaseLayout title="Appartements" lang="fr">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
|
|
@ -8,12 +11,12 @@ import BaseLayout from '../../../layouts/BaseLayout.astro';
|
|||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h2 class="text-lg font-semibold">T2 Corail</h2>
|
||||
<p class="text-sm text-slate-600">45 m² • 2–3 personnes • 1 lit queen + canapé‑lit • 59 €/nuit</p>
|
||||
<a href="/fr/appartements/t2-corail/" class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
<a href={t2Href} class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
</article>
|
||||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h2 class="text-lg font-semibold">T3 Azur</h2>
|
||||
<p class="text-sm text-slate-600">55 m² • jusqu’à 4 personnes • 2 lits queen • 79 €/nuit</p>
|
||||
<a href="/fr/appartements/t3-azur/" class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
<a href={t3Href} class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
---
|
||||
import BaseLayout from '../../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../../i18n/routes';
|
||||
const contactHref = hrefFor('contact', 'fr');
|
||||
---
|
||||
<BaseLayout title="T2 Corail" lang="fr">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
|
|
@ -16,7 +18,7 @@ import BaseLayout from '../../../layouts/BaseLayout.astro';
|
|||
<li>Arrivée 14:00 / Départ 11:00</li>
|
||||
</ul>
|
||||
<div class="mt-6 flex gap-3">
|
||||
<a href="/fr/contact/" class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Envoyer une demande</a>
|
||||
<a href={contactHref} class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Envoyer une demande</a>
|
||||
<a href="https://airbnb.fr/h/villafleurie-t2" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 px-4 py-2">Réserver sur Airbnb (T2)</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
---
|
||||
import BaseLayout from '../../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../../i18n/routes';
|
||||
const contactHref = hrefFor('contact', 'fr');
|
||||
---
|
||||
<BaseLayout title="T3 Azur" lang="fr">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
|
|
@ -16,7 +18,7 @@ import BaseLayout from '../../../layouts/BaseLayout.astro';
|
|||
<li>Arrivée 14:00 / Départ 11:00</li>
|
||||
</ul>
|
||||
<div class="mt-6 flex gap-3">
|
||||
<a href="/fr/contact/" class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Envoyer une demande</a>
|
||||
<a href={contactHref} class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Envoyer une demande</a>
|
||||
<a href="https://airbnb.fr/h/villafleurie-t3" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 px-4 py-2">Réserver sur Airbnb (T3)</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
---
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../i18n/routes';
|
||||
const thankHref = hrefFor('thank_you', 'fr');
|
||||
---
|
||||
<BaseLayout title="Contact" lang="fr">
|
||||
<div class="mx-auto max-w-6xl px-6 py-10">
|
||||
<h1 class="text-3xl font-semibold">Envoyer une demande</h1>
|
||||
<form name="bookingForm" method="POST" data-netlify="true" action="/fr/merci/" class="mt-6 grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<form name="bookingForm" method="POST" data-netlify="true" action={thankHref} class="mt-6 grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<input type="hidden" name="form-name" value="bookingForm" />
|
||||
<label class="flex flex-col gap-1">
|
||||
<span class="text-sm">Nom complet</span>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
---
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import { hrefFor } from '../../i18n/routes';
|
||||
const title = 'Accueil';
|
||||
const contactHref = hrefFor('contact', 'fr');
|
||||
const t2Href = hrefFor('apartment_t2', 'fr');
|
||||
const t3Href = hrefFor('apartment_t3', 'fr');
|
||||
---
|
||||
<BaseLayout title={title} lang="fr" description="Séjours confortables au Gosier pour couples et petites familles">
|
||||
<section class="relative">
|
||||
|
|
@ -11,7 +15,7 @@ const title = 'Accueil';
|
|||
<h1 class="text-white text-3xl md:text-5xl font-semibold max-w-3xl">Séjours confortables au Gosier pour couples et petites familles</h1>
|
||||
<p class="text-white/90 mt-3 max-w-2xl">Deux appartements lumineux, près des plages. Envoyez une demande ou réservez instantanément.</p>
|
||||
<div class="mt-6 flex gap-3">
|
||||
<a href="/fr/contact/" class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Envoyer une demande</a>
|
||||
<a href={contactHref} class="inline-flex items-center rounded-lg bg-brand px-4 py-2 text-white hover:bg-brand-600">Envoyer une demande</a>
|
||||
<a href="https://www.booking.com/hotel/gp/villafleurie.fr.html" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 bg-white/90 px-4 py-2 text-slate-900 hover:bg-white" on:click={() => plausible('click_booking', {props:{locale:'fr',page:'home',position:'hero'}})}>Réserver sur Booking.com</a>
|
||||
<a href="https://airbnb.fr/h/villafleurie-t2" target="_blank" rel="noopener" class="inline-flex items-center rounded-lg border border-slate-200 bg-white/90 px-4 py-2 text-slate-900 hover:bg-white" on:click={() => plausible('click_airbnb', {props:{locale:'fr',page:'home',position:'hero'}})}>Réserver sur Airbnb (T2)</a>
|
||||
</div>
|
||||
|
|
@ -44,12 +48,12 @@ const title = 'Accueil';
|
|||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h3 class="text-lg font-semibold">T2 Corail</h3>
|
||||
<p class="text-sm text-slate-600">45 m² • 2–3 personnes • 1 lit queen + canapé‑lit • 59 €/nuit</p>
|
||||
<a href="/fr/appartements/t2-corail/" class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
<a href={t2Href} class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
</article>
|
||||
<article class="rounded-lg border border-slate-200 p-4">
|
||||
<h3 class="text-lg font-semibold">T3 Azur</h3>
|
||||
<p class="text-sm text-slate-600">55 m² • jusqu’à 4 personnes • 2 lits queen • 79 €/nuit</p>
|
||||
<a href="/fr/appartements/t3-azur/" class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
<a href={t3Href} class="mt-3 inline-block text-brand-600 underline">Découvrir</a>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
|||
Loading…
Reference in a new issue