1import{a as V}from"./chunk-MLKN2D3W.js";import{b as k,d as N,g as A,i as z,q as T,u as D}from"./chunk-UGXKL5ER.js";import"./chunk-5AGDEW6Z.js";import{f as E}from"./chunk-XNW5PYX2.js";import{o as w,p as S,r as I}from"./chunk-FIT7MKFN.js";import{$ as m,Bb as v,Fb as u,Hb as l,Na as o,Sb as y,Vb as n,W as h,Wb as M,Xb as g,aa as _,ab as O,ja as d,mc as f,nb as P,ob as b,oc as C,tb as x,ub as t,vb as e}from"./chunk-Z772GIGE.js";import"./chunk-I7PQYONE.js";function G(r,a){if(r&1&&(t(0,"p",6),n(1),e()),r&2){let i=l();y("is-error",i.actionError()),o(),M(i.actionMsg())}}function F(r,a){r&1&&(t(0,"p",2),n(1,"Loading settings\u2026"),e())}function K(r,a){if(r&1&&(t(0,"p",4),n(1),e()),r&2){let i=l();o(),M(i.error())}}function j(r,a){if(r&1&&(t(0,"span",9),n(1),f(2,"date"),e()),r&2){let i=l(2);o(),g(" Last updated ",C(2,1,i.updatedAt(),"dd MMM yyyy, HH:mm")," ")}}function H(r,a){if(r&1){let i=v();t(0,"div",5)(1,"article",7)(2,"header",8)(3,"h2"),n(4,"Workspace service pricing"),e(),P(5,j,3,4,"span",9),e(),t(6,"div",10)(7,"div",11)(8,"div",12)(9,"strong"),n(10,"GST Compliance workspace"),e(),t(11,"span"),n(12,"Charged each time a customer adds a GSTIN for notice monitoring."),e(),t(13,"span",13),n(14,"per GSTIN"),e()(),t(15,"label",14),n(16,"Price (\u20B9)"),e(),t(17,"input",15),u("ngModelChange",function(c){m(i);let p=l();return _(p.gstPriceInr.set(c))}),e()(),t(18,"div",11)(19,"div",12)(20,"strong"),n(21,"PAN / IT Notice fetch"),e(),t(22,"span"),n(23,"Charged for each PAN linked for income-tax notice fetch."),e(),t(24,"span",13),n(25,"per PAN"),e()(),t(26,"label",14),n(27,"Price (\u20B9)"),e(),t(28,"input",15),u("ngModelChange",function(c){m(i);let p=l();return _(p.panPriceInr.set(c))}),e()(),t(29,"div",11)(30,"div",12)(31,"strong"),n(32,"Accounts management"),e(),t(33,"span"),n(34,"Charged for each business account managed in the Accounts workspace."),e(),t(35,"span",13),n(36,"per account"),e()(),t(37,"label",14),n(38,"Price (\u20B9)"),e(),t(39,"input",15),u("ngModelChange",function(c){m(i);let p=l();return _(p.accountsPriceInr.set(c))}),e()(),t(40,"div",11)(41,"div",12)(42,"strong"),n(43,"360 Cockpit"),e(),t(44,"span"),n(45,"Charged for each GSTIN monitored in the portfolio dashboard."),e(),t(46,"span",13),n(47,"per GSTIN"),e()(),t(48,"label",14),n(49,"Price (\u20B9)"),e(),t(50,"input",15),u("ngModelChange",function(c){m(i);let p=l();return _(p.gst360PriceInr.set(c))}),e()()(),t(51,"div",16)(52,"button",17),u("click",function(){m(i);let c=l();return _(c.save())}),n(53),e()()(),t(54,"aside",18)(55,"h3"),n(56,"How billing works"),e(),t(57,"ul")(58,"li")(59,"strong"),n(60,"GST Compliance:"),e(),n(61),f(62,"number"),e(),t(63,"li")(64,"strong"),n(65,"PAN / IT Notice:"),e(),n(66),f(67,"number"),e(),t(68,"li")(69,"strong"),n(70,"Accounts:"),e(),n(71),f(72,"number"),e(),t(73,"li")(74,"strong"),n(75,"360 Cockpit:"),e(),n(76),f(77,"number"),e()(),t(78,"p",2),n(79," Subscription plans (Plans page) cover platform tiers. These per-unit prices apply on top when customers add GSTINs, PANs, or accounts in their workspaces. "),e()()()}if(r&2){let i=l();o(5),b(i.updatedAt()?5:-1),o(12),x("ngModel",i.gstPriceInr()),o(11),x("ngModel",i.panPriceInr()),o(11),x("ngModel",i.accountsPriceInr()),o(11),x("ngModel",i.gst360PriceInr()),o(2),x("disabled",i.saving()),o(),g(" ",i.saving()?"Saving\u2026":"Save pricing"," "),o(8),g(" \u20B9",C(62,11,i.gstPriceInr(),"1.0-0")," \xD7 number of GSTINs added "),o(5),g(" \u20B9",C(67,14,i.panPriceInr(),"1.0-0")," \xD7 number of PANs linked "),o(5),g(" \u20B9",C(72,17,i.accountsPriceInr(),"1.0-0")," \xD7 number of accounts managed "),o(5),g(" \u20B9",C(77,20,i.gst360PriceInr(),"1.0-0")," \xD7 number of GSTINs monitored ")}}var B=class r{admin=h(V);items=d([]);updatedAt=d(null);loading=d(!0);saving=d(!1);error=d(null);actionMsg=d(null);actionError=d(!1);gstPriceInr=d(1e3);panPriceInr=d(1e3);accountsPriceInr=d(1e3);gst360PriceInr=d(999);ngOnInit(){this.load()}load(){this.loading.set(!0),this.error.set(null),this.admin.getServicePricing().subscribe({next:a=>{this.items.set(a.items),this.updatedAt.set(a.updated_at),this.gstPriceInr.set(this.inrForKey(a.items,"gst_notice_per_gstin_paise")),this.panPriceInr.set(this.inrForKey(a.items,"pan_it_notice_per_pan_paise")),this.accountsPr
1iceInr.set(this.inrForKey(a.items,"accounts_per_account_paise")),this.gst360PriceInr.set(this.inrForKey(a.items,"gst360_per_gstin_paise")),this.loading.set(!1)},error:a=>{this.error.set(this.parseError(a)),this.loading.set(!1)}})}save(){this.saving()||(this.saving.set(!0),this.actionMsg.set(null),this.actionError.set(!1),this.admin.updateServicePricing({gst_notice_per_gstin_paise:Math.round(this.gstPriceInr()*100),pan_it_notice_per_pan_paise:Math.round(this.panPriceInr()*100),accounts_per_account_paise:Math.round(this.accountsPriceInr()*100),gst360_per_gstin_paise:Math.round(this.gst360PriceInr()*100)}).subscribe({next:a=>{this.saving.set(!1),this.items.set(a.items),this.updatedAt.set(a.updated_at),this.actionMsg.set("Workspace pricing saved.")},error:a=>{this.saving.set(!1),this.actionError.set(!0),this.actionMsg.set(this.parseError(a))}}))}inrForKey(a,i){let s=a.find(c=>c.key===i);return s?s.amount_inr:1e3}parseError(a){if(a instanceof E){let i=a.error;return typeof i?.detail=="string"?i.detail:`Request failed (${a.status})`}return"Request failed"}static \u0275fac=function(i){return new(i||r)};static \u0275cmp=O({type:r,selectors:[["app-admin-settings"]],decls:10,vars:2,consts:[[1,"adm-page","adm-settings"],[1,"adm-head"],[1,"adm-muted"],[1,"adm-banner",3,"is-error"],[1,"adm-error"],[1,"adm-settings-grid"],[1,"adm-banner"],[1,"card","adm-settings-card"],[1,"adm-settings-card__head"],[1,"adm-settings-card__meta"],[1,"adm-settings-prices"],[1,"adm-settings-price-row"],[1,"adm-settings-price-row__info"],[1,"adm-pill"],[1,"adm-label"],["type","number","min","0","step","1",1,"adm-input","adm-settings-price-input",3,"ngModelChange","ngModel"],[1,"adm-settings-card__actions"],["type","button",1,"btn","bp","bsm",3,"click","disabled"],[1,"card","adm-settings-help"]],template:function(i,s){i&1&&(t(0,"section",0)(1,"header",1)(2,"h1"),n(3,"Settings"),e(),t(4,"p",2),n(5," Platform configuration. Worksp
1ace add-on pricing is charged per GSTIN, per PAN, or per account when customers use those services. "),e()(),P(6,G,2,3,"p",3),P(7,F,2,0,"p",2)(8,K,2,1,"p",4)(9,H,80,23,"div",5),e()),i&2&&(o(6),b(s.actionMsg()?6:-1),o(),b(s.loading()?7:s.error()?8:9))},dependencies:[I,D,k,z,N,T,A,S,w],styles:['.adm-page[_ngcontent-%COMP%]{padding:24px}.adm-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:16px}.adm-head__text[_ngcontent-%COMP%]{min-width:0;flex:1}.adm-head[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-family:var(--font-display, "Source Serif 4", serif);font-size:1.5rem;color:var(--navy, #0f172a);margin-bottom:6px}.adm-head[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .adm-muted[_ngcontent-%COMP%]{color:var(--t2, #64748b);font-size:14px}.adm-error[_ngcontent-%COMP%]{color:#b91c1c}.card[_ngcontent-%COMP%]{background:#fff;border:1px solid var(--border, #e2e8f0);border-radius:8px}.adm-toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:10px;padding:14px;margin-bottom:16px;align-items:center;overflow:visible}.adm-toolbar[_ngcontent-%COMP%] .btn.bp[_ngcontent-%COMP%]{background:#0d9488;border-color:#0f766e;color:#fff;box-shadow:none}.adm-toolbar[_ngcontent-%COMP%] .btn.bp[_ngcontent-%COMP%]:hover{background:#0f766e;border-color:#115e59;box-shadow:none}.adm-input[_ngcontent-%COMP%], .adm-select[_ngcontent-%COMP%], .adm-textarea[_ngcontent-%COMP%]{font-size:14px;padding:8px 12px;border:1px solid var(--border, #e2e8f0);border-radius:6px;background:#fff;font-family:inherit}.adm-input[_ngcontent-%COMP%]{flex:1;
1min-width:200px}.adm-input--block[_ngcontent-%COMP%], .adm-select--block[_ngcontent-%COMP%], .adm-textarea--block[_ngcontent-%COMP%]{width:100%;margin-bottom:12px}.adm-textarea[_ngcontent-%COMP%]{resize:vertical;min-height:80px}.adm-select--compact[_ngcontent-%COMP%]{min-width:110px}.adm-banner[_ngcontent-%COMP%]{padding:10px 14px;background:#ecfdf5;color:#047857;border-radius:8px;margin-bottom:12px}.adm-banner.is-error[_ngcontent-%COMP%]{background:#fef2f2;color:#b91c1c}.adm-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:13px}.adm-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .adm-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border, #e2e8f0)}.adm-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--t2, #64748b);background:#fff}.adm-table--zebra[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(2n){background:#f8fafc}.adm-table--zebra[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:#f1f5f9}.adm-table--zebra[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.is-selected[_ngcontent-%COMP%]{background:#ecfeff}.adm-table--clickable[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{cursor:pointer}.col-sn[_ngcontent-%COMP%]{width:48px;text-align:center}.col-action[_ngcontent-%COMP%]{width:90px}.adm-empty[_ngcontent-%COMP%]{text-align:center;color:#94a3b8;padding:32px 12px!important}.adm-actions[_ngcontent-%COMP%]{white-space:nowrap}.adm-link[_ngcontent-%COMP%]{border:none;background:none;color:var(--brand, #0d9488);font-size:12px;font-weight:600;cursor:pointer;padding:0}.adm-link.is-danger[_ngcontent-%COMP%]{color:#dc2626}.adm-link[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.adm-pager[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:12px;font-size:13px;color:var(--t2, #64748b);gap:12px;flex-wrap:wrap}.adm-split-layout[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:1100px){.adm-split-layout[_ngcontent-%COMP%]:has(.adm-panel){grid-template-columns:1fr 340px}}.adm-panel[_ngcontent-%COMP%]{padding:16px;align-self:start;position:sticky;top:16px;max-width:100%}.adm-panel[_ngcontent-%COMP%] .adm-input[_ngcontent-%COMP%], .adm-panel[_ngcontent-%COMP%] .adm-select[_ngcontent-%COMP%], .adm-panel[_ngcontent-%COMP%] textarea.adm-input[_ngcontent-%COMP%]{width:100%;flex:none;min-width:0;box-sizing:border-box;margin-bottom:12px;display:block}.adm-panel[_ngcontent-%COMP%] .adm-label[_ngcontent-%COMP%]{margin-top:2px}.adm-panel__close[_ngcontent-%COMP%]{border:none;background:none;font-size:1.35rem;line-height:1;cursor:pointer;color:var(--t2, #64748b);padding:2px 6px;border-radius:4px}.adm-panel__close[_ngcontent-%COMP%]:hover{background:#f1f5f9;color:#0f172a}.adm-panel__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.adm-panel__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:1rem;margin:0}.adm-close[_ngcontent-%COMP%]{border:none;background:none;font-size:18px;cursor:pointer;color:var(--t2, #64748b)}.adm-label[_ngcontent-%COMP%]{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--t2, #64748b);margin-bottom:4px}.adm-pill[_ngcontent-%COMP%]{display:inline-block;padding:3px 10px;border-radius:999px;background:#f1f5f9;color:#475569;font-size:11px;font-weight:600;letter-spacing:.01em;text-transform:capitalize}.adm-pill.is-active[_ngcontent-%COMP%]{background:#d1fae5;color:#065f46}.adm-pill.is-inactive[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.adm-pill.is-pending[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.adm-panel__meta[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.adm-panel__actions[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-top:12px}.adm-check[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin:8px 0;font-size:14px}.adm-features[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;max-height:280px;overflow-y:auto;padding-right:4px}.adm-feature-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:8px;padding:8px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc}.adm-feature-row__text[_ngcontent-%COMP%]{flex:1;min-width:0}.adm-feature-row__label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#0f172a}.adm-feature-row__desc[_ngcontent-%COMP%]{font-size:11px;color:#64748b;margin-top:2px}
1.adm-grid-2[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:10px}.adm-table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.adm-split-layout.has-panel[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:1100px){.adm-split-layout.has-panel[_ngcontent-%COMP%]{grid-template-columns:1fr 360px}}.adm-settings-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:960px){.adm-settings-grid[_ngcontent-%COMP%]{grid-template-columns:1.4fr 1fr;align-items:start}}.adm-settings-card[_ngcontent-%COMP%]{padding:20px}.adm-settings-card__head[_ngcontent-%COMP%]{margin-bottom:16px}.adm-settings-card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 4px;font-size:1.1rem}.adm-settings-card__meta[_ngcontent-%COMP%]{font-size:12px;color:#94a3b8}.adm-settings-prices[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px}.adm-settings-price-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 120px;gap:10px 16px;padding:14px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc}.adm-settings-price-row__info[_ngcontent-%COMP%]{grid-column:1/-1;display:flex;flex-direction:column;gap:4px}.adm-settings-price-row__info[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:#0f172a;font-size:14px}.adm-settings-price-row__info[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:12px;color:#64748b}.adm-settings-price-row__info[_ngcontent-%COMP%] .adm-pill[_ngcontent-%COMP%]{align-self:flex-start;margin-top:4px}.adm-settings-price-input[_ngcontent-%COMP%]{width:100%;min-width:0}.adm-settings-card__actions[_ngcontent-%COMP%]{margin-top:16px}.adm-settings-help[_ngcontent-%COMP%]{padding:20px}.adm-settings-help[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 12px;font-size:1rem}.adm-settings-help[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin:0 0 12px;padding-left:18px;font-size:13px;color:#334155;line-height:1.6}']})};export{B as AdminSettingsComponent};
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.