PageSourceSearch

https://timefor.es/chunk-2YA6NR2O.js

js timefor.es collected 2026-10-08 03:59:05 UTC 21,303 bytes, 1 lines download raw bytes

1import{a as ae}from"./chunk-E6YBYGN3.js";import"./chunk-RKILFRGE.js";import"./chunk-TCPW5XEK.js";import"./chunk-QG756IV4.js";import"./chunk-HJTIA75Q.js";import"./chunk-JGQF2WRQ.js";import"./chunk-22FBPS7P.js";import"./chunk-OPQIBUQO.js";import"./chunk-MQWEDXHR.js";import"./chunk-JJ6PKHSU.js";import"./chunk-CEI4V5XQ.js";import"./chunk-X5EVOBCL.js";import"./chunk-PERJWLLJ.js";import"./chunk-PM4WIPUA.js";import{a as ie,c as $}from"./chunk-XJ3NWTVA.js";import"./chunk-6QA2Q7XZ.js";import"./chunk-3KWJGWLO.js";import"./chunk-V3RVSAQ3.js";import"./chunk-7XL5BWSD.js";import"./chunk-LX2TZ2WC.js";import"./chunk-ZUDBBCRZ.js";import"./chunk-XL6CIGEF.js";import"./chunk-ERHBI75R.js";import"./chunk-RFAMNAIM.js";import"./chunk-5DQPUXUP.js";import"./chunk-CQSIE774.js";import"./chunk-RHJQIQX3.js";import"./chunk-YRJKLGXQ.js";import"./chunk-YCQJZ7U7.js";import"./chunk-EU3HRZZU.js";import"./chunk-OZRWW2OM.js";import"./chunk-LJ4VJGBI.js";import"./chunk-Y5EMDMTT.js";import"./chunk-F2U7L3S3.js";import{b as ne}from"./chunk-O7NJQRLW.js";import{B as te}from"./chunk-FPQGNDHC.js";import"./chunk-G5KA7DMQ.js";import"./chunk-5M7FJTVG.js";import"./chunk-NKZMLD7V.js";import"./chunk-I7GWLZLZ.js";import"./chunk-YBBXFW4J.js";import"./chunk-EIGL4CQA.js";import{F as Y,R as K,S as Q,W as X,c as Z,na as ee,q as H,x as J}from"./chunk-LHV6LGR2.js";import"./chunk-6OT5YBUO.js";import{A as q,c as U,g as W,l as j,n as G,w as R}from"./chunk-R7NCLKQX.js";import"./chunk-MEQ3X5DZ.js";import"./chunk-RLL3LN7R.js";import{Ac as y,Nb as f,Pb as v,Qb as M,Rb as V,Tb as k,Ub as S,Vb as _,Wb as i,Xb as o,Ya as T,Yb as b,_c as P,bb as r,fc as h,ic as u,ja as A,kc as l,qa as p,ra as m,tb as z,yc as c,za as x,zc as O}from"./chunk-CKBYLFRU.js";import"./chunk-4WFVMWDK.js";import"./chunk-DVVH2KKN.js";import"./chunk-NV3QH4JK.js";import"./chunk-SAKMSOI2.js";import"./chunk-7KGURMOZ.js";import"./chunk-EORXMULG.js";import"./chunk-QUJFQN2Y.js";import"./chunk-P2GNUTQH.js";import"./chunk-64TUHUGB.js";import"./chunk-X63R2J26.js";import"./chunk-7JH22LDH.js";import"./chunk-IRNR52FE.js";import"./chunk-4PQCSTBZ.js";import"./chunk-QIK353WU.js";import"./chunk-5K2E6ZGQ.js";import"./chunk-HVA27MHD.js";import"./chunk-CKP3SGE2.js";import"./chunk-2BMPHGQQ.js";import"./chunk-2QW3JQLE.js";import"./chunk-GR6KCFY7.js";import"./chunk-TABT53IN.js";import"./chunk-2IICEX4W.js";import"./chunk-DG7MZJRF.js";import"./chunk-ITB2EOPL.js";import"./chunk-LRFGNCHE.js";import"./chunk-M2X7KQLB.js";import"./chunk-UEAMDM4Y.js";import"./chunk-42C7ZIID.js";import"./chunk-OZYWYLNK.js";import"./chunk-RFMMFMJY.js";import"./chunk-SIA4BKYF.js";import"./chunk-4FG56T5T.js";import"./chunk-MTHZ7MWU.js";import"./chunk-WI5MSH4N.js";import{a as w,b as B,j as C}from"./chunk-SEMXXJCO.js";var le=(a,s)=>s.date;function de(a,s){if(a&1){let e=h();i(0,"span",15),c(1),o(),i(2,"button",16),u("click",function(){p(e);let t=l();return m(t.togglePublished())}),c(3),o()}if(a&2){let e=l();f("data-published",e.published()),r(),y(" ",e.published()?"Publicado":"Borrador"," "),r(),_("disabled",e.saving()),r(),y(" ",e.published()?"Despublicar":"Publicar"," ")}}function ce(a,s){a&1&&(i(0,"div",13),b(1,"ion-spinner",17),o())}function ue(a,s){if(a&1){let e=h();i(0,"div",14),b(1,"ion-icon",18),i(2,"p"),c(3,"Esta semana todav\xEDa no tiene men\xFA."),o(),i(4,"div",19)(5,"button",16),u("click",function(){p(e);let t=l();return m(t.createWeek())}),c(6," Crear semana en blanco "),o(),i(7,"button",20),u("click",function(){p(e);let t=l();return m(t.copyPreviousWeek())}),c(8," Copiar semana anterior "),o(),i(9,"button",20),u("click",function(){p(e);let t=l();return m(t.importFromDiversus())}),c(10," Importar de Diversus "),o()()()}if(a&2){let e=l();r(5),_("disabled",e.saving()),r(2),_("disabled",e.saving()),r(2),_("disabled",e.saving())}}function pe(a,s){a&1&&b(0,"ion-icon",43)}function me(a,s){if(a&1){let e=h();i(0,"button",40),u("click",function(){let t=p(e).$implicit,d=l(2);return m(d.selectDay(t.date))}),i(1,"span",41),c(2),o(),i(3,"span",42),c(4),o(),v(5,pe,1,0,"ion-icon",43),o()}if(a&2){let e=s.$implicit,n=l(2);f("data-active",e.date===n.selectedDate())("aria-current",e.date===n.selectedDate(
1)?"true":null),r(2),O(e.label),r(2),O(e.shortLabel),r(),M(e.filled?5:-1)}}function ge(a,s){if(a&1&&b(0,"img",44),a&2){let e=l().$implicit;_("src",e.image,T)}}function _e(a,s){a&1&&(i(0,"span",45),b(1,"ion-icon",53),o())}function be(a,s){if(a&1){let e=h();i(0,"div",36),v(1,ge,1,1,"img",44)(2,_e,2,0,"span",45),i(3,"input",46),u("ngModelChange",function(t){let d=p(e).$index,g=l(2);return m(g.updateCourseName("first",d,t))}),o(),i(4,"label",47),b(5,"ion-icon",48),i(6,"span",49),c(7),o(),i(8,"input",50),u("change",function(t){let d=p(e).$index,g=l(2);return m(g.uploadCourseImage("first",d,t))}),o()(),i(9,"button",51),u("click",function(){let t=p(e).$index,d=l(2);return m(d.removeCourse("first",t))}),b(10,"ion-icon",52),o()()}if(a&2){let e=s.$implicit,n=s.$index,t=l(2);r(),M(e.image?1:2),r(2),_("ngModel",e.name),f("aria-label","Nombre del primer plato "+(n+1)),r(4),y("Subir foto del primer plato ",n+1),r(),_("disabled",t.uploading()),r(),f("aria-label","Eliminar primer plato "+(n+1))}}function xe(a,s){if(a&1&&b(0,"img",44),a&2){let e=l().$implicit;_("src",e.image,T)}}function Ce(a,s){a&1&&(i(0,"span",45),b(1,"ion-icon",53),o())}function fe(a,s){if(a&1){let e=h();i(0,"div",36),v(1,xe,1,1,"img",44)(2,Ce,2,0,"span",45),i(3,"input",46),u("ngModelChange",function(t){let d=p(e).$index,g=l(2);return m(g.updateCourseName("second",d,t))}),o(),i(4,"label",47),b(5,"ion-icon",48),i(6,"span",49),c(7),o(),i(8,"input",50),u("change",function(t){let d=p(e).$index,g=l(2);return m(g.uploadCourseImage("second",d,t))}),o()(),i(9,"button",51),u("click",function(){let t=p(e).$index,d=l(2);return m(d.removeCourse("second",t))}),b(10,"ion-icon",52),o()()}if(a&2){let e=s.$implicit,n=s.$index,t=l(2);r(),M(e.image?1:2),r(2),_("ngModel",e.name),f("aria-label","Nombre del segundo plato "+(n+1)),r(4),y("Subir foto del segundo plato ",n+1),r(),_("disabled",t.uploading()),r(),f("aria-label","Eliminar segundo plato "+(n+1))}}function he(a,s){if(a&1&&b(0,"img",44),a&2){let e=l().$implicit;_("src",e.image,T)}}function ve(a,s){a&1&&(i(0,"span",45),b(1,"ion-icon",53),o())}function Me(a,s){if(a&1){let e=h();i(0,"div",36),v(1,he,1,1,"img",44)(2,ve,2,0,"span",45),i(3,"input",54),u("ngModelChange",function(t){let d=p(e).$index,g=l(2);return m(g.updateCourseName("dessert",d,t))}),o(),i(4,"label",47),b(5,"ion-icon",48),i(6,"span",49),c(7),o(),i(8,"input",50),u("change",function(t){let d=p(e).$index,g=l(2);return m(g.uploadCourseImage("dessert",d,t))}),o()(),i(9,"button",51),u("click",function(){let t=p(e).$index,d=l(2);return m(d.removeCourse("dessert",t))}),b(10,"ion-icon",52),o()()}if(a&2){let e=s.$implicit,n=s.$index,t=l(2);r(),M(e.image?1:2),r(2),_("ngModel",e.name),f("aria-label","Nombre del postre "+(n+1)),r(4),y("Subir foto del postre ",n+1),r(),_("disabled",t.uploading()),r(),f("aria-label","Eliminar postre "+(n+1))}}function we(a,s){if(a&1){let e=h();i(0,"section",21)(1,"label",22)(2,"span",23),c(3,"Precio del men\xFA (\u20AC)"),o(),i(4,"input",24),u("ngModelChange",function(t){p(e);let d=l();return m(d.price.set(t))}),o()(),i(5,"label",25)(6,"span",23),c(7,"Nota de postre"),o(),i(8,"input",26),u("ngModelChange",function(t){p(e);let d=l();return m(d.dessertNote.set(t))}),o()(),i(9,"button",16),u("click",function(){p(e);let t=l();return m(t.saveWeekFields())}),c(10," Guardar "),o()(),i(11,"section",27)(12,"button",20),u("click",function(){p(e);let t=l();return m(t.importFromDiversus())}),b(13,"ion-icon",28),c(14," Importar de Diversus "),o(),i(15,"button",20),u("click",function(){p(e);let t=l();return m(t.generateImages())}),b(16,"ion-icon",29),c(17," Generar fotos con IA "),o(),i(18,"p",30),c(19," Importar sustituye los platos de la semana por los publicados en el portal de Diversus, conservando la foto de los que ya exist\xEDan. Generar fotos crea con IA las que falten, sin tocar las subidas a mano. "),o()(),i(20,"nav",31),k(21,me,6,5,"button",32,le),o(),i(23,"div",33)(24,"section",34)(25,"h2",35),c(26,"Primeros platos"),o(),k(27,be,11,6,"div",36,V),i(29,"button",37),u("click",function(){p(e);let t=l();return m(t.addCourse("first"))}),c(30," A\xF1adir primer plato "),o()(),i(31,"section",34)(32,"h2",35),c(33,"Segundos platos"),o(),k(34,fe,11,6,"div",36,V),i(36,"button",37),u("click",function(){p(e);let t=l();return m(t.addCourse("second"))}),c(37," A\xF1adir segundo plato "),o()(),i(38,"section",34)(39,"h2",35),c(40,"Postres"),o(),k(41,Me,11,6,"div",36,V),i(43,"button",37),u("click",function(){p(e);let t=l();return m(t.addCourse("dessert"))}),c(44," A\xF1adir postre "),o(),i(45,"p",38),c(46," Si dejas los postres vac\xEDos, el empleado ver\xE1 solo la nota de postre de la semana. "),o()()(),i(47,"div",39)(48,"button",16),u("click",function(){p(e);let t=l();return m(t.saveDay())}),c(49," Guardar d\xEDa "),o()()}if(a&2){let e=l();r(4),_("ngModel",e.price()),r(4),_("ngModel",e.dessertNote()),r(),_("disabled",e.saving()),r(3),_("disabled",e.saving()),r(3),_("disabled",e.saving()),r(6),S(e.days()),r(6),S(e.firstCourses()),r(7),S(e.secondCourses()),r(7),S(e.desserts()),r(7),_("disabled",e.saving())}}var ye=["Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes"],ke=["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],Le=(()=>{class a{constructor(){this.menuService=A(ae),this.fileService=A(ne),this.ui=A(te),this.product=x("low_cost"),this.weekStart=x(oe(ie())),this.menu=x(null),this.selectedDate=x(""),this.loading=x(!0),this.saving=x(!1),this.uploading=x(!1),this.price=x(null),this.dessertNote=x(""),this.firstCourses=x([]),this.secondCourses=x([]),this.desserts=x([]),this.weekLabel=P(()=>{let e=N(this.weekStart());return`Del ${I(e[0])} al ${I(e[4])}`}),this.days=P(()=>{let e=this.menu();return N(this.weekStart()).map((n,t)=>({date:n,label:ye[t],shortLabel:I(n),filled:Se(e,n)}))}),this.published=P(()=>this.menu()?.published??!1),this.exists=P(()=>this.menu()!==null)}ngOnInit(){this.load()}load(){return C(this,null,function*(){this.loading.set(!0);try{let e=yield this.menuService.weekMenuAdmin(this.product(),this.weekStart());this.applyMenu(e)}catch(e){this.ui.presentToast(String(e),"danger"),this.applyMenu(null)}finally{this.loading.set(!1)}})}onProductChange(e){this.product.set(e),this.load()}
1shiftWeek(e){this.weekStart.set($(this.weekStart(),e*7)),this.load()}selectDay(e){this.selectedDate.set(e),this.loadDayCourses()}createWeek(){return C(this,null,function*(){yield this.run(()=>this.menuService.saveWeekMenu(this.product(),this.weekStart(),{}))})}copyPreviousWeek(){return C(this,null,function*(){yield this.run(()=>this.menuService.copyPreviousWeek(this.product(),this.weekStart()))})}generateImages(){return C(this,null,function*(){this.saving.set(!0);try{let e=yield this.menuService.generateImages(this.product(),this.weekStart());this.ui.presentToast(e.started?`Generando ${e.pending} fotos en segundo plano. Recarga la semana en unos minutos.`:"Todos los platos de la semana ya tienen foto","success")}catch(e){this.ui.presentToast(String(e),"danger")}finally{this.saving.set(!1)}})}importFromDiversus(){return C(this,null,function*(){yield this.run(()=>this.menuService.importFromDiversus(this.product(),this.weekStart()),"Men\xFA importado de Diversus")})}saveWeekFields(){return C(this,null,function*(){yield this.run(()=>this.menuService.saveWeekMenu(this.product(),this.weekStart(),{price:this.price(),dessertNote:this.dessertNote()||null}))})}saveDay(){return C(this,null,function*(){let e=this.selectedDate();e&&(yield this.run(()=>this.menuService.saveDay(this.product(),this.weekStart(),e,this.firstCourses().map(F),this.secondCourses().map(F),this.desserts().map(F))))})}togglePublished(){return C(this,null,function*(){yield this.run(()=>this.menuService.publish(this.product(),this.weekStart(),!this.published()))})}addCourse(e){this.courseList(e).update(n=>[...n,{id:"",name:"",image:null}])}removeCourse(e,n){this.courseList(e).update(t=>t.filter((d,g)=>g!==n))}updateCourseName(e,n,t){this.courseList(e).update(d=>d.map((g,E)=>E===n?B(w({},g),{name:t}):g))}courseList(e){return e==="first"?this.firstCourses:e==="second"?this.secondCourses:this.desserts}uploadCourseImage(e,n,t){return C(this,null,function*(){let d=t.target,g=d.files?.[0];if(!g)return;this.uploading.set(!0);let E=URL.createObjectURL(g);try{let[D]=yield this.fileService.uploadFiles("catering",[E],!0);D&&this.courseList(e).update(re=>re.map((L,se)=>se===n?B(w({},L),{image:D}):L))}catch(D){this.ui.presentToast(String(D),"danger")}finally{URL.revokeObjectURL(E),this.uploading.set(!1),d.value=""}})}run(e,n="Men\xFA guardado"){return C(this,null,function*(){this.saving.set(!0);try{this.applyMenu(yield e()),this.ui.presentToast(n,"success")}catch(t){this.ui.presentToast(String(t),"danger")}finally{this.saving.set(!1)}})}applyMenu(e){this.menu.set(e),this.price.set(e?.price??null),this.dessertNote.set(e?.dessertNote??"");let n=N(this.weekStart());n.includes(this.selectedDate())||this.selectedDate.set(n[0]),this.loadDayCourses()}loadDayCourses(){let e=this.menu()?.days.find(n=>n.date===this.selectedDate());this.firstCourses.set(e?e.firstCourses.map(n=>w({},n)):[]),this.secondCourses.set(e?e.secondCourses.map(n=>w({},n)):[]),this.desserts.set(e?(e.desserts??[]).map(n=>w({},n)):[])}static{this.\u0275fac=function(n){return new(n||a)}}static{this.\u0275cmp=z({type:a,selectors:[["app-b2b-admin-catering-menus-page"]],decls:25,vars:4,consts:[[1,"page-container"],[1,"page-header"],[1,"page-title"],[1,"page-subtitle"],["mode","md",1,"product-segment",3,"ionChange","value"],["value","low_cost"],["value","premium"],[1,"week-bar"],["type","button","aria-label","Semana anterior",1,"week-nav",3,"click"],["name","chevron-back-outline","aria-hidden","true"],[1,"week-label"],["type","button","aria-label","Semana siguiente",1,"week-nav",3,"click"],["name","chevron-forward-outline","aria-hidden","true"],[1,"loading-block"],[1,"empty-state"],[1,"status-badge"],["type","button",1,"primary-btn",3,"click","disabled"],["name","crescent"],["name","restaurant-outline","aria-hidden","true"],[1,"empty-actions"],["type","button",1,"ghost-btn",3,"click","disabled"],[1,"week-fields"],[1,"field"],[1,"field__label"],["type","number","min","0","step","0.01",1,"field__input",3,"ngModelChange","ngModel"],[1,"field","field--wide"],["type","text","placeholder","Fruta fresca, yogur, postre l\xE1cteo o dulce casero",1,"field__input",3,"ngModelChange","ngModel"],[1,"import-row"],["name","download-outline","aria-hidden","true"],["name","sparkles-outline","aria-hidden","true"],[1,"import-hint"],["aria-label","D\xEDas de la semana",1,"day-tabs"],["type","button",1,"day-tab"],[1,"courses"],[1,"course-column"],[1,"course-title"],[1,"course-row"],["type","button",1,"ghost-btn",3,"click"],[1,"course-hint"],[1,"day-actions"],["type","button",1,"day-tab",3,"click"],[1,"day-tab__name"],[1,"day-tab__date"],["name","checkmark-circle","aria-hidden","true",1,"day-tab__check"],["alt","",1,"course-thumb",3,"src"],["aria-hidden","true",1,"course-thumb","course-thumb--empty"],["type","text","placeholder","Nombre del plato",1,"field__input",3,"ngModelChange","ngModel"],[1,"upload-btn"],["name","cloud-upload-outline","aria-hidden","true"],[1,"visually-hidden"],["type","file","accept","image/*",3,"change","disabled"],["type","button",1,"icon-btn",3,"click"],["name","trash","aria-hidden","true"],["name","image-outline"],["type","text","placeholder","Nombre del postre",1,"field__input",3,"ngModelChange","ngModel"]],template:function(n,t){n&1&&(i(0,"ion-content")(1,"div",0)(2,"header",1)(3,"h1",2),c(4,"Men\xFAs de catering"),o(),i(5,"p",3),c(6,"Carga el men\xFA semanal de Low-Cost y Premium"),o()(),i(7,"ion-segment",4),u("ionChange",function(g){return t.onProductChange(g.detail.value)}),i(8,"ion-segment-button",5)(9,"ion-label"),c(10,"Catering Low-Cost"),o()(),i(11,"ion-segment-button",6)(12,"ion-label"),c(13,"Catering Premium"),o()()(),i(14,"div",7)(1
15,"button",8),u("click",function(){return t.shiftWeek(-1)}),b(16,"ion-icon",9),o(),i(17,"span",10),c(18),o(),i(19,"button",11),u("click",function(){return t.shiftWeek(1)}),b(20,"ion-icon",12),o(),v(21,de,4,4),o(),v(22,ce,2,0,"div",13)(23,ue,11,3,"div",14)(24,we,50,6),o()()),n&2&&(r(7),_("value",t.product()),r(11),O(t.weekLabel()),r(3),M(t.exists()?21:-1),r(),M(t.loading()?22:t.exists()?24:23))},dependencies:[ee,H,J,Y,K,Q,X,Z,q,U,G,W,R,j],styles:[".page-container[_ngcontent-%COMP%]{padding:24px;max-width:1100px;margin:0 auto}.page-title[_ngcontent-%COMP%]{font-size:26px;font-weight:700;color:#111827;margin:0}.page-subtitle[_ngcontent-%COMP%]{color:#6b7280;margin:4px 0 20px}.product-segment[_ngcontent-%COMP%]{max-width:420px;margin-bottom:20px}.week-bar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}.week-nav[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:8px;border:1px solid #d1d5db;background:#fff;color:#374151;cursor:pointer;display:flex;align-items:center;justify-content:center}.week-label[_ngcontent-%COMP%]{font-weight:600;color:#111827;min-width:220px}.status-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:999px;font-size:13px;font-weight:600;background:#f3f4f6;color:#6b7280}.status-badge[data-published=true][_ngcontent-%COMP%]{background:#dcfce7;color:#15803d}.primary-btn[_ngcontent-%COMP%]{background:#2563eb;color:#fff;border:none;border-radius:8px;padding:10px 18px;font-weight:600;cursor:pointer}.primary-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.ghost-btn[_ngcontent-%COMP%]{background:#fff;color:#2563eb;border:1px solid #2563eb;border-radius:8px;padding:10px 18px;font-weight:600;cursor:pointer}.loading-block[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 16px;color:#6b7280}.loading-block[_ngcontent-%COMP%]   ion-icon[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%]   ion-icon[_ngcontent-%COMP%]{font-size:42px}.empty-actions[_ngcontent-%COMP%]{display:flex;gap:12px;flex-wrap:wrap}.import-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:20px}.import-row[_ngcontent-%COMP%]   .ghost-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px}.import-hint[_ngcontent-%COMP%]{margin:0;font-size:13px;color:#6b7280;max-width:520px}.week-fields[_ngcontent-%COMP%]{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap;padding:16px;background:#f9fafb;border-radius:12px;margin-bottom:20px}.field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.field--wide[_ngcontent-%COMP%]{flex:1;min-width:260px}.field__label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#374151}.field__input[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:8px;padding:9px 12px;font-size:14px;width:100%;background:#fff;color:#111827}.day-tabs[_ngcontent-%COMP%]{display:flex;gap:8px;overflow-x:auto;margin-bottom:20px}.day-tab[_ngcontent-%COMP%]{position:relative;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:#111827;padding:10px 18px;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;min-width:120px}.day-tab[data-active=true][_ngcontent-%COMP%]{background:#f59e0b;border-color:#f59e0b;color:#fff}.day-tab__name[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.day-tab__date[_ngcontent-%COMP%]{font-size:12px;opacity:.8}.day-tab__check[_ngcontent-%COMP%]{position:absolute;top:6px;right:6px;font-size:14px;color:#16a34a}.courses[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px}.course-title[_ngcontent-%COMP%]{font-size:16px;font-weight:700;color:#111827;margin:0 0 12px}.course-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.course-thumb[_ngcontent-%COMP%]{width:44px;height:44px;border-radius:8px;object-fit:cover;flex-shrink:0}.course-thumb--empty[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;background:#f3f4f6;color:#9ca3af}.upload-btn[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:8px;border:1px solid #d1d5db;cursor:pointer;flex-shrink:0}.upload-btn[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{display:none}.icon-btn[_ngcontent-%COMP%]{width:38px;height:38px;border-radius:8px;border:1px solid #fecaca;background:#fff;color:#dc2626;cursor:pointer;flex-shrink:0}.day-actions[_ngcontent-%COMP%]{margin-top:24px}.visually-hidden[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.course-hint[_ngcontent-%COMP%]{margin:12px 0 0;font-size:12px;color:#6b7280}"],changeDetection:0})}}return a})();function F(a){return{id:a.id||null,name:a.name,image:a.image??null}}function Se(a,s){let e=a?.days.find(n=>n.date===s);return!!e&&e.firstCourses.length>0&&e.secondCourses.length>0}function oe(a){let s=new Date(`${a}T00:00:00Z`),e=(s.getUTCDay()+6)%7;return s.setUTCDate(s.getUTCDate()-e),s.toISOString().slice(0,10)}function N(a){let s=oe(a);return[0,1,2,3,4].map(e=>$(s,e))}function I(a){let s=new Date(`${a}T00:00:00Z`);return`${s.getUTCDate()} de ${ke[s.getUTCMonth()]}`}export{Le as B2bAdminCateringMenusPage};

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.