batchCooking/apps/web/vite.config.ts
Nicolas 66f2a36b8c chore(web): session de polish global — version, checkbox, danger zone, icônes
- Affiche le numéro de version (package.json, injecté via Vite) en bas de
  la sidebar, masqué en mode collapse et en mobile.
- Factorise les checkbox/radio dupliqués (AllergySelect, DietTagSelect,
  IngredientPicker, UserPreferencesPage) en composants partagés
  CheckboxOption/RadioOption (components/ui/), et inverse le layout pour
  que la case soit à gauche du label.
- Teinte la "zone de danger" de suppression de compte en rouge (fond +
  bordure), pas seulement le bouton.
- Migre les icônes de navigation générale vers lucide-react (nav-icons.tsx
  devient un fichier de ré-export) ; les pictogrammes d'ingrédients métier
  restent en SVG custom (pas d'équivalents fins côté lucide).

Vérifié : pnpm build, pnpm lint, pnpm --filter web e2e (43/43), et
vérification visuelle manuelle (sidebar desktop/collapsed/mobile, light/dark).
2026-08-18 14:39:06 +02:00

27 lines
967 B
TypeScript

import { readFileSync } from "node:fs";
import react from "@vitejs/plugin-react";
import { defineConfig } from "vite";
// Read once at config-eval time — cheaper than a plugin hook, and this file
// only ever runs in Node (dev server / build), never bundled into the app.
const pkg = JSON.parse(readFileSync(new URL("./package.json", import.meta.url), "utf-8"));
export default defineConfig({
plugins: [react()],
css: {
preprocessorOptions: {
// Opts into Dart Sass's modern API — avoids the "legacy-js-api"
// deprecation warning on every build (Vite still defaults to the
// legacy API for backward compatibility).
scss: {
api: "modern-compiler",
},
},
},
// Exposes package.json's version as a compile-time constant — see
// src/vite-env.d.ts for the matching ambient declaration, and
// AppLayout.tsx for where it's rendered.
define: {
__APP_VERSION__: JSON.stringify(pkg.version),
},
});