veza/apps/web/dist_verification/assets/ForgotPasswordPage-ReoHn_Ds.js
senke 04c25aa24f Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy
Bloc A - Code mort:
- Suppression Studio (components, views, features)
- Suppression gamification + services mock (projectService, storageService, gamificationService)
- Mise à jour Sidebar, Navbar, locales

Bloc B - Frontend:
- Suppression modal.tsx deprecated, Modal.stories (doublon Dialog)
- Feature flags: PLAYLIST_SEARCH, PLAYLIST_RECOMMENDATIONS, ROLE_MANAGEMENT = true
- Suppression 19 tests orphelins, retrait exclusions vitest.config

Bloc C - Backend:
- Extraction routes_auth.go depuis router.go

Bloc D - Rust:
- Suppression security_legacy.rs (code mort, patterns déjà dans security/)
2026-02-14 17:23:32 +01:00

1 line
2.5 KiB
JavaScript

import{a as n,j as t}from"./vendor-react-yWUy5XPk.js";import{L as h}from"./vendor-router-BNNHboN9.js";import{A as b,a as g}from"./AuthLayout-BT3tl6R-.js";import{A as j}from"./AuthInput-DUoVAqr-.js";import{u as y}from"./usePasswordReset-0vtOXL17.js";import"./vendor-CveO81sn.js";import"./vendor-security-DsrNJhpn.js";import"./index-CYK_b1Uz.js";import"./vendor-tanstack-kPY9uK0s.js";import"./vendor-http-Cz8wfb0q.js";import"./vendor-utils-DtoSyhX2.js";import"./vendor-icons-DJFb1Tiw.js";import"./vendor-motion-B3XPS3Jc.js";import"./vendor-i18n-CMcqpBLz.js";function z(){const{handleRequestReset:m,loading:u,error:l,success:c}=y(),[r,d]=n.useState({email:""}),[i,s]=n.useState({}),p=()=>{const e={};return r.email?/\S+@\S+\.\S+/.test(r.email)||(e.email="Email invalide"):e.email="Email requis",s(e),Object.keys(e).length===0},v=(e,a)=>{d({...r,[e]:a}),i[e]&&s({...i,[e]:void 0})},x=e=>{const a=r[e];let o;a?/\S+@\S+\.\S+/.test(a)||(o="Email invalide"):o="Email requis",s(o?{...i,[e]:o}:{...i,[e]:void 0})},f=async e=>{e.preventDefault(),p()&&await m(r)};return t.jsx(b,{title:"Mot de passe oublié",subtitle:"Entrez votre email pour recevoir un lien de réinitialisation",footerLinks:[{label:"Retour à la connexion",to:"/login"}],children:c?t.jsxs("div",{className:"text-center space-y-4",role:"status","aria-live":"polite",children:[t.jsxs("div",{className:"bg-success/10 border border-success text-success px-4 py-4 rounded",role:"alert","aria-live":"assertive",children:[t.jsx("p",{className:"font-medium",children:"Email envoyé !"}),t.jsxs("p",{className:"text-sm mt-1",children:["Un lien de réinitialisation a été envoyé à ",r.email]})]}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Veuillez vérifier votre boîte mail et cliquer sur le lien pour réinitialiser votre mot de passe."}),t.jsx(h,{to:"/login",className:"text-primary hover:underline text-sm block focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 rounded",children:"Retour à la connexion"})]}):t.jsxs("form",{onSubmit:f,className:"space-y-4","aria-label":"Formulaire de réinitialisation de mot de passe",children:[l&&t.jsx("div",{className:"bg-destructive/10 border border-destructive text-destructive px-4 py-4 rounded",role:"alert","aria-live":"assertive",children:l.message}),t.jsx(j,{type:"email",label:"Email",value:r.email,onChange:e=>v("email",e.target.value),onBlur:()=>x("email"),error:i.email,required:!0,autoComplete:"email"}),t.jsx(g,{type:"submit",loading:u,children:"Envoyer le lien de réinitialisation"})]})})}export{z as ForgotPasswordPage,z as default};