1import{a as I}from"./chunk-EJLWXJ6I.js";import{Ca as Se,Ea as Me,c as j,i as ve,n as A,p as R,q as B,r as $,s as U,sa as we,t as ye,y as q}from"./chunk-LYOAGDU5.js";import{E as ue,K as Ce,O as be,V as he,X as Ve,ma as H}from"./chunk-WIIO2GH5.js";import"./chunk-2P63QSXN.js";import"./chunk-CQ7SMRLI.js";import"./chunk-V35GKPIX.js";import"./chunk-WQ4SYNRO.js";import{C as fe,D as _e,E as xe,T as V,b as re,d as le,f as ce,h as se,i as de,n as pe,r as me,t as ge}from"./chunk-XN3FMHFL.js";import"./chunk-GCBYUYLG.js";import{$c as oe,Ab as _,Cb as m,Ea as r,G as ee,Kc as ie,Lc as z,Mc as N,Na as b,Ob as w,Qa as P,Qb as W,Ra as F,Rb as l,Sb as v,Tb as C,Ub as ne,W as te,Wa as g,ba as T,dc as L,ec as Y,f as ze,g as X,ha as x,hb as s,ia as u,ib as a,j as Z,jb as o,kb as p,kc as K,lc as J,ob as O,pb as D,sd as ae,ub as y,ud as k,vd as E,wd as Q}from"./chunk-NSWLEX7O.js";var Ne=ze(Ve());var ke=t=>["/dnc/contacts",t];function $e(t,d){if(t&1){let e=y();a(0,"button",11),_("click",function(){x(e);let n=m();return u(n.navigateToCreate())}),p(1,"em",12),l(2," Upload DNC List "),o()}}function Ue(t,d){if(t&1){let e=y();a(0,"div",13),p(1,"i",14),a(2,"p",15),l(3," No DNC lists yet \u2014 upload your first list to start managing suppressed contacts. "),o(),a(4,"button",16),_("click",function(){x(e);let n=m();return u(n.navigateToCreate())}),p(5,"em",12),l(6," Upload DNC List "),o()()}}function qe(t,d){if(t&1&&(a(0,"div",31),l(1),o()),t&2){let e=m().row;r(),v(e.description)}}function Ge(t,d){if(t&1&&(a(0,"a",29),l(1),o(),g(2,qe,2,1,"div",30)),t&2){let e=d.row;s("routerLink",Y(3,ke,e.id)),r(),v(e.name),r(),s("ngIf",e.description)}}function We(t,d){if(t&1&&(a(0,"span",32),l(1),o()),t&2){let e=d.row,i=m(2);r(),v(i.getTypeLabel(e.type))}}function Ye(t,d){if(t&1&&l(0),t&2){let e=d.value,i=m(2);C(" ",i.formatDateUtilService.formatDate(e)," ")}}function Ke(t,d){if(t&1&&(a(0,"span",33),l(1),o()),t&2){let e=d.row,i=m(2);s("ngClass",i.getStatusClass(e.status)),r(),C(" ",e.status," ")}}function Je(t,d){if(t&1&&(a(0,"div",34),l(1),o()),t&2){let e=m(2);r(),C("",e.dncLists.length," total")}}function Qe(t,d){if(t&1){let e=y();a(0,"a",35),_("click",function(n){let c=x(e).row,f=m(2);return u(f.viewContacts(n,c))}),p(1,"em",36),o(),a(2,"a",37),_("click",function(n){let c=x(e).row,f=m(2);return u(f.downloadDNCList(n,c))}),p(3,"em",38),o(),a(4,"a",39),_("click",function(n){let c=x(e).row,f=m(2);return u(!f.deletingIds.has(c.id)&&f.deleteDNCList(n,c))}),p(5,"em"),o()}if(t&2){let e=d.row,i=m(2);r(4),w("disabled",i.deletingIds.has(e.id)),r(),W(i.deletingIds.has(e.id)?"fa fa-spinner fa-spin":"fa fa-tras
1h")}}function Xe(t,d){if(t&1&&(a(0,"div",17),p(1,"app-loading",18),a(2,"ngx-datatable",19)(3,"ngx-datatable-column",20),g(4,Ge,3,5,"ng-template",21),o(),a(5,"ngx-datatable-column",22),g(6,We,2,1,"ng-template",21),o(),p(7,"ngx-datatable-column",23),a(8,"ngx-datatable-column",24),g(9,Ye,1,1,"ng-template",21),o(),p(10,"ngx-datatable-column",25),a(11,"ngx-datatable-column",26),g(12,Ke,2,2,"ng-template",21),o(),a(13,"ngx-datatable-footer"),g(14,Je,2,1,"ng-template",27),o(),a(15,"ngx-datatable-column",28),g(16,Qe,6,4,"ng-template",21),o()()()),t&2){let e=m();r(),s("loading",e.loading&&e.dncLists.length===0),r(),s("hidden",e.loading&&e.dncLists.length===0)("rowHeight","auto")("columnMode","force")("scrollbarH",!1)("headerHeight",50)("footerHeight",50)("rows",e.dncLists)("externalPaging",!1)("messages",e.tableMessages),r(13),s("sortable",!1)("maxWidth",110)}}function Ze(t,d){if(t&1&&(a(0,"p",55),l(1),o()),t&2){let e=m().$implicit;r(),v(e.description)}}function et(t,d){if(t&1){let e=y();a(0,"div",44)(1,"div",45)(2,"a",46),l(3),o(),a(4,"span",33),l(5),o()(),g(6,Ze,2,1,"p",47),a(7,"div",48),p(8,"i",49),l(9),o(),a(10,"div",50)(11,"span",32),l(12),o(),a(13,"span",51),l(14),o()(),a(15,"div",52),_("click",function(n){return x(e),u(n.stopPropagation())}),a(16,"a",53),_("click",function(n){let c=x(e).$implicit,f=m(3);return u(f.viewContacts(n,c))}),p(17,"em",36),o(),a(18,"a",53),_("click",function(n){let c=x(e).$implicit,f=m(3);return u(f.downloadDNCList(n,c))}),p(19,"em",38),o(),a(20,"a",54),_("click",function(n){let c=x(e).$implicit,f=m(3);return u(!f.deletingIds.has(c.id)&&f.deleteDNCList(n,c))}),p(21,"em"),o()()()}if(t&2){let e=d.$implicit,i=m(3);r(2),s("routerLink",Y(12,ke,e.id)),r(),v(e.name),r(),s("ngClass",i.getStatusClass(e.status)),r(),C(" ",e.status," "),r(),s("ngIf",e.description),r(3),C(" ",i.formatDateUtilService.formatDate(e.createdAt)," "),r(3),v(i.getTypeLabel(e.type)),r(2),C("",e.contactsCount," contacts"),r(6),w("disabled",i.deletingIds.has(e.id)),r(),W(i.deletingIds.has(e.id)?"fa fa-spinner fa-spin":"fa fa-tras
1h")}}function tt(t,d){t&1&&(a(0,"div",56),l(1,"No DNC lists yet."),o())}function nt(t,d){if(t&1&&(O(0),g(1,et,22,14,"div",42)(2,tt,2,0,"div",43),D()),t&2){let e=m(2);r(),s("ngForOf",e.dncLists),r(),s("ngIf",e.dncLists.length===0)}}function it(t,d){if(t&1&&(O(0),a(1,"div",40),p(2,"app-loading",41),g(3,nt,3,2,"ng-container",10),o(),D()),t&2){let e=m();r(2),s("loading",e.loading&&e.dncLists.length===0),r(),s("ngIf",!e.loading||e.dncLists.length>0)}}var Ee=(()=>{class t{constructor(e,i,n,c){this.dncService=e,this.router=i,this.toastr=n,this.formatDateUtilService=c,this.dncLists=[],this.loading=!1,this.showCreateBtn=!1,this.deletingIds=new Set,this.screenSmall=q.screenSmall,this.tableMessages={emptyMessage:'No DNC lists yet. Click "+ Upload DNC List" to get started.'}}ngOnInit(){this.loadDNCLists()}loadDNCLists(){this.loading=!0,this.dncService.getDNCLists().subscribe({next:e=>{this.dncLists=e,this.showCreateBtn=e.length>0,this.loading=!1},error:e=>{this.loading=!1,this.toastr.error("Failed to load DNC lists")}})}navigateToCreate(){this.router.navigate(["/dnc/create"])}viewContacts(e,i){e.stopPropagation(),this.router.navigate(["/dnc/contacts",i.id])}downloadDNCList(e,i){e.stopPropagation(),this.dncService.getDownloadUrl(i.id).subscribe({next:n=>{window.open(n.url,"_blank")},error:n=>{this.toastr.error("Failed to generate download link")}})}escapeHtml(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}deleteDNCList(e,i){e.stopPropagation();let n=this.getTypeLabel(i.type),c=this.escapeHtml(i.name);Ne.default.fire({title:"Delete DNC List?",html:` 2 <p>Removing "<strong>${c}</strong>" will allow ${n} to be sent to all contacts on this list.</p> 3 <p style="font-size:12px;color:#6b7280;margin-top:12px;">Note: Contacts might be locked by multiple DNC lists, thus a contact may remain locked even after removing "${c}" list.</p> 4 `,icon:"warning",showCancelButton:!0,confirmButtonText:"Yes, delete it.",confirmButtonColor:"btn-danger"}).then(f=>{if(f.value){if(this.deletingIds.has(i.id))return;this.deletingIds.add(i.id),this.dncService.deleteDNCList(i.id).subscribe({next:()=>{this.dncLists=this.dncLists.filter(h=>h.id!==i.id),this.showCreateBtn=this.dncLists.length>0,this.deletingIds.delete(i.id),this.toastr.success(`"${i.name}" deleted successfully. Contacts DNC status will be updated after a few seconds.`)},error:()=>{this.deletingIds.delete(i.id),this.toastr.error("Failed to delete DNC list")}})}})}getStatusClass(e){switch(e){case"ACTIVE":return"status-active";case"PROCESSING":return"status-processing";case"FAILED":return"status-failed";default:return""}}getTypeLabel(e){switch(e){case"SMS":return"SMS";case"EMAIL":return"Email";case"BOTH":return"SMS & Email";default:return e}}static{this.\u0275fac=function(i){return new(i||t)(b(I),b(k),b(V),b(j))}}static{this.\u0275cmp=P({type:t,selectors:[["app-dnc-list"]],standalone:!1,decls:11,vars:4,consts:[[1,"dnc-page"],["icon","fa fa-ban","title","DNC Lists","subtitle","Manage your Do Not Contact lists."],["actions","","class","dnc-create-btn",3,"click",4,"ngIf"],[1,"container-fluid","p-0"],[1,"row"],[1,"col-sm-12"],[1,"card"],[1,"card-body"],["class","cl-empty-state",4,"ngIf"],["class","custom-datatable",4,"ngIf"],[4,"ngIf"],["actions","",1,"dnc-create-btn",3,"click"],[1,"fa","fa-plus"],[1,"cl-empty-state"],[1,"fa","fa-ban","cl-empty-icon"],[1,"cl-empty-msg"],["type","button",1,"create-campaign-btn",3,"click"],[1,"custom-datatable"],["text","Loading...",3,"loading"],[1,"bootstrap","material",3,"hidden","rowHeight","columnMode","scrollbarH","headerHeight","footerHeight","rows","externalPaging","messages"],["prop","name","name","Name"],["ngx-datatable-cell-template",""],["prop","type","name","Type"],["prop","fileName","name","File Name"],["prop","createdAt","name","Uploaded At"],["prop","contactsCount","name","Contacts"],["prop","status","name","Status"],["ngx-datatable-footer-template",""],["name","",3,"sortable","maxWidth"],[1,"dnc-name-link",3,"routerLink"],["class","text-muted small",4,"ngIf"],[1,"text-muted","small"],[1,"type-badge"],[1,"status-badge",3,"ngClass"],[1,"dnc-footer-count"],["ngbTooltip","View Contacts","placement","left",1,"row-action-btn",3,"click"],[1,"fa","fa-eye"],["ngbTooltip","Download","placement","left",1,"row-action-btn",3,"click"],[1,"fa","fa-download"],["ngbTooltip","Delete","placement","left",1,"row-action-btn","danger",3,"click"],[1,"mob-list"],["variant","mobile","text","Loading\u2026",3,"loading"],["class","mob-card",4,"ngFor","ngForOf"],["class","mob-empty",4,"ngIf"],[1,"mob-card"],[1,"mob-card-top"],[1,"mob-card-name","dnc-name-link",3,"routerLink"],["class","mob-card-msg",4,"ngIf"],[1,"mob-card-date"],[1,"fa","fa-clock-o"],[1,"mob-card-chips"],[1,"result-chip"],[1,"mob-card-actions",3,"click"],[1,"row-action-btn",3,"click"],[1,"row-action-btn","danger",3,"click"],[1,"mob-card-msg"],[1,"mob-empty"]],template:function(i,n){i&1&&(a(0,"div",0)(1,"app-page-header",1),g(2,$e,3,0,"button",2),o(),a(3,"div",3)(4,"div",4)(5,"div",5)(6,"div",6)(7,"div",7),g(8,Ue,7,0,"div",8)(9,Xe,17,12,"div",9)(10,it,4,2,"ng-container",10),o()()()()()()),i&2&&(r(2),s("ngIf",n.showCreateBtn),r(6),s("ngIf",!n.screenSmall&&!n.loading&&n.dncLists.length===0),r(),s("ngIf",!n.screenSmall&&(n.loading||n.dncLists.length>0)),r(),s("ngIf",n.screenSmall))},dependencies:[ie,z,N,U,B,R,A,$,Ce,H,Se,E],styles:[".dnc-page[_ngcontent-%COMP%]{padding:28px 32px;width:100%}@media (max-width: 575px){.dnc-page[_ngcontent-%COMP%]{padding:16px 14px}}.dnc-create-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;padding:8px 18px;background:#4f6ef7;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s ease}.dnc-create-btn[_ngcontent-%COMP%]:hover{background:#3b5be3;color:#fff}.cl-empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;text-align:center;border:1px solid #e5e7eb;border-radius:10px;background:#fff}.cl-empty-icon[_ngcontent-%COMP%]{font-size:40px;color:#d1d5db;margin-bottom:16px}.cl-empty-msg[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;max-width:420px;line-height:1.6;margin:0 0 20px}.create-campaign-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;padding:8px 18px;background:#4f6ef7;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;text-decoration:none;cursor:pointer;transition:background .15s ease}.create-campaign-btn[_ngcontent-%COMP%]:hover{background:#3b5be3;color:#fff}.row-action-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;font-size:13px;color:#4f6ef7;transition:background .15s ease,color .15s ease;cursor:pointer;text-decoration:none}.row-action-btn[_ngcontent-%COMP%]:hover{background:#eff2ff;text-decoration:none}.row-action-btn.danger[_ngcontent-%COMP%]{color:#dc2626}.row-action-btn.danger[_ngcontent-%COMP%]:hover{background:#fee2e2}.type-badge[_ngcontent-%COMP%]{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:500;background:#e7f3ff;color:#06c}.status-badge[_ngcontent-%COMP%]{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:500}.status-badge.status-active[_ngcontent-%COMP%]{background:#d4edda;color:#155724}.status-badge.status-processing[_ngcontent-%COMP%]{background:#fff3cd;color:#856404}.status-badge.status-failed[_ngcontent-%COMP%]{background:#f8d7da;color:#721c24}.dnc-footer-count[_ngcontent-%COMP%]{padding:0 16px;font-size:13px;color:#6b7280}.mob-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px;padding:4px 0}.mob-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;
4transition:box-shadow .15s ease,border-color .15s ease}.mob-card-top[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mob-card-name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:#111827;flex:1;min-width:0}.mob-card-msg[_ngcontent-%COMP%]{margin:0;font-size:13px;color:#6b7280;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mob-card-date[_ngcontent-%COMP%]{display:flex;align-items:center;gap:5px;font-size:12px;color:#9ca3af}.mob-card-date[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:11px}.mob-card-chips[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.result-chip[_ngcontent-%COMP%]{display:inline-block;padding:3px 10px;border-radius:10px;font-size:11px;font-weight:500;background:#f3f4f6;color:#6b7280}.mob-card-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding-top:4px;border-top:1px solid #f3f4f6;margin-top:2px}.mob-empty[_ngcontent-%COMP%]{padding:32px 16px;text-align:center;color:#9ca3af;font-size:14px}"]})}}return t})();var Ie=()=>["/dnc"];function ot(t,d){t&1&&(a(0,"div",38),p(1,"i",39),l(2," Name is required "),o())}function at(t,d){t&1&&(a(0,"div",38),p(1,"i",39),l(2," Select at least one type "),o())}function rt(t,d){if(t&1){let e=y();a(0,"div",40),p(1,"i",41),a(2,"p",42),l(3,"Drag and drop your CSV file here"),o(),a(4,"p",43),l(5,"or"),o(),a(6,"label",44),p(7,"i",45),l(8," Browse Files "),o(),a(9,"input",46),_("change",function(n){x(e);let c=m();return u(c.onFileSelected(n))}),o(),a(10,"p",47),l(11,"CSV files only, max 50MB"),o()()}}function lt(t,d){if(t&1){let e=y();a(0,"div",48)(1,"div",49),p(2,"i",50),o(),a(3,"div",51)(4,"div",52),l(5),o(),a(6,"div",53),l(7),o()(),a(8,"button",54),_("click",function(){x(e);let n=m();return u(n.removeFile())}),p(9,"i",55),o()()}if(t&2){let e=m();r(5),v(e.selectedFile.name),r(2),v(e.formatFileSize(e.selectedFile.size))}}function ct(t,d){t&1&&(a(0,"div",38),p(1,"i",39),l(2," CSV file is required "),o())}var Le=(()=>{class t{static{this.HEADER_PATTERNS={first_name:/^first[-_\s]?name$/i,last_name:/^last[-_\s]?name$/i,phone:/^((first|primary)[-_\s]?)?phone([-_\s]?number)?([-_\s]?1)?$/i,email:/^email([-_\s]?address)?([-_\s]?1)?$/i}}constructor(e,i,n,c){this.fb=e,this.dncService=i,this.router=n,this.toastr=c,this.selectedFile=null,this.totalContacts=0,this.uploading=!1,this.submitted=!1,this.dragOver=!1,this.csvHeaders=[],this.csvHeaderPromise=Promise.resolve(),this.csvRowCountPromise=Promise.resolve(),this.destroy$=new Z,this.dncForm=this.fb.group({name:["",ce.required],description:[""],typeSms:[!1],typeEmail:[!1]})}ngOnInit(){}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}onFileSelected(e){let i=e.target.files[0];i&&this.validateAndSetFile(i)}onFileDrop(e){e.preventDefault(),e.stopPropagation(),this.dragOver=!1;let i=e.dataTransfer?.files;i&&i.length>0&&this.validateAndSetFile(i[0])}onDragOver(e){e.preventDefault(),e.stopPropagation(),this.dragOver=!0}onDragLeave(e){e.preventDefault(),e.stopPropagation(),this.dragOver=!1}validateAndSetFile(e){if(!e.name.toLowerCase().endsWith(".csv")){this.toastr.error("Only CSV files are allowed");return}let i=50*1024*1024;if(e.size>i){this.toastr.error("File size must be less than 50MB");return}this.selectedFile=e,this.readCsvHeader(e),this.countCsvRows(e)}readCsvHeader(e){this.csvHeaderPromise=new Promise(i=>{let n=new FileReader;n.onload=c=>{let h=(c.target.result.split(` 5`)[0]??"").replace(/^/,""),S=h.split(",").length>=h.split(";").length?",":";";this.csvHeaders=h.split(S).map(M=>M.trim().replace(/^"|"$/g,"")),i()},n.readAsText(e.slice(0,2048))})}countCsvRows(e){this.csvRowCountPromise=new Promise(i=>{let n=new FileReader;n.onload=c=>{let h=c.target.result.split(` 6`).filter(S=>S.trim().length>0);this.totalContacts=h.length>0?h.length-1:0,i()},n.onerror=()=>{this.totalContacts=0,i()},n.readAsText(e)})}removeFile(){this.selectedFile=null,this.totalContacts=0,this.csvHeaders=[]}hasHeader(e){let i=t.HEADER_PATTERNS[e];return this.csvHeaders.some(n=>i.test(n))}validateCsvHeaders(e,i){let n=[];return this.hasHeader("first_name")||n.push("first_name"),this.hasHeader("last_name")||n.push("last_name"),e&&!this.hasHeader("phone")&&n.push("phone"),i&&!this.hasHeader("email")&&n.push("email"),n}onSubmit(){return X(this,null,function*(){if(this.submitted=!0,this.uploading)return;
6if(this.dncForm.invalid){this.toastr.error("Please fill in all required fields");return}if(!this.selectedFile){this.toastr.error("Please select a CSV file");return}let e=this.dncForm.get("typeSms")?.value,i=this.dncForm.get("typeEmail")?.value;if(!e&&!i){this.toastr.error("Please select at least one type (Email or SMS)");return}let n=e&&i?"BOTH":e?"SMS":"EMAIL",c=this.dncForm.get("name")?.value,f=this.dncForm.get("description")?.value||null;yield Promise.all([this.csvHeaderPromise,this.csvRowCountPromise]);let h=this.validateCsvHeaders(e,i);if(h.length>0){this.toastr.error(`The CSV is missing required column(s): ${h.join(", ")}`,"Invalid CSV format");return}this.uploading=!0,this.dncForm.disable(),this.dncService.createDNCList(c,f,n,this.selectedFile,this.totalContacts).pipe(ee(1),te(this.destroy$)).subscribe({next:()=>{this.toastr.success("DNC list created successfully"),this.router.navigate(["/dnc"])},error:S=>{this.toastr.error("Failed to create DNC list. Please try again."),this.uploading=!1,this.dncForm.enable()}})})}cancel(){this.router.navigate(["/dnc"])}formatFileSize(e){if(e===0)return"0 Bytes";let i=1024,n=["Bytes","KB","MB","GB"],c=Math.floor(Math.log(e)/Math.log(i));return Math.round(e/Math.pow(i,c)*100)/100+" "+n[c]}static{this.\u0275fac=function(i){return new(i||t)(b(fe),b(I),b(k),b(V))}}static{this.\u0275cmp=P({type:t,selectors:[["app-dnc-create"]],standalone:!1,decls:79,vars:20,consts:[[1,"dc-page"],[1,"dc-topbar"],[1,"dc-nav"],[1,"dc-back-btn",3,"routerLink"],[1,"fa","fa-arrow-left"],[1,"dc-title"],[1,"dc-sub"],[3,"routerLink"],[1,"dc-sep"],["type","button",1,"dc-upload-btn",3,"click","disabled"],[1,"fa","fa-cloud-upload"],[1,"dc-body"],[1,"dc-form",3,"formGroup"],[1,"dc-layout"],[1,"dc-panel"],[1,"dc-panel-header"],[1,"dc-panel-icon"],[1,"fa","fa-cog"],[1,"dc-panel-body"],[1,"dc-field"],["for","name",1,"dc-label"],["id","name","type","text","formControlName","name","placeholder","e.g. Global DNC List, Summer Campaign Opt-outs...",1,"dc-input"],["class","dc-error-msg",4,"ngIf"],[1,"dc-label"],[1,"dc-type-grid"],[1,"dc-type-opt"],["type","checkbox","id","typeEmail","formControlName","typeEmail"],[1,"fa","fa-envelope-o"],["type","checkbox","id","typeSms","formControlName","typeSms"],[1,"fa","fa-comment-o"],["for","description",1,"dc-label"],["id","description","formControlName","description","placeholder","Add notes or context about this DNC list...","rows","3",1,"dc-input","dc-input--textarea"],[1,"fa","fa-upload"],[1,"dc-file-upload",3,"drop","dragover","dragleave"],["class","dc-upload-empty",4,"ngIf"],["class","dc-file-selected",4,"ngIf"],[1,"dc-notice","dc-notice--info"],[1,"fa","fa-info-circle"],[1,"dc-error-msg"],[1,"fa","fa-exclamation-circle"],[1,"dc-upload-empty"],[1,"fa","fa-cloud-upload","dc-upload-icon"],[1,"dc-upload-text"],[1,"dc-upload-or"],["for","fileInput",1,"dc-browse-btn"],[1,"fa","fa-folder-open"],["type","file","id","fileInput","accept",".csv",2,"display","none",3,"change"],[1,"dc-upload-hint"],[1,"dc-file-selected"],[1,"dc-file-icon"],[1,"fa","fa-file-text-o"],[1,"dc-file-details"],[1,"dc-file-name"],[1,"dc-file-size"],["type","button",1,"dc-file-remove",3,"click"],[1,"fa","fa-times"]],template:function(i,n){if(i&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"a",3),p(4,"i",4),o(),a(5,"div")(6,"h1",5),l(7,"Create New DNC"),o(),a(8,"p",6)(9,"a",7),l(10,"DNC"),o(),a(11,"span",8),l(12,"\u203A"),o(),l(13," Create New DNC "),o()()(),a(14,"button",9),_("click",function(){return n.onSubmit()}),p(15,"i",10),l(16),o()(),a(17,"div",11)(18,"form",12)(19,"div",13)(20,"div",14)(21,"div",15)(22,"span",16),p(23,"i",17),o(),l(24," DNC Configuration "),o(),a(25,"div",18)(26,"div",19)(27,"label",20),l(28,"List Name"),o(),p(29,"input",21),g(30,ot,3,0,"div",22),o(),a(31,"div",19)(32,"label",23),l(33,"Suppression Type"),o(),a(34,"div",24)(35,"label",25),p(36,"input",26)(37,"i",27),l(38," Email "),o(),a(39,"label",25),p(40,"input",28)(41,"i",29),l(42," SMS "),o()(),g(43,at,3,0,"div",22),o(),a(44,"div",19)(45,"label",30),l(46,"Description (Optional)"),o(),p(47,"textarea",31),o()()(),a(48,"div",14)(49,"div",15)(50,"span",16),p(51,"i",32),o(),l(52," CSV File Upload "),o(),a(53,"div",18)(54,"div",19)(55,"label",23),l(56,"Select File"),o(),a(57,"div",33),_("drop",function(f){return n.onFileDrop(f)})("dragover",function(f){return n.onDragOver(f)})("dragleave",function(f){return n.onDragLeave(f)}),g(58,rt,12,0,"div",34)(59,lt,10,2,"div",35),o(),g(60,ct,3,0,"div",22),o(),a(61,"div",36),p(62,"i",37),a(63,"div")(64,"strong"),l(65,"CSV Format:"),o(),l(66," Your CSV file should contain one contact per row with "),a(67,"code"),l(68,"first_name"),o(),l(69," and "),a(70,"code"),l(71,"last_name"),o(),l(72," columns. For Email DNC lists, include an "),a(73,"code"),l(74,"email"),o(),l(75," column. For SMS DNC lists, include a "),a(76,"code"),l(77,"phone"),o(),l(78," column. Contacts not found will be created automatically. "),o()()()()()()()()),i&2){let c,f,h,S,M;r(3),s("routerLink",L(18,Ie)),r(6),s("routerLink",L(19,Ie)),r(5),s("disabled",n.uploading||n.dncForm.invali
6d),r(2),C(" ",n.uploading?"Uploading...":"Upload DNC List"," "),r(2),s("formGroup",n.dncForm),r(11),w("dc-input--error",n.submitted&&((c=n.dncForm.get("name"))==null?null:c.errors)),r(),s("ngIf",n.submitted&&((f=n.dncForm.get("name"))==null?null:f.errors)),r(5),w("dc-type-opt--active",(h=n.dncForm.get("typeEmail"))==null?null:h.value),r(4),w("dc-type-opt--active",(S=n.dncForm.get("typeSms"))==null?null:S.value),r(4),s("ngIf",n.submitted&&!((M=n.dncForm.get("typeEmail"))!=null&&M.value)&&!((M=n.dncForm.get("typeSms"))!=null&&M.value)),r(14),w("dc-file-upload--drag",n.dragOver),r(),s("ngIf",!n.selectedFile),r(),s("ngIf",n.selectedFile),r(),s("ngIf",n.submitted&&!n.selectedFile)}},dependencies:[N,pe,le,re,se,de,me,ge,E],styles:[".dc-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-height:calc(100vh - 85px)}.dc-topbar[_ngcontent-%COMP%]{display:flex;align-items:center;padding:14px 24px;background:#fff;border-bottom:1px solid #e5e7eb;flex-shrink:0}.dc-nav[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex:1}.dc-back-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1.5px solid #e5e7eb;background:#fff;color:#6b7280;font-size:14px;text-decoration:none;flex-shrink:0;transition:background .15s ease,color .15s ease}.dc-back-btn[_ngcontent-%COMP%]:hover{background:#f3f4f6;color:#374151;text-decoration:none}.dc-title[_ngcontent-%COMP%]{font-size:15px;font-weight:700;color:#111827;margin:0;line-height:1.2}.dc-sub[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;margin:2px 0 0}.dc-sub[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#4f6ef7;text-decoration:none}.dc-sub[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.dc-sep[_ngcontent-%COMP%]{margin:0 4px;color:#d1d5db}.dc-upload-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;background:#4f6ef7;border:1.5px solid #4f6ef7;border-radius:8px;color:#fff;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s ease,border-color .15s ease;flex-shrink:0}.dc-upload-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:#3b5bef;border-color:#3b5bef}.dc-upload-btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.dc-body[_ngcontent-%COMP%]{flex:1;padding:24px;background:#f9fafb}.dc-form[_ngcontent-%COMP%]{display:flex;flex-direction:column}.dc-layout[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}@media (max-width: 900px){.dc-layout[_ngcontent-%COMP%]{grid-template-columns:1fr}}.dc-panel[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:14px;overflow:hidden;display:flex;flex-direction:column}.dc-panel-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:14px 20px;font-size:13px;font-weight:700;color:#374151;background:#f9fafb;border-bottom:1px solid #e5e7eb}.dc-panel-icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;background:#eff2ff;color:#4f6ef7;font-size:13px;flex-shrink:0}.dc-panel-body[_ngcontent-%COMP%]{padding:20px;display:flex;flex-direction:column;gap:18px;flex:1}.dc-field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.dc-label[_ngcontent-%COMP%]{font-size:12px;font-weight:600;color:#374151;margin:0;text-transform:uppercase;letter-spacing:.04em}.dc-input[_ngcontent-%COMP%]{width:100%;padding:9px 13px;border:1.5px solid #d1d5db;border-radius:8px;font-size:14px;color:#111827;background:#fff;transition:border-color .2s ease,box-shadow .2s ease}.dc-input[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f6ef7;box-shadow:0 0 0 3px #4f6ef71a}.dc-input--textarea[_ngcontent-%COMP%]{resize:vertical}.dc-input--error[_ngcontent-%COMP%]{border-color:#ef4444}.dc-error-msg[_ngcontent-%COMP%]{font-size:12px;color:#dc2626;display:flex;align-items:center;gap:4px}.dc-type-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.dc-type-opt[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 8px;border:1.5px solid #e5e7eb;border-radius:10px;background:#fff;font-size:12px;font-weight:600;color:#6b7280;cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease}.dc-type-opt[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{display:none}.dc-type-opt[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:18px}.dc-type-opt[_ngcontent-%COMP%]:hover{border-color:#c7d2fe;background:#f5f7ff;color:#4f6ef7}.dc-type-opt--active[_ngcontent-%COMP%]{border-color:#4f6ef7;background:#eff2ff;color:#4f6ef7}.dc-file-upload[_ngcontent-%COMP%]{border:2px dashed #d1d5db;border-radius:10px;padding:32px 20px;background:#fafbfc;text-align:center;transition:border-color .2s ease,background .2s ease}.dc-file-upload--drag[_ngcontent-%COMP%]{border-color:#4f6ef7;background:#eff2ff}.dc-upload-empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:8px}.dc-upload-icon[_ngcontent-%COMP%]{font-size:42px;color:#9ca3af;margin-bottom:4px}.dc-upload-text[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#374151;margin:0}.dc-upload-or[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;margin:0}.dc-browse-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;background:#fff;border:1.5px solid #d1d5db;border-radius:7px;color:#374151;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.dc-browse-btn[_ngcontent-%COMP%]:hover{background:#f3f4f6;border-color:#9ca3af}.dc-upload-hint[_ngcontent-%COMP%]{font-size:11px;color:#9ca3af;margin:4px 0 0}.dc-file-selected[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;padding:14px 16px;background:#fff;border-radius:8px;border:1px solid #e5e7eb}.dc-file-icon[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#eff2ff;border-radius:8px;color:#4f6ef7;font-size:20px;flex-shrink:0}.dc-file-details[_ngcontent-%COMP%]{flex:1;min-width:0;text-align:left}
6.dc-file-name[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#111827;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dc-file-size[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.dc-file-remove[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:7px;background:#fff;color:#dc2626;font-size:16px;cursor:pointer;transition:background .15s ease;flex-shrink:0}.dc-file-remove[_ngcontent-%COMP%]:hover{background:#fee2e2}.dc-notice[_ngcontent-%COMP%]{display:flex;gap:10px;padding:12px 14px;border-radius:9px;font-size:12px;line-height:1.5}.dc-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{flex-shrink:0;margin-top:1px}.dc-notice[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#fff9;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:11px;font-weight:600}.dc-notice--info[_ngcontent-%COMP%]{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.dc-notice--info[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{color:#3b82f6}"]})}}return t})();var st=()=>["/dnc"];function dt(t,d){if(t&1&&(a(0,"div",16)(1,"span",17),p(2,"i",18),l(3),o(),a(4,"span",19),p(5,"i",20),l(6),o()()),t&2){let e=m();r(3),C(" ",e.getTypeLabel(e.dncList.type)," "),r(3),C(" ",e.dncList.contactsCount," contacts ")}}function pt(t,d){if(t&1&&(a(0,"div",21),p(1,"i",22),l(2),o()),t&2){let e=m();r(2),C(" ",e.dncList.description," ")}}function mt(t,d){t&1&&(a(0,"div",23),p(1,"i",24),a(2,"p",25),l(3," No contacts found in this DNC list. "),o()())}function gt(t,d){if(t&1&&(a(0,"span",37),l(1),K(2,"phoneMask"),o()),t&2){let e=d.row;r(),v(J(2,1,e==null?null:e.phone))}}function ft(t,d){if(t&1&&(O(0),l(1),D()),t&2){let e=m().value,i=m(2);r(),v(i.dateUtilService.formatDate(e))}}function _t(t,d){if(t&1&&g(0,ft,2,1,"ng-container",38),t&2){let e=d.value;s("ngIf",e)}}function xt(t,d){if(t&1&&l(0),t&2){let e=d.value,i=m(2);C(" ",i.dateUtilService.formatDate(e)," ")}}function ut(t,d){if(t&1){let e=y();a(0,"app-custom-table-pager",39),_("changePage",function(n){x(e);let c=m(2);return u(c.setPage(n))}),o()}if(t&2){let e=m(2);s("page",e.page)("total",e.page.totalElements)("curPage",e.page.number)}}function Ct(t,d){if(t&1){let e=y();a(0,"div",26),p(1,"app-loading",27),a(2,"ngx-datatable",28),_("sort",function(n){x(e);let c=m();return u(c.setSort(n))})("activate",function(n){x(e);let c=m();return u(c.onActivate(n))}),p(3,"ngx-datatable-column",29)(4,"ngx-datatable-column",30),a(5,"ngx-datatable-column",31),g(6,gt,3,3,"ng-template",32),o(),p(7,"ngx-datatable-column",33),a(8,"ngx-datatable-column",34),g(9,_t,1,1,"ng-template",32),o(),a(10,"ngx-datatable-column",35),g(11,xt,1,1,"ng-template",32),o(),a(12,"ngx-datatable-footer"),g(13,ut,1,3,"ng-template",36),o()()()}if(t&2){let e=m();r(),s("loading",e.loading&&e.rows.length===0),r(),s("hidden",e.loading&&e.rows.length===0)("rows",e.rows)("columnMode","force")("scrollbarH",!1)("headerHeight",44)("footerHeight",52)("rowHeight","auto")("rowClass",e.getRowClass)("externalPaging",!1)}}function bt(t,d){if(t&1&&(a(0,"span",53),p(1,"i",54),l(2),K(3,"phoneMask"),o()),t&2){let e=m().$implicit;r(2),C(" ",J(3,1,e.phone))}}function ht(t,d){if(t&1&&(a(0,"span",55),p(1,"i",56),l(2),o()),t&2){let e=m().$implicit;r(2),C(" ",e.email)}}function vt(t,d){if(t&1&&(a(0,"div",57),p(1,"i",58),l(2),o()),t&2){let e=m().$implicit,i=m(3);r(2),C(" ",i.dateUtilService.formatDate(e.createdAt)," ")}}function yt(t,d){if(t&1){let e=y();a(0,"div",46),_("click",function(){let n=x(e).$implicit,c=m(3);return u(c.onActivate({type:"click",row:n}))}),a(1,"div",47)(2,"span",48),l(3),o()(),a(4,"div",49),g(5,bt,4,3,"span",50)(6,ht,3,1,"span",51),o(),g(7,vt,3,1,"div",52),o()}if(t&2){let e=d.$implicit;r(3),ne("",e.firstName," ",e.lastName),r(2),s("ngIf",e.phone),r(),s("ngIf",e.email),r(),s("ngIf",e.createdAt)}}function wt(t,d){t&1&&(a(0,"div",59),l(1," No contacts found. "),o())}function St(t,d){if(t&1){let e=y();a(0,"div",60)(1,"ngb-pagination",61),_("pageChange",function(n){x(e);let c=m(3);return u(c.setPage({offset:n-1}))}),o()()}if(t&2){let e=m(3);r(),s("collectionSize",e.page.totalElements)("pageSize",e.page.size)("page",e.page.number+1)("maxSize",5)("rotate",!0)("ellipses",!0)}}function Mt(t,d){if(t&1&&(O(0),a(1,"div",42),g(2,yt,8,5,"div",43)(3,wt,2,0,"div",44),o(),g(4,St,2,6,"div",45),D()),t&2){let e=m(2);r(2),s("ngForOf",e.rows),r(),s("ngIf",e.rows.length===0),r(),s("ngIf",e.page.totalElements>e.page.size)}}function Pt(t,d){if(t&1&&(a(0,"div",40),p(1,"app-loading",41),g(2,Mt,5,3,"ng-container",38),o()),t&2){let e=m();r(),s("loading",e.loading&&e.rows.length===0),r(),s("ngIf",!e.loading||e.rows.length>0)}}var Te=(()=>{class t{constructor(e,i,n,c){this.route=e,this.router=i,this.dncService=n,this.dateUtilService=c,this.dncList=null,this.rows=[],this.page=new he,this.loading=!1,this.screenSmall=q.screenSmall,this.getRowClass=()=>({"pointer-link":!0}),this.page.sortby="firstName",this.page.sortOrder="asc",this.page.number=0,this.page.size=20}
6ngOnInit(){this.dncListId=parseInt(this.route.snapshot.paramMap.get("id"),10),this.loadDNCList(),this.loadContacts()}loadDNCList(){this.dncService.getDNCListById(this.dncListId).subscribe({next:e=>{this.dncList=e},error:e=>{console.error("Error loading DNC list:",e),this.router.navigate(["/dnc"])}})}loadContacts(){this.loading=!0,this.dncService.getDNCListContacts(this.dncListId,this.page).subscribe({next:e=>{this.rows=e.content,this.page.size=e.size,this.page.number=e.number,this.page.totalElements=e.totalElements,this.page=Object.assign(Object.create(Object.getPrototypeOf(this.page)),this.page),this.loading=!1},error:e=>{console.error("Error loading contacts:",e),this.loading=!1}})}setPage(e){this.loading||this.page.handlePageEvent(e.offset)&&this.loadContacts()}setSort(e){let i=e.column.prop;i===this.page.sortby&&this.page.sortOrder==="asc"?this.page.sortOrder="desc":this.page.sortOrder="asc",this.page.sortby=i,this.loadContacts()}onActivate(e){if(e.type==="click"){let i=e.row;this.router.navigate(["/accounts/account-details",i.id],{queryParams:{returnUrl:`/dnc/contacts/${this.dncListId}`}})}}getTypeLabel(e){switch(e){case"SMS":return"SMS";case"EMAIL":return"Email";case"BOTH":return"SMS & Email";default:return e}}goBack(){this.router.navigate(["/dnc"])}static{this.\u0275fac=function(i){return new(i||t)(b(ae),b(k),b(I),b(j))}}static{this.\u0275cmp=P({type:t,selectors:[["app-dnc-contacts"]],standalone:!1,decls:21,vars:8,consts:[[1,"dnc-contacts-page"],[1,"dc-topbar"],[1,"dc-nav"],[1,"dc-back-btn",3,"click"],[1,"fa","fa-arrow-left"],[1,"dc-title"],[1,"dc-sub"],[3,"routerLink"],[1,"dc-sep"],["class","dc-info-badges",4,"ngIf"],[1,"dc-body"],[1,"contacts-panel"],["class","dc-description",4,"ngIf"],["class","cl-empty-state",4,"ngIf"],["class","cl-table-wrap",4,"ngIf"],["class","mob-contacts",4,"ngIf"],[1,"dc-info-badges"],[1,"dc-badge","dc-badge--type"],[1,"fa","fa-tag"],[1,"dc-badge","dc-badge--count"],[1,"fa","fa-users"],[1,"dc-description"],[1,"fa","fa-info-circle"],[1,"cl-empty-state"],[1,"fa","fa-users","cl-empty-icon"],[1,"cl-empty-msg"],[1,"cl-table-wrap"],["text","Loading...",3,"loading"],[1,"bootstrap","material","cl-table",3,"sort","activate","hidden","rows","columnMode","scrollbarH","headerHeight","footerHeight","rowHeight","rowClass","externalPaging"],["prop","firstName","name","First Name"],["prop","lastName","name","Last Name"],["name","Phone"],["ngx-datatable-cell-template",""],["prop","email","name","Email"],["prop","createdAt","name","Created At"],["prop","updatedAt","name","Updated At"],["ngx-datatable-footer-template",""],[1,"cl-phone"],[4,"ngIf"],[3,"changePage","page","total","curPage"],[1,"mob-contacts"],["variant","mobile","size","sm","text","Loading...",3,"loading"],[1,"mob-list"],["class","mob-card",3,"click",4,"ngFor","ngForOf"],["class","mob-empty",4,"ngIf"],["class","mob-pagination",4,"ngIf"],[1,"mob-card",3,"click"],[1,"mob-card-top"],[1,"mob-card-name"],[1,"mob-contact-details"],["class","mob-contact-phone",4,"ngIf"],["class","mob-contact-email",4,"ngIf"],["class","mob-card-date",4,"ngIf"],[1,"mob-contact-phone"],[1,"fa","fa-phone"],[1,"mob-contact-email"],[1,"fa","fa-envelope-o"],[1,"mob-card-date"],[1,"fa","fa-clock-o"],[1,"mob-empty"],[1,"mob-pagination"],[3,"pageChange","collectionSize","pageSize","page","maxSize","rotate","ellipses"]],template:function(i,n){i&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"a",3),_("click",function(){return n.goBack()}),p(4,"i",4),o(),a(5,"div")(6,"h1",5),l(7),o(),a(8,"p",6)(9,"a",7),l(10,"DNC Lists"),o(),a(11,"span",8),l(12,"\u203A"),o(),l(13," Contacts "),o()()(),g(14,dt,7,2,"div",9),o(),a(15,"div",10)(16,"div",11),g(17,pt,3,1,"div",12)(18,mt,4,0,"div",13)(19,Ct,14,10,"div",14)(20,Pt,3,2,"div",15),o()()()),i&2&&(r(7),v((n.dncList==null?null:n.dncList.name)||"DNC List Contacts"),r(2),s("routerLink",L(7,st)),r(5),s("ngIf",n.dncList),r(3),s("ngIf",n.dncList==null?null:n.dncList.description),r(),s("ngIf",!n.screenSmall&&!n.loading&&n.rows.length===0),r(),s("ngIf",!n.screenSmall&&(n.loading||n.rows.length>0)),r(),s("ngIf",(n.loading||n.rows.length>0)&&n.screenSmall))},dependencies:[z,N,U,B,R,A,$,ue,we,H,E,ve],styles:[".dnc-contacts-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-height:calc(100vh - 85px)}.dc-topbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;background:#fff;border-bottom:1px solid #e5e7eb;flex-shrink:0;gap:16px}@media (max-width: 768px){.dc-topbar[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:12px}}.dc-nav[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex:1}.dc-back-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1.5px solid #e5e7eb;background:#fff;color:#6b7280;font-size:14px;text-decoration:none;flex-shrink:0;transition:background .15s ease,color .15s ease}.dc-back-btn[_ngcontent-%COMP%]:hover{background:#f3f4f6;color:#374151;text-decoration:none}.dc-title[_ngcontent-%COMP%]{font-size:15px;font-weight:700;color:#111827;margin:0;line-height:1.2}.dc-sub[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;margin:2px 0 0}.dc-sub[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#4f6ef7;text-decoration:none}.dc-sub[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.dc-sep[_ngcontent-%COMP%]{margin:0 4px;color:#d1d5db}.dc-info-badges[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-shrink:0}@media (max-width: 768px){.dc-info-badges[_ngcontent-%COMP%]{width:100%}}.dc-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600}.dc-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:11px}.dc-badge--type[_ngcontent-%COMP%]{background:#eff2ff;color:#4f6ef7}.dc-badge--count[_ngcontent-%COMP%]{background:#f3f4f6;color:#6b7280}.dc-body[_ngcontent-%COMP%]{flex:1;padding:24px;background:#f9fafb}@media (max-width: 575px){.dc-body[_ngcontent-%COMP%]{padding:16px}}.contacts-panel[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:14px;overflow:hidden}.dc-description[_ngcontent-%COMP%]{padding:14px 20px;background:#eff6ff;border-bottom:1px solid #bfdbfe;display:flex;align-items:center;gap:10px;font-size:13px;color:#1e40af}.dc-description[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{color:#3b82f6;flex-shrink:0}.cl-empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;text-align:center}.cl-empty-icon[_ngcontent-%COMP%]{font-size:40px;color:#d1d5db;margin-bottom:16px}.cl-empty-msg[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;max-width:420px;line-height:1.6;margin:0}.cl-table-wrap[_ngcontent-%COMP%]{position:relative}.cl-table[_ngcontent-%COMP%] .datatable-header{background:#f9fafb;border-bottom:1px solid #e5e7eb}.cl-table[_ngcontent-%COMP%] .datatable-header .datatable-header-cell{font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.05em;padding:12px 16px}.cl-table[_ngcontent-%COMP%] .datatable-body .datatable-body-row{border-bottom:1px solid #f3f4f6;
6cursor:pointer;transition:background .15s ease}.cl-table[_ngcontent-%COMP%] .datatable-body .datatable-body-row:hover{background:#f9fafb}.cl-table[_ngcontent-%COMP%] .datatable-body .datatable-body-row .datatable-body-cell{padding:14px 16px;font-size:13px;color:#374151}.cl-table[_ngcontent-%COMP%] .datatable-footer{background:#f9fafb;border-top:1px solid #e5e7eb;padding:8px 16px}.cl-phone[_ngcontent-%COMP%]{font-family:Courier New,monospace;color:#6b7280}.mob-contacts[_ngcontent-%COMP%]{padding:16px}.mob-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.mob-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;transition:box-shadow .15s ease,border-color .15s ease;cursor:pointer}.mob-card[_ngcontent-%COMP%]:hover{border-color:#c7d2fe;box-shadow:0 2px 8px #0000000d}.mob-card-top[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mob-card-name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:#111827;flex:1;min-width:0}.mob-contact-details[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.mob-contact-phone[_ngcontent-%COMP%], .mob-contact-email[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13px;color:#6b7280}.mob-contact-phone[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .mob-contact-email[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{width:14px;font-size:12px;color:#9ca3af}.mob-card-date[_ngcontent-%COMP%]{display:flex;align-items:center;gap:5px;font-size:12px;color:#9ca3af;padding-top:4px;border-top:1px solid #f3f4f6}.mob-card-date[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:11px}.mob-empty[_ngcontent-%COMP%]{padding:32px 16px;text-align:center;color:#9ca3af;font-size:14px}.mob-pagination[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:16px 0 4px}.mob-pagination[_ngcontent-%COMP%] .pagination{margin:0;gap:4px}.mob-pagination[_ngcontent-%COMP%] .page-item .page-link{border-radius:6px;border:1px solid #e5e7eb;color:#374151;font-size:13px;padding:6px 12px;min-width:36px;text-align:center}.mob-pagination[_ngcontent-%COMP%] .page-item.active .page-link{background:#4f6ef7;border-color:#4f6ef7;color:#fff}.mob-pagination[_ngcontent-%COMP%] .page-item.disabled .page-link{color:#d1d5db;background:#f9fafb}"]})}}return t})();var Ot=[{path:"",component:Ee},{path:"create",component:Le},{path:"contacts/:id",component:Te}],Fe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=F({type:t})}static{this.\u0275inj=T({imports:[Q.forChild(Ot),Q]})}}return t})();var un=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=F({type:t})}static{this.\u0275inj=T({imports:[oe,_e,xe,ye,be,Me,Fe]})}}return t})();export{un as DNCModule};
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.