1import"./chunk-BYXBJQAS.js";import{a as _e,b as he}from"./chunk-FM4AWERM.js";import"./chunk-6ZEAALTS.js";import"./chunk-5IZTCRPE.js";import{a as fe}from"./chunk-W5TILRYY.js";import{E as ue,c as le,g as ce,k as de,u as ge,v as me,w as pe}from"./chunk-7IWHPZBK.js";import{F as G,H,Na as ee,P as q,Pa as te,S as W,T as $,Wb as oe,Xb as re,Y as X,aa as K,ca as J,kb as ne,nc as ae,pc as se,q as Y,ua as Q,xa as Z,xb as ie}from"./chunk-OJOSFQFR.js";import"./chunk-GTTVX4RB.js";import{d as U}from"./chunk-74FNENZC.js";import{i as R,j as N,n as B}from"./chunk-DD4MNGOS.js";import"./chunk-USN7YKQY.js";import{$b as b,Ab as d,Bb as i,Cb as r,Db as m,Ec as A,Kb as L,Mb as f,Ob as g,Pa as O,Ua as o,Uc as z,Vc as V,Wb as I,Xb as T,Zb as s,Zc as F,_b as _,aa as v,ba as k,bb as C,bd as j,ca as p,da as u,ec as M,fc as P,gb as S,gc as y,lb as h,rc as E,sb as w,sc as D}from"./chunk-5FDTFZP6.js";import"./chunk-IM5V7DCU.js";function Ce(c,e){if(c&1&&(i(0,"div",25)(1,"div",26),p(),m(2,"svg",27),u(),i(3,"h3"),s(4,"Carregando seus PIDs..."),r(),i(5,"p"),s(6,"Aguarde enquanto buscamos seus ativos tokenizados."),r()()()),c&2){let t=g();o(2),d("lucideIcon",t.Loader2)}}function xe(c,e){if(c&1&&(i(0,"div",31)(1,"div",32),p(),m(2,"svg",33),r(),u(),i(3,"h3"),s(4,"Nenhum ativo certificado"),r(),i(5,"p"),s(6," Voc\xEA ainda n\xE3o possui ativos certificados ou n\xE3o h\xE1 resultados para os filtros aplicados. "),r(),i(7,"button",7),p(),m(8,"svg",6),s(9," Certificar Primeiro Ativo "),r()()),c&2){let t=g(2);o(2),d("lucideIcon",t.Coins),o(5),d("routerLink",t.localeService.localPath("dashboard","novo-pid")),o(),d("lucideIcon",t.Plus)}}function ve(c,e){if(c&1&&(i(0,"div",57),m(1,"img",58),r()),c&2){let t=g().$implicit,n=g(2);o(),d("src",n.getPidScoreTierImagePathForToken(t),O)}}function ke(c,e){if(c&1&&(i(0,"span",59),s(1),r()),c&2){let t=e.ngIf;o(),b(" at\xE9 ",t," ")}}function Me(c,e){if(c&1&&(i(0,"div",48)(1,"span",49),s(2),r(),i(3,"span",50),s(4),r()()),c&2){let t=e.$implicit,n=g(3);o(2),b("",n.getIdentityTypeLabel(t.type),":"),o(2),_(t.value)}}function Pe(c,e){if(c&1&&(i(0,"div",48)(1,"span",49),s(2,"Ano:"),r(),i(3,"span",50),s(4),r()()),c&2){let t=g().$implicit,n=g(2);o(4),_(n.getYear(t))}}function ye(c,e){if(c&1){let t=L();i(0,"div",34),f("click",function(){let a=v(t).$implicit,l=g(2);return k(l.openTokenDetails(a))}),i(1,"div",35)(2,"img",36),f("error",function(a){let l=v(t).$implicit,x=g(2);return k(x.onImageError(a,l))}),r(),h(3,ve,2,1,"div",37),i(4,"div",38),p(),m(5,"svg",39),s(6),r()(),u(),i(7,"div",40)(8,"div",41)(9,"h3"),s(10),r(),i(11,"div",42)(12,"span",43),s(13),E(14,"titlecase"),r(),i(15,"span",44)(16,"span",45),s(17),r(),h(18,ke,2,1,"span",46),r()()(),i(19,"div",47)(20,"div",48)(21,"span",49),s(22,"PID:"),r(),i(23,"span",50),s(24),r()(),h(25,Me,5,2,"div",51)(26,Pe,5,1,"div",52),r(),i(27,"div",53)(28,"div",54),p(),m(29,"svg",39),s(30),r()(),u(),i(31,"div",55)(32,"button",56),f("click",function(a){let l=v(t).$implicit;return g(2).openTokenDetails(l),k(a.stopPropagation())}),p(),m(33,"svg",6),r()()()()}if(c&2){let t=e.$implicit,n=g(2);T("list-view",n.viewMode==="list"),o(2),d("src",t.imageUri||"../../../assets/images/no-image.jpg",O)("alt",t.codeIdentity),o(),d("ngIf",t.assetScoreSnapshotDto!==null),o(),I("background-color",n.getStatusColor(t.status||"")),o(),d("lucideIcon",n.getStatusIcon(t.status||"")),o(),b(" ",n.getStatusLabel(t.status||"")," "),o(3),w("title",n.getAssetTitle(t)),o(),_(n.getAssetTitle(t)),o(3),_(D(14,22,t.assetType)),o(2),w("data-plan",n.getPlanKind(t)),o(2),_(n.getPlanLabel(t)),o(),d("ngIf",n.getPlanExpiresLabel(t)),o(6),_(t.uidCode),o(),d("ngForOf",n.getTokenIdentities(t))("ngForTrackBy",n.trackByIdentity),o(),d("ngIf",n.hasYear(t)),o(3),d("lucideIcon",n.Hash),o(),b(" ID: ",t.uidCode," "),o(3),d("lucideIcon",n.Eye)}}function Oe(c,e){if(c&1&&(i(0,"div",28),h(1,xe,10,3,"div",29)(2,ye,34,24,"div",30),r()),c&2){let t=g();T("grid-view",t.viewMode==="grid")("list-view",t.viewMode==="list"),o(),d("ngIf",t.getFilteredTokens().length===0),o(),d("ngForOf",t.getFilteredTokens())}}var be=class c{constructor(e,t,n,a){this.assetService=t;this.cdr=n;this.localeService=a;this.router=e}assetService;cdr;localeService;router;Plus=ne;Search=ie;Eye=J;ExternalLink=K;CheckCircle=H;Clock=q;AlertCircle=G;TrendingUp=re;TrendingDown=oe;DollarSign=X;Calendar=Y;Hash=Z;Copy=$;Coins=W;X=ae;Grid3X3=Q;List=ee;Loader2=te;tokensList=[];filteredTokens=[];searchTerm="";selectedStatus="all";selectedCategory="all";sortBy="created";sortOrder="desc";viewMode="grid";isLoading=!0;pidScorePlaceholderPoints=420;totalValue=0;totalTokens=0;activeTokens=0;pendingTokens=0;soldTokens=0;ngOnInit(){this.assetService.getAllAssetsDto().subscribe({next:e=>{console.log("Assets received from backend:",e),console.log("Assets array length:",e.length),this.tokensList=e,this.updateFilteredTokens(),this.calculateStatistics(),this.isLoading=!1,console.log("TokensList updated:",this.tokensList),console.log("TokensList length after update:",this.tokensList.length),this.cdr.detectChanges(),console.log("Change detection executed")},error:e=>{console.error("Error fetching assets:",e),console.error("Error details:",e),this.isLoading=!1}}),this.calculateStatistics()}onFilterChange(){this.updateFilteredTokens()}calculateStatistics(){this.totalTokens=this.tokensList.length,this.activeTokens=this.tokensList.filter(e=>e.status?.toLowerCase()==="active").length,this.pendingTokens=this.tokensList.filter(e=>e.status?.toLowerCase()==="pending"||e.status?.toLowerCase()==="saved").length,this.soldTokens=this.tokensList.filter(e=>e.status?.toLowerCase()==="sold").length}updateFilteredTokens(){let e=this.tokensList;if(this.searchTerm){let t=this.searchTerm.toLowerCase();e=e.filter(n=>n.codeIdentity?.toLowerCase().includes(t)||n.uidCode?.toLowerCase().includes(t)||n.brand?.toLowerCase().includes(t)||n.model?.toLowerCase().includes(t)||n.assetType?.toLowerCase().includes(t)||this.getTokenIdentities(n).some(a=>a.value?.toLowerCase().includes(t)))}this.selectedStatus!=="all"&&(e=e.filter(t=>{let n=t.status?.toLowerCase();switch(this.selectedStatus){case"active":return n==="active";
1case"pending":return n==="pending"||n==="saved"||n==="certification_process";case"sold":return n==="sold";default:return!0}})),this.selectedCategory!=="all"&&(e=e.filter(t=>{let n=t.assetType?.toLowerCase();switch(this.selectedCategory){case"Automotive":return n==="car"||n==="motorcycle"||n==="truck";case"Aircraft":return n==="airplane";case"Marine":return n==="boat";default:return!0}})),e.sort((t,n)=>{let a,l;switch(this.sortBy){case"name":a=this.getAssetTitle(t).toLowerCase(),l=this.getAssetTitle(n).toLowerCase();break;case"created":a=new Date(t.createdAt||"").getTime(),l=new Date(n.createdAt||"").getTime();break;case"status":a=t.status?.toLowerCase()||"",l=n.status?.toLowerCase()||"";break;default:a=new Date(t.createdAt||"").getTime(),l=new Date(n.createdAt||"").getTime()}return this.sortOrder==="asc"?a>l?1:-1:a<l?1:-1}),this.filteredTokens=e}getFilteredTokens(){return this.filteredTokens}getStatusColor(e){switch(e?.toLowerCase()){case"active":return"#10b981";case"pending":case"saved":return"#f59e0b";case"sold":return"#6b7280";case"certification_process":return"#f59e0b";case"awaiting_information":case"awaiting_initial_information":return"#f59e0b";default:return"#6b7280"}}getStatusIcon(e){switch(e?.toLowerCase()){case"active":return this.CheckCircle;case"pending":case"saved":case"awaiting_information":case"awaiting_initial_information":return this.Clock;case"sold":return this.AlertCircle;default:return this.AlertCircle}}getStatusLabel(e){switch(e?.toLowerCase()){case"active":return"Ativo";case"certification_process":return"Em processo de certifica\xE7\xE3o";
1case"pending":return"Pendente";case"saved":return"Salvo";case"sold":return"Vendido";case"transfer_process":return"Em processo de transfer\xEAncia";case"awaiting_information":case"awaiting_initial_information":return"Aguardando informa\xE7\xF5es";default:return e||"Desconhecido"}}getAssetTitle(e){let t=e.brand?.trim()??"",n=e.model?.trim()??"",a=this.getYear(e)?.trim()??"",l=[t,n].filter(x=>x.length>0).join(" ");return l?a?`${l} (${a})`:l:e.status==="CERTIFICATION_PROCESS"?e.codeIdentity?.trim()||e.uidCode||"Em certifica\xE7\xE3o":e.codeIdentity?.trim()||e.uidCode||"Aguardando informa\xE7\xF5es"}getBrandName(e){return this.getAssetTitle(e)}getPlanKind(e){return e.plan==="PRO"?"pro":"essential"}getPlanLabel(e){return this.getPlanKind(e)==="pro"?"Pro":"Essencial"}getPlanExpiresLabel(e){if(this.getPlanKind(e)!=="pro")return"";let t=e.planExpiresAt;if(!t)return"";let n=new Date(t);return Number.isNaN(n.getTime())?"":n.toLocaleDateString("pt-BR")}onImageError(e,t){let n=e.target;n&&(t.imageUri&&!t.imageUri.includes("via.placeholder.com")?n.src=t.imageUri:n.src="../../../assets/images/no-image.jpg")}getPriceChangeIcon(e){return e>=0?this.TrendingUp:this.TrendingDown}getPriceChangeColor(e){return e>=0?"#10b981":"#ef4444"}openTokenDetails(e){if(e.status==="CERTIFICATION_PROCESS"){let t=e.certificationOrderRequestId??"";this.router.navigate(this.localeService.localPath("dashboard","orders","edit",t),{queryParams:{type:"MINT"}})}else this.router.navigate(this.localeService.localPath("dashboard","tokens",e.id?.toString()??""))}copyToClipboard(e){navigator.clipboard.writeText(e).then(()=>{console.log("Copied to clipboard:",e)})}openExplorer(e){let t=`https://etherscan.io/token/${e}`;window.open(t,"_blank")}toggleViewMode(){this.viewMode=this.viewMode==="grid"?"list":"grid"}getPidScorePointsForToken(e){return e.assetScoreSnapshotDto?.scoreTotal??0}getPidScoreTierImagePathForToken(e){let t=this.getPidScorePointsForToken(e);return t>=750?"assets/images/score_ouro.jpg":t>=500?"assets/images/score_prata.jpg":t>=250?"assets/images/score_bronze.jpg":"assets/images/score_baixo.jpg"}getDetailValue(e,t){return e.assetDetailDtoList?e.assetDetailDtoList.find(n=>n.type===t)?.value??"":""}hasDetail(e,t){return e.assetDetailDtoList?e.assetDetailDtoList.some(n=>n.type===t):!1}getTokenIdentities(e){let t=(e.identities??[]).filter(a=>(a.value??"").trim().length>0);if(t.length>0)return t;let n=new Set(Object.values(_e));return(e.assetDetailDtoList??[]).filter(a=>a.type&&n.has(String(a.type))&&a.value?.trim()).map(a=>({type:String(a.type),value:a.value.trim()}))}getIdentityTypeLabel(e){return e?he[e]??e:""}trackByIdentity(e,t){return`${t.type??""}:${t.value??""}`}getYear(e){let t=this.getDetailValue(e,"MANUFACTURE_YEAR");return t||this.getDetailValue(e,"MODEL_YEAR")}hasYear(e){return this.hasDetail(e,"MANUFACTURE_YEAR")||this.hasDetail(e,"MODEL_YEAR")}static \u0275fac=function(t){return new(t||c)(C(R),C(fe),C(A),C(U))};static \u0275cmp=S({type:c,selectors:[["app-tokens"]],decls:42,vars:11,consts:[[1,"tokens-page"],[1,"page-header"],[1,"header-content"],[1,"header-left"],[1,"header-right"],[1,"btn","btn-secondary",3,"click"],["size","16",3,"lucideIcon"],[1,"btn","btn-primary",3,"routerLink"],[1,"filters-section"],[1,"filters-content"],[1,"search-box"],["type","text","placeholder","Buscar por nome, s\xEDmbolo ou placa...",3,"ngModelChange","ngModel"],[1,"filters-row"],[1,"filter-select",3,"ngModelChange","ngModel"],["value","all"],["value","active"],["value","pending"],["value","sold"],["value","created"],["value","name"],["value","status"],[1,"btn","btn-outline",3,"click"],[1,"tokens-section"],["class","loading-state",4,"ngIf"],["class","tokens-container",3,"grid-view","list-view",4,"ngIf"],[1,"loading-state"],[1,"loading-content"],["size","48",1,"loading-spinner",3,"lucideIcon"],[1,"tokens-container"],["class","empty-state text-center",4,"ngIf"],["class","token-card",3,"list-view","click",4,"ngFor","ngForOf"],[1,"empty-state","text-center"],[1,"empty-icon"],["size","64",3,"lucideIcon"],[1,"token-card",3,"click"],[1,"token-image"],[3,"error","src","alt"],["class","token-score-badge","title","Score PID",4,"ngIf"],[1,"token-status"],["size","12",3,"lucideIcon"],[1,"token-content"],[1,"token-header"],[1,"token-header__chips"],[1,"token-symbol"],[1,"token-plan"],[1,"token-plan__name"],["class","token-plan__until",4,"ngIf"],[1,"token-details"],[1,"detail-row"],[1,"detail-label"],[1,"detail-value"],["class","detail-row",4,"ngFor","ngForOf","ngForTrackBy"],["class","detail-row",4,"ngIf"],[1,"token-meta"],[1,"meta-item"],[1,"token-actions"],["title","Ver Detalhes",1,"btn-icon",3,"click"],["title","Score PID",1,"token-score-badge"],["alt","",3,"src"],[1,"token-plan__until"]],template:function(t,n){t&1&&(i(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"h1"),s(5,"Meus PIDs"),r(),i(6,"p"),s(7,"Gerencie todos os seus ativos tokenizados"),r()(),i(8,"div",4)(9,"button",5),f("click",function(){return n.toggleViewMode()}),p(),m(10,"svg",6),s(11),r(),u(),i(12,"button",7),p(),m(13,"svg",6),s(14," Criar PID Agora "),r()()()(),u(),i(15,"div",8)(16,"div",9)(17,"div",10),p(),m(18,"svg",6),u(),i(19,"input",11),y("ngModelChange",function(l){return P(n.searchTerm,l)||(n.searchTerm=l),l}),f("ngModelChange",function(){return n.onFilterChange()}),r()(),i(20,"div",12)(21,"select",13),y("ngModelChange",function(l){return P(n.selectedStatus,l)||(n.selectedStatus=l),l}),f("ngModelChange",function(){return n.onFilterChange()}),i(22,"option",14),s(23,"Todos os Status"),r(),i(24,"option",15),s(25,"Ativos"),r(),i(26,"option",16),s(27,"Pendentes"),r(),i(28,"option",17),s(29,"Vendidos"),r()(),i(30,"select",13),y("ngModelChange",function(l){return P(n.sortBy,l)||(n.sortBy=l),l}),f("ngModelChange",function(){return n.onFilterChange()}),i(31,"option",18),s(32,"Ordenar por Data"),r(),i(33,"option",19),s(34,"Ordenar por Nome"),r(),i(35,"option",20),s(36,"Ordenar por Status"),r()(),i(37,"button",21),f("
1click",function(){return n.sortOrder=n.sortOrder==="asc"?"desc":"asc",n.onFilterChange()}),p(),m(38,"svg",6),r()()()(),u(),i(39,"div",22),h(40,Ce,7,1,"div",23)(41,Oe,3,6,"div",24),r()()),t&2&&(o(10),d("lucideIcon",n.viewMode==="grid"?n.List:n.Grid3X3),o(),b(" ",n.viewMode==="grid"?"Lista":"Grade"," "),o(),d("routerLink",n.localeService.localPath("dashboard","novo-pid")),o(),d("lucideIcon",n.Plus),o(5),d("lucideIcon",n.Search),o(),M("ngModel",n.searchTerm),o(2),M("ngModel",n.selectedStatus),o(9),M("ngModel",n.sortBy),o(8),d("lucideIcon",n.sortOrder==="asc"?n.TrendingUp:n.TrendingDown),o(2),d("ngIf",n.isLoading),o(),d("ngIf",!n.isLoading))},dependencies:[j,z,V,B,N,ue,me,pe,le,ge,ce,de,se,F],styles:[`.tokens-page[_ngcontent-%COMP%]{padding:2rem;background:linear-gradient(135deg,#f8fafc,#e2e8f0);min-height:100vh;position:relative}.tokens-page[_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle cx="10" cy="10" r="1" fill="%231e88e5" opacity="0.05"/></pattern></defs><rect width="100" height="100" fill="url(%23dots)"/></svg>');opacity:.3;pointer-events:none}.page-header[_ngcontent-%COMP%]{margin-bottom:2rem}.header-content[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem}.header-left[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:2rem;font-weight:700;color:#1f2937;margin:0 0 .5rem}.header-left[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#6b7280;margin:0}.header-right[_ngcontent-%COMP%]{display:flex;gap:1rem}.stats-section[_ngcontent-%COMP%]{margin-bottom:2rem}.stats-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.stat-card[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 10px #0000000d;border:1px solid #e5e7eb;display:flex;align-items:center;gap:1rem}.stat-icon[_ngcontent-%COMP%]{width:48px;height:48px;background:linear-gradient(45deg,#1e88e5,#1565c0);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff}.stat-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-size:.875rem;font-weight:600;color:#6b7280;margin:0 0 .5rem;text-transform:uppercase;letter-spacing:.05em}.stat-value[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;color:#1f2937;margin:0 0 .25rem}.stat-subtitle[_ngcontent-%COMP%]{font-size:.875rem;color:#6b7280}.filters-section[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 2px 10px #0000000d;border:1px solid #e5e7eb}.filters-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.search-box[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center}.search-box[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;left:.75rem;color:#9ca3af;z-index:1}.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;padding:.75rem .75rem .75rem 2.5rem;border:1px solid #d1d5db;border-radius:8px;font-size:.875rem;background:#fff}.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{outline:none;border-color:#1e88e5;box-shadow:0 0 0 3px #1e88e51a}.filters-row[_ngcontent-%COMP%]{display:flex;gap:1rem;flex-wrap:wrap}.filter-select[_ngcontent-%COMP%]{padding:.75rem;border:1px solid #d1d5db;border-radius:8px;background:#fff;font-size:.875rem;min-width:150px}.filter-select[_ngcontent-%COMP%]:focus{outline:none;border-color:#1e88e5;box-shadow:0 0 0 3px #1e88e51a}.tokens-section[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 10px #0000000d;border:1px solid #e5e7eb}.tokens-container.grid-view[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.tokens-container.list-view[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.token-card[_ngcontent-%COMP%]{background:#fff;border-radius:16px;border:1px solid rgba(30,136,229,.1);overflow:hidden;transition:all .4s cubic-bezier(.4,0,.2,1);cursor:pointer;position:relative;box-shadow:0 4px 20px #0000000d}.token-card[_ngcontent-%COMP%]:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#1e88e5,#42a5f5,#66bb6a);background-size:200% 100%;animation:_ngcontent-%COMP%_gradientShift 3s ease-in-out infinite}.token-card[_ngcontent-%COMP%]:hover{transform:translateY(-8px) scale(1.02);box-shadow:0 20px 60px #1e88e526;border-color:#1e88e54d}.token-card.list-view[_ngcontent-%COMP%]{display:flex;align-items:center;padding:1.5rem}.token-card.list-view[_ngcontent-%COMP%] .token-image[_ngcontent-%COMP%]{width:100px;height:100px;margin-right:1.5rem;flex-shrink:0;border-radius:12px;overflow:hidden}.token-card.list-view[_ngcontent-%COMP%] .token-content[_ngcontent-%COMP%]{flex:1}.token-card.list-view[_ngcontent-%COMP%] .token-actions[_ngcontent-%COMP%]{margin-left:auto}@keyframes _ngcontent-%COMP%_gradientShift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.token-image[_ngcontent-%COMP%]{position:relative;width:100%;height:200px;overflow:hidden}.token-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.token-score-badge[_ngcontent-%COMP%]{position:absolute;bottom:.5rem;left:.5rem;z-index:2;line-height:0;border-radius:50%;box-shadow:0 1px 4px #0003,0 0 0 1px #ffffff59}.token-score-badge[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{display:block;width:2.75rem;height:2.75rem;object-fit:cover;border-radius:50%}.token-card.list-view[_ngcontent-%COMP%] .token-score-badge[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:2rem;height:2rem}.token-status[_ngcontent-%COMP%]{position:absolute;top:.75rem;right:.75rem;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;color:#fff;display:flex;align-items:center;gap:.25rem}.token-content[_ngcontent-%COMP%]{padding:1.5rem}.token-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.token-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:1.125rem;font-weight:700;color:#1f2937;margin:0;flex:1;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.token-header__chips[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;
1gap:.35rem;flex-shrink:0}.token-symbol[_ngcontent-%COMP%]{background:#e5e7eb;color:#4b5563;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;margin-left:0}.token-plan[_ngcontent-%COMP%]{display:inline-flex;align-items:baseline;flex-wrap:wrap;justify-content:flex-end;gap:.2rem .35rem;max-width:11rem;padding:.2rem .45rem;border-radius:4px;font-size:.6875rem;line-height:1.3}.token-plan[data-plan=essential][_ngcontent-%COMP%]{color:#4b5563;background:#e5e7eb}.token-plan[data-plan=pro][_ngcontent-%COMP%]{color:#0a4475;background:#ddedff}.token-plan__name[_ngcontent-%COMP%]{font-weight:700}.token-plan__until[_ngcontent-%COMP%]{font-weight:500}.token-details[_ngcontent-%COMP%]{margin-bottom:1rem}.detail-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.detail-row[_ngcontent-%COMP%]:last-child{margin-bottom:0}.detail-label[_ngcontent-%COMP%]{font-size:.875rem;color:#6b7280}.detail-value[_ngcontent-%COMP%]{font-size:.875rem;font-weight:600;color:#1f2937}.token-meta[_ngcontent-%COMP%]{display:flex;gap:1rem;margin-bottom:1rem}.meta-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:#6b7280}.token-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.btn-icon[_ngcontent-%COMP%]{background:linear-gradient(135deg,#f8fafc,#e2e8f0);border:1px solid rgba(30,136,229,.1);padding:.75rem;border-radius:10px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);color:#6b7280;margin-right:.5rem;position:relative;overflow:hidden}.btn-icon[_ngcontent-%COMP%]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(30,136,229,.1),transparent);transition:left .5s ease}.btn-icon[_ngcontent-%COMP%]:hover{background:linear-gradient(135deg,#1e88e5,#42a5f5);color:#fff;transform:translateY(-2px);box-shadow:0 8px 25px #1e88e54d;border-color:#1e88e5}.btn-icon[_ngcontent-%COMP%]:hover:before{left:100%}.price-change[_ngcontent-%COMP%]{position:absolute;top:.75rem;left:.75rem;display:flex;align-items:center;gap:.25rem;background:#ffffffe6;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.loading-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;min-height:400px;padding:4rem 2rem}.loading-content[_ngcontent-%COMP%]{text-align:center;color:#6b7280}.loading-spinner[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin 1s linear infinite;color:#1e88e5;margin-bottom:1rem}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:600;color:#1f2937;margin:0 0 .5rem}.loading-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:.875rem}.empty-state[_ngcontent-%COMP%]{padding:4rem 2rem;color:#6b7280}.empty-icon[_ngcontent-%COMP%]{margin-bottom:1rem;opacity:.5}.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:600;color:#1f2937;margin:0 0 .5rem}.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 0 2rem}.modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:2rem}.modal-content[_ngcontent-%COMP%]{background:#fff;border-radius:16px;max-width:800px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 50px #0000004d}.modal-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem;border-bottom:1px solid #e5e7eb}.modal-title-section[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;color:#1f2937;margin:0 0 .5rem}.modal-subtitle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem}.token-symbol-modal[_ngcontent-%COMP%]{background:#e5e7eb;color:#6b7280;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}.status-badge-modal[_ngcontent-%COMP%]{padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;color:#fff;text-transform:uppercase;display:flex;align-items:center;gap:.25rem}.modal-close[_ngcontent-%COMP%]{background:none;border:none;padding:.5rem;border-radius:6px;cursor:pointer;color:#6b7280;transition:all .3s ease}.modal-close[_ngcontent-%COMP%]:hover{background:#f3f4f6;color:#1f2937}.modal-body[_ngcontent-%COMP%]{padding:1.5rem}.modal-hero[_ngcontent-%COMP%]{display:grid;grid-template-columns:300px 1fr;gap:2rem;margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid #e5e7eb}.token-image-modal[_ngcontent-%COMP%]{width:100%;height:200px;border-radius:12px;overflow:hidden;box-shadow:0 8px 25px #0000001a}.token-image-modal[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.quick-stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.quick-stat[_ngcontent-%COMP%]{background:#f8fafc;padding:1.5rem;border-radius:12px;border:1px solid #e5e7eb;text-align:center;transition:all .3s ease}.quick-stat[_ngcontent-%COMP%]:hover{background:#fff;box-shadow:0 4px 20px #00000014;transform:translateY(-2px)}.quick-stat-value[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;color:#1f2937;margin-bottom:.5rem}.quick-stat-label[_ngcontent-%COMP%]{font-size:.875rem;color:#6b7280;font-weight:500}.token-detail-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}.detail-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:1.125rem;font-weight:700;color:#1f2937;margin:0 0 1rem}.detail-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.detail-item[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#f8fafc;border-radius:8px;border:1px solid #e5e7eb}.detail-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.875rem;color:#6b7280;font-weight:600}.detail-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:.875rem;color:#1f2937;font-weight:500}.contract-address[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.75rem;word-break:break-all}.status-badge[_ngcontent-%COMP%]{padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;color:#fff;text-transform:uppercase}.btn[_ngcontent-%COMP%]{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .3s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn-primary[_ngcontent-%COMP%]{background:linear-gradient(45deg,#1e88e5,#1565c0);color:#fff}.btn-primary[_ngcontent-%COMP%]:hover{background:linear-gradient(45deg,#1565c0,#0d47a1);transform:translateY(-2px);box-shadow:0 8px 25px #1e88e566}.btn-secondary[_ngcontent-%COMP%]{background:#fff;color:#6b7280;border:1px solid #d1d5db}.btn-secondary[_ngcontent-%COMP%]:hover{background:#f9fafb;border-color:#9ca3af;color:#1f2937}.btn-outline[_ngcontent-%COMP%]{background:transparent;color:#6b7280;border:1px solid #d1d5db}.btn-outline[_ngcontent-%COMP%]:hover{background:#f9fafb;border-color:#9ca3af;color:#1f2937}@media(max-width:1024px){.token-detail-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.modal-hero[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:1.5rem}.quick-stats[_ngcontent-%COMP%]{grid-template-columns:repeat(4,1fr)}}@media(max-width:768px){.tokens-page[_ngcontent-%COMP%]{padding:1rem}.header-content[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}.header-right[_ngcontent-%COMP%]{justify-content:flex-end}.stats-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.filters-row[_ngcontent-%COMP%]{flex-direction:column}.filter-select[_ngcontent-%COMP%]{min-width:auto}.tokens-container.grid-view[_ngcontent-%COMP%]{grid-template-columns:1fr}.modal-overlay[_ngcontent-%COMP%]{padding:1rem}.modal-content[_ngcontent-%COMP%]{max-height:95vh}.modal-hero[_ngcontent-%COMP%]{grid-template-columns:1fr}.quick-stats[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.token-image-modal[_ngcontent-%COMP%]{height:150px}}@media(max-width:480px){.stats-grid[_ngcontent-%COMP%], .quick-stats[_ngcontent-%COMP%]{grid-template-columns:1fr}.token-card.list-view[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}.token-card.list-view[_ngcontent-%COMP%] .token-image[_ngcontent-%COMP%]{width:100%;height:150px;margin-right:0;margin-bottom:1rem}.token-card.list-view[_ngcontent-%COMP%] .token-actions[_ngcontent-%COMP%]{margin-left:0;justify-content:center}}`]})};export{be as TokensComponent};
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.