Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "2026.es.pycon.org",
"version": "1.17.4",
"version": "1.17.5",
"description": "",
"main": "index.js",
"scripts": {
Expand Down
Binary file added public/programa-pycones-2026.pdf
Binary file not shown.
57 changes: 42 additions & 15 deletions src/components/ProgramaPage.astro
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,50 @@ const schedule = await getSchedule()
<h1 id="schedule-title" class="text-3xl md:text-5xl font-bold text-center mb-6">{t.title}</h1>
<p class="text-center text-base md:text-lg mb-10 max-w-2xl mx-auto opacity-80">{t.intro}</p>

<fieldset
class="schedule-view-toggle max-w-3xl mx-auto mb-8 border border-white/10 rounded-xl p-3 flex flex-wrap items-center gap-2 bg-pycon-black/40"
>
<legend class="sr-only">{t.list.viewModeLegend}</legend>
<label
class="cursor-pointer px-4 py-2 rounded-lg text-sm has-[:checked]:bg-pycon-orange has-[:checked]:text-pycon-black has-[:checked]:font-semibold text-pycon-gray-25 transition-colors"
<div class="max-w-3xl mx-auto mb-8 flex flex-col sm:flex-row justify-between items-center gap-4">
<fieldset
class="schedule-view-toggle border border-white/10 rounded-xl p-3 flex items-center gap-2 bg-pycon-black/40 w-full sm:w-auto justify-center sm:justify-start"
>
<input type="radio" name="schedule-view" value="list" class="sr-only" />
{t.list.viewModeList}
</label>
<label
class="cursor-pointer px-4 py-2 rounded-lg text-sm has-[:checked]:bg-pycon-orange has-[:checked]:text-pycon-black has-[:checked]:font-semibold text-pycon-gray-25 transition-colors"
<legend class="sr-only">{t.list.viewModeLegend}</legend>
<label
class="cursor-pointer px-4 py-2 rounded-lg text-sm has-[:checked]:bg-pycon-orange has-[:checked]:text-pycon-black has-[:checked]:font-semibold text-pycon-gray-25 transition-colors"
>
<input type="radio" name="schedule-view" value="list" class="sr-only" />
{t.list.viewModeList}
</label>
<label
class="cursor-pointer px-4 py-2 rounded-lg text-sm has-[:checked]:bg-pycon-orange has-[:checked]:text-pycon-black has-[:checked]:font-semibold text-pycon-gray-25 transition-colors"
>
<input type="radio" name="schedule-view" value="grid" class="sr-only" />
{t.list.viewModeGrid}
</label>
</fieldset>

<a
href="/programa-pycones-2026.pdf"
download="programa-pycones-2026.pdf"
target="_blank"
rel="noopener noreferrer"
aria-label={`${t.downloadPdf} ${menuT.new_tab}`}
class="inline-flex items-center gap-2 px-4 py-3 bg-pycon-orange text-pycon-black font-semibold rounded-xl hover:opacity-90 transition-opacity focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-pycon-yellow text-sm w-full sm:w-auto justify-center"
>
<input type="radio" name="schedule-view" value="grid" class="sr-only" />
{t.list.viewModeGrid}
</label>
</fieldset>
<svg
class="w-4 h-4"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
<polyline points="7 10 12 15 17 10"></polyline>
<line x1="12" y1="15" x2="12" y2="3"></line>
</svg>
<span>{t.downloadPdf}</span>
</a>
</div>

<div id="schedule-list-view" class="schedule-view hidden" data-view="list">
{
Expand Down
1 change: 1 addition & 0 deletions src/i18n/programa/ca.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export const ca = {
title: 'Programa',
seoDescription: 'Consulta el cronograma complet de xerrades, tallers i activitats de la PyConES 2026.',
intro: 'Explora totes les xerrades, tallers i activitats de la PyConES 2026.',
downloadPdf: 'Descarregar programa en PDF',
locale: 'ca',
noscript: 'JavaScript està desactivat al teu navegador. Per veure el programa sense JavaScript,',
noscriptLink: 'fes clic aquí',
Expand Down
1 change: 1 addition & 0 deletions src/i18n/programa/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export const en = {
title: 'Programme',
seoDescription: 'Check out the full schedule of talks, workshops and activities at PyConES 2026.',
intro: 'Explore all the talks, workshops and activities at PyConES 2026.',
downloadPdf: 'Download programme (PDF)',
locale: 'en',
noscript: 'JavaScript is disabled in your browser. To view the schedule without JavaScript,',
noscriptLink: 'click here',
Expand Down
1 change: 1 addition & 0 deletions src/i18n/programa/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export const es = {
title: 'Programa',
seoDescription: 'Consulta el cronograma completo de charlas, talleres y actividades de la PyConES 2026.',
intro: 'Explora todas las charlas, talleres y actividades de la PyConES 2026.',
downloadPdf: 'Descargar programa en PDF',
locale: 'es',
noscript: 'JavaScript está deshabilitado en tu navegador. Para ver el programa sin JavaScript,',
noscriptLink: 'haz click aquí',
Expand Down
Loading