feat(home): hero, welcome, pathways, featured events, contact

Five-section home view: cosmic-stag hero with primary CTAs, welcome
panel paired with a property photo, four pathways (day visit / activity
/ retreat / residency) linking into the relevant sections, three
featured upcoming events, contact band. Earthy serif/sans rhythm and
accent terracotta hovers throughout.

Event imagery loads from the Wix CDN for now; plan is to mirror to
public/ once final selections are made.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-06-08 17:33:06 +02:00
commit 92c108c195
3 changed files with 364 additions and 9 deletions

View file

@ -8,7 +8,8 @@
"comingSoon": "Coming soon.",
"learnMore": "Learn more",
"seeAll": "See all",
"contactUs": "Contact us"
"contactUs": "Contact us",
"openingFall2026": "Opening fall 2026"
},
"nav": {
"concept": "Concept",
@ -33,5 +34,79 @@
"social": "Follow us",
"address": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France",
"rights": "All rights reserved."
},
"home": {
"hero": {
"kicker": "Ariège · Pyrenean foothills",
"lede": "An artist residency, a working farm and an events venue — practising slow living with humble reverence for the natural world.",
"ctaVisit": "Plan your visit",
"ctaConcept": "Discover the concept"
},
"welcome": {
"title": "Farmstand ✦ Land art ✦ Residency ✦ Events",
"body": "Eleven hectares at Château de Bénac, where regenerative practices, ecological design and artistic work share the same ground. We are growing the place slowly — opening to the public in fall 2026."
},
"pathways": {
"title": "Find your way in",
"subtitle": "Four ways to meet the land.",
"dayVisit": {
"title": "Drop by for the day",
"body": "Visit the farmstand and the land-art gallery, picnic in the sculpture garden."
},
"activity": {
"title": "Join an activity",
"body": "Workshops, yoga, sauna soirees, open-air concerts and seasonal celebrations."
},
"retreat": {
"title": "Stay for a retreat",
"body": "Short stays for makers, writers, retreaters and small gatherings."
},
"residency": {
"title": "Apply for a residency",
"body": "Long-term residencies for artists, builders, growers, and stewards."
}
},
"events": {
"title": "What's coming up",
"subtitle": "A glimpse of the season ahead. Inaugural programming opens fall 2026.",
"seeAll": "See all events"
},
"contact": {
"title": "Visit us in Ariège",
"body": "We're at 456 Grand Rue de Bellissen, Château de Bénac, 09000 France. Write us, send a smoke signal, or follow along online.",
"cta": "Write to us"
}
},
"events": {
"saunaSoiree": {
"title": "Sauna Soiree",
"date": "First Sunday of the month",
"location": "Wellness Nook"
},
"springResidency": {
"title": "Spring Residency — The Spirit of Art",
"date": "March 1, 2027",
"location": "Main building, Temple"
},
"picnicJam": {
"title": "Picnic Potluck & Jam — Salad Buffet",
"date": "March 22, 2026",
"location": "Mad Hatter's Tea Party Table"
},
"artWalk": {
"title": "Evening Art Walk & Open-Air Concert",
"date": "May 15, 2026",
"location": "Main building, Temple"
},
"yinYoga": {
"title": "Cozy Yin Yoga & Tea",
"date": "Thursday evenings",
"location": "Wellness Nook"
},
"vinyasaFlow": {
"title": "Yoga Vinyasa Flow",
"date": "Wednesday mornings",
"location": "Wellness Nook"
}
}
}

View file

