feat(symposium): Symposium II.0 detail page

Hero with dates badge, overview prose, four "what's included" cards
(funded position / living space / meals / self-care support), the
eligibility blurb, and a three-step application path. Two CTAs at the
bottom: see open positions, or write directly.

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

View file

@ -178,6 +178,44 @@
"cta": "Write to us"
}
},
"symposium": {
"hero": {
"kicker": "Symposium II.0",
"title": "An incubator for an ecological arts center",
"lede": "A three-month curated programme bringing a small team together to design, build and put into practice the next phase of Château du Faune.",
"dates": "15 April → 15 July 2026"
},
"overview": {
"title": "Overview",
"body": "Seven fully funded positions inside a core team of ten to fifteen, engaged in collective inquiry and practical experimentation. The emphasis is on action and material realisation — building infrastructure, growing food, shaping gathering spaces, and laying the organisational ground for what comes next."
},
"includedTitle": "What's included",
"included": {
"fundedTitle": "Funded position",
"fundedBody": "All seven positions cover the participant's time for the duration of the residency.",
"stayTitle": "Place to live and work",
"stayBody": "A comfortable room on site, shared kitchen, and dedicated work space.",
"foodTitle": "Healthy meals",
"foodBody": "Nourishing food prepared for the team and the wider community.",
"careTitle": "Self-care support",
"careBody": "Rest, sauna, yoga and quiet time built into the rhythm of the week — not optional extras."
},
"eligibility": {
"title": "Who we're looking for",
"body": "Artists, designers, builders, growers, organisers and thinkers ready to take part in building an entrepreneurial ecological arts venture from the ground up. No credentials required."
},
"applyTitle": "How to apply",
"apply": {
"stepOneTitle": "1 · Read the concept",
"stepOneBody": "Spend a moment with the Art & Ecology page and Vision & Values.",
"stepTwoTitle": "2 · Find the right role",
"stepTwoBody": "Browse the open positions and pick the one that matches your craft.",
"stepThreeTitle": "3 · Send your application",
"stepThreeBody": "Applications are open from 1 January to 15 March 2026."
},
"ctaApply": "See open positions",
"ctaContact": "Ask a question"
},
"events": {
"page": {
"kicker": "What's On",

View file

@ -178,6 +178,44 @@
"cta": "Nous écrire"
}
},
"symposium": {
"hero": {
"kicker": "Symposium II.0",
"title": "Un incubateur pour un centre d'art écologique",
"lede": "Un programme de trois mois qui rassemble une petite équipe pour concevoir, bâtir et mettre en pratique la prochaine étape du Château du Faune.",
"dates": "15 avril → 15 juillet 2026"
},
"overview": {
"title": "Vue d'ensemble",
"body": "Sept postes entièrement financés au sein d'une équipe centrale de dix à quinze personnes, engagée dans une recherche collective et l'expérimentation concrète. L'accent est mis sur l'action et la réalisation matérielle — bâtir l'infrastructure, faire pousser la nourriture, façonner les espaces de rassemblement et poser le sol organisationnel pour la suite."
},
"includedTitle": "Ce qui est inclus",
"included": {
"fundedTitle": "Poste financé",
"fundedBody": "Les sept postes couvrent le temps des participant·es pour toute la durée de la résidence.",
"stayTitle": "Logement & espace de travail",
"stayBody": "Une chambre confortable sur place, cuisine partagée et espace de travail dédié.",
"foodTitle": "Repas sains",
"foodBody": "Nourriture nourrissante préparée pour l'équipe et la communauté élargie.",
"careTitle": "Soutien au soin de soi",
"careBody": "Repos, sauna, yoga et temps calme sont intégrés au rythme de la semaine — pas des options."
},
"eligibility": {
"title": "Qui nous cherchons",
"body": "Artistes, designers, bâtisseur·euses, maraîcher·ères, organisateur·trices et penseur·euses prêt·es à participer à la construction d'une aventure d'art écologique entrepreneuriale. Aucun diplôme requis."
},
"applyTitle": "Comment candidater",
"apply": {
"stepOneTitle": "1 · Lire le concept",
"stepOneBody": "Passez un moment avec la page Art & Écologie et Vision & Valeurs.",
"stepTwoTitle": "2 · Trouver le bon rôle",
"stepTwoBody": "Parcourez les postes ouverts et choisissez celui qui correspond à votre métier.",
"stepThreeTitle": "3 · Envoyer votre candidature",
"stepThreeBody": "Les candidatures sont ouvertes du 1ᵉʳ janvier au 15 mars 2026."
},
"ctaApply": "Voir les postes ouverts",
"ctaContact": "Poser une question"
},
"events": {
"page": {
"kicker": "À l'affiche",

View file

@ -1,12 +1,121 @@
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
const { t } = useI18n()
const included = ['funded', 'stay', 'food', 'care'] as const
const applySteps = ['stepOne', 'stepTwo', 'stepThree'] as const
</script>
<template>
<article class="mx-auto max-w-4xl px-4 py-16">
<h1 class="font-serif text-4xl font-semibold tracking-tight">{{ t('nav.symposium') }}</h1>
<p class="mt-4 text-muted-foreground">{{ t('common.comingSoon') }}</p>
<div>
<!-- Hero -->
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto grid max-w-7xl gap-10 px-4 py-16 lg:grid-cols-2 lg:gap-14 lg:px-6 lg:py-20">
<div>
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('symposium.hero.kicker') }}
</p>
<h1
class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl"
>
{{ t('symposium.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('symposium.hero.lede') }}
</p>
<p class="mt-6 inline-block rounded-md bg-card px-3 py-2 font-serif text-base">
{{ t('symposium.hero.dates') }}
</p>
</div>
<img
src="https://static.wixstatic.com/media/f1cbb8_72455a57197944e2b3cd2d895d459ba0~mv2.jpg"
alt=""
class="aspect-[4/3] w-full rounded-lg object-cover"
loading="lazy"
/>
</div>
</section>
<!-- Overview -->
<section class="mx-auto max-w-4xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.overview.title') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('symposium.overview.body') }}
</p>
</section>
<!-- What's included -->
<section class="border-y border-border bg-card">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.includedTitle') }}
</h2>
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
<article
v-for="key in included"
:key="key"
class="rounded-lg border border-border bg-background p-6"
>
<h3 class="font-serif text-lg font-semibold">
{{ t(`symposium.included.${key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`symposium.included.${key}Body`) }}
</p>
</article>
</div>
</div>
</section>
<!-- Eligibility -->
<section class="mx-auto max-w-4xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.eligibility.title') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('symposium.eligibility.body') }}
</p>
</section>
<!-- How to apply -->
<section class="border-t border-border bg-secondary/30">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.applyTitle') }}
</h2>
<ol class="mt-8 grid gap-6 md:grid-cols-3">
<li
v-for="step in applySteps"
:key="step"
class="rounded-lg border border-border bg-card p-6"
>
<h3 class="font-serif text-lg font-semibold">
{{ t(`symposium.apply.${step}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`symposium.apply.${step}Body`) }}
</p>
</li>
</ol>
<div class="mt-10 flex flex-wrap items-center gap-3">
<RouterLink
to="/opportunities"
class="rounded-md bg-primary px-5 py-3 text-sm font-medium text-primary-foreground hover:opacity-90"
>
{{ t('symposium.ctaApply') }}
</RouterLink>
<a
href="mailto:chateaudufaune@ariege.io"
class="rounded-md border border-border px-5 py-3 text-sm font-medium hover:bg-muted"
>
{{ t('symposium.ctaContact') }}
</a>
</div>
</div>
</section>
</div>
</template>