@oneclick.dev/cms-core-modules 0.0.81 → 0.0.83

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.
Files changed (44) hide show
  1. package/dist/{ContentEditor-4e80zFyn.js → ContentEditor-CRFkD4tE.js} +33 -33
  2. package/dist/{ContentEditor-Dk-iDEjl.mjs → ContentEditor-CxKirDdL.mjs} +2861 -2854
  3. package/dist/{Create-DtFzwxn_.mjs → Create-CsqVYhPO.mjs} +1 -1
  4. package/dist/{Create-CRn2sMHp.js → Create-ip0MnS0o.js} +1 -1
  5. package/dist/{DateFormatter-DfIwyrnF.mjs → DateFormatter-CvOfaUnU.mjs} +137 -134
  6. package/dist/DateFormatter-ls6HfWpS.js +1 -0
  7. package/dist/{Detail-BwDnY42G.mjs → Detail-CbLk1v37.mjs} +1 -1
  8. package/dist/{Detail-Bxi7lG9x.js → Detail-RMXFuSRQ.js} +1 -1
  9. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-Ds7z0qeH.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-CDc8MIq2.mjs} +1 -1
  10. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-C5YczjNb.js → NewReservationDialog.vue_vue_type_script_setup_true_lang-StaNp-3y.js} +1 -1
  11. package/dist/{Overview-pCO_47Zt.js → Overview-B2bFNGhH.js} +1 -1
  12. package/dist/{Overview-CuCQgqVp.mjs → Overview-Cczt_dcE.mjs} +1 -1
  13. package/dist/{SeoHealth-EZzDmPDM.js → SeoHealth-DFZ0LLBH.js} +1 -1
  14. package/dist/{SeoHealth-CC0rW1AG.mjs → SeoHealth-ZpvB7CS2.mjs} +1 -1
  15. package/dist/{TableView-Ccp2Vkhr.mjs → TableView-BUPPcHUW.mjs} +28927 -28623
  16. package/dist/{TableView-DD3y_PZ3.js → TableView-CksiPsTL.js} +152 -152
  17. package/dist/{agenda-XqvbrU72.mjs → agenda-Cl3s_FIE.mjs} +2 -2
  18. package/dist/{agenda-wNFDKn0G.js → agenda-rlFma_wn.js} +1 -1
  19. package/dist/{exceptions-wEQEVzIs.js → exceptions-BA3PsW4n.js} +1 -1
  20. package/dist/{exceptions-CLgeeUSy.mjs → exceptions-DQPSFSj7.mjs} +1 -1
  21. package/dist/floating-ui.dom-B9WYoHj2.js +1 -0
  22. package/dist/{floating-ui.dom-BO2Hr6mz.mjs → floating-ui.dom-fpIfhXTZ.mjs} +400 -401
  23. package/dist/{index-DTzdHh6g.js → index-CBC9dWZ9.js} +1 -1
  24. package/dist/{index-DYpruS-A-D38FBcI3.mjs → index-DYpruS-A-Cw57iwdY.mjs} +2 -3
  25. package/dist/{index-DYpruS-A-CA2jEOA3.js → index-DYpruS-A-DwDXo9Tq.js} +5 -5
  26. package/dist/{index-N0NoDEsI.mjs → index-YOOlBEZB.mjs} +2 -2
  27. package/dist/index.cjs.js +1 -1
  28. package/dist/index.mjs +38 -24
  29. package/dist/orders-DZzdsHOW.mjs +397 -0
  30. package/dist/orders-tP4WdF5q.js +1 -0
  31. package/dist/server-handlers.cjs.js +1 -1
  32. package/dist/server-handlers.mjs +334 -293
  33. package/dist/src/appointments/server.d.ts +1 -1
  34. package/dist/src/contentManager/config.d.ts +28 -0
  35. package/dist/src/contentManager/index.d.ts +28 -0
  36. package/dist/src/contentManager/server.d.ts +7 -0
  37. package/dist/src/googleAnalytics/server.d.ts +1 -1
  38. package/dist/src/products/server.d.ts +1 -1
  39. package/dist/src/server-handlers.d.ts +1 -0
  40. package/package.json +3 -2
  41. package/dist/DateFormatter-C9qfmQnP.js +0 -1
  42. package/dist/floating-ui.dom-CAr9LGoC.js +0 -1
  43. package/dist/orders-Bqa3Z3tH.mjs +0 -356
  44. package/dist/orders-D5GJOZXN.js +0 -1
@@ -1,11 +1,11 @@
1
1
  import { defineComponent as K, resolveComponent as N, openBlock as o, createElementBlock as u, createElementVNode as e, Fragment as X, renderList as Y, toDisplayString as v, normalizeStyle as q, normalizeClass as R, createVNode as d, withCtx as S, unref as b, createTextVNode as ne, createCommentVNode as M, ref as $, createBlock as Q, provide as Z, computed as U, onMounted as pe, onUnmounted as fe, inject as ie, nextTick as xe, onBeforeUnmount as ze, watch as re } from "vue";
2
- import { o as ue, g as de } from "./DateFormatter-DfIwyrnF.mjs";
2
+ import { o as ue, g as de } from "./DateFormatter-CvOfaUnU.mjs";
3
3
  import { X as we, Search as Ee, Clock as ge, Users as he, ChevronLeft as ve, ChevronRight as ce, Asterisk as Ie, CalendarDays as Be } from "lucide-vue-next";
4
4
  import { _ as Le } from "./EditLayout.vue_vue_type_script_setup_true_lang-CcysXzmW.mjs";
5
5
  import { useModule as $e, useModuleRoute as Se, useFirebaseIntegration as Te, useModulePermissions as Ue } from "@oneclick.dev/cms-kit";
6
6
  import { _ as je, F as Pe } from "./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-B7ks5mbf.mjs";
7
7
  import { _ as Ne } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
