@happychef/reservation-sidebar 2.8.51 → 2.8.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ Arguments: `+Array.prototype.slice.call(c).join("")+`
6
6
  [getAvailableTablesForTime] Finding available tables for ${q} guests on ${O} at ${o}`);let u=W1(o,s,g);if(!u||u.length===0)return console.error(`[getAvailableTablesForTime] Could not compute required slots for ${O} ${o}`),[];let l={},v=W.filter(N=>N.date===O&&N.time&&N.guests>0).sort((N,x)=>{let w=N.time.split(":").map(Number),T=x.time.split(":").map(Number);return w[0]*60+w[1]-(T[0]*60+T[1])});console.log(`[getAvailableTablesForTime] Building occupancy map (Processing ${v.length} existing reservations)`);for(let N of v){let x=I0(N.duration,s),w=w1(N),T=[];if(w.length>0?T=w:T=x1(b,N.date,N.time,N.guests,l,N.zitplaats||null,x),T.length>0){let C=W1(N.time,x,g);if(!C||C.length===0)continue;T.forEach(k=>{l[k]||(l[k]=new Set),C.forEach(E=>l[k].add(E));});}}let R=xb(O),X=W.filter(N=>N.date===R&&N.time&&N.guests>0);for(let N of X){let x=I0(N.duration,s),w=N.time.split(":").map(Number);if(w[0]*60+w[1]+x>1440){let C=w1(N),k=C.length>0?C:x1(b,N.date,N.time,N.guests,l,N.zitplaats||null,x);if(k.length>0){let E=W1(N.time,x,g);E&&E.length>0&&k.forEach(Y=>{l[Y]||(l[Y]=new Set),E.forEach(D=>l[Y].add(D));});}}}if(u.some(N=>N>=1440)){let N=wb(O),x=W.filter(w=>w.date===N&&w.time&&w.guests>0);for(let w of x){let T=I0(w.duration,s),C=w1(w),k=C.length>0?C:x1(b,w.date,w.time,w.guests,l,w.zitplaats||null,T);if(k.length>0){let E=W1(w.time,T,g);E&&E.length>0&&k.forEach(Y=>{l[Y]||(l[Y]=new Set),E.forEach(D=>l[Y].add(D+1440));});}}}console.log("[getAvailableTablesForTime] Occupancy map built");let B=kM(b,n),y=[];console.log(`[getAvailableTablesForTime] Checking ${B.length} tables for individual availability`);for(let N of B)wM(N,O,o)&&N.minCapacity<=q&&q<=N.maxCapacity&&xM(N.tableNumber,u,l)&&(console.log(`[getAvailableTablesForTime] Table ${N.tableNumber} is available`),y.push(N));return console.log(`[getAvailableTablesForTime] Found ${y.length} individually available tables: ${y.map(N=>N.tableNumber).join(", ")}`),y.sort((N,x)=>N.tableNumber-x.tableNumber),y}catch(a){return console.error(`[getAvailableTablesForTime] Error for ${O} ${o}:`,a),[]}}_b.exports={isTimeAvailableSync:Db,filterTimeblocksByTableAvailability:Pb,getAvailableTimeblocksWithTableCheck:So,getAvailableTablesForTime:Co};});var Fb=i0((Cq,Ib)=>{var k2=y2(),{isDateAvailable:Eo}=CM(),{getAvailableTimeblocks:ko}=M2(),{isTimeAvailableSync:wo}=E2(),{daysOfWeekEnglish:xo,getMealTypeByTime:Do}=l1(),w2="Europe/Brussels";function Po(b,O,o,q){if(!q||!q.trim())return true;let W=Do(o);if(!W)return false;let n=k2.tz(O,"YYYY-MM-DD",w2);if(!n.isValid())return false;let a=xo[n.day()],f=`openinghours-${W}`,d=b[f]&&b[f].schemeSettings&&b[f].schemeSettings[a]?b[f].schemeSettings[a]:null;return d?d.giftcardsEnabled!==true||!Array.isArray(d.giftcards)||d.giftcards.length===0?false:d.giftcards.includes(q):(console.error(`No day settings found for ${a} ${W}`),false)}function _o(b,O,o,q,W=[],n=null,a=false,f=null,d=null){let s=typeof window<"u"?window.currentReservationTicketItem:null;if(s&&!s.normalOpeningTimes){let S=k2.tz(O,"YYYY-MM-DD",w2).startOf("day"),B=s.filterStartDate?k2.tz(s.filterStartDate,"YYYY-MM-DD",w2).startOf("day"):null,y=s.filterEndDate?k2.tz(s.filterEndDate,"YYYY-MM-DD",w2).endOf("day"):null;if(B&&S.isBefore(B))return console.log(`Date ${O} is before the allowed start ${s.filterStartDate}`),false;if(y&&S.isAfter(y))return console.log(`Date ${O} is after the allowed end ${s.filterEndDate}`),false}console.log(`
7
7
  ===== Checking date availability for ${q} guests on ${O} =====`),console.log("Restaurant data floors:",b.floors?"present":"missing"),console.log("Table settings:",JSON.stringify(b["table-settings"]||{},null,2));let g=b?.["table-settings"]||{},u=g.isInstalled===true&&g.assignmentMode==="automatic"&&b.floors&&Array.isArray(b.floors);if(console.log(`Table assignment is ${u?"ENABLED":"DISABLED"} for date ${O}`),!Eo(b,O,o,q,W,n,a,f))return console.log(`Date ${O} fails basic availability check`),false;if(!u)return console.log(`Table assignment disabled, date ${O} is available`),true;console.log(`Getting available timeblocks for ${O}`);let v=ko(b,O,o,q,W,n,a,f);if(console.log(`Found ${Object.keys(v).length} available timeblocks before table check`),Object.keys(v).length===0)return console.log(`No available timeblocks on ${O}, date is unavailable`),false;console.log(`Checking table availability for each timeblock on ${O}`);let R=false,X=0;for(let S of Object.keys(v)){if(X++,n&&!Po(b,O,S,n)){console.log(`Time ${S} doesn't match giftcard meal requirements`);continue}if(console.log(`Checking table availability for ${S} on ${O} for ${q} guests`),wo(b,O,S,q,o,d,f)){console.log(`Found available time ${S} with table assignment!`),R=true;break}}return console.log(`Checked ${X}/${Object.keys(v).length} timeblocks`),console.log(`Date ${O} with table check: ${R?"Available":"Unavailable"}`),R}Ib.exports={isDateAvailableWithTableCheck:_o};});var Ub=i0(()=>{var{isTimeAvailable:Io}=EM(),Fo={_id:"poer","general-settings":{zitplaatsen:30,uurOpVoorhand:4,dagenInToekomst:90,maxGasten:8,intervalReservatie:15,duurReservatie:120,minutenTotEinde:135,showNoticeForMaxGuests:0,noticePhoneNumber:"",storedNumber:76},menu:[{name:"POER Menu",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"12:00",endHour:"23:00",daysOfWeek:["zaterdag","dinsdag","woensdag","donderdag","vrijdag"],storedNumber:36,_id:"674a9033c1956dd233bafaad"},{name:"A la carte",startDate:"2024-11-30",endDate:"2030-01-01",startHour:"12:00",endHour:"14:00",daysOfWeek:["dinsdag","woensdag","donderdag","vrijdag"],storedNumber:28,_id:"674a9084c1956dd233bafaae"},{name:"Ik weet het nog niet",startDate:"2024-11-30",endDate:"2030-01-01",startHour:"12:00",endHour:"14:00",daysOfWeek:["dinsdag","woensdag","donderdag","vrijdag"],storedNumber:41,_id:"674a90bc64cc52acdd5e6cc2"},{name:"Lunch",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"12:00",endHour:"14:00",daysOfWeek:["dinsdag","woensdag","donderdag","vrijdag"],storedNumber:23,_id:"674adb4e8d6385fb343499f7"},{name:"A la carte",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"18:30",endHour:"20:30",daysOfWeek:["dinsdag","woensdag","donderdag"],storedNumber:50,_id:"674adbf58d6385fb343499f8"},{name:"Ik weet het nog niet",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"18:30",endHour:"20:30",daysOfWeek:["dinsdag","donderdag","woensdag"],storedNumber:54,_id:"674adc208d6385fb343499f9"}],mededeling:[{mededeling:"Gelieve er rekening mee te houden dat we op vrijdagavond en zaterdagavond enkel ons POER menu serveren.",startDate:"2024-11-01",endDate:"2030-01-30",startTime:"18:30",endTime:"20:30",daysOfWeek:["vrijdag","zaterdag"],storedNumber:95,_id:"674ade0a8d6385fb343499fa"}],settings:{pageTitle:"Reserveer nu",generalNotification:"",alignment:"fullScreenColor",backgroundBlur:"blurBackground",storedNumber:61},colors:{backgroundType:"solid",backgroundColor:"#e0debe",gradientStartColor:"#FFFFFF",gradientEndColor:"#000000",animationType:"none",widgetBackgroundColor:"#000000",widgetTextColor:"#FFFFFF",textColor:"#000000",containerColor:"#FFFFFF",buttonColor:"#000000",buttonTextColor:"#FFFFFF",storedNumber:81},exceptions:[{title:"Extra mensen donderdagmiddag",type:"Opening",timeframe:"lunch",startDate:"2024-12-05",endDate:"2024-12-05",startHour:"12:00",endHour:"16:00",maxSeats:"34",daysOfWeek:["donderdag"],storedNumber:74,_id:"67507dc98fb61d6afd54acb0"},{title:"Extra personen donderdagavond",type:"Uitzondering",timeframe:"dinner",startDate:"2024-12-05",endDate:"2024-12-05",startHour:"18:30",endHour:"23:00",maxSeats:"27",daysOfWeek:["donderdag"],storedNumber:88,_id:"67507e3383d7f2de02628f4a"},{title:"Cong\xE9 Periode 22/12 tot 9/01",type:"Sluiting",timeframe:"Volledige Dag",startDate:"2024-12-22",endDate:"2025-01-09",daysOfWeek:[],storedNumber:89,_id:"67511bb38fb61d6afd54acba"}],"openinghours-lunch":{schemeSettings:{Tuesday:{enabled:true,startTime:"12:00",endTime:"13:30",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Wednesday:{enabled:true,startTime:"12:00",endTime:"16:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Thursday:{enabled:true,startTime:"12:00",endTime:"16:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Friday:{enabled:true,startTime:"12:30",endTime:"13:30",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]}},storedNumber:2},"openinghours-dinner":{schemeSettings:{Tuesday:{enabled:true,startTime:"18:30",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"24",shiftsEnabled:false,shifts:[]},Wednesday:{enabled:true,startTime:"16:00",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"24",shiftsEnabled:false,shifts:[]},Thursday:{enabled:true,startTime:"16:00",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"24",shiftsEnabled:false,shifts:[]},Friday:{enabled:true,startTime:"18:30",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Saturday:{enabled:true,startTime:"18:30",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]}},storedNumber:6},fonts:{titleFont:{font:"Poppins",weight:"400"},subtitleFont:{font:"Poppins",weight:"400"},labelFont:{font:"Poppins",weight:"400"},buttonFont:{font:"Poppins",weight:"400"}},theme:{id:10,title:"Herfstbladeren",color:"#D35400",image:"/static/media/default-theme.webp"}},Ho=[{guests:10,time:"12:00",date:"2024-12-18"},{guests:100,time:"15:00",date:"2024-12-04"}];console.log("--- Is Time Available Tests ---");var Hb="2024-12-10",jb=1e3,jo=["12:00","12:15","13:00","19:00","20:00","20:15"];jo.forEach(b=>{let O=Io(Fo,Hb,b,Ho,jb);console.log(`Is ${b} on ${Hb} available for ${jb} guests?`,O);});});var PM=i0((wq,Gb)=>{function DM(b){let O=parseInt(b.split(":")[0],10);return O>=4&&O<11?"breakfast":O>=11&&O<16?"lunch":O>=16&&O<23?"dinner":null}function N0(b,...O){console.log(`[MaxGroupsFilter] ${b}`,...O);}function Go(b){if(b==null)return null;if(typeof b=="object"&&b!==null&&"$numberInt"in b){let O=parseInt(b.$numberInt,10);return isNaN(O)?null:O}if(typeof b=="number")return Number.isInteger(b)?b:null;if(typeof b=="string"){let O=parseInt(b,10);return isNaN(O)?null:O}return null}function Yo(b,O,o,q,W){N0(`--- Running MaxGroupsFilter for Date: ${O}, Guests: ${W} ---`);let n=Object.keys(b).filter(g=>g.startsWith("max-groups-"));N0("Received restaurantData max-group keys:",n.length>0?n:"None found");let a={},f=parseInt(W,10);if(isNaN(f)||f<=0)return N0(`Invalid guest count (${W}). Returning all ${Object.keys(o).length} input blocks unfiltered.`),o;let d=q.filter(g=>g.date===O);N0(`Relevant reservations on ${O}: ${d.length}`),N0(`Input timeblocks count: ${Object.keys(o).length}`);let s={};d.forEach(g=>{let u=DM(g.time);u&&(s[u]||(s[u]=[]),s[u].push(g));}),N0("Reservations grouped by meal type:",s);for(let[g,u]of Object.entries(o)){let l=DM(g);if(N0(`
