Skip to content

Commit a3b4aa2

Browse files
committed
feat: add Early Bird tickets banner and remove obsolete CTAs
- Add SectionEarlyBird component with prominent red banner - Link to pretix.eu/python-spain/pycones-2026/ for ticket sales - Remove cta.sponsors and cta.reviewers (redundant with menu) - Add deploy script to package.json
1 parent 711f11d commit a3b4aa2

5 files changed

Lines changed: 72 additions & 26 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@ dist/
1818
*.local
1919

2020
.claude
21+
.agents/
22+
skills-lock.json

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"build": "astro build",
1010
"preview": "astro preview",
1111
"format": "prettier --write src",
12+
"deploy": "astro build",
1213
"prepare": "husky"
1314
},
1415
"keywords": [],
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
import { texts } from '../../i18n/home'
3+
import { menuTexts } from '../../i18n/menu'
4+
import SectionTitle from '../SectionTitle.astro'
5+
import Button from '../Button.astro'
6+
7+
interface Props {
8+
lang: string
9+
}
10+
11+
const { lang } = Astro.props
12+
const t = texts[lang as keyof typeof texts]
13+
const menuT = menuTexts[lang as keyof typeof menuTexts]
14+
---
15+
16+
<div
17+
class="flex flex-col items-center gap-6 py-12 px-4 bg-gradient-to-b from-pycon-red-50/10 via-pycon-red-50/5 to-transparent"
18+
>
19+
<SectionTitle title={t['earlybird.title']} />
20+
21+
<div
22+
class="bg-white/5 backdrop-blur-md p-8 rounded-2xl border border-pycon-red-50/30 hover:border-pycon-red-50/60 transition-all shadow-xl w-full max-w-3xl"
23+
>
24+
<p class="text-lg text-pycon-gray-25 leading-relaxed mb-8 text-center">
25+
{t['earlybird.description']}
26+
</p>
27+
28+
<div class="flex justify-center">
29+
<Button
30+
variant="primary"
31+
size="lg"
32+
href="https://pretix.eu/python-spain/pycones-2026/"
33+
target="_blank"
34+
rel="noopener noreferrer"
35+
aria-label={`${t['earlybird.button']} ${menuT.new_tab}`}
36+
class="bg-pycon-red-50 hover:bg-pycon-red-100 text-white border-2 border-pycon-red-50 hover:border-pycon-red-100 shadow-lg shadow-pycon-red-50/25"
37+
>
38+
{t['earlybird.button']}
39+
<svg
40+
class="ml-2 w-5 h-5 shrink-0"
41+
fill="none"
42+
stroke="currentColor"
43+
viewBox="0 0 24 24"
44+
aria-hidden="true"
45+
>
46+
<path
47+
stroke-linecap="round"
48+
stroke-linejoin="round"
49+
stroke-width="2"
50+
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path>
51+
</svg>
52+
</Button>
53+
</div>
54+
</div>
55+
</div>

