- 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).
27 lines
967 B
TypeScript
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),
|
|
},
|
|
});
|