feat(gating): garde UI — RequireFeature + UpsellGate + i18n #298
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#298
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Composants de garde reutilisables : RequireFeature (wrapper de route) + UpsellGate (ecran verrouille) + i18n.
Fichiers concernes
src/components/shared/UpsellGate.tsx(creer) — ecran plein parametre (feature, tier requis), cadenas, 2 CTA.src/components/shared/RequireFeature.tsx(creer) —ready ? (allowed ? children : <UpsellGate/>) : <Loader/>. Rendu en layout-route (Outlet) pour grouper les routes de meme feature.src/i18n/locales/fr.json,src/i18n/locales/en.json(modifier) — clesupsell.*+nav.locked.Depends on
Criteres d'acceptation
!ready(pas de flash upsell au boot).upsell.*(titre, description par feature, CTA) +nav.lockedpresentes en FR ET EN.Review caveats (/review-spec — a respecter)
readydoit supprimer le cadenas partout (Sidebar/tuiles/profils/routes), pas seulement dans RequireFeature.Decisions prises en planification
Spec source
spec-decisions-feature-gating.md + spec-plan-feature-gating.md (racine, force-add ; verdict /review-spec jaune, corrections integrees).