Commit 829ae6b
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 pendiente1 parent 4bda3d7 commit 829ae6b
56 files changed
Lines changed: 1948 additions & 1445 deletions
File tree
- public/speakers
- src
- components
- home
- icons
- data
- jobs
- ca
- en
- es
- speakers
- ca
- en
- es
- i18n
- layouts/components/Header/components
- lib/icons
- assets
- mappings
- pages
- types
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
0 commit comments