8
8
  Checking Time: ${g} -> Determined Meal: ${l}`),!l){N0(` Time ${g} has no associated meal type. Keeping block.`),a[g]=u;continue}let v=`max-groups-${l}`,R=b[v];if(N0(` Looking for settings using key: "${v}"`),!R||typeof R!="object"){N0(` No settings found for key "${v}". Filter doesn't apply. Keeping block.`),a[g]=u;continue}N0(` Found settings for ${l}:`,JSON.stringify(R));let X=true,S=Object.keys(R).map(B=>parseInt(B,10)).filter(B=>!isNaN(B)&&B>0).sort((B,y)=>B-y);N0(` Defined numeric limit sizes to check for ${l}: [${S.join(", ")}]`);for(let B of S){let y=String(B);if(N0(` Checking Limit Condition: Groups of size >= ${B}`),f>=B){N0(` Applicable: Booking guests (${f}) >= Limit threshold (${B})`);let N=Go(R[y]);if(N0(` Max groups allowed for >=${B} is: ${N} (raw setting: ${JSON.stringify(R[y])})`),N===null||N<0){N0(` Skipping check: Invalid or non-positive max count defined for size ${B}.`);continue}let w=(s[l]||[]).filter(T=>{let C=parseInt(T.guests,10);return !isNaN(C)&&C>=B}).length;if(N0(` Count of existing groups >=${B} found in ${l}: ${w}`),w+1>N){N0(` *** VIOLATION DETECTED *** for limit >=${B}.`),N0(` (Existing Groups: ${w} + New Group: 1 = ${w+1}, which is > Max Allowed: ${N})`),N0(` Blocking time ${g} due to this violation.`),X=false;break}else N0(` OK: Limit for >=${B} not exceeded. (Existing: ${w} + New: 1 <= Max: ${N})`);}else N0(` Not Applicable: Booking guests (${f}) < Limit threshold (${B}). Skipping this check.`);}X?(N0(` \u2705 Result for time ${g}: ALLOWED (passed all applicable checks)`),a[g]=u):N0(` \u274C Result for time ${g}: BLOCKED (failed at least one limit check)`);}return N0(`--- MaxGroupsFilter Finished. Output timeblocks count: ${Object.keys(a).length} ---`),a}Gb.exports={filterTimeblocksByMaxGroups:Yo,getMealType:DM};});var _M=i0((xq,Yb)=>{function Ko(b){let O=parseInt(b.split(":")[0],10);return O>=4&&O<11?"breakfast":O>=11&&O<16?"lunch":O>=16&&O<23?"dinner":null}function Vo(b){if(!b)return null;if(b.$numberInt)return parseInt(b.$numberInt,10);if(typeof b=="number")return b;if(typeof b=="string"){let O=parseInt(b,10);return isNaN(O)?null:O}return null}function Qo(b,O,o){return b.filter(q=>q.date===O&&q.time===o).reduce((q,W)=>q+(parseInt(W.guests,10)||0),0)}function $o(b,O,o,q,W){let n={};for(let[a,f]of Object.entries(o)){let d=Ko(a);if(!d){n[a]=f;continue}let s=b[`max-arrivals-${d}`];if(!s){n[a]=f;continue}let g=Vo(s[a]);if(g===null){n[a]=f;continue}Qo(q,O,a)+W<=g&&(n[a]=f);}return n}Yb.exports={filterTimeblocksByMaxArrivals:$o};});var FM=i0((Pq,Vb)=>{var Kb=y2(),{shifts:Dq,parseTime:IM,getMealTypeByTime:Jo}=Z1();function Zo(){let b=Kb().tz("Europe/Brussels");return b.hours()*60+b.minutes()}function M4(b,O,o){let q=Kb().tz("Europe/Brussels").format("YYYY-MM-DD");if(o!==q)return b;console.log(`Applying stop time filter for today (${o})`);let W=O?.["general-settings"]||{},n=Zo(),a=W.ontbijtStop||null,f=W.lunchStop||null,d=W.dinerStop||null,s=a?IM(a):null,g=f?IM(f):null,u=d?IM(d):null,l={},v=0,R=0,X=0;for(let S in b){if(!b.hasOwnProperty(S))continue;let B=Jo(S),y=false;B==="breakfast"&&s!==null&&!isNaN(s)&&n>=s?(y=true,v++):B==="lunch"&&g!==null&&!isNaN(g)&&n>=g?(y=true,R++):B==="dinner"&&u!==null&&!isNaN(u)&&n>=u&&(y=true,X++),y||(l[S]=b[S]);}return v>0&&console.log(`Stop time filter removed ${v} breakfast slots.`),R>0&&console.log(`Stop time filter removed ${R} lunch slots.`),X>0&&console.log(`Stop time filter removed ${X} dinner slots.`),l}Vb.exports={filterTimeblocksByStopTimes:M4};});var Jb=i0((_q,$b)=>{var{timeblocksAvailable:x2}=$1(),{getAvailableTimeblocks:z4}=M2(),{getDataByDateAndMealWithExceptions:b4}=Q1(),{getDataByDateAndMeal:p4}=l1(),{filterTimeblocksByMaxGroups:O4}=PM(),{filterTimeblocksByMaxArrivals:Qb}=_M(),{filterTimeblocksByStopTimes:c4}=FM(),{getAvailableTimeblocksWithTableCheck:A4}=E2();function o4(b,O){let o=90;b["general-settings"]&&b["general-settings"].dagenInToekomst&&parseInt(b["general-settings"].dagenInToekomst,10)>0&&(o=parseInt(b["general-settings"].dagenInToekomst,10));let q="Europe/Amsterdam",W=new Date,n=new Date(W.toLocaleString("en-US",{timeZone:q})),a=new Date(n.getTime());a.setDate(a.getDate()+o),a.setHours(23,59,59,999);let[f,d,s]=O.split("-").map(Number),g=new Date(Date.UTC(f,d-1,s));return new Date(g.toLocaleString("en-US",{timeZone:q}))<=a}function q4(b,O,o,q,W=[],n=null,a=null,f=null){let d=[];if(!o4(b,O))return d.push({type:"DATE_OUT_OF_RANGE"}),d;let s=["breakfast","lunch","dinner"],g=false,u=false;for(let y of s)b4(b,O,y)&&(g=true),p4(b,O,y)&&(u=true);if(!g)return u?d.push({type:"EXCEPTION_CLOSURE"}):d.push({type:"OPENING_HOURS_DISABLED"}),d;let l=x2(b,O,[],q,[],null,false,a);if(Object.keys(l).length===0)return d.push({type:"CAPACITY_INSUFFICIENT"}),d;let v=x2(b,O,o,q,[],null,false,a);if(Object.keys(v).length===0)return d.push({type:"CAPACITY_REACHED"}),d;if(n){let y=x2(b,O,o,q,[],n,false,a);if(Object.keys(y).length===0)return d.push({type:"GIFTCARD_MISMATCH"}),d}let R=x2(b,O,o,q,W,n,false,a);if(Object.keys(R).length===0)return d.push({type:"BLOCKED_SLOTS"}),d;let X=z4(b,O,o,q,W,n,false,a);if(Object.keys(X).length===0)return d.push({type:"TODAY_TIME_RESTRICTION"}),d;if(X=O4(b,O,X,o,q),Object.keys(X).length===0)return d.push({type:"MAX_GROUPS"}),d;if(X=Qb(b,O,X,o,q),Object.keys(X).length===0)return d.push({type:"MAX_ARRIVALS"}),d;let S=b?.["table-settings"]||{};if(S.isInstalled===true&&S.assignmentMode==="automatic"){let y=A4(b,O,X,q,o,f,a);if(Object.keys(y).length===0)return d.push({type:"TABLE_PLAN"}),d;if(X=Qb(b,O,y,o,q),Object.keys(X).length===0)return d.push({type:"MAX_ARRIVALS"}),d}return X=c4(X,b,O),Object.keys(X).length===0&&d.push({type:"TODAY_TIME_RESTRICTION"}),d}$b.exports={getDateClosingReasons:q4};});var b2=i0((Iq,Zb)=>{var e4={...LM(),...g2(),...$1()},W4={...T2()},n4={...Q1(),...l1()},a4={...E1()},d4={...hb(),...M2(),...gM(),...CM(),...EM(),...E2(),...Fb(),...Z1(),...Ub(),...Jb()},t4={...FM(),..._M(),...PM()};Zb.exports={...e4,...W4,...n4,...a4,...d4,...t4};});var sp=i0((QM,rp)=>{(function(b,O){typeof QM=="object"&&typeof rp<"u"&&typeof l2=="function"?O(N2()):typeof define=="function"&&define.amd?define(["../moment"],O):O(b.moment);})(QM,(function(b){var O="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),o="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),q=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],W=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,n=b.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,f){return a?/-MMM-/.test(f)?o[a.month()]:O[a.month()]:O},monthsRegex:W,monthsShortRegex:W,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:q,longMonthsParse:q,shortMonthsParse:q,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xE9\xE9n minuut",mm:"%d minuten",h:"\xE9\xE9n uur",hh:"%d uur",d:"\xE9\xE9n dag",dd:"%d dagen",w:"\xE9\xE9n week",ww:"%d weken",M:"\xE9\xE9n maand",MM:"%d maanden",y:"\xE9\xE9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(a===1||a===8||a>=20?"ste":"de")},week:{dow:1,doy:4}});return n}));});function R0(b,{insertAt:O}={}){if(!b||typeof document>"u")return;let o=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css",O==="top"&&o.firstChild?o.insertBefore(q,o.firstChild):o.appendChild(q),q.styleSheet?q.styleSheet.cssText=b:q.appendChild(document.createTextNode(b));}R0(`.new-reservation-page .value-selector{display:flex;flex-direction:column;gap:15px;margin-bottom:20px}.new-reservation-page .non-absolute{position:relative!important}.new-reservation-page .non-absolute:before{background:none}.new-reservation-page .predefined-values{display:flex;gap:10px}.new-reservation-page .predefined-value-button{flex:1;padding:10px;border:1px solid #ccc;border-radius:var(--border-radius);background-color:var(--color-white);cursor:pointer;font-size:1rem;transition:background-color .3s ease}.new-reservation-page .predefined-value-button.active,.new-reservation-page .predefined-value-button:hover{background-color:var(--color-blue);color:var(--color-white)}.new-reservation-page .slider-container{display:flex;align-items:center;gap:15px}.new-reservation-page .slider{flex:1;appearance:none;-webkit-appearance:none;height:5px;background:#ddd;border-radius:5px;outline:none}.new-reservation-page .slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:var(--color-blue);cursor:pointer;border-radius:50%}.new-reservation-page .value-input{width:80px;padding:10px;border:1px solid #ccc;border-radius:var(--border-radius);font-size:1rem}
