1"use strict";(self.webpackChunkctmpharma=self.webpackChunkctmpharma||[]).push([[1386],{11386:($,_,l)=>{l.r(_),l.d(_,{LoginAttemptsComponent:()=>T});var t=l(41360),m=l(45564),d=l(89417),f=l(21413),u=l(56977),g=l(68018),h=l(28312),b=l(61201);let x=(()=>{class a{constructor(){this.api=(0,t.WQX)(h.G),this.auth=(0,t.WQX)(b.u)}list(e={}){return this.api.post("managers/admins/login-attempts/list",{uid:this.auth.getCurrentUser()?.uid,...e})}static{this.\u0275fac=function(n){return new(n||a)}}static{this.\u0275prov=t.jDH({token:a,factory:a.\u0275fac,providedIn:"root"})}}return a})();const M=a=>({"fa-spin":a});function C(a,s){if(1&a){const e=t.RV6();t.j41(0,"div",27),t.nrm(1,"i",28),t.j41(2,"span",29),t.EFF(3),t.k0s(),t.j41(4,"button",30),t.nI1(5,"translate"),t.bIt("click",function(){t.eBV(e);const i=t.XpG();return t.Njj(i.errorMessage="")}),t.nrm(6,"i",31),t.k0s()()}if(2&a){const e=t.XpG();t.R7$(3),t.JRh(e.errorMessage),t.R7$(),t.BMQ("aria-label",t.bMT(5,2,"admin.system.loginAttempts.close"))}}function y(a,s){if(1&a){const e=t.RV6();t.j41(0,"button",32),t.bIt("click",function(){const i=t.eBV(e).$implicit,o=t.XpG();return t.Njj(o.setOutcome(i.value))}),t.nrm(1,"i",33),t.j41(2,"span",34),t.EFF(3),t.nI1(4,"translate"),t.k0s()()}if(2&a){const e=s.$implicit,n=t.XpG();t.AVh("is-active",n.filterOutcome===e.value),t.BMQ("aria-selected",n.filterOutcome===e.value),t.R7$(),t.Y8G("ngClass",e.icon),t.R7$(2),t.JRh(t.bMT(4,5,e.label))}}function k(a,s){1&a&&(t.j41(0,"div",35)(1,"div",36),t.nrm(2,"div",37),t.k0s(),t.j41(3,"p",38),t.EFF(4),t.nI1(5,"translate"),t.k0s()()),2&a&&(t.R7$(4),t.JRh(t.bMT(5,1,"admin.system.loginAttempts.loading")))}function P(a,s){if(1&a&&(t.j41(0,"span",64),t.EFF(1),t.k0s()),2&a){const e=t.XpG().$implicit;t.R7$(),t.SpI(" ",e.firebaseErrorCode," ")}}function O(a,s){if(1&a&&(t.j41(0,"code",65),t.EFF(1),t.k0s()),2&a){const e=t.XpG().$implicit;t.R7$(),t.JRh(e.ip)}}function w(a,s){1&a&&(t.j41(0,"span",66),t.EFF(1,"-"),t.k0s())}function v(a,s){if(1&a&&(t.j41(0,"tr",47)(1,"td",48),t.nrm(2,"span",49),t.j41(3,"div",50)(4,"span",51),t.EFF(5),t.k0s(),t.j41(6,"div",52)(7,"span",53),t.EFF(8),t.k0s(),t.j41(9,"span",54),t.EFF(10),t.k0s()()()(),t.j41(11,"td",55)(12,"span",56),t.nrm(13,"i",33),t.j41(14,"span"),t.EFF(15),t.k0s()(),t.DNE(16,P,2,1,"span",57),t.k0s(),t.j41(17,"td",55),t.DNE(18,O,2,1,"code",58)(19,w,2,0,"ng-template",null,1,t.C5r),t.k0s(),t.j41(21,"td",55)(22,"span",59),t.nrm(23,"i",60),t.j41(24,"span"),t.EFF(25),t.k0s()()(),t.j41(26,"td",55)(27,"div",61)(28,"span",62),t.EFF(29),t.k0s(),t.j41(30,"span",63),t.EFF(31),t.k0s()()()()),2&a){const e=s.$implicit,n=t.sdS(20),i=t.XpG(3);t.BMQ("data-outcome",e.outcome),t.R7$(5),t.SpI(" ",i.attemptIdentity(e).initials," "),t.R7$(3),t.JRh(i.attemptIdentity(e).name),t.R7$(2),t.JRh(i.attemptIdentity(e).email),t.R7$(2),t.BMQ("data-theme",i.outcomeMeta(e.outcome).theme),t.R7$(),t.Y8G("ngClass",i.outcomeMeta(e.outcome).icon),t.R7$(2),t.JRh(i.outcomeMeta(e.outcome).label),t.R7$(),t.Y8G("ngIf",e.firebaseErrorCode),t.R7$(2),t.Y8G("ngIf",e.ip)("ngIfElse",n),t.R7$(4),t.Y8G("title",e.userAgent||""),t.R7$(3),t.JRh(i.uaSummary(e.userAgent)),t.R7$(4),t.JRh(i.relativeTime(e.createdAt)),t.R7$(2),t.JRh(i.absoluteTime(e.createdAt))}}function R(a,s){if(1&a&&(t.j41(0,"div",42)(1,"table",43)(2,"thead")(3,"tr")(4,"th",44),t.EFF(5),t.nI1(6,"translate"),t.k0s(),t.j41(7,"th",45),t.EFF(8),t.nI1(9,"translate"),t.k0s(),t.j41(10,"th",45),t.EFF(11),t.nI1(12,"translate"),t.k0s(),t.j41(13,"th",45),t.EFF(14),t.nI1(15,"translate"),t.k0s(),t.j41(16,"th",45),t.EFF(17),t.nI1(18,"translate"),t.k0s()()(),t.j41(19,"tbody"),t.DNE(20,v,32,14,"tr",46),t.k0s()()()),2&a){const e=t.XpG(2);t.R7$(5),t.JRh(t.bMT(6,7,"admin.system.loginAttempts.colAccount")),t.R7$(3),t.JRh(t.bMT(9,9,"admin.system.loginAttempts.colOutcome")),t.R7$(3),t.JRh(t.bMT(12,11,"admin.system.loginAttempts.colIp")),t.R7$(3),t.JRh(t.bMT(15,13,"admin.system.loginAttempts.colDevice")),t.R7$(3),t.JRh(t.bMT(18,15,"admin.system.loginAttempts.colWhen")),t.R7$(3),t.Y8G("ngForOf",e.attempts)("ngForTrackBy",e.trackById)}}function F(a,s){1&a&&(t.j41(0,"div",67)(1,"div",68),t.nrm(2,"i",69),t.k0s(),t.j41(3,"h3",70),t.EFF(4),t.nI1(5,"translate"),t.k0s(),t.j41(6,"p",71),t.EFF(7),t.nI1(8,"translate"),t.k0s()()),2&a&&(t.R
17$(4),t.JRh(t.bMT(5,2,"admin.system.loginAttempts.emptyTitle")),t.R7$(3),t.JRh(t.bMT(8,4,"admin.system.loginAttempts.emptyText")))}function A(a,s){if(1&a){const e=t.RV6();t.j41(0,"button",78),t.bIt("click",function(){const i=t.eBV(e).$implicit,o=t.XpG(3);return t.Njj(o.pageChanged(i))}),t.EFF(1),t.k0s()}if(2&a){const e=s.$implicit,n=t.XpG(3);t.AVh("is-active",e===n.currentPage),t.R7$(),t.JRh(e)}}function I(a,s){if(1&a){const e=t.RV6();t.j41(0,"div",72)(1,"button",73),t.nI1(2,"translate"),t.bIt("click",function(){t.eBV(e);const i=t.XpG(2);return t.Njj(i.pageChanged(i.currentPage-1))}),t.nrm(3,"i",74),t.k0s(),t.DNE(4,A,2,3,"button",75),t.j41(5,"button",73),t.nI1(6,"translate"),t.bIt("click",function(){t.eBV(e);const i=t.XpG(2);return t.Njj(i.pageChanged(i.currentPage+1))}),t.nrm(7,"i",76),t.k0s(),t.j41(8,"span",77),t.EFF(9),t.nI1(10,"translate"),t.k0s()()}if(2&a){const e=t.XpG(2);t.R7$(),t.Y8G("disabled",1===e.currentPage),t.BMQ("aria-label",t.bMT(2,7,"admin.system.loginAttempts.prevPage")),t.R7$(3),t.Y8G("ngForOf",e.pageRange()),t.R7$(),t.Y8G("disabled",e.currentPage===e.totalPages),t.BMQ("aria-label",t.bMT(6,9,"admin.system.loginAttempts.nextPage")),t.R7$(4),t.Lme("",e.totalItems," ",t.bMT(10,11,"admin.system.loginAttempts.entries"),"")}}function j(a,s){if(1&a&&(t.j41(0,"section",39),t.DNE(1,R,21,17,"div",40)(2,F,9,6,"ng-template",null,0,t.C5r)(4,I,11,13,"div",41),t.k0s()),2&a){const e=t.sdS(3),n=t.XpG();t.R7$(),t.Y8G("ngIf",n.attempts.length)("ngIfElse",e),t.R7$(3),t.Y8G("ngIf",n.attempts.length&&n.totalPages>1)}}let T=(()=>{class a{constructor(){this.svc=(0,t.WQX)(x),this.cdr=(0,t.WQX)(t.gRc),this.translate=(0,t.WQX)(g.c$),this.destroy$=new f.B,this.attempts=[],this.isLoading=!1,this.errorMessage="",this.search="",this.filterOutcome="",this.outcomeTabs=[{value:"",label:"admin.system.loginAttempts.tabAll",icon:"fa-list"},{value:"success",label:"admin.system.loginAttempts.tabSuccess",icon:"fa-circle-check"},{value:"wrong_password",label:"admin.system.loginAttempts.tabPassword",icon:"fa-key"},{value:"wrong_2fa",label:"admin.system.loginAttempts.tab2fa",icon:"fa-shield-halved"},{value:"lockout",label:"admin.system.loginAttempts.tabLockout",icon:"fa-lock"},{value:"account_disabled",label:"admin.system.loginAttempts.tabDisabled",icon:"fa-user-slash"},{value:"ip_not_allowed",label:"admin.system.loginAttempts.tabIpRefused",icon:"fa-network-wired"}],this.currentPage=1,this.itemsPerPage=50,this.totalItems=0,this.totalPages=1}ngOnInit(){this.refresh()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}refresh(){this.isLoading=!0,this.errorMessage="",this.cdr.markForCheck(),this.svc.list({email:this.search.trim()||void 0,outcome:this.filterOutcome||void 0,page:this.currentPage,limit:this.itemsPerPage}).pipe((0,u.Q)(this.destroy$)).subscribe({next:e=>{this.attempts=Array.isArray(e?.data)?e.data:[],this.totalItems=Number((e?.meta||{}).total??this.attempts.length),this.totalPages=Math.max(1,Math.ceil(this.totalItems/this.itemsPerPage)),this.isLoading=!1,this.cdr.markForCheck()},error:()=>{this.errorMessage=this.translate.instant("admin.system.loginAttempts.errLoad"),this.attempts=[],this.isLoading=!1,this.cdr.markForCheck()}})}applySearch(){this.currentPage=1,this.refresh()}resetFilters(){this.search="",this.filterOutcome="",this.currentPage=1,this.refresh()}setOutcome(e){this.filterOutcome!==e&&(this.filterOutcome=e,this.currentPage=1,this.refresh())}pageChanged(e){e<1||e>this.totalPages||e===this.currentPage||(this.currentPage=e,this.refresh())}outcomeMeta(e){switch(e){case"success":return{label:this.translate.instant("admin.system.loginAttempts.outSuccess"),icon:"fa-circle-check",theme:"success"};case"wrong_password":return{label:this.translate.instant("admin.system.loginAttempts.outPassword"),icon:"fa-key",theme:"danger"};case"wrong_2fa":return{label:this.translate.instant("admin.system.loginAttempts.out2fa"),icon:"fa-shield-halved",theme:"warning"};case"lockout":return{label:this.translate.instant("admin.system.loginAttempts.outLockout"),icon:"fa-lock",theme:"dark"};case"account_disabled":return{label:this.translate.instant("admin.system.loginAttempts.outDisabled"),icon:"fa-user-slash",theme:"dark"};case"ip_not_allowed":return{label:this.translate.instant("admin.system.loginAttempts.outIpRefused"),icon:"fa-network-wired",theme:"warning"};
1default:return{label:e||"-",icon:"fa-circle",theme:"muted"}}}attemptIdentity(e){const n=e.adminId&&"object"==typeof e.adminId?e.adminId:null,i=n?[n.name,n.surname].filter(Boolean).join(" ").trim():"",o=n?.email||e.email||"",c=(i||o||"?").split(/[\s@.]+/).filter(Boolean).slice(0,2).map(p=>p[0]?.toUpperCase()||"").join("")||"?";return{name:i||(o?o.split("@")[0]:this.translate.instant("admin.system.loginAttempts.unknown")),email:o||"-",initials:c}}uaSummary(e){if(!e)return"-";const n=e;return`${/Edg\//.test(n)?"Edge":/OPR\/|Opera/.test(n)?"Opera":/Chrome\//.test(n)?"Chrome":/Firefox\//.test(n)?"Firefox":/Safari\//.test(n)?"Safari":this.translate.instant("admin.system.loginAttempts.browser")} \xb7 ${/Windows NT 10/.test(n)?"Windows 10/11":/Windows NT/.test(n)?"Windows":/Mac OS X/.test(n)?"macOS":/Android/.test(n)?"Android":/iPhone|iPad|iOS/.test(n)?"iOS":/Linux/.test(n)?"Linux":this.translate.instant("admin.system.loginAttempts.os")}`}relativeTime(e){if(!e)return"-";const n=new Date(e),i=Date.now()-n.getTime();if(i<0||isNaN(i))return n.toLocaleString("fr-FR");const o=Math.floor(i/1e3);if(o<60)return this.translate.instant("admin.system.loginAttempts.agoSeconds",{value:o});const r=Math.floor(o/60);if(r<60)return this.translate.instant("admin.system.loginAttempts.agoMinutes",{value:r});const c=Math.floor(r/60);if(c<24)return this.translate.instant("admin.system.loginAttempts.agoHours",{value:c});const p=Math.floor(c/24);return p<7?this.translate.instant("admin.system.loginAttempts.agoDays",{value:p}):n.toLocaleDateString("fr-FR",{day:"2-digit",month:"short",year:"numeric"})}absoluteTime(e){return e?new Date(e).toLocaleString("fr-FR"):""}trackById(e,n){return n._id||""}pageRange(){const n=Math.max(1,Math.min(this.currentPage-2,this.totalPages-5+1)),i=Math.min(this.totalPages,n+5-1),o=[];for(let r=n;r<=i;r++)o.push(r);return o}static{this.\u0275fac=function(n){return new(n||a)}}static{this.\u0275cmp=t.VBU({type:a,selectors:[["app-login-attempts"]],decls:40,vars:33,consts:[["emptyState",""],["noIp",""],[1,"admin-shell"],[1,"admin-hero"],[1,"admin-hero__left"],["aria-hidden","true",1,"admin-hero__icon"],[1,"fas","fa-clock-rotate-left"],[1,"admin-hero__eyebrow"],[1,"admin-hero__title"],[1,"admin-hero__subtitle"],[1,"admin-hero__right"],["type","button",1,"admin-hero__refresh",3,"click","disabled","title"],["aria-hidden","true",1,"fas","fa-sync-alt",3,"ngClass"],["class","admin-alert","role","alert",4,"ngIf"],["role","tablist",1,"admin-status-tabs"],["type","button","role","tab","class","admin-status-tabs__tab",3,"is-active","click",4,"ngFor","ngForOf"],[1,"admin-filter-panel"],[1,"admin-filter-panel__row",3,"submit"],[1,"admin-filter-panel__controls"],["type","text","name","search",1,"form-control","admin-filter-panel__search",3,"ngModelChange","keyup.enter","placeholder","ngModel"],["type","submit",1,"admin-filter-panel__btn","admin-filter-panel__btn--primary"],[1,"fas","fa-search"],[1,"d-none","d-lg-inline","ms-1"],["type","button",1,"admin-filter-panel__btn","admin-filter-panel__btn--ghost",3,"click"],[1,"fas","fa-filter-circle-xmark"],["class","admin-loading","role","status","aria-live","polite",4,"ngIf"],["class","admin-card adm-table-card",4,"ngIf"],["role","alert",1,"admin-alert"],["aria-hidden","true",1,"fas","fa-exclamation-triangle","admin-alert__icon"],[1,"admin-alert__text"],["type","button",1,"admin-alert__close",3,"click"],[1,"fas","fa-times"],["type","button","role","tab",1,"admin-status-tabs__tab",3,"click"],["aria-hidden","true",1,"fas",3,"ngClass"],[1,"ms-1"],["role","status","aria-live","polite",1,"admin-loading"],["aria-hidden","true",1,"admin-loading__spinner"],[1,"admin-loading__ring"],[1,"admin-loading__text"],[1,"admin-card","adm-table-card"],["class","adm-table-wrap",4,"ngIf","ngIfElse"],["class","adm-pagination",4,"ngIf"],[1,"adm-table-wrap"],[1,"adm-table"],[1,"adm-table__th","adm-table__th--name"],[1,"adm-table__th"],["class","adm-row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"adm-row"],[1,"adm-row__cell","adm-row__cell--name"],["aria-hidden","true",1,"adm-row__accent"],[1,"adm-id"],["aria-hidden","true",1,"adm-id__avatar"],[1,"adm-id__text"],[1,"adm-id__name"],[1,"adm-id__email"],[1,"adm-row__cell"],[1,"adm-outcome"],["class","adm-outcome__code",4,"ngIf"],["class","adm-ip",4,"ngIf","ngIfElse"],[1,"adm-ua",3,"title"],["aria-hidden","true",1,"fas","fa-display"],[1,"adm-when"],[1,"adm-when__rel"],[1,"adm-when__sub"],[1,"adm-outcome__code"],[1,"adm-ip"],[1,"adm-when__never"],[1,"adm-empty"],["aria-hidden","true",1,"adm-empty__art"],[1,"fas","fa-shield-halved"],[1,"adm-empty__title"],[1,"adm-empty__text"],[1,"adm-pagination"],["type","button",1,"adm-pagination__btn",3,"click","disabled"],[1,"fas","fa-chevron-left"],["type","button","class","adm-pagination__page",3,"is-active","click",4,"ngFor","ngForOf"],[1,"fas","fa-chevron-right"],[1,"adm-pagination__meta"],["type","button",1,"adm-pagination__page",3,"click"]],template:function(n,i){1&n&&(t.j41(0,"div",2)(1,"section",3)(2,"div",4)(3,"div",5),t.nrm(4,"i",6),t.k0s(),t.j41(5,"div")(6,"p",7),t.EFF(7),t.nI1(8,"translate"),t.k0s(),t.j41(9,"h1",8),t.EFF(10),t.nI1(11,"translate"),t.k0s(),t.j41(12,"p",9),t.EFF(13),t.nI1(14,"translate"),t.k0s()()(),t.j41(15,"div",10)(16,"button",11),t.nI1(17,"translate"),t.bIt("click",function(){return i.refresh()}),t.nrm(18,"i",12),t.k0s()()(),t.DNE(19,C,7,4,"div",13),t.j41(20,"nav",14),t.nI1(21,"translate"),t.DNE(22,y,5,7,"button",15),t.k0s(),t.j41(23,"section",16)(24,"form",17),t.bIt("submit",function(r){return r.preventDefault(),i.applySearch()}),t.j41(25,"div",18)(26,"input",19),t.nI1(27,"translate"),t.mxI("ngModelChange",function(r){return t.DH7(i.search,r)||(i.search=r),r}),t.bIt("keyup.enter",function(){return i.applySearch()}),t.k0s(),t.j41(28,"button",20),t.nrm(29,"i",21),t.j41(30,"span",22),t.EFF(31),t.nI1(32,"translate"),t.k0s()(),t.j41(33,"button",23),t.bIt("click",function(){return i.resetFilters()}),t.nrm(34,"i",24),t.j41(35,"span",22),t.EFF(36),t.nI1(37,"translate"),t.k0s()()()()(),t.DNE(38,k,6,3,"div",25)(39,j,5,3,"
1section",26),t.k0s()),2&n&&(t.R7$(7),t.JRh(t.bMT(8,15,"admin.system.loginAttempts.eyebrow")),t.R7$(3),t.JRh(t.bMT(11,17,"admin.system.loginAttempts.title")),t.R7$(3),t.JRh(t.bMT(14,19,"admin.system.loginAttempts.subtitle")),t.R7$(3),t.Y8G("disabled",i.isLoading)("title",t.bMT(17,21,"admin.system.loginAttempts.refresh")),t.R7$(2),t.Y8G("ngClass",t.eq3(31,M,i.isLoading)),t.R7$(),t.Y8G("ngIf",i.errorMessage),t.R7$(),t.BMQ("aria-label",t.bMT(21,23,"admin.system.loginAttempts.filterOutcome")),t.R7$(2),t.Y8G("ngForOf",i.outcomeTabs),t.R7$(4),t.Y8G("placeholder",t.bMT(27,25,"admin.system.loginAttempts.searchPlaceholder")),t.R50("ngModel",i.search),t.R7$(5),t.JRh(t.bMT(32,27,"admin.system.loginAttempts.search")),t.R7$(5),t.JRh(t.bMT(37,29,"admin.system.loginAttempts.reset")),t.R7$(2),t.Y8G("ngIf",i.isLoading),t.R7$(),t.Y8G("ngIf",!i.isLoading))},dependencies:[m.MD,m.YU,m.Sq,m.bT,d.YN,d.qT,d.me,d.BC,d.cb,d.vS,d.cV,g.h,g.D9],styles:["[_nghost-%COMP%]{display:block}.admin-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;padding:24px 28px 40px;max-width:1480px;margin:0 auto;font-family:Inter,system-ui,sans-serif;color:#0f172a}.admin-hero[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e2e8f0;border-radius:18px;padding:20px 24px;box-shadow:0 1px 2px #0f172a0a}.admin-hero__left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px}.admin-hero__icon[_ngcontent-%COMP%]{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,#0d9488,#115e59);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 6px 14px #0d948840}.admin-hero__eyebrow[_ngcontent-%COMP%]{margin:0;text-transform:uppercase;font-size:11px;letter-spacing:.12em;color:#0d9488;font-weight:700}.admin-hero__title[_ngcontent-%COMP%]{margin:2px 0 4px;font-family:Manrope,system-ui,sans-serif;font-size:22px;font-weight:700;letter-spacing:-.01em}.admin-hero__subtitle[_ngcontent-%COMP%]{margin:0;color:#475569;font-size:13.5px}.admin-hero__right[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.admin-hero__refresh[_ngcontent-%COMP%]{width:38px;height:38px;border-radius:10px;border:1px solid #e2e8f0;background:#fff;color:#475569;cursor:pointer;transition:.15s ease}.admin-hero__refresh[_ngcontent-%COMP%]:hover:not(:disabled){background:#f8fafc;color:#0f172a}.admin-hero__refresh[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.admin-alert[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:12px;padding:10px 14px;font-size:13.5px}.admin-alert__icon[_ngcontent-%COMP%]{font-size:16px}.admin-alert__text[_ngcontent-%COMP%]{flex:1}.admin-alert__close[_ngcontent-%COMP%]{background:transparent;border:none;color:inherit;cursor:pointer;padding:4px;opacity:.7}.admin-alert__close[_ngcontent-%COMP%]:hover{opacity:1}.admin-status-tabs[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px;background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:6px}.admin-status-tabs__tab[_ngcontent-%COMP%]{border:none;background:transparent;color:#475569;font-size:13px;font-weight:600;padding:8px 14px;border-radius:9px;cursor:pointer;display:inline-flex;align-items:center;transition:.15s ease}.admin-status-tabs__tab[_ngcontent-%COMP%]:hover{background:#f8fafc;color:#0f172a}.admin-status-tabs__tab.is-active[_ngcontent-%COMP%]{background:linear-gradient(135deg,#0d9488,#115e59);color:#fff;box-shadow:0 4px 10px #0d948840}.admin-filter-panel[_ngcontent-%COMP%]{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:12px 14px}.admin-filter-panel__row[_ngcontent-%COMP%]{display:flex;align-items:center}.admin-filter-panel__controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%}.admin-filter-panel__search[_ngcontent-%COMP%]{flex:1;height:40px;border-radius:10px;border:1px solid #e2e8f0;padding:0 14px;font-size:13.5px}.admin-filter-panel__search[_ngcontent-%COMP%]:focus{outline:none;border-color:#0d9488;box-shadow:0 0 0 3px #0d948826}.admin-filter-panel__btn[_ngcontent-%COMP%]{height:40px;padding:0 14px;border-radius:10px;border:1px solid #e2e8f0;background:#fff;color:#475569;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;transition:.15s ease}.admin-filter-panel__btn--primary[_ngcontent-%COMP%]{background:linear-gradient(135deg,#0d9488,#115e59);color:#fff;border-color:transparent}.admin-filter-panel__btn--primary[_ngcontent-%COMP%]:hover{filter:brightness(1.05)}.admin-filter-panel__btn--ghost[_ngcontent-%COMP%]:hover{background:#f8fafc;color:#0f172a}.admin-loading[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px 0}.admin-loading__spinner[_ngcontent-%COMP%]{width:36px;height:36px}.admin-loading__ring[_ngcontent-%COMP%]{width:100%;height:100%;border:3px solid #e2e8f0;border-top-color:#0d9488;border-radius:50%;animation:_ngcontent-%COMP%_spin .7s linear infinite}.admin-loading__text[_ngcontent-%COMP%]{color:#64748b;font-size:13px;margin:0}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.admin-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden;box-shadow:0 1px 2px #0f172a08}.adm-table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.adm-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:13.5px}.adm-table__th[_ngcontent-%COMP%]{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#64748b;font-weight:700;padding:14px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;white-space:nowrap}
1.adm-table__th--name[_ngcontent-%COMP%]{padding-left:22px}.adm-row[_ngcontent-%COMP%]{position:relative;transition:background .12s ease}.adm-row[_ngcontent-%COMP%]:not(:last-child) > .adm-row__cell[_ngcontent-%COMP%]{border-bottom:1px solid #eef2f7}.adm-row[_ngcontent-%COMP%]:hover{background:#f8fafc}.adm-row__accent[_ngcontent-%COMP%]{position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent}.adm-row__cell[_ngcontent-%COMP%]{padding:14px 16px;vertical-align:middle}.adm-row__cell--name[_ngcontent-%COMP%]{padding-left:22px;position:relative}.adm-row[data-outcome=success][_ngcontent-%COMP%] .adm-row__accent[_ngcontent-%COMP%]{background:#15803d}.adm-row[data-outcome=wrong_password][_ngcontent-%COMP%] .adm-row__accent[_ngcontent-%COMP%]{background:#b91c1c}.adm-row[data-outcome=wrong_2fa][_ngcontent-%COMP%] .adm-row__accent[_ngcontent-%COMP%]{background:#b45309}.adm-row[data-outcome=lockout][_ngcontent-%COMP%] .adm-row__accent[_ngcontent-%COMP%], .adm-row[data-outcome=account_disabled][_ngcontent-%COMP%] .adm-row__accent[_ngcontent-%COMP%]{background:#1e293b}.adm-row[data-outcome=ip_not_allowed][_ngcontent-%COMP%] .adm-row__accent[_ngcontent-%COMP%]{background:#b45309}.adm-id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.adm-id__avatar[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#0d9488,#115e59);color:#fff;font-weight:700;font-size:13px;display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #0f172a0f;flex:0 0 auto}.adm-id__text[_ngcontent-%COMP%]{display:flex;flex-direction:column;line-height:1.2;min-width:0}.adm-id__name[_ngcontent-%COMP%]{font-weight:600;color:#0f172a;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.adm-id__email[_ngcontent-%COMP%]{color:#64748b;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.adm-outcome[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid transparent}.adm-outcome[data-theme=success][_ngcontent-%COMP%]{color:#15803d;background:#dcfce7;border-color:#15803d2e}.adm-outcome[data-theme=danger][_ngcontent-%COMP%]{color:#b91c1c;background:#fee2e2;border-color:#b91c1c2e}.adm-outcome[data-theme=warning][_ngcontent-%COMP%]{color:#b45309;background:#fef3c7;border-color:#b453092e}.adm-outcome[data-theme=dark][_ngcontent-%COMP%]{color:#1e293b;background:#e2e8f0;border-color:#1e293b2e}.adm-outcome[data-theme=muted][_ngcontent-%COMP%]{color:#64748b;background:#f1f5f9;border-color:#64748b2e}.adm-outcome__code[_ngcontent-%COMP%]{display:inline-block;margin-left:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:#64748b}.adm-ip[_ngcontent-%COMP%]{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;background:#f8fafc;border:1px solid #e2e8f0;padding:3px 8px;border-radius:6px;color:#0f172a}.adm-ua[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#475569}.adm-ua[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{color:#64748b;font-size:12px}.adm-when[_ngcontent-%COMP%]{display:flex;flex-direction:column;line-height:1.25}.adm-when__rel[_ngcontent-%COMP%]{font-size:13px;color:#0f172a;font-weight:500}.adm-when__sub[_ngcontent-%COMP%]{font-size:11.5px;color:#64748b}.adm-when__never[_ngcontent-%COMP%]{color:#64748b;font-size:13px}.adm-empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:56px 24px;text-align:center}.adm-empty__art[_ngcontent-%COMP%]{width:72px;height:72px;border-radius:20px;background:#f8fafc;color:#64748b;display:inline-flex;align-items:center;justify-content:center;font-size:28px;margin-bottom:6px}.adm-empty__title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:700;color:#0f172a}.adm-empty__text[_ngcontent-%COMP%]{margin:0;color:#64748b;font-size:13.5px;max-width:420px}.adm-pagination[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:14px 18px;border-top:1px solid #eef2f7;background:#f8fafc}.adm-pagination__btn[_ngcontent-%COMP%], .adm-pagination__page[_ngcontent-%COMP%]{min-width:34px;height:34px;padding:0 10px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;color:#475569;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s ease}.adm-pagination__btn[_ngcontent-%COMP%]:hover:not(:disabled):not(.is-active), .adm-pagination__page[_ngcontent-%COMP%]:hover:not(:disabled):not(.is-active){background:#f8fafc;color:#0f172a}.adm-pagination__btn[_ngcontent-%COMP%]:disabled, .adm-pagination__page[_ngcontent-%COMP%]:disabled{opacity:.4;cursor:not-allowed}.adm-pagination__btn.is-active[_ngcontent-%COMP%], .adm-pagination__page.is-active[_ngcontent-%COMP%]{background:linear-gradient(135deg,#0d9488,#115e59);color:#fff;border-color:transparent}.adm-pagination__meta[_ngcontent-%COMP%]{margin-left:auto;font-size:12px;color:#64748b}@media (max-width: 768px){.admin-shell[_ngcontent-%COMP%]{padding:16px 14px 32px}.admin-hero[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start}.adm-id__name[_ngcontent-%COMP%], .adm-id__email[_ngcontent-%COMP%]{max-width:140px}}"],changeDetection:0})}}return a})()}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.