src/components/index.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
import Layout from '@/layouts/Layout.astro'
33
import SectionMain from './home/SectionMain.astro'
4-
import SectionCTAs from './home/SectionCTAs.astro'
4+
import SectionEarlyBird from './home/SectionEarlyBird.astro'
55
import SectionSponsors from './home/SectionSponsors.astro'
66
77
interface Props {
@@ -14,7 +14,7 @@ const { lang } = Astro.props
1414
<Layout title="PyConES 2026">
1515
<div class="flex flex-col gap-20">
1616
<SectionMain lang={lang} />
17-
<SectionCTAs lang={lang} />
17+
<SectionEarlyBird lang={lang} />
1818
<SectionSponsors lang={lang} />
1919
</div>
2020
</Layout>

src/i18n/home.ts

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,10 @@ export const texts = {
1919
'¡Ya está abierta la llamada a propuestas! Mándanos tu charla o taller antes del 17 de mayo a las 23:59h (hora peninsular). Si te estás preguntando si puedes hacer esto, la respuesta es que sí. Si tienes un tema que te interesa, ¡nos interesa!',
2020
'cfp.help': 'Si necesitas ayuda con tu propuesta, no dudes en escribirnos a charlas@2026.es.pycon.org',
2121
'cfp.button': 'Envía tu propuesta',
22-
'cta.sponsors.title': '¡Buscamos Patrocinadores!',
23-
'cta.sponsors.description':
24-
'Ser patrocinador de la PyConES es una oportunidad para apoyar a la comunidad Python, conectar con talento técnico de alto nivel y ganar visibilidad en un entorno ligado al software libre y la innovación. Si formás parte o conocés a alguien de una empresa interesada en apoyar la comunidad Python, ¡ayudanos a llegar a ella!',
25-
'cta.sponsors.button': 'Más información sobre patrocinios',
26-
'cta.reviewers.title': 'Llamada a Revisores/as',
27-
'cta.reviewers.description':
28-
'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!',
29-
'cta.reviewers.button': 'Quiero ser revisor/a',
22+
'earlybird.title': '¡Entradas Early Bird disponibles!',
23+
'earlybird.description':
24+
'La venta de entradas con descuento Early Bird ya ha comenzado. ¡No te pierdas esta oportunidad única de aprender, conectar y crecer en la comunidad Python!',
25+
'earlybird.button': 'Comprar entradas',
3026
},
3127
en: {
3228
'index.initializing': 'Initialising system...',
@@ -49,14 +45,10 @@ export const texts = {
4945
'cfp.help':
5046
"If you need help with your proposal, don't hesitate to contact us at charlas@2026.es.pycon.org.",
5147
'cfp.button': 'Submit your proposal',
52-
'cta.sponsors.title': 'We Are Looking for Sponsors!',
53-
'cta.sponsors.description':
54-
'Sponsoring PyConES is an opportunity to support the Python community, connect with high-level technical talent, and gain visibility in an environment linked to free software and innovation. If you are or know someone at a company interested in supporting the Python community, help us reach them!',
55-
'cta.sponsors.button': 'More info about sponsorships',
56-
'cta.reviewers.title': 'Call for Reviewers',
57-
'cta.reviewers.description':
58-
'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!',
59-
'cta.reviewers.button': 'I want to be a reviewer',
48+
'earlybird.title': 'Early Bird tickets are now available!',
49+
'earlybird.description':
50+
'Early Bird discounted tickets are now on sale. Do not miss this unique opportunity to learn, connect, and grow in the Python community!',
51+
'earlybird.button': 'Buy tickets',
6052
},
6153
ca: {
6254
'index.initializing': 'Inicialitzant sistema...',
@@ -79,13 +71,9 @@ export const texts = {
7971
'cfp.help':
8072
'Si necessites ajuda amb la teva proposta, no dubtis en escriure a charlas@2026.es.pycon.org.',
8173
'cfp.button': 'Envia la teva proposta',
82-
'cta.sponsors.title': 'Busquem Patrocinadors!',
83-
'cta.sponsors.description':
84-
"Ser patrocinador de la PyConES és una oportunitat per donar suport a la comunitat Python, connectar amb talent tècnic d'alt nivell i guanyar visibilitat en un entorn lligat al programari lliure i la innovació. Si formes part o coneixes algú d'una empresa interessada en donar suport a la comunitat Python, ajuda'ns a arribar-hi!",
85-
'cta.sponsors.button': 'Més informació sobre patrocinis',
86-
'cta.reviewers.title': 'Crida a Revisors/es',
87-
'cta.reviewers.description':
88-
"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!",
89-
'cta.reviewers.button': 'Vull ser revisor/a',
74+
'earlybird.title': 'Entrades Early Bird disponibles!',
75+
'earlybird.description':
76+
"La venda d'entrades amb descompte Early Bird ja ha començat. No et perdis aquesta oportunitat única d'aprendre, connectar i créixer en la comunitat Python!",
77+
'earlybird.button': 'Comprar entrades',
9078
},
9179
} as const

0 commit comments

Comments
 (0)