1import{a as xe}from"./chunk-UV6E2YED.js";import{a as J}from"./chunk-MQCPTWNA.js";import{a as X,b as Y,c as E,d as ee,e as te,i as ie,j as ne,m as re,n as oe,o as le,p as ae,q as se,r as ce,s as de,t as me,v as ue,x as pe,z as _e}from"./chunk-HZNLWIOC.js";import{g as K,i as W,j as Z}from"./chunk-FPTF62UM.js";import"./chunk-VBEQVL5U.js";import"./chunk-AWLZ57DF.js";import"./chunk-2QZEDPWV.js";import{Ab as u,Kb as r,Lb as Q,Mb as $,Pa as d,Pb as j,V as F,Xb as H,Ya as q,a as w,aa as p,b as T,ba as _,bb as y,ca as b,d as R,da as L,hb as G,ib as C,kb as I,nb as g,ob as V,pa as h,pb as O,qb as k,rb as P,sb as i,tb as t,ub as m,wb as S,zb as x}from"./chunk-VWJAUAMV.js";var be=()=>[1,2,3,4],he=(o,n)=>n.price_id;function ye(o,n){o&1&&m(0,"div",7)}function Ce(o,n){o&1&&(i(0,"div",5),k(1,ye,1,0,"div",7,O),t()),o&2&&(d(),P(H(0,be)))}function Ee(o,n){o&1&&(i(0,"p",13),r(1,"Name ist erforderlich."),t())}function Se(o,n){o&1&&(i(0,"p",13),r(1,"Slug ist erforderlich."),t())}function Fe(o,n){o&1&&(i(0,"p",13),r(1,"Nur Kleinbuchstaben, Zahlen und Bindestriche."),t())}function ke(o,n){o&1&&(i(0,"div",24),m(1,"div",53),r(2," Stripe-Preise werden geladen... "),t())}function Pe(o,n){if(o&1&&(i(0,"option",54),r(1),t()),o&2){let e=n.$implicit,l=u(3);C("value",e.price_id),d(),j(" ",e.product_name||"Unbenannt"," \u2014 ",l.formatPriceCents(e.unit_amount,e.currency),"",e.recurring_interval?" / "+e.recurring_interval:""," (",e.price_id,") ")}}function we(o,n){if(o&1&&(i(0,"select",25)(1,"option",32),r(2,"Keine Stripe Price ID"),t(),k(3,Pe,2,5,"option",54,he),t()),o&2){let e=u(2);d(3),P(e.stripePrices())}}function Te(o,n){o&1&&(m(0,"input",55),i(1,"p",56),r(2,"Stripe-API nicht erreichbar \u2014 manuelle Eingabe."),t())}function Le(o,n){o&1&&(i(0,"div")(1,"label",11),r(2,"Testphase (Tage)"),t(),m(3,"input",57),t())}function Re(o,n){if(o&1){let e=S();i(0,"div",48),m(1,"input",58),i(2,"button",59),x("click",function(){let a=p(e).$index,s=u(2);return _(s.removeDescriptionFeature(a))}),b(),i(3,"svg",2),m(4,"path",60),t()()()}if(o&2){let e=n.$implicit;d(),C("formControl",e)}}function Ie(o,n){if(o&1){let e=S();i(0,"button",59),x("click",function(){p(e);let a=u().$implicit,s=u(2);return _(s.removeFeature(s.featuresList().indexOf(a)))}),b(),i(1,"svg",2),m(2,"path",60),t()()}}function Ve(o,n){o&1&&m(0,"div",65)}function De(o,n){if(o&1){let e=S();i(0,"div",49)(1,"input",61),x("input",function(a){let s=p(e).$implicit,c=u(2);return _(c.updateFeatureKey(c.featuresList().indexOf(s),a))}),t(),i(2,"label",62)(3,"input",63),x("change",function(){let a=p(e).$implicit,s=u(2);return _(s.toggleFeature(s.featuresList().indexOf(a)))}),t(),i(4,"span",47),r(5,"An"),t()(),y(6,Ie,3,0,"button",64)(7,Ve,1,0,"div",65),t()}if(o&2){let e=n.$implicit,l=u(2);d(),I("opacity-60",l.isRequiredFeature(e.key)),C("value",e.key)("readonly",l.isRequiredFeature(e.key)),d(2),C("checked",e.enabled),d(3),g(l.isRequiredFeature(e.key)?7:6)}}function Ne(o,n){if(o&1){let e=S();i(0,"button",59),x("click",function(){p(e);let a=u().$implicit,s=u(2);return _(s.removeLimit(s.limitsList().indexOf(a)))}),b(),i(1,"svg",2),m(2,"path",60),t()()}}function Ue(o,n){o&1&&m(0,"div",65)}function Me(o,n){if(o&1){let e=S();i(0,"div",49)(1,"input",66),x("input",function(a){let s=p(e).$implicit,c=u(2);return _(c.updateLimitKey(c.limitsList().indexOf(s),a))}),t(),i(2,"input",67),x("input",function(a){let s=p(e).$implicit,c=u(2);return _(c.updateLimitValue(c.limitsList().indexOf(s),a))}),t(),y(3,Ne,3,0,"button",64)(4,Ue,1,0,"div",65),t()}if(o&2){let e=n.$implicit,l=u(2);d(),I("opacity-60",l.isRequiredLimit(e.key)),C("value",e.key)("readonly",l.isRequiredLimit(e.key)),d(),C("value",e.value),d(),g(l.isRequiredLimit(e.key)?4:3)}}function Ae(o,n){o&1&&(b(),i(0,"svg",68),m(1,"circle",69)(2,"path",70),t(),r(3," Wird gespeichert... "))}function Be(o,n){if(o&1&&r(0),o&2){let e=u(2);$(" ",e.isEdit()?"Speichern":"Erstellen"," ")}}function ze(o,n){if(o&1){let e=S();i(0,"form",8),x("ngSubmit",function(){p(e);let a=u();return _(a.onSubmit())}),i(1,"div",5)(2,"h2",9),r(3,"Basisdaten"),t(),i(4,"div",10)(5,"div")(6,"label",11),r(7,"Name"),t(),m(8,"input",12),y(9,Ee,2,0,"p",13),t(),i(10,"div")(11,"label",11),r(12,"Slug"),t(),m(13,"input",14),y(14,Se,2,0,"p",13)(15,Fe,2,0,"p",13),t()(),i(16,"div",15)(17,"div")(18,"label",11),r(19,"Preis (Cent)"),t(),m(20,"input",16),t(),i(21,"div")(22,"label",11),r(23,"Normalpreis (Cent)"),t(),m(24,"input",17),i(25,"p",18),r(26,"0 = kein durchgestrichener Preis. H\xF6her als Preis \u2192 wird durchgestrichen angezeigt."),t()(),i(27,"div")(28,"label",11),r(29,"W\xE4hrung"),t(),m(30,"input",19),t(),i(31,"div")(32,"label",11),r(33,"Reihenfolge"),t(),m(34,"input",20),t()(),i(35,"div")(36,"label",11),r(37,"Pricing-Gruppe"),t(),i(38,"select",21)(39,"option",22),r(40,"Agentur \u2014 Standard-Preistabelle"),t(),i(41,"option",23),r(42,"S
1olo \u2014 Solo-Landingpage"),t()(),i(43,"p",18),r(44,"Steuert, in welchem Preis-Modul der Plan geladen wird (via "),i(45,"code"),r(46,"?group="),t(),r(47,")."),t()(),i(48,"div")(49,"label",11),r(50,"Stripe Price ID"),t(),y(51,ke,3,0,"div",24)(52,we,5,0,"select",25)(53,Te,3,0),t(),i(54,"div",26)(55,"div")(56,"label",27),m(57,"input",28),i(58,"div")(59,"span",29),r(60,"Testphase aktivieren"),t(),i(61,"p",30),r(62,"Neuen Abonnenten eine kostenlose Testphase anbieten"),t()()()(),y(63,Le,4,0,"div"),t(),i(64,"div",26)(65,"div")(66,"label",11),r(67,"Icon"),t(),i(68,"select",31)(69,"option",32),r(70,"Kein Icon"),t(),i(71,"option",33),r(72,"Rocket"),t(),i(73,"option",34),r(74,"Bolt"),t(),i(75,"option",35),r(76,"Building"),t(),i(77,"option",36),r(78,"Star"),t(),i(79,"option",37),r(80,"Shield"),t(),i(81,"option",38),r(82,"Sparkles"),t(),i(83,"option",39),r(84,"Cube"),t(),i(85,"option",40),r(86,"Globe"),t()()(),i(87,"div",41)(88,"label",42),m(89,"input",43),i(90,"div")(91,"span",29),r(92,'"Beliebt"-Badge'),t(),i(93,"p",30),r(94,"Plan wird auf der Pricing-Seite hervorgehoben"),t()()()()()(),i(95,"div",5)(96,"div",44)(97,"h2",9),r(98,"Beschreibungs-Features"),t(),i(99,"button",45),x("click",function(){p(e);let a=u();return _(a.addDescriptionFeature())}),b(),i(100,"svg",2),m(101,"path",46),t(),r(102," Hinzuf\xFCgen "),t()(),L(),i(103,"p",47),r(104,"Texte die auf der Pricing-Seite angezeigt werden."),t(),k(105,Re,5,1,"div",48,V),t(),i(107,"div",5)(108,"div",44)(109,"h2",9),r(110,"SaaS Features"),t(),i(111,"button",45),x("click",function(){p(e);let a=u();return _(a.addFeature())}),b(),i(112,"svg",2),m(113,"path",46),t(),r(114," Hinzuf\xFCgen "),t()(),L(),i(115,"p",47),r(116,"Feature-Flags die im Plan freigeschaltet sind."),t(),k(117,De,8,6,"div",49,V),t(),i(119,"div",5)(120,"div",44)(121,"h2",9),r(122,"Limits"),t(),i(123,"button",45),x("click",function(){p(e);let a=u();return _(a.addLimit())}),b(),i(124,"svg",2),m(125,"path",46),t(),r(126," Hinzuf\xFCgen "),t()(),L(),i(127,"p",47),r(128,"Ressourcen-Limits (-1 = unbegrenzt)."),t(),k(129,Me,5,6,"div",49,V),t(),i(131,"div",50)(132,"button",51),y(133,Ae,4,0)(134,Be,1,1),t(),i(135,"a",52),r(136,"Abbrechen"),t()()()}if(o&2){let e=u();C("formGroup",e.form),d(9),g(e.form.controls.name.touched&&e.form.controls.name.hasError("required")?9:-1),d(4),I("opacity-60",e.isEdit()),G("readonly",e.isEdit()?"":null),d(),g(!e.isEdit()&&e.form.controls.slug.touched&&e.form.controls.slug.hasError("required")?14:-1),d(),g(!e.isEdit()&&e.form.controls.slug.touched&&e.form.controls.slug.hasError("pattern")?15:-1),d(36),g(e.loadingPrices()?51:e.stripePrices().length>0?52:53),d(12),g(e.form.controls.trial_enabled.value?63:-1),d(42),P(e.getDescriptionControls()),d(12),P(e.featuresList()),d(12),P(e.limitsList()),d(3),C("disabled",e.form.invalid||e.submitting()),d(),g(e.submitting()?133:134)}}var fe=class o{route=F(K);router=F(W);fb=F(pe);adminService=F(xe);toastService=F(J);isEdit=h(!1);loadingPlan=h(!1);loadingPrices=h(!1);submitting=h(!1);planId=h(null);stripePrices=h([]);featuresList=h([]);limitsList=h([]);REQUIRED_LIMITS=["projects","members","file_storage_quota_mb","file_max_upload_size_mb","file_max_files_per_tenant"];REQUIRED_LIMIT_DEFAULTS={projects:0,members:0,file_storage_quota_mb:500,file_max_upload_size_mb:10,file_max_files_per_tenant:100};
1REQUIRED_FEATURES=["file_type_documents","file_type_images","file_type_videos"];REQUIRED_FEATURE_DEFAULTS={file_type_documents:!0,file_type_images:!1,file_type_videos:!1};form=this.fb.nonNullable.group({name:["",E.required],slug:["",[E.required,E.pattern(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)]],price_cents:[0,[E.required,E.min(0)]],regular_price_cents:[0,[E.min(0)]],currency:["USD"],is_highlighted:[!1],pricing_group:["agency"],icon:[""],display_order:[0],stripe_price_id:[""],trial_enabled:[!0],trial_days:[14,[E.min(1),E.max(365)]]});descriptionFeatures=this.fb.array([]);ngOnInit(){return R(this,null,function*(){this.loadStripePrices();let n=this.route.snapshot.paramMap.get("id");if(n){this.isEdit.set(!0),this.planId.set(n),this.loadingPlan.set(!0),this.form.controls.slug.disable();try{let e=yield this.adminService.getPlanById(n),l=(e.trial_days??0)>0;this.form.patchValue({name:e.name,slug:e.slug,price_cents:e.price_cents,regular_price_cents:e.regular_price_cents??0,currency:e.currency,is_highlighted:e.is_highlighted,pricing_group:e.pricing_group??"agency",icon:e.icon??"",display_order:e.display_order,stripe_price_id:e.stripe_price_id??"",trial_enabled:l,trial_days:l?e.trial_days:14});for(let c of e.description_features)this.descriptionFeatures.push(this.fb.control(c));let a=Object.entries(e.limits).map(([c,f])=>({key:c,value:f}));for(let c of this.REQUIRED_LIMITS)a.some(f=>f.key===c)||a.push({key:c,value:this.REQUIRED_LIMIT_DEFAULTS[c]??0});this.limitsList.set(a);let s=Object.entries(e.features).map(([c,f])=>({key:c,enabled:f}));for(let c of this.REQUIRED_FEATURES)s.some(f=>f.key===c)||s.push({key:c,enabled:this.REQUIRED_FEATURE_DEFAULTS[c]??!1});this.featuresList.set(s)}catch{this.toastService.error("Plan konnte nicht geladen werden."),this.router.navigate(["/admin/plans"])}finally{this.loadingPlan.set(!1)}}else this.limitsList.set(this.REQUIRED_LIMITS.map(e=>({key:e,value:this.REQUIRED_LIMIT_DEFAULTS[e]??0}))),this.featuresList.set(this.REQUIRED_FEATURES.map(e=>({key:e,enabled:this.REQUIRED_FEATURE_DEFAULTS[e]??!1})))})}isRequiredLimit(n){return this.REQUIRED_LIMITS.includes(n)}isRequiredFeature(n){return this.REQUIRED_FEATURES.includes(n)}getDescriptionControls(){return this.descriptionFeatures.controls}addDescriptionFeature(){this.descriptionFeatures.push(this.fb.control(""))}removeDescriptionFeature(n){this.descriptionFeatures.removeAt(n)}addFeature(){this.featuresList.update(n=>[...n,{key:"",enabled:!0}])}removeFeature(n){this.featuresList.update(e=>e.filter((l,a)=>a!==n))}updateFeatureKey(n,e){let l=e.target.value;this.featuresList.update(a=>a.map((s,c)=>c===n?T(w({},s),{key:l}):s))}toggleFeature(n){this.featuresList.update(e=>e.map((l,a)=>a===n?T(w({},l),{enabled:!l.enabled}):l))}addLimit(){this.limitsList.update(n=>[...n,{key:"",value:0}])}removeLimit(n){let e=this.limitsList()[n];e&&this.isRequiredLimit(e.key)||this.limitsList.update(l=>l.filter((a,s)=>s!==n))}updateLimitKey(n,e){let l=e.target.value;this.limitsList.update(a=>a.map((s,c)=>c===n?T(w({},s),{key:l}):s))}updateLimitValue(n,e){let l=parseInt(e.target.value,10)||0;this.limitsList.update(a=>a.map((s,c)=>c===n?T(w({},s),{value:l}):s))}formatPriceCents(n,e){return n===null||e===null?"\u2013":new Intl.NumberFormat("de-DE",{style:"currency",currency:e.toUpperCase()}).format(n/100)}loadStripePrices(){return R(this,null,function*(){this.loadingPrices.set(!0);try{let n=yield this.adminService.getStripePrices();this.stripePrices.set(n)}catch{this.stripePrices.set([])}finally{this.loadingPrices.set(!1)}})}onSubmit(){return R(this,null,function*(){if(this.form.invalid)return;this.submitting.set(!0);let{name:n,slug:e,price_cents:l,regular_price_cents:a,currency:s,is_highlighted:c,pricing_group:f,icon:U,display_order:M,stripe_price_id:A,trial_enabled:ge,trial_days:ve}=this.form.getRawValue(),B=ge?ve||14:0,z=this.descriptionFeatures.value.filter(v=>v.trim()),D={};for(let v of this.featuresList())v.key.trim()&&(D[v.key.trim()]=v.enabled);let N={};for(let v of this.limitsList())v.key.trim()&&(N[v.key.trim()]=v.value);try{this.isEdit()?(yield this.adminService.updatePlan(this.planId(),{name:n,price_cents:l,regular_price_cents:a,currency:s,description_features:z,features:D,limits:N,is_highlighted:c,pricing_group:f,icon:U||null,display_order:M,stripe_price_id:A||void 0,trial_days:B}),this.toastService.success("Plan wurde erfolgreich aktualisiert.")):(yield this.adminService.createPlan({name:n,slug:e,price_cents:l,regular_price_cents:a,currency:s,description_features:z,features:D,limits:N,is_highlighted:c,pricing_group:f,icon:U||void 0,display_order:M,stripe_price_id:A||void 0,trial_days:B}),this.toastService.success("Plan wurde erfolgreich erstellt.")),this.router.navigate(["/admin/plans"])}catch{this.toastService.error(this.isEdit()?"Plan konnte nicht aktualisiert werden.":"Plan konnte nicht erstellt werden.")}finally{this.submitting.set(!1)}})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=q({type:o,selectors:[["app-plan-form"]],decls:9,vars:2,consts:[[1,"space-y-6","max-w-3xl"],["routerLink","/admin/plans",1,"inline-flex","items-center","gap-1","text-sm","text-blue-600","hover:text-blue-700","dark:text-blue-400","dark:hover:text-blue-300"],["fill","none","viewBox","0 0 24 24","stroke","currentColor","stroke-width","2",1,"w-4","h-4"],["stroke-linecap","round","stroke-linejoin","round","d","M15 19l-7-7 7-7"],[1,"page-title"],[1,"card","p-6","space-y-4"],[1,"space-y-6",3,"formGroup"],[1,"h-10","bg-gray-200","dark:bg-gray-700","rounded","animate-pulse"],[1,"space-y-6",3,"ngSubmit","formGroup"],[1,"text-lg","font-semibold","text-[var(--color-text)]"],[1,"grid","grid-cols-1","sm:grid-cols-2","gap-4"],[1,"block","text-sm","font-medium","text-[var(--color-text)]","mb
1-1"],["type","text","formControlName","name","placeholder","z.B. Professional",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],[1,"mt-1","text-xs","text-red-600","dark:text-red-400"],["type","text","formControlName","slug","placeholder","z.B. professional",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","font-mono","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],[1,"grid","grid-cols-1","sm:grid-cols-3","gap-4"],["type","number","formControlName","price_cents","placeholder","0",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],["type","number","formControlName","regular_price_cents","placeholder","0",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],[1,"mt-1","text-xs","text-[var(--color-text-muted)]"],["type","text","formControlName","currency","placeholder","USD","maxlength","3",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],["type","number","formControlName","display_order",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],["formControlName","pricing_group",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2","appearance-none","cursor-pointer",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],["value","agency"],["value","solo"],[1,"w-full","rounded-xl","px-3","py-2.5","text-sm","flex","items-center","gap-2",2,"background","var(--color-bg)","border","1px solid var(--color-border)","color","var(--color-text-muted)"],["formControlName","stripe_price_id",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2","appearance-none","cursor-pointer",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],[1,"grid","grid-cols-1","sm:grid-cols-2","gap-4","pt-2"],[1,"flex","items-center","gap-3","cursor-pointer","mb-2"],["type","checkbox","formControlName","trial_enabled",1,"rounded","border-gray-300","text-blue-600","focus:ring-blue-500","h-4","w-4"],[1,"text-sm","font-medium","text-[var(--color-text)]"],[1,"text-xs","text-[var(--color-text-muted)]"],["formControlName","icon",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2","appearance-none","cursor-pointer",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],["value",""],["value","rocket"],["value","bolt"],["value","building"],["value","star"],["value","shield"],["value","sparkles"],["value","cube"],["value","globe"],[1,"flex","items-end","pb-1"],[1,"flex","items-center","gap-3","cursor-pointer"],["type","checkbox","formControlName","is_highlighted",1,"rounded","border-gray-300","text-blue-600","focus:ring-blue-500","h-4","w-4"],[1,"flex","items-center","justify-between"],["type","button",1,"inline-flex","items-center","gap-1","text-sm","font-medium","text-blue-600","hover:text-blue-700","dark:text-blue-400",3,"click"],["stroke-linecap","round","stroke-linejoin","round","d","M12 4.5v15m7.5-7.5h-15"],[1,"text-xs","text-[var(--color-text-secondary)]"],[1,"flex","gap-2"],[1,"flex","items-center","gap-2"],[1,"flex","gap-3"],["type","submit",1,"btn-primary",3,"disabled"],["routerLink","/admin/plans",1,"btn-secondary"],[1,"animate-spin","rounded-full","h-4","w-4","border-b-2",2,"border-color","var(--color-primary)"],[3,"value"],["type","text","formControlName","stripe_price_id","placeholder","price_...",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","font-mono","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1p
1x solid var(--color-border)","--tw-ring-color","var(--color-primary)"],[1,"mt-1","text-xs",2,"color","var(--color-text-muted)"],["type","number","formControlName","trial_days","placeholder","14","min","1","max","365",1,"w-full","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)"],["type","text","placeholder","z.B. 50 Projekte",1,"flex-1","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)",3,"formControl"],["type","button",1,"flex","items-center","justify-center","w-10","h-10","rounded-xl","text-red-500","hover:bg-red-50","dark:hover:bg-red-900/20","transition-colors",3,"click"],["stroke-linecap","round","stroke-linejoin","round","d","M6 18L18 6M6 6l12 12"],["type","text","placeholder","Feature-Key (z.B. analytics)",1,"flex-1","rounded-xl","px-3","py-2.5","text-sm","font-mono","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)",3,"input","value","readonly"],[1,"flex","items-center","gap-2","cursor-pointer","min-w-[60px]"],["type","checkbox",1,"rounded","border-gray-300","text-blue-600","focus:ring-blue-500",3,"change","checked"],["type","button",1,"flex","items-center","justify-center","w-10","h-10","rounded-xl","text-red-500","hover:bg-red-50","dark:hover:bg-red-900/20","transition-colors"],[1,"w-10","h-10"],["type","text","placeholder","Limit-Key (z.B. projects)",1,"flex-1","rounded-xl","px-3","py-2.5","text-sm","font-mono","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)",3,"input","value","readonly"],["type","number","placeholder","Wert",1,"w-28","rounded-xl","px-3","py-2.5","text-sm","transition-all","duration-200","focus:outline-none","focus:ring-2",2,"background","var(--color-bg)","color","var(--color-text)","border","1px solid var(--color-border)","--tw-ring-color","var(--color-primary)",3,"input","value"],["fill","none","viewBox","0 0 24 24",1,"animate-spin","-ml-1","mr-2","h-4","w-4","text-white"],["cx","12","cy","12","r","10","stroke","currentColor","stroke-width","4",1,"opacity-25"],["fill","currentColor","d","M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z",1,"opacity-75"]],template:function(e,l){e&1&&(i(0,"div",0)(1,"a",1),b(),i(2,"
1svg",2),m(3,"path",3),t(),r(4," Zur\xFCck zur Planliste "),t(),L(),i(5,"h1",4),r(6),t(),y(7,Ce,3,1,"div",5)(8,ze,137,11,"form",6),t()),e&2&&(d(6),Q(l.isEdit()?"Plan bearbeiten":"Neuen Plan erstellen"),d(),g(l.loadingPlan()?7:8))},dependencies:[Z,_e,ie,se,ce,Y,ne,X,ae,ee,te,ue,me,de,re,oe,le],styles:[".btn-secondary[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border-radius:.75rem;border:1px solid var(--color-border);color:var(--color-text);background:var(--color-bg);transition:all .15s;text-decoration:none}.btn-secondary[_ngcontent-%COMP%]:hover{background:var(--color-bg-elevated)}"]})};export{fe as PlanFormComponent};
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.