@ -8,7 +8,8 @@
"comingSoon": "Bientôt disponible.",
"learnMore": "En savoir plus",
"seeAll": "Voir tout",
"contactUs": "Nous contacter"
"contactUs": "Nous contacter",
"openingFall2026": "Ouverture à l'automne 2026"
},
"nav": {
"concept": "Concept",
@ -33,5 +34,79 @@
"social": "Suivez-nous",
"address": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France",
"rights": "Tous droits réservés."
},
"home": {
"hero": {
"kicker": "Ariège · piémont pyrénéen",
"lede": "Une résidence d'artistes, une fermette en activité et un lieu d'événements — pratiquer le slow living avec révérence pour le monde naturel.",
"ctaVisit": "Préparer votre visite",
"ctaConcept": "Découvrir le concept"
},
"welcome": {
"title": "Fermette ✦ Art de la terre ✦ Résidence ✦ Événements",
"body": "Onze hectares au Château de Bénac, où pratiques régénératives, design écologique et création artistique partagent le même sol. Nous faisons croître ce lieu doucement — ouverture au public à l'automne 2026."
},
"pathways": {
"title": "Trouvez votre chemin",
"subtitle": "Quatre façons de rencontrer le lieu.",
"dayVisit": {
"title": "Passer une journée",
"body": "Visitez la fermette et la galerie d'art de la terre, pique-niquez dans le jardin de sculptures."
},
"activity": {
"title": "Rejoindre une activité",
"body": "Ateliers, yoga, soirées sauna, concerts en plein air et célébrations saisonnières."
},
"retreat": {
"title": "Faire une retraite",
"body": "Courts séjours pour artistes, écrivain·es, retraitant·es et petits rassemblements."
},
"residency": {
"title": "Candidater à une résidence",
"body": "Résidences longue durée pour artistes, bâtisseur·euses, maraîcher·ères et gardien·nes du lieu."
}
},
"events": {
"title": "À venir prochainement",
"subtitle": "Un aperçu de la saison qui arrive. La programmation inaugurale ouvre à l'automne 2026.",
"seeAll": "Voir tous les événements"
},
"contact": {
"title": "Nous rendre visite en Ariège",
"body": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France. Écrivez-nous, envoyez un signal de fumée, ou suivez-nous en ligne.",
"cta": "Nous écrire"
}
},
"events": {
"saunaSoiree": {
"title": "Soirée sauna",
"date": "Premier dimanche du mois",
"location": "Coin bien-être"
},
"springResidency": {
"title": "Résidence de printemps — L'esprit de l'art",
"date": "1er mars 2027",
"location": "Bâtiment principal, le Temple"
},
"picnicJam": {
"title": "Pique-nique partagé & jam — Buffet de salades",
"date": "22 mars 2026",
"location": "Table du Chapelier fou"
},
"artWalk": {
"title": "Promenade artistique & concert en plein air",
"date": "15 mai 2026",
"location": "Bâtiment principal, le Temple"
},
"yinYoga": {
"title": "Yin Yoga & tisane",
"date": "Les jeudis soir",
"location": "Coin bien-être"
},
"vinyasaFlow": {
"title": "Vinyasa Flow",
"date": "Les mercredis matin",
"location": "Coin bien-être"
}
}
}

View file

