From ab7357c7d2f0add68e2b14aa9536649f232cd8f5 Mon Sep 17 00:00:00 2001 From: itziarZG Date: Sat, 23 May 2026 16:34:41 +0200 Subject: [PATCH] feat: add ticket dates banner to homepage Add a dedicated announcement banner showing Early Bird (5 June) and General Sale (19 June) ticket dates on the homepage. - New SectionDates component with gradient accent bar and tinted background - i18n texts for es, en, ca - Integrated between SectionMain and SectionCTAs --- package.json | 2 +- src/components/home/SectionDates.astro | 78 ++++++++++++++++++++++++++ src/components/index.astro | 2 + src/i18n/home.ts | 15 +++++ 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/components/home/SectionDates.astro diff --git a/package.json b/package.json index b206121..63b6247 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "2026.es.pycon.org", - "version": "1.5.0", + "version": "1.6.0", "description": "", "main": "index.js", "scripts": { diff --git a/src/components/home/SectionDates.astro b/src/components/home/SectionDates.astro new file mode 100644 index 0000000..5320bce --- /dev/null +++ b/src/components/home/SectionDates.astro @@ -0,0 +1,78 @@ +--- +import { texts } from '@/i18n/home' + +interface Props { + lang: string +} + +const { lang } = Astro.props +const t = texts[lang as keyof typeof texts] + +const dates = [ + { + emoji: '🎫', + label: t['tickets.earlybird.label'], + date: t['tickets.earlybird.date'], + accentBg: 'bg-pycon-orange/10', + accentBorder: 'border-pycon-orange/25', + accentText: 'text-pycon-orange', + bar: 'bg-pycon-orange', + }, + { + emoji: '🎟️', + label: t['tickets.general.label'], + date: t['tickets.general.date'], + accentBg: 'bg-amber-400/10', + accentBorder: 'border-amber-400/25', + accentText: 'text-amber-400', + bar: 'bg-amber-400', + }, +] +--- + +
+
+ {/* Gradient accent bar at top — visual separator */} + + + {/* Background gradient — different from glassmorphism CTAs */} +
+
+ +

+ {t['tickets.title']} +

+
+ +
+ { + dates.map((d) => ( +
+ + + {d.label} + + + {d.date} + +
+ )) + } +
+
+
+
diff --git a/src/components/index.astro b/src/components/index.astro index bb3e050..4b37e8b 100644 --- a/src/components/index.astro +++ b/src/components/index.astro @@ -1,6 +1,7 @@ --- import Layout from '@/layouts/Layout.astro' import SectionMain from './home/SectionMain.astro' +import SectionDates from './home/SectionDates.astro' import SectionCTAs from './home/SectionCTAs.astro' import SectionSponsors from './home/SectionSponsors.astro' @@ -14,6 +15,7 @@ const { lang } = Astro.props
+
diff --git a/src/i18n/home.ts b/src/i18n/home.ts index 6ebf626..f533be1 100644 --- a/src/i18n/home.ts +++ b/src/i18n/home.ts @@ -27,6 +27,11 @@ export const texts = { 'cta.reviewers.description': 'Buscamos personas que nos ayuden a revisar las propuestas que recibamos. Tu experiencia y criterio son clave para garantizar la calidad del programa. Si querés colaborar con la organización y ayudar a seleccionar las mejores charlas y talleres, ¡necesitamos tu ayuda!', 'cta.reviewers.button': 'Quiero ser revisor/a', + 'tickets.title': '🎟️ Entradas', + 'tickets.earlybird.label': 'Early Bird', + 'tickets.earlybird.date': '5 de junio', + 'tickets.general.label': 'Venta General', + 'tickets.general.date': '19 de junio', }, en: { 'index.initializing': 'Initialising system...', @@ -57,6 +62,11 @@ export const texts = { 'cta.reviewers.description': 'We are looking for people to help us review the proposals we receive. Your experience and judgement are key to ensuring the quality of the programme. If you want to collaborate with the organisation and help select the best talks and workshops, we need your help!', 'cta.reviewers.button': 'I want to be a reviewer', + 'tickets.title': '🎟️ Tickets', + 'tickets.earlybird.label': 'Early Bird', + 'tickets.earlybird.date': 'June 5', + 'tickets.general.label': 'General Sale', + 'tickets.general.date': 'June 19', }, ca: { 'index.initializing': 'Inicialitzant sistema...', @@ -87,5 +97,10 @@ export const texts = { 'cta.reviewers.description': "Busquem persones que ens ajudin a revisar les propostes que rebem. La teva experiència i criteri són clau per garantir la qualitat del programa. Si vols col·laborar amb l'organització i ajudar a seleccionar les millors xerrades i tallers, necessitem la teva ajuda!", 'cta.reviewers.button': 'Vull ser revisor/a', + 'tickets.title': '🎟️ Entrades', + 'tickets.earlybird.label': 'Early Bird', + 'tickets.earlybird.date': '5 de juny', + 'tickets.general.label': 'Venda General', + 'tickets.general.date': '19 de juny', }, } as const