feat(events): listing of public programs
Six event cards (picnic potluck, art walk, sauna soiree, spring residency, yin yoga, vinyasa flow) with date / location / one-line description. The spring residency card links into the dedicated Symposium II.0 page; the others sit as static cards until a real calendar source lands. A note flags the in-progress bouge.ariege.io community calendar for the wider region. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
2acfb84fc4
commit
00a3841646
3 changed files with 132 additions and 16 deletions
|
|
@ -179,35 +179,48 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"events": {
|
"events": {
|
||||||
|
"page": {
|
||||||
|
"kicker": "What's On",
|
||||||
|
"title": "Events & programs",
|
||||||
|
"lede": "Yoga, café and co-working, bonfire jams, afternoon picnics, sauna soirees and more. Public programming inaugurates in fall 2026.",
|
||||||
|
"calendarNote": "A community calendar app for the wider Ariège is in development at bouge.ariege.io — launching summer 2026.",
|
||||||
|
"noteHeading": "Note"
|
||||||
|
},
|
||||||
"saunaSoiree": {
|
"saunaSoiree": {
|
||||||
"title": "Sauna Soiree",
|
"title": "Sauna Soiree",
|
||||||
"date": "First Sunday of the month",
|
"date": "First Sunday of the month",
|
||||||
"location": "Wellness Nook"
|
"location": "Wellness Nook",
|
||||||
|
"description": "Steam, hot tub and cold plunge under the stars, with live music, cacao, tea and food."
|
||||||
},
|
},
|
||||||
"springResidency": {
|
"springResidency": {
|
||||||
"title": "Spring Residency — The Spirit of Art",
|
"title": "Spring Residency — The Spirit of Art",
|
||||||
"date": "March 1, 2027",
|
"date": "March 1, 2027",
|
||||||
"location": "Main building, Temple"
|
"location": "Main building, Temple",
|
||||||
|
"description": "A short residency oriented around painting, drawing and craft, in the slow light of early spring."
|
||||||
},
|
},
|
||||||
"picnicJam": {
|
"picnicJam": {
|
||||||
"title": "Picnic Potluck & Jam — Salad Buffet",
|
"title": "Picnic Potluck & Jam — Salad Buffet",
|
||||||
"date": "March 22, 2026",
|
"date": "March 22, 2026",
|
||||||
"location": "Mad Hatter's Tea Party Table"
|
"location": "Mad Hatter's Tea Party Table",
|
||||||
|
"description": "A spring-equinox potluck and music jam — bring a salad, a tune, or both."
|
||||||
},
|
},
|
||||||
"artWalk": {
|
"artWalk": {
|
||||||
"title": "Evening Art Walk & Open-Air Concert",
|
"title": "Evening Art Walk & Open-Air Concert",
|
||||||
"date": "May 15, 2026",
|
"date": "May 15, 2026",
|
||||||
"location": "Main building, Temple"
|
"location": "Main building, Temple",
|
||||||
|
"description": "A walk through the sculpture garden with live musical accompaniment as the light falls."
|
||||||
},
|
},
|
||||||
"yinYoga": {
|
"yinYoga": {
|
||||||
"title": "Cozy Yin Yoga & Tea",
|
"title": "Cozy Yin Yoga & Tea",
|
||||||
"date": "Thursday evenings",
|
"date": "Thursday evenings",
|
||||||
"location": "Wellness Nook"
|
"location": "Wellness Nook",
|
||||||
|
"description": "Slow yin shapes, long holds, and tea by candlelight."
|
||||||
},
|
},
|
||||||
"vinyasaFlow": {
|
"vinyasaFlow": {
|
||||||
"title": "Yoga Vinyasa Flow",
|
"title": "Yoga Vinyasa Flow",
|
||||||
"date": "Wednesday mornings",
|
"date": "Wednesday mornings",
|
||||||
"location": "Wellness Nook"
|
"location": "Wellness Nook",
|
||||||
|
"description": "A morning flow to wake up the body, in tempo with the breath."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -179,35 +179,48 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"events": {
|
"events": {
|
||||||
|
"page": {
|
||||||
|
"kicker": "À l'affiche",
|
||||||
|
"title": "Événements & programmes",
|
||||||
|
"lede": "Yoga, café et coworking, jam au coin du feu, pique-niques d'après-midi, soirées sauna et plus encore. La programmation publique inaugurale ouvre à l'automne 2026.",
|
||||||
|
"calendarNote": "Une application de calendrier communautaire pour l'Ariège est en développement sur bouge.ariege.io — lancement été 2026.",
|
||||||
|
"noteHeading": "Note"
|
||||||
|
},
|
||||||
"saunaSoiree": {
|
"saunaSoiree": {
|
||||||
"title": "Soirée sauna",
|
"title": "Soirée sauna",
|
||||||
"date": "Premier dimanche du mois",
|
"date": "Premier dimanche du mois",
|
||||||
"location": "Coin bien-être"
|
"location": "Coin bien-être",
|
||||||
|
"description": "Étuve, bain chaud et plongée froide sous les étoiles, avec musique vivante, cacao, tisane et nourriture."
|
||||||
},
|
},
|
||||||
"springResidency": {
|
"springResidency": {
|
||||||
"title": "Résidence de printemps — L'esprit de l'art",
|
"title": "Résidence de printemps — L'esprit de l'art",
|
||||||
"date": "1er mars 2027",
|
"date": "1er mars 2027",
|
||||||
"location": "Bâtiment principal, le Temple"
|
"location": "Bâtiment principal, le Temple",
|
||||||
|
"description": "Une courte résidence autour de la peinture, du dessin et de l'artisanat, dans la lumière douce du début de printemps."
|
||||||
},
|
},
|
||||||
"picnicJam": {
|
"picnicJam": {
|
||||||
"title": "Pique-nique partagé & jam — Buffet de salades",
|
"title": "Pique-nique partagé & jam — Buffet de salades",
|
||||||
"date": "22 mars 2026",
|
"date": "22 mars 2026",
|
||||||
"location": "Table du Chapelier fou"
|
"location": "Table du Chapelier fou",
|
||||||
|
"description": "Un pique-nique d'équinoxe de printemps et une jam musicale — apportez une salade, un air, ou les deux."
|
||||||
},
|
},
|
||||||
"artWalk": {
|
"artWalk": {
|
||||||
"title": "Promenade artistique & concert en plein air",
|
"title": "Promenade artistique & concert en plein air",
|
||||||
"date": "15 mai 2026",
|
"date": "15 mai 2026",
|
||||||
"location": "Bâtiment principal, le Temple"
|
"location": "Bâtiment principal, le Temple",
|
||||||
|
"description": "Une promenade dans le jardin de sculptures, accompagnée de musique vivante, à la tombée du jour."
|
||||||
},
|
},
|
||||||
"yinYoga": {
|
"yinYoga": {
|
||||||
"title": "Yin Yoga & tisane",
|
"title": "Yin Yoga & tisane",
|
||||||
"date": "Les jeudis soir",
|
"date": "Les jeudis soir",
|
||||||
"location": "Coin bien-être"
|
"location": "Coin bien-être",
|
||||||
|
"description": "Postures lentes, étirements longs, et tisane à la lumière des bougies."
|
||||||
},
|
},
|
||||||
"vinyasaFlow": {
|
"vinyasaFlow": {
|
||||||
"title": "Vinyasa Flow",
|
"title": "Vinyasa Flow",
|
||||||
"date": "Les mercredis matin",
|
"date": "Les mercredis matin",
|
||||||
"location": "Coin bien-être"
|
"location": "Coin bien-être",
|
||||||
|
"description": "Un flow matinal pour réveiller le corps, au rythme du souffle."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,102 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
import { RouterLink } from 'vue-router'
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
|
const events = [
|
||||||
|
{
|
||||||
|
key: 'picnicJam' as const,
|
||||||
|
image: 'https://static.wixstatic.com/media/08f3f751545c44bfab292af3adb102d1.jpg',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'artWalk' as const,
|
||||||
|
image: 'https://static.wixstatic.com/media/11062b_edc66ac2dfa1418da85d7acc418f6ecb~mv2.jpeg',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'saunaSoiree' as const,
|
||||||
|
image: 'https://static.wixstatic.com/media/nsplsh_f31fc52f9db74bb0b09d2902ba8bface~mv2.jpg',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'springResidency' as const,
|
||||||
|
image: 'https://static.wixstatic.com/media/11062b_3ecb0cd90cee43e48b5aef5351766bc7~mv2.jpg',
|
||||||
|
to: '/symposium',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'yinYoga' as const,
|
||||||
|
image: 'https://static.wixstatic.com/media/11062b_6b9c5a85b7bc46cfa66445c0b34fd9fd~mv2.jpeg',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'vinyasaFlow' as const,
|
||||||
|
image: 'https://static.wixstatic.com/media/11062b_3fa5e444f3de4fcea4e3593ac3f6f2b4~mv2.jpg',
|
||||||
|
},
|
||||||
|
]
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<article class="mx-auto max-w-4xl px-4 py-16">
|
<div>
|
||||||
<h1 class="font-serif text-4xl font-semibold tracking-tight">{{ t('nav.events') }}</h1>
|
<section class="border-b border-border bg-secondary/40">
|
||||||
<p class="mt-4 text-muted-foreground">{{ t('common.comingSoon') }}</p>
|
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
|
||||||
</article>
|
<p class="text-xs uppercase tracking-[0.2em] text-accent">
|
||||||
|
{{ t('events.page.kicker') }}
|
||||||
|
</p>
|
||||||
|
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
|
||||||
|
{{ t('events.page.title') }}
|
||||||
|
</h1>
|
||||||
|
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
|
||||||
|
{{ t('events.page.lede') }}
|
||||||
|
</p>
|
||||||
|
<aside
|
||||||
|
class="mt-8 max-w-prose rounded-md border border-border bg-card p-4 text-sm text-foreground/85"
|
||||||
|
>
|
||||||
|
<p class="text-xs font-semibold uppercase tracking-wider text-accent">
|
||||||
|
{{ t('events.page.noteHeading') }}
|
||||||
|
</p>
|
||||||
|
<p class="mt-1">{{ t('events.page.calendarNote') }}</p>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
|
||||||
|
<ul class="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
|
||||||
|
<li v-for="e in events" :key="e.key">
|
||||||
|
<component
|
||||||
|
:is="e.to ? 'RouterLink' : 'article'"
|
||||||
|
v-bind="e.to ? { to: e.to } : {}"
|
||||||
|
class="group block h-full 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>
|
||||||
|
<h2 class="mt-1 font-serif text-xl font-semibold">
|
||||||
|
{{ t(`events.${e.key}.title`) }}
|
||||||
|
</h2>
|
||||||
|
<p class="mt-1 text-xs text-muted-foreground">
|
||||||
|
{{ t(`events.${e.key}.location`) }}
|
||||||
|
</p>
|
||||||
|
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
|
||||||
|
{{ t(`events.${e.key}.description`) }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</component>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="mt-12 text-center">
|
||||||
|
<RouterLink
|
||||||
|
to="/symposium"
|
||||||
|
class="inline-block rounded-md border border-border px-5 py-3 text-sm font-medium hover:bg-muted"
|
||||||
|
>
|
||||||
|
{{ t('nav.symposium') }} →
|
||||||
|
</RouterLink>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue