The Vite 4 conversion predates the stack the other converted sites
settled on. Bring it in line without changing any URL.
- Vite 4 with SWC -> Vite 8, React 18 -> 19, TypeScript 5 -> 7,
react-router-dom v6 -> react-router v8
- swap axios -> ky, moment -> date-fns and react-helmet-async ->
@dr.pogodin/react-helmet, and replace react-router-hash-link and
react-spinner-material with local code
- drop xregexp, react-app-polyfill and the node polyfill and
rewrite-all plugins
- mount ../static-contents with sirv in the dev and preview servers,
and split vendor-react from vendor-misc
- keep sanitize.css: the theme was written on top of it, and swapping
it for modern-normalize moves nearly every element
- replace ESLint and Prettier with Biome and fix what it reports:
stable list keys, button types, the shadowed escape/unescape
helpers and the unused LinkImage component