veza/apps/web/dist_verification/assets/PasswordStrengthIndicator-DoWFr4QD.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 KiB
JavaScript

import{j as s}from"./vendor-react-yWUy5XPk.js";import{c as d}from"./index-CYK_b1Uz.js";import{C as x,X as m}from"./vendor-icons-DJFb1Tiw.js";function h(a){const r=[];let t=0;const o=a.length>=12;o&&t++,r.push({text:`Au moins 12 caractères (${a.length}/12)`,met:o});const c=/[a-z]/.test(a)&&/[A-Z]/.test(a);c&&t++,r.push({text:"Majuscule et minuscule",met:c});const u=/\d/.test(a);u&&t++,r.push({text:"Un chiffre",met:u});const e=/[^a-zA-Z\d]/.test(a);e&&t++,r.push({text:"Un caractère spécial (!@#$%^&*...)",met:e});let i,l,n;return t<=1?(i="Weak",l="bg-destructive",n="text-destructive"):t===2?(i="Fair",l="bg-warning",n="text-warning"):t===3?(i="Good",l="bg-warning",n="text-warning"):(i="Strong",l="bg-success",n="text-success"),{level:t,label:i,color:l,textColor:n,requirements:r}}function p({password:a}){if(!a)return null;const{level:r,label:t,color:o,textColor:c,requirements:u}=h(a);return s.jsxs("div",{className:"mt-3 space-y-2.5 animate-fade-in",role:"status","aria-live":"polite","aria-atomic":"true",children:[s.jsxs("div",{children:[s.jsx("div",{className:"flex gap-1.5 mb-1.5",children:[1,2,3,4].map(e=>s.jsx("div",{className:"h-1.5 flex-1 rounded-full bg-muted overflow-hidden",role:e===1?"progressbar":void 0,"aria-valuenow":e===1?r:void 0,"aria-valuemin":e===1?0:void 0,"aria-valuemax":e===1?4:void 0,"aria-label":e===1?`Force du mot de passe: ${t}`:void 0,children:s.jsx("div",{className:d("h-full rounded-full transition-all duration-[var(--sumi-duration-normal)] ease-out",r>=e?o:"bg-transparent")})},e))}),s.jsx("p",{className:d("text-xs font-medium transition-colors duration-[var(--duration-fast)]",c),children:t})]}),s.jsx("ul",{className:"space-y-1",children:u.map(e=>s.jsxs("li",{className:d("flex items-center gap-2 text-xs transition-colors duration-[var(--duration-fast)]",e.met?"text-success":"text-muted-foreground"),children:[e.met?s.jsx(x,{className:"h-3 w-3 flex-shrink-0"}):s.jsx(m,{className:"h-3 w-3 flex-shrink-0"}),s.jsx("span",{children:e.text})]},e.text))})]})}export{p as P};