@ -1,15 +1,220 @@
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
const { t } = useI18n()
const pathways = [
{
key: 'dayVisit' as const,
to: '/reservations',
icon: '☕',
},
{
key: 'activity' as const,
to: '/events',
icon: '✦',
},
{
key: 'retreat' as const,
to: '/accommodation',
icon: '⛺',
},
{
key: 'residency' as const,
to: '/long-stays',
icon: '✎',
},
]
const featuredEvents = [
{
key: 'picnicJam' as const,
to: '/events',
image: 'https://static.wixstatic.com/media/08f3f751545c44bfab292af3adb102d1.jpg',
},
{
key: 'saunaSoiree' as const,
to: '/events',
image: 'https://static.wixstatic.com/media/nsplsh_f31fc52f9db74bb0b09d2902ba8bface~mv2.jpg',
},
{
key: 'springResidency' as const,
to: '/symposium',
image: 'https://static.wixstatic.com/media/11062b_3ecb0cd90cee43e48b5aef5351766bc7~mv2.jpg',
},
]
</script>
<template>
<article class="mx-auto max-w-4xl px-4 py-16">
<h1 class="font-serif text-4xl font-semibold tracking-tight md:text-5xl">
{{ t('common.siteName') }}
</h1>
<p class="mt-3 text-lg text-muted-foreground">{{ t('common.tagline') }}</p>
<p class="mt-8 text-base">{{ t('common.comingSoon') }}</p>
</article>
<div>
<!-- Hero -->
<section class="relative overflow-hidden bg-gradient-to-b from-secondary/60 to-background">
<div
class="mx-auto grid max-w-7xl items-center gap-10 px-4 py-16 lg:grid-cols-2 lg:gap-16 lg:px-6 lg:py-24"
>
<div>
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('home.hero.kicker') }}
</p>
<h1
class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl"
>
Château du Faune
</h1>
<p class="mt-2 font-serif text-xl italic text-muted-foreground">
{{ t('common.tagline') }}
</p>
<p class="mt-6 max-w-prose text-lg leading-relaxed">
{{ t('home.hero.lede') }}
</p>
<div class="mt-8 flex flex-wrap items-center gap-3">
<RouterLink
to="/reservations"
class="rounded-md bg-primary px-5 py-3 text-sm font-medium text-primary-foreground hover:opacity-90"
>
{{ t('home.hero.ctaVisit') }}
</RouterLink>
<RouterLink
to="/concept"
class="rounded-md border border-border px-5 py-3 text-sm font-medium hover:bg-muted"
>
{{ t('home.hero.ctaConcept') }}
</RouterLink>
</div>
<p class="mt-6 text-xs uppercase tracking-wider text-muted-foreground">
{{ t('common.openingFall2026') }}
</p>
</div>
<div class="relative flex items-center justify-center">
<img
src="/cosmic-stag.png"
alt=""
class="h-72 w-72 object-contain md:h-96 md:w-96"
/>
</div>
</div>
</section>
<!-- Welcome -->
<section class="border-y border-border bg-card">
<div class="mx-auto grid max-w-7xl gap-10 px-4 py-16 lg:grid-cols-5 lg:gap-14 lg:px-6">
<div class="lg:col-span-2">
<img
src="https://static.wixstatic.com/media/11062b_a56b905cae7c424c84cbaa1677d59ec5~mv2.jpg"
alt=""
class="aspect-[4/3] w-full rounded-lg object-cover"
loading="lazy"
/>
</div>
<div class="lg:col-span-3">
<h2 class="font-serif text-3xl font-semibold tracking-tight md:text-4xl">
{{ t('home.welcome.title') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed text-foreground/90">
{{ t('home.welcome.body') }}
</p>
<RouterLink
to="/vision-values"
class="mt-6 inline-block text-sm font-medium text-accent hover:underline"
>
{{ t('common.learnMore') }}
</RouterLink>
</div>
</div>
</section>
<!-- Pathways -->
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="mx-auto max-w-2xl text-center">
<h2 class="font-serif text-3xl font-semibold tracking-tight md:text-4xl">
{{ t('home.pathways.title') }}
</h2>
<p class="mt-3 text-muted-foreground">{{ t('home.pathways.subtitle') }}</p>
</div>
<div class="mt-10 grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
<RouterLink
v-for="p in pathways"
:key="p.key"
:to="p.to"
class="group rounded-lg border border-border bg-card p-6 transition hover:border-accent hover:shadow-sm"
>
<div class="text-3xl text-accent">{{ p.icon }}</div>
<h3 class="mt-3 font-serif text-xl font-semibold">
{{ t(`home.pathways.${p.key}.title`) }}
</h3>
<p class="mt-2 text-sm text-muted-foreground">
{{ t(`home.pathways.${p.key}.body`) }}
</p>
<span class="mt-4 inline-block text-xs text-accent group-hover:underline">
{{ t('common.learnMore') }}
</span>
</RouterLink>
</div>
</section>
<!-- Featured events -->
<section class="bg-secondary/30">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="flex flex-wrap items-end justify-between gap-4">
<div>
<h2 class="font-serif text-3xl font-semibold tracking-tight md:text-4xl">
{{ t('home.events.title') }}
</h2>
<p class="mt-2 max-w-prose text-muted-foreground">
{{ t('home.events.subtitle') }}
</p>
</div>
<RouterLink
to="/events"
class="text-sm font-medium text-accent hover:underline"
>
{{ t('home.events.seeAll') }}
</RouterLink>
</div>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<RouterLink
v-for="e in featuredEvents"
:key="e.key"
:to="e.to"
class="group overflow-hidden rounded-lg border border-border bg-card transition hover:shadow-md"
>
<img
:src="e.image"
alt=""
class="aspect-[4/3] w-full object-cover transition group-hover:scale-[1.02]"
loading="lazy"
/>
<div class="p-5">
<p class="text-xs uppercase tracking-wider text-accent">
{{ t(`events.${e.key}.date`) }}
</p>
<h3 class="mt-1 font-serif text-xl font-semibold">
{{ t(`events.${e.key}.title`) }}
</h3>
<p class="mt-1 text-sm text-muted-foreground">
{{ t(`events.${e.key}.location`) }}
</p>
</div>
</RouterLink>
</div>
</div>
</section>
<!-- Contact band -->
<section class="mx-auto max-w-4xl px-4 py-16 text-center lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight md:text-4xl">
{{ t('home.contact.title') }}
</h2>
<p class="mx-auto mt-4 max-w-prose text-muted-foreground">
{{ t('home.contact.body') }}
</p>
<a
href="mailto:chateaudufaune@ariege.io"
class="mt-8 inline-block rounded-md bg-primary px-5 py-3 text-sm font-medium text-primary-foreground hover:opacity-90"
>
{{ t('home.contact.cta') }}
</a>
</section>
</div>
</template>