diff --git a/package.json b/package.json
index 3799cff..ba072f3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "2026.es.pycon.org",
- "version": "1.16.0",
+ "version": "1.17.0",
"description": "",
"main": "index.js",
"scripts": {
@@ -27,7 +27,7 @@
},
"devDependencies": {
"@astrojs/check": "0.9.9",
- "@commitlint/cli": "21.2.0",
+ "@commitlint/cli": "21.2.1",
"@commitlint/config-conventional": "21.2.0",
"husky": "9.1.7",
"lint-staged": "17.0.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c7a7742..92f95e5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -37,8 +37,8 @@ importers:
specifier: 0.9.9
version: 0.9.9(prettier-plugin-astro@0.14.1)(prettier@3.9.4)(typescript@6.0.3)
'@commitlint/cli':
- specifier: 21.2.0
- version: 21.2.0(@types/node@24.12.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3)
+ specifier: 21.2.1
+ version: 21.2.1(@types/node@24.12.0)(conventional-commits-parser@7.0.1)(typescript@6.0.3)
'@commitlint/config-conventional':
specifier: 21.2.0
version: 21.2.0
@@ -243,8 +243,8 @@ packages:
resolution: {integrity: sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==}
engines: {node: '>= 20.12.0'}
- '@commitlint/cli@21.2.0':
- resolution: {integrity: sha512-4GLVIhUaT3c3GBlQ0GB80/5H3xXdn/Tgw4lrsuoOQVDu2wl4Xw0GuzSar8xZKSMv4H3xaKaQXmvH91GmdyYBZA==}
+ '@commitlint/cli@21.2.1':
+ resolution: {integrity: sha512-blsZGe29hJ72VGEFVl72IVYX+1vsfINpjA9yWQA6i7OKD/McGEOXg08sKIRKjFk4JvzhV/9n0l3i6NooPLTNfg==}
engines: {node: '>=22.12.0'}
hasBin: true
@@ -288,8 +288,8 @@ packages:
resolution: {integrity: sha512-QHWxG4d0PLTF634/AdyZ0MQS+CLn5YOuJlCFhMMlSGKFxzYGUetkHBj18xgBD+6fVzUrA2lrCdi/vlS2f/oYXg==}
engines: {node: '>=22.12.0'}
- '@commitlint/read@21.2.0':
- resolution: {integrity: sha512-ELx8Ovh/JoAw5lpvDgxc6Y0We9skf2IPI2RFN+gnYgDGjRdMSF8zeodxhZmcclLWzfUIF7hXLOa8gOlllYcvBA==}
+ '@commitlint/read@21.2.1':
+ resolution: {integrity: sha512-hUW7EJQnNTL0vPOmVMNK4CrnrNBN0nN+JJHReFkdHO5y4iyHeEmTBwuC15OCqUTjxWo7idnH1LftfpWVIaPWIA==}
engines: {node: '>=22.12.0'}
'@commitlint/resolve-extends@21.2.0':
@@ -312,12 +312,12 @@ packages:
resolution: {integrity: sha512-7zVFCDB2reMvJH5dmbKnOQPjZEvjdJTH8jc0U/PIPU1r3/+vf5pD1HlfitV2MWsWXrvu7u39iY1lyLUPOaN0Gw==}
engines: {node: '>=22.12.0'}
- '@conventional-changelog/git-client@2.6.0':
- resolution: {integrity: sha512-T+uPDciKf0/ioNNDpMGc8FDsehJClZP0yR3Q5MN6wE/Y/1QZ7F+80OgznnTCOlMEG4AV0LvH2UJi3C/nBnaBUg==}
- engines: {node: '>=18'}
+ '@conventional-changelog/git-client@3.1.0':
+ resolution: {integrity: sha512-Tqa/gHco2WJWa740NRjOrfKVvzIqxkZpecb8bemaQ8sKM5PXb1UK4uTyTb/1wIqNuOVaDOFxyBdhTIQZn6gdjQ==}
+ engines: {node: '>=22'}
peerDependencies:
- conventional-commits-filter: ^5.0.0
- conventional-commits-parser: ^6.3.0
+ conventional-commits-filter: ^6.0.1
+ conventional-commits-parser: ^7.0.1
peerDependenciesMeta:
conventional-commits-filter:
optional: true
@@ -947,13 +947,9 @@ packages:
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
- '@simple-libs/child-process-utils@1.0.2':
- resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==}
- engines: {node: '>=18'}
-
- '@simple-libs/stream-utils@1.2.0':
- resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==}
- engines: {node: '>=18'}
+ '@simple-libs/child-process-utils@2.0.0':
+ resolution: {integrity: sha512-dvNoRKLijXnD0XoJAz94pbNuB5GQgDr55UhpSPhffDkTT0Cmcqh9jSCOtwfT2d4H6MI9E7c4SgtMuJXZ6F3c6A==}
+ engines: {node: '>=22'}
'@simple-libs/stream-utils@2.0.0':
resolution: {integrity: sha512-fCTuZK4QBa+39Oz9l4OGfJfz+GpwCp3AqO7Zch3to99xHPgstVsRFpeQ8LNd2o1Gv8raL2mCFwiaHh7bFSp5DQ==}
@@ -1257,11 +1253,6 @@ packages:
resolution: {integrity: sha512-n4Kr1HFMTf3iMbES0TMxKIcYtUUv4rKqyQQp2JwfOEfFCOfGT3Tq4mCyJ8S9/YPyWhydjfKrrvnyl+gCjA+mJQ==}
engines: {node: '>=22'}
- conventional-commits-parser@6.4.0:
- resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==}
- engines: {node: '>=18'}
- hasBin: true
-
conventional-commits-parser@7.0.1:
resolution: {integrity: sha512-6VtskFpPsNkGVk/TY2RnV/MEdKfvCPBtQZN9x8jh9+k5RWBQ+tiaWn5UFCzTr0Dd88iKx7xghxbjBRp5uIzp3g==}
engines: {node: '>=22'}
@@ -1458,12 +1449,6 @@ packages:
resolution: {integrity: sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==}
engines: {node: '>=20.20.0'}
- git-raw-commits@5.0.1:
- resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==}
- engines: {node: '>=18'}
- deprecated: Deprecated and no longer maintained. Use @conventional-changelog/git-client instead.
- hasBin: true
-
github-slugger@2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
@@ -1674,10 +1659,6 @@ packages:
mdn-data@2.12.2:
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
- meow@13.2.0:
- resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
- engines: {node: '>=18'}
-
meow@14.1.0:
resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==}
engines: {node: '>=20'}
@@ -2538,13 +2519,13 @@ snapshots:
fast-wrap-ansi: 0.2.2
sisteransi: 1.0.5
- '@commitlint/cli@21.2.0(@types/node@24.12.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3)':
+ '@commitlint/cli@21.2.1(@types/node@24.12.0)(conventional-commits-parser@7.0.1)(typescript@6.0.3)':
dependencies:
'@commitlint/config-conventional': 21.2.0
'@commitlint/format': 21.2.0
'@commitlint/lint': 21.2.0
'@commitlint/load': 21.2.0(@types/node@24.12.0)(typescript@6.0.3)
- '@commitlint/read': 21.2.0(conventional-commits-parser@6.4.0)
+ '@commitlint/read': 21.2.1(conventional-commits-parser@7.0.1)
'@commitlint/types': 21.2.0
tinyexec: 1.2.4
yargs: 18.0.0
@@ -2611,11 +2592,11 @@ snapshots:
conventional-changelog-angular: 9.2.1
conventional-commits-parser: 7.0.1
- '@commitlint/read@21.2.0(conventional-commits-parser@6.4.0)':
+ '@commitlint/read@21.2.1(conventional-commits-parser@7.0.1)':
dependencies:
'@commitlint/top-level': 21.2.0
'@commitlint/types': 21.2.0
- git-raw-commits: 5.0.1(conventional-commits-parser@6.4.0)
+ '@conventional-changelog/git-client': 3.1.0(conventional-commits-parser@7.0.1)
tinyexec: 1.2.4
transitivePeerDependencies:
- conventional-commits-filter
@@ -2647,13 +2628,13 @@ snapshots:
conventional-commits-parser: 7.0.1
picocolors: 1.1.1
- '@conventional-changelog/git-client@2.6.0(conventional-commits-parser@6.4.0)':
+ '@conventional-changelog/git-client@3.1.0(conventional-commits-parser@7.0.1)':
dependencies:
- '@simple-libs/child-process-utils': 1.0.2
- '@simple-libs/stream-utils': 1.2.0
+ '@simple-libs/child-process-utils': 2.0.0
+ '@simple-libs/stream-utils': 2.0.0
semver: 7.8.5
optionalDependencies:
- conventional-commits-parser: 6.4.0
+ conventional-commits-parser: 7.0.1
'@conventional-changelog/template@1.2.1': {}
@@ -3083,11 +3064,9 @@ snapshots:
'@shikijs/vscode-textmate@10.0.2': {}
- '@simple-libs/child-process-utils@1.0.2':
+ '@simple-libs/child-process-utils@2.0.0':
dependencies:
- '@simple-libs/stream-utils': 1.2.0
-
- '@simple-libs/stream-utils@1.2.0': {}
+ '@simple-libs/stream-utils': 2.0.0
'@simple-libs/stream-utils@2.0.0': {}
@@ -3445,12 +3424,6 @@ snapshots:
dependencies:
'@conventional-changelog/template': 1.2.1
- conventional-commits-parser@6.4.0:
- dependencies:
- '@simple-libs/stream-utils': 1.2.0
- meow: 13.2.0
- optional: true
-
conventional-commits-parser@7.0.1:
dependencies:
'@simple-libs/stream-utils': 2.0.0
@@ -3644,14 +3617,6 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
- git-raw-commits@5.0.1(conventional-commits-parser@6.4.0):
- dependencies:
- '@conventional-changelog/git-client': 2.6.0(conventional-commits-parser@6.4.0)
- meow: 13.2.0
- transitivePeerDependencies:
- - conventional-commits-filter
- - conventional-commits-parser
-
github-slugger@2.0.0: {}
global-directory@5.0.0:
@@ -3851,8 +3816,6 @@ snapshots:
mdn-data@2.12.2: {}
- meow@13.2.0: {}
-
meow@14.1.0: {}
micromark-util-character@2.1.1:
diff --git a/src/components/ProgramaPage.astro b/src/components/ProgramaPage.astro
new file mode 100644
index 0000000..6c9da84
--- /dev/null
+++ b/src/components/ProgramaPage.astro
@@ -0,0 +1,39 @@
+---
+import { programaTexts } from '@/i18n/programa'
+import { menuTexts } from '@/i18n/menu'
+
+interface Props {
+ lang: string
+}
+const { lang } = Astro.props
+const t = programaTexts[lang as keyof typeof programaTexts]
+const menuT = menuTexts[lang as keyof typeof menuTexts]
+---
+
+
+ {t.title}
+ {t.intro}
+
+
+
+
+
diff --git a/src/i18n/menu/ca.ts b/src/i18n/menu/ca.ts
index 56d8fb7..bc335ec 100644
--- a/src/i18n/menu/ca.ts
+++ b/src/i18n/menu/ca.ts
@@ -4,6 +4,10 @@ export const ca = {
label: 'Inici',
href: '/',
},
+ {
+ label: 'Programa',
+ href: '/programa',
+ },
{
label: 'Informació',
children: [
diff --git a/src/i18n/menu/en.ts b/src/i18n/menu/en.ts
index a4b2391..2775932 100644
--- a/src/i18n/menu/en.ts
+++ b/src/i18n/menu/en.ts
@@ -4,6 +4,10 @@ export const en = {
label: 'Home',
href: '/',
},
+ {
+ label: 'Programme',
+ href: '/programa',
+ },
{
label: 'Information',
children: [
diff --git a/src/i18n/menu/es.ts b/src/i18n/menu/es.ts
index dc342c4..2ab79ba 100644
--- a/src/i18n/menu/es.ts
+++ b/src/i18n/menu/es.ts
@@ -4,6 +4,10 @@ export const es = {
label: 'Inicio',
href: '/',
},
+ {
+ label: 'Programa',
+ href: '/programa',
+ },
{
label: 'Información',
children: [
diff --git a/src/i18n/programa/ca.ts b/src/i18n/programa/ca.ts
new file mode 100644
index 0000000..782d50e
--- /dev/null
+++ b/src/i18n/programa/ca.ts
@@ -0,0 +1,8 @@
+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.',
+ locale: 'ca',
+ noscript: 'JavaScript està desactivat al teu navegador. Per veure el programa sense JavaScript,',
+ noscriptLink: 'fes clic aquí',
+} as const
diff --git a/src/i18n/programa/en.ts b/src/i18n/programa/en.ts
new file mode 100644
index 0000000..cdda492
--- /dev/null
+++ b/src/i18n/programa/en.ts
@@ -0,0 +1,8 @@
+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.',
+ locale: 'en',
+ noscript: 'JavaScript is disabled in your browser. To view the schedule without JavaScript,',
+ noscriptLink: 'click here',
+} as const
diff --git a/src/i18n/programa/es.ts b/src/i18n/programa/es.ts
new file mode 100644
index 0000000..e2b6db8
--- /dev/null
+++ b/src/i18n/programa/es.ts
@@ -0,0 +1,8 @@
+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.',
+ locale: 'es',
+ noscript: 'JavaScript está deshabilitado en tu navegador. Para ver el programa sin JavaScript,',
+ noscriptLink: 'haz click aquí',
+} as const
diff --git a/src/i18n/programa/index.ts b/src/i18n/programa/index.ts
new file mode 100644
index 0000000..0c9ecb3
--- /dev/null
+++ b/src/i18n/programa/index.ts
@@ -0,0 +1,5 @@
+import { es } from './es'
+import { en } from './en'
+import { ca } from './ca'
+
+export const programaTexts = { es, en, ca }
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index 91aa175..263b2df 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -9,9 +9,10 @@ import { ClientRouter } from 'astro:transitions'
interface Props {
title: string
description?: string // Optional (?)
+ fullWidth?: boolean
}
const { lang = 'es' } = Astro.params
-const { title, description = 'PyconES 2026' } = Astro.props
+const { title, description = 'PyconES 2026', fullWidth = false } = Astro.props
const siteUrl = Astro.site ? Astro.site.origin : 'https://2026.es.pycon.org'
const canonicalURL = new URL(Astro.url.pathname, siteUrl)
@@ -121,7 +122,12 @@ const alternates = [
-
+
diff --git a/src/pages/[lang]/programa.astro b/src/pages/[lang]/programa.astro
new file mode 100644
index 0000000..7eb16ea
--- /dev/null
+++ b/src/pages/[lang]/programa.astro
@@ -0,0 +1,42 @@
+---
+import Layout from '../../layouts/Layout.astro'
+import ProgramaPage from '../../components/ProgramaPage.astro'
+import { programaTexts } from '../../i18n/programa'
+
+export function getStaticPaths() {
+ return [{ params: { lang: 'es' } }, { params: { lang: 'en' } }, { params: { lang: 'ca' } }]
+}
+
+const { lang } = Astro.params
+const t = programaTexts[(lang || 'es') as keyof typeof programaTexts]
+---
+
+
+
+
+
+