8
- import { _ as be } from "./NewReservationDialog.vue_vue_type_script_setup_true_lang-Ds7z0qeH.mjs";
8
+ import { _ as be } from "./NewReservationDialog.vue_vue_type_script_setup_true_lang-CDc8MIq2.mjs";
9
9
  const Oe = { class: "mb-6" }, Re = { class: "flex items-end gap-px h-24 bg-muted/30 rounded-lg p-2 overflow-visible" }, Fe = ["onClick"], Ae = { class: "absolute -top-8 left-1/2 -translate-x-1/2 bg-popover border shadow-md rounded px-2 py-1 text-xs whitespace-nowrap opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none z-10" }, Ve = { class: "font-medium" }, We = { class: "text-muted-foreground" }, He = { class: "w-full flex-1 flex items-end justify-center" }, Qe = {
10
10
  key: 1,
11
11
  class: "text-[10px] mt-1"
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),U=require("./DateFormatter-C9qfmQnP.js"),B=require("lucide-vue-next"),te=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),F=require("@oneclick.dev/cms-kit"),K=require("./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Vxubki_v.js"),oe=require("./_plugin-vue_export-helper-BHFhmbuH.js"),Q=require("./NewReservationDialog.vue_vue_type_script_setup_true_lang-C5YczjNb.js"),ne={class:"mb-6"},se={class:"flex items-end gap-px h-24 bg-muted/30 rounded-lg p-2 overflow-visible"},re=["onClick"],ae={class:"absolute -top-8 left-1/2 -translate-x-1/2 bg-popover border shadow-md rounded px-2 py-1 text-xs whitespace-nowrap opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none z-10"},le={class:"font-medium"},ie={class:"text-muted-foreground"},ce={class:"w-full flex-1 flex items-end justify-center"},de={key:1,class:"text-[10px] mt-1"},ue={key:0,class:"mt-2 text-sm text-muted-foreground flex items-center gap-2"},me={class:"font-medium text-foreground"},pe={class:"font-medium text-foreground"},fe=e.defineComponent({__name:"TimelineChart",props:{timeSlots:{},slotStats:{},selectedTimeSlot:{},maxSpots:{}},emits:["select","clear"],setup(u,{emit:h}){const v=h,y=s=>{v("select",s)},E=()=>{v("clear")};return(s,a)=>{const i=e.resolveComponent("Button");return e.openBlock(),e.createElementBlock("div",ne,[a[2]||(a[2]=e.createElementVNode("h3",{class:"font-semibold text-sm mb-2"},"Timeline",-1)),e.createElementVNode("div",se,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.timeSlots,o=>(e.openBlock(),e.createElementBlock("div",{key:o.startTime,class:"flex-1 min-w-0 flex flex-col items-center cursor-pointer group h-full relative",onClick:x=>y(o.startTime)},[e.createElementVNode("div",ae,[e.createElementVNode("div",le,e.toDisplayString(o.startTime),1),e.createElementVNode("div",ie,e.toDisplayString(u.slotStats[o.startTime]?.spots||0)+" spots",1)]),e.createElementVNode("div",ce,[e.createElementVNode("div",{class:e.normalizeClass(["w-full transition-all duration-200",[u.selectedTimeSlot===o.startTime?"bg-primary":u.slotStats[o.startTime]?.spots>0?"bg-primary/60 group-hover:bg-primary/80":"bg-muted-foreground/20 group-hover:bg-muted-foreground/30"]]),style:e.normalizeStyle({height:u.slotStats[o.startTime]?.spots>0?`${u.slotStats[o.startTime].spots/u.maxSpots*100}%`:"2px",minHeight:u.slotStats[o.startTime]?.spots>0?"4px":"2px"})},null,6)]),o.startTime.endsWith(":00")?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["text-[10px] text-muted-foreground mt-1 transition-colors truncate",{"text-primary font-medium":u.selectedTimeSlot===o.startTime}])},e.toDisplayString(o.label),3)):(e.openBlock(),e.createElementBlock("span",de," "))],8,re))),128))]),u.selectedTimeSlot?(e.openBlock(),e.createElementBlock("div",ue,[e.createVNode(i,{variant:"ghost",size:"icon",class:"h-6 w-6 p-0",onClick:E},{default:e.withCtx(()=>[e.createVNode(e.unref(B.X),{size:14})]),_:1}),e.createElementVNode("span",null,[a[0]||(a[0]=e.createTextVNode(" Showing ",-1)),e.createElementVNode("span",me,e.toDisplayString(u.slotStats[u.selectedTimeSlot]?.bookings||0),1),a[1]||(a[1]=e.createTextVNode(" bookings at ",-1)),e.createElementVNode("span",pe,e.toDisplayString(u.selectedTimeSlot),1)])])):e.createCommentVNode("",!0)])}}}),ve={class:"flex items-center justify-between mb-3"},ge={class:"font-semibold"},he={key:0,class:"text-muted-foreground font-normal"},xe={class:"relative mb-3"},ye={key:0,class:"flex items-center justify-center py-8"},ke={key:1,class:"text-center py-8 text-muted-foreground"},be={key:2,class:"space-y-2 max-h-80 overflow-y-auto"},_e=["onClick"],Ne={class:"flex items-start justify-between"},Ee={class:"flex-1"},we={class:"font-medium"},Ve={class:"text-sm text-muted-foreground"},Se={class:"text-sm text-muted-foreground"},Ce={class:"flex items-center gap-4"},Be={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},$e={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},De={class:"text-right"},Te={key:0,class:"inline-block px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},ze={key:1,class:"inline-block px-2 py-1 text-xs rounded-full bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},Me={key:2,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},Le={key:3,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},Ie={key:4,class:"inline-block px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"},Ue={key:5,class:"text-sm font-medium mt-1"},je=e.defineComponent({__name:"BookingsList",props:{orders:{},filteredOrders:{},isLoading:{type:Boolean},selectedTimeSlot:{},searchQuery:{}},emits:["update:searchQuery","refresh"],setup(u,{emit:h}){const v=h,y=e.ref(null),E=i=>{v("update:searchQuery",i)},s=()=>{v("update:searchQuery","")},a=()=>{v("refresh")};return(i,o)=>{const x=e.resolveComponent("Input"),g=e.resolveComponent("Button");return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",ve,[e.createElementVNode("h3",ge,[o[0]||(o[0]=e.createTextVNode(" Bookings ",-1)),u.selectedTimeSlot||u.searchQuery?(e.openBlock(),e.createElementBlock("span",he," ("+e.toDisplayString(u.filteredOrders.length)+" of "+e.toDisplayString(u.orders.length)+") ",1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",xe,[e.createVNode(e.unref(B.Search),{size:16,class:"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"}),e.createVNode(x,{"model-value":u.searchQuery,placeholder:"Search by name, email, or phone...",class:"pl-9 pr-9","onUpdate:modelValue":E},null,8,["model-value"]),u.searchQuery?(e.openBlock(),e.createBlock(g,{key:0,variant:"ghost",size:"icon",class:"absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7",onClick:s},{default:e.withCtx(()=>[e.createVNode(e.unref(B.X),{size:14})]),_:1})):e.createCommentVNode("",!0)]),u.isLoading?(e.openBlock(),e.createElementBlock("div",ye,[...o[1]||(o[1]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):u.filteredOrders.length===0?(e.openBlock(),e.createElementBlock("div",ke,e.toDisplayString(u.selectedTimeSlot?"No bookings for this time slot":"No bookings for this event"),1)):(e.openBlock(),e.createElementBlock("div",be,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.filteredOrders,p=>(e.openBlock(),e.createElementBlock("div",{key:p.res_id||p.id,class:"p-3 border rounded-lg hover:bg-muted/50 transition-colors",onClick:w=>e.unref(y).openDialog(p)},[e.createElementVNode("div",Ne,[e.createElementVNode("div",Ee,[e.createElementVNode("div",we,e.toDisplayString(p.customerInfo.firstName+" "+p.customerInfo.lastName||"Unknown Customer"),1),e.createElementVNode("div",Ve,e.toDisplayString(p.customerInfo.email),1),e.createElementVNode("div",Se,e.toDisplayString(p.customerInfo.phone),1),e.createElementVNode("div",Ce,[e.createElementVNode("div",Be,[e.createVNode(e.unref(B.Clock),{size:12}),e.createElementVNode("span",null,e.toDisplayString(p.startTime)+" - "+e.toDisplayString(p.endTime),1)]),e.createElementVNode("div",$e,[e.createVNode(e.unref(B.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(p.spots),1)])])]),e.createElementVNode("div",De,[p.reservationStatus==="needs_approval"?(e.openBlock(),e.createElementBlock("span",Te,"Needs Approval")):p.reservationStatus==="approved"?(e.openBlock(),e.createElementBlock("span",ze,"Approved")):p.reservationStatus==="rejected"?(e.openBlock(),e.createElementBlock("span",Me,"Rejected")):p.reservationStatus==="cancelled"?(e.openBlock(),e.createElementBlock("span",Le,"Cancelled")):(e.openBlock(),e.createElementBlock("span",Ie,"Pending")),p.reservationPrice||p.reservationPrice===0?(e.openBlock(),e.createElementBlock("div",Ue," €"+e.toDisplayString(p.reservationPrice.toFixed(2)),1)):e.createCommentVNode("",!0)])])],8,_e))),128))])),e.createVNode(K._sfc_main,{ref_key:"reservationDetailDialog",ref:y,onCancelled:a,onConfirmed:a,onRejected:a},null,512)])}}}),Fe={class:"flex items-center gap-4 mt-2 text-sm"},Re={class:"flex items-center gap-1"},Pe={key:0,class:"flex items-center gap-1"},Oe={class:"flex items-center gap-1"},Ae={class:"py-4"},qe=e.defineComponent({__name:"EventDialog",props:{resources:{default:()=>[]}},setup(u,{expose:h}){const v=u,{config:y}=F.useModule(),{params:E}=F.useModuleRoute(),s=F.useFirebaseIntegration(y.project),a=e.ref(!1),i=e.ref(null),o=e.ref([]),x=e.ref(!1),g=e.ref(null),p=e.ref("");e.provide("event",i);const w=e.computed(()=>{if(!i.value)return[];const d=i.value.resource?.interval||60,n=[],[c,_]=i.value.startTime.split(":").map(Number),[T,b]=i.value.endTime.split(":").map(Number),$=c*60+_,t=T*60+b;for(let l=$;l<t;l+=d){const f=Math.floor(l/60),m=l%60,N=Math.min(l+d,t),C=Math.floor(N/60),r=N%60,z=`${f.toString().padStart(2,"0")}:${m.toString().padStart(2,"0")}`,L=`${C.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`;n.push({startTime:z,endTime:L,label:z})}return n}),k=d=>{const n=d.getFullYear(),c=String(d.getMonth()+1).padStart(2,"0"),_=String(d.getDate()).padStart(2,"0");return`${n}-${c}-${_}`},M=e.computed(()=>{const d={};return w.value.forEach(n=>{d[n.startTime]={bookings:0,spots:0,orders:[]}}),o.value.forEach(n=>{w.value.forEach(c=>{n.startTime<c.endTime&&n.endTime>c.startTime&&(d[c.startTime].bookings++,d[c.startTime].spots+=n.spots||0,d[c.startTime].orders.push(n))})}),d}),V=e.computed(()=>Math.max(1,...Object.values(M.value).map(d=>d.spots))),S=e.computed(()=>{let d=o.value;return g.value&&(d=M.value[g.value]?.orders||[]),p.value.trim()&&(d=new K.Fuse(d,{keys:["customerInfo.firstName","customerInfo.lastName","customerInfo.email","customerInfo.phone"],threshold:.3,ignoreLocation:!0}).search(p.value).map(c=>c.item)),d}),D=e.computed(()=>({spots:o.value.reduce((d,n)=>d+(n.spots||0),0),bookings:o.value.length})),R=d=>{g.value===d?g.value=null:g.value=d},I=()=>{g.value=null},P=async d=>{a.value=!0,i.value=d,g.value=null,p.value="",await j()},j=async()=>{if(i.value){x.value=!0,o.value=[];try{const d=E.value.id,n=k(new Date(i.value.date)),c=new Set;v.resources?.forEach(b=>{const $=`${b.id}_${n}`;c.add($)});const _=await s.find(y.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:d},{field:"status",operator:"==",value:"confirmed"},{field:"flattenedReservationDates",operator:"array-contains-any",value:Array.from(c)}]});let T=[];_.forEach(b=>{const $=b.reservations?.filter(t=>t.date===n)||[];console.log("dateReservations",$),$.forEach(t=>{const l=v.resources.find(f=>f.id===t.resourceId);(t.status==="approved"||t.status==="needs_approval")&&T.push({customerInfo:b.customerInfo,amountDue:b.amountDue,amountPaid:b.amountPaid,status:b.status,reservationStatus:t.status,subtotal:b.subtotal,total:b.total,discount:b.discount,id:b.id,res_id:t.id,resourceId:t.resourceId,spots:t.spots,date:n,startTime:t.timeslot?.startTime,endTime:t.timeslot?.endTime,reservationPrice:t.totalPrice,reservationBasePrice:t.basePrice,reservationAddOnsPrice:t.addOnsPrice,pricingOptionId:t.pricingOptionId,pricingOption:t.pricingOption,resourceName:l?.name||"Unknown",resourceColor:l?.color})})}),o.value=T.sort((b,$)=>b.startTime?.localeCompare($.startTime||"")||0)}catch(d){console.error("Error loading orders:",d),o.value=[]}finally{x.value=!1}}},q=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],O=["January","February","March","April","May","June","July","August","September","October","November","December"];return h({openDialog:P}),(d,n)=>{const c=e.resolveComponent("DialogTitle"),_=e.resolveComponent("DialogDescription"),T=e.resolveComponent("DialogHeader"),b=e.resolveComponent("Button"),$=e.resolveComponent("DialogFooter"),t=e.resolveComponent("DialogScrollContent"),l=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(l,{open:a.value,"onUpdate:open":n[2]||(n[2]=f=>a.value=f)},{default:e.withCtx(()=>[e.createVNode(t,{class:"sm:max-w-3xl"},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[i.value?.date?(e.openBlock(),e.createBlock(c,{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(q[new Date(i.value.date).getUTCDay()])+" "+e.toDisplayString(O[new Date(i.value.date).getUTCMonth()])+" "+e.toDisplayString(new Date(i.value.date).getUTCDate())+", "+e.toDisplayString(new Date(i.value.date).getUTCFullYear()),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(_,null,{default:e.withCtx(()=>[e.createElementVNode("div",Fe,[e.createElementVNode("div",Re,[e.createVNode(e.unref(B.Clock),{size:14}),e.createElementVNode("span",null,e.toDisplayString(i.value?.startTime)+" – "+e.toDisplayString(i.value?.endTime),1)]),i.value?.resource?(e.openBlock(),e.createElementBlock("div",Pe,[e.createElementVNode("div",{class:"w-4 h-4 rounded-full",style:e.normalizeStyle({backgroundColor:i.value.resource.color||"#6b7280"})},null,4),e.createElementVNode("span",null,e.toDisplayString(i.value.resource.name),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[e.createVNode(e.unref(B.Users),{size:14}),e.createElementVNode("span",null,e.toDisplayString(D.value.spots)+" spots in "+e.toDisplayString(D.value.bookings)+" reservations",1)])])]),_:1})]),_:1}),e.createElementVNode("div",Ae,[w.value.length>1?(e.openBlock(),e.createBlock(fe,{key:0,"time-slots":w.value,"slot-stats":M.value,"selected-time-slot":g.value,"max-spots":V.value,onSelect:R,onClear:I},null,8,["time-slots","slot-stats","selected-time-slot","max-spots"])):e.createCommentVNode("",!0),e.createVNode(je,{orders:o.value,"filtered-orders":S.value,"is-loading":x.value,"selected-time-slot":g.value,"search-query":p.value,"onUpdate:searchQuery":n[0]||(n[0]=f=>p.value=f),onRefresh:j},null,8,["orders","filtered-orders","is-loading","selected-time-slot","search-query"])]),e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(b,{variant:"outline",onClick:n[1]||(n[1]=f=>a.value=!1)},{default:e.withCtx(()=>[...n[3]||(n[3]=[e.createTextVNode("Close",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])}}}),He={class:"flex-1 border-r shadow-sm overflow-hidden min-h-[1536px]"},We={class:"relative h-full min-h-[1536px]"},Qe={class:"divide-y divide-input/80 h-full flex flex-col min-h-[1536px] border-y border-input/80"},Xe={class:"absolute inset-0 pointer-events-none"},Ye={class:"relative mr-3 h-full ml-2"},Je=["onClick"],Ke={key:0,class:"absolute bottom-0 left-0 right-0 h-1 bg-black/20"},Ge={class:"flex items-start justify-between gap-2 mb-1"},Ze={class:"font-semibold text-sm leading-tight line-clamp-1 flex-1"},et={class:"flex items-center gap-1 shrink-0"},tt=["title"],ot={class:"font-medium"},X=e.defineComponent({__name:"EventTimeline",props:{date:{},events:{},firstDay:{type:Boolean,default:!1},resources:{default:()=>[]}},setup(u){const h=u,v=e.ref(null),y=a=>{const[i,o]=a.split(":").map(Number);return i*60+o};e.computed(()=>!h.events||!h.resources?[]:h.resources.map(a=>{const o=h.events.filter(x=>x.resourceId===a.id).map(x=>{const g=y(x.startTime),w=y(x.endTime)-g,k=g/1440*100,M=w/1440*100,V=(x.bookings??0)>0,S=x.maxBookings?(x.bookings??0)/x.maxBookings*100:0;return{...x,top:`${k}%`,height:`${M}%`,color:x.resource?.color||"#3b82f6",hasBookings:V,fillPercentage:S,isSmall:w<60}});return{resource:a,events:o}}));const E=e.computed(()=>h.events?h.events.map(a=>{const i=y(a.startTime),x=y(a.endTime)-i,g=i/1440*100,p=x/1440*100,w=(a.bookings??0)>0,k=a.maxBookings?(a.bookings??0)/a.maxBookings*100:0;return{...a,top:`${g}%`,height:`${p}%`,color:a.resource?.color||"#3b82f6",hasBookings:w,fillPercentage:k,isSmall:x<60}}):[]),s=Array.from({length:24},(a,i)=>({hour:i,label:`${i.toString().padStart(2,"0")}:00`}));return(a,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",He,[e.createElementVNode("div",We,[e.createElementVNode("div",Qe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),o=>(e.openBlock(),e.createElementBlock("div",{key:o.hour,class:"flex-1 flex transition-all duration-200"},[...i[0]||(i[0]=[e.createElementVNode("div",{class:"flex-1 relative"},[e.createElementVNode("div",{class:"absolute top-1/2 left-0 right-0 border-t border-dashed border-input/50"})],-1)])]))),128))]),e.createElementVNode("div",Xe,[e.createElementVNode("div",Ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,style:e.normalizeStyle({top:o.top,height:o.height,opacity:o.hasBookings?"1":"0.5"}),class:"event-card absolute left-2 right-2 rounded-lg pointer-events-auto cursor-pointer group/event transition-all duration-200 hover:shadow-xl overflow-hidden",onClick:x=>v.value?.openDialog(o)},[e.createElementVNode("div",{style:e.normalizeStyle({backgroundColor:o.color}),class:"absolute inset-0 shadow-lg"},[o.maxBookings?(e.openBlock(),e.createElementBlock("div",Ke,[e.createElementVNode("div",{class:"h-full bg-white/40 transition-all duration-300",style:e.normalizeStyle({width:`${o.fillPercentage}%`})},null,4)])):e.createCommentVNode("",!0)],4),e.createElementVNode("div",{class:e.normalizeClass(["relative h-full p-3 flex flex-col",`${o.hasBookings?"text-white":"text-gray-600 dark:text-gray-100"}`])},[e.createElementVNode("div",Ge,[e.createElementVNode("h3",Ze,e.toDisplayString(o.title),1),e.createElementVNode("div",et,[o.resource?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-6 h-6 rounded-full flex items-center justify-center text-xs font-bold bg-white/30 backdrop-blur-sm text-white border border-white/40",title:o.resource.name},e.toDisplayString(o.resource.avatarLabel||o.resource.name.charAt(0).toUpperCase()),9,tt)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium",o.hasBookings?"bg-white text-black backdrop-blur-sm":"bg-black/10 backdrop-blur-sm"])},[e.createVNode(e.unref(B.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(o.bookings),1)],2)])]),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-2 text-xs opacity-90 mt-auto",{"-translate-x-1 -translate-y-2 scale-80 origin-[0_0]":o.isSmall}])},[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-1 px-2 py-0.5 rounded backdrop-blur-sm",{"bg-black/10":!o.isSmall}])},[e.createVNode(e.unref(B.Clock),{size:10}),e.createElementVNode("span",ot,e.toDisplayString(o.startTime)+" – "+e.toDisplayString(o.endTime),1)],2)],2)],2),i[1]||(i[1]=e.createElementVNode("div",{class:"absolute inset-0 border-2 border-white/0 group-hover/event:border-white/30 rounded-lg transition-colors duration-200 pointer-events-none"},null,-1))],12,Je))),128))])])])]),e.createVNode(qe,{resources:u.resources,ref_key:"eventDialog",ref:v},null,8,["resources"])],64))}}),nt={class:"sticky left-0 mt-auto z-10 divide-y divide-border/50 h-full flex flex-col min-h-[1536px] bg-input"},st={class:"flex-shrink-0 text-xs font-medium text-muted-foreground px-3 pb-3 border-r border-border/50 w-14"},rt={class:"flex items-center gap-1.5"},Y=e.defineComponent({__name:"Event24hSidebar",setup(u){const h=Array.from({length:24},(v,y)=>({hour:y,label:`${y.toString().padStart(2,"0")}:00`}));return(v,y)=>(e.openBlock(),e.createElementBlock("div",nt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),E=>(e.openBlock(),e.createElementBlock("div",{key:E.hour,class:"flex-1 flex transition-all duration-200"},[e.createElementVNode("div",st,[e.createElementVNode("div",rt,[e.createElementVNode("span",{class:e.normalizeClass({"-translate-y-1/2":E.hour!==0})},e.toDisplayString(E.label),3)])])]))),128))]))}}),at={class:"absolute top-0 w-full pointer-events-none"},lt={key:0,class:"absolute -right-2 -top-0.5 px-2 py-0.5 bg-red-500 text-white text-xs font-medium rounded shadow-lg"},J=e.defineComponent({__name:"EventTimeIndicator",props:{currentDate:{type:Object,required:!1}},setup(u){const h=e.ref(Date.now());let v;e.onMounted(()=>{v=window.setInterval(()=>{h.value=Date.now()},1e3)}),e.onUnmounted(()=>{v&&clearInterval(v)});const y=e.computed(()=>{const s=new Date(h.value);return`${(s.getHours()*60+s.getMinutes()+s.getSeconds()/60)/1440*100}%`}),E=e.computed(()=>new Date(h.value).getFullYear()+"-"+(new Date(h.value).getMonth()+1).toString().padStart(2,"0")+"-"+new Date(h.value).getDate().toString().padStart(2,"0"));return(s,a)=>(e.openBlock(),e.createElementBlock("div",at,[e.createElementVNode("div",{class:"absolute left-0 right-0 h-0.5 bg-red-500 z-30 pointer-events-none transition-[top] duration-300 ease-linear",style:e.normalizeStyle({top:y.value})},[a[0]||(a[0]=e.createElementVNode("div",{class:"absolute -left-2 -top-1.5 w-3 h-3 bg-red-500 rounded-full shadow-lg shadow-red-500/50"},null,-1)),u.currentDate&&u.currentDate==E.value?(e.openBlock(),e.createElementBlock("div",lt," Now ")):e.createCommentVNode("",!0)],4)]))}}),it={key:0,class:"relative flex flex-1 min-w-0"},ct={key:1,class:"flex-1 min-w-0 relative"},dt={key:0,class:"absolute top-0 right-0 z-10 px-3 py-1.5 bg-primary/90 text-primary-foreground text-xs font-medium rounded-bl-lg shadow-lg backdrop-blur-sm flex items-center gap-1.5 animate-pulse-subtle"},ut={class:"flex pb-4 min-w-[200px]"},mt=["onClick"],pt={key:0,class:"absolute top-2 right-2 flex items-center gap-1 px-2 py-0.5 bg-primary/20 backdrop-blur-sm rounded-full border border-primary/30"},ft={class:"text-xs text-muted-foreground font-medium group-hover:text-foreground/70 transition-colors"},vt={key:0,class:"absolute bottom-0 left-0 w-full h-1 bg-orange-500"},gt=e.defineComponent({__name:"EventView",setup(u){const h=e.inject("activeDate",e.ref(U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))),v=e.inject("viewMode",e.ref(1)),y=e.inject("events",e.ref([])),E=e.inject("resources",e.ref([])),s=e.ref(null),a=e.ref(!1),i=e.ref(!1);e.computed(()=>E.value.length>1);const o=e.computed(()=>{const n=[],c=h.value;for(let _=0;_<v.value;_++)n.push(c.add({days:_}));return n}),x=(n,c)=>{const _=`${n.year}-${String(n.month).padStart(2,"0")}-${String(n.day).padStart(2,"0")}`;return y.value?.filter(T=>T.date===_)||[]},g=n=>{const c=U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2());return n.year===c.year&&n.month===c.month&&n.day===c.day},p=n=>{h.value=n,v.value=1};let w=null,k=null;const M=()=>{s.value&&(S(),s.value.scrollBy({left:-300,behavior:"smooth"}),k=window.setTimeout(()=>{w=window.setInterval(()=>{s.value&&s.value.scrollBy({left:-20,behavior:"auto"})},50)},300))},V=()=>{s.value&&(S(),s.value.scrollBy({left:300,behavior:"smooth"}),k=window.setTimeout(()=>{w=window.setInterval(()=>{s.value&&s.value.scrollBy({left:20,behavior:"auto"})},50)},300))},S=()=>{k&&(clearTimeout(k),k=null),w&&(clearInterval(w),w=null)},D=()=>{if(!s.value)return;const{scrollLeft:n,scrollWidth:c,clientWidth:_}=s.value;a.value=n>10,i.value=n<c-_-10},R=n=>{s.value&&Math.abs(n.deltaY)>Math.abs(n.deltaX)&&(n.preventDefault(),s.value.scrollBy({left:n.deltaY,behavior:"auto"}))},I=e.ref(!1),P=e.ref(0),j=e.ref(0),q=n=>{!s.value||v.value===1||n.target.closest(".event-card")||(I.value=!0,P.value=n.pageX,j.value=s.value.scrollLeft,s.value.style.userSelect="none",n.preventDefault())},O=n=>{if(!I.value||!s.value)return;const c=n.pageX,_=(P.value-c)*1.2;s.value.scrollLeft=j.value+_},d=()=>{s.value&&(I.value=!1,s.value.style.userSelect="")};return e.onMounted(()=>{s.value&&(s.value.addEventListener("scroll",D),s.value.addEventListener("wheel",R,{passive:!1}),e.nextTick(()=>{D(),setTimeout(D,50),setTimeout(D,150),setTimeout(D,300),setTimeout(D,500)})),document.addEventListener("mousemove",O),document.addEventListener("mouseup",d)}),e.onBeforeUnmount(()=>{document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",d)}),e.watch(v,()=>{v.value>1?e.nextTick(()=>{setTimeout(()=>{if(!s.value)return;const{scrollWidth:n,clientWidth:c}=s.value;n>c&&(i.value=!0,a.value=!1)},100)}):s.value&&(s.value.style.cursor="")}),e.onUnmounted(()=>{S(),s.value&&(s.value.removeEventListener("scroll",D),s.value.removeEventListener("wheel",R))}),(n,c)=>{const _=e.resolveComponent("Button"),T=e.resolveComponent("TooltipTrigger"),b=e.resolveComponent("TooltipContent"),$=e.resolveComponent("Tooltip");return e.unref(v)===1?(e.openBlock(),e.createElementBlock("div",it,[e.createVNode(Y),e.createVNode(J,{class:"h-full","current-date":e.unref(h)},null,8,["current-date"]),e.createVNode(X,{date:e.unref(h),events:x(e.unref(h)),resources:e.unref(E)},null,8,["date","events","resources"])])):(e.openBlock(),e.createElementBlock("div",ct,[e.unref(v)===7?(e.openBlock(),e.createElementBlock("div",dt,[e.createVNode(e.unref(B.ChevronLeft),{size:12}),c[0]||(c[0]=e.createElementVNode("span",null,"Scroll to view all days",-1)),e.createVNode(e.unref(B.ChevronRight),{size:12})])):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(_,{key:1,variant:"outline",size:"icon",onMousedown:M,onMouseup:S,onMouseleave:S,onTouchstart:M,onTouchend:S,class:"sticky top-1/2 left-2 -translate-y-1/2 z-40 h-10 w-10 rounded-full shadow-lg bg-background/95 backdrop-blur-sm hover:bg-background border-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronLeft),{size:20})]),_:1})):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createBlock(_,{key:2,variant:"outline",size:"icon",onMousedown:V,onMouseup:S,onMouseleave:S,onTouchstart:V,onTouchend:S,class:"sticky top-1/2 right-2 -translate-y-1/2 z-40 h-10 w-10 rounded-full shadow-lg bg-background/95 backdrop-blur-sm hover:bg-background border-2 float-right"},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronRight),{size:20})]),_:1})):e.createCommentVNode("",!0),e.createVNode(J,{class:"h-[calc(100%-164px)] mt-[122px]"}),e.createElementVNode("div",{class:e.normalizeClass(["absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-background to-transparent z-10 pointer-events-none transition-opacity duration-300",i.value?"opacity-100":"opacity-0"])},null,2),e.createElementVNode("div",{ref_key:"scrollContainer",ref:s,class:"absolute inset-0 overflow-x-auto overflow-y-visible",onScroll:D,onMousedown:q},[e.createElementVNode("div",ut,[e.createVNode(Y),c[5]||(c[5]=e.createElementVNode("div",{class:"absolute w-14 h-[125px] bg-input"},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(t,l)=>(e.openBlock(),e.createElementBlock("div",{key:t.toString(),class:e.normalizeClass(["flex-shrink-0",{"min-w-[200px] w-[33.33%]":e.unref(v)===3,"min-w-[280px]":e.unref(v)===7}])},[e.createElementVNode("div",{onClick:f=>p(t),class:e.normalizeClass(["relative p-3 border cursor-pointer transition-all duration-200 group relative",g(t)?"bg-gradient-to-br from-primary/10 to-primary/5 border-primary/30 hover:from-primary/20 hover:to-primary/10 hover:border-primary/50 hover:shadow-md":"bg-gradient-to-br from-muted/50 to-muted/30 border-border hover:from-accent/50 hover:to-accent/30 hover:border-accent-foreground/20 hover:shadow-md"])},[g(t)?(e.openBlock(),e.createElementBlock("div",pt,[...c[1]||(c[1]=[e.createElementVNode("div",{class:"w-1.5 h-1.5 bg-primary rounded-full animate-pulse"},null,-1),e.createElementVNode("span",{class:"text-[9px] font-bold text-primary uppercase tracking-wide"},"Today",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["text-xs font-semibold uppercase tracking-wider transition-colors",g(t)?"text-primary group-hover:text-primary/80":"text-muted-foreground group-hover:text-foreground"])},e.toDisplayString(new Date(t.year,t.month-1,t.day).toLocaleDateString("en-US",{weekday:"short"})),3),e.createElementVNode("div",{class:e.normalizeClass(["text-2xl font-bold transition-colors",g(t)?"text-foreground":"text-foreground group-hover:text-primary"])},e.toDisplayString(t.day),3),e.createElementVNode("div",ft,e.toDisplayString(new Date(t.year,t.month-1,t.day).toLocaleDateString("en-US",{month:"long",year:"numeric"})),1),c[4]||(c[4]=e.createElementVNode("div",{class:"mt-2 pt-2 border-t border-border/0 group-hover:border-border/50 transition-all"},[e.createElementVNode("div",{class:"text-[10px] text-muted-foreground/0 group-hover:text-muted-foreground/100 uppercase tracking-wide transition-all"}," Click to view ")],-1)),e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(T,{"as-child":""},{default:e.withCtx(()=>[x(t).filter(f=>f.isException).length>0?(e.openBlock(),e.createBlock(e.unref(B.Asterisk),{key:0,class:"absolute top-3 right-3 size-4 text-orange-500"})):e.createCommentVNode("",!0)]),_:2},1024),e.createVNode(b,null,{default:e.withCtx(()=>[...c[2]||(c[2]=[e.createElementVNode("p",null," This day has exceptions applied to it. ",-1)])]),_:1})]),_:2},1024),e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(T,{"as-child":""},{default:e.withCtx(()=>[x(t).filter(f=>f.isException).length>0?(e.openBlock(),e.createElementBlock("div",vt)):e.createCommentVNode("",!0)]),_:2},1024),e.createVNode(b,null,{default:e.withCtx(()=>[...c[3]||(c[3]=[e.createElementVNode("p",null," This day has exceptions applied to it. ",-1)])]),_:1})]),_:2},1024)],10,mt),e.createVNode(X,{date:t,events:x(t),resources:e.unref(E)},null,8,["date","events","resources"])],2))),128))])],544)]))}}}),ht=oe._export_sfc(gt,[["__scopeId","data-v-99339cf2"]]),xt={class:"flex flex-col gap-2 md:gap-4 w-full h-full"},yt={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 px-1"},kt={class:"flex items-center justify-between sm:justify-start gap-4"},bt={class:"flex flex-col"},_t={class:"flex items-center gap-2"},Nt={class:"text-lg sm:text-2xl font-bold tracking-tight truncate"},Et={class:"text-xs sm:text-sm text-muted-foreground ml-7 truncate"},wt={class:"flex items-center justify-between sm:justify-end gap-2"},Vt={class:"flex items-center gap-1 sm:mr-2"},St={key:0,class:"flex items-center gap-2 px-1 overflow-x-auto pb-2 -mx-1 scrollbar-hide"},Ct=["onClick"],Bt={class:"flex gap-4 flex-1 min-h-0 md:min-h-[1700px]"},$t={class:"hidden md:flex flex-shrink-0 flex-col gap-4"},Dt={key:0,class:"rounded-md border p-3"},Tt={class:"space-y-1"},zt=["onClick"],Mt={class:"min-w-0 flex-1"},Lt={class:"text-sm font-medium truncate"},It={key:0,class:"pt-2 mt-2 border-t"},Ut={key:0,class:"mt-1 space-y-1"},jt={class:"min-w-0 flex-1"},Ft={class:"text-sm font-medium truncate text-muted-foreground"},Rt=e.defineComponent({__name:"agenda",setup(u){const{hasPermission:h}=F.useModulePermissions(),{params:v}=F.useModuleRoute(),{config:y}=F.useModule(),E=F.useFirebaseIntegration(y.project),s=e.ref(U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())),a=e.ref(1),i=e.ref(typeof window<"u"?window.innerWidth:1024),o=e.computed(()=>i.value<768),x=()=>{i.value=window.innerWidth};e.onMounted(()=>{window.addEventListener("resize",x)}),e.onUnmounted(()=>{window.removeEventListener("resize",x)}),e.watch(o,t=>{t&&a.value!==1&&(a.value=1)},{immediate:!0});const g=e.ref(null),p=e.ref(new Map),w=e.computed(()=>g.value?.resources||[]),k=e.computed(()=>w.value.filter(t=>t.isActive)),M=e.computed(()=>w.value.filter(t=>!t.isActive)),V=e.ref(null),S=e.ref(!1);e.watch(k,t=>{t.length>0&&!V.value&&(V.value=t[0].id)},{immediate:!0});const D=e.computed(()=>{if(!V.value)return k.value.length>0?[k.value[0]]:[];const t=k.value.find(l=>l.id===V.value);return t?[t]:k.value.length>0?[k.value[0]]:[]}),R=e.computed(()=>g.value?.pricingOptions?.find(l=>l.isDefault)?.duration||30),I=t=>{V.value=t};e.watch(s,()=>{$()});const P=e.computed(()=>{const t=s.value,l=new Date(t.year,t.month-1,t.day),f=l.toLocaleDateString("en-US",{weekday:"long"}).toUpperCase(),m=t.day,N=l.toLocaleDateString("en-US",{month:"short"}).toUpperCase();return{dayName:f,day:m,monthName:N,full:`${f} ${m} ${N}`}}),j=()=>{s.value=s.value.subtract({days:a.value})},q=()=>{s.value=s.value.add({days:a.value})},O=()=>{s.value=U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())},d=t=>{const[l,f]=t.split(":").map(Number);return l*60+f},n=(t,l)=>(g.value?.exceptions||[]).find(m=>l>=m.startDate&&l<=m.endDate?m.resourceIds===null?!0:m.resourceIds?.includes(t):!1)||null,c=(t,l,f)=>{const m=n(t.id,f);if(m)return m.isClosed?[]:m.timeslots.map(r=>({startTime:r.startTime,endTime:r.endTime,isException:!0}));const N=l.getDay(),C=t.openingHours?.[N]||[];return C.length===0?[]:C.map(r=>({startTime:r.start,endTime:r.end,isException:!1}))},_=(t,l,f,m)=>{if(!g.value)return 0;const N=p.value.get(l);if(!N)return 0;const C=N.filter(r=>r.resourceId===t).reduce((r,z)=>{const L=d(z.startTime),A=d(z.endTime),H=d(f),W=d(m);return L<W&&A>H?r+(z.reserved||0):r},0);return C>0&&console.log(`Found ${C} total bookings for ${t} on ${l} ${f}-${m}`),C},T=e.computed(()=>{if(!g.value)return[];p.value.size;let t=[],l=[];for(let m=0;m<a.value;m++){const N=s.value.add({days:m});l.push(N)}const f=D.value.length>0?D.value:[];return f.length===0?[]:(l.forEach(m=>{let N=new Date(m.year,m.month-1,m.day);const C=`${m.year}-${String(m.month).padStart(2,"0")}-${String(m.day).padStart(2,"0")}`;f.forEach(r=>{const z=c(r,N,C);t=t.concat(z.map((L,A)=>{const H=_(r.id,C,L.startTime,L.endTime);return{id:`block-${C}-${r.id}-${A}`,title:g.value.serviceName,date:C,startTime:L.startTime,endTime:L.endTime,theme:r.color||"#3b82f6",bookings:H,maxBookings:r.capacity,isException:L.isException||!1,resourceId:r.id,resource:r,interval:r.interval||30,serviceDuration:R.value}}))})}),t)}),b=async()=>{g.value=await E.get(y.agendaCollection,v.value.id)},$=async()=>{const t=v.value.id,l=s.value;p.value.clear();const f=[];for(let m=0;m<a.value;m++){const N=l.add({days:m}),C=`${N.year}-${String(N.month).padStart(2,"0")}-${String(N.day).padStart(2,"0")}`,r=`${t}_${C}`;f.push(E.get(y.reservedSpotsCollection,r).then(z=>{if(z){let L=[];for(const A of k.value){const H=z?.[A.id]||{};Object.entries(H).forEach(([W,G])=>{const[Z,ee]=W.split("-");L.push({resourceId:A.id,startTime:Z,endTime:ee,reserved:G})})}p.value.set(C,L)}}).catch(()=>{}))}await Promise.all(f),console.log("Loaded reserved spots:",p.value)};return b(),$(),e.watch(a,()=>{$()}),e.provide("agendaData",g),e.provide("activeDate",s),e.provide("viewMode",a),e.provide("events",T),e.provide("resources",D),e.provide("allResources",k),(t,l)=>{const f=e.resolveComponent("Button"),m=e.resolveComponent("SegmentedControlButton"),N=e.resolveComponent("SegmentedControl"),C=e.resolveComponent("Calendar");return e.openBlock(),e.createBlock(te._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",xt,[e.createElementVNode("div",yt,[e.createElementVNode("div",kt,[e.createElementVNode("div",bt,[e.createElementVNode("div",_t,[e.createVNode(e.unref(B.CalendarDays),{size:20,class:"text-primary flex-shrink-0"}),e.createElementVNode("h2",Nt,e.toDisplayString(P.value.full),1)]),e.createElementVNode("p",Et,e.toDisplayString(g.value?.serviceName),1)]),o.value&&e.unref(h)("manage-reservations")?(e.openBlock(),e.createBlock(Q._sfc_main,{key:0})):e.createCommentVNode("",!0)]),e.createElementVNode("div",wt,[e.createElementVNode("div",Vt,[e.createVNode(f,{variant:"outline",size:"icon",class:"size-8 sm:size-9",onClick:j},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronLeft),{size:16})]),_:1}),e.createVNode(f,{variant:"outline",size:"sm",class:"h-8 sm:h-9 px-2 sm:px-3 text-xs sm:text-sm",onClick:O},{default:e.withCtx(()=>[...l[3]||(l[3]=[e.createTextVNode(" Today ",-1)])]),_:1}),e.createVNode(f,{variant:"outline",size:"icon",class:"size-8 sm:size-9",onClick:q},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronRight),{size:16})]),_:1})]),o.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(N,{key:0,modelValue:a.value,"onUpdate:modelValue":l[0]||(l[0]=r=>a.value=r)},{default:e.withCtx(()=>[e.createVNode(m,{value:1},{default:e.withCtx(()=>[...l[4]||(l[4]=[e.createElementVNode("span",{class:"whitespace-nowrap"},"1 Day",-1)])]),_:1}),e.createVNode(m,{value:3},{default:e.withCtx(()=>[...l[5]||(l[5]=[e.createElementVNode("span",{class:"whitespace-nowrap"},"3 Days",-1)])]),_:1}),e.createVNode(m,{value:7},{default:e.withCtx(()=>[...l[6]||(l[6]=[e.createElementVNode("span",{class:"whitespace-nowrap"},"7 Days",-1)])]),_:1})]),_:1},8,["modelValue"])),!o.value&&e.unref(h)("manage-reservations")?(e.openBlock(),e.createBlock(Q._sfc_main,{key:1})):e.createCommentVNode("",!0)])]),o.value&&k.value.length>0?(e.openBlock(),e.createElementBlock("div",St,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,r=>(e.openBlock(),e.createElementBlock("button",{key:r.id,class:e.normalizeClass(["flex items-center gap-2 px-3 py-1.5 rounded-full border text-sm whitespace-nowrap transition-colors flex-shrink-0",{"bg-primary text-primary-foreground border-primary":V.value===r.id,"bg-background hover:bg-muted":V.value!==r.id}]),onClick:z=>I(r.id)},[e.createElementVNode("div",{class:"size-5 rounded-full flex items-center justify-center text-white text-[10px] font-medium",style:e.normalizeStyle({backgroundColor:V.value===r.id?"rgba(255,255,255,0.3)":r.color||"#6b7280"})},e.toDisplayString(r.avatarLabel||r.name.charAt(0).toUpperCase()),5),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],10,Ct))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",Bt,[e.createElementVNode("div",$t,[e.createVNode(C,{modelValue:s.value,"onUpdate:modelValue":l[1]||(l[1]=r=>s.value=r),"weekday-format":"short",class:"rounded-md border"},null,8,["modelValue"]),w.value.length>0?(e.openBlock(),e.createElementBlock("div",Dt,[l[7]||(l[7]=e.createElementVNode("div",{class:"flex items-center justify-between mb-3"},[e.createElementVNode("span",{class:"text-sm font-medium"},"Resources")],-1)),e.createElementVNode("div",Tt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id,class:e.normalizeClass(["flex items-center gap-2 p-2 rounded-md hover:bg-muted cursor-pointer transition-colors",{"bg-muted ring-2 ring-primary/20":V.value===r.id,"opacity-50":V.value&&V.value!==r.id}]),onClick:z=>I(r.id)},[e.createElementVNode("div",{class:"size-7 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0",style:e.normalizeStyle({backgroundColor:r.color||"#6b7280"})},e.toDisplayString(r.avatarLabel||r.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",Mt,[e.createElementVNode("div",Lt,e.toDisplayString(r.name),1)]),e.createElementVNode("div",{class:e.normalizeClass(["size-2 rounded-full flex-shrink-0",V.value===r.id?"bg-primary":"bg-muted-foreground/30"])},null,2)],10,zt))),128)),M.value.length>0?(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("button",{class:"flex items-center gap-2 text-xs text-muted-foreground hover:text-foreground w-full py-1 transition-colors",onClick:l[2]||(l[2]=r=>S.value=!S.value)},[e.createVNode(e.unref(B.ChevronRight),{size:14,class:e.normalizeClass(["transition-transform",{"rotate-90":S.value}])},null,8,["class"]),e.createElementVNode("span",null,"Inactive ("+e.toDisplayString(M.value.length)+")",1)]),S.value?(e.openBlock(),e.createElementBlock("div",Ut,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id,class:"flex items-center gap-2 p-2 rounded-md opacity-50"},[e.createElementVNode("div",{class:"size-7 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0 grayscale",style:e.normalizeStyle({backgroundColor:r.color||"#6b7280"})},e.toDisplayString(r.avatarLabel||r.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",jt,[e.createElementVNode("div",Ft,e.toDisplayString(r.name),1)])]))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]),e.createVNode(ht)])])]),_:1})}}});exports.default=Rt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),U=require("./DateFormatter-ls6HfWpS.js"),B=require("lucide-vue-next"),te=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),F=require("@oneclick.dev/cms-kit"),K=require("./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Vxubki_v.js"),oe=require("./_plugin-vue_export-helper-BHFhmbuH.js"),Q=require("./NewReservationDialog.vue_vue_type_script_setup_true_lang-StaNp-3y.js"),ne={class:"mb-6"},se={class:"flex items-end gap-px h-24 bg-muted/30 rounded-lg p-2 overflow-visible"},re=["onClick"],ae={class:"absolute -top-8 left-1/2 -translate-x-1/2 bg-popover border shadow-md rounded px-2 py-1 text-xs whitespace-nowrap opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none z-10"},le={class:"font-medium"},ie={class:"text-muted-foreground"},ce={class:"w-full flex-1 flex items-end justify-center"},de={key:1,class:"text-[10px] mt-1"},ue={key:0,class:"mt-2 text-sm text-muted-foreground flex items-center gap-2"},me={class:"font-medium text-foreground"},pe={class:"font-medium text-foreground"},fe=e.defineComponent({__name:"TimelineChart",props:{timeSlots:{},slotStats:{},selectedTimeSlot:{},maxSpots:{}},emits:["select","clear"],setup(u,{emit:h}){const v=h,y=s=>{v("select",s)},E=()=>{v("clear")};return(s,a)=>{const i=e.resolveComponent("Button");return e.openBlock(),e.createElementBlock("div",ne,[a[2]||(a[2]=e.createElementVNode("h3",{class:"font-semibold text-sm mb-2"},"Timeline",-1)),e.createElementVNode("div",se,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.timeSlots,o=>(e.openBlock(),e.createElementBlock("div",{key:o.startTime,class:"flex-1 min-w-0 flex flex-col items-center cursor-pointer group h-full relative",onClick:x=>y(o.startTime)},[e.createElementVNode("div",ae,[e.createElementVNode("div",le,e.toDisplayString(o.startTime),1),e.createElementVNode("div",ie,e.toDisplayString(u.slotStats[o.startTime]?.spots||0)+" spots",1)]),e.createElementVNode("div",ce,[e.createElementVNode("div",{class:e.normalizeClass(["w-full transition-all duration-200",[u.selectedTimeSlot===o.startTime?"bg-primary":u.slotStats[o.startTime]?.spots>0?"bg-primary/60 group-hover:bg-primary/80":"bg-muted-foreground/20 group-hover:bg-muted-foreground/30"]]),style:e.normalizeStyle({height:u.slotStats[o.startTime]?.spots>0?`${u.slotStats[o.startTime].spots/u.maxSpots*100}%`:"2px",minHeight:u.slotStats[o.startTime]?.spots>0?"4px":"2px"})},null,6)]),o.startTime.endsWith(":00")?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["text-[10px] text-muted-foreground mt-1 transition-colors truncate",{"text-primary font-medium":u.selectedTimeSlot===o.startTime}])},e.toDisplayString(o.label),3)):(e.openBlock(),e.createElementBlock("span",de," "))],8,re))),128))]),u.selectedTimeSlot?(e.openBlock(),e.createElementBlock("div",ue,[e.createVNode(i,{variant:"ghost",size:"icon",class:"h-6 w-6 p-0",onClick:E},{default:e.withCtx(()=>[e.createVNode(e.unref(B.X),{size:14})]),_:1}),e.createElementVNode("span",null,[a[0]||(a[0]=e.createTextVNode(" Showing ",-1)),e.createElementVNode("span",me,e.toDisplayString(u.slotStats[u.selectedTimeSlot]?.bookings||0),1),a[1]||(a[1]=e.createTextVNode(" bookings at ",-1)),e.createElementVNode("span",pe,e.toDisplayString(u.selectedTimeSlot),1)])])):e.createCommentVNode("",!0)])}}}),ve={class:"flex items-center justify-between mb-3"},ge={class:"font-semibold"},he={key:0,class:"text-muted-foreground font-normal"},xe={class:"relative mb-3"},ye={key:0,class:"flex items-center justify-center py-8"},ke={key:1,class:"text-center py-8 text-muted-foreground"},be={key:2,class:"space-y-2 max-h-80 overflow-y-auto"},_e=["onClick"],Ne={class:"flex items-start justify-between"},Ee={class:"flex-1"},we={class:"font-medium"},Ve={class:"text-sm text-muted-foreground"},Se={class:"text-sm text-muted-foreground"},Ce={class:"flex items-center gap-4"},Be={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},$e={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},De={class:"text-right"},Te={key:0,class:"inline-block px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},ze={key:1,class:"inline-block px-2 py-1 text-xs rounded-full bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},Me={key:2,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},Le={key:3,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},Ie={key:4,class:"inline-block px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"},Ue={key:5,class:"text-sm font-medium mt-1"},je=e.defineComponent({__name:"BookingsList",props:{orders:{},filteredOrders:{},isLoading:{type:Boolean},selectedTimeSlot:{},searchQuery:{}},emits:["update:searchQuery","refresh"],setup(u,{emit:h}){const v=h,y=e.ref(null),E=i=>{v("update:searchQuery",i)},s=()=>{v("update:searchQuery","")},a=()=>{v("refresh")};return(i,o)=>{const x=e.resolveComponent("Input"),g=e.resolveComponent("Button");return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",ve,[e.createElementVNode("h3",ge,[o[0]||(o[0]=e.createTextVNode(" Bookings ",-1)),u.selectedTimeSlot||u.searchQuery?(e.openBlock(),e.createElementBlock("span",he," ("+e.toDisplayString(u.filteredOrders.length)+" of "+e.toDisplayString(u.orders.length)+") ",1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",xe,[e.createVNode(e.unref(B.Search),{size:16,class:"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"}),e.createVNode(x,{"model-value":u.searchQuery,placeholder:"Search by name, email, or phone...",class:"pl-9 pr-9","onUpdate:modelValue":E},null,8,["model-value"]),u.searchQuery?(e.openBlock(),e.createBlock(g,{key:0,variant:"ghost",size:"icon",class:"absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7",onClick:s},{default:e.withCtx(()=>[e.createVNode(e.unref(B.X),{size:14})]),_:1})):e.createCommentVNode("",!0)]),u.isLoading?(e.openBlock(),e.createElementBlock("div",ye,[...o[1]||(o[1]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):u.filteredOrders.length===0?(e.openBlock(),e.createElementBlock("div",ke,e.toDisplayString(u.selectedTimeSlot?"No bookings for this time slot":"No bookings for this event"),1)):(e.openBlock(),e.createElementBlock("div",be,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.filteredOrders,p=>(e.openBlock(),e.createElementBlock("div",{key:p.res_id||p.id,class:"p-3 border rounded-lg hover:bg-muted/50 transition-colors",onClick:w=>e.unref(y).openDialog(p)},[e.createElementVNode("div",Ne,[e.createElementVNode("div",Ee,[e.createElementVNode("div",we,e.toDisplayString(p.customerInfo.firstName+" "+p.customerInfo.lastName||"Unknown Customer"),1),e.createElementVNode("div",Ve,e.toDisplayString(p.customerInfo.email),1),e.createElementVNode("div",Se,e.toDisplayString(p.customerInfo.phone),1),e.createElementVNode("div",Ce,[e.createElementVNode("div",Be,[e.createVNode(e.unref(B.Clock),{size:12}),e.createElementVNode("span",null,e.toDisplayString(p.startTime)+" - "+e.toDisplayString(p.endTime),1)]),e.createElementVNode("div",$e,[e.createVNode(e.unref(B.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(p.spots),1)])])]),e.createElementVNode("div",De,[p.reservationStatus==="needs_approval"?(e.openBlock(),e.createElementBlock("span",Te,"Needs Approval")):p.reservationStatus==="approved"?(e.openBlock(),e.createElementBlock("span",ze,"Approved")):p.reservationStatus==="rejected"?(e.openBlock(),e.createElementBlock("span",Me,"Rejected")):p.reservationStatus==="cancelled"?(e.openBlock(),e.createElementBlock("span",Le,"Cancelled")):(e.openBlock(),e.createElementBlock("span",Ie,"Pending")),p.reservationPrice||p.reservationPrice===0?(e.openBlock(),e.createElementBlock("div",Ue," €"+e.toDisplayString(p.reservationPrice.toFixed(2)),1)):e.createCommentVNode("",!0)])])],8,_e))),128))])),e.createVNode(K._sfc_main,{ref_key:"reservationDetailDialog",ref:y,onCancelled:a,onConfirmed:a,onRejected:a},null,512)])}}}),Fe={class:"flex items-center gap-4 mt-2 text-sm"},Re={class:"flex items-center gap-1"},Pe={key:0,class:"flex items-center gap-1"},Oe={class:"flex items-center gap-1"},Ae={class:"py-4"},qe=e.defineComponent({__name:"EventDialog",props:{resources:{default:()=>[]}},setup(u,{expose:h}){const v=u,{config:y}=F.useModule(),{params:E}=F.useModuleRoute(),s=F.useFirebaseIntegration(y.project),a=e.ref(!1),i=e.ref(null),o=e.ref([]),x=e.ref(!1),g=e.ref(null),p=e.ref("");e.provide("event",i);const w=e.computed(()=>{if(!i.value)return[];const d=i.value.resource?.interval||60,n=[],[c,_]=i.value.startTime.split(":").map(Number),[T,b]=i.value.endTime.split(":").map(Number),$=c*60+_,t=T*60+b;for(let l=$;l<t;l+=d){const f=Math.floor(l/60),m=l%60,N=Math.min(l+d,t),C=Math.floor(N/60),r=N%60,z=`${f.toString().padStart(2,"0")}:${m.toString().padStart(2,"0")}`,L=`${C.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`;n.push({startTime:z,endTime:L,label:z})}return n}),k=d=>{const n=d.getFullYear(),c=String(d.getMonth()+1).padStart(2,"0"),_=String(d.getDate()).padStart(2,"0");return`${n}-${c}-${_}`},M=e.computed(()=>{const d={};return w.value.forEach(n=>{d[n.startTime]={bookings:0,spots:0,orders:[]}}),o.value.forEach(n=>{w.value.forEach(c=>{n.startTime<c.endTime&&n.endTime>c.startTime&&(d[c.startTime].bookings++,d[c.startTime].spots+=n.spots||0,d[c.startTime].orders.push(n))})}),d}),V=e.computed(()=>Math.max(1,...Object.values(M.value).map(d=>d.spots))),S=e.computed(()=>{let d=o.value;return g.value&&(d=M.value[g.value]?.orders||[]),p.value.trim()&&(d=new K.Fuse(d,{keys:["customerInfo.firstName","customerInfo.lastName","customerInfo.email","customerInfo.phone"],threshold:.3,ignoreLocation:!0}).search(p.value).map(c=>c.item)),d}),D=e.computed(()=>({spots:o.value.reduce((d,n)=>d+(n.spots||0),0),bookings:o.value.length})),R=d=>{g.value===d?g.value=null:g.value=d},I=()=>{g.value=null},P=async d=>{a.value=!0,i.value=d,g.value=null,p.value="",await j()},j=async()=>{if(i.value){x.value=!0,o.value=[];try{const d=E.value.id,n=k(new Date(i.value.date)),c=new Set;v.resources?.forEach(b=>{const $=`${b.id}_${n}`;c.add($)});const _=await s.find(y.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:d},{field:"status",operator:"==",value:"confirmed"},{field:"flattenedReservationDates",operator:"array-contains-any",value:Array.from(c)}]});let T=[];_.forEach(b=>{const $=b.reservations?.filter(t=>t.date===n)||[];console.log("dateReservations",$),$.forEach(t=>{const l=v.resources.find(f=>f.id===t.resourceId);(t.status==="approved"||t.status==="needs_approval")&&T.push({customerInfo:b.customerInfo,amountDue:b.amountDue,amountPaid:b.amountPaid,status:b.status,reservationStatus:t.status,subtotal:b.subtotal,total:b.total,discount:b.discount,id:b.id,res_id:t.id,resourceId:t.resourceId,spots:t.spots,date:n,startTime:t.timeslot?.startTime,endTime:t.timeslot?.endTime,reservationPrice:t.totalPrice,reservationBasePrice:t.basePrice,reservationAddOnsPrice:t.addOnsPrice,pricingOptionId:t.pricingOptionId,pricingOption:t.pricingOption,resourceName:l?.name||"Unknown",resourceColor:l?.color})})}),o.value=T.sort((b,$)=>b.startTime?.localeCompare($.startTime||"")||0)}catch(d){console.error("Error loading orders:",d),o.value=[]}finally{x.value=!1}}},q=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],O=["January","February","March","April","May","June","July","August","September","October","November","December"];return h({openDialog:P}),(d,n)=>{const c=e.resolveComponent("DialogTitle"),_=e.resolveComponent("DialogDescription"),T=e.resolveComponent("DialogHeader"),b=e.resolveComponent("Button"),$=e.resolveComponent("DialogFooter"),t=e.resolveComponent("DialogScrollContent"),l=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(l,{open:a.value,"onUpdate:open":n[2]||(n[2]=f=>a.value=f)},{default:e.withCtx(()=>[e.createVNode(t,{class:"sm:max-w-3xl"},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[i.value?.date?(e.openBlock(),e.createBlock(c,{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(q[new Date(i.value.date).getUTCDay()])+" "+e.toDisplayString(O[new Date(i.value.date).getUTCMonth()])+" "+e.toDisplayString(new Date(i.value.date).getUTCDate())+", "+e.toDisplayString(new Date(i.value.date).getUTCFullYear()),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(_,null,{default:e.withCtx(()=>[e.createElementVNode("div",Fe,[e.createElementVNode("div",Re,[e.createVNode(e.unref(B.Clock),{size:14}),e.createElementVNode("span",null,e.toDisplayString(i.value?.startTime)+" – "+e.toDisplayString(i.value?.endTime),1)]),i.value?.resource?(e.openBlock(),e.createElementBlock("div",Pe,[e.createElementVNode("div",{class:"w-4 h-4 rounded-full",style:e.normalizeStyle({backgroundColor:i.value.resource.color||"#6b7280"})},null,4),e.createElementVNode("span",null,e.toDisplayString(i.value.resource.name),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[e.createVNode(e.unref(B.Users),{size:14}),e.createElementVNode("span",null,e.toDisplayString(D.value.spots)+" spots in "+e.toDisplayString(D.value.bookings)+" reservations",1)])])]),_:1})]),_:1}),e.createElementVNode("div",Ae,[w.value.length>1?(e.openBlock(),e.createBlock(fe,{key:0,"time-slots":w.value,"slot-stats":M.value,"selected-time-slot":g.value,"max-spots":V.value,onSelect:R,onClear:I},null,8,["time-slots","slot-stats","selected-time-slot","max-spots"])):e.createCommentVNode("",!0),e.createVNode(je,{orders:o.value,"filtered-orders":S.value,"is-loading":x.value,"selected-time-slot":g.value,"search-query":p.value,"onUpdate:searchQuery":n[0]||(n[0]=f=>p.value=f),onRefresh:j},null,8,["orders","filtered-orders","is-loading","selected-time-slot","search-query"])]),e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(b,{variant:"outline",onClick:n[1]||(n[1]=f=>a.value=!1)},{default:e.withCtx(()=>[...n[3]||(n[3]=[e.createTextVNode("Close",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])}}}),He={class:"flex-1 border-r shadow-sm overflow-hidden min-h-[1536px]"},We={class:"relative h-full min-h-[1536px]"},Qe={class:"divide-y divide-input/80 h-full flex flex-col min-h-[1536px] border-y border-input/80"},Xe={class:"absolute inset-0 pointer-events-none"},Ye={class:"relative mr-3 h-full ml-2"},Je=["onClick"],Ke={key:0,class:"absolute bottom-0 left-0 right-0 h-1 bg-black/20"},Ge={class:"flex items-start justify-between gap-2 mb-1"},Ze={class:"font-semibold text-sm leading-tight line-clamp-1 flex-1"},et={class:"flex items-center gap-1 shrink-0"},tt=["title"],ot={class:"font-medium"},X=e.defineComponent({__name:"EventTimeline",props:{date:{},events:{},firstDay:{type:Boolean,default:!1},resources:{default:()=>[]}},setup(u){const h=u,v=e.ref(null),y=a=>{const[i,o]=a.split(":").map(Number);return i*60+o};e.computed(()=>!h.events||!h.resources?[]:h.resources.map(a=>{const o=h.events.filter(x=>x.resourceId===a.id).map(x=>{const g=y(x.startTime),w=y(x.endTime)-g,k=g/1440*100,M=w/1440*100,V=(x.bookings??0)>0,S=x.maxBookings?(x.bookings??0)/x.maxBookings*100:0;return{...x,top:`${k}%`,height:`${M}%`,color:x.resource?.color||"#3b82f6",hasBookings:V,fillPercentage:S,isSmall:w<60}});return{resource:a,events:o}}));const E=e.computed(()=>h.events?h.events.map(a=>{const i=y(a.startTime),x=y(a.endTime)-i,g=i/1440*100,p=x/1440*100,w=(a.bookings??0)>0,k=a.maxBookings?(a.bookings??0)/a.maxBookings*100:0;return{...a,top:`${g}%`,height:`${p}%`,color:a.resource?.color||"#3b82f6",hasBookings:w,fillPercentage:k,isSmall:x<60}}):[]),s=Array.from({length:24},(a,i)=>({hour:i,label:`${i.toString().padStart(2,"0")}:00`}));return(a,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",He,[e.createElementVNode("div",We,[e.createElementVNode("div",Qe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),o=>(e.openBlock(),e.createElementBlock("div",{key:o.hour,class:"flex-1 flex transition-all duration-200"},[...i[0]||(i[0]=[e.createElementVNode("div",{class:"flex-1 relative"},[e.createElementVNode("div",{class:"absolute top-1/2 left-0 right-0 border-t border-dashed border-input/50"})],-1)])]))),128))]),e.createElementVNode("div",Xe,[e.createElementVNode("div",Ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,style:e.normalizeStyle({top:o.top,height:o.height,opacity:o.hasBookings?"1":"0.5"}),class:"event-card absolute left-2 right-2 rounded-lg pointer-events-auto cursor-pointer group/event transition-all duration-200 hover:shadow-xl overflow-hidden",onClick:x=>v.value?.openDialog(o)},[e.createElementVNode("div",{style:e.normalizeStyle({backgroundColor:o.color}),class:"absolute inset-0 shadow-lg"},[o.maxBookings?(e.openBlock(),e.createElementBlock("div",Ke,[e.createElementVNode("div",{class:"h-full bg-white/40 transition-all duration-300",style:e.normalizeStyle({width:`${o.fillPercentage}%`})},null,4)])):e.createCommentVNode("",!0)],4),e.createElementVNode("div",{class:e.normalizeClass(["relative h-full p-3 flex flex-col",`${o.hasBookings?"text-white":"text-gray-600 dark:text-gray-100"}`])},[e.createElementVNode("div",Ge,[e.createElementVNode("h3",Ze,e.toDisplayString(o.title),1),e.createElementVNode("div",et,[o.resource?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-6 h-6 rounded-full flex items-center justify-center text-xs font-bold bg-white/30 backdrop-blur-sm text-white border border-white/40",title:o.resource.name},e.toDisplayString(o.resource.avatarLabel||o.resource.name.charAt(0).toUpperCase()),9,tt)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium",o.hasBookings?"bg-white text-black backdrop-blur-sm":"bg-black/10 backdrop-blur-sm"])},[e.createVNode(e.unref(B.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(o.bookings),1)],2)])]),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-2 text-xs opacity-90 mt-auto",{"-translate-x-1 -translate-y-2 scale-80 origin-[0_0]":o.isSmall}])},[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-1 px-2 py-0.5 rounded backdrop-blur-sm",{"bg-black/10":!o.isSmall}])},[e.createVNode(e.unref(B.Clock),{size:10}),e.createElementVNode("span",ot,e.toDisplayString(o.startTime)+" – "+e.toDisplayString(o.endTime),1)],2)],2)],2),i[1]||(i[1]=e.createElementVNode("div",{class:"absolute inset-0 border-2 border-white/0 group-hover/event:border-white/30 rounded-lg transition-colors duration-200 pointer-events-none"},null,-1))],12,Je))),128))])])])]),e.createVNode(qe,{resources:u.resources,ref_key:"eventDialog",ref:v},null,8,["resources"])],64))}}),nt={class:"sticky left-0 mt-auto z-10 divide-y divide-border/50 h-full flex flex-col min-h-[1536px] bg-input"},st={class:"flex-shrink-0 text-xs font-medium text-muted-foreground px-3 pb-3 border-r border-border/50 w-14"},rt={class:"flex items-center gap-1.5"},Y=e.defineComponent({__name:"Event24hSidebar",setup(u){const h=Array.from({length:24},(v,y)=>({hour:y,label:`${y.toString().padStart(2,"0")}:00`}));return(v,y)=>(e.openBlock(),e.createElementBlock("div",nt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),E=>(e.openBlock(),e.createElementBlock("div",{key:E.hour,class:"flex-1 flex transition-all duration-200"},[e.createElementVNode("div",st,[e.createElementVNode("div",rt,[e.createElementVNode("span",{class:e.normalizeClass({"-translate-y-1/2":E.hour!==0})},e.toDisplayString(E.label),3)])])]))),128))]))}}),at={class:"absolute top-0 w-full pointer-events-none"},lt={key:0,class:"absolute -right-2 -top-0.5 px-2 py-0.5 bg-red-500 text-white text-xs font-medium rounded shadow-lg"},J=e.defineComponent({__name:"EventTimeIndicator",props:{currentDate:{type:Object,required:!1}},setup(u){const h=e.ref(Date.now());let v;e.onMounted(()=>{v=window.setInterval(()=>{h.value=Date.now()},1e3)}),e.onUnmounted(()=>{v&&clearInterval(v)});const y=e.computed(()=>{const s=new Date(h.value);return`${(s.getHours()*60+s.getMinutes()+s.getSeconds()/60)/1440*100}%`}),E=e.computed(()=>new Date(h.value).getFullYear()+"-"+(new Date(h.value).getMonth()+1).toString().padStart(2,"0")+"-"+new Date(h.value).getDate().toString().padStart(2,"0"));return(s,a)=>(e.openBlock(),e.createElementBlock("div",at,[e.createElementVNode("div",{class:"absolute left-0 right-0 h-0.5 bg-red-500 z-30 pointer-events-none transition-[top] duration-300 ease-linear",style:e.normalizeStyle({top:y.value})},[a[0]||(a[0]=e.createElementVNode("div",{class:"absolute -left-2 -top-1.5 w-3 h-3 bg-red-500 rounded-full shadow-lg shadow-red-500/50"},null,-1)),u.currentDate&&u.currentDate==E.value?(e.openBlock(),e.createElementBlock("div",lt," Now ")):e.createCommentVNode("",!0)],4)]))}}),it={key:0,class:"relative flex flex-1 min-w-0"},ct={key:1,class:"flex-1 min-w-0 relative"},dt={key:0,class:"absolute top-0 right-0 z-10 px-3 py-1.5 bg-primary/90 text-primary-foreground text-xs font-medium rounded-bl-lg shadow-lg backdrop-blur-sm flex items-center gap-1.5 animate-pulse-subtle"},ut={class:"flex pb-4 min-w-[200px]"},mt=["onClick"],pt={key:0,class:"absolute top-2 right-2 flex items-center gap-1 px-2 py-0.5 bg-primary/20 backdrop-blur-sm rounded-full border border-primary/30"},ft={class:"text-xs text-muted-foreground font-medium group-hover:text-foreground/70 transition-colors"},vt={key:0,class:"absolute bottom-0 left-0 w-full h-1 bg-orange-500"},gt=e.defineComponent({__name:"EventView",setup(u){const h=e.inject("activeDate",e.ref(U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))),v=e.inject("viewMode",e.ref(1)),y=e.inject("events",e.ref([])),E=e.inject("resources",e.ref([])),s=e.ref(null),a=e.ref(!1),i=e.ref(!1);e.computed(()=>E.value.length>1);const o=e.computed(()=>{const n=[],c=h.value;for(let _=0;_<v.value;_++)n.push(c.add({days:_}));return n}),x=(n,c)=>{const _=`${n.year}-${String(n.month).padStart(2,"0")}-${String(n.day).padStart(2,"0")}`;return y.value?.filter(T=>T.date===_)||[]},g=n=>{const c=U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2());return n.year===c.year&&n.month===c.month&&n.day===c.day},p=n=>{h.value=n,v.value=1};let w=null,k=null;const M=()=>{s.value&&(S(),s.value.scrollBy({left:-300,behavior:"smooth"}),k=window.setTimeout(()=>{w=window.setInterval(()=>{s.value&&s.value.scrollBy({left:-20,behavior:"auto"})},50)},300))},V=()=>{s.value&&(S(),s.value.scrollBy({left:300,behavior:"smooth"}),k=window.setTimeout(()=>{w=window.setInterval(()=>{s.value&&s.value.scrollBy({left:20,behavior:"auto"})},50)},300))},S=()=>{k&&(clearTimeout(k),k=null),w&&(clearInterval(w),w=null)},D=()=>{if(!s.value)return;const{scrollLeft:n,scrollWidth:c,clientWidth:_}=s.value;a.value=n>10,i.value=n<c-_-10},R=n=>{s.value&&Math.abs(n.deltaY)>Math.abs(n.deltaX)&&(n.preventDefault(),s.value.scrollBy({left:n.deltaY,behavior:"auto"}))},I=e.ref(!1),P=e.ref(0),j=e.ref(0),q=n=>{!s.value||v.value===1||n.target.closest(".event-card")||(I.value=!0,P.value=n.pageX,j.value=s.value.scrollLeft,s.value.style.userSelect="none",n.preventDefault())},O=n=>{if(!I.value||!s.value)return;const c=n.pageX,_=(P.value-c)*1.2;s.value.scrollLeft=j.value+_},d=()=>{s.value&&(I.value=!1,s.value.style.userSelect="")};return e.onMounted(()=>{s.value&&(s.value.addEventListener("scroll",D),s.value.addEventListener("wheel",R,{passive:!1}),e.nextTick(()=>{D(),setTimeout(D,50),setTimeout(D,150),setTimeout(D,300),setTimeout(D,500)})),document.addEventListener("mousemove",O),document.addEventListener("mouseup",d)}),e.onBeforeUnmount(()=>{document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",d)}),e.watch(v,()=>{v.value>1?e.nextTick(()=>{setTimeout(()=>{if(!s.value)return;const{scrollWidth:n,clientWidth:c}=s.value;n>c&&(i.value=!0,a.value=!1)},100)}):s.value&&(s.value.style.cursor="")}),e.onUnmounted(()=>{S(),s.value&&(s.value.removeEventListener("scroll",D),s.value.removeEventListener("wheel",R))}),(n,c)=>{const _=e.resolveComponent("Button"),T=e.resolveComponent("TooltipTrigger"),b=e.resolveComponent("TooltipContent"),$=e.resolveComponent("Tooltip");return e.unref(v)===1?(e.openBlock(),e.createElementBlock("div",it,[e.createVNode(Y),e.createVNode(J,{class:"h-full","current-date":e.unref(h)},null,8,["current-date"]),e.createVNode(X,{date:e.unref(h),events:x(e.unref(h)),resources:e.unref(E)},null,8,["date","events","resources"])])):(e.openBlock(),e.createElementBlock("div",ct,[e.unref(v)===7?(e.openBlock(),e.createElementBlock("div",dt,[e.createVNode(e.unref(B.ChevronLeft),{size:12}),c[0]||(c[0]=e.createElementVNode("span",null,"Scroll to view all days",-1)),e.createVNode(e.unref(B.ChevronRight),{size:12})])):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(_,{key:1,variant:"outline",size:"icon",onMousedown:M,onMouseup:S,onMouseleave:S,onTouchstart:M,onTouchend:S,class:"sticky top-1/2 left-2 -translate-y-1/2 z-40 h-10 w-10 rounded-full shadow-lg bg-background/95 backdrop-blur-sm hover:bg-background border-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronLeft),{size:20})]),_:1})):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createBlock(_,{key:2,variant:"outline",size:"icon",onMousedown:V,onMouseup:S,onMouseleave:S,onTouchstart:V,onTouchend:S,class:"sticky top-1/2 right-2 -translate-y-1/2 z-40 h-10 w-10 rounded-full shadow-lg bg-background/95 backdrop-blur-sm hover:bg-background border-2 float-right"},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronRight),{size:20})]),_:1})):e.createCommentVNode("",!0),e.createVNode(J,{class:"h-[calc(100%-164px)] mt-[122px]"}),e.createElementVNode("div",{class:e.normalizeClass(["absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-background to-transparent z-10 pointer-events-none transition-opacity duration-300",i.value?"opacity-100":"opacity-0"])},null,2),e.createElementVNode("div",{ref_key:"scrollContainer",ref:s,class:"absolute inset-0 overflow-x-auto overflow-y-visible",onScroll:D,onMousedown:q},[e.createElementVNode("div",ut,[e.createVNode(Y),c[5]||(c[5]=e.createElementVNode("div",{class:"absolute w-14 h-[125px] bg-input"},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(t,l)=>(e.openBlock(),e.createElementBlock("div",{key:t.toString(),class:e.normalizeClass(["flex-shrink-0",{"min-w-[200px] w-[33.33%]":e.unref(v)===3,"min-w-[280px]":e.unref(v)===7}])},[e.createElementVNode("div",{onClick:f=>p(t),class:e.normalizeClass(["relative p-3 border cursor-pointer transition-all duration-200 group relative",g(t)?"bg-gradient-to-br from-primary/10 to-primary/5 border-primary/30 hover:from-primary/20 hover:to-primary/10 hover:border-primary/50 hover:shadow-md":"bg-gradient-to-br from-muted/50 to-muted/30 border-border hover:from-accent/50 hover:to-accent/30 hover:border-accent-foreground/20 hover:shadow-md"])},[g(t)?(e.openBlock(),e.createElementBlock("div",pt,[...c[1]||(c[1]=[e.createElementVNode("div",{class:"w-1.5 h-1.5 bg-primary rounded-full animate-pulse"},null,-1),e.createElementVNode("span",{class:"text-[9px] font-bold text-primary uppercase tracking-wide"},"Today",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["text-xs font-semibold uppercase tracking-wider transition-colors",g(t)?"text-primary group-hover:text-primary/80":"text-muted-foreground group-hover:text-foreground"])},e.toDisplayString(new Date(t.year,t.month-1,t.day).toLocaleDateString("en-US",{weekday:"short"})),3),e.createElementVNode("div",{class:e.normalizeClass(["text-2xl font-bold transition-colors",g(t)?"text-foreground":"text-foreground group-hover:text-primary"])},e.toDisplayString(t.day),3),e.createElementVNode("div",ft,e.toDisplayString(new Date(t.year,t.month-1,t.day).toLocaleDateString("en-US",{month:"long",year:"numeric"})),1),c[4]||(c[4]=e.createElementVNode("div",{class:"mt-2 pt-2 border-t border-border/0 group-hover:border-border/50 transition-all"},[e.createElementVNode("div",{class:"text-[10px] text-muted-foreground/0 group-hover:text-muted-foreground/100 uppercase tracking-wide transition-all"}," Click to view ")],-1)),e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(T,{"as-child":""},{default:e.withCtx(()=>[x(t).filter(f=>f.isException).length>0?(e.openBlock(),e.createBlock(e.unref(B.Asterisk),{key:0,class:"absolute top-3 right-3 size-4 text-orange-500"})):e.createCommentVNode("",!0)]),_:2},1024),e.createVNode(b,null,{default:e.withCtx(()=>[...c[2]||(c[2]=[e.createElementVNode("p",null," This day has exceptions applied to it. ",-1)])]),_:1})]),_:2},1024),e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(T,{"as-child":""},{default:e.withCtx(()=>[x(t).filter(f=>f.isException).length>0?(e.openBlock(),e.createElementBlock("div",vt)):e.createCommentVNode("",!0)]),_:2},1024),e.createVNode(b,null,{default:e.withCtx(()=>[...c[3]||(c[3]=[e.createElementVNode("p",null," This day has exceptions applied to it. ",-1)])]),_:1})]),_:2},1024)],10,mt),e.createVNode(X,{date:t,events:x(t),resources:e.unref(E)},null,8,["date","events","resources"])],2))),128))])],544)]))}}}),ht=oe._export_sfc(gt,[["__scopeId","data-v-99339cf2"]]),xt={class:"flex flex-col gap-2 md:gap-4 w-full h-full"},yt={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 px-1"},kt={class:"flex items-center justify-between sm:justify-start gap-4"},bt={class:"flex flex-col"},_t={class:"flex items-center gap-2"},Nt={class:"text-lg sm:text-2xl font-bold tracking-tight truncate"},Et={class:"text-xs sm:text-sm text-muted-foreground ml-7 truncate"},wt={class:"flex items-center justify-between sm:justify-end gap-2"},Vt={class:"flex items-center gap-1 sm:mr-2"},St={key:0,class:"flex items-center gap-2 px-1 overflow-x-auto pb-2 -mx-1 scrollbar-hide"},Ct=["onClick"],Bt={class:"flex gap-4 flex-1 min-h-0 md:min-h-[1700px]"},$t={class:"hidden md:flex flex-shrink-0 flex-col gap-4"},Dt={key:0,class:"rounded-md border p-3"},Tt={class:"space-y-1"},zt=["onClick"],Mt={class:"min-w-0 flex-1"},Lt={class:"text-sm font-medium truncate"},It={key:0,class:"pt-2 mt-2 border-t"},Ut={key:0,class:"mt-1 space-y-1"},jt={class:"min-w-0 flex-1"},Ft={class:"text-sm font-medium truncate text-muted-foreground"},Rt=e.defineComponent({__name:"agenda",setup(u){const{hasPermission:h}=F.useModulePermissions(),{params:v}=F.useModuleRoute(),{config:y}=F.useModule(),E=F.useFirebaseIntegration(y.project),s=e.ref(U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())),a=e.ref(1),i=e.ref(typeof window<"u"?window.innerWidth:1024),o=e.computed(()=>i.value<768),x=()=>{i.value=window.innerWidth};e.onMounted(()=>{window.addEventListener("resize",x)}),e.onUnmounted(()=>{window.removeEventListener("resize",x)}),e.watch(o,t=>{t&&a.value!==1&&(a.value=1)},{immediate:!0});const g=e.ref(null),p=e.ref(new Map),w=e.computed(()=>g.value?.resources||[]),k=e.computed(()=>w.value.filter(t=>t.isActive)),M=e.computed(()=>w.value.filter(t=>!t.isActive)),V=e.ref(null),S=e.ref(!1);e.watch(k,t=>{t.length>0&&!V.value&&(V.value=t[0].id)},{immediate:!0});const D=e.computed(()=>{if(!V.value)return k.value.length>0?[k.value[0]]:[];const t=k.value.find(l=>l.id===V.value);return t?[t]:k.value.length>0?[k.value[0]]:[]}),R=e.computed(()=>g.value?.pricingOptions?.find(l=>l.isDefault)?.duration||30),I=t=>{V.value=t};e.watch(s,()=>{$()});const P=e.computed(()=>{const t=s.value,l=new Date(t.year,t.month-1,t.day),f=l.toLocaleDateString("en-US",{weekday:"long"}).toUpperCase(),m=t.day,N=l.toLocaleDateString("en-US",{month:"short"}).toUpperCase();return{dayName:f,day:m,monthName:N,full:`${f} ${m} ${N}`}}),j=()=>{s.value=s.value.subtract({days:a.value})},q=()=>{s.value=s.value.add({days:a.value})},O=()=>{s.value=U.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(U.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())},d=t=>{const[l,f]=t.split(":").map(Number);return l*60+f},n=(t,l)=>(g.value?.exceptions||[]).find(m=>l>=m.startDate&&l<=m.endDate?m.resourceIds===null?!0:m.resourceIds?.includes(t):!1)||null,c=(t,l,f)=>{const m=n(t.id,f);if(m)return m.isClosed?[]:m.timeslots.map(r=>({startTime:r.startTime,endTime:r.endTime,isException:!0}));const N=l.getDay(),C=t.openingHours?.[N]||[];return C.length===0?[]:C.map(r=>({startTime:r.start,endTime:r.end,isException:!1}))},_=(t,l,f,m)=>{if(!g.value)return 0;const N=p.value.get(l);if(!N)return 0;const C=N.filter(r=>r.resourceId===t).reduce((r,z)=>{const L=d(z.startTime),A=d(z.endTime),H=d(f),W=d(m);return L<W&&A>H?r+(z.reserved||0):r},0);return C>0&&console.log(`Found ${C} total bookings for ${t} on ${l} ${f}-${m}`),C},T=e.computed(()=>{if(!g.value)return[];p.value.size;let t=[],l=[];for(let m=0;m<a.value;m++){const N=s.value.add({days:m});l.push(N)}const f=D.value.length>0?D.value:[];return f.length===0?[]:(l.forEach(m=>{let N=new Date(m.year,m.month-1,m.day);const C=`${m.year}-${String(m.month).padStart(2,"0")}-${String(m.day).padStart(2,"0")}`;f.forEach(r=>{const z=c(r,N,C);t=t.concat(z.map((L,A)=>{const H=_(r.id,C,L.startTime,L.endTime);return{id:`block-${C}-${r.id}-${A}`,title:g.value.serviceName,date:C,startTime:L.startTime,endTime:L.endTime,theme:r.color||"#3b82f6",bookings:H,maxBookings:r.capacity,isException:L.isException||!1,resourceId:r.id,resource:r,interval:r.interval||30,serviceDuration:R.value}}))})}),t)}),b=async()=>{g.value=await E.get(y.agendaCollection,v.value.id)},$=async()=>{const t=v.value.id,l=s.value;p.value.clear();const f=[];for(let m=0;m<a.value;m++){const N=l.add({days:m}),C=`${N.year}-${String(N.month).padStart(2,"0")}-${String(N.day).padStart(2,"0")}`,r=`${t}_${C}`;f.push(E.get(y.reservedSpotsCollection,r).then(z=>{if(z){let L=[];for(const A of k.value){const H=z?.[A.id]||{};Object.entries(H).forEach(([W,G])=>{const[Z,ee]=W.split("-");L.push({resourceId:A.id,startTime:Z,endTime:ee,reserved:G})})}p.value.set(C,L)}}).catch(()=>{}))}await Promise.all(f),console.log("Loaded reserved spots:",p.value)};return b(),$(),e.watch(a,()=>{$()}),e.provide("agendaData",g),e.provide("activeDate",s),e.provide("viewMode",a),e.provide("events",T),e.provide("resources",D),e.provide("allResources",k),(t,l)=>{const f=e.resolveComponent("Button"),m=e.resolveComponent("SegmentedControlButton"),N=e.resolveComponent("SegmentedControl"),C=e.resolveComponent("Calendar");return e.openBlock(),e.createBlock(te._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",xt,[e.createElementVNode("div",yt,[e.createElementVNode("div",kt,[e.createElementVNode("div",bt,[e.createElementVNode("div",_t,[e.createVNode(e.unref(B.CalendarDays),{size:20,class:"text-primary flex-shrink-0"}),e.createElementVNode("h2",Nt,e.toDisplayString(P.value.full),1)]),e.createElementVNode("p",Et,e.toDisplayString(g.value?.serviceName),1)]),o.value&&e.unref(h)("manage-reservations")?(e.openBlock(),e.createBlock(Q._sfc_main,{key:0})):e.createCommentVNode("",!0)]),e.createElementVNode("div",wt,[e.createElementVNode("div",Vt,[e.createVNode(f,{variant:"outline",size:"icon",class:"size-8 sm:size-9",onClick:j},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronLeft),{size:16})]),_:1}),e.createVNode(f,{variant:"outline",size:"sm",class:"h-8 sm:h-9 px-2 sm:px-3 text-xs sm:text-sm",onClick:O},{default:e.withCtx(()=>[...l[3]||(l[3]=[e.createTextVNode(" Today ",-1)])]),_:1}),e.createVNode(f,{variant:"outline",size:"icon",class:"size-8 sm:size-9",onClick:q},{default:e.withCtx(()=>[e.createVNode(e.unref(B.ChevronRight),{size:16})]),_:1})]),o.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(N,{key:0,modelValue:a.value,"onUpdate:modelValue":l[0]||(l[0]=r=>a.value=r)},{default:e.withCtx(()=>[e.createVNode(m,{value:1},{default:e.withCtx(()=>[...l[4]||(l[4]=[e.createElementVNode("span",{class:"whitespace-nowrap"},"1 Day",-1)])]),_:1}),e.createVNode(m,{value:3},{default:e.withCtx(()=>[...l[5]||(l[5]=[e.createElementVNode("span",{class:"whitespace-nowrap"},"3 Days",-1)])]),_:1}),e.createVNode(m,{value:7},{default:e.withCtx(()=>[...l[6]||(l[6]=[e.createElementVNode("span",{class:"whitespace-nowrap"},"7 Days",-1)])]),_:1})]),_:1},8,["modelValue"])),!o.value&&e.unref(h)("manage-reservations")?(e.openBlock(),e.createBlock(Q._sfc_main,{key:1})):e.createCommentVNode("",!0)])]),o.value&&k.value.length>0?(e.openBlock(),e.createElementBlock("div",St,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,r=>(e.openBlock(),e.createElementBlock("button",{key:r.id,class:e.normalizeClass(["flex items-center gap-2 px-3 py-1.5 rounded-full border text-sm whitespace-nowrap transition-colors flex-shrink-0",{"bg-primary text-primary-foreground border-primary":V.value===r.id,"bg-background hover:bg-muted":V.value!==r.id}]),onClick:z=>I(r.id)},[e.createElementVNode("div",{class:"size-5 rounded-full flex items-center justify-center text-white text-[10px] font-medium",style:e.normalizeStyle({backgroundColor:V.value===r.id?"rgba(255,255,255,0.3)":r.color||"#6b7280"})},e.toDisplayString(r.avatarLabel||r.name.charAt(0).toUpperCase()),5),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],10,Ct))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",Bt,[e.createElementVNode("div",$t,[e.createVNode(C,{modelValue:s.value,"onUpdate:modelValue":l[1]||(l[1]=r=>s.value=r),"weekday-format":"short",class:"rounded-md border"},null,8,["modelValue"]),w.value.length>0?(e.openBlock(),e.createElementBlock("div",Dt,[l[7]||(l[7]=e.createElementVNode("div",{class:"flex items-center justify-between mb-3"},[e.createElementVNode("span",{class:"text-sm font-medium"},"Resources")],-1)),e.createElementVNode("div",Tt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id,class:e.normalizeClass(["flex items-center gap-2 p-2 rounded-md hover:bg-muted cursor-pointer transition-colors",{"bg-muted ring-2 ring-primary/20":V.value===r.id,"opacity-50":V.value&&V.value!==r.id}]),onClick:z=>I(r.id)},[e.createElementVNode("div",{class:"size-7 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0",style:e.normalizeStyle({backgroundColor:r.color||"#6b7280"})},e.toDisplayString(r.avatarLabel||r.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",Mt,[e.createElementVNode("div",Lt,e.toDisplayString(r.name),1)]),e.createElementVNode("div",{class:e.normalizeClass(["size-2 rounded-full flex-shrink-0",V.value===r.id?"bg-primary":"bg-muted-foreground/30"])},null,2)],10,zt))),128)),M.value.length>0?(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("button",{class:"flex items-center gap-2 text-xs text-muted-foreground hover:text-foreground w-full py-1 transition-colors",onClick:l[2]||(l[2]=r=>S.value=!S.value)},[e.createVNode(e.unref(B.ChevronRight),{size:14,class:e.normalizeClass(["transition-transform",{"rotate-90":S.value}])},null,8,["class"]),e.createElementVNode("span",null,"Inactive ("+e.toDisplayString(M.value.length)+")",1)]),S.value?(e.openBlock(),e.createElementBlock("div",Ut,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id,class:"flex items-center gap-2 p-2 rounded-md opacity-50"},[e.createElementVNode("div",{class:"size-7 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0 grayscale",style:e.normalizeStyle({backgroundColor:r.color||"#6b7280"})},e.toDisplayString(r.avatarLabel||r.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",jt,[e.createElementVNode("div",Ft,e.toDisplayString(r.name),1)])]))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]),e.createVNode(ht)])])]),_:1})}}});exports.default=Rt;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),M=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),a=require("./DateFormatter-C9qfmQnP.js"),m=require("lucide-vue-next"),j=require("@oneclick.dev/cms-kit"),H={class:"space-y-6 py-4"},O={key:0},q={class:"space-y-2"},J={class:"flex items-center justify-center w-8 h-8 rounded-full bg-muted"},Y={key:0,class:"w-full h-full rounded-full bg-white scale-50"},K={class:"flex items-center justify-center w-8 h-8 rounded-full bg-muted"},G={key:0,class:"w-full h-full rounded-full bg-white scale-50"},Q={key:0,class:"pl-4 pt-2 space-y-1"},W=["onClick"],X={class:"min-w-0 flex-1"},Z={class:"text-sm font-medium truncate"},ee={key:0,class:"w-3 h-3 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},te={key:0,class:"text-xs text-amber-600 mt-2"},oe={class:"space-y-3"},ne={class:"flex items-center justify-center w-10 h-10 rounded-full bg-destructive/10"},le={key:0,class:"w-full h-full rounded-full bg-white scale-50"},ae={class:"flex items-center justify-center w-10 h-10 rounded-full bg-primary/10"},se={key:0,class:"w-full h-full rounded-full bg-white scale-50"},re={key:1},de={key:0,class:"text-center py-6 text-muted-foreground text-sm"},ce={key:1,class:"space-y-2 mb-3"},ie={class:"w-full flex justify-between items-center"},ue={class:"flex items-center gap-2 ml-auto"},me=e.defineComponent({__name:"ExceptionDialog",props:{resources:{}},emits:["add-exception","update-exception","remove-exception"],setup(L,{expose:N,emit:_}){const x=new a.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"medium"}),k=L,c=_,i=e.ref(!1),v=e.ref("add"),g=e.ref(!1),s=e.ref({start:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),end:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())}),o=e.reactive({id:"",startDate:"",endDate:"",isClosed:!1,timeslots:[],resourceIds:null}),p=e.computed({get:()=>o.resourceIds===null,set:n=>{n?o.resourceIds=null:o.resourceIds=[]}}),T=n=>{if(o.resourceIds===null)o.resourceIds=[n];else{const t=o.resourceIds.indexOf(n);t===-1?o.resourceIds.push(n):o.resourceIds.splice(t,1)}},$=e.computed(()=>!(!s.value.start||o.resourceIds!==null&&o.resourceIds.length===0)),S=n=>{v.value=n?"edit":"add",n?(o.id=n.id,o.startDate=n.startDate,o.endDate=n.endDate,o.isClosed=n.isClosed,o.timeslots=JSON.parse(JSON.stringify(n.timeslots)),o.resourceIds=n.resourceIds?[...n.resourceIds]:null,s.value={start:a.$fae977aafc393c5c$export$6b862160d295c8e(n.startDate),end:a.$fae977aafc393c5c$export$6b862160d295c8e(n.endDate)}):(o.id="",o.startDate="",o.endDate="",o.isClosed=!1,o.timeslots=[],o.resourceIds=null,s.value={start:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),end:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())}),i.value=!0},B=()=>{i.value=!1},h=()=>{o.timeslots.push({id:Date.now(),startTime:"",endTime:""})},I=n=>{o.timeslots=o.timeslots.filter(t=>t.id!==n)},y=()=>{if(!s.value.start)return;const n=s.value.start.toString(),t=s.value.end?.toString()||n,r={id:Date.now().toString(),startDate:n,endDate:t,isClosed:o.isClosed,timeslots:o.isClosed?[]:[...o.timeslots],resourceIds:o.resourceIds};c("add-exception",r),i.value=!1},E=()=>{const n=s.value.start.toString(),t=s.value.end?.toString()||n,r={id:o.id,startDate:n,endDate:t,isClosed:o.isClosed,timeslots:o.isClosed?[]:[...o.timeslots],resourceIds:o.resourceIds};c("update-exception",r),i.value=!1},w=()=>{c("remove-exception",o.id),i.value=!1};return N({openDialog:S}),(n,t)=>{const r=e.resolveComponent("DialogTitle"),C=e.resolveComponent("DialogHeader"),V=e.resolveComponent("Label"),f=e.resolveComponent("Button"),z=e.resolveComponent("PopoverTrigger"),A=e.resolveComponent("RangeCalendar"),F=e.resolveComponent("PopoverContent"),R=e.resolveComponent("Popover"),D=e.resolveComponent("Input"),U=e.resolveComponent("Card"),d=e.resolveComponent("DialogFooter"),u=e.resolveComponent("DialogScrollContent"),P=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(P,{open:i.value,"onUpdate:open":t[6]||(t[6]=l=>i.value=l)},{default:e.withCtx(()=>[e.createVNode(u,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value==="add"?"Add Exception":"Edit Exception"),1)]),_:1})]),_:1}),e.createElementVNode("div",H,[e.createElementVNode("div",null,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Select Date or Date Range",-1)])]),_:1}),e.createVNode(R,{open:g.value,"onUpdate:open":t[1]||(t[1]=l=>g.value=l)},{default:e.withCtx(()=>[e.createVNode(z,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(f,{variant:"outline",class:"w-full justify-start text-left font-normal"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Calendar),{class:"mr-2 h-4 w-4"}),s.value.start?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value.end&&s.value.start.toString()!==s.value.end.toString()?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(x).format(s.value.start.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())))+" - "+e.toDisplayString(e.unref(x).format(s.value.end.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)()))),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(x).format(s.value.start.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)()))),1)],64))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Pick a date ")],64))]),_:1})]),_:1}),e.createVNode(F,{class:"w-auto p-0"},{default:e.withCtx(()=>[e.createVNode(A,{modelValue:s.value,"onUpdate:modelValue":t[0]||(t[0]=l=>s.value=l),"initial-focus":"","number-of-months":2,"min-value":e.unref(a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3)(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())},null,8,["modelValue","min-value"])]),_:1})]),_:1},8,["open"])]),k.resources&&k.resources.length>0?(e.openBlock(),e.createElementBlock("div",O,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Apply To",-1)])]),_:1}),e.createElementVNode("div",q,[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",p.value?"bg-accent border-primary":""]),onClick:t[2]||(t[2]=l=>p.value=!0)},[e.createElementVNode("div",J,[e.createVNode(e.unref(m.Users),{class:"h-4 w-4 text-muted-foreground"})]),t[9]||(t[9]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium text-sm"},"All Resources"),e.createElementVNode("div",{class:"text-xs text-muted-foreground"},"Exception applies to all resources")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",p.value?"border-primary bg-primary":"border-muted-foreground"])},[p.value?(e.openBlock(),e.createElementBlock("div",Y)):e.createCommentVNode("",!0)],2)],2),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",p.value?"":"bg-accent border-primary"]),onClick:t[3]||(t[3]=l=>p.value=!1)},[e.createElementVNode("div",K,[e.createVNode(e.unref(m.Users),{class:"h-4 w-4 text-muted-foreground"})]),t[10]||(t[10]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium text-sm"},"Specific Resources"),e.createElementVNode("div",{class:"text-xs text-muted-foreground"},"Select which resources this exception applies to")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",p.value?"border-muted-foreground":"border-primary bg-primary"])},[p.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",G))],2)],2),p.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.resources,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:e.normalizeClass(["flex items-center gap-2 p-2 rounded-md hover:bg-muted cursor-pointer transition-colors",{"bg-muted":o.resourceIds?.includes(l.id),"opacity-50":o.resourceIds&&o.resourceIds.length>0&&!o.resourceIds.includes(l.id)}]),onClick:b=>T(l.id)},[e.createElementVNode("div",{class:"size-6 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0",style:e.normalizeStyle({backgroundColor:l.color||"#6b7280"})},e.toDisplayString(l.avatarLabel||l.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",X,[e.createElementVNode("div",Z,e.toDisplayString(l.name),1)]),e.createElementVNode("div",{class:e.normalizeClass(["size-4 rounded border-2 flex items-center justify-center flex-shrink-0",o.resourceIds?.includes(l.id)?"border-primary bg-primary":"border-muted-foreground"])},[o.resourceIds?.includes(l.id)?(e.openBlock(),e.createElementBlock("svg",ee,[...t[11]||(t[11]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):e.createCommentVNode("",!0)],2)],10,W))),128)),o.resourceIds?.length===0?(e.openBlock(),e.createElementBlock("p",te," ⚠️ Please select at least one resource ")):e.createCommentVNode("",!0)]))])])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Exception Type",-1)])]),_:1}),e.createElementVNode("div",oe,[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",o.isClosed?"bg-accent border-primary":""]),onClick:t[4]||(t[4]=l=>o.isClosed=!0)},[e.createElementVNode("div",ne,[e.createVNode(e.unref(m.BanIcon),{class:"h-5 w-5 text-destructive"})]),t[13]||(t[13]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium"},"Closed"),e.createElementVNode("div",{class:"text-sm text-muted-foreground"},"No appointments available during this period")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",o.isClosed?"border-primary bg-primary":"border-muted-foreground"])},[o.isClosed?(e.openBlock(),e.createElementBlock("div",le)):e.createCommentVNode("",!0)],2)],2),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",o.isClosed?"":"bg-accent border-primary"]),onClick:t[5]||(t[5]=l=>o.isClosed=!1)},[e.createElementVNode("div",ae,[e.createVNode(e.unref(m.Calendar),{class:"h-5 w-5 text-primary"})]),t[14]||(t[14]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium"},"Custom Hours"),e.createElementVNode("div",{class:"text-sm text-muted-foreground"},"Set specific time slots for this period")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",o.isClosed?"border-muted-foreground":"border-primary bg-primary"])},[o.isClosed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",se))],2)],2)])]),o.isClosed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",re,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode("Time Slots",-1)])]),_:1}),e.createVNode(U,{class:"p-4"},{default:e.withCtx(()=>[o.timeslots.length===0?(e.openBlock(),e.createElementBlock("div",de,' No time slots added. Click "Add Time Slot" to create one. ')):(e.openBlock(),e.createElementBlock("div",ce,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.timeslots,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:"flex items-center gap-2"},[e.createVNode(D,{class:"w-32",modelValue:l.startTime,"onUpdate:modelValue":b=>l.startTime=b,type:"time"},null,8,["modelValue","onUpdate:modelValue"]),t[16]||(t[16]=e.createElementVNode("span",{class:"text-muted-foreground"},"to",-1)),e.createVNode(D,{class:"w-32",modelValue:l.endTime,"onUpdate:modelValue":b=>l.endTime=b,type:"time"},null,8,["modelValue","onUpdate:modelValue"]),e.createVNode(f,{variant:"ghost",size:"icon",onClick:b=>I(l.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Trash2),{class:"size-4"})]),_:1},8,["onClick"])]))),128))])),e.createVNode(f,{onClick:h,variant:"outline",size:"sm",class:"w-full"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Plus),{class:"size-4 mr-1"}),t[17]||(t[17]=e.createTextVNode(" Add Time Slot ",-1))]),_:1})]),_:1})]))]),e.createVNode(d,{class:"gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",ie,[v.value==="edit"?(e.openBlock(),e.createBlock(f,{key:0,variant:"destructive",onClick:w},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode(" Remove Exception ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",ue,[e.createVNode(f,{variant:"outline",onClick:B},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),v.value==="add"?(e.openBlock(),e.createBlock(f,{key:0,onClick:y,disabled:!$.value},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode(" Add Exception ",-1)])]),_:1},8,["disabled"])):(e.openBlock(),e.createBlock(f,{key:1,onClick:E,disabled:!$.value},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode(" Update Exception ",-1)])]),_:1},8,["disabled"]))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),pe={class:"max-w-4xl space-y-6"},fe={key:0,class:"flex"},ve={key:1},xe={class:"space-y-3"},Ce={class:"flex items-start justify-between"},ke={class:"flex-1"},ge={class:"flex items-center gap-2 mb-1"},Ve={class:"font-medium"},Ne={key:0,class:"flex items-center gap-1.5 ml-6 mb-2"},ye=["title"],Ee={class:"text-sm text-muted-foreground ml-6"},be={key:0,class:"text-amber-600"},_e={key:1,class:"space-y-1"},$e={class:"flex flex-wrap gap-2"},Be={class:"flex gap-1"},he={key:4,class:"flex justify-end pt-4 border-t"},we=e.defineComponent({__name:"exceptions",setup(L){const N=new a.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"medium"}),{params:_}=j.useModuleRoute(),{config:x}=j.useModule(),k=j.useFirebaseIntegration(x.project),c=e.ref([]),i=e.ref([]),v=e.ref(!1),g=e.ref(!0),s=e.ref(),o=n=>!n.resourceIds||n.resourceIds.length===0?null:i.value.filter(t=>n.resourceIds?.includes(t.id)),p=async()=>{try{g.value=!0;const n=await k.get(x.agendaCollection,_.value.id);c.value=n.exceptions||[],i.value=(n.resources||[]).filter(t=>t.isActive)}catch(n){console.error("Error loading exceptions:",n)}finally{g.value=!1}},T=(n,t)=>{const r=a.$fae977aafc393c5c$export$6b862160d295c8e(n),C=a.$fae977aafc393c5c$export$6b862160d295c8e(t);return n===t?N.format(r.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())):`${N.format(r.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))} - ${N.format(C.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))}`},$=n=>{c.value.push(n),y()},S=n=>{const t=c.value.findIndex(r=>r.id===n.id);t!==-1&&(c.value[t]=n),y()},B=n=>{c.value=c.value.filter(t=>t.id!==n),y()},h=()=>{s.value?.openDialog()},I=n=>{s.value?.openDialog(n)},y=async()=>{v.value=!0,await k.update(x.agendaCollection,_.value.id,{exceptions:c.value}),v.value=!1},E=e.computed(()=>[...c.value].sort((n,t)=>n.startDate.localeCompare(t.startDate))),w=n=>{const t=a.$fae977aafc393c5c$export$6b862160d295c8e(n),r=a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2());return t.compare(r)<0};return p(),(n,t)=>{const r=e.resolveComponent("Button"),C=e.resolveComponent("Badge"),V=e.resolveComponent("Card"),f=e.resolveComponent("Spinner"),z=e.resolveComponent("EmptyMedia"),A=e.resolveComponent("EmptyTitle"),F=e.resolveComponent("EmptyDescription"),R=e.resolveComponent("EmptyHeader"),D=e.resolveComponent("EmptyContent"),U=e.resolveComponent("Empty");return e.openBlock(),e.createBlock(M._sfc_main,null,{default:e.withCtx(()=>[t[10]||(t[10]=e.createElementVNode("h1",{class:"text-lg font-medium mb-2"},"Exception Management",-1)),t[11]||(t[11]=e.createElementVNode("p",{class:"mb-6 text-muted-foreground text-sm"}," Create exceptions to override your regular schedule. You can close specific dates or set custom hours for special occasions. ",-1)),e.createElementVNode("div",pe,[E.value.length>0?(e.openBlock(),e.createElementBlock("div",fe,[e.createVNode(r,{onClick:h},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Plus),{class:"size-4 mr-1"}),t[0]||(t[0]=e.createTextVNode(" Add Exception ",-1))]),_:1})])):e.createCommentVNode("",!0),E.value.length>0?(e.openBlock(),e.createElementBlock("div",ve,[t[5]||(t[5]=e.createElementVNode("h2",{class:"text-base font-medium mb-3"},"Active Exceptions",-1)),e.createElementVNode("div",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,d=>(e.openBlock(),e.createBlock(V,{key:d.id,class:e.normalizeClass(["p-4",w(d.endDate)?"opacity-60":""])},{default:e.withCtx(()=>[e.createElementVNode("div",Ce,[e.createElementVNode("div",ke,[e.createElementVNode("div",ge,[d.isClosed?(e.openBlock(),e.createBlock(e.unref(m.BanIcon),{key:0,class:"h-4 w-4 text-destructive"})):(e.openBlock(),e.createBlock(e.unref(m.Calendar),{key:1,class:"h-4 w-4 text-primary"})),e.createElementVNode("h3",Ve,e.toDisplayString(T(d.startDate,d.endDate)),1),w(d.endDate)?(e.openBlock(),e.createBlock(C,{key:2,variant:"secondary",class:"text-xs"},{default:e.withCtx(()=>[...t[1]||(t[1]=[e.createTextVNode(" Past ",-1)])]),_:1})):e.createCommentVNode("",!0)]),i.value.length>0?(e.openBlock(),e.createElementBlock("div",Ne,[o(d)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(o(d),u=>(e.openBlock(),e.createElementBlock("div",{key:u.id,class:"size-5 rounded-full flex items-center justify-center text-white text-[10px] font-medium",style:e.normalizeStyle({backgroundColor:u.color||"#6b7280"}),title:u.name},e.toDisplayString(u.avatarLabel||u.name.charAt(0).toUpperCase()),13,ye))),128)):(e.openBlock(),e.createBlock(C,{key:1,variant:"outline",class:"text-xs"},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode(" All Resources ",-1)])]),_:1}))])):e.createCommentVNode("",!0),e.createElementVNode("div",Ee,[d.isClosed?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Closed - No appointments available ")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.timeslots.length===0?(e.openBlock(),e.createElementBlock("div",be," ⚠️ No time slots defined ")):(e.openBlock(),e.createElementBlock("div",_e,[t[3]||(t[3]=e.createElementVNode("div",{class:"font-medium text-foreground"},"Custom Hours:",-1)),e.createElementVNode("div",$e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.timeslots,(u,P)=>(e.openBlock(),e.createBlock(C,{key:P,variant:"outline",class:"font-mono text-xs"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.startTime)+" - "+e.toDisplayString(u.endTime),1)]),_:2},1024))),128))])]))],64))])]),e.createElementVNode("div",Be,[e.createVNode(r,{variant:"ghost",onClick:u=>I(d)},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode(" Edit ",-1)])]),_:1},8,["onClick"]),e.createVNode(r,{variant:"ghost",size:"icon",onClick:u=>B(d.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Trash2),{class:"size-4 text-destructive"})]),_:1},8,["onClick"])])])]),_:2},1032,["class"]))),128))])])):g.value?(e.openBlock(),e.createBlock(f,{key:2,class:"my-8 size-8"})):(e.openBlock(),e.createBlock(U,{key:3,class:"border border-dashed"},{default:e.withCtx(()=>[e.createVNode(R,null,{default:e.withCtx(()=>[e.createVNode(z,{variant:"icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.CalendarPlus))]),_:1}),e.createVNode(A,null,{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("No Exceptions Created",-1)])]),_:1}),e.createVNode(F,null,{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(' Your agenda runs smoothly without any exceptions. Click "Add Exception" to create one. ',-1)])]),_:1})]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[e.createVNode(r,{variant:"outline",size:"sm",onClick:h},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Add Exception ",-1)])]),_:1})]),_:1})]),_:1})),v.value?(e.openBlock(),e.createElementBlock("div",he,[...t[9]||(t[9]=[e.createElementVNode("span",null,"Saving...",-1)])])):e.createCommentVNode("",!0)]),e.createVNode(me,{ref_key:"exceptionDialogRef",ref:s,resources:i.value,onAddException:$,onUpdateException:S,onRemoveException:B},null,8,["resources"])]),_:1})}}});exports.default=we;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),M=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),a=require("./DateFormatter-ls6HfWpS.js"),m=require("lucide-vue-next"),j=require("@oneclick.dev/cms-kit"),H={class:"space-y-6 py-4"},O={key:0},q={class:"space-y-2"},J={class:"flex items-center justify-center w-8 h-8 rounded-full bg-muted"},Y={key:0,class:"w-full h-full rounded-full bg-white scale-50"},K={class:"flex items-center justify-center w-8 h-8 rounded-full bg-muted"},G={key:0,class:"w-full h-full rounded-full bg-white scale-50"},Q={key:0,class:"pl-4 pt-2 space-y-1"},W=["onClick"],X={class:"min-w-0 flex-1"},Z={class:"text-sm font-medium truncate"},ee={key:0,class:"w-3 h-3 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},te={key:0,class:"text-xs text-amber-600 mt-2"},oe={class:"space-y-3"},ne={class:"flex items-center justify-center w-10 h-10 rounded-full bg-destructive/10"},le={key:0,class:"w-full h-full rounded-full bg-white scale-50"},ae={class:"flex items-center justify-center w-10 h-10 rounded-full bg-primary/10"},se={key:0,class:"w-full h-full rounded-full bg-white scale-50"},re={key:1},de={key:0,class:"text-center py-6 text-muted-foreground text-sm"},ce={key:1,class:"space-y-2 mb-3"},ie={class:"w-full flex justify-between items-center"},ue={class:"flex items-center gap-2 ml-auto"},me=e.defineComponent({__name:"ExceptionDialog",props:{resources:{}},emits:["add-exception","update-exception","remove-exception"],setup(L,{expose:N,emit:_}){const x=new a.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"medium"}),k=L,c=_,i=e.ref(!1),v=e.ref("add"),g=e.ref(!1),s=e.ref({start:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),end:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())}),o=e.reactive({id:"",startDate:"",endDate:"",isClosed:!1,timeslots:[],resourceIds:null}),p=e.computed({get:()=>o.resourceIds===null,set:n=>{n?o.resourceIds=null:o.resourceIds=[]}}),T=n=>{if(o.resourceIds===null)o.resourceIds=[n];else{const t=o.resourceIds.indexOf(n);t===-1?o.resourceIds.push(n):o.resourceIds.splice(t,1)}},$=e.computed(()=>!(!s.value.start||o.resourceIds!==null&&o.resourceIds.length===0)),S=n=>{v.value=n?"edit":"add",n?(o.id=n.id,o.startDate=n.startDate,o.endDate=n.endDate,o.isClosed=n.isClosed,o.timeslots=JSON.parse(JSON.stringify(n.timeslots)),o.resourceIds=n.resourceIds?[...n.resourceIds]:null,s.value={start:a.$fae977aafc393c5c$export$6b862160d295c8e(n.startDate),end:a.$fae977aafc393c5c$export$6b862160d295c8e(n.endDate)}):(o.id="",o.startDate="",o.endDate="",o.isClosed=!1,o.timeslots=[],o.resourceIds=null,s.value={start:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),end:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())}),i.value=!0},B=()=>{i.value=!1},h=()=>{o.timeslots.push({id:Date.now(),startTime:"",endTime:""})},I=n=>{o.timeslots=o.timeslots.filter(t=>t.id!==n)},y=()=>{if(!s.value.start)return;const n=s.value.start.toString(),t=s.value.end?.toString()||n,r={id:Date.now().toString(),startDate:n,endDate:t,isClosed:o.isClosed,timeslots:o.isClosed?[]:[...o.timeslots],resourceIds:o.resourceIds};c("add-exception",r),i.value=!1},E=()=>{const n=s.value.start.toString(),t=s.value.end?.toString()||n,r={id:o.id,startDate:n,endDate:t,isClosed:o.isClosed,timeslots:o.isClosed?[]:[...o.timeslots],resourceIds:o.resourceIds};c("update-exception",r),i.value=!1},w=()=>{c("remove-exception",o.id),i.value=!1};return N({openDialog:S}),(n,t)=>{const r=e.resolveComponent("DialogTitle"),C=e.resolveComponent("DialogHeader"),V=e.resolveComponent("Label"),f=e.resolveComponent("Button"),z=e.resolveComponent("PopoverTrigger"),A=e.resolveComponent("RangeCalendar"),F=e.resolveComponent("PopoverContent"),R=e.resolveComponent("Popover"),D=e.resolveComponent("Input"),U=e.resolveComponent("Card"),d=e.resolveComponent("DialogFooter"),u=e.resolveComponent("DialogScrollContent"),P=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(P,{open:i.value,"onUpdate:open":t[6]||(t[6]=l=>i.value=l)},{default:e.withCtx(()=>[e.createVNode(u,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value==="add"?"Add Exception":"Edit Exception"),1)]),_:1})]),_:1}),e.createElementVNode("div",H,[e.createElementVNode("div",null,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Select Date or Date Range",-1)])]),_:1}),e.createVNode(R,{open:g.value,"onUpdate:open":t[1]||(t[1]=l=>g.value=l)},{default:e.withCtx(()=>[e.createVNode(z,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(f,{variant:"outline",class:"w-full justify-start text-left font-normal"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Calendar),{class:"mr-2 h-4 w-4"}),s.value.start?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value.end&&s.value.start.toString()!==s.value.end.toString()?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(x).format(s.value.start.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())))+" - "+e.toDisplayString(e.unref(x).format(s.value.end.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)()))),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(x).format(s.value.start.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)()))),1)],64))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Pick a date ")],64))]),_:1})]),_:1}),e.createVNode(F,{class:"w-auto p-0"},{default:e.withCtx(()=>[e.createVNode(A,{modelValue:s.value,"onUpdate:modelValue":t[0]||(t[0]=l=>s.value=l),"initial-focus":"","number-of-months":2,"min-value":e.unref(a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3)(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())},null,8,["modelValue","min-value"])]),_:1})]),_:1},8,["open"])]),k.resources&&k.resources.length>0?(e.openBlock(),e.createElementBlock("div",O,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Apply To",-1)])]),_:1}),e.createElementVNode("div",q,[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",p.value?"bg-accent border-primary":""]),onClick:t[2]||(t[2]=l=>p.value=!0)},[e.createElementVNode("div",J,[e.createVNode(e.unref(m.Users),{class:"h-4 w-4 text-muted-foreground"})]),t[9]||(t[9]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium text-sm"},"All Resources"),e.createElementVNode("div",{class:"text-xs text-muted-foreground"},"Exception applies to all resources")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",p.value?"border-primary bg-primary":"border-muted-foreground"])},[p.value?(e.openBlock(),e.createElementBlock("div",Y)):e.createCommentVNode("",!0)],2)],2),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",p.value?"":"bg-accent border-primary"]),onClick:t[3]||(t[3]=l=>p.value=!1)},[e.createElementVNode("div",K,[e.createVNode(e.unref(m.Users),{class:"h-4 w-4 text-muted-foreground"})]),t[10]||(t[10]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium text-sm"},"Specific Resources"),e.createElementVNode("div",{class:"text-xs text-muted-foreground"},"Select which resources this exception applies to")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",p.value?"border-muted-foreground":"border-primary bg-primary"])},[p.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",G))],2)],2),p.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.resources,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:e.normalizeClass(["flex items-center gap-2 p-2 rounded-md hover:bg-muted cursor-pointer transition-colors",{"bg-muted":o.resourceIds?.includes(l.id),"opacity-50":o.resourceIds&&o.resourceIds.length>0&&!o.resourceIds.includes(l.id)}]),onClick:b=>T(l.id)},[e.createElementVNode("div",{class:"size-6 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0",style:e.normalizeStyle({backgroundColor:l.color||"#6b7280"})},e.toDisplayString(l.avatarLabel||l.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",X,[e.createElementVNode("div",Z,e.toDisplayString(l.name),1)]),e.createElementVNode("div",{class:e.normalizeClass(["size-4 rounded border-2 flex items-center justify-center flex-shrink-0",o.resourceIds?.includes(l.id)?"border-primary bg-primary":"border-muted-foreground"])},[o.resourceIds?.includes(l.id)?(e.openBlock(),e.createElementBlock("svg",ee,[...t[11]||(t[11]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):e.createCommentVNode("",!0)],2)],10,W))),128)),o.resourceIds?.length===0?(e.openBlock(),e.createElementBlock("p",te," ⚠️ Please select at least one resource ")):e.createCommentVNode("",!0)]))])])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Exception Type",-1)])]),_:1}),e.createElementVNode("div",oe,[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",o.isClosed?"bg-accent border-primary":""]),onClick:t[4]||(t[4]=l=>o.isClosed=!0)},[e.createElementVNode("div",ne,[e.createVNode(e.unref(m.BanIcon),{class:"h-5 w-5 text-destructive"})]),t[13]||(t[13]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium"},"Closed"),e.createElementVNode("div",{class:"text-sm text-muted-foreground"},"No appointments available during this period")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",o.isClosed?"border-primary bg-primary":"border-muted-foreground"])},[o.isClosed?(e.openBlock(),e.createElementBlock("div",le)):e.createCommentVNode("",!0)],2)],2),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",o.isClosed?"":"bg-accent border-primary"]),onClick:t[5]||(t[5]=l=>o.isClosed=!1)},[e.createElementVNode("div",ae,[e.createVNode(e.unref(m.Calendar),{class:"h-5 w-5 text-primary"})]),t[14]||(t[14]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium"},"Custom Hours"),e.createElementVNode("div",{class:"text-sm text-muted-foreground"},"Set specific time slots for this period")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",o.isClosed?"border-muted-foreground":"border-primary bg-primary"])},[o.isClosed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",se))],2)],2)])]),o.isClosed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",re,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode("Time Slots",-1)])]),_:1}),e.createVNode(U,{class:"p-4"},{default:e.withCtx(()=>[o.timeslots.length===0?(e.openBlock(),e.createElementBlock("div",de,' No time slots added. Click "Add Time Slot" to create one. ')):(e.openBlock(),e.createElementBlock("div",ce,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.timeslots,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:"flex items-center gap-2"},[e.createVNode(D,{class:"w-32",modelValue:l.startTime,"onUpdate:modelValue":b=>l.startTime=b,type:"time"},null,8,["modelValue","onUpdate:modelValue"]),t[16]||(t[16]=e.createElementVNode("span",{class:"text-muted-foreground"},"to",-1)),e.createVNode(D,{class:"w-32",modelValue:l.endTime,"onUpdate:modelValue":b=>l.endTime=b,type:"time"},null,8,["modelValue","onUpdate:modelValue"]),e.createVNode(f,{variant:"ghost",size:"icon",onClick:b=>I(l.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Trash2),{class:"size-4"})]),_:1},8,["onClick"])]))),128))])),e.createVNode(f,{onClick:h,variant:"outline",size:"sm",class:"w-full"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Plus),{class:"size-4 mr-1"}),t[17]||(t[17]=e.createTextVNode(" Add Time Slot ",-1))]),_:1})]),_:1})]))]),e.createVNode(d,{class:"gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",ie,[v.value==="edit"?(e.openBlock(),e.createBlock(f,{key:0,variant:"destructive",onClick:w},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode(" Remove Exception ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",ue,[e.createVNode(f,{variant:"outline",onClick:B},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),v.value==="add"?(e.openBlock(),e.createBlock(f,{key:0,onClick:y,disabled:!$.value},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode(" Add Exception ",-1)])]),_:1},8,["disabled"])):(e.openBlock(),e.createBlock(f,{key:1,onClick:E,disabled:!$.value},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode(" Update Exception ",-1)])]),_:1},8,["disabled"]))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),pe={class:"max-w-4xl space-y-6"},fe={key:0,class:"flex"},ve={key:1},xe={class:"space-y-3"},Ce={class:"flex items-start justify-between"},ke={class:"flex-1"},ge={class:"flex items-center gap-2 mb-1"},Ve={class:"font-medium"},Ne={key:0,class:"flex items-center gap-1.5 ml-6 mb-2"},ye=["title"],Ee={class:"text-sm text-muted-foreground ml-6"},be={key:0,class:"text-amber-600"},_e={key:1,class:"space-y-1"},$e={class:"flex flex-wrap gap-2"},Be={class:"flex gap-1"},he={key:4,class:"flex justify-end pt-4 border-t"},we=e.defineComponent({__name:"exceptions",setup(L){const N=new a.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"medium"}),{params:_}=j.useModuleRoute(),{config:x}=j.useModule(),k=j.useFirebaseIntegration(x.project),c=e.ref([]),i=e.ref([]),v=e.ref(!1),g=e.ref(!0),s=e.ref(),o=n=>!n.resourceIds||n.resourceIds.length===0?null:i.value.filter(t=>n.resourceIds?.includes(t.id)),p=async()=>{try{g.value=!0;const n=await k.get(x.agendaCollection,_.value.id);c.value=n.exceptions||[],i.value=(n.resources||[]).filter(t=>t.isActive)}catch(n){console.error("Error loading exceptions:",n)}finally{g.value=!1}},T=(n,t)=>{const r=a.$fae977aafc393c5c$export$6b862160d295c8e(n),C=a.$fae977aafc393c5c$export$6b862160d295c8e(t);return n===t?N.format(r.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())):`${N.format(r.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))} - ${N.format(C.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))}`},$=n=>{c.value.push(n),y()},S=n=>{const t=c.value.findIndex(r=>r.id===n.id);t!==-1&&(c.value[t]=n),y()},B=n=>{c.value=c.value.filter(t=>t.id!==n),y()},h=()=>{s.value?.openDialog()},I=n=>{s.value?.openDialog(n)},y=async()=>{v.value=!0,await k.update(x.agendaCollection,_.value.id,{exceptions:c.value}),v.value=!1},E=e.computed(()=>[...c.value].sort((n,t)=>n.startDate.localeCompare(t.startDate))),w=n=>{const t=a.$fae977aafc393c5c$export$6b862160d295c8e(n),r=a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2());return t.compare(r)<0};return p(),(n,t)=>{const r=e.resolveComponent("Button"),C=e.resolveComponent("Badge"),V=e.resolveComponent("Card"),f=e.resolveComponent("Spinner"),z=e.resolveComponent("EmptyMedia"),A=e.resolveComponent("EmptyTitle"),F=e.resolveComponent("EmptyDescription"),R=e.resolveComponent("EmptyHeader"),D=e.resolveComponent("EmptyContent"),U=e.resolveComponent("Empty");return e.openBlock(),e.createBlock(M._sfc_main,null,{default:e.withCtx(()=>[t[10]||(t[10]=e.createElementVNode("h1",{class:"text-lg font-medium mb-2"},"Exception Management",-1)),t[11]||(t[11]=e.createElementVNode("p",{class:"mb-6 text-muted-foreground text-sm"}," Create exceptions to override your regular schedule. You can close specific dates or set custom hours for special occasions. ",-1)),e.createElementVNode("div",pe,[E.value.length>0?(e.openBlock(),e.createElementBlock("div",fe,[e.createVNode(r,{onClick:h},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Plus),{class:"size-4 mr-1"}),t[0]||(t[0]=e.createTextVNode(" Add Exception ",-1))]),_:1})])):e.createCommentVNode("",!0),E.value.length>0?(e.openBlock(),e.createElementBlock("div",ve,[t[5]||(t[5]=e.createElementVNode("h2",{class:"text-base font-medium mb-3"},"Active Exceptions",-1)),e.createElementVNode("div",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,d=>(e.openBlock(),e.createBlock(V,{key:d.id,class:e.normalizeClass(["p-4",w(d.endDate)?"opacity-60":""])},{default:e.withCtx(()=>[e.createElementVNode("div",Ce,[e.createElementVNode("div",ke,[e.createElementVNode("div",ge,[d.isClosed?(e.openBlock(),e.createBlock(e.unref(m.BanIcon),{key:0,class:"h-4 w-4 text-destructive"})):(e.openBlock(),e.createBlock(e.unref(m.Calendar),{key:1,class:"h-4 w-4 text-primary"})),e.createElementVNode("h3",Ve,e.toDisplayString(T(d.startDate,d.endDate)),1),w(d.endDate)?(e.openBlock(),e.createBlock(C,{key:2,variant:"secondary",class:"text-xs"},{default:e.withCtx(()=>[...t[1]||(t[1]=[e.createTextVNode(" Past ",-1)])]),_:1})):e.createCommentVNode("",!0)]),i.value.length>0?(e.openBlock(),e.createElementBlock("div",Ne,[o(d)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(o(d),u=>(e.openBlock(),e.createElementBlock("div",{key:u.id,class:"size-5 rounded-full flex items-center justify-center text-white text-[10px] font-medium",style:e.normalizeStyle({backgroundColor:u.color||"#6b7280"}),title:u.name},e.toDisplayString(u.avatarLabel||u.name.charAt(0).toUpperCase()),13,ye))),128)):(e.openBlock(),e.createBlock(C,{key:1,variant:"outline",class:"text-xs"},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode(" All Resources ",-1)])]),_:1}))])):e.createCommentVNode("",!0),e.createElementVNode("div",Ee,[d.isClosed?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Closed - No appointments available ")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.timeslots.length===0?(e.openBlock(),e.createElementBlock("div",be," ⚠️ No time slots defined ")):(e.openBlock(),e.createElementBlock("div",_e,[t[3]||(t[3]=e.createElementVNode("div",{class:"font-medium text-foreground"},"Custom Hours:",-1)),e.createElementVNode("div",$e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.timeslots,(u,P)=>(e.openBlock(),e.createBlock(C,{key:P,variant:"outline",class:"font-mono text-xs"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.startTime)+" - "+e.toDisplayString(u.endTime),1)]),_:2},1024))),128))])]))],64))])]),e.createElementVNode("div",Be,[e.createVNode(r,{variant:"ghost",onClick:u=>I(d)},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode(" Edit ",-1)])]),_:1},8,["onClick"]),e.createVNode(r,{variant:"ghost",size:"icon",onClick:u=>B(d.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Trash2),{class:"size-4 text-destructive"})]),_:1},8,["onClick"])])])]),_:2},1032,["class"]))),128))])])):g.value?(e.openBlock(),e.createBlock(f,{key:2,class:"my-8 size-8"})):(e.openBlock(),e.createBlock(U,{key:3,class:"border border-dashed"},{default:e.withCtx(()=>[e.createVNode(R,null,{default:e.withCtx(()=>[e.createVNode(z,{variant:"icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.CalendarPlus))]),_:1}),e.createVNode(A,null,{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("No Exceptions Created",-1)])]),_:1}),e.createVNode(F,null,{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(' Your agenda runs smoothly without any exceptions. Click "Add Exception" to create one. ',-1)])]),_:1})]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[e.createVNode(r,{variant:"outline",size:"sm",onClick:h},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Add Exception ",-1)])]),_:1})]),_:1})]),_:1})),v.value?(e.openBlock(),e.createElementBlock("div",he,[...t[9]||(t[9]=[e.createElementVNode("span",null,"Saving...",-1)])])):e.createCommentVNode("",!0)]),e.createVNode(me,{ref_key:"exceptionDialogRef",ref:s,resources:i.value,onAddException:$,onUpdateException:S,onRemoveException:B},null,8,["resources"])]),_:1})}}});exports.default=we;
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as ne, ref as E, reactive as ce, computed as te, resolveComponent as i, openBlock as l, createBlock as g, withCtx as a, createVNode as n, createTextVNode as u, toDisplayString as h, createElementVNode as o, unref as m, createElementBlock as r, Fragment as D, normalizeClass as k, createCommentVNode as v, renderList as B, normalizeStyle as ae } from "vue";
2
2
  import { _ as me } from "./EditLayout.vue_vue_type_script_setup_true_lang-CcysXzmW.mjs";
3
- import { h as re, o as U, g as b, v as N } from "./DateFormatter-DfIwyrnF.mjs";
3
+ import { h as re, o as U, g as b, v as N } from "./DateFormatter-CvOfaUnU.mjs";
4
4
  import { Calendar as se, Users as le, BanIcon as de, Trash2 as ie, Plus as ue, CalendarPlus as pe } from "lucide-vue-next";
5
5
  import { useModuleRoute as fe, useModule as ve, useFirebaseIntegration as ge } from "@oneclick.dev/cms-kit";
6
6
  const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-2" }, be = { class: "flex items-center justify-center w-8 h-8 rounded-full bg-muted" }, Ce = {
@@ -0,0 +1 @@
1
+ "use strict";const Bt=["top","right","bottom","left"],At=["start","end"],Ot=Bt.reduce((t,e)=>t.concat(e,e+"-"+At[0],e+"-"+At[1]),[]),V=Math.min,L=Math.max,it=Math.round,ot=Math.floor,X=t=>({x:t,y:t}),jt={left:"right",right:"left",bottom:"top",top:"bottom"};function mt(t,e,n){return L(t,V(e,n))}function _(t,e){return typeof t=="function"?t(e):t}function B(t){return t.split("-")[0]}function H(t){return t.split("-")[1]}function gt(t){return t==="x"?"y":"x"}function pt(t){return t==="y"?"height":"width"}function $(t){const e=t[0];return e==="t"||e==="b"?"y":"x"}function wt(t){return gt($(t))}function Wt(t,e,n){n===void 0&&(n=!1);const o=H(t),i=wt(t),s=pt(i);let r=i==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return e.reference[s]>e.floating[s]&&(r=rt(r)),[r,rt(r)]}function Ut(t){const e=rt(t);return[st(t),e,st(e)]}function st(t){return t.includes("start")?t.replace("start","end"):t.replace("end","start")}const Ct=["left","right"],St=["right","left"],qt=["top","bottom"],Kt=["bottom","top"];function Gt(t,e,n){switch(t){case"top":case"bottom":return n?e?St:Ct:e?Ct:St;case"left":case"right":return e?qt:Kt;default:return[]}}function Jt(t,e,n,o){const i=H(t);let s=Gt(B(t),n==="start",o);return i&&(s=s.map(r=>r+"-"+i),e&&(s=s.concat(s.map(st)))),s}function rt(t){const e=B(t);return jt[e]+t.slice(e.length)}function Qt(t){return{top:0,right:0,bottom:0,left:0,...t}}function xt(t){return typeof t!="number"?Qt(t):{top:t,right:t,bottom:t,left:t}}function Z(t){const{x:e,y:n,width:o,height:i}=t;return{width:o,height:i,top:n,left:e,right:e+o,bottom:n+i,x:e,y:n}}function Lt(t,e,n){let{reference:o,floating:i}=t;const s=$(e),r=wt(e),c=pt(r),a=B(e),d=s==="y",u=o.x+o.width/2-i.width/2,l=o.y+o.height/2-i.height/2,m=o[c]/2-i[c]/2;let f;switch(a){case"top":f={x:u,y:o.y-i.height};break;case"bottom":f={x:u,y:o.y+o.height};break;case"right":f={x:o.x+o.width,y:l};break;case"left":f={x:o.x-i.width,y:l};break;default:f={x:o.x,y:o.y}}switch(H(e)){case"start":f[r]-=m*(n&&d?-1:1);break;case"end":f[r]+=m*(n&&d?-1:1);break}return f}async function Zt(t,e){var n;e===void 0&&(e={});const{x:o,y:i,platform:s,rects:r,elements:c,strategy:a}=t,{boundary:d="clippingAncestors",rootBoundary:u="viewport",elementContext:l="floating",altBoundary:m=!1,padding:f=0}=_(e,t),h=xt(f),p=c[m?l==="floating"?"reference":"floating":l],w=Z(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(p)))==null||n?p:p.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(c.floating)),boundary:d,rootBoundary:u,strategy:a})),x=l==="floating"?{x:o,y:i,width:r.floating.width,height:r.floating.height}:r.reference,y=await(s.getOffsetParent==null?void 0:s.getOffsetParent(c.floating)),v=await(s.isElement==null?void 0:s.isElement(y))?await(s.getScale==null?void 0:s.getScale(y))||{x:1,y:1}:{x:1,y:1},R=Z(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:x,offsetParent:y,strategy:a}):x);return{top:(w.top-R.top+h.top)/v.y,bottom:(R.bottom-w.bottom+h.bottom)/v.y,left:(w.left-R.left+h.left)/v.x,right:(R.right-w.right+h.right)/v.x}}const te=50,ee=async(t,e,n)=>{const{placement:o="bottom",strategy:i="absolute",middleware:s=[],platform:r}=n,c=r.detectOverflow?r:{...r,detectOverflow:Zt},a=await(r.isRTL==null?void 0:r.isRTL(e));let d=await r.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:l}=Lt(d,o,a),m=o,f=0;const h={};for(let g=0;g<s.length;g++){const p=s[g];if(!p)continue;const{name:w,fn:x}=p,{x:y,y:v,data:R,reset:A}=await x({x:u,y:l,initialPlacement:o,placement:m,strategy:i,middlewareData:h,rects:d,platform:c,elements:{reference:t,floating:e}});u=y??u,l=v??l,h[w]={...h[w],...R},A&&f<te&&(f++,typeof A=="object"&&(A.placement&&(m=A.placement),A.rects&&(d=A.rects===!0?await r.getElementRects({reference:t,floating:e,strategy:i}):A.rects),{x:u,y:l}=Lt(d,m,a)),g=-1)}return{x:u,y:l,placement:m,strategy:i,middlewareData:h}},ne=t=>({name:"arrow",options:t,async fn(e){const{x:n,y:o,placement:i,rects:s,platform:r,elements:c,middlewareData:a}=e,{element:d,padding:u=0}=_(t,e)||{};if(d==null)return{};const l=xt(u),m={x:n,y:o},f=wt(i),h=pt(f),g=await r.getDimensions(d),p=f==="y",w=p?"top":"left",x=p?"bottom":"right",y=p?"clientHeight":"clientWidth",v=s.reference[h]+s.reference[f]-m[f]-s.floating[h],R=m[f]-s.reference[f],A=await(r.getOffsetParent==null?void 0:r.getOffsetParent(d));let O=A?A[y]:0;(!O||!await(r.isElement==null?void 0:r.isElement(A)))&&(O=c.floating[y]||s.floating[h]);const W=v/2-R/2,P=O/2-g[h]/2-1,b=V(l[w],P),C=V(l[x],P),T=b,E=O-g[h]-C,S=O/2-g[h]/2+W,N=mt(T,S,E),k=!a.arrow&&H(i)!=null&&S!==N&&s.reference[h]/2-(S<T?b:C)-g[h]/2<0,D=k?S<T?S-T:S-E:0;return{[f]:m[f]+D,data:{[f]:N,centerOffset:S-N-D,...k&&{alignmentOffset:D}},reset:k}}});function oe(t,e,n){return(t?[...n.filter(i=>H(i)===t),...n.filter(i=>H(i)!==t)]:n.filter(i=>B(i)===i)).filter(i=>t?H(i)===t||(e?st(i)!==i:!1):!0)}const ie=function(t){return t===void 0&&(t={}),{name:"autoPlacement",options:t,async fn(e){var n,o,i;const{rects:s,middlewareData:r,placement:c,platform:a,elements:d}=e,{crossAxis:u=!1,alignment:l,allowedPlacements:m=Ot,autoAlignment:f=!0,...h}=_(t,e),g=l!==void 0||m===Ot?oe(l||null,f,m):m,p=await a.detectOverflow(e,h),w=((n=r.autoPlacement)==null?void 0:n.index)||0,x=g[w];if(x==null)return{};const y=Wt(x,s,await(a.isRTL==null?void 0:a.isRTL(d.floating)));if(c!==x)return{reset:{placement:g[0]}};const v=[p[B(x)],p[y[0]],p[y[1]]],R=[...((o=r.autoPlacement)==null?void 0:o.overflows)||[],{placement:x,overflows:v}],A=g[w+1];if(A)return{data:{index:w+1,overflows:R},reset:{placement:A}};const O=R.map(b=>{const C=H(b.placement);return[b.placement,C&&u?b.overflows.slice(0,2).reduce((T,E)=>T+E,0):b.overflows[0],b.overflows]}).sort((b,C)=>b[1]-C[1]),P=((i=O.filter(b=>b[2].slice(0,H(b[0])?2:3).every(C=>C<=0))[0])==null?void 0:i[0])||O[0][0];return P!==c?{data:{index:w+1,overflows:R},reset:{placement:P}}:{}}}},se=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n,o;const{placement:i,middlewareData:s,rects:r,initialPlacement:c,platform:a,elements:d}=e,{mainAxis:u=!0,crossAxis:l=!0,fallbackPlacements:m,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:g=!0,...p}=_(t,e);if((n=s.arrow)!=null&&n.alignmentOffset)return{};const w=B(i),x=$(c),y=B(c)===c,v=await(a.isRTL==null?void 0:a.isRTL(d.floating)),R=m||(y||!g?[rt(c)]:Ut(c)),A=h!=="none";!m&&A&&R.push(...Jt(c,g,h,v));const O=[c,...R],W=await a.detectOverflow(e,p),P=[];let b=((o=s.flip)==null?void 0:o.overflows)||[];if(u&&P.push(W[w]),l){const S=Wt(i,r,v);P.push(W[S[0]],W[S[1]])}if(b=[...b,{placement:i,overflows:P}],!P.every(S=>S<=0)){var C,T;const S=(((C=s.flip)==null?void 0:C.index)||0)+1,N=O[S];if(N&&(!(l==="alignment"?x!==$(N):!1)||b.every(M=>$(M.placement)===x?M.overflows[0]>0:!0)))return{data:{index:S,overflows:b},reset:{placement:N}};let k=(T=b.filter(D=>D.overflows[0]<=0).sort((D,M)=>D.overflows[1]-M.overflows[1])[0])==null?void 0:T.placement;if(!k)switch(f){case"bestFit":{var E;const D=(E=b.filter(M=>{if(A){const U=$(M.placement);return U===x||U==="y"}return!0}).map(M=>[M.placement,M.overflows.filter(U=>U>0).reduce((U,Yt)=>U+Yt,0)]).sort((M,U)=>M[1]-U[1])[0])==null?void 0:E[0];D&&(k=D);break}case"initialPlacement":k=c;break}if(i!==k)return{reset:{placement:k}}}return{}}}};function Pt(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function Tt(t){return Bt.some(e=>t[e]>=0)}const re=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(e){const{rects:n,platform:o}=e,{strategy:i="referenceHidden",...s}=_(t,e);switch(i){case"referenceHidden":{const r=await o.detectOverflow(e,{...s,elementContext:"reference"}),c=Pt(r,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:Tt(c)}}}case"escaped":{const r=await o.detectOverflow(e,{...s,altBoundary:!0}),c=Pt(r,n.floating);return{data:{escapedOffsets:c,escaped:Tt(c)}}}default:return{}}}}};function kt(t){const e=V(...t.map(s=>s.left)),n=V(...t.map(s=>s.top)),o=L(...t.map(s=>s.right)),i=L(...t.map(s=>s.bottom));return{x:e,y:n,width:o-e,height:i-n}}function ce(t){const e=t.slice().sort((i,s)=>i.y-s.y),n=[];let o=null;for(let i=0;i<e.length;i++){const s=e[i];!o||s.y-o.y>o.height/2?n.push([s]):n[n.length-1].push(s),o=s}return n.map(i=>Z(kt(i)))}const le=function(t){return t===void 0&&(t={}),{name:"inline",options:t,async fn(e){const{placement:n,elements:o,rects:i,platform:s,strategy:r}=e,{padding:c=2,x:a,y:d}=_(t,e),u=Array.from(await(s.getClientRects==null?void 0:s.getClientRects(o.reference))||[]),l=ce(u),m=Z(kt(u)),f=xt(c);function h(){if(l.length===2&&l[0].left>l[1].right&&a!=null&&d!=null)return l.find(p=>a>p.left-f.left&&a<p.right+f.right&&d>p.top-f.top&&d<p.bottom+f.bottom)||m;if(l.length>=2){if($(n)==="y"){const b=l[0],C=l[l.length-1],T=B(n)==="top",E=b.top,S=C.bottom,N=T?b.left:C.left,k=T?b.right:C.right,D=k-N,M=S-E;return{top:E,bottom:S,left:N,right:k,width:D,height:M,x:N,y:E}}const p=B(n)==="left",w=L(...l.map(b=>b.right)),x=V(...l.map(b=>b.left)),y=l.filter(b=>p?b.left===x:b.right===w),v=y[0].top,R=y[y.length-1].bottom,A=x,O=w,W=O-A,P=R-v;return{top:v,bottom:R,left:A,right:O,width:W,height:P,x:A,y:v}}return m}const g=await s.getElementRects({reference:{getBoundingClientRect:h},floating:o.floating,strategy:r});return i.reference.x!==g.reference.x||i.reference.y!==g.reference.y||i.reference.width!==g.reference.width||i.reference.height!==g.reference.height?{reset:{rects:g}}:{}}}},Nt=new Set(["left","top"]);async function fe(t,e){const{placement:n,platform:o,elements:i}=t,s=await(o.isRTL==null?void 0:o.isRTL(i.floating)),r=B(n),c=H(n),a=$(n)==="y",d=Nt.has(r)?-1:1,u=s&&a?-1:1,l=_(e,t);let{mainAxis:m,crossAxis:f,alignmentAxis:h}=typeof l=="number"?{mainAxis:l,crossAxis:0,alignmentAxis:null}:{mainAxis:l.mainAxis||0,crossAxis:l.crossAxis||0,alignmentAxis:l.alignmentAxis};return c&&typeof h=="number"&&(f=c==="end"?h*-1:h),a?{x:f*u,y:m*d}:{x:m*d,y:f*u}}const ae=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var n,o;const{x:i,y:s,placement:r,middlewareData:c}=e,a=await fe(e,t);return r===((n=c.offset)==null?void 0:n.placement)&&(o=c.arrow)!=null&&o.alignmentOffset?{}:{x:i+a.x,y:s+a.y,data:{...a,placement:r}}}}},ue=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:o,placement:i,platform:s}=e,{mainAxis:r=!0,crossAxis:c=!1,limiter:a={fn:w=>{let{x,y}=w;return{x,y}}},...d}=_(t,e),u={x:n,y:o},l=await s.detectOverflow(e,d),m=$(B(i)),f=gt(m);let h=u[f],g=u[m];if(r){const w=f==="y"?"top":"left",x=f==="y"?"bottom":"right",y=h+l[w],v=h-l[x];h=mt(y,h,v)}if(c){const w=m==="y"?"top":"left",x=m==="y"?"bottom":"right",y=g+l[w],v=g-l[x];g=mt(y,g,v)}const p=a.fn({...e,[f]:h,[m]:g});return{...p,data:{x:p.x-n,y:p.y-o,enabled:{[f]:r,[m]:c}}}}}},de=function(t){return t===void 0&&(t={}),{options:t,fn(e){const{x:n,y:o,placement:i,rects:s,middlewareData:r}=e,{offset:c=0,mainAxis:a=!0,crossAxis:d=!0}=_(t,e),u={x:n,y:o},l=$(i),m=gt(l);let f=u[m],h=u[l];const g=_(c,e),p=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(a){const y=m==="y"?"height":"width",v=s.reference[m]-s.floating[y]+p.mainAxis,R=s.reference[m]+s.reference[y]-p.mainAxis;f<v?f=v:f>R&&(f=R)}if(d){var w,x;const y=m==="y"?"width":"height",v=Nt.has(B(i)),R=s.reference[l]-s.floating[y]+(v&&((w=r.offset)==null?void 0:w[l])||0)+(v?0:p.crossAxis),A=s.reference[l]+s.reference[y]+(v?0:((x=r.offset)==null?void 0:x[l])||0)-(v?p.crossAxis:0);h<R?h=R:h>A&&(h=A)}return{[m]:f,[l]:h}}}},me=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(e){var n,o;const{placement:i,rects:s,platform:r,elements:c}=e,{apply:a=()=>{},...d}=_(t,e),u=await r.detectOverflow(e,d),l=B(i),m=H(i),f=$(i)==="y",{width:h,height:g}=s.floating;let p,w;l==="top"||l==="bottom"?(p=l,w=m===(await(r.isRTL==null?void 0:r.isRTL(c.floating))?"start":"end")?"left":"right"):(w=l,p=m==="end"?"top":"bottom");const x=g-u.top-u.bottom,y=h-u.left-u.right,v=V(g-u[p],x),R=V(h-u[w],y),A=!e.middlewareData.shift;let O=v,W=R;if((n=e.middlewareData.shift)!=null&&n.enabled.x&&(W=y),(o=e.middlewareData.shift)!=null&&o.enabled.y&&(O=x),A&&!m){const b=L(u.left,0),C=L(u.right,0),T=L(u.top,0),E=L(u.bottom,0);f?W=h-2*(b!==0||C!==0?b+C:L(u.left,u.right)):O=g-2*(T!==0||E!==0?T+E:L(u.top,u.bottom))}await a({...e,availableWidth:W,availableHeight:O});const P=await r.getDimensions(c.floating);return h!==P.width||g!==P.height?{reset:{rects:!0}}:{}}}};function ct(){return typeof window<"u"}function J(t){return yt(t)?(t.nodeName||"").toLowerCase():"#document"}function F(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function Y(t){var e;return(e=(yt(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function yt(t){return ct()?t instanceof Node||t instanceof F(t).Node:!1}function z(t){return ct()?t instanceof Element||t instanceof F(t).Element:!1}function j(t){return ct()?t instanceof HTMLElement||t instanceof F(t).HTMLElement:!1}function Et(t){return!ct()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof F(t).ShadowRoot}function nt(t){const{overflow:e,overflowX:n,overflowY:o,display:i}=I(t);return/auto|scroll|overlay|hidden|clip/.test(e+o+n)&&i!=="inline"&&i!=="contents"}function he(t){return/^(table|td|th)$/.test(J(t))}function lt(t){try{if(t.matches(":popover-open"))return!0}catch{}try{return t.matches(":modal")}catch{return!1}}const ge=/transform|translate|scale|rotate|perspective|filter/,pe=/paint|layout|strict|content/,K=t=>!!t&&t!=="none";let ut;function vt(t){const e=z(t)?I(t):t;return K(e.transform)||K(e.translate)||K(e.scale)||K(e.rotate)||K(e.perspective)||!bt()&&(K(e.backdropFilter)||K(e.filter))||ge.test(e.willChange||"")||pe.test(e.contain||"")}function we(t){let e=q(t);for(;j(e)&&!tt(e);){if(vt(e))return e;if(lt(e))return null;e=q(e)}return null}function bt(){return ut==null&&(ut=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),ut}function tt(t){return/^(html|body|#document)$/.test(J(t))}function I(t){return F(t).getComputedStyle(t)}function ft(t){return z(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function q(t){if(J(t)==="html")return t;const e=t.assignedSlot||t.parentNode||Et(t)&&t.host||Y(t);return Et(e)?e.host:e}function $t(t){const e=q(t);return tt(e)?t.ownerDocument?t.ownerDocument.body:t.body:j(e)&&nt(e)?e:$t(e)}function et(t,e,n){var o;e===void 0&&(e=[]),n===void 0&&(n=!0);const i=$t(t),s=i===((o=t.ownerDocument)==null?void 0:o.body),r=F(i);if(s){const c=ht(r);return e.concat(r,r.visualViewport||[],nt(i)?i:[],c&&n?et(c):[])}else return e.concat(i,et(i,[],n))}function ht(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function Ht(t){const e=I(t);let n=parseFloat(e.width)||0,o=parseFloat(e.height)||0;const i=j(t),s=i?t.offsetWidth:n,r=i?t.offsetHeight:o,c=it(n)!==s||it(o)!==r;return c&&(n=s,o=r),{width:n,height:o,$:c}}function Rt(t){return z(t)?t:t.contextElement}function Q(t){const e=Rt(t);if(!j(e))return X(1);const n=e.getBoundingClientRect(),{width:o,height:i,$:s}=Ht(e);let r=(s?it(n.width):n.width)/o,c=(s?it(n.height):n.height)/i;return(!r||!Number.isFinite(r))&&(r=1),(!c||!Number.isFinite(c))&&(c=1),{x:r,y:c}}const xe=X(0);function Vt(t){const e=F(t);return!bt()||!e.visualViewport?xe:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function ye(t,e,n){return e===void 0&&(e=!1),!n||e&&n!==F(t)?!1:e}function G(t,e,n,o){e===void 0&&(e=!1),n===void 0&&(n=!1);const i=t.getBoundingClientRect(),s=Rt(t);let r=X(1);e&&(o?z(o)&&(r=Q(o)):r=Q(t));const c=ye(s,n,o)?Vt(s):X(0);let a=(i.left+c.x)/r.x,d=(i.top+c.y)/r.y,u=i.width/r.x,l=i.height/r.y;if(s){const m=F(s),f=o&&z(o)?F(o):o;let h=m,g=ht(h);for(;g&&o&&f!==h;){const p=Q(g),w=g.getBoundingClientRect(),x=I(g),y=w.left+(g.clientLeft+parseFloat(x.paddingLeft))*p.x,v=w.top+(g.clientTop+parseFloat(x.paddingTop))*p.y;a*=p.x,d*=p.y,u*=p.x,l*=p.y,a+=y,d+=v,h=F(g),g=ht(h)}}return Z({width:u,height:l,x:a,y:d})}function at(t,e){const n=ft(t).scrollLeft;return e?e.left+n:G(Y(t)).left+n}function _t(t,e){const n=t.getBoundingClientRect(),o=n.left+e.scrollLeft-at(t,n),i=n.top+e.scrollTop;return{x:o,y:i}}function ve(t){let{elements:e,rect:n,offsetParent:o,strategy:i}=t;const s=i==="fixed",r=Y(o),c=e?lt(e.floating):!1;if(o===r||c&&s)return n;let a={scrollLeft:0,scrollTop:0},d=X(1);const u=X(0),l=j(o);if((l||!l&&!s)&&((J(o)!=="body"||nt(r))&&(a=ft(o)),l)){const f=G(o);d=Q(o),u.x=f.x+o.clientLeft,u.y=f.y+o.clientTop}const m=r&&!l&&!s?_t(r,a):X(0);return{width:n.width*d.x,height:n.height*d.y,x:n.x*d.x-a.scrollLeft*d.x+u.x+m.x,y:n.y*d.y-a.scrollTop*d.y+u.y+m.y}}function be(t){return Array.from(t.getClientRects())}function Re(t){const e=Y(t),n=ft(t),o=t.ownerDocument.body,i=L(e.scrollWidth,e.clientWidth,o.scrollWidth,o.clientWidth),s=L(e.scrollHeight,e.clientHeight,o.scrollHeight,o.clientHeight);let r=-n.scrollLeft+at(t);const c=-n.scrollTop;return I(o).direction==="rtl"&&(r+=L(e.clientWidth,o.clientWidth)-i),{width:i,height:s,x:r,y:c}}const Dt=25;function Ae(t,e){const n=F(t),o=Y(t),i=n.visualViewport;let s=o.clientWidth,r=o.clientHeight,c=0,a=0;if(i){s=i.width,r=i.height;const u=bt();(!u||u&&e==="fixed")&&(c=i.offsetLeft,a=i.offsetTop)}const d=at(o);if(d<=0){const u=o.ownerDocument,l=u.body,m=getComputedStyle(l),f=u.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,h=Math.abs(o.clientWidth-l.clientWidth-f);h<=Dt&&(s-=h)}else d<=Dt&&(s+=d);return{width:s,height:r,x:c,y:a}}function Oe(t,e){const n=G(t,!0,e==="fixed"),o=n.top+t.clientTop,i=n.left+t.clientLeft,s=j(t)?Q(t):X(1),r=t.clientWidth*s.x,c=t.clientHeight*s.y,a=i*s.x,d=o*s.y;return{width:r,height:c,x:a,y:d}}function Mt(t,e,n){let o;if(e==="viewport")o=Ae(t,n);else if(e==="document")o=Re(Y(t));else if(z(e))o=Oe(e,n);else{const i=Vt(t);o={x:e.x-i.x,y:e.y-i.y,width:e.width,height:e.height}}return Z(o)}function zt(t,e){const n=q(t);return n===e||!z(n)||tt(n)?!1:I(n).position==="fixed"||zt(n,e)}function Ce(t,e){const n=e.get(t);if(n)return n;let o=et(t,[],!1).filter(c=>z(c)&&J(c)!=="body"),i=null;const s=I(t).position==="fixed";let r=s?q(t):t;for(;z(r)&&!tt(r);){const c=I(r),a=vt(r);!a&&c.position==="fixed"&&(i=null),(s?!a&&!i:!a&&c.position==="static"&&!!i&&(i.position==="absolute"||i.position==="fixed")||nt(r)&&!a&&zt(t,r))?o=o.filter(u=>u!==r):i=c,r=q(r)}return e.set(t,o),o}function Se(t){let{element:e,boundary:n,rootBoundary:o,strategy:i}=t;const r=[...n==="clippingAncestors"?lt(e)?[]:Ce(e,this._c):[].concat(n),o],c=Mt(e,r[0],i);let a=c.top,d=c.right,u=c.bottom,l=c.left;for(let m=1;m<r.length;m++){const f=Mt(e,r[m],i);a=L(f.top,a),d=V(f.right,d),u=V(f.bottom,u),l=L(f.left,l)}return{width:d-l,height:u-a,x:l,y:a}}function Le(t){const{width:e,height:n}=Ht(t);return{width:e,height:n}}function Pe(t,e,n){const o=j(e),i=Y(e),s=n==="fixed",r=G(t,!0,s,e);let c={scrollLeft:0,scrollTop:0};const a=X(0);function d(){a.x=at(i)}if(o||!o&&!s)if((J(e)!=="body"||nt(i))&&(c=ft(e)),o){const f=G(e,!0,s,e);a.x=f.x+e.clientLeft,a.y=f.y+e.clientTop}else i&&d();s&&!o&&i&&d();const u=i&&!o&&!s?_t(i,c):X(0),l=r.left+c.scrollLeft-a.x-u.x,m=r.top+c.scrollTop-a.y-u.y;return{x:l,y:m,width:r.width,height:r.height}}function dt(t){return I(t).position==="static"}function Ft(t,e){if(!j(t)||I(t).position==="fixed")return null;if(e)return e(t);let n=t.offsetParent;return Y(t)===n&&(n=n.ownerDocument.body),n}function It(t,e){const n=F(t);if(lt(t))return n;if(!j(t)){let i=q(t);for(;i&&!tt(i);){if(z(i)&&!dt(i))return i;i=q(i)}return n}let o=Ft(t,e);for(;o&&he(o)&&dt(o);)o=Ft(o,e);return o&&tt(o)&&dt(o)&&!vt(o)?n:o||we(t)||n}const Te=async function(t){const e=this.getOffsetParent||It,n=this.getDimensions,o=await n(t.floating);return{reference:Pe(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Ee(t){return I(t).direction==="rtl"}const De={convertOffsetParentRelativeRectToViewportRelativeRect:ve,getDocumentElement:Y,getClippingRect:Se,getOffsetParent:It,getElementRects:Te,getClientRects:be,getDimensions:Le,getScale:Q,isElement:z,isRTL:Ee};function Xt(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function Me(t,e){let n=null,o;const i=Y(t);function s(){var c;clearTimeout(o),(c=n)==null||c.disconnect(),n=null}function r(c,a){c===void 0&&(c=!1),a===void 0&&(a=1),s();const d=t.getBoundingClientRect(),{left:u,top:l,width:m,height:f}=d;if(c||e(),!m||!f)return;const h=ot(l),g=ot(i.clientWidth-(u+m)),p=ot(i.clientHeight-(l+f)),w=ot(u),y={rootMargin:-h+"px "+-g+"px "+-p+"px "+-w+"px",threshold:L(0,V(1,a))||1};let v=!0;function R(A){const O=A[0].intersectionRatio;if(O!==a){if(!v)return r();O?r(!1,O):o=setTimeout(()=>{r(!1,1e-7)},1e3)}O===1&&!Xt(d,t.getBoundingClientRect())&&r(),v=!1}try{n=new IntersectionObserver(R,{...y,root:i.ownerDocument})}catch{n=new IntersectionObserver(R,y)}n.observe(t)}return r(!0),s}function Fe(t,e,n,o){o===void 0&&(o={});const{ancestorScroll:i=!0,ancestorResize:s=!0,elementResize:r=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:a=!1}=o,d=Rt(t),u=i||s?[...d?et(d):[],...e?et(e):[]]:[];u.forEach(w=>{i&&w.addEventListener("scroll",n,{passive:!0}),s&&w.addEventListener("resize",n)});const l=d&&c?Me(d,n):null;let m=-1,f=null;r&&(f=new ResizeObserver(w=>{let[x]=w;x&&x.target===d&&f&&e&&(f.unobserve(e),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var y;(y=f)==null||y.observe(e)})),n()}),d&&!a&&f.observe(d),e&&f.observe(e));let h,g=a?G(t):null;a&&p();function p(){const w=G(t);g&&!Xt(g,w)&&n(),g=w,h=requestAnimationFrame(p)}return n(),()=>{var w;u.forEach(x=>{i&&x.removeEventListener("scroll",n),s&&x.removeEventListener("resize",n)}),l?.(),(w=f)==null||w.disconnect(),f=null,a&&cancelAnimationFrame(h)}}const Be=ae,We=ie,ke=ue,Ne=se,$e=me,He=re,Ve=ne,_e=le,ze=de,Ie=(t,e,n)=>{const o=new Map,i={platform:De,...n},s={...i.platform,_c:o};return ee(t,e,{...i,platform:s})};exports.arrow=Ve;exports.autoPlacement=We;exports.autoUpdate=Fe;exports.computePosition=Ie;exports.flip=Ne;exports.getNodeName=J;exports.hide=He;exports.inline=_e;exports.isNode=yt;exports.limitShift=ze;exports.offset=Be;exports.shift=ke;exports.size=$e;