9
- `);var NA=({setGuests:b,value:O,onChange:o})=>{let q=[1,2,3,"4+"],[W,n]=e0.useState(O||""),[a,f]=e0.useState(false),d=u=>{u==="4+"?(f(true),n(4),b(4),o({target:{name:"guests",value:4}})):(f(false),n(u),b(u),o({target:{name:"guests",value:u}}));},s=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});},g=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});};return e0__default.default.createElement("div",{className:"value-selector",translate:"no"},e0__default.default.createElement("div",{className:"predefined-values"},q.map(u=>e0__default.default.createElement("button",{key:u,type:"button",className:`predefined-value-button ${W==u||u==="4+"&&a?"active":""}`,onClick:()=>d(u)},u==="4+"?"4+":`${u} p`))),e0__default.default.createElement(framerMotion.AnimatePresence,null,a&&e0__default.default.createElement(framerMotion.motion.div,{className:"slider-container",initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0}},e0__default.default.createElement("input",{type:"range",min:"4",max:"15",step:"1",value:W,onChange:s,className:"slider non-absolute"}),e0__default.default.createElement("input",{type:"number",name:"guests",value:W,onChange:g,className:"value-input",min:"4",max:"100",step:"1"}))))},L2=NA;var L1=_0(e1());var $z=_0(e1()),Jz=b=>{let O=(0, $z.default)().tz("Europe/Brussels").startOf("day");return b.clone().add(6,"days").endOf("day").isBefore(O)},Zz=(b,O)=>b.isSame(O,"day");R0(`.new-reservation-page .calendar-container{position:relative;width:100%}.new-reservation-page .calendar-container .calendar-display{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;user-select:none;text-align:left;border-radius:5px}.new-reservation-page .calendar-container .calendar-display span:first-child{flex-grow:1}.new-reservation-page .calendar-container .calendar{position:absolute;z-index:1000;width:100%;background-color:#fff;border:1px solid #ccc;margin-top:5px;padding:10px;border-radius:10px;animation:fadeInCalendar .3s ease-in-out;box-shadow:0 2px 10px #0000001a}@keyframes fadeInCalendar{0%{opacity:0}to{opacity:1}}.new-reservation-page .calendar-container .availability-hold-btn{font-size:10px}.new-reservation-page .calendar-container .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px;flex-wrap:wrap}.new-reservation-page .calendar-container .calendar-header button{background-color:transparent;border:none;cursor:pointer;font-size:18px}.new-reservation-page .calendar-container .calendar-header span{font-size:15px;color:gray;font-weight:500}.new-reservation-page .calendar-container .calendar-weeks-wrapper{overflow:hidden;position:relative;width:100%}.new-reservation-page .calendar-container .calendar-table{width:100%;border-collapse:collapse}.new-reservation-page .calendar-container .calendar-table th,.new-reservation-page .calendar-container .calendar-table td{width:14.28%;text-align:center;padding:5px}.calendar-container .calendar-table th{color:#666;font-weight:400;padding-bottom:10px}.new-reservation-page .calendar-container .calendar-table td{vertical-align:middle;cursor:pointer;border:none;opacity:1;position:relative}.new-reservation-page .calendar-container .calendar-table td.empty-day{cursor:default}.new-reservation-page .calendar-container .calendar-table td:hover .day-square.available{transform:scale(1.05)}.new-reservation-page .calendar-container .day-square{position:relative;width:38px;height:38px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;flex-direction:column;transition:all .2s ease;font-size:16px;margin:0 auto}.new-reservation-page .calendar-container .day-number{line-height:1;z-index:2}.new-reservation-page .calendar-container .available .day-square{background-color:#cfc;color:#060}.new-reservation-page .calendar-container .available:hover .day-square{background-color:#b3ffb3}.new-reservation-page .calendar-container .available:active .day-square{background-color:#9f9}.new-reservation-page .calendar-container .unavailable .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .gray-out .day-square{background-color:#e0e0e0;color:#999;cursor:not-allowed}.new-reservation-page .calendar-container .selected .day-square{background-color:#060;color:#cfc}.new-reservation-page .calendar-container .has-blocked-slots .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .has-blocked-slots:hover .day-square{background-color:#8b000033}.new-reservation-page .calendar-container .has-blocked-slots.selected .day-square{background-color:#8b0000;color:#fff}.new-reservation-page .calendar-container .calendar-table td.unavailable,.new-reservation-page .calendar-container .calendar-table td.gray-out{cursor:not-allowed}.new-reservation-page .calendar-container .calendar-table td.unavailable:hover .day-square,.new-reservation-page .calendar-container .calendar-table td.gray-out:hover .day-square{transform:none}.new-reservation-page .calendar-container .calendar-table td{border:none}.new-reservation-page .calendar-container .arrow{margin-left:auto;color:gray;display:flex;align-items:center}.new-reservation-page .calendar-container .available .availability-badge{background:#38a169}.new-reservation-page .calendar-container .selected .availability-badge{background:#2d3748}.new-reservation-page .date-quick-label{font-size:14px;color:#555;margin-bottom:6px;display:block}.new-reservation-page .date-quick-picks{display:flex;gap:0;margin-bottom:8px;border:1.5px solid #d0d5dd;border-radius:8px;overflow:hidden}.new-reservation-page .date-quick-btn{flex:1;padding:10px 0;border:none;background:#fff;color:#344054;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.new-reservation-page .date-quick-btn:not(:last-child){border-right:1.5px solid #d0d5dd}.new-reservation-page .date-quick-btn:hover{background:#f9fafb}.new-reservation-page .date-quick-btn.active{background:#eef4ff;color:#1a56db;box-shadow:inset 0 0 0 1.5px #1a56db;font-weight:600}@media screen and (max-width:900px){.calendar-container .day-square{width:35px!important;height:35px!important;font-size:15px!important}.calendar-container .calendar-header span{font-size:12px}.new-reservation-page .calendar-container .availability-toggle-btn{padding:5px 8px;font-size:11px}}
9
+ `);var NA=({setGuests:b,value:O,onChange:o})=>{let q=[1,2,3,"4+"],[W,n]=e0.useState(O||""),[a,f]=e0.useState(false),d=u=>{u==="4+"?(f(true),n(4),b(4),o({target:{name:"guests",value:4}})):(f(false),n(u),b(u),o({target:{name:"guests",value:u}}));},s=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});},g=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});};return e0__default.default.createElement("div",{className:"value-selector",translate:"no"},e0__default.default.createElement("div",{className:"predefined-values"},q.map(u=>e0__default.default.createElement("button",{key:u,type:"button",className:`predefined-value-button ${W==u||u==="4+"&&a?"active":""}`,onClick:()=>d(u)},u==="4+"?"4+":`${u} p`))),e0__default.default.createElement(framerMotion.AnimatePresence,null,a&&e0__default.default.createElement(framerMotion.motion.div,{className:"slider-container",initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0}},e0__default.default.createElement("input",{type:"range",min:"4",max:"15",step:"1",value:W,onChange:s,className:"slider non-absolute"}),e0__default.default.createElement("input",{type:"number",name:"guests",value:W,onChange:g,className:"value-input",min:"4",max:"100",step:"1"}))))},L2=NA;var L1=_0(e1());var $z=_0(e1()),Jz=b=>{let O=(0, $z.default)().tz("Europe/Brussels").startOf("day");return b.clone().add(6,"days").endOf("day").isBefore(O)},Zz=(b,O)=>b.isSame(O,"day");R0(`.new-reservation-page .calendar-container{position:relative;width:100%}.new-reservation-page .calendar-container .calendar-display{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;user-select:none;text-align:left;border-radius:5px}.new-reservation-page .calendar-container .calendar-display span:first-child{flex-grow:1}.new-reservation-page .calendar-container .calendar{position:absolute;z-index:1000;width:100%;background-color:#fff;border:1px solid #ccc;margin-top:5px;padding:10px;border-radius:10px;animation:fadeInCalendar .3s ease-in-out;box-shadow:0 2px 10px #0000001a}@keyframes fadeInCalendar{0%{opacity:0}to{opacity:1}}.new-reservation-page .calendar-container .availability-hold-btn{font-size:10px}.new-reservation-page .calendar-container .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px;flex-wrap:wrap}.new-reservation-page .calendar-container .calendar-header button{background-color:transparent;border:none;cursor:pointer;font-size:18px}.new-reservation-page .calendar-container .calendar-header span{font-size:15px;color:gray;font-weight:500}.new-reservation-page .calendar-container .calendar-weeks-wrapper{overflow:hidden;position:relative;width:100%}.new-reservation-page .calendar-container .calendar-table{width:100%;border-collapse:collapse}.new-reservation-page .calendar-container .calendar-table th,.new-reservation-page .calendar-container .calendar-table td{width:14.28%;text-align:center;padding:5px}.calendar-container .calendar-table th{color:#666;font-weight:400;padding-bottom:10px}.new-reservation-page .calendar-container .calendar-table td{vertical-align:middle;cursor:pointer;border:none;opacity:1;position:relative}.new-reservation-page .calendar-container .calendar-table td.empty-day{cursor:default}.new-reservation-page .calendar-container .calendar-table td:hover .day-square.available{transform:scale(1.05)}.new-reservation-page .calendar-container .day-square{position:relative;width:38px;height:38px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;flex-direction:column;transition:all .2s ease;font-size:16px;margin:0 auto}.new-reservation-page .calendar-container .day-number{line-height:1;z-index:2}.new-reservation-page .calendar-container .available .day-square{background-color:#cfc;color:#060}.new-reservation-page .calendar-container .available:hover .day-square{background-color:#b3ffb3}.new-reservation-page .calendar-container .available:active .day-square{background-color:#9f9}.new-reservation-page .calendar-container .unavailable .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .gray-out .day-square{background-color:#e0e0e0;color:#999;cursor:not-allowed}.new-reservation-page .calendar-container .selected .day-square{background-color:#060;color:#cfc}.new-reservation-page .calendar-container .has-blocked-slots .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .has-blocked-slots:hover .day-square{background-color:#8b000033}.new-reservation-page .calendar-container .has-blocked-slots.selected .day-square{background-color:#8b0000;color:#fff}.new-reservation-page .calendar-container .calendar-table td.unavailable,.new-reservation-page .calendar-container .calendar-table td.gray-out{cursor:not-allowed}.new-reservation-page .calendar-container .calendar-table td.unavailable:hover .day-square,.new-reservation-page .calendar-container .calendar-table td.gray-out:hover .day-square{transform:none}.new-reservation-page .calendar-container .calendar-table td{border:none}.new-reservation-page .calendar-container .arrow{margin-left:auto;color:gray;display:flex;align-items:center}.new-reservation-page .calendar-container .available .availability-badge{background:#38a169}.new-reservation-page .calendar-container .selected .availability-badge{background:#2d3748}.new-reservation-page .date-quick-label{font-size:14px;color:#555;margin-bottom:6px;display:block}.new-reservation-page .date-quick-picks{display:flex;gap:0;margin-bottom:8px;border:1.5px solid #d0d5dd;border-radius:8px;overflow:hidden}.new-reservation-page .date-quick-btn{flex:1;padding:10px 0;border:none;background:#fff;color:#344054;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.new-reservation-page .date-quick-btn:not(:last-child){border-right:1.5px solid #d0d5dd}.new-reservation-page .date-quick-btn:hover{background:#f9fafb}.new-reservation-page .date-quick-btn.active{background:#cfc;color:#060;box-shadow:inset 0 0 0 1.5px #060;font-weight:600}@media screen and (max-width:900px){.calendar-container .day-square{width:35px!important;height:35px!important;font-size:15px!important}.calendar-container .calendar-header span{font-size:12px}.new-reservation-page .calendar-container .availability-toggle-btn{padding:5px 8px;font-size:11px}}
10
10
  `);var i1=_0(b2());var HM=class{constructor(O=6e4){this.cache=new Map,this.ttl=O;}generateKey(O,...o){return `${O}::${JSON.stringify(o)}`}get(O){let o=this.cache.get(O);return o?Date.now()-o.timestamp>this.ttl?(this.cache.delete(O),null):o.value:null}set(O,o){this.cache.set(O,{value:o,timestamp:Date.now()});}clear(){this.cache.clear();}cleanup(){let O=Date.now();for(let[o,q]of this.cache.entries())O-q.timestamp>this.ttl&&this.cache.delete(o);}},D2=new HM;setInterval(()=>D2.cleanup(),3e4);var j0=(b,O,...o)=>{let q=D2.generateKey(b,...o),W=D2.get(q);if(W!==null)return W;let n=O(...o);return D2.set(q,n),n};var J0={nl:{reservationStepOne:{errors:{openingHoursNotSet:"Openingstijden niet ingesteld.",clickHereToSet:"Klik hier om uw openingsuren in te stellen."},modes:{withLimits:"Met Limieten",unlimited:"Onbeperkt",openingHours:"Openingsuren",free:"Vrij"},fields:{time:"Tijd"},messages:{searchingTables:"Beschikbare tafels zoeken...",noTablesAvailable:"Geen specifieke tafels beschikbaar voor deze selectie."},warnings:{unlimitedMode:"Onbeperkt zal geen rekening houden met maximum limieten.",dateNotAvailableWithLimits:"Let op: deze datum is niet beschikbaar met limieten voor dit aantal gasten. De modus is automatisch overgezet naar onbeperkt vrij."}},calendar:{selectDatePlaceholder:"Selecteer een datum",today:"Vandaag",tomorrow:"Morgen",prevWeek:"Vorige week",nextWeek:"Volgende week",dayHeaders:["Ma","Di","Wo","Do","Vr","Za","Zo"],seatsQuestion:"Zitplaatsen?",other:"Andere"},timeSelector:{shifts:{breakfast:"Ontbijt",lunch:"Lunch",dinner:"Diner"},selectMeal:"Selecteer een maaltijd",selectTime:"Selecteer een tijd",noDateSelected:"Selecteer eerst een datum.",noTimes:"Geen beschikbare tijden.",back:"Terug",reservations:"Reservaties",guests:"Gasten"},tableSelector:{label:"Selecteer beschikbare tafel(s):",table:"Tafel",max:"Max",noTables:"Geen specifieke tafels beschikbaar voor deze tijd/gasten combinatie.",manual:"Handmatig"}},en:{reservationStepOne:{errors:{openingHoursNotSet:"Opening hours not set.",clickHereToSet:"Click here to set your opening hours."},modes:{withLimits:"With Limits",unlimited:"Unlimited",openingHours:"Opening Hours",free:"Free"},fields:{time:"Time"},messages:{searchingTables:"Searching for available tables...",noTablesAvailable:"No specific tables available for this selection."},warnings:{unlimitedMode:"Unlimited will not take into account maximum limits.",dateNotAvailableWithLimits:"Note: this date is not available with limits for this number of guests. The mode has been automatically switched to unlimited free."}},calendar:{selectDatePlaceholder:"Select a date",today:"Today",tomorrow:"Tomorrow",prevWeek:"Previous week",nextWeek:"Next week",dayHeaders:["M","T","W","T","F","S","S"],seatsQuestion:"Seating?",other:"Other"},timeSelector:{shifts:{breakfast:"Breakfast",lunch:"Lunch",dinner:"Dinner"},selectMeal:"Select a meal",selectTime:"Select a time",noDateSelected:"Please select a date first.",noTimes:"No available times.",back:"Back",reservations:"Reservations",guests:"Guests"},tableSelector:{label:"Select available table(s):",table:"Table",max:"Max",noTables:"No specific tables available for this time/guest combination.",manual:"Manual"}},fr:{reservationStepOne:{errors:{openingHoursNotSet:"Horaires non d\xE9finies.",clickHereToSet:"Cliquez ici pour d\xE9finir vos horaires."},modes:{withLimits:"Avec Limites",unlimited:"Illimit\xE9",openingHours:"Horaires",free:"Libre"},fields:{time:"Heure"},messages:{searchingTables:"Recherche de tables disponibles...",noTablesAvailable:"Aucune table sp\xE9cifique disponible pour cette s\xE9lection."},warnings:{unlimitedMode:"Illimit\xE9 ne tiendra pas compte des limites maximales.",dateNotAvailableWithLimits:"Attention : cette date n'est pas disponible avec limites pour ce nombre de convives. Le mode a \xE9t\xE9 automatiquement bascul\xE9 vers illimit\xE9 libre."}},calendar:{selectDatePlaceholder:"S\xE9lectionnez une date",today:"Aujourd'hui",tomorrow:"Demain",prevWeek:"Semaine pr\xE9c\xE9dente",nextWeek:"Semaine suivante",dayHeaders:["Lu","Ma","Me","Je","Ve","Sa","Di"],seatsQuestion:"Places ?",other:"Autre"},timeSelector:{shifts:{breakfast:"Petit-d\xE9jeuner",lunch:"D\xE9jeuner",dinner:"D\xEEner"},selectMeal:"S\xE9lectionnez un repas",selectTime:"S\xE9lectionnez une heure",noDateSelected:"Veuillez d'abord s\xE9lectionner une date.",noTimes:"Aucun horaire disponible.",back:"Retour",reservations:"R\xE9servations",guests:"Convives"},tableSelector:{label:"S\xE9lectionnez les table(s) disponibles :",table:"Table",max:"Max",noTables:"Aucune table sp\xE9cifique disponible pour cette combinaison temps/convives.",manual:"Manuel"}}};var bp=e0.memo(({guests:b,selectedDate:O,onSelectDate:o,autoExpand:q,reservationMode:W,restaurantData:n,startDate:a,onWeekChange:f,reservations:d,giftcard:s,zitplaats:g,isAdmin:u=false})=>{let l=localStorage.getItem("preferredLanguage")||"nl",v=J0[l].calendar,[R,X]=e0.useState(q||false),[S,B]=e0.useState(false),y=e0.useRef(null),N=e0.useRef(null),x=(0, L1.default)().tz("Europe/Amsterdam").add(1,"year").endOf("day");e0.useEffect(()=>{q&&X(true);},[q]),e0.useEffect(()=>{let I=V=>{y.current&&!y.current.contains(V.target)&&(X(false),B(false));};return document.addEventListener("mousedown",I),()=>{document.removeEventListener("mousedown",I);}},[]),e0.useEffect(()=>()=>{N.current&&(clearTimeout(N.current),N.current=null);},[]);let w=()=>{N.current&&(clearTimeout(N.current),N.current=null),B(true);},T=(I=1e3)=>{N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{B(false),N.current=null;},I);},C=e0.useCallback((I,V,$=[])=>{if(I.isBefore(V,"day")||I.isAfter(x,"day"))return 0;let q0=I.format("YYYY-MM-DD");if(W==="vrije_keuze")return 21;if(W!=="met_limieten"&&!S)return (0, i1.isDateAvailable)(n,q0,d,-1e4,$,null,u)?21:0;let O0=n?.["table-settings"]||{},d0=O0.isInstalled===true&&O0.assignmentMode==="automatic"&&(S||W==="met_limieten"),H=z0=>d0?j0("isDateAvailableWithTableCheck",i1.isDateAvailableWithTableCheck,n,q0,d,z0,$,null,u,null,g||null):j0("isDateAvailable",i1.isDateAvailable,n,q0,d,z0,$,null,u);if(!H(1))return 0;if(H(21))return 21;let X0=1,G=21,P=1;for(;X0<=G;){let z0=Math.floor((X0+G)/2);H(z0)?(P=z0,X0=z0+1):G=z0-1;}return P},[n,d,s,u,W,S]),k=e0.useMemo(()=>{if(!R)return [];let I=[],V=(0, L1.default)().tz("Europe/Amsterdam").startOf("day"),$=a||V,q0=n?.["blocked-slots"]||[],O0=$.clone().startOf("month"),d0=$.clone().endOf("month"),H=n?.["table-settings"]||{},X0=H.isInstalled===true&&H.assignmentMode==="automatic"&&W==="met_limieten",G=O0.clone();for(;G.isSameOrBefore(d0,"day");){let P=G.format("YYYY-MM-DD"),z0;if(W==="vrije_keuze")z0=G.isBetween(V,x,null,"[]");else {let T0=W!=="met_limieten"?-1e4:b,f0=W==="met_limieten"?s:null;X0?z0=j0("isDateAvailableWithTableCheck",i1.isDateAvailableWithTableCheck,n,P,d,T0,q0,f0,u,null,g||null):z0=j0("isDateAvailable",i1.isDateAvailable,n,P,d,T0,q0,f0,u);}let A0=C(G,V,q0),u0=false;u&&z0&&W!=="vrije_keuze"&&(u0=!j0("isDateAvailable",i1.isDateAvailable,n,P,d,W!=="met_limieten"?-1e4:b,q0,W==="met_limieten"?s:null,false)),I.push({date:G.clone(),isPast:G.isBefore(V,"day"),isFuture:G.isAfter(x,"day"),isAvailable:z0,maxGuestsAvailable:A0,isClosedForCustomers:u0}),G.add(1,"day");}return I},[R,a,b,W,n,d,s,g,S,u]),E=I=>{I.isAvailable&&!I.isPast&&!I.isFuture&&(o(I.date.format("YYYY-MM-DD")),X(false),B(false));},Y=()=>{let I=a.clone().subtract(1,"month").startOf("month"),V=(0, L1.default)().tz("Europe/Amsterdam").startOf("day");if(I.clone().endOf("month").isBefore(V,"day")){console.log("Cannot go to previous month. It is in the past.");return}f(I);},D=()=>{let I=a.clone().add(1,"month").startOf("month");f(I);},j=()=>{if(!O)return v.selectDatePlaceholder;let I=(0, L1.default)(O,"YYYY-MM-DD").tz("Europe/Amsterdam").startOf("day"),V=(0, L1.default)().tz("Europe/Amsterdam").startOf("day"),$=V.clone().add(1,"day");return I.isSame(V,"day")?v.today:I.isSame($,"day")?v.tomorrow:I.format("dddd D MMMM YYYY")},U=a?(I=>{let $=a.clone().startOf("month").day(),q0=$===0?6:$-1,O0=[];for(let G=0;G<q0;G++)O0.push(null);O0.push(...I);let d0=O0.length,H=Math.ceil(d0/7);for(;O0.length<H*7;)O0.push(null);let X0=[];for(let G=0;G<H;G++){let P=O0.slice(G*7,G*7+7);X0.push(P);}return X0})(k):[],m=v.dayHeaders,K=I=>I>=21?"20+":String(I);return e0__default.default.createElement("div",{className:"calendar-container",ref:y},e0__default.default.createElement("div",{className:"calendar-display",onClick:()=>{let I=!R;X(I),I&&window.dispatchEvent(new CustomEvent("calendarExpanded"));}},e0__default.default.createElement("span",null,j()),e0__default.default.createElement("span",{className:"arrow"},e0__default.default.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",style:{transform:R?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}},e0__default.default.createElement("path",{d:"M7 10l5 5 5-5",fill:"none",stroke:"currentColor",strokeWidth:"2"})))),R&&a&&e0__default.default.createElement("div",{className:"calendar"},e0__default.default.createElement("div",{className:"calendar-header"},e0__default.default.createElement("button",{type:"button",onClick:Y,"aria-label":v.prevWeek},"<"),e0__default.default.createElement("span",null,a.format("MMMM YYYY")),e0__default.default.createElement("button",{type:"button",onClick:D,"aria-label":v.nextWeek},">"),e0__default.default.createElement("button",{type:"button",className:`availability-hold-btn ${S?"active":""}`,"aria-pressed":S,"aria-label":"Houd ingedrukt om beschikbaarheden te tonen",onMouseDown:w,onMouseUp:()=>T(1e3),onMouseLeave:()=>T(1e3),onTouchStart:w,onTouchEnd:()=>T(1e3),onTouchCancel:()=>T(1e3),onKeyDown:I=>{(I.key===" "||I.key==="Enter")&&w();},onKeyUp:I=>{(I.key===" "||I.key==="Enter")&&T(1e3);},style:{fontSize:"15px",color:"gray",fontWeight:"450",textDecoration:"underline"}},v.seatsQuestion)),e0__default.default.createElement("div",{className:"calendar-weeks-wrapper"},e0__default.default.createElement("table",{className:"calendar-table"},e0__default.default.createElement("thead",null,e0__default.default.createElement("tr",{translate:"no"},m.map((I,V)=>e0__default.default.createElement("th",{key:V},I)))),e0__default.default.createElement("tbody",null,U.map((I,V)=>e0__default.default.createElement("tr",{key:V,translate:"no"},I.map(($,q0)=>{if(!$)return e0__default.default.createElement("td",{key:q0,className:"empty-day"});let O0=O&&Zz($.date,(0, L1.default)(O,"YYYY-MM-DD").tz("Europe/Amsterdam")),d0=[];return $.isPast?d0.push("gray-out"):$.isClosedForCustomers?d0.push("has-blocked-slots"):$.isAvailable?d0.push("available"):d0.push("unavailable"),O0&&d0.push("selected"),e0__default.default.createElement("td",{key:q0,className:d0.join(" "),onClick:()=>E($),style:{"--animation-order":q0+V*7}},e0__default.default.createElement("div",{className:`day-square ${S?"showing-availabilities":""}`},e0__default.default.createElement("span",{className:"day-number"},S?K($.maxGuestsAvailable):$.date.date())))}))))))))});bp.displayName="Calendar";var pp=bp;var D1=_0(e1());var l4=({guests:b,formData:O,handleChange:o,resetFormDataFields:q,restaurantData:W,reservations:n,startDate:a,onWeekChange:f,reservationMode:d,isAdmin:s=false})=>{let g=localStorage.getItem("preferredLanguage")||"nl",u=J0[g].calendar,l=(0, D1.default)().tz("Europe/Amsterdam").format("YYYY-MM-DD"),v=(0, D1.default)().tz("Europe/Amsterdam").add(1,"day").format("YYYY-MM-DD"),R=E=>!E||E===l?"today":E===v?"tomorrow":"other",[X,S]=e0.useState(()=>R(O.date)),[B,y]=e0.useState(false),N=e0.useRef(false);e0.useEffect(()=>{N.current||(N.current=true,O.date||(x(l),S("today")));},[]);let x=E=>{let Y=(0, D1.default)(E).format("YYYY-MM-DD");o({target:{name:"date",value:Y}}),q(["time"]);},w=E=>{S(E),E==="today"?(y(false),x(l)):E==="tomorrow"?(y(false),x(v)):y(true);},T=E=>{x(E),S("other"),y(false);},C=a?a.clone().startOf("month"):(0, D1.default)().startOf("month"),k=X==="other"&&O.date&&O.date!==l&&O.date!==v?(0, D1.default)(O.date,"YYYY-MM-DD").tz("Europe/Amsterdam").format("D MMM"):u.other;return e0__default.default.createElement("div",{className:"form-group date-selector-container"},e0__default.default.createElement("label",{className:"date-quick-label"},"Date"),e0__default.default.createElement("div",{className:"date-quick-picks"},e0__default.default.createElement("button",{type:"button",className:`date-quick-btn ${X==="today"?"active":""}`,onClick:()=>w("today")},u.today),e0__default.default.createElement("button",{type:"button",className:`date-quick-btn ${X==="tomorrow"?"active":""}`,onClick:()=>w("tomorrow")},u.tomorrow),e0__default.default.createElement("button",{type:"button",className:`date-quick-btn ${X==="other"?"active":""}`,onClick:()=>w("other")},k)),B&&e0__default.default.createElement(pp,{guests:b,selectedDate:O.date||null,onSelectDate:T,autoExpand:true,reservationMode:d,restaurantData:W,startDate:C,onWeekChange:f,reservations:n,giftcard:O.giftcard,zitplaats:O.zitplaats,isAdmin:s}))},cp=l4;R0(`.new-reservation-page .time-selector-container{position:relative}.new-reservation-page .time-display{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;user-select:none;text-align:left;border-radius:5px}.new-reservation-page .time-display span:first-child{flex-grow:1}.new-reservation-page .time-selector{position:absolute;z-index:1000;width:100%;max-height:350px;overflow-y:auto;background-color:#fff;border:1px solid #ccc;padding:10px;border-radius:10px;animation:fadeInTimeSelector .3s ease-in-out;top:75px}.new-reservation-page .time-toggle-container{display:flex;gap:8px;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #eee}.new-reservation-page .time-toggle-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;border:1px solid #ddd;background-color:#f5f5f5;color:#666;font-size:13px;cursor:pointer;transition:all .2s ease;font-family:inherit}.new-reservation-page .time-toggle-btn:hover{background-color:#e8e8e8;border-color:#ccc}.new-reservation-page .time-toggle-btn.active{background-color:var(--color-blue, #48aaaf);border-color:var(--color-blue, #48aaaf);color:#fff}.new-reservation-page .time-toggle-btn.active:hover{background-color:var(--color-blue, #48aaaf);filter:brightness(.95)}.new-reservation-page .time-toggle-btn svg{flex-shrink:0}.new-reservation-page .time-count{font-weight:400;opacity:.9}@keyframes fadeInTimeSelector{0%{opacity:0}to{opacity:1}}.new-reservation-page .time-period{margin-bottom:15px}.new-reservation-page .time-period-label{font-weight:700;margin-bottom:5px}.new-reservation-page .time-options{display:flex;flex-wrap:wrap;gap:5px}.new-reservation-page .time-option{padding:8px 12px;background-color:#cfc;color:#060;border-radius:5px;cursor:pointer;transition:background-color .2s ease}.new-reservation-page .time-option:hover{background-color:#b3ffb3}.new-reservation-page .time-option.selected{background-color:#060;color:#cfc}.new-reservation-page .time-option.blocked{background-color:#fff3e0;color:#e65100}.new-reservation-page .time-option.blocked:hover{background-color:#ffe0b2}.new-reservation-page .time-option.blocked.selected{background-color:#e65100;color:#fff3e0}.new-reservation-page .info-text{color:#666;font-style:italic}.new-reservation-page .arrow{margin-left:auto;color:gray;display:flex;align-items:center}@media screen and (max-width:480px){.new-reservation-page .time-option{padding:6px 10px;font-size:14px}.new-reservation-page .time-toggle-btn{padding:5px 10px;font-size:12px;gap:4px}.new-reservation-page .time-toggle-btn svg{width:12px;height:12px}}
11
11
  `);var UM=_0(e1());var I2=_0(b2()),op=e0.memo(({guests:b,formData:O,handleChange:o,field:q,selectedDate:W,expanded:n,setCurrentExpandedField:a,restaurantData:f,reservations:d,reservationMode:s,isAdmin:g=false,zitplaats:u=null})=>{let l=localStorage.getItem("preferredLanguage")||"nl",v=J0[l].timeSelector,[R,X]=e0.useState(n||false),[S,B]=e0.useState([]),[y,N]=e0.useState(null),[x,w]=e0.useState(null),T=e0.useRef(null),C=e0.useMemo(()=>{if(!g||!W||!f)return new Set;let m=f?.["blocked-slots"]||[],K=new Set;return m.forEach(I=>{I.date===W&&I.time&&K.add(I.time);}),K},[g,W,f]),k=e0.useMemo(()=>{if(!d||!W)return {};let m={};return d.forEach(K=>{if((K.date||K.datum)!==W)return;let V=K.time||K.tijd;if(!V)return;let $=K.guests||K.antal||K.gasten||1;m[V]||(m[V]={reservations:0,guests:0}),m[V].reservations+=1,m[V].guests+=$;}),m},[d,W]),E=m=>k[m]||{reservations:0,guests:0},Y=m=>{w(x===m?null:m);},D={breakfast:{start:"07:00",end:"11:00",label:v.shifts.breakfast},lunch:{start:"11:00",end:"16:00",label:v.shifts.lunch},dinner:{start:"16:00",end:"23:00",label:v.shifts.dinner}};e0.useEffect(()=>{if(!W||!b){B([]);return}if(s==="vrije_keuze")if(y){let m=D[y],K=UM.default.tz(`${W} ${m.start}`,"YYYY-MM-DD HH:mm","Europe/Brussels"),I=UM.default.tz(`${W} ${m.end}`,"YYYY-MM-DD HH:mm","Europe/Brussels"),V=[],$=K.clone();for(;$.isBefore(I);)V.push({value:$.format("HH:mm"),label:$.format("HH:mm")}),$.add(15,"minutes");B(V);}else B([]);else if(f&&d){let m=s!=="met_limieten"?-1e4:b,K=f?.["table-settings"]||{},I=s==="met_limieten"&&K.isInstalled===true&&K.assignmentMode==="automatic",V=s==="met_limieten"?O.giftcard:null,$=f?.["blocked-slots"]||[],q0=(0, I2.getAvailableTimeblocks)(f,W,d,m,$,V,g,O.duration),O0=I?(0, I2.getAvailableTimeblocksWithTableCheck)(f,W,q0,m,d,u,O.duration):q0,d0=Object.keys(O0).map(H=>({value:H,label:O0[H].name||H}));d0.sort((H,X0)=>{let[G,P]=H.value.split(":").map(Number),[z0,A0]=X0.value.split(":").map(Number);return G*60+P-(z0*60+A0)}),B(d0),O[q.id]&&!d0.some(H=>H.value===O[q.id])&&o({target:{name:q.id,value:""}});}else B([]);},[W,b,f,d,s,q.id,y,u,O[q.id],o]),e0.useEffect(()=>{s==="vrije_keuze"&&(N(null),O[q.id]&&o({target:{name:q.id,value:""}}));},[W,s]),e0.useEffect(()=>{X(false);},[W]),e0.useEffect(()=>{let m=()=>X(false);return window.addEventListener("calendarExpanded",m),()=>window.removeEventListener("calendarExpanded",m)},[]);let j=m=>{o({target:{name:q.id,value:m}}),X(false),a?.(null);},b0=m=>{y!==m&&O[q.id]&&o({target:{name:q.id,value:""}}),N(m);},U=()=>{if(s==="vrije_keuze")return y?O[q.id]?`${D[y].label} \u2013 ${O[q.id]}`:`${D[y].label} \u2013 ${v.selectTime}`:v.selectMeal;if(O[q.id]){let m=S.find(K=>K.value===O[q.id]);return m?m.label:v.selectTime}return v.selectTime};return q?e0__default.default.createElement("div",{className:"form-group time-selector-container",ref:T},W?e0__default.default.createElement(e0__default.default.Fragment,null,e0__default.default.createElement("div",{className:"time-display",onClick:()=>{X(!R),R||a?.(q.id);}},e0__default.default.createElement("span",null,U()),e0__default.default.createElement("span",{className:"arrow"},e0__default.default.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",style:{transform:R?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}},e0__default.default.createElement("path",{d:"M7 10l5 5 5-5",fill:"none",stroke:"currentColor",strokeWidth:"2"})))),R&&e0__default.default.createElement("div",{className:"time-selector"},e0__default.default.createElement("div",{className:"time-toggle-container"},e0__default.default.createElement("button",{className:`time-toggle-btn ${x==="reservations"?"active":""}`,onClick:()=>Y("reservations"),type:"button"},e0__default.default.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},e0__default.default.createElement("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),e0__default.default.createElement("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),e0__default.default.createElement("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),e0__default.default.createElement("line",{x1:"3",y1:"10",x2:"21",y2:"10"})),v.reservations),e0__default.default.createElement("button",{className:`time-toggle-btn ${x==="guests"?"active":""}`,onClick:()=>Y("guests"),type:"button"},e0__default.default.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},e0__default.default.createElement("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),e0__default.default.createElement("circle",{cx:"9",cy:"7",r:"4"}),e0__default.default.createElement("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"}),e0__default.default.createElement("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})),v.guests)),s==="vrije_keuze"?y?e0__default.default.createElement("div",{className:"time-period"},e0__default.default.createElement("div",{className:"time-period-label"},D[y].label,e0__default.default.createElement("button",{onClick:()=>N(null),style:{marginLeft:"10px",background:"none",border:"none",cursor:"pointer",color:"#006600",fontSize:"0.9rem",padding:0}},"\u2190 ",v.back)),e0__default.default.createElement("div",{className:"time-options"},S.length===0?e0__default.default.createElement("div",{className:"no-times"},v.noTimes):S.map(m=>{let K=E(m.value),I=C.has(m.value);return e0__default.default.createElement("div",{key:m.value,className:`time-option${O[q.id]===m.value?" selected":""}${I?" blocked":""}`,onClick:()=>j(m.value)},m.label,x==="reservations"&&K.reservations>0&&e0__default.default.createElement("span",{className:"time-count"}," - ",K.reservations),x==="guests"&&K.guests>0&&e0__default.default.createElement("span",{className:"time-count"}," - ",K.guests,"p"))}))):e0__default.default.createElement("div",{className:"time-options"},Object.keys(D).map(m=>e0__default.default.createElement("div",{key:m,className:`time-option ${y===m?"selected":""}`,onClick:()=>b0(m)},D[m].label))):e0__default.default.createElement("div",{className:"time-options"},S.length===0?e0__default.default.createElement("div",{className:"no-times"},v.noTimes):S.map(m=>{let K=E(m.value),I=C.has(m.value);return e0__default.default.createElement("div",{key:m.value,className:`time-option${O[q.id]===m.value?" selected":""}${I?" blocked":""}`,onClick:()=>j(m.value)},m.label,x==="reservations"&&K.reservations>0&&e0__default.default.createElement("span",{className:"time-count"}," - ",K.reservations),x==="guests"&&K.guests>0&&e0__default.default.createElement("span",{className:"time-count"}," - ",K.guests,"p"))})))):e0__default.default.createElement("p",{className:"info-text"},v.noDateSelected)):null});op.displayName="TimeSelector";var qp=op;R0(`.new-reservation-page .table-selector-container{margin-top:15px;padding:10px;border:1px solid #eee;border-radius:4px;background-color:#f9f9f9}.new-reservation-page .table-selector-label{display:block;margin-bottom:10px;font-weight:700;color:#333;font-size:.95rem}.new-reservation-page .table-options{display:flex;flex-wrap:wrap;gap:10px}.new-reservation-page .table-option{display:inline-block;margin-right:15px;margin-bottom:5px;padding:5px 8px;border:1px solid #ccc;border-radius:4px;background-color:#fff;transition:background-color .2s ease}.new-reservation-page .table-option label{display:flex;align-items:center;cursor:pointer;font-size:.9rem;color:#555}.new-reservation-page .table-option input[type=checkbox]{margin-right:8px;cursor:pointer;accent-color:var(--primary-color, #006600)}.new-reservation-page .table-option:has(input[type=checkbox]:checked){background-color:#e0f2e0;border-color:#060}.new-reservation-page .table-option:hover{background-color:#f0f0f0}.new-reservation-page .info-text{margin-top:10px;font-size:.85rem;color:#666}.new-reservation-page .selected-tables-info{margin-top:10px;font-style:italic}.new-reservation-page .info-text.loading-tables{font-style:italic;color:#060}.new-reservation-page .table-option--manual{border-color:#ff9800;background-color:#fff8e1}.new-reservation-page .table-option--manual:hover{background-color:#ffecb3}.new-reservation-page .table-option--manual:has(input[type=checkbox]:checked){background-color:#ffe082;border-color:#ff9800}
12
12
  `);var B4=({availableTables:b=[],isFetching:O=false,formData:o={},handleChange:q,setFormData:W})=>{let n=localStorage.getItem("preferredLanguage")||"nl",a=J0?.[n]?.tableSelector||{},f={label:a.label||"Tafels",noTables:a.noTables||"Geen tafels beschikbaar voor deze selectie.",table:a.table||"Tafel",max:a.max||"Max"},d=Array.isArray(o.selectedTableNumbers)?o.selectedTableNumbers:[],s=Array.isArray(o.selectedTableIds)?o.selectedTableIds:[],g=(l,v)=>{if(typeof q=="function"){q({target:{multiple:true,updates:{selectedTableNumbers:l,selectedTableIds:v}}});return}typeof W=="function"&&W(R=>({...R,selectedTableNumbers:l,selectedTableIds:v}));},u=l=>v=>{let R=v.target.checked,X=b.find(y=>y.tableNumber===l);if(!X)return;let S=[...d],B=[...s];R?(S.includes(l)||S.push(l),B.includes(X.tableId)||B.push(X.tableId)):(S=S.filter(y=>y!==l),B=B.filter(y=>y!==X.tableId)),S.sort((y,N)=>y-N),g(S,B);};return O?e0__default.default.createElement("div",{className:"form-group table-selector-container"},e0__default.default.createElement("label",{className:"table-selector-label"},f.label),e0__default.default.createElement("p",{className:"info-text"},"Laden\u2026")):!b||b.length===0?e0__default.default.createElement("div",{className:"form-group table-selector-container"},e0__default.default.createElement("label",{className:"table-selector-label"},f.label),e0__default.default.createElement("p",{className:"info-text"},f.noTables)):e0__default.default.createElement("div",{className:"form-group table-selector-container"},e0__default.default.createElement("label",{className:"table-selector-label"},f.label),e0__default.default.createElement("div",{className:"table-options"},b.map(l=>{let v=l.tableNumber,R=l.maxCapacity??l.capacity??l.seats??"-",X=d.includes(v),S=l.isManual===true;return e0__default.default.createElement("div",{key:`${l.tableId||v}`,className:`table-option${S?" table-option--manual":""}`},e0__default.default.createElement("label",null,e0__default.default.createElement("input",{type:"checkbox",value:v,checked:X,onChange:u(v)}),f.table," ",v," (",f.max,": ",R,")"))})))},F2=B4;R0(`.new-reservation-page .form-row .field-label{display:block;margin-bottom:6px;font-weight:600}.new-reservation-page .form-row .reservation-mode-buttons{margin-top:0}.new-reservation-page .reservation-mode-buttons{display:flex;gap:10px;margin-top:10px}.new-reservation-page .reservation-mode-button{flex:1;padding:10px;border:1px solid #ccc;border-radius:var(--border-radius);background-color:var(--color-white);cursor:pointer;font-size:1rem;transition:background-color .3s ease,color .3s ease}.new-reservation-page .reservation-mode-button:nth-child(3){flex:0 0 100%}.new-reservation-page .reservation-modes-container{display:flex;flex-wrap:wrap;margin:0 -5px;width:100%}.new-reservation-page .reservation-mode-button{flex:0 0 calc(50% - 10px);margin:5px;padding:10px;box-sizing:border-box;text-align:center;border:1px solid #ccc;background:#f7f7f7;cursor:pointer}.new-reservation-page .reservation-mode-button.active,.new-reservation-page .reservation-mode-button:hover{background-color:var(--color-blue);color:var(--color-white)}.new-reservation-page .unlimited-mode-warning{display:flex;align-items:flex-start;gap:10px;margin:15px 0;padding:12px 15px;background-color:#fff3cd;border:1px solid #ffeaa7;border-radius:var(--border-radius, 4px);border-left:4px solid #e67e22;font-size:.9rem;line-height:1.4}.new-reservation-page .unlimited-mode-warning .warning-icon{color:#e67e22;font-size:1.1rem;margin-top:2px;flex-shrink:0}.new-reservation-page .unlimited-mode-warning .warning-text{color:#856404;margin:0}@media screen and (max-width:480px){.new-reservation-page .unlimited-mode-warning{margin:10px 0;padding:10px 12px;font-size:.85rem}.new-reservation-page .unlimited-mode-warning .warning-icon{font-size:1rem}}.new-reservation-page .reservation-sidebar-component{position:fixed;top:0;right:-400px;width:400px;height:100%;background-color:#fff;box-shadow:-2px 0 5px #0000001a;z-index:var(--z-index-sidebar-reservation);display:flex;flex-direction:column;overflow-y:auto;transition:right .3s ease-in-out}.new-reservation-page .admin-title{text-align:center;margin-bottom:30px}.new-reservation-page .reservation-sidebar-component.open{right:0}.new-reservation-page .reservation-sidebar-content{padding:60px 20px 20px}.new-reservation-page .close-sidebar-button{position:absolute;top:10px;left:10px;background-color:transparent;border:none;cursor:pointer}.new-reservation-page .close-sidebar-button svg{color:#000}.new-reservation-page .sidebar-section-one,.new-reservation-page .sidebar-section-two{margin-bottom:20px}.new-reservation-page .reservation-footer{margin-top:auto}.new-reservation-page .store-reservation-button{width:100%;padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem}.new-reservation-page .open-sidebar-button{position:fixed;bottom:20px;right:20px;background-color:var(--color-blue);color:#fff;border:none;border-radius:50%;width:50px;height:50px;cursor:pointer;z-index:var(--z-index-modal)!important;transition:all .3s ease}.new-reservation-page .open-sidebar-button:hover{background-color:var(--color-blue-hover-accent)!important}.new-reservation-page .open-sidebar-button svg{position:relative;top:2px}@media screen and (max-width:480px){.new-reservation-page .reservation-sidebar-component{width:100%}}.new-reservation-page .sidebar-section-personeel{margin-bottom:10px}
package/dist/index.mjs CHANGED
@@ -6,7 +6,7 @@ Arguments: `+Array.prototype.slice.call(c).join("")+`
6
6
  [getAvailableTablesForTime] Finding available tables for ${q} guests on ${O} at ${o}`);let u=W1(o,s,g);if(!u||u.length===0)return console.error(`[getAvailableTablesForTime] Could not compute required slots for ${O} ${o}`),[];let l={},v=W.filter(N=>N.date===O&&N.time&&N.guests>0).sort((N,x)=>{let w=N.time.split(":").map(Number),T=x.time.split(":").map(Number);return w[0]*60+w[1]-(T[0]*60+T[1])});console.log(`[getAvailableTablesForTime] Building occupancy map (Processing ${v.length} existing reservations)`);for(let N of v){let x=I0(N.duration,s),w=w1(N),T=[];if(w.length>0?T=w:T=x1(b,N.date,N.time,N.guests,l,N.zitplaats||null,x),T.length>0){let C=W1(N.time,x,g);if(!C||C.length===0)continue;T.forEach(k=>{l[k]||(l[k]=new Set),C.forEach(E=>l[k].add(E));});}}let R=xb(O),X=W.filter(N=>N.date===R&&N.time&&N.guests>0);for(let N of X){let x=I0(N.duration,s),w=N.time.split(":").map(Number);if(w[0]*60+w[1]+x>1440){let C=w1(N),k=C.length>0?C:x1(b,N.date,N.time,N.guests,l,N.zitplaats||null,x);if(k.length>0){let E=W1(N.time,x,g);E&&E.length>0&&k.forEach(Y=>{l[Y]||(l[Y]=new Set),E.forEach(D=>l[Y].add(D));});}}}if(u.some(N=>N>=1440)){let N=wb(O),x=W.filter(w=>w.date===N&&w.time&&w.guests>0);for(let w of x){let T=I0(w.duration,s),C=w1(w),k=C.length>0?C:x1(b,w.date,w.time,w.guests,l,w.zitplaats||null,T);if(k.length>0){let E=W1(w.time,T,g);E&&E.length>0&&k.forEach(Y=>{l[Y]||(l[Y]=new Set),E.forEach(D=>l[Y].add(D+1440));});}}}console.log("[getAvailableTablesForTime] Occupancy map built");let B=kM(b,n),y=[];console.log(`[getAvailableTablesForTime] Checking ${B.length} tables for individual availability`);for(let N of B)wM(N,O,o)&&N.minCapacity<=q&&q<=N.maxCapacity&&xM(N.tableNumber,u,l)&&(console.log(`[getAvailableTablesForTime] Table ${N.tableNumber} is available`),y.push(N));return console.log(`[getAvailableTablesForTime] Found ${y.length} individually available tables: ${y.map(N=>N.tableNumber).join(", ")}`),y.sort((N,x)=>N.tableNumber-x.tableNumber),y}catch(a){return console.error(`[getAvailableTablesForTime] Error for ${O} ${o}:`,a),[]}}_b.exports={isTimeAvailableSync:Db,filterTimeblocksByTableAvailability:Pb,getAvailableTimeblocksWithTableCheck:So,getAvailableTablesForTime:Co};});var Fb=i0((Cq,Ib)=>{var k2=y2(),{isDateAvailable:Eo}=CM(),{getAvailableTimeblocks:ko}=M2(),{isTimeAvailableSync:wo}=E2(),{daysOfWeekEnglish:xo,getMealTypeByTime:Do}=l1(),w2="Europe/Brussels";function Po(b,O,o,q){if(!q||!q.trim())return true;let W=Do(o);if(!W)return false;let n=k2.tz(O,"YYYY-MM-DD",w2);if(!n.isValid())return false;let a=xo[n.day()],f=`openinghours-${W}`,d=b[f]&&b[f].schemeSettings&&b[f].schemeSettings[a]?b[f].schemeSettings[a]:null;return d?d.giftcardsEnabled!==true||!Array.isArray(d.giftcards)||d.giftcards.length===0?false:d.giftcards.includes(q):(console.error(`No day settings found for ${a} ${W}`),false)}function _o(b,O,o,q,W=[],n=null,a=false,f=null,d=null){let s=typeof window<"u"?window.currentReservationTicketItem:null;if(s&&!s.normalOpeningTimes){let S=k2.tz(O,"YYYY-MM-DD",w2).startOf("day"),B=s.filterStartDate?k2.tz(s.filterStartDate,"YYYY-MM-DD",w2).startOf("day"):null,y=s.filterEndDate?k2.tz(s.filterEndDate,"YYYY-MM-DD",w2).endOf("day"):null;if(B&&S.isBefore(B))return console.log(`Date ${O} is before the allowed start ${s.filterStartDate}`),false;if(y&&S.isAfter(y))return console.log(`Date ${O} is after the allowed end ${s.filterEndDate}`),false}console.log(`
7
7
  ===== Checking date availability for ${q} guests on ${O} =====`),console.log("Restaurant data floors:",b.floors?"present":"missing"),console.log("Table settings:",JSON.stringify(b["table-settings"]||{},null,2));let g=b?.["table-settings"]||{},u=g.isInstalled===true&&g.assignmentMode==="automatic"&&b.floors&&Array.isArray(b.floors);if(console.log(`Table assignment is ${u?"ENABLED":"DISABLED"} for date ${O}`),!Eo(b,O,o,q,W,n,a,f))return console.log(`Date ${O} fails basic availability check`),false;if(!u)return console.log(`Table assignment disabled, date ${O} is available`),true;console.log(`Getting available timeblocks for ${O}`);let v=ko(b,O,o,q,W,n,a,f);if(console.log(`Found ${Object.keys(v).length} available timeblocks before table check`),Object.keys(v).length===0)return console.log(`No available timeblocks on ${O}, date is unavailable`),false;console.log(`Checking table availability for each timeblock on ${O}`);let R=false,X=0;for(let S of Object.keys(v)){if(X++,n&&!Po(b,O,S,n)){console.log(`Time ${S} doesn't match giftcard meal requirements`);continue}if(console.log(`Checking table availability for ${S} on ${O} for ${q} guests`),wo(b,O,S,q,o,d,f)){console.log(`Found available time ${S} with table assignment!`),R=true;break}}return console.log(`Checked ${X}/${Object.keys(v).length} timeblocks`),console.log(`Date ${O} with table check: ${R?"Available":"Unavailable"}`),R}Ib.exports={isDateAvailableWithTableCheck:_o};});var Ub=i0(()=>{var{isTimeAvailable:Io}=EM(),Fo={_id:"poer","general-settings":{zitplaatsen:30,uurOpVoorhand:4,dagenInToekomst:90,maxGasten:8,intervalReservatie:15,duurReservatie:120,minutenTotEinde:135,showNoticeForMaxGuests:0,noticePhoneNumber:"",storedNumber:76},menu:[{name:"POER Menu",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"12:00",endHour:"23:00",daysOfWeek:["zaterdag","dinsdag","woensdag","donderdag","vrijdag"],storedNumber:36,_id:"674a9033c1956dd233bafaad"},{name:"A la carte",startDate:"2024-11-30",endDate:"2030-01-01",startHour:"12:00",endHour:"14:00",daysOfWeek:["dinsdag","woensdag","donderdag","vrijdag"],storedNumber:28,_id:"674a9084c1956dd233bafaae"},{name:"Ik weet het nog niet",startDate:"2024-11-30",endDate:"2030-01-01",startHour:"12:00",endHour:"14:00",daysOfWeek:["dinsdag","woensdag","donderdag","vrijdag"],storedNumber:41,_id:"674a90bc64cc52acdd5e6cc2"},{name:"Lunch",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"12:00",endHour:"14:00",daysOfWeek:["dinsdag","woensdag","donderdag","vrijdag"],storedNumber:23,_id:"674adb4e8d6385fb343499f7"},{name:"A la carte",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"18:30",endHour:"20:30",daysOfWeek:["dinsdag","woensdag","donderdag"],storedNumber:50,_id:"674adbf58d6385fb343499f8"},{name:"Ik weet het nog niet",startDate:"2024-11-01",endDate:"2030-01-30",startHour:"18:30",endHour:"20:30",daysOfWeek:["dinsdag","donderdag","woensdag"],storedNumber:54,_id:"674adc208d6385fb343499f9"}],mededeling:[{mededeling:"Gelieve er rekening mee te houden dat we op vrijdagavond en zaterdagavond enkel ons POER menu serveren.",startDate:"2024-11-01",endDate:"2030-01-30",startTime:"18:30",endTime:"20:30",daysOfWeek:["vrijdag","zaterdag"],storedNumber:95,_id:"674ade0a8d6385fb343499fa"}],settings:{pageTitle:"Reserveer nu",generalNotification:"",alignment:"fullScreenColor",backgroundBlur:"blurBackground",storedNumber:61},colors:{backgroundType:"solid",backgroundColor:"#e0debe",gradientStartColor:"#FFFFFF",gradientEndColor:"#000000",animationType:"none",widgetBackgroundColor:"#000000",widgetTextColor:"#FFFFFF",textColor:"#000000",containerColor:"#FFFFFF",buttonColor:"#000000",buttonTextColor:"#FFFFFF",storedNumber:81},exceptions:[{title:"Extra mensen donderdagmiddag",type:"Opening",timeframe:"lunch",startDate:"2024-12-05",endDate:"2024-12-05",startHour:"12:00",endHour:"16:00",maxSeats:"34",daysOfWeek:["donderdag"],storedNumber:74,_id:"67507dc98fb61d6afd54acb0"},{title:"Extra personen donderdagavond",type:"Uitzondering",timeframe:"dinner",startDate:"2024-12-05",endDate:"2024-12-05",startHour:"18:30",endHour:"23:00",maxSeats:"27",daysOfWeek:["donderdag"],storedNumber:88,_id:"67507e3383d7f2de02628f4a"},{title:"Cong\xE9 Periode 22/12 tot 9/01",type:"Sluiting",timeframe:"Volledige Dag",startDate:"2024-12-22",endDate:"2025-01-09",daysOfWeek:[],storedNumber:89,_id:"67511bb38fb61d6afd54acba"}],"openinghours-lunch":{schemeSettings:{Tuesday:{enabled:true,startTime:"12:00",endTime:"13:30",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Wednesday:{enabled:true,startTime:"12:00",endTime:"16:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Thursday:{enabled:true,startTime:"12:00",endTime:"16:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Friday:{enabled:true,startTime:"12:30",endTime:"13:30",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]}},storedNumber:2},"openinghours-dinner":{schemeSettings:{Tuesday:{enabled:true,startTime:"18:30",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"24",shiftsEnabled:false,shifts:[]},Wednesday:{enabled:true,startTime:"16:00",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"24",shiftsEnabled:false,shifts:[]},Thursday:{enabled:true,startTime:"16:00",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"24",shiftsEnabled:false,shifts:[]},Friday:{enabled:true,startTime:"18:30",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]},Saturday:{enabled:true,startTime:"18:30",endTime:"20:00",maxCapacityEnabled:true,maxCapacity:"30",shiftsEnabled:false,shifts:[]}},storedNumber:6},fonts:{titleFont:{font:"Poppins",weight:"400"},subtitleFont:{font:"Poppins",weight:"400"},labelFont:{font:"Poppins",weight:"400"},buttonFont:{font:"Poppins",weight:"400"}},theme:{id:10,title:"Herfstbladeren",color:"#D35400",image:"/static/media/default-theme.webp"}},Ho=[{guests:10,time:"12:00",date:"2024-12-18"},{guests:100,time:"15:00",date:"2024-12-04"}];console.log("--- Is Time Available Tests ---");var Hb="2024-12-10",jb=1e3,jo=["12:00","12:15","13:00","19:00","20:00","20:15"];jo.forEach(b=>{let O=Io(Fo,Hb,b,Ho,jb);console.log(`Is ${b} on ${Hb} available for ${jb} guests?`,O);});});var PM=i0((wq,Gb)=>{function DM(b){let O=parseInt(b.split(":")[0],10);return O>=4&&O<11?"breakfast":O>=11&&O<16?"lunch":O>=16&&O<23?"dinner":null}function N0(b,...O){console.log(`[MaxGroupsFilter] ${b}`,...O);}function Go(b){if(b==null)return null;if(typeof b=="object"&&b!==null&&"$numberInt"in b){let O=parseInt(b.$numberInt,10);return isNaN(O)?null:O}if(typeof b=="number")return Number.isInteger(b)?b:null;if(typeof b=="string"){let O=parseInt(b,10);return isNaN(O)?null:O}return null}function Yo(b,O,o,q,W){N0(`--- Running MaxGroupsFilter for Date: ${O}, Guests: ${W} ---`);let n=Object.keys(b).filter(g=>g.startsWith("max-groups-"));N0("Received restaurantData max-group keys:",n.length>0?n:"None found");let a={},f=parseInt(W,10);if(isNaN(f)||f<=0)return N0(`Invalid guest count (${W}). Returning all ${Object.keys(o).length} input blocks unfiltered.`),o;let d=q.filter(g=>g.date===O);N0(`Relevant reservations on ${O}: ${d.length}`),N0(`Input timeblocks count: ${Object.keys(o).length}`);let s={};d.forEach(g=>{let u=DM(g.time);u&&(s[u]||(s[u]=[]),s[u].push(g));}),N0("Reservations grouped by meal type:",s);for(let[g,u]of Object.entries(o)){let l=DM(g);if(N0(`
8
8
  Checking Time: ${g} -> Determined Meal: ${l}`),!l){N0(` Time ${g} has no associated meal type. Keeping block.`),a[g]=u;continue}let v=`max-groups-${l}`,R=b[v];if(N0(` Looking for settings using key: "${v}"`),!R||typeof R!="object"){N0(` No settings found for key "${v}". Filter doesn't apply. Keeping block.`),a[g]=u;continue}N0(` Found settings for ${l}:`,JSON.stringify(R));let X=true,S=Object.keys(R).map(B=>parseInt(B,10)).filter(B=>!isNaN(B)&&B>0).sort((B,y)=>B-y);N0(` Defined numeric limit sizes to check for ${l}: [${S.join(", ")}]`);for(let B of S){let y=String(B);if(N0(` Checking Limit Condition: Groups of size >= ${B}`),f>=B){N0(` Applicable: Booking guests (${f}) >= Limit threshold (${B})`);let N=Go(R[y]);if(N0(` Max groups allowed for >=${B} is: ${N} (raw setting: ${JSON.stringify(R[y])})`),N===null||N<0){N0(` Skipping check: Invalid or non-positive max count defined for size ${B}.`);continue}let w=(s[l]||[]).filter(T=>{let C=parseInt(T.guests,10);return !isNaN(C)&&C>=B}).length;if(N0(` Count of existing groups >=${B} found in ${l}: ${w}`),w+1>N){N0(` *** VIOLATION DETECTED *** for limit >=${B}.`),N0(` (Existing Groups: ${w} + New Group: 1 = ${w+1}, which is > Max Allowed: ${N})`),N0(` Blocking time ${g} due to this violation.`),X=false;break}else N0(` OK: Limit for >=${B} not exceeded. (Existing: ${w} + New: 1 <= Max: ${N})`);}else N0(` Not Applicable: Booking guests (${f}) < Limit threshold (${B}). Skipping this check.`);}X?(N0(` \u2705 Result for time ${g}: ALLOWED (passed all applicable checks)`),a[g]=u):N0(` \u274C Result for time ${g}: BLOCKED (failed at least one limit check)`);}return N0(`--- MaxGroupsFilter Finished. Output timeblocks count: ${Object.keys(a).length} ---`),a}Gb.exports={filterTimeblocksByMaxGroups:Yo,getMealType:DM};});var _M=i0((xq,Yb)=>{function Ko(b){let O=parseInt(b.split(":")[0],10);return O>=4&&O<11?"breakfast":O>=11&&O<16?"lunch":O>=16&&O<23?"dinner":null}function Vo(b){if(!b)return null;if(b.$numberInt)return parseInt(b.$numberInt,10);if(typeof b=="number")return b;if(typeof b=="string"){let O=parseInt(b,10);return isNaN(O)?null:O}return null}function Qo(b,O,o){return b.filter(q=>q.date===O&&q.time===o).reduce((q,W)=>q+(parseInt(W.guests,10)||0),0)}function $o(b,O,o,q,W){let n={};for(let[a,f]of Object.entries(o)){let d=Ko(a);if(!d){n[a]=f;continue}let s=b[`max-arrivals-${d}`];if(!s){n[a]=f;continue}let g=Vo(s[a]);if(g===null){n[a]=f;continue}Qo(q,O,a)+W<=g&&(n[a]=f);}return n}Yb.exports={filterTimeblocksByMaxArrivals:$o};});var FM=i0((Pq,Vb)=>{var Kb=y2(),{shifts:Dq,parseTime:IM,getMealTypeByTime:Jo}=Z1();function Zo(){let b=Kb().tz("Europe/Brussels");return b.hours()*60+b.minutes()}function M4(b,O,o){let q=Kb().tz("Europe/Brussels").format("YYYY-MM-DD");if(o!==q)return b;console.log(`Applying stop time filter for today (${o})`);let W=O?.["general-settings"]||{},n=Zo(),a=W.ontbijtStop||null,f=W.lunchStop||null,d=W.dinerStop||null,s=a?IM(a):null,g=f?IM(f):null,u=d?IM(d):null,l={},v=0,R=0,X=0;for(let S in b){if(!b.hasOwnProperty(S))continue;let B=Jo(S),y=false;B==="breakfast"&&s!==null&&!isNaN(s)&&n>=s?(y=true,v++):B==="lunch"&&g!==null&&!isNaN(g)&&n>=g?(y=true,R++):B==="dinner"&&u!==null&&!isNaN(u)&&n>=u&&(y=true,X++),y||(l[S]=b[S]);}return v>0&&console.log(`Stop time filter removed ${v} breakfast slots.`),R>0&&console.log(`Stop time filter removed ${R} lunch slots.`),X>0&&console.log(`Stop time filter removed ${X} dinner slots.`),l}Vb.exports={filterTimeblocksByStopTimes:M4};});var Jb=i0((_q,$b)=>{var{timeblocksAvailable:x2}=$1(),{getAvailableTimeblocks:z4}=M2(),{getDataByDateAndMealWithExceptions:b4}=Q1(),{getDataByDateAndMeal:p4}=l1(),{filterTimeblocksByMaxGroups:O4}=PM(),{filterTimeblocksByMaxArrivals:Qb}=_M(),{filterTimeblocksByStopTimes:c4}=FM(),{getAvailableTimeblocksWithTableCheck:A4}=E2();function o4(b,O){let o=90;b["general-settings"]&&b["general-settings"].dagenInToekomst&&parseInt(b["general-settings"].dagenInToekomst,10)>0&&(o=parseInt(b["general-settings"].dagenInToekomst,10));let q="Europe/Amsterdam",W=new Date,n=new Date(W.toLocaleString("en-US",{timeZone:q})),a=new Date(n.getTime());a.setDate(a.getDate()+o),a.setHours(23,59,59,999);let[f,d,s]=O.split("-").map(Number),g=new Date(Date.UTC(f,d-1,s));return new Date(g.toLocaleString("en-US",{timeZone:q}))<=a}function q4(b,O,o,q,W=[],n=null,a=null,f=null){let d=[];if(!o4(b,O))return d.push({type:"DATE_OUT_OF_RANGE"}),d;let s=["breakfast","lunch","dinner"],g=false,u=false;for(let y of s)b4(b,O,y)&&(g=true),p4(b,O,y)&&(u=true);if(!g)return u?d.push({type:"EXCEPTION_CLOSURE"}):d.push({type:"OPENING_HOURS_DISABLED"}),d;let l=x2(b,O,[],q,[],null,false,a);if(Object.keys(l).length===0)return d.push({type:"CAPACITY_INSUFFICIENT"}),d;let v=x2(b,O,o,q,[],null,false,a);if(Object.keys(v).length===0)return d.push({type:"CAPACITY_REACHED"}),d;if(n){let y=x2(b,O,o,q,[],n,false,a);if(Object.keys(y).length===0)return d.push({type:"GIFTCARD_MISMATCH"}),d}let R=x2(b,O,o,q,W,n,false,a);if(Object.keys(R).length===0)return d.push({type:"BLOCKED_SLOTS"}),d;let X=z4(b,O,o,q,W,n,false,a);if(Object.keys(X).length===0)return d.push({type:"TODAY_TIME_RESTRICTION"}),d;if(X=O4(b,O,X,o,q),Object.keys(X).length===0)return d.push({type:"MAX_GROUPS"}),d;if(X=Qb(b,O,X,o,q),Object.keys(X).length===0)return d.push({type:"MAX_ARRIVALS"}),d;let S=b?.["table-settings"]||{};if(S.isInstalled===true&&S.assignmentMode==="automatic"){let y=A4(b,O,X,q,o,f,a);if(Object.keys(y).length===0)return d.push({type:"TABLE_PLAN"}),d;if(X=Qb(b,O,y,o,q),Object.keys(X).length===0)return d.push({type:"MAX_ARRIVALS"}),d}return X=c4(X,b,O),Object.keys(X).length===0&&d.push({type:"TODAY_TIME_RESTRICTION"}),d}$b.exports={getDateClosingReasons:q4};});var b2=i0((Iq,Zb)=>{var e4={...LM(),...g2(),...$1()},W4={...T2()},n4={...Q1(),...l1()},a4={...E1()},d4={...hb(),...M2(),...gM(),...CM(),...EM(),...E2(),...Fb(),...Z1(),...Ub(),...Jb()},t4={...FM(),..._M(),...PM()};Zb.exports={...e4,...W4,...n4,...a4,...d4,...t4};});var sp=i0((QM,rp)=>{(function(b,O){typeof QM=="object"&&typeof rp<"u"&&typeof l2=="function"?O(N2()):typeof define=="function"&&define.amd?define(["../moment"],O):O(b.moment);})(QM,(function(b){var O="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),o="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),q=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],W=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,n=b.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,f){return a?/-MMM-/.test(f)?o[a.month()]:O[a.month()]:O},monthsRegex:W,monthsShortRegex:W,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:q,longMonthsParse:q,shortMonthsParse:q,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:true,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xE9\xE9n minuut",mm:"%d minuten",h:"\xE9\xE9n uur",hh:"%d uur",d:"\xE9\xE9n dag",dd:"%d dagen",w:"\xE9\xE9n week",ww:"%d weken",M:"\xE9\xE9n maand",MM:"%d maanden",y:"\xE9\xE9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(a===1||a===8||a>=20?"ste":"de")},week:{dow:1,doy:4}});return n}));});function R0(b,{insertAt:O}={}){if(!b||typeof document>"u")return;let o=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css",O==="top"&&o.firstChild?o.insertBefore(q,o.firstChild):o.appendChild(q),q.styleSheet?q.styleSheet.cssText=b:q.appendChild(document.createTextNode(b));}R0(`.new-reservation-page .value-selector{display:flex;flex-direction:column;gap:15px;margin-bottom:20px}.new-reservation-page .non-absolute{position:relative!important}.new-reservation-page .non-absolute:before{background:none}.new-reservation-page .predefined-values{display:flex;gap:10px}.new-reservation-page .predefined-value-button{flex:1;padding:10px;border:1px solid #ccc;border-radius:var(--border-radius);background-color:var(--color-white);cursor:pointer;font-size:1rem;transition:background-color .3s ease}.new-reservation-page .predefined-value-button.active,.new-reservation-page .predefined-value-button:hover{background-color:var(--color-blue);color:var(--color-white)}.new-reservation-page .slider-container{display:flex;align-items:center;gap:15px}.new-reservation-page .slider{flex:1;appearance:none;-webkit-appearance:none;height:5px;background:#ddd;border-radius:5px;outline:none}.new-reservation-page .slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:var(--color-blue);cursor:pointer;border-radius:50%}.new-reservation-page .value-input{width:80px;padding:10px;border:1px solid #ccc;border-radius:var(--border-radius);font-size:1rem}
9
- `);var NA=({setGuests:b,value:O,onChange:o})=>{let q=[1,2,3,"4+"],[W,n]=useState(O||""),[a,f]=useState(false),d=u=>{u==="4+"?(f(true),n(4),b(4),o({target:{name:"guests",value:4}})):(f(false),n(u),b(u),o({target:{name:"guests",value:u}}));},s=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});},g=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});};return e0.createElement("div",{className:"value-selector",translate:"no"},e0.createElement("div",{className:"predefined-values"},q.map(u=>e0.createElement("button",{key:u,type:"button",className:`predefined-value-button ${W==u||u==="4+"&&a?"active":""}`,onClick:()=>d(u)},u==="4+"?"4+":`${u} p`))),e0.createElement(AnimatePresence,null,a&&e0.createElement(motion.div,{className:"slider-container",initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0}},e0.createElement("input",{type:"range",min:"4",max:"15",step:"1",value:W,onChange:s,className:"slider non-absolute"}),e0.createElement("input",{type:"number",name:"guests",value:W,onChange:g,className:"value-input",min:"4",max:"100",step:"1"}))))},L2=NA;var L1=_0(e1());var $z=_0(e1()),Jz=b=>{let O=(0, $z.default)().tz("Europe/Brussels").startOf("day");return b.clone().add(6,"days").endOf("day").isBefore(O)},Zz=(b,O)=>b.isSame(O,"day");R0(`.new-reservation-page .calendar-container{position:relative;width:100%}.new-reservation-page .calendar-container .calendar-display{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;user-select:none;text-align:left;border-radius:5px}.new-reservation-page .calendar-container .calendar-display span:first-child{flex-grow:1}.new-reservation-page .calendar-container .calendar{position:absolute;z-index:1000;width:100%;background-color:#fff;border:1px solid #ccc;margin-top:5px;padding:10px;border-radius:10px;animation:fadeInCalendar .3s ease-in-out;box-shadow:0 2px 10px #0000001a}@keyframes fadeInCalendar{0%{opacity:0}to{opacity:1}}.new-reservation-page .calendar-container .availability-hold-btn{font-size:10px}.new-reservation-page .calendar-container .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px;flex-wrap:wrap}.new-reservation-page .calendar-container .calendar-header button{background-color:transparent;border:none;cursor:pointer;font-size:18px}.new-reservation-page .calendar-container .calendar-header span{font-size:15px;color:gray;font-weight:500}.new-reservation-page .calendar-container .calendar-weeks-wrapper{overflow:hidden;position:relative;width:100%}.new-reservation-page .calendar-container .calendar-table{width:100%;border-collapse:collapse}.new-reservation-page .calendar-container .calendar-table th,.new-reservation-page .calendar-container .calendar-table td{width:14.28%;text-align:center;padding:5px}.calendar-container .calendar-table th{color:#666;font-weight:400;padding-bottom:10px}.new-reservation-page .calendar-container .calendar-table td{vertical-align:middle;cursor:pointer;border:none;opacity:1;position:relative}.new-reservation-page .calendar-container .calendar-table td.empty-day{cursor:default}.new-reservation-page .calendar-container .calendar-table td:hover .day-square.available{transform:scale(1.05)}.new-reservation-page .calendar-container .day-square{position:relative;width:38px;height:38px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;flex-direction:column;transition:all .2s ease;font-size:16px;margin:0 auto}.new-reservation-page .calendar-container .day-number{line-height:1;z-index:2}.new-reservation-page .calendar-container .available .day-square{background-color:#cfc;color:#060}.new-reservation-page .calendar-container .available:hover .day-square{background-color:#b3ffb3}.new-reservation-page .calendar-container .available:active .day-square{background-color:#9f9}.new-reservation-page .calendar-container .unavailable .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .gray-out .day-square{background-color:#e0e0e0;color:#999;cursor:not-allowed}.new-reservation-page .calendar-container .selected .day-square{background-color:#060;color:#cfc}.new-reservation-page .calendar-container .has-blocked-slots .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .has-blocked-slots:hover .day-square{background-color:#8b000033}.new-reservation-page .calendar-container .has-blocked-slots.selected .day-square{background-color:#8b0000;color:#fff}.new-reservation-page .calendar-container .calendar-table td.unavailable,.new-reservation-page .calendar-container .calendar-table td.gray-out{cursor:not-allowed}.new-reservation-page .calendar-container .calendar-table td.unavailable:hover .day-square,.new-reservation-page .calendar-container .calendar-table td.gray-out:hover .day-square{transform:none}.new-reservation-page .calendar-container .calendar-table td{border:none}.new-reservation-page .calendar-container .arrow{margin-left:auto;color:gray;display:flex;align-items:center}.new-reservation-page .calendar-container .available .availability-badge{background:#38a169}.new-reservation-page .calendar-container .selected .availability-badge{background:#2d3748}.new-reservation-page .date-quick-label{font-size:14px;color:#555;margin-bottom:6px;display:block}.new-reservation-page .date-quick-picks{display:flex;gap:0;margin-bottom:8px;border:1.5px solid #d0d5dd;border-radius:8px;overflow:hidden}.new-reservation-page .date-quick-btn{flex:1;padding:10px 0;border:none;background:#fff;color:#344054;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.new-reservation-page .date-quick-btn:not(:last-child){border-right:1.5px solid #d0d5dd}.new-reservation-page .date-quick-btn:hover{background:#f9fafb}.new-reservation-page .date-quick-btn.active{background:#eef4ff;color:#1a56db;box-shadow:inset 0 0 0 1.5px #1a56db;font-weight:600}@media screen and (max-width:900px){.calendar-container .day-square{width:35px!important;height:35px!important;font-size:15px!important}.calendar-container .calendar-header span{font-size:12px}.new-reservation-page .calendar-container .availability-toggle-btn{padding:5px 8px;font-size:11px}}
9
+ `);var NA=({setGuests:b,value:O,onChange:o})=>{let q=[1,2,3,"4+"],[W,n]=useState(O||""),[a,f]=useState(false),d=u=>{u==="4+"?(f(true),n(4),b(4),o({target:{name:"guests",value:4}})):(f(false),n(u),b(u),o({target:{name:"guests",value:u}}));},s=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});},g=u=>{let l=u.target.value;n(l),b(l),o({target:{name:"guests",value:l}});};return e0.createElement("div",{className:"value-selector",translate:"no"},e0.createElement("div",{className:"predefined-values"},q.map(u=>e0.createElement("button",{key:u,type:"button",className:`predefined-value-button ${W==u||u==="4+"&&a?"active":""}`,onClick:()=>d(u)},u==="4+"?"4+":`${u} p`))),e0.createElement(AnimatePresence,null,a&&e0.createElement(motion.div,{className:"slider-container",initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0}},e0.createElement("input",{type:"range",min:"4",max:"15",step:"1",value:W,onChange:s,className:"slider non-absolute"}),e0.createElement("input",{type:"number",name:"guests",value:W,onChange:g,className:"value-input",min:"4",max:"100",step:"1"}))))},L2=NA;var L1=_0(e1());var $z=_0(e1()),Jz=b=>{let O=(0, $z.default)().tz("Europe/Brussels").startOf("day");return b.clone().add(6,"days").endOf("day").isBefore(O)},Zz=(b,O)=>b.isSame(O,"day");R0(`.new-reservation-page .calendar-container{position:relative;width:100%}.new-reservation-page .calendar-container .calendar-display{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;user-select:none;text-align:left;border-radius:5px}.new-reservation-page .calendar-container .calendar-display span:first-child{flex-grow:1}.new-reservation-page .calendar-container .calendar{position:absolute;z-index:1000;width:100%;background-color:#fff;border:1px solid #ccc;margin-top:5px;padding:10px;border-radius:10px;animation:fadeInCalendar .3s ease-in-out;box-shadow:0 2px 10px #0000001a}@keyframes fadeInCalendar{0%{opacity:0}to{opacity:1}}.new-reservation-page .calendar-container .availability-hold-btn{font-size:10px}.new-reservation-page .calendar-container .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px;flex-wrap:wrap}.new-reservation-page .calendar-container .calendar-header button{background-color:transparent;border:none;cursor:pointer;font-size:18px}.new-reservation-page .calendar-container .calendar-header span{font-size:15px;color:gray;font-weight:500}.new-reservation-page .calendar-container .calendar-weeks-wrapper{overflow:hidden;position:relative;width:100%}.new-reservation-page .calendar-container .calendar-table{width:100%;border-collapse:collapse}.new-reservation-page .calendar-container .calendar-table th,.new-reservation-page .calendar-container .calendar-table td{width:14.28%;text-align:center;padding:5px}.calendar-container .calendar-table th{color:#666;font-weight:400;padding-bottom:10px}.new-reservation-page .calendar-container .calendar-table td{vertical-align:middle;cursor:pointer;border:none;opacity:1;position:relative}.new-reservation-page .calendar-container .calendar-table td.empty-day{cursor:default}.new-reservation-page .calendar-container .calendar-table td:hover .day-square.available{transform:scale(1.05)}.new-reservation-page .calendar-container .day-square{position:relative;width:38px;height:38px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;flex-direction:column;transition:all .2s ease;font-size:16px;margin:0 auto}.new-reservation-page .calendar-container .day-number{line-height:1;z-index:2}.new-reservation-page .calendar-container .available .day-square{background-color:#cfc;color:#060}.new-reservation-page .calendar-container .available:hover .day-square{background-color:#b3ffb3}.new-reservation-page .calendar-container .available:active .day-square{background-color:#9f9}.new-reservation-page .calendar-container .unavailable .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .gray-out .day-square{background-color:#e0e0e0;color:#999;cursor:not-allowed}.new-reservation-page .calendar-container .selected .day-square{background-color:#060;color:#cfc}.new-reservation-page .calendar-container .has-blocked-slots .day-square{background-color:#8b000021;color:#8b0000}.new-reservation-page .calendar-container .has-blocked-slots:hover .day-square{background-color:#8b000033}.new-reservation-page .calendar-container .has-blocked-slots.selected .day-square{background-color:#8b0000;color:#fff}.new-reservation-page .calendar-container .calendar-table td.unavailable,.new-reservation-page .calendar-container .calendar-table td.gray-out{cursor:not-allowed}.new-reservation-page .calendar-container .calendar-table td.unavailable:hover .day-square,.new-reservation-page .calendar-container .calendar-table td.gray-out:hover .day-square{transform:none}.new-reservation-page .calendar-container .calendar-table td{border:none}.new-reservation-page .calendar-container .arrow{margin-left:auto;color:gray;display:flex;align-items:center}.new-reservation-page .calendar-container .available .availability-badge{background:#38a169}.new-reservation-page .calendar-container .selected .availability-badge{background:#2d3748}.new-reservation-page .date-quick-label{font-size:14px;color:#555;margin-bottom:6px;display:block}.new-reservation-page .date-quick-picks{display:flex;gap:0;margin-bottom:8px;border:1.5px solid #d0d5dd;border-radius:8px;overflow:hidden}.new-reservation-page .date-quick-btn{flex:1;padding:10px 0;border:none;background:#fff;color:#344054;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.new-reservation-page .date-quick-btn:not(:last-child){border-right:1.5px solid #d0d5dd}.new-reservation-page .date-quick-btn:hover{background:#f9fafb}.new-reservation-page .date-quick-btn.active{background:#cfc;color:#060;box-shadow:inset 0 0 0 1.5px #060;font-weight:600}@media screen and (max-width:900px){.calendar-container .day-square{width:35px!important;height:35px!important;font-size:15px!important}.calendar-container .calendar-header span{font-size:12px}.new-reservation-page .calendar-container .availability-toggle-btn{padding:5px 8px;font-size:11px}}
10
10
  `);var i1=_0(b2());var HM=class{constructor(O=6e4){this.cache=new Map,this.ttl=O;}generateKey(O,...o){return `${O}::${JSON.stringify(o)}`}get(O){let o=this.cache.get(O);return o?Date.now()-o.timestamp>this.ttl?(this.cache.delete(O),null):o.value:null}set(O,o){this.cache.set(O,{value:o,timestamp:Date.now()});}clear(){this.cache.clear();}cleanup(){let O=Date.now();for(let[o,q]of this.cache.entries())O-q.timestamp>this.ttl&&this.cache.delete(o);}},D2=new HM;setInterval(()=>D2.cleanup(),3e4);var j0=(b,O,...o)=>{let q=D2.generateKey(b,...o),W=D2.get(q);if(W!==null)return W;let n=O(...o);return D2.set(q,n),n};var J0={nl:{reservationStepOne:{errors:{openingHoursNotSet:"Openingstijden niet ingesteld.",clickHereToSet:"Klik hier om uw openingsuren in te stellen."},modes:{withLimits:"Met Limieten",unlimited:"Onbeperkt",openingHours:"Openingsuren",free:"Vrij"},fields:{time:"Tijd"},messages:{searchingTables:"Beschikbare tafels zoeken...",noTablesAvailable:"Geen specifieke tafels beschikbaar voor deze selectie."},warnings:{unlimitedMode:"Onbeperkt zal geen rekening houden met maximum limieten.",dateNotAvailableWithLimits:"Let op: deze datum is niet beschikbaar met limieten voor dit aantal gasten. De modus is automatisch overgezet naar onbeperkt vrij."}},calendar:{selectDatePlaceholder:"Selecteer een datum",today:"Vandaag",tomorrow:"Morgen",prevWeek:"Vorige week",nextWeek:"Volgende week",dayHeaders:["Ma","Di","Wo","Do","Vr","Za","Zo"],seatsQuestion:"Zitplaatsen?",other:"Andere"},timeSelector:{shifts:{breakfast:"Ontbijt",lunch:"Lunch",dinner:"Diner"},selectMeal:"Selecteer een maaltijd",selectTime:"Selecteer een tijd",noDateSelected:"Selecteer eerst een datum.",noTimes:"Geen beschikbare tijden.",back:"Terug",reservations:"Reservaties",guests:"Gasten"},tableSelector:{label:"Selecteer beschikbare tafel(s):",table:"Tafel",max:"Max",noTables:"Geen specifieke tafels beschikbaar voor deze tijd/gasten combinatie.",manual:"Handmatig"}},en:{reservationStepOne:{errors:{openingHoursNotSet:"Opening hours not set.",clickHereToSet:"Click here to set your opening hours."},modes:{withLimits:"With Limits",unlimited:"Unlimited",openingHours:"Opening Hours",free:"Free"},fields:{time:"Time"},messages:{searchingTables:"Searching for available tables...",noTablesAvailable:"No specific tables available for this selection."},warnings:{unlimitedMode:"Unlimited will not take into account maximum limits.",dateNotAvailableWithLimits:"Note: this date is not available with limits for this number of guests. The mode has been automatically switched to unlimited free."}},calendar:{selectDatePlaceholder:"Select a date",today:"Today",tomorrow:"Tomorrow",prevWeek:"Previous week",nextWeek:"Next week",dayHeaders:["M","T","W","T","F","S","S"],seatsQuestion:"Seating?",other:"Other"},timeSelector:{shifts:{breakfast:"Breakfast",lunch:"Lunch",dinner:"Dinner"},selectMeal:"Select a meal",selectTime:"Select a time",noDateSelected:"Please select a date first.",noTimes:"No available times.",back:"Back",reservations:"Reservations",guests:"Guests"},tableSelector:{label:"Select available table(s):",table:"Table",max:"Max",noTables:"No specific tables available for this time/guest combination.",manual:"Manual"}},fr:{reservationStepOne:{errors:{openingHoursNotSet:"Horaires non d\xE9finies.",clickHereToSet:"Cliquez ici pour d\xE9finir vos horaires."},modes:{withLimits:"Avec Limites",unlimited:"Illimit\xE9",openingHours:"Horaires",free:"Libre"},fields:{time:"Heure"},messages:{searchingTables:"Recherche de tables disponibles...",noTablesAvailable:"Aucune table sp\xE9cifique disponible pour cette s\xE9lection."},warnings:{unlimitedMode:"Illimit\xE9 ne tiendra pas compte des limites maximales.",dateNotAvailableWithLimits:"Attention : cette date n'est pas disponible avec limites pour ce nombre de convives. Le mode a \xE9t\xE9 automatiquement bascul\xE9 vers illimit\xE9 libre."}},calendar:{selectDatePlaceholder:"S\xE9lectionnez une date",today:"Aujourd'hui",tomorrow:"Demain",prevWeek:"Semaine pr\xE9c\xE9dente",nextWeek:"Semaine suivante",dayHeaders:["Lu","Ma","Me","Je","Ve","Sa","Di"],seatsQuestion:"Places ?",other:"Autre"},timeSelector:{shifts:{breakfast:"Petit-d\xE9jeuner",lunch:"D\xE9jeuner",dinner:"D\xEEner"},selectMeal:"S\xE9lectionnez un repas",selectTime:"S\xE9lectionnez une heure",noDateSelected:"Veuillez d'abord s\xE9lectionner une date.",noTimes:"Aucun horaire disponible.",back:"Retour",reservations:"R\xE9servations",guests:"Convives"},tableSelector:{label:"S\xE9lectionnez les table(s) disponibles :",table:"Table",max:"Max",noTables:"Aucune table sp\xE9cifique disponible pour cette combinaison temps/convives.",manual:"Manuel"}}};var bp=memo(({guests:b,selectedDate:O,onSelectDate:o,autoExpand:q,reservationMode:W,restaurantData:n,startDate:a,onWeekChange:f,reservations:d,giftcard:s,zitplaats:g,isAdmin:u=false})=>{let l=localStorage.getItem("preferredLanguage")||"nl",v=J0[l].calendar,[R,X]=useState(q||false),[S,B]=useState(false),y=useRef(null),N=useRef(null),x=(0, L1.default)().tz("Europe/Amsterdam").add(1,"year").endOf("day");useEffect(()=>{q&&X(true);},[q]),useEffect(()=>{let I=V=>{y.current&&!y.current.contains(V.target)&&(X(false),B(false));};return document.addEventListener("mousedown",I),()=>{document.removeEventListener("mousedown",I);}},[]),useEffect(()=>()=>{N.current&&(clearTimeout(N.current),N.current=null);},[]);let w=()=>{N.current&&(clearTimeout(N.current),N.current=null),B(true);},T=(I=1e3)=>{N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{B(false),N.current=null;},I);},C=useCallback((I,V,$=[])=>{if(I.isBefore(V,"day")||I.isAfter(x,"day"))return 0;let q0=I.format("YYYY-MM-DD");if(W==="vrije_keuze")return 21;if(W!=="met_limieten"&&!S)return (0, i1.isDateAvailable)(n,q0,d,-1e4,$,null,u)?21:0;let O0=n?.["table-settings"]||{},d0=O0.isInstalled===true&&O0.assignmentMode==="automatic"&&(S||W==="met_limieten"),H=z0=>d0?j0("isDateAvailableWithTableCheck",i1.isDateAvailableWithTableCheck,n,q0,d,z0,$,null,u,null,g||null):j0("isDateAvailable",i1.isDateAvailable,n,q0,d,z0,$,null,u);if(!H(1))return 0;if(H(21))return 21;let X0=1,G=21,P=1;for(;X0<=G;){let z0=Math.floor((X0+G)/2);H(z0)?(P=z0,X0=z0+1):G=z0-1;}return P},[n,d,s,u,W,S]),k=useMemo(()=>{if(!R)return [];let I=[],V=(0, L1.default)().tz("Europe/Amsterdam").startOf("day"),$=a||V,q0=n?.["blocked-slots"]||[],O0=$.clone().startOf("month"),d0=$.clone().endOf("month"),H=n?.["table-settings"]||{},X0=H.isInstalled===true&&H.assignmentMode==="automatic"&&W==="met_limieten",G=O0.clone();for(;G.isSameOrBefore(d0,"day");){let P=G.format("YYYY-MM-DD"),z0;if(W==="vrije_keuze")z0=G.isBetween(V,x,null,"[]");else {let T0=W!=="met_limieten"?-1e4:b,f0=W==="met_limieten"?s:null;X0?z0=j0("isDateAvailableWithTableCheck",i1.isDateAvailableWithTableCheck,n,P,d,T0,q0,f0,u,null,g||null):z0=j0("isDateAvailable",i1.isDateAvailable,n,P,d,T0,q0,f0,u);}let A0=C(G,V,q0),u0=false;u&&z0&&W!=="vrije_keuze"&&(u0=!j0("isDateAvailable",i1.isDateAvailable,n,P,d,W!=="met_limieten"?-1e4:b,q0,W==="met_limieten"?s:null,false)),I.push({date:G.clone(),isPast:G.isBefore(V,"day"),isFuture:G.isAfter(x,"day"),isAvailable:z0,maxGuestsAvailable:A0,isClosedForCustomers:u0}),G.add(1,"day");}return I},[R,a,b,W,n,d,s,g,S,u]),E=I=>{I.isAvailable&&!I.isPast&&!I.isFuture&&(o(I.date.format("YYYY-MM-DD")),X(false),B(false));},Y=()=>{let I=a.clone().subtract(1,"month").startOf("month"),V=(0, L1.default)().tz("Europe/Amsterdam").startOf("day");if(I.clone().endOf("month").isBefore(V,"day")){console.log("Cannot go to previous month. It is in the past.");return}f(I);},D=()=>{let I=a.clone().add(1,"month").startOf("month");f(I);},j=()=>{if(!O)return v.selectDatePlaceholder;let I=(0, L1.default)(O,"YYYY-MM-DD").tz("Europe/Amsterdam").startOf("day"),V=(0, L1.default)().tz("Europe/Amsterdam").startOf("day"),$=V.clone().add(1,"day");return I.isSame(V,"day")?v.today:I.isSame($,"day")?v.tomorrow:I.format("dddd D MMMM YYYY")},U=a?(I=>{let $=a.clone().startOf("month").day(),q0=$===0?6:$-1,O0=[];for(let G=0;G<q0;G++)O0.push(null);O0.push(...I);let d0=O0.length,H=Math.ceil(d0/7);for(;O0.length<H*7;)O0.push(null);let X0=[];for(let G=0;G<H;G++){let P=O0.slice(G*7,G*7+7);X0.push(P);}return X0})(k):[],m=v.dayHeaders,K=I=>I>=21?"20+":String(I);return e0.createElement("div",{className:"calendar-container",ref:y},e0.createElement("div",{className:"calendar-display",onClick:()=>{let I=!R;X(I),I&&window.dispatchEvent(new CustomEvent("calendarExpanded"));}},e0.createElement("span",null,j()),e0.createElement("span",{className:"arrow"},e0.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",style:{transform:R?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}},e0.createElement("path",{d:"M7 10l5 5 5-5",fill:"none",stroke:"currentColor",strokeWidth:"2"})))),R&&a&&e0.createElement("div",{className:"calendar"},e0.createElement("div",{className:"calendar-header"},e0.createElement("button",{type:"button",onClick:Y,"aria-label":v.prevWeek},"<"),e0.createElement("span",null,a.format("MMMM YYYY")),e0.createElement("button",{type:"button",onClick:D,"aria-label":v.nextWeek},">"),e0.createElement("button",{type:"button",className:`availability-hold-btn ${S?"active":""}`,"aria-pressed":S,"aria-label":"Houd ingedrukt om beschikbaarheden te tonen",onMouseDown:w,onMouseUp:()=>T(1e3),onMouseLeave:()=>T(1e3),onTouchStart:w,onTouchEnd:()=>T(1e3),onTouchCancel:()=>T(1e3),onKeyDown:I=>{(I.key===" "||I.key==="Enter")&&w();},onKeyUp:I=>{(I.key===" "||I.key==="Enter")&&T(1e3);},style:{fontSize:"15px",color:"gray",fontWeight:"450",textDecoration:"underline"}},v.seatsQuestion)),e0.createElement("div",{className:"calendar-weeks-wrapper"},e0.createElement("table",{className:"calendar-table"},e0.createElement("thead",null,e0.createElement("tr",{translate:"no"},m.map((I,V)=>e0.createElement("th",{key:V},I)))),e0.createElement("tbody",null,U.map((I,V)=>e0.createElement("tr",{key:V,translate:"no"},I.map(($,q0)=>{if(!$)return e0.createElement("td",{key:q0,className:"empty-day"});let O0=O&&Zz($.date,(0, L1.default)(O,"YYYY-MM-DD").tz("Europe/Amsterdam")),d0=[];return $.isPast?d0.push("gray-out"):$.isClosedForCustomers?d0.push("has-blocked-slots"):$.isAvailable?d0.push("available"):d0.push("unavailable"),O0&&d0.push("selected"),e0.createElement("td",{key:q0,className:d0.join(" "),onClick:()=>E($),style:{"--animation-order":q0+V*7}},e0.createElement("div",{className:`day-square ${S?"showing-availabilities":""}`},e0.createElement("span",{className:"day-number"},S?K($.maxGuestsAvailable):$.date.date())))}))))))))});bp.displayName="Calendar";var pp=bp;var D1=_0(e1());var l4=({guests:b,formData:O,handleChange:o,resetFormDataFields:q,restaurantData:W,reservations:n,startDate:a,onWeekChange:f,reservationMode:d,isAdmin:s=false})=>{let g=localStorage.getItem("preferredLanguage")||"nl",u=J0[g].calendar,l=(0, D1.default)().tz("Europe/Amsterdam").format("YYYY-MM-DD"),v=(0, D1.default)().tz("Europe/Amsterdam").add(1,"day").format("YYYY-MM-DD"),R=E=>!E||E===l?"today":E===v?"tomorrow":"other",[X,S]=useState(()=>R(O.date)),[B,y]=useState(false),N=useRef(false);useEffect(()=>{N.current||(N.current=true,O.date||(x(l),S("today")));},[]);let x=E=>{let Y=(0, D1.default)(E).format("YYYY-MM-DD");o({target:{name:"date",value:Y}}),q(["time"]);},w=E=>{S(E),E==="today"?(y(false),x(l)):E==="tomorrow"?(y(false),x(v)):y(true);},T=E=>{x(E),S("other"),y(false);},C=a?a.clone().startOf("month"):(0, D1.default)().startOf("month"),k=X==="other"&&O.date&&O.date!==l&&O.date!==v?(0, D1.default)(O.date,"YYYY-MM-DD").tz("Europe/Amsterdam").format("D MMM"):u.other;return e0.createElement("div",{className:"form-group date-selector-container"},e0.createElement("label",{className:"date-quick-label"},"Date"),e0.createElement("div",{className:"date-quick-picks"},e0.createElement("button",{type:"button",className:`date-quick-btn ${X==="today"?"active":""}`,onClick:()=>w("today")},u.today),e0.createElement("button",{type:"button",className:`date-quick-btn ${X==="tomorrow"?"active":""}`,onClick:()=>w("tomorrow")},u.tomorrow),e0.createElement("button",{type:"button",className:`date-quick-btn ${X==="other"?"active":""}`,onClick:()=>w("other")},k)),B&&e0.createElement(pp,{guests:b,selectedDate:O.date||null,onSelectDate:T,autoExpand:true,reservationMode:d,restaurantData:W,startDate:C,onWeekChange:f,reservations:n,giftcard:O.giftcard,zitplaats:O.zitplaats,isAdmin:s}))},cp=l4;R0(`.new-reservation-page .time-selector-container{position:relative}.new-reservation-page .time-display{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;user-select:none;text-align:left;border-radius:5px}.new-reservation-page .time-display span:first-child{flex-grow:1}.new-reservation-page .time-selector{position:absolute;z-index:1000;width:100%;max-height:350px;overflow-y:auto;background-color:#fff;border:1px solid #ccc;padding:10px;border-radius:10px;animation:fadeInTimeSelector .3s ease-in-out;top:75px}.new-reservation-page .time-toggle-container{display:flex;gap:8px;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #eee}.new-reservation-page .time-toggle-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;border:1px solid #ddd;background-color:#f5f5f5;color:#666;font-size:13px;cursor:pointer;transition:all .2s ease;font-family:inherit}.new-reservation-page .time-toggle-btn:hover{background-color:#e8e8e8;border-color:#ccc}.new-reservation-page .time-toggle-btn.active{background-color:var(--color-blue, #48aaaf);border-color:var(--color-blue, #48aaaf);color:#fff}.new-reservation-page .time-toggle-btn.active:hover{background-color:var(--color-blue, #48aaaf);filter:brightness(.95)}.new-reservation-page .time-toggle-btn svg{flex-shrink:0}.new-reservation-page .time-count{font-weight:400;opacity:.9}@keyframes fadeInTimeSelector{0%{opacity:0}to{opacity:1}}.new-reservation-page .time-period{margin-bottom:15px}.new-reservation-page .time-period-label{font-weight:700;margin-bottom:5px}.new-reservation-page .time-options{display:flex;flex-wrap:wrap;gap:5px}.new-reservation-page .time-option{padding:8px 12px;background-color:#cfc;color:#060;border-radius:5px;cursor:pointer;transition:background-color .2s ease}.new-reservation-page .time-option:hover{background-color:#b3ffb3}.new-reservation-page .time-option.selected{background-color:#060;color:#cfc}.new-reservation-page .time-option.blocked{background-color:#fff3e0;color:#e65100}.new-reservation-page .time-option.blocked:hover{background-color:#ffe0b2}.new-reservation-page .time-option.blocked.selected{background-color:#e65100;color:#fff3e0}.new-reservation-page .info-text{color:#666;font-style:italic}.new-reservation-page .arrow{margin-left:auto;color:gray;display:flex;align-items:center}@media screen and (max-width:480px){.new-reservation-page .time-option{padding:6px 10px;font-size:14px}.new-reservation-page .time-toggle-btn{padding:5px 10px;font-size:12px;gap:4px}.new-reservation-page .time-toggle-btn svg{width:12px;height:12px}}
11
11
  `);var UM=_0(e1());var I2=_0(b2()),op=memo(({guests:b,formData:O,handleChange:o,field:q,selectedDate:W,expanded:n,setCurrentExpandedField:a,restaurantData:f,reservations:d,reservationMode:s,isAdmin:g=false,zitplaats:u=null})=>{let l=localStorage.getItem("preferredLanguage")||"nl",v=J0[l].timeSelector,[R,X]=useState(n||false),[S,B]=useState([]),[y,N]=useState(null),[x,w]=useState(null),T=useRef(null),C=useMemo(()=>{if(!g||!W||!f)return new Set;let m=f?.["blocked-slots"]||[],K=new Set;return m.forEach(I=>{I.date===W&&I.time&&K.add(I.time);}),K},[g,W,f]),k=useMemo(()=>{if(!d||!W)return {};let m={};return d.forEach(K=>{if((K.date||K.datum)!==W)return;let V=K.time||K.tijd;if(!V)return;let $=K.guests||K.antal||K.gasten||1;m[V]||(m[V]={reservations:0,guests:0}),m[V].reservations+=1,m[V].guests+=$;}),m},[d,W]),E=m=>k[m]||{reservations:0,guests:0},Y=m=>{w(x===m?null:m);},D={breakfast:{start:"07:00",end:"11:00",label:v.shifts.breakfast},lunch:{start:"11:00",end:"16:00",label:v.shifts.lunch},dinner:{start:"16:00",end:"23:00",label:v.shifts.dinner}};useEffect(()=>{if(!W||!b){B([]);return}if(s==="vrije_keuze")if(y){let m=D[y],K=UM.default.tz(`${W} ${m.start}`,"YYYY-MM-DD HH:mm","Europe/Brussels"),I=UM.default.tz(`${W} ${m.end}`,"YYYY-MM-DD HH:mm","Europe/Brussels"),V=[],$=K.clone();for(;$.isBefore(I);)V.push({value:$.format("HH:mm"),label:$.format("HH:mm")}),$.add(15,"minutes");B(V);}else B([]);else if(f&&d){let m=s!=="met_limieten"?-1e4:b,K=f?.["table-settings"]||{},I=s==="met_limieten"&&K.isInstalled===true&&K.assignmentMode==="automatic",V=s==="met_limieten"?O.giftcard:null,$=f?.["blocked-slots"]||[],q0=(0, I2.getAvailableTimeblocks)(f,W,d,m,$,V,g,O.duration),O0=I?(0, I2.getAvailableTimeblocksWithTableCheck)(f,W,q0,m,d,u,O.duration):q0,d0=Object.keys(O0).map(H=>({value:H,label:O0[H].name||H}));d0.sort((H,X0)=>{let[G,P]=H.value.split(":").map(Number),[z0,A0]=X0.value.split(":").map(Number);return G*60+P-(z0*60+A0)}),B(d0),O[q.id]&&!d0.some(H=>H.value===O[q.id])&&o({target:{name:q.id,value:""}});}else B([]);},[W,b,f,d,s,q.id,y,u,O[q.id],o]),useEffect(()=>{s==="vrije_keuze"&&(N(null),O[q.id]&&o({target:{name:q.id,value:""}}));},[W,s]),useEffect(()=>{X(false);},[W]),useEffect(()=>{let m=()=>X(false);return window.addEventListener("calendarExpanded",m),()=>window.removeEventListener("calendarExpanded",m)},[]);let j=m=>{o({target:{name:q.id,value:m}}),X(false),a?.(null);},b0=m=>{y!==m&&O[q.id]&&o({target:{name:q.id,value:""}}),N(m);},U=()=>{if(s==="vrije_keuze")return y?O[q.id]?`${D[y].label} \u2013 ${O[q.id]}`:`${D[y].label} \u2013 ${v.selectTime}`:v.selectMeal;if(O[q.id]){let m=S.find(K=>K.value===O[q.id]);return m?m.label:v.selectTime}return v.selectTime};return q?e0.createElement("div",{className:"form-group time-selector-container",ref:T},W?e0.createElement(e0.Fragment,null,e0.createElement("div",{className:"time-display",onClick:()=>{X(!R),R||a?.(q.id);}},e0.createElement("span",null,U()),e0.createElement("span",{className:"arrow"},e0.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",style:{transform:R?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}},e0.createElement("path",{d:"M7 10l5 5 5-5",fill:"none",stroke:"currentColor",strokeWidth:"2"})))),R&&e0.createElement("div",{className:"time-selector"},e0.createElement("div",{className:"time-toggle-container"},e0.createElement("button",{className:`time-toggle-btn ${x==="reservations"?"active":""}`,onClick:()=>Y("reservations"),type:"button"},e0.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},e0.createElement("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),e0.createElement("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),e0.createElement("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),e0.createElement("line",{x1:"3",y1:"10",x2:"21",y2:"10"})),v.reservations),e0.createElement("button",{className:`time-toggle-btn ${x==="guests"?"active":""}`,onClick:()=>Y("guests"),type:"button"},e0.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},e0.createElement("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),e0.createElement("circle",{cx:"9",cy:"7",r:"4"}),e0.createElement("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"}),e0.createElement("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})),v.guests)),s==="vrije_keuze"?y?e0.createElement("div",{className:"time-period"},e0.createElement("div",{className:"time-period-label"},D[y].label,e0.createElement("button",{onClick:()=>N(null),style:{marginLeft:"10px",background:"none",border:"none",cursor:"pointer",color:"#006600",fontSize:"0.9rem",padding:0}},"\u2190 ",v.back)),e0.createElement("div",{className:"time-options"},S.length===0?e0.createElement("div",{className:"no-times"},v.noTimes):S.map(m=>{let K=E(m.value),I=C.has(m.value);return e0.createElement("div",{key:m.value,className:`time-option${O[q.id]===m.value?" selected":""}${I?" blocked":""}`,onClick:()=>j(m.value)},m.label,x==="reservations"&&K.reservations>0&&e0.createElement("span",{className:"time-count"}," - ",K.reservations),x==="guests"&&K.guests>0&&e0.createElement("span",{className:"time-count"}," - ",K.guests,"p"))}))):e0.createElement("div",{className:"time-options"},Object.keys(D).map(m=>e0.createElement("div",{key:m,className:`time-option ${y===m?"selected":""}`,onClick:()=>b0(m)},D[m].label))):e0.createElement("div",{className:"time-options"},S.length===0?e0.createElement("div",{className:"no-times"},v.noTimes):S.map(m=>{let K=E(m.value),I=C.has(m.value);return e0.createElement("div",{key:m.value,className:`time-option${O[q.id]===m.value?" selected":""}${I?" blocked":""}`,onClick:()=>j(m.value)},m.label,x==="reservations"&&K.reservations>0&&e0.createElement("span",{className:"time-count"}," - ",K.reservations),x==="guests"&&K.guests>0&&e0.createElement("span",{className:"time-count"}," - ",K.guests,"p"))})))):e0.createElement("p",{className:"info-text"},v.noDateSelected)):null});op.displayName="TimeSelector";var qp=op;R0(`.new-reservation-page .table-selector-container{margin-top:15px;padding:10px;border:1px solid #eee;border-radius:4px;background-color:#f9f9f9}.new-reservation-page .table-selector-label{display:block;margin-bottom:10px;font-weight:700;color:#333;font-size:.95rem}.new-reservation-page .table-options{display:flex;flex-wrap:wrap;gap:10px}.new-reservation-page .table-option{display:inline-block;margin-right:15px;margin-bottom:5px;padding:5px 8px;border:1px solid #ccc;border-radius:4px;background-color:#fff;transition:background-color .2s ease}.new-reservation-page .table-option label{display:flex;align-items:center;cursor:pointer;font-size:.9rem;color:#555}.new-reservation-page .table-option input[type=checkbox]{margin-right:8px;cursor:pointer;accent-color:var(--primary-color, #006600)}.new-reservation-page .table-option:has(input[type=checkbox]:checked){background-color:#e0f2e0;border-color:#060}.new-reservation-page .table-option:hover{background-color:#f0f0f0}.new-reservation-page .info-text{margin-top:10px;font-size:.85rem;color:#666}.new-reservation-page .selected-tables-info{margin-top:10px;font-style:italic}.new-reservation-page .info-text.loading-tables{font-style:italic;color:#060}.new-reservation-page .table-option--manual{border-color:#ff9800;background-color:#fff8e1}.new-reservation-page .table-option--manual:hover{background-color:#ffecb3}.new-reservation-page .table-option--manual:has(input[type=checkbox]:checked){background-color:#ffe082;border-color:#ff9800}
12
12
  `);var B4=({availableTables:b=[],isFetching:O=false,formData:o={},handleChange:q,setFormData:W})=>{let n=localStorage.getItem("preferredLanguage")||"nl",a=J0?.[n]?.tableSelector||{},f={label:a.label||"Tafels",noTables:a.noTables||"Geen tafels beschikbaar voor deze selectie.",table:a.table||"Tafel",max:a.max||"Max"},d=Array.isArray(o.selectedTableNumbers)?o.selectedTableNumbers:[],s=Array.isArray(o.selectedTableIds)?o.selectedTableIds:[],g=(l,v)=>{if(typeof q=="function"){q({target:{multiple:true,updates:{selectedTableNumbers:l,selectedTableIds:v}}});return}typeof W=="function"&&W(R=>({...R,selectedTableNumbers:l,selectedTableIds:v}));},u=l=>v=>{let R=v.target.checked,X=b.find(y=>y.tableNumber===l);if(!X)return;let S=[...d],B=[...s];R?(S.includes(l)||S.push(l),B.includes(X.tableId)||B.push(X.tableId)):(S=S.filter(y=>y!==l),B=B.filter(y=>y!==X.tableId)),S.sort((y,N)=>y-N),g(S,B);};return O?e0.createElement("div",{className:"form-group table-selector-container"},e0.createElement("label",{className:"table-selector-label"},f.label),e0.createElement("p",{className:"info-text"},"Laden\u2026")):!b||b.length===0?e0.createElement("div",{className:"form-group table-selector-container"},e0.createElement("label",{className:"table-selector-label"},f.label),e0.createElement("p",{className:"info-text"},f.noTables)):e0.createElement("div",{className:"form-group table-selector-container"},e0.createElement("label",{className:"table-selector-label"},f.label),e0.createElement("div",{className:"table-options"},b.map(l=>{let v=l.tableNumber,R=l.maxCapacity??l.capacity??l.seats??"-",X=d.includes(v),S=l.isManual===true;return e0.createElement("div",{key:`${l.tableId||v}`,className:`table-option${S?" table-option--manual":""}`},e0.createElement("label",null,e0.createElement("input",{type:"checkbox",value:v,checked:X,onChange:u(v)}),f.table," ",v," (",f.max,": ",R,")"))})))},F2=B4;R0(`.new-reservation-page .form-row .field-label{display:block;margin-bottom:6px;font-weight:600}.new-reservation-page .form-row .reservation-mode-buttons{margin-top:0}.new-reservation-page .reservation-mode-buttons{display:flex;gap:10px;margin-top:10px}.new-reservation-page .reservation-mode-button{flex:1;padding:10px;border:1px solid #ccc;border-radius:var(--border-radius);background-color:var(--color-white);cursor:pointer;font-size:1rem;transition:background-color .3s ease,color .3s ease}.new-reservation-page .reservation-mode-button:nth-child(3){flex:0 0 100%}.new-reservation-page .reservation-modes-container{display:flex;flex-wrap:wrap;margin:0 -5px;width:100%}.new-reservation-page .reservation-mode-button{flex:0 0 calc(50% - 10px);margin:5px;padding:10px;box-sizing:border-box;text-align:center;border:1px solid #ccc;background:#f7f7f7;cursor:pointer}.new-reservation-page .reservation-mode-button.active,.new-reservation-page .reservation-mode-button:hover{background-color:var(--color-blue);color:var(--color-white)}.new-reservation-page .unlimited-mode-warning{display:flex;align-items:flex-start;gap:10px;margin:15px 0;padding:12px 15px;background-color:#fff3cd;border:1px solid #ffeaa7;border-radius:var(--border-radius, 4px);border-left:4px solid #e67e22;font-size:.9rem;line-height:1.4}.new-reservation-page .unlimited-mode-warning .warning-icon{color:#e67e22;font-size:1.1rem;margin-top:2px;flex-shrink:0}.new-reservation-page .unlimited-mode-warning .warning-text{color:#856404;margin:0}@media screen and (max-width:480px){.new-reservation-page .unlimited-mode-warning{margin:10px 0;padding:10px 12px;font-size:.85rem}.new-reservation-page .unlimited-mode-warning .warning-icon{font-size:1rem}}.new-reservation-page .reservation-sidebar-component{position:fixed;top:0;right:-400px;width:400px;height:100%;background-color:#fff;box-shadow:-2px 0 5px #0000001a;z-index:var(--z-index-sidebar-reservation);display:flex;flex-direction:column;overflow-y:auto;transition:right .3s ease-in-out}.new-reservation-page .admin-title{text-align:center;margin-bottom:30px}.new-reservation-page .reservation-sidebar-component.open{right:0}.new-reservation-page .reservation-sidebar-content{padding:60px 20px 20px}.new-reservation-page .close-sidebar-button{position:absolute;top:10px;left:10px;background-color:transparent;border:none;cursor:pointer}.new-reservation-page .close-sidebar-button svg{color:#000}.new-reservation-page .sidebar-section-one,.new-reservation-page .sidebar-section-two{margin-bottom:20px}.new-reservation-page .reservation-footer{margin-top:auto}.new-reservation-page .store-reservation-button{width:100%;padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem}.new-reservation-page .open-sidebar-button{position:fixed;bottom:20px;right:20px;background-color:var(--color-blue);color:#fff;border:none;border-radius:50%;width:50px;height:50px;cursor:pointer;z-index:var(--z-index-modal)!important;transition:all .3s ease}.new-reservation-page .open-sidebar-button:hover{background-color:var(--color-blue-hover-accent)!important}.new-reservation-page .open-sidebar-button svg{position:relative;top:2px}@media screen and (max-width:480px){.new-reservation-page .reservation-sidebar-component{width:100%}}.new-reservation-page .sidebar-section-personeel{margin-bottom:10px}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happychef/reservation-sidebar",
3
- "version": "2.8.51",
3
+ "version": "2.8.52",
4
4
  "description": "A compound component for managing restaurant reservations - JavaScript version with independent styles",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",