- ApiClient.getCurrentPlanning() — GET /planning/current.
- HomePage.tsx: replaces the old greeting card (now redundant with
AppLayout's sidebar) with the household's current planning — loading /
error / empty ("aucun planning pour cette semaine") / loaded (table of
weekDay/meal/recipe) states, modeled as a discriminated union so an
impossible combination (e.g. loading with data) can't be represented.
No invented weekday/meal grid — the API's `weekDay`/`meal` are free-form
strings (no enum exists yet in the schema), so this renders the items
as returned rather than assuming a specific vocabulary.
- locales/fr/translation.json: home.* replaced (title/loading/error/
empty/table.*), old greeting/logout keys removed (superseded by
layout.greeting/layout.logout from the AppLayout commit).
- cypress/e2e/auth.cy.ts: updated the now-stale "Bonjour Alice Martin"
assertions (greeting moved to the sidebar, first name only) and added
GET /planning/current intercepts so these specs don't depend on a real
backend. Manually verified end-to-end against a real API in the browser
preview (empty state + a seeded planning) — Cypress itself can't run
headless Chromium in this sandboxed dev environment (confirmed
pre-existing on main, unrelated to this change); CI runs the real
suite.
Verified with `pnpm --filter web build` after each of steps 2-4 to keep
every commit in this sequence independently buildable.
65 lines
1.8 KiB
JSON
65 lines
1.8 KiB
JSON
{
|
|
"errors": {
|
|
"VALIDATION_ERROR": "Erreur de validation",
|
|
"EMAIL_ALREADY_IN_USE": "Cet email est déjà utilisé",
|
|
"INVALID_CREDENTIALS": "Email ou mot de passe incorrect",
|
|
"NOT_AUTHENTICATED": "Vous devez être connecté",
|
|
"NOT_FOUND": "Ressource introuvable",
|
|
"INTERNAL_ERROR": "Une erreur est survenue, réessayez plus tard"
|
|
},
|
|
"auth": {
|
|
"login": {
|
|
"title": "Se connecter",
|
|
"emailLabel": "Email",
|
|
"passwordLabel": "Mot de passe",
|
|
"submit": "Se connecter",
|
|
"submitting": "Connexion…",
|
|
"noAccount": "Pas encore de compte ?",
|
|
"createProfileLink": "Créer un profil"
|
|
},
|
|
"signup": {
|
|
"title": "Créer un profil",
|
|
"firstNameLabel": "Prénom",
|
|
"lastNameLabel": "Nom",
|
|
"emailLabel": "Email",
|
|
"passwordLabel": "Mot de passe",
|
|
"submit": "Créer mon profil",
|
|
"submitting": "Création…",
|
|
"hasAccount": "Déjà un compte ?",
|
|
"loginLink": "Se connecter"
|
|
}
|
|
},
|
|
"layout": {
|
|
"nav": {
|
|
"planning": "Planning",
|
|
"recipes": "Recettes",
|
|
"shoppingList": "Liste de courses",
|
|
"household": "Foyer & profil"
|
|
},
|
|
"greeting": "Bonjour {{firstName}} 👋",
|
|
"logout": "Se déconnecter"
|
|
},
|
|
"home": {
|
|
"title": "Planning de la semaine",
|
|
"loading": "Chargement du planning…",
|
|
"error": "Impossible de charger le planning, réessayez plus tard",
|
|
"empty": "Aucun planning pour cette semaine.",
|
|
"table": {
|
|
"day": "Jour",
|
|
"meal": "Repas",
|
|
"recipe": "Recette"
|
|
}
|
|
},
|
|
"recipes": {
|
|
"title": "Recettes",
|
|
"comingSoon": "Cette section arrive bientôt."
|
|
},
|
|
"shoppingList": {
|
|
"title": "Liste de courses",
|
|
"comingSoon": "Cette section arrive bientôt."
|
|
},
|
|
"household": {
|
|
"title": "Foyer & profil",
|
|
"comingSoon": "Cette section arrive bientôt."
|
|
}
|
|
}
|