bootstrap: swap BS4 (alexwine) CSS for bootstrap@5 npm

Completes the Bootstrap 4->5 migration now that every jQuery/BS4 widget is React
(navbar, carousel, dropdowns) — plus the feedback toggle here (Feedback.js:
global `$('#feedback-form').toggle()` -> React state).

- Load Bootstrap 5 CSS from the `bootstrap` npm package in client/index.js
  (imported first so app + component styles and react-bootstrap override it).
- Remove the `alexwine:bootstrap-4` meteor package (BS4 CSS + jQuery + BS4 JS).
  jQuery for jquery-validation still comes from the npm `jquery` dep.
- Utility renames to BS5: ml-auto->ms-auto, float-right->float-end,
  btn-block->w-100, data-toggle->data-bs-toggle (FromNow tooltip).
- forms.scss `.form-label` is no longer a shim (BS5 ships it); comment updated.

Full-app build boots clean; server suite 36 passing. Needs a visual staging pass
across all pages (BS4->5 shifts grid gutters/typography); forms should improve
since react-bootstrap v2 already emitted BS5 markup.
This commit is contained in:
vjrj 2026-07-22 05:55:34 +02:00
parent 9ff9abacc3
commit bddfb392c1
12 changed files with 63 additions and 38 deletions

View file

@ -65,25 +65,27 @@ React 19: el `<Blaze serverFacts>` de Status.js (`findDOMNode`), solo en `/statu
- ✅ **`meteor-accounts-t9n` actualizado** a `^2.6.0` (es/en OK). El paquete sigue
sin build gallego (`gl`), así que se mantiene el fallback gl→es documentado en
`i18n.js`. Traducción gallega de la app (`gl/common.json`): 0 claves faltantes.
- **Salto Bootstrap 4→5 (CSS/JS) pendiente:** react-bootstrap ya está en v2 y
corre sobre el CSS Bootstrap 4 actual (`alexwine:bootstrap-4`) con un único
shim `.form-label` en `forms.scss`. **Ya no quedan dependencias del JS jQuery de
BS4** — los dos blockers se migraron a React:
- ✅ **Collapse del navbar** (`Navigation.js` + `NavItem.js`): `data-toggle=
"collapse"` jQuery → estado React (`useState` que alterna `.show`).
*Verificar en staging el menú móvil (<lg): abrir/cerrar y cierre al pulsar un
enlace.*
- ✅ **Carrusel del home** (`Index.js`): `bootstrap-carousel-swipe` (jQuery) +
`$(...).carousel()``<Carousel>` de react-bootstrap con swipe nativo; se
conserva el mecanismo `.lazy` de fondos (blur→full) vía `onSlide`. Dep
`bootstrap-carousel-swipe` eliminada. Ports de CSS en `Index-custom.scss`:
indicadores `li``button` (markup BS5) y shim `.visually-hidden`.
*Verificar en staging el home: transiciones, swipe, indicadores, prev/next y
carga progresiva de las imágenes de fondo.*
- Falta (el salto de CSS en sí, ya sin bloqueos de JS): importar `bootstrap@5`
SCSS+JS, `ml-auto``ms-auto` (y demás utilidades direccionales), revisar
`new-age.scss`/`custom.scss`/`bootstrap-overrides.scss` y retirar
`alexwine:bootstrap-4`.
- ✅ **Salto Bootstrap 4→5 (CSS/JS) hecho** — react-bootstrap v2 ahora corre sobre
su CSS nativo (BS5). **Compila y arranca; falta SOLO verificación visual en
staging** (BS4→5 cambia sutilezas de grid/gutters/tipografía en todas las páginas).
- Widgets jQuery/BS4 migrados a React (los blockers): navbar collapse
(`Navigation.js`/`NavItem.js`), carrusel del home (`Index.js``<Carousel>`,
conserva `.lazy` vía `onSlide`), dropdowns de idioma/tipo (`Profile.js`/
`Fires.js``<Dropdown>`), y toggle del feedback (`Feedback.js` → estado React).
Deps `bootstrap-carousel-swipe` y `alexwine:bootstrap-4` eliminadas; jQuery
global ya no se usa (solo `jquery`+`jquery-validation` vía npm en `validate.js`).
- CSS: `bootstrap@5` npm importado en `imports/startup/client/index.js` (antes
que `app.scss`, para que los overrides ganen). Renombres de utilidades:
`ml-auto``ms-auto`, `float-right``float-end`, `btn-block``w-100`,
`data-toggle``data-bs-toggle`, `sr-only``.visually-hidden` (shim).
- **QA visual pendiente en staging (todas las páginas):** formularios (react-
bootstrap ya emite markup BS5 → deberían mejorar), navbar, botones, modales,
cards, grid/gutters, y los widgets migrados (menú móvil, carrusel, dropdowns,
feedback). Alertas de `themeteorchef:bert` (comprobar que siguen bien sin el
jQuery de alexwine).
- Menor: `popper.js@1` en `package.json` es legacy sin uso (react-bootstrap trae
`@popperjs/core@2`) → se puede quitar. El bloque `.form-label` de `forms.scss`
ya es redundante (BS5 lo trae) salvo por el `display:block` explícito.
- **Limpieza menor:** migración 217 `// TODO remove falsepositives lowercase
collection`; `prerender.js` gating comentado; sección per-fire del sitemap
eliminada (era código muerto tras `firesMapEnabled=false`).