Skip to content

Commit 829ae6b

Browse files
authored
feat(speakers): add Mia + multi-locale data + TS/lucide dep fixes (v1.12.0) (#207)
## Resumen PR hacia `v1.12.0`. Tres features de producto + un pase de dependencias que cerró issues de tipado. ### 1. Refactor de data: speakers y jobs multiidioma sin carpetas Reemplaza la estructura `data/speakers/{ca,es,en}/` y `data/jobs/{ca,es,en}/` (que duplicaba el frontmatter 3× por archivo) por un único `.md` por entrada con los campos multiidioma como objetos anidados: - `description: { ca, es, en }` en speakers - `description: { ca, es, en }` y `location: { ca, es, en }` en jobs Beneficio: agregar un link, un cambio de salary, etc. se hace 1 vez, no 3. Bug latente arreglado: `fever-senior-dev` no tenía versión `ca` (caía al fallback en ES) y la `description` de ES estaba en inglés. Ambos traducidos. Bonus: `IJob` extraído a `src/types/jobs.ts` (estaba inline en el componente). `TLocale` centralizado en `src/types/locale.ts`. ### 2. feat: añadir a Mia Bajić como segunda ponente plenaria `src/data/speakers/mia.md` con 8 enlaces sociales y descripción traducida a los 3 idiomas. Esto obligó a ampliar el sistema de iconos sociales para soportar 4 tipos nuevos (`youtube`, `spotify`, `applepodcasts`, `rss`). De paso se arregló un mismatch silencioso: `TSpeakerLinkType` y `SocialIconName` declaraban 4-6 tipos pero `diego.md` ya usaba `bluesky` y `twitter` (funcionaba por duck-typing de Astro, sin aria-label). Ahora soportan los 10. ### 3. UI: grid 4 columnas para los iconos sociales Con 8 íconos en `flex`, quedaban muy pegados. Cambio mínimo en `SpeakerCard.astro`: el `<ul>` pasa de `flex` a `grid grid-cols-4`. Diego (5 íconos) y futuros speakers también se ven en grid, manteniendo consistencia visual. ### 4. Dependencias y tipos (3 commits posteriores) - `fix(types): re-export TLocale from types/jobs` — la CI marcaba un error de tipado en el import de `JobsPage.astro` que no se había detectado en local. - `chore(deps): revert @lucide/astro to ^0.577.0` — la rama probaba un upgrade a 1.x que removió los iconos de marca (Github, Twitter, Linkedin, Instagram, Youtube). Forzar a emoji era regresión visual, así que se pineó a 0.577.x. - `fix(types): adapt to typescript 6.0 stricter checks` — el upgrade de TS 5.9 → 6.0 + fontsource introdujo 15 errors nuevos en `astro check` (keys dinámicas en `SectionCTAs`, side-effect CSS imports, `i18n` ahora `possibly undefined`, `StatusIcon` index access). Todos adaptados con casts/non-null assertions/declaration file. Cero cambios de comportamiento. ## Cambios - **18 archivos borrados** (3 speakers + 15 jobs viejos) + **6 carpetas vacías** eliminadas - **10 archivos nuevos** (1 speaker, 5 jobs, 1 type, 1 photo, 1 locale, 1 fontsource.d.ts) - **13 archivos modificados** (3 componentes, 2 pages, 2 layouts, 1 i18n, 2 icons, 3 types, package.json, pnpm-lock.yaml) - **Total: 41 files changed, +883/-873** ## Commits ``` 144f3f0 fix(types): adapt to typescript 6.0 stricter checks 7b0b352 chore(deps): revert @lucide/astro to ^0.577.0 9080d1e fix(types): re-export TLocale from types/jobs 5ce3a13 chore: version 1.12.0 646dcbd feat(speakers): add Mia and support 6 new social platforms 2b556e5 refactor(data): consolidate speakers and jobs markdown per locale ``` ## Para verificar - `pnpm dev` y navegar `/es`, `/en`, `/ca` - Home → sección speakers: Diego (5 íconos) y Mia (8 íconos en grid 4×2) - `/jobs` → 3 ofertas de Rover visibles (Fever y JetBrains con `draft: true`) - DevTools → a11y: cada link tiene `aria-label` propio ## Capturas <img width="412" height="866" alt="image" src="https://github.com/user-attachments/assets/ecbcc323-5086-4daa-8c61-ef2a0a27e6e8" /> ## Notas - El componente `SectionCTAs.astro` (CTAs 🔍 revisores y 🤝 sponsors en la home) renderiza con textos **vacíos** porque las keys `cta.reviewers.*` y `cta.sponsors.*` nunca se agregaron a `home.ts`. Bug pre-existente, fuera de scope de este PR. Lo dejé documentado en el commit de TS fixes. - Build local: `pnpm build` ✅ 25 páginas. `pnpm astro check` ✅ 0 errors. `pnpm format` ✅ sin cambios. ## Checklist - [x] `pnpm format` sin cambios - [x] `pnpm astro check` 0 errors - [x] `pnpm build` OK (25 páginas) - [x] TypeScript: `TSpeakerLinkType` ahora honesto con lo que se usa - [ ] Verificación visual pendiente
1 parent 4bda3d7 commit 829ae6b

56 files changed

Lines changed: 1948 additions & 1445 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

astro.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import sitemap from '@astrojs/sitemap'
55
export default defineConfig({
66
site: 'https://2026.es.pycon.org',
77
base: '/',
8+
compressHTML: true,
89
integrations: [sitemap()],
910
vite: {
1011
plugins: [tailwindcss()],

package.json

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "2026.es.pycon.org",
3-
"version": "1.11.0",
3+
"version": "1.12.0",
44
"description": "",
55
"main": "index.js",
66
"scripts": {
@@ -16,24 +16,24 @@
1616
"license": "ISC",
1717
"packageManager": "pnpm@10.10.0",
1818
"dependencies": {
19-
"@astrojs/sitemap": "^3.7.1",
20-
"@fontsource-variable/jetbrains-mono": "^5.2.8",
21-
"@fontsource-variable/outfit": "^5.2.8",
22-
"@lucide/astro": "^0.577.0",
23-
"@tailwindcss/vite": "^4.1.18",
24-
"animejs": "^4.2.2",
25-
"astro": "^5.16.8",
26-
"tailwindcss": "^4.1.18"
19+
"@astrojs/sitemap": "3.7.3",
20+
"@fontsource-variable/jetbrains-mono": "5.2.8",
21+
"@fontsource-variable/outfit": "5.2.8",
22+
"@lucide/astro": "1.21.0",
23+
"@tailwindcss/vite": "4.3.1",
24+
"animejs": "4.5.0",
25+
"astro": "7.0.2",
26+
"tailwindcss": "4.3.1"
2727
},
2828
"devDependencies": {
29-
"@astrojs/check": "^0.9.6",
30-
"@commitlint/cli": "^20.5.0",
31-
"@commitlint/config-conventional": "^20.5.0",
32-
"husky": "^9.1.7",
33-
"lint-staged": "^16.4.0",
34-
"prettier": "^3.7.4",
35-
"prettier-plugin-astro": "^0.14.1",
36-
"typescript": "^5.9.3"
29+
"@astrojs/check": "0.9.9",
30+
"@commitlint/cli": "21.1.0",
31+
"@commitlint/config-conventional": "21.1.0",
32+
"husky": "9.1.7",
33+
"lint-staged": "17.0.8",
34+
"prettier": "3.8.4",
35+
"prettier-plugin-astro": "0.14.1",
36+
"typescript": "6.0.3"
3737
},
3838
"prettier": {
3939
"tabWidth": 2,

0 commit comments

Comments
 (0)