@oneclick.dev/cms-core-modules 0.0.82 → 0.0.84

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 (68) hide show
  1. package/dist/{ContentEditor-Dk-iDEjl.mjs → ContentEditor-DPhhOkx3.mjs} +7085 -5936
  2. package/dist/{ContentEditor-4e80zFyn.js → ContentEditor-DrxtH_Hq.js} +42 -42
  3. package/dist/{Create-DtFzwxn_.mjs → Create-6uT9HWar.mjs} +35 -35
  4. package/dist/{Create-CRn2sMHp.js → Create-DuZ5nZrX.js} +1 -1
  5. package/dist/{DateFormatter-DfIwyrnF.mjs → DateFormatter-2B0R-DY4.mjs} +213 -406
  6. package/dist/DateFormatter-DbtOLV0L.js +1 -0
  7. package/dist/{Detail-Bxi7lG9x.js → Detail-BZ-iE9vf.js} +1 -1
  8. package/dist/{Detail-B4b_FLDa.mjs → Detail-C1Blq61w.mjs} +90 -90
  9. package/dist/{Detail-BayNaAg9.js → Detail-C8wQiDcv.js} +1 -1
  10. package/dist/{Detail-BwDnY42G.mjs → Detail-CJVMJDP7.mjs} +17 -17
  11. package/dist/{Detail-CnK-qbhE.js → Detail-CPqug27l.js} +1 -1
  12. package/dist/Detail-CjuhjPby.js +1 -0
  13. package/dist/{Detail-U0mgLKt6.mjs → Detail-CtItxMX4.mjs} +62 -63
  14. package/dist/{Detail-CVgWHbMC.mjs → Detail-Dnpnmy4-.mjs} +158 -158
  15. package/dist/{Entries-D7MHylQE.mjs → Entries-BkOPae4R.mjs} +49 -49
  16. package/dist/Entries-CcEW98F5.js +1 -0
  17. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-Ds7z0qeH.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-Bc946oSc.mjs} +1 -1
  18. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-C5YczjNb.js → NewReservationDialog.vue_vue_type_script_setup_true_lang-CqERfyYb.js} +1 -1
  19. package/dist/{Overview-CwCAeBnX.js → Overview-CA8wh_BI.js} +1 -1
  20. package/dist/{Overview-CgViRnNc.mjs → Overview-D4MFwRI_.mjs} +67 -68
  21. package/dist/{Overview-pCO_47Zt.js → Overview-Da0XexiT.js} +1 -1
  22. package/dist/Overview-DeQQ0FY3.js +1 -0
  23. package/dist/{Overview--XpvBbqz.mjs → Overview-DoOASlNz.mjs} +1 -3
  24. package/dist/{Overview-CuCQgqVp.mjs → Overview-gJSvftdE.mjs} +34 -34
  25. package/dist/{ReservationDetailDialog.vue_vue_type_script_setup_true_lang-B7ks5mbf.mjs → ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Cohhnd5x.mjs} +0 -1
  26. package/dist/{ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Vxubki_v.js → ReservationDetailDialog.vue_vue_type_script_setup_true_lang-VWVIxIr6.js} +1 -1
  27. package/dist/{SeoHealth-CC0rW1AG.mjs → SeoHealth-Bc5chnaa.mjs} +14 -14
  28. package/dist/{SeoHealth-EZzDmPDM.js → SeoHealth-BkpJ1F2Y.js} +1 -1
  29. package/dist/TableView-BPWAx--G.mjs +5743 -0
  30. package/dist/TableView-D63QrVlK.js +4 -0
  31. package/dist/View-BL70u98U.js +1 -0
  32. package/dist/{View-DDXN0tKD.mjs → View-BO5N911y.mjs} +5 -5
  33. package/dist/{agenda-XqvbrU72.mjs → agenda-C5grvzSa.mjs} +166 -169
  34. package/dist/agenda-DXMwVWpN.js +1 -0
  35. package/dist/{availability-B-tRp8hB.mjs → availability-C1NqOFsQ.mjs} +81 -81
  36. package/dist/{availability-BiBbzEIM.js → availability-D_wnfLsH.js} +1 -1
  37. package/dist/cms-core-modules.css +1 -1
  38. package/dist/{exceptions-CLgeeUSy.mjs → exceptions-BIwMhYa4.mjs} +1 -1
  39. package/dist/{exceptions-wEQEVzIs.js → exceptions-Cn7zooEu.js} +1 -1
  40. package/dist/{index-DTzdHh6g.js → index-C9pSS15N.js} +2 -2
  41. package/dist/{index-N0NoDEsI.mjs → index-MwjeLHPP.mjs} +3 -3
  42. package/dist/index.cjs.js +1 -1
  43. package/dist/index.mjs +50 -36
  44. package/dist/orders-CG1QUCN8.js +1 -0
  45. package/dist/orders-CeixEBcU.mjs +396 -0
  46. package/dist/server-handlers.cjs.js +1 -1
  47. package/dist/server-handlers.mjs +292 -256
  48. package/dist/src/contentManager/config.d.ts +28 -0
  49. package/dist/src/contentManager/index.d.ts +28 -0
  50. package/dist/src/contentManager/server.d.ts +7 -0
  51. package/dist/src/server-handlers.d.ts +1 -0
  52. package/package.json +2 -2
  53. package/dist/DateFormatter-C9qfmQnP.js +0 -1
  54. package/dist/Detail-BcboL7NF.js +0 -1
  55. package/dist/Entries-BPkZ7Jg5.js +0 -1
  56. package/dist/Overview-B-8TLLjh.js +0 -1
  57. package/dist/TableView-Ce8H65pL.js +0 -586
  58. package/dist/TableView-DRQvOW85.mjs +0 -89190
  59. package/dist/View-DfzaVOzS.js +0 -1
  60. package/dist/agenda-wNFDKn0G.js +0 -1
  61. package/dist/floating-ui.dom-BO2Hr6mz.mjs +0 -1292
  62. package/dist/floating-ui.dom-CAr9LGoC.js +0 -1
  63. package/dist/index-DYpruS-A-CA2jEOA3.js +0 -88
  64. package/dist/index-DYpruS-A-D38FBcI3.mjs +0 -4211
  65. package/dist/index-YMaY4uuk-BgpTtr73.js +0 -1
  66. package/dist/index-YMaY4uuk-C_xV5K9Z.mjs +0 -1300
  67. package/dist/orders-Bqa3Z3tH.mjs +0 -356
  68. package/dist/orders-D5GJOZXN.js +0 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),P=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),g=require("lucide-vue-next"),M=require("@oneclick.dev/cms-kit"),z={class:"space-y-6 py-4"},G={key:0},j={key:1},O={class:"flex items-center gap-3"},H={key:2,class:"grid gap-2"},W={class:"w-full flex justify-between items-center"},K={class:"flex items-center gap-2 ml-auto"},J=e.defineComponent({__name:"CustomerInformationFieldEditorDialog",emits:["add-field","update-field","remove-field"],setup(q,{expose:y,emit:f}){const v=f,s=e.ref(!1),n=e.ref("add"),l=e.reactive({id:"",fieldName:"",fieldDescription:"",fieldType:"text",required:!1,isNativeField:!1,visible:!0,options:[]}),b=[{value:"text",label:"Text Box"},{value:"checkbox",label:"Checkbox"},{value:"radio",label:"Radio Button"},{value:"select",label:"Select"}],N=o=>{n.value=o?"edit":"add",d.value=[],l.id=o?.id||"",l.fieldName=o?.fieldName||"",l.fieldDescription=o?.fieldDescription||"",l.fieldType=o?.fieldType||"text",l.required=o?.required||!1,l.isNativeField=o?.isNativeField||!1,l.options=o?.options||[],l.visible=o?.visible!==void 0?o.visible:!0,s.value=!0},T=()=>{s.value=!1,d.value=[]},_=()=>{k()&&(v("add-field",{...l}),s.value=!1)},I=()=>{k()&&(v("update-field",{...l}),s.value=!1)},F=()=>{v("remove-field",l.id),s.value=!1},d=e.ref([]),k=()=>(d.value=[],l.fieldName=l.fieldName.trim(),l.fieldName?!0:(d.value.push("Field name is required."),!1));return y({openDialog:N}),(o,t)=>{const r=e.resolveComponent("DialogTitle"),V=e.resolveComponent("DialogHeader"),m=e.resolveComponent("Label"),u=e.resolveComponent("Input"),B=e.resolveComponent("SelectValue"),E=e.resolveComponent("SelectTrigger"),x=e.resolveComponent("SelectItem"),S=e.resolveComponent("SelectContent"),h=e.resolveComponent("Select"),A=e.resolveComponent("TagsInputItemText"),C=e.resolveComponent("TagsInputItemDelete"),w=e.resolveComponent("TagsInputItem"),D=e.resolveComponent("TagsInputInput"),c=e.resolveComponent("TagsInput"),i=e.resolveComponent("Checkbox"),p=e.resolveComponent("Button"),L=e.resolveComponent("DialogFooter"),R=e.resolveComponent("DialogScrollContent"),$=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock($,{open:s.value,"onUpdate:open":t[5]||(t[5]=a=>s.value=a)},{default:e.withCtx(()=>[e.createVNode(R,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Customer Information",-1)])]),_:1})]),_:1}),e.createElementVNode("div",z,[e.createElementVNode("div",null,[e.createVNode(m,{class:"text-bsmase font-normal mb-1.5",for:"customer-info-field-dialog-fieldname"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Field Name",-1)])]),_:1}),e.createVNode(u,{modelValue:l.fieldName,"onUpdate:modelValue":t[0]||(t[0]=a=>l.fieldName=a),id:"customer-info-field-dialog-fieldname"},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(m,{class:"text-sm font-normal mb-1.5",for:"customer-info-field-dialog-field-description"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Field Description",-1)])]),_:1}),e.createVNode(u,{modelValue:l.fieldDescription,"onUpdate:modelValue":t[1]||(t[1]=a=>l.fieldDescription=a),id:"customer-info-field-dialog-field-description"},null,8,["modelValue"])]),l.isNativeField?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",G,[e.createVNode(m,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("Field Type",-1)])]),_:1}),e.createVNode(h,{modelValue:l.fieldType,"onUpdate:modelValue":t[2]||(t[2]=a=>l.fieldType=a)},{default:e.withCtx(()=>[e.createVNode(E,null,{default:e.withCtx(()=>[e.createVNode(B,{placeholder:"Select field type"})]),_:1}),e.createVNode(S,null,{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(b,a=>e.createVNode(x,{key:a.value,value:a.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.label),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])])),l.fieldType==="select"||l.fieldType==="radio"?(e.openBlock(),e.createElementBlock("div",j,[e.createVNode(m,{class:"text-sm font-normal mb-1.5",for:"customer-info-field-dialog-field-new-option"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode("Options",-1)])]),_:1}),e.createVNode(c,{modelValue:l.options,"onUpdate:modelValue":t[3]||(t[3]=a=>l.options=a)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.options,a=>(e.openBlock(),e.createBlock(w,{key:a,value:a},{default:e.withCtx(()=>[e.createVNode(A),e.createVNode(C)]),_:1},8,["value"]))),128)),e.createVNode(D,{placeholder:"New option...",id:"customer-info-field-dialog-field-new-option"})]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",O,[e.createVNode(i,{id:"customer-info-field-dialog-field-required",modelValue:l.required,"onUpdate:modelValue":t[4]||(t[4]=a=>l.required=a)},null,8,["modelValue"]),e.createVNode(m,{for:"customer-info-field-dialog-field-required",class:"text-base font-normal cursor-pointer"},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode(" Is this field mandatory? ",-1)])]),_:1})]),d.value.length>0?(e.openBlock(),e.createElementBlock("p",H,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(a,U)=>(e.openBlock(),e.createElementBlock("span",{key:U,class:"text-sm text-red-600 block"},e.toDisplayString(a),1))),128))])):e.createCommentVNode("",!0)]),e.createVNode(L,{class:"gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",W,[n.value==="edit"&&!l.isNativeField?(e.openBlock(),e.createBlock(p,{key:0,variant:"destructive",onClick:F},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode(" Remove Field ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",K,[e.createVNode(p,{variant:"outline",onClick:T},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),n.value==="add"?(e.openBlock(),e.createBlock(p,{key:0,onClick:_},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" Add Field ",-1)])]),_:1})):(e.openBlock(),e.createBlock(p,{key:1,onClick:I},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" Update Field ",-1)])]),_:1}))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),Q={key:0,class:"max-w-2xl"},X={key:0,class:"text-sm text-orange-500 mt-2"},Y={class:"space-y-3"},Z={class:"flex items-center justify-between rounded-lg border p-4 bg-card"},ee={class:"space-y-2"},te={class:"border rounded-md p-4 mb-4"},oe={class:"font-medium text-sm"},ne={class:"flex justify-start mt-8"},le=e.defineComponent({__name:"availability",setup(q){const{params:y}=M.useModuleRoute(),{config:f}=M.useModule(),v=M.useFirebaseIntegration(f.project),s=[{id:"firstName",fieldName:"First Name",fieldType:"text",required:!0,visible:!0,isNativeField:!0},{id:"lastName",fieldName:"Last Name",fieldType:"text",required:!0,visible:!0,isNativeField:!0},{id:"phone",fieldName:"Phone No",fieldType:"tel",required:!0,visible:!0,isNativeField:!0},{id:"email",fieldName:"Email",fieldType:"email",required:!0,visible:!0,isNativeField:!0}],n=e.reactive({minimumAdvanceNotice:{value:0,unit:"minutes"},serviceVisibility:60,maxTicketsPerReservation:"",customerInformationFields:[...s],needsApproval:!1}),l=e.ref(!1),b=e.ref(!0),N=e.ref(null),T=async()=>{l.value=!0;try{const o=y.value.id;if(!o)throw new Error("Missing agenda ID");await v.update(f.agendaCollection,o,{minimumAdvanceNotice:{value:Number(n.minimumAdvanceNotice?.value)||0,unit:n.minimumAdvanceNotice?.unit??"minutes"},serviceVisibility:Math.max(Number(n.serviceVisibility)||1,1),maxTicketsPerReservation:Math.max(Number(n.maxTicketsPerReservation)||0,0),customerInformationFields:n.customerInformationFields??[],needsApproval:n.needsApproval||!1})}catch(o){console.error("Error saving changes:",o)}finally{l.value=!1}},_=async o=>{delete o.isNativeField,o.fieldType!=="radio"&&o.fieldType!=="select"&&delete o.options;let t=Math.random().toString(36).substr(2,9);for(;n.customerInformationFields.find(r=>r.id===t);)t=Math.random().toString(36).substr(2,9);n.customerInformationFields.push({...o,id:t})},I=async o=>{o.isNativeField||delete o.isNativeField,o.fieldType!=="radio"&&o.fieldType!=="select"&&delete o.options;const t=n.customerInformationFields.findIndex(r=>r.id===o.id);t!==-1&&(n.customerInformationFields[t]={...o})},F=async o=>{n.customerInformationFields=n.customerInformationFields.filter(t=>t.id!==o)},d=async()=>{try{const o=await v.get(f.agendaCollection,y.value.id);o&&(console.log("Loaded agenda data:",o),n.minimumAdvanceNotice=o.minimumAdvanceNotice||{value:0,unit:"minutes"},n.serviceVisibility=o.serviceVisibility||60,n.maxTicketsPerReservation=Number(o.maxTicketsPerReservation)&&o.maxTicketsPerReservation>0?parseInt(o.maxTicketsPerReservation):"",n.customerInformationFields=o.customerInformationFields||[...s],n.needsApproval=o.needsApproval||!1)}catch(o){console.error("Error loading agenda data:",o)}finally{b.value=!1}},k=()=>{let o=Math.abs(n.minimumAdvanceNotice.value),t=n.minimumAdvanceNotice.unit;return o===1?(t.endsWith("s")&&(t=t.slice(0,-1)),`Lead time is negative. Bookings remain open for 1 ${t} after the slot has started.`):`Lead time is negative. Bookings remain open for ${o} ${t} after the slot has started.`};return d(),(o,t)=>{const r=e.resolveComponent("Label"),V=e.resolveComponent("InputGroupInput"),m=e.resolveComponent("Search"),u=e.resolveComponent("InputGroupAddon"),B=e.resolveComponent("SelectValue"),E=e.resolveComponent("SelectTrigger"),x=e.resolveComponent("SelectItem"),S=e.resolveComponent("SelectGroup"),h=e.resolveComponent("SelectContent"),A=e.resolveComponent("Select"),C=e.resolveComponent("InputGroup"),w=e.resolveComponent("Badge"),D=e.resolveComponent("Switch"),c=e.resolveComponent("Button");return e.openBlock(),e.createBlock(P._sfc_main,null,{default:e.withCtx(()=>[t[31]||(t[31]=e.createElementVNode("h1",{class:"text-lg font-medium mb-8"},"Availability Settings",-1)),b.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Q,[e.createElementVNode("div",null,[e.createVNode(r,{for:"lead-time",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Minimum Advance Notice - Lead Time (Optional) ",-1)])]),_:1}),e.createVNode(C,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(V,{placeholder:"0",id:"lead-time",modelValue:n.minimumAdvanceNotice.value,"onUpdate:modelValue":t[0]||(t[0]=i=>n.minimumAdvanceNotice.value=i),modelModifiers:{value:!0},type:"number",class:"no-spinner"},null,8,["modelValue"]),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(m)]),_:1}),e.createVNode(u,{align:"inline-end"},{default:e.withCtx(()=>[e.createVNode(A,{modelValue:n.minimumAdvanceNotice.unit,"onUpdate:modelValue":t[1]||(t[1]=i=>n.minimumAdvanceNotice.unit=i)},{default:e.withCtx(()=>[e.createVNode(E,{class:"w-[180px] border-0 bg-transparent -mr-1.5"},{default:e.withCtx(()=>[e.createVNode(B)]),_:1}),e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(S,null,{default:e.withCtx(()=>[e.createVNode(x,{value:"minutes"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Minutes ",-1)])]),_:1}),e.createVNode(x,{value:"hours"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode(" Hours ",-1)])]),_:1}),e.createVNode(x,{value:"days"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode(" Days ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t[11]||(t[11]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how far in advance a customer must book your slot. ",-1)),n.minimumAdvanceNotice.value<0?(e.openBlock(),e.createElementBlock("p",X,e.toDisplayString(k()),1)):e.createCommentVNode("",!0)]),t[27]||(t[27]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(r,{for:"service-visibility",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode(" Service Visibility ",-1)])]),_:1}),e.createVNode(C,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(V,{id:"service-visibility",modelValue:n.serviceVisibility,"onUpdate:modelValue":t[2]||(t[2]=i=>n.serviceVisibility=i),modelModifiers:{number:!0},placeholder:"1",type:"number",class:"no-spinner",min:"1",onBlur:t[3]||(t[3]=i=>n.serviceVisibility=Math.max(n.serviceVisibility,1))},null,8,["modelValue"]),e.createVNode(u,{align:"inline-end"},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode(" days ",-1)])]),_:1})]),_:1}),t[14]||(t[14]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how many days in advance the service is visible to customers. ",-1))]),t[28]||(t[28]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(r,{for:"max-capacity",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" Maximum Tickets Per Booking ",-1)])]),_:1}),e.createVNode(C,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(V,{placeholder:"∞",type:"number",id:"max-capacity",class:"no-spinner",min:"1",modelValue:n.maxTicketsPerReservation,"onUpdate:modelValue":t[4]||(t[4]=i=>n.maxTicketsPerReservation=i),modelModifiers:{number:!0}},null,8,["modelValue"]),e.createVNode(u,{align:"inline-end"},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode(" spots ",-1)])]),_:1})]),_:1}),t[17]||(t[17]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Limit how many spots a customer can book in a single reservation. ",-1))]),t[29]||(t[29]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",Y,[e.createElementVNode("div",null,[e.createVNode(r,{class:"text-base font-medium"},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode("Booking Approval",-1)])]),_:1}),t[19]||(t[19]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"}," Choose whether you want to confirm booking requests manually or accept them automatically. ",-1))]),e.createElementVNode("div",Z,[e.createElementVNode("div",ee,[e.createVNode(r,{class:"text-sm font-semibold"},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode("Enable Manual Approval",-1)])]),_:1}),t[23]||(t[23]=e.createElementVNode("p",{class:"text-xs text-muted-foreground max-w-[300px]"}," When enabled, you must approve bookings within your dashboard before they are finalized. ",-1)),n.needsApproval?(e.openBlock(),e.createBlock(w,{key:0},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode("Status: Manual Review",-1)])]),_:1})):(e.openBlock(),e.createBlock(w,{key:1,variant:"secondary"},{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("Status: Auto-Confirm",-1)])]),_:1}))]),e.createVNode(D,{modelValue:n.needsApproval,"onUpdate:modelValue":t[5]||(t[5]=i=>n.needsApproval=i)},null,8,["modelValue"])])]),t[30]||(t[30]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(r,{class:"text-base font-medium"},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode(" Customer Information (Optional) ",-1)])]),_:1}),t[26]||(t[26]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-2"}," Collect additional details about your customer. ",-1)),e.createElementVNode("div",te,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.customerInformationFields,i=>(e.openBlock(),e.createElementBlock("div",{key:i.id,class:"flex items-center justify-between hover:bg-input/50 px-2 rounded"},[e.createElementVNode("div",null,[e.createElementVNode("p",oe,e.toDisplayString(i.fieldName),1)]),e.createElementVNode("div",null,[e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>N.value.openDialog(i),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Pencil),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>i.visible=!i.visible,class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[i.visible?(e.openBlock(),e.createBlock(e.unref(g.Eye),{key:0,class:"size-4"})):(e.openBlock(),e.createBlock(e.unref(g.EyeOff),{key:1,class:"size-4"}))]),_:2},1032,["onClick"]),e.createVNode(c,{variant:"ghost",size:"icon",disabled:i.isNativeField,onClick:p=>n.customerInformationFields=n.customerInformationFields.filter(L=>L.id!==i.id),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Trash2),{class:"size-4"})]),_:1},8,["disabled","onClick"])])]))),128)),e.createVNode(c,{variant:"outline",class:"mt-4",onClick:t[6]||(t[6]=i=>N.value.openDialog())},{default:e.withCtx(()=>[e.createVNode(e.unref(g.PlusCircle),{class:"size-4"}),t[25]||(t[25]=e.createTextVNode(" Add New Field ",-1))]),_:1})]),e.createVNode(J,{ref_key:"customerInfoFieldDialog",ref:N,onAddField:_,onUpdateField:I,onRemoveField:F},null,512)]),e.createElementVNode("div",ne,[e.createVNode(c,{onClick:T,disabled:l.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.value?"Saving...":"Save Changes"),1)]),_:1},8,["disabled"])])]))]),_:1})}}});exports.default=le;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),P=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),g=require("lucide-vue-next"),M=require("@oneclick.dev/cms-kit"),z={class:"space-y-6 py-4"},G={key:0},j={key:1},O={class:"flex items-center gap-3"},H={key:2,class:"grid gap-2"},W={class:"w-full flex justify-between items-center"},K={class:"flex items-center gap-2 ml-auto"},J=e.defineComponent({__name:"CustomerInformationFieldEditorDialog",emits:["add-field","update-field","remove-field"],setup(q,{expose:y,emit:f}){const v=f,s=e.ref(!1),n=e.ref("add"),l=e.reactive({id:"",fieldName:"",fieldDescription:"",fieldType:"text",required:!1,isNativeField:!1,visible:!0,options:[]}),b=[{value:"text",label:"Text Box"},{value:"checkbox",label:"Checkbox"},{value:"radio",label:"Radio Button"},{value:"select",label:"Select"}],N=o=>{n.value=o?"edit":"add",d.value=[],l.id=o?.id||"",l.fieldName=o?.fieldName||"",l.fieldDescription=o?.fieldDescription||"",l.fieldType=o?.fieldType||"text",l.required=o?.required||!1,l.isNativeField=o?.isNativeField||!1,l.options=o?.options||[],l.visible=o?.visible!==void 0?o.visible:!0,s.value=!0},T=()=>{s.value=!1,d.value=[]},_=()=>{k()&&(v("add-field",{...l}),s.value=!1)},I=()=>{k()&&(v("update-field",{...l}),s.value=!1)},F=()=>{v("remove-field",l.id),s.value=!1},d=e.ref([]),k=()=>(d.value=[],l.fieldName=l.fieldName.trim(),l.fieldName?!0:(d.value.push("Field name is required."),!1));return y({openDialog:N}),(o,t)=>{const r=e.resolveComponent("DialogTitle"),V=e.resolveComponent("DialogHeader"),m=e.resolveComponent("Label"),u=e.resolveComponent("Input"),B=e.resolveComponent("SelectValue"),E=e.resolveComponent("SelectTrigger"),x=e.resolveComponent("SelectItem"),S=e.resolveComponent("SelectContent"),h=e.resolveComponent("Select"),A=e.resolveComponent("TagsInputItemText"),C=e.resolveComponent("TagsInputItemDelete"),w=e.resolveComponent("TagsInputItem"),D=e.resolveComponent("TagsInputInput"),c=e.resolveComponent("TagsInput"),i=e.resolveComponent("Checkbox"),p=e.resolveComponent("Button"),L=e.resolveComponent("DialogFooter"),R=e.resolveComponent("DialogScrollContent"),$=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock($,{open:s.value,"onUpdate:open":t[5]||(t[5]=a=>s.value=a)},{default:e.withCtx(()=>[e.createVNode(R,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Customer Information",-1)])]),_:1})]),_:1}),e.createElementVNode("div",z,[e.createElementVNode("div",null,[e.createVNode(m,{class:"text-bsmase font-normal mb-1.5",for:"customer-info-field-dialog-fieldname"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Field Name",-1)])]),_:1}),e.createVNode(u,{modelValue:l.fieldName,"onUpdate:modelValue":t[0]||(t[0]=a=>l.fieldName=a),id:"customer-info-field-dialog-fieldname"},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(m,{class:"text-sm font-normal mb-1.5",for:"customer-info-field-dialog-field-description"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Field Description",-1)])]),_:1}),e.createVNode(u,{modelValue:l.fieldDescription,"onUpdate:modelValue":t[1]||(t[1]=a=>l.fieldDescription=a),id:"customer-info-field-dialog-field-description"},null,8,["modelValue"])]),l.isNativeField?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",G,[e.createVNode(m,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("Field Type",-1)])]),_:1}),e.createVNode(h,{modelValue:l.fieldType,"onUpdate:modelValue":t[2]||(t[2]=a=>l.fieldType=a)},{default:e.withCtx(()=>[e.createVNode(E,null,{default:e.withCtx(()=>[e.createVNode(B,{placeholder:"Select field type"})]),_:1}),e.createVNode(S,null,{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(b,a=>e.createVNode(x,{key:a.value,value:a.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.label),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])])),l.fieldType==="select"||l.fieldType==="radio"?(e.openBlock(),e.createElementBlock("div",j,[e.createVNode(m,{class:"text-sm font-normal mb-1.5",for:"customer-info-field-dialog-field-new-option"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode("Options",-1)])]),_:1}),e.createVNode(c,{modelValue:l.options,"onUpdate:modelValue":t[3]||(t[3]=a=>l.options=a)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.options,a=>(e.openBlock(),e.createBlock(w,{key:a,value:a},{default:e.withCtx(()=>[e.createVNode(A),e.createVNode(C)]),_:1},8,["value"]))),128)),e.createVNode(D,{placeholder:"New option...",id:"customer-info-field-dialog-field-new-option"})]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",O,[e.createVNode(i,{id:"customer-info-field-dialog-field-required",modelValue:l.required,"onUpdate:modelValue":t[4]||(t[4]=a=>l.required=a)},null,8,["modelValue"]),e.createVNode(m,{for:"customer-info-field-dialog-field-required",class:"text-base font-normal cursor-pointer"},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode(" Is this field mandatory? ",-1)])]),_:1})]),d.value.length>0?(e.openBlock(),e.createElementBlock("p",H,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(a,U)=>(e.openBlock(),e.createElementBlock("span",{key:U,class:"text-sm text-red-600 block"},e.toDisplayString(a),1))),128))])):e.createCommentVNode("",!0)]),e.createVNode(L,{class:"gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",W,[n.value==="edit"&&!l.isNativeField?(e.openBlock(),e.createBlock(p,{key:0,variant:"destructive",onClick:F},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode(" Remove Field ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",K,[e.createVNode(p,{variant:"outline",onClick:T},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),n.value==="add"?(e.openBlock(),e.createBlock(p,{key:0,onClick:_},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" Add Field ",-1)])]),_:1})):(e.openBlock(),e.createBlock(p,{key:1,onClick:I},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" Update Field ",-1)])]),_:1}))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),Q={key:0,class:"max-w-2xl"},X={key:0,class:"text-sm text-orange-500 mt-2"},Y={class:"space-y-3"},Z={class:"flex items-center justify-between rounded-lg border p-4 bg-card"},ee={class:"space-y-2"},te={class:"border rounded-md p-4 mb-4"},oe={class:"font-medium text-sm"},ne={class:"flex justify-start mt-8"},le=e.defineComponent({__name:"availability",setup(q){const{params:y}=M.useModuleRoute(),{config:f}=M.useModule(),v=M.useFirebaseIntegration(f.project),s=[{id:"firstName",fieldName:"First Name",fieldType:"text",required:!0,visible:!0,isNativeField:!0},{id:"lastName",fieldName:"Last Name",fieldType:"text",required:!0,visible:!0,isNativeField:!0},{id:"phone",fieldName:"Phone No",fieldType:"tel",required:!0,visible:!0,isNativeField:!0},{id:"email",fieldName:"Email",fieldType:"email",required:!0,visible:!0,isNativeField:!0}],n=e.reactive({minimumAdvanceNotice:{value:0,unit:"minutes"},serviceVisibility:60,maxTicketsPerReservation:"",customerInformationFields:[...s],needsApproval:!1}),l=e.ref(!1),b=e.ref(!0),N=e.ref(null),T=async()=>{l.value=!0;try{const o=y.value.id;if(!o)throw new Error("Missing agenda ID");await v.update(f.agendaCollection,o,{minimumAdvanceNotice:{value:Number(n.minimumAdvanceNotice?.value)||0,unit:n.minimumAdvanceNotice?.unit??"minutes"},serviceVisibility:Math.max(Number(n.serviceVisibility)||1,1),maxTicketsPerReservation:Math.max(Number(n.maxTicketsPerReservation)||0,0),customerInformationFields:n.customerInformationFields??[],needsApproval:n.needsApproval||!1})}catch(o){console.error("Error saving changes:",o)}finally{l.value=!1}},_=async o=>{delete o.isNativeField,o.fieldType!=="radio"&&o.fieldType!=="select"&&delete o.options;let t=Math.random().toString(36).substr(2,9);for(;n.customerInformationFields.find(r=>r.id===t);)t=Math.random().toString(36).substr(2,9);n.customerInformationFields.push({...o,id:t})},I=async o=>{o.isNativeField||delete o.isNativeField,o.fieldType!=="radio"&&o.fieldType!=="select"&&delete o.options;const t=n.customerInformationFields.findIndex(r=>r.id===o.id);t!==-1&&(n.customerInformationFields[t]={...o})},F=async o=>{n.customerInformationFields=n.customerInformationFields.filter(t=>t.id!==o)},d=async()=>{try{const o=await v.get(f.agendaCollection,y.value.id);o&&(n.minimumAdvanceNotice=o.minimumAdvanceNotice||{value:0,unit:"minutes"},n.serviceVisibility=o.serviceVisibility||60,n.maxTicketsPerReservation=Number(o.maxTicketsPerReservation)&&o.maxTicketsPerReservation>0?parseInt(o.maxTicketsPerReservation):"",n.customerInformationFields=o.customerInformationFields||[...s],n.needsApproval=o.needsApproval||!1)}catch(o){console.error("Error loading agenda data:",o)}finally{b.value=!1}},k=()=>{let o=Math.abs(n.minimumAdvanceNotice.value),t=n.minimumAdvanceNotice.unit;return o===1?(t.endsWith("s")&&(t=t.slice(0,-1)),`Lead time is negative. Bookings remain open for 1 ${t} after the slot has started.`):`Lead time is negative. Bookings remain open for ${o} ${t} after the slot has started.`};return d(),(o,t)=>{const r=e.resolveComponent("Label"),V=e.resolveComponent("InputGroupInput"),m=e.resolveComponent("Search"),u=e.resolveComponent("InputGroupAddon"),B=e.resolveComponent("SelectValue"),E=e.resolveComponent("SelectTrigger"),x=e.resolveComponent("SelectItem"),S=e.resolveComponent("SelectGroup"),h=e.resolveComponent("SelectContent"),A=e.resolveComponent("Select"),C=e.resolveComponent("InputGroup"),w=e.resolveComponent("Badge"),D=e.resolveComponent("Switch"),c=e.resolveComponent("Button");return e.openBlock(),e.createBlock(P._sfc_main,null,{default:e.withCtx(()=>[t[31]||(t[31]=e.createElementVNode("h1",{class:"text-lg font-medium mb-8"},"Availability Settings",-1)),b.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Q,[e.createElementVNode("div",null,[e.createVNode(r,{for:"lead-time",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Minimum Advance Notice - Lead Time (Optional) ",-1)])]),_:1}),e.createVNode(C,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(V,{placeholder:"0",id:"lead-time",modelValue:n.minimumAdvanceNotice.value,"onUpdate:modelValue":t[0]||(t[0]=i=>n.minimumAdvanceNotice.value=i),modelModifiers:{value:!0},type:"number",class:"no-spinner"},null,8,["modelValue"]),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(m)]),_:1}),e.createVNode(u,{align:"inline-end"},{default:e.withCtx(()=>[e.createVNode(A,{modelValue:n.minimumAdvanceNotice.unit,"onUpdate:modelValue":t[1]||(t[1]=i=>n.minimumAdvanceNotice.unit=i)},{default:e.withCtx(()=>[e.createVNode(E,{class:"w-[180px] border-0 bg-transparent -mr-1.5"},{default:e.withCtx(()=>[e.createVNode(B)]),_:1}),e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(S,null,{default:e.withCtx(()=>[e.createVNode(x,{value:"minutes"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Minutes ",-1)])]),_:1}),e.createVNode(x,{value:"hours"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode(" Hours ",-1)])]),_:1}),e.createVNode(x,{value:"days"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode(" Days ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t[11]||(t[11]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how far in advance a customer must book your slot. ",-1)),n.minimumAdvanceNotice.value<0?(e.openBlock(),e.createElementBlock("p",X,e.toDisplayString(k()),1)):e.createCommentVNode("",!0)]),t[27]||(t[27]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(r,{for:"service-visibility",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode(" Service Visibility ",-1)])]),_:1}),e.createVNode(C,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(V,{id:"service-visibility",modelValue:n.serviceVisibility,"onUpdate:modelValue":t[2]||(t[2]=i=>n.serviceVisibility=i),modelModifiers:{number:!0},placeholder:"1",type:"number",class:"no-spinner",min:"1",onBlur:t[3]||(t[3]=i=>n.serviceVisibility=Math.max(n.serviceVisibility,1))},null,8,["modelValue"]),e.createVNode(u,{align:"inline-end"},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode(" days ",-1)])]),_:1})]),_:1}),t[14]||(t[14]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how many days in advance the service is visible to customers. ",-1))]),t[28]||(t[28]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(r,{for:"max-capacity",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" Maximum Tickets Per Booking ",-1)])]),_:1}),e.createVNode(C,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(V,{placeholder:"∞",type:"number",id:"max-capacity",class:"no-spinner",min:"1",modelValue:n.maxTicketsPerReservation,"onUpdate:modelValue":t[4]||(t[4]=i=>n.maxTicketsPerReservation=i),modelModifiers:{number:!0}},null,8,["modelValue"]),e.createVNode(u,{align:"inline-end"},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode(" spots ",-1)])]),_:1})]),_:1}),t[17]||(t[17]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Limit how many spots a customer can book in a single reservation. ",-1))]),t[29]||(t[29]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",Y,[e.createElementVNode("div",null,[e.createVNode(r,{class:"text-base font-medium"},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode("Booking Approval",-1)])]),_:1}),t[19]||(t[19]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"}," Choose whether you want to confirm booking requests manually or accept them automatically. ",-1))]),e.createElementVNode("div",Z,[e.createElementVNode("div",ee,[e.createVNode(r,{class:"text-sm font-semibold"},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode("Enable Manual Approval",-1)])]),_:1}),t[23]||(t[23]=e.createElementVNode("p",{class:"text-xs text-muted-foreground max-w-[300px]"}," When enabled, you must approve bookings within your dashboard before they are finalized. ",-1)),n.needsApproval?(e.openBlock(),e.createBlock(w,{key:0},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode("Status: Manual Review",-1)])]),_:1})):(e.openBlock(),e.createBlock(w,{key:1,variant:"secondary"},{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("Status: Auto-Confirm",-1)])]),_:1}))]),e.createVNode(D,{modelValue:n.needsApproval,"onUpdate:modelValue":t[5]||(t[5]=i=>n.needsApproval=i)},null,8,["modelValue"])])]),t[30]||(t[30]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(r,{class:"text-base font-medium"},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode(" Customer Information (Optional) ",-1)])]),_:1}),t[26]||(t[26]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-2"}," Collect additional details about your customer. ",-1)),e.createElementVNode("div",te,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.customerInformationFields,i=>(e.openBlock(),e.createElementBlock("div",{key:i.id,class:"flex items-center justify-between hover:bg-input/50 px-2 rounded"},[e.createElementVNode("div",null,[e.createElementVNode("p",oe,e.toDisplayString(i.fieldName),1)]),e.createElementVNode("div",null,[e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>N.value.openDialog(i),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Pencil),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>i.visible=!i.visible,class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[i.visible?(e.openBlock(),e.createBlock(e.unref(g.Eye),{key:0,class:"size-4"})):(e.openBlock(),e.createBlock(e.unref(g.EyeOff),{key:1,class:"size-4"}))]),_:2},1032,["onClick"]),e.createVNode(c,{variant:"ghost",size:"icon",disabled:i.isNativeField,onClick:p=>n.customerInformationFields=n.customerInformationFields.filter(L=>L.id!==i.id),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Trash2),{class:"size-4"})]),_:1},8,["disabled","onClick"])])]))),128)),e.createVNode(c,{variant:"outline",class:"mt-4",onClick:t[6]||(t[6]=i=>N.value.openDialog())},{default:e.withCtx(()=>[e.createVNode(e.unref(g.PlusCircle),{class:"size-4"}),t[25]||(t[25]=e.createTextVNode(" Add New Field ",-1))]),_:1})]),e.createVNode(J,{ref_key:"customerInfoFieldDialog",ref:N,onAddField:_,onUpdateField:I,onRemoveField:F},null,512)]),e.createElementVNode("div",ne,[e.createVNode(c,{onClick:T,disabled:l.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.value?"Saving...":"Save Changes"),1)]),_:1},8,["disabled"])])]))]),_:1})}}});exports.default=le;
@@ -1 +1 @@
1
- .vue-grid-item[data-v-99aff433]{transition:all .2s ease;transition-property:left,top,right}.vue-grid-item.no-touch[data-v-99aff433]{touch-action:none}.vue-grid-item.cssTransforms[data-v-99aff433]{transition-property:transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl[data-v-99aff433]{left:auto;right:0}.vue-grid-item.resizing[data-v-99aff433]{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging[data-v-99aff433]{transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder[data-v-99aff433]{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle[data-v-99aff433]{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=);background-position:bottom right;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle[data-v-99aff433]{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);background-position:bottom left;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect[data-v-99aff433]{-webkit-user-select:none;user-select:none}.vue-grid-layout[data-v-a10aee95]{position:relative;transition:height .2s ease}.dark #custom-module-wrapper::-webkit-scrollbar-thumb{background:#d8d8d8}#custom-module-wrapper::-webkit-scrollbar{width:5px;height:5px}#custom-module-wrapper::-webkit-scrollbar-track{background:transparent}#custom-module-wrapper::-webkit-scrollbar-thumb{background:#494949;border-radius:5px}#custom-module-wrapper .bg-grid{background-image:repeating-linear-gradient(to right,var(--primary) 0,var(--primary) 1px,transparent 1px,transparent calc(100% / 12)),repeating-linear-gradient(to bottom,var(--primary) 0,var(--primary) 1px,transparent 1px,transparent 8px);background-size:100% 100%}#custom-module-wrapper .vue-grid-item.vue-resizable:hover .vue-resizable-handle{display:block}#custom-module-wrapper .vue-grid-item.vue-resizable .vue-resizable-handle{display:none;background:var(--color-muted);border-radius:100px;width:12px;height:12px;right:-6px;bottom:-6px;border:2px solid var(--primary)}.transparent-emoji-picker.emoji-mart{border-width:0;background-color:transparent}.transparent-emoji-picker.emoji-mart .emoji-mart-search input{color:var(--muted-foreground)}.transparent-emoji-picker.emoji-mart .emoji-mart-scroll{padding:0}.transparent-emoji-picker.emoji-mart .emoji-mart-category-label h3{background-color:var(--accent);color:var(--muted-foreground);margin:.5rem 0;border-radius:.5rem}.transparent-emoji-picker.emoji-mart .emoji-mart-category .emoji-mart-emoji:hover:before,.transparent-emoji-picker.emoji-mart .emoji-mart-emoji-selected:before{background-color:var(--muted)}.tiptap-details{position:relative;display:flex;gap:.5rem;border:1px solid #7f7f7f76;border-radius:.5rem;padding:.5rem}.tiptap-details summary{font-weight:700;padding-top:.25rem}.tiptap-details summary::marker{content:""}.tiptap-details .tiptap-details__toggle{align-items:center;background:transparent;border-radius:4px;display:flex;font-size:.8rem;width:2rem;height:2rem;justify-content:center;line-height:1;padding:0;cursor:pointer}.tiptap-details .tiptap-details__toggle:hover{background-color:#7f7f7f48}.tiptap-details .tiptap-details__toggle:before{content:"▶"}.tiptap-details[data-open=true]>button:before{transform:rotate(90deg)}.tiptap-details .tiptap-details__inner{display:flex;flex-direction:column;gap:1rem;width:100%}.tiptap-details .tiptap-details__inner>[data-type=detailsContent]>:last-child{margin-bottom:.5rem}.tiptap-details .details{margin:.5rem 0}.tiptap-details [data-type=detailsContent]{display:none}.tiptap-details[data-open=true] [data-type=detailsContent]{display:block}.grid-cols-24[data-v-6e0addf0]{grid-template-columns:repeat(24,minmax(0,1fr))}.tiptap-component-editor.has-focus[data-v-a5a2678a]{box-shadow:0 0 0 2px var(--ring)}.tiptap-component-editor.has-focus .OVERLAY[data-v-a5a2678a]{opacity:1}.tiptap-component-editor.has-focus .NODE-VIEW[data-v-a5a2678a]{z-index:999999}.OVERLAY[data-v-a5a2678a]{opacity:0}.tiptap-resizable-wrapper.editable[data-v-ebadee9c]:not(.-no-interaction):hover,.has-focus[data-v-ebadee9c]{outline:2px solid var(--section-ui-tint);display:flex;flex-direction:column;min-height:16px}.tiptap-resizable-wrapper.has-focus .tiptap-resizable[data-v-ebadee9c]{border-color:var(--section-ui-tint)}.tiptap-resizable-wrapper.-resizing .editor_space-value[data-v-ebadee9c]{opacity:1}.tiptap-resizable-wrapper:hover .tiptap-resizable[data-v-ebadee9c]:before,.tiptap-resizable-wrapper.-resizing .tiptap-resizable[data-v-ebadee9c]:before{opacity:.3}.tiptap-resizable[data-v-ebadee9c]{position:relative;display:flex;align-items:center;justify-content:center;border:1px dashed rgba(0,0,0,.4);border-radius:8px;transition:border-color .15s ease;height:100%}.tiptap-resizable[data-v-ebadee9c]:before{display:block;content:"";background-clip:content-box;background-image:linear-gradient(-45deg,var(--section-ui-tint) 10%,transparent 10%,transparent 50%,var(--section-ui-tint) 50%,var(--section-ui-tint) 60%,transparent 60%,transparent 100%);background-size:7.07px 7.07px;position:absolute;inset:0;opacity:0;border-radius:8px;transition:opacity .3s}.editor_space-handle[data-v-ebadee9c]{align-items:center;background-color:var(--section-ui-tint);border-radius:2px;cursor:ns-resize;flex-shrink:0;display:flex;height:1px;outline:1px solid var(--section-ui-tint-foreground);position:relative;touch-action:none;transition:opacity .3s;width:12px;z-index:1}.editor_space-handle[data-v-ebadee9c]:before{content:"";display:block;inset:-16px -32px;position:absolute}.editor_space-value[data-v-ebadee9c]{align-items:center;background-color:var(--section-ui-tint);border-radius:99px;color:var(--section-ui-tint-foreground);display:flex;font-size:12px;font-weight:600;gap:4px;left:50%;line-height:1;margin-left:16px;padding:4px 6px;pointer-events:auto;position:absolute;transition:opacity .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:9;opacity:0}.custom-thin-scrollbar[data-v-df549e59]{scrollbar-width:thin;scrollbar-color:var(--input) transparent}.tiptap-container-padding-resizer[data-v-bdccc71a]{position:relative;display:flex;align-items:center;justify-content:center;min-height:16px}.tiptap-container-padding-resizer.-resizing .editor_space-value[data-v-bdccc71a]{opacity:1}.tiptap-container-padding-resizer[data-v-bdccc71a]:before{display:block;content:"";background-clip:content-box;background-image:linear-gradient(-45deg,var(--section-ui-tint) 10%,transparent 10%,transparent 50%,var(--section-ui-tint) 50%,var(--section-ui-tint) 60%,transparent 60%,transparent 100%);background-size:7.07px 7.07px;position:absolute;inset:0;opacity:0;border-radius:8px;transition:opacity .3s}.tiptap-container-padding-resizer.-hovering-dragger[data-v-bdccc71a]:before,.tiptap-container-padding-resizer.-resizing[data-v-bdccc71a]:before{opacity:.3!important}.editor_space-handle[data-v-bdccc71a]{align-items:center;background-color:var(--section-ui-tint);border-radius:2px;cursor:ns-resize;flex-shrink:0;display:flex;height:1px;outline:1px solid var(--section-ui-tint-foreground);position:relative;touch-action:none;transition:opacity .3s;width:12px;z-index:1}.editor_space-handle[data-v-bdccc71a]:before{content:"";display:block;inset:-16px -32px;position:absolute}.editor_space-value[data-v-bdccc71a]{align-items:center;background-color:var(--section-ui-tint);border-radius:99px;color:var(--section-ui-tint-foreground);display:flex;font-size:12px;font-weight:600;gap:4px;left:50%;line-height:1;margin-left:16px;padding:4px 6px;pointer-events:auto;position:absolute;transition:opacity .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:9;opacity:0}.tiptap-top-margin-resizable[data-v-1f4d74d2]{display:flex;align-items:center;justify-content:center;min-height:4px;opacity:0}.tiptap-top-margin-resizable.-resizing .editor_space-handle[data-v-1f4d74d2]:after,.tiptap-top-margin-resizable.-hovering-dragger .editor_space-handle[data-v-1f4d74d2]:after{width:85px}.tiptap-top-margin-resizable.-resizing .editor_space-value[data-v-1f4d74d2],.tiptap-top-margin-resizable.-hovering-dragger .editor_space-value[data-v-1f4d74d2]{opacity:1}.tiptap-top-margin-resizable[data-v-1f4d74d2]:before{display:block;content:"";background-clip:content-box;background-image:linear-gradient(-45deg,var(--section-ui-tint) 10%,transparent 10%,transparent 50%,var(--section-ui-tint) 50%,var(--section-ui-tint) 60%,transparent 60%,transparent 100%);background-size:7.07px 7.07px;position:absolute;inset:0;opacity:0;border-radius:8px;transition:opacity .3s}.tiptap-top-margin-resizable.-hovering-dragger[data-v-1f4d74d2]:before,.tiptap-top-margin-resizable.-resizing[data-v-1f4d74d2]:before{opacity:.3!important}.editor_space-handle[data-v-1f4d74d2]{align-items:center;background-color:var(--section-ui-tint);border-radius:2px;cursor:ns-resize;flex-shrink:0;display:flex;height:1px;outline:1px solid var(--section-ui-tint-foreground);position:relative;touch-action:none;transition:opacity .3s;width:12px;z-index:1}.editor_space-handle[data-v-1f4d74d2]:before{content:"";display:block;inset:-16px -32px;position:absolute}.editor_space-handle[data-v-1f4d74d2]:after{content:"";position:absolute;display:block;width:0px;height:20px;left:0;z-index:0}.editor_space-value[data-v-1f4d74d2]{align-items:center;background-color:var(--section-ui-tint);border-radius:99px;color:var(--section-ui-tint-foreground);display:flex;font-size:12px;font-weight:600;gap:4px;left:50%;line-height:1;margin-left:16px;padding:4px 6px;pointer-events:auto;position:absolute;transition:opacity .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:9;opacity:0;pointer-events:none}.editor_space-value button[data-v-1f4d74d2]{color:var(--section-ui-tint-foreground)}.tiptap.ProseMirror-focused .tiptap-top-margin-resizable{opacity:1}.tiptap-row.editable[data-v-42bc5875]:not(.-no-interaction):hover,.has-focus[data-v-42bc5875]{outline:2px solid var(--section-ui-tint)}.tiptap-stack.editable[data-v-853bffab]:not(.-no-interaction):hover,.has-focus[data-v-853bffab]{outline:2px solid var(--section-ui-tint)}.tiptap-column.editable[data-v-dae9c290]:not(.-no-interaction):hover,.has-focus[data-v-dae9c290]{outline:2px solid var(--section-ui-tint);outline-offset:2px}.resize-handle[data-v-256b2801]{opacity:0}.resize-handle[data-v-256b2801]:after{content:"";position:absolute;left:-8px;top:-5px;width:calc(100% + 16px);height:calc(100% + 10px)}.tiptap.ProseMirror-focused .resize-handle{opacity:1}.tiptap-card.editable[data-v-6a5c3b11]:not(.-no-interaction):hover,.has-focus[data-v-6a5c3b11]{outline:2px solid var(--section-ui-tint)}.tiptap-button.editable[data-v-b8032cfa]:not(.-no-interaction):hover,.has-focus[data-v-b8032cfa]{outline:2px solid var(--section-ui-tint)}.has-focus[data-v-4c86f2c2]{outline:2px solid var(--section-ui-tint);outline-offset:2px}.tiptap-image.editable[data-v-f6aafacd]:not(.-no-interaction):hover,.has-focus[data-v-f6aafacd]{outline:2px solid var(--section-ui-tint)}.tiptap-video.editable[data-v-18248eb5]:not(.-no-interaction):hover,.has-focus[data-v-18248eb5]{outline:2px solid var(--section-ui-tint);outline-offset:2px}.tiptap-heading.editable[data-v-23246135]:not(.-no-interaction):hover,.has-focus[data-v-23246135]{outline:2px solid var(--section-ui-tint)}.tiptap-heading h1 div:focus-visible,.tiptap-heading h2 div:focus-visible,.tiptap-heading h3 div:focus-visible,.tiptap-heading h4 div:focus-visible,.tiptap-heading h5 div:focus-visible,.tiptap-heading h6 div:focus-visible{outline:none}.tiptap-paragraph.editable[data-v-2d65c69e]:not(.-no-interaction):hover,.has-focus[data-v-2d65c69e]{outline:2px solid var(--section-ui-tint)}.tiptap-divider.editable[data-v-b00d2b7c]:not(.-no-interaction):hover,.has-focus[data-v-b00d2b7c]{outline:2px solid var(--section-ui-tint)}.tiptap-details.editable[data-v-03b585d8]:not(.-no-interaction):hover,.has-focus[data-v-03b585d8]{outline:2px solid var(--section-ui-tint);outline-offset:2px}#content-manager-editor-element-editor-menu>div[data-v-f7e5ab7e]{scrollbar-width:thin;scrollbar-color:var(--input) transparent}#content-manager-content-editor .ProseMirror{flex:1;outline:none;transition:background-color .2s ease-in-out;padding:0;--section-ui-tint: #29a1fe;--section-ui-tint-foreground: white}#content-manager-content-editor .ProseMirror::selection :not(.NODE-VIEW){background:#000000ae;color:var(--primary-foreground)}#content-manager-content-editor .ProseMirror p.is-empty:before{color:#adb5bd;content:attr(data-placeholder);float:left;height:0;pointer-events:none}#content-manager-content-editor .ProseMirror p{margin:0 0 .25rem}#content-manager-content-editor .ProseMirror h1,#content-manager-content-editor .ProseMirror h2,#content-manager-content-editor .ProseMirror h3{margin:1rem 0 .5rem;font-weight:700}#content-manager-content-editor .ProseMirror ul,#content-manager-content-editor .ProseMirror ol{margin:0 0 .5rem;padding-left:1.25rem}#content-manager-content-editor .ProseMirror ul li,#content-manager-content-editor .ProseMirror ol li{padding-left:.25rem}#content-manager-content-editor .ProseMirror ol{list-style:decimal}#content-manager-content-editor .ProseMirror ul{list-style:disc}#content-manager-content-editor .ProseMirror a{pointer-events:none}.dark #content-manager-content-editor .ProseMirror::selection :not(.NODE-VIEW){background:#fffd;color:#000}.dark #content-manager-content-editor .ProseMirror p.is-empty:before{color:#868686}.custom-drop-cursor{border:2px solid var(--primary);height:1em}.collaboration-carets__caret{position:relative;display:inline-block;width:.5px;height:1em;border-width:2px;border-style:solid;transform:translateY(.1em)}.collaboration-carets__label{position:absolute;padding:4px 8px 2px;border-radius:5px;transform:translateY(-100%);white-space:nowrap}[data-is-resizing-ew=true],[data-is-resizing-ew=true] *{cursor:ew-resize!important;-webkit-user-select:none!important;user-select:none!important}[data-is-grabbing=true],[data-is-grabbing=true] *{cursor:grabbing!important}[data-is-grabbing=true] [data-node-view-content]>*{pointer-events:none}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container [data-node-view-wrapper]:not(.tiptap-node--dragged){pointer-events:none}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container [data-node-view-wrapper]:not(.tiptap-node--dragged) *{pointer-events:none}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container .tiptap-node--dragged,.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container .tiptap-node--dragged *{pointer-events:auto!important}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container .tiptap-node--dragged{opacity:.3;transition:opacity .2s ease}.tiptap-drag-ghost{pointer-events:none!important;-webkit-user-select:none;user-select:none}@keyframes pulse-subtle-99339cf2{0%,to{opacity:1}50%{opacity:.7}}.animate-pulse-subtle[data-v-99339cf2]{animation:pulse-subtle-99339cf2 2s ease-in-out infinite}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar{height:8px}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar-track{background:hsl(var(--muted));border-radius:4px}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar-thumb{background:hsl(var(--primary) / .3);border-radius:4px;transition:background .2s}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar-thumb:hover{background:hsl(var(--primary) / .5)}
1
+ .vue-grid-item[data-v-99aff433]{transition:all .2s ease;transition-property:left,top,right}.vue-grid-item.no-touch[data-v-99aff433]{touch-action:none}.vue-grid-item.cssTransforms[data-v-99aff433]{transition-property:transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl[data-v-99aff433]{left:auto;right:0}.vue-grid-item.resizing[data-v-99aff433]{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging[data-v-99aff433]{transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder[data-v-99aff433]{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle[data-v-99aff433]{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=);background-position:bottom right;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle[data-v-99aff433]{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);background-position:bottom left;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect[data-v-99aff433]{-webkit-user-select:none;user-select:none}.vue-grid-layout[data-v-a10aee95]{position:relative;transition:height .2s ease}.dark #custom-module-wrapper::-webkit-scrollbar-thumb{background:#d8d8d8}#custom-module-wrapper::-webkit-scrollbar{width:5px;height:5px}#custom-module-wrapper::-webkit-scrollbar-track{background:transparent}#custom-module-wrapper::-webkit-scrollbar-thumb{background:#494949;border-radius:5px}#custom-module-wrapper .bg-grid{background-image:repeating-linear-gradient(to right,var(--primary) 0,var(--primary) 1px,transparent 1px,transparent calc(100% / 12)),repeating-linear-gradient(to bottom,var(--primary) 0,var(--primary) 1px,transparent 1px,transparent 8px);background-size:100% 100%}#custom-module-wrapper .vue-grid-item.vue-resizable:hover .vue-resizable-handle{display:block}#custom-module-wrapper .vue-grid-item.vue-resizable .vue-resizable-handle{display:none;background:var(--color-muted);border-radius:100px;width:12px;height:12px;right:-6px;bottom:-6px;border:2px solid var(--primary)}.transparent-emoji-picker.emoji-mart{border-width:0;background-color:transparent}.transparent-emoji-picker.emoji-mart .emoji-mart-search input{color:var(--muted-foreground)}.transparent-emoji-picker.emoji-mart .emoji-mart-scroll{padding:0}.transparent-emoji-picker.emoji-mart .emoji-mart-category-label h3{background-color:var(--accent);color:var(--muted-foreground);margin:.5rem 0;border-radius:.5rem}.transparent-emoji-picker.emoji-mart .emoji-mart-category .emoji-mart-emoji:hover:before,.transparent-emoji-picker.emoji-mart .emoji-mart-emoji-selected:before{background-color:var(--muted)}.tiptap-details{position:relative;display:flex;gap:.5rem;border:1px solid #7f7f7f76;border-radius:.5rem;padding:.5rem}.tiptap-details summary{font-weight:700;padding-top:.25rem}.tiptap-details summary::marker{content:""}.tiptap-details .tiptap-details__toggle{align-items:center;background:transparent;border-radius:4px;display:flex;font-size:.8rem;width:2rem;height:2rem;justify-content:center;line-height:1;padding:0;cursor:pointer}.tiptap-details .tiptap-details__toggle:hover{background-color:#7f7f7f48}.tiptap-details .tiptap-details__toggle:before{content:"▶"}.tiptap-details[data-open=true]>button:before{transform:rotate(90deg)}.tiptap-details .tiptap-details__inner{display:flex;flex-direction:column;gap:1rem;width:100%}.tiptap-details .tiptap-details__inner>[data-type=detailsContent]>:last-child{margin-bottom:.5rem}.tiptap-details .details{margin:.5rem 0}.tiptap-details [data-type=detailsContent]{display:none}.tiptap-details[data-open=true] [data-type=detailsContent]{display:block}.grid-cols-24[data-v-6e0addf0]{grid-template-columns:repeat(24,minmax(0,1fr))}.tiptap-component-editor.has-focus[data-v-a5a2678a]{box-shadow:0 0 0 2px var(--ring)}.tiptap-component-editor.has-focus .OVERLAY[data-v-a5a2678a]{opacity:1}.tiptap-component-editor.has-focus .NODE-VIEW[data-v-a5a2678a]{z-index:999999}.OVERLAY[data-v-a5a2678a]{opacity:0}.tiptap-resizable-wrapper.editable[data-v-ebadee9c]:not(.-no-interaction):hover,.has-focus[data-v-ebadee9c]{outline:2px solid var(--section-ui-tint);display:flex;flex-direction:column;min-height:16px}.tiptap-resizable-wrapper.has-focus .tiptap-resizable[data-v-ebadee9c]{border-color:var(--section-ui-tint)}.tiptap-resizable-wrapper.-resizing .editor_space-value[data-v-ebadee9c]{opacity:1}.tiptap-resizable-wrapper:hover .tiptap-resizable[data-v-ebadee9c]:before,.tiptap-resizable-wrapper.-resizing .tiptap-resizable[data-v-ebadee9c]:before{opacity:.3}.tiptap-resizable[data-v-ebadee9c]{position:relative;display:flex;align-items:center;justify-content:center;border:1px dashed rgba(0,0,0,.4);border-radius:8px;transition:border-color .15s ease;height:100%}.tiptap-resizable[data-v-ebadee9c]:before{display:block;content:"";background-clip:content-box;background-image:linear-gradient(-45deg,var(--section-ui-tint) 10%,transparent 10%,transparent 50%,var(--section-ui-tint) 50%,var(--section-ui-tint) 60%,transparent 60%,transparent 100%);background-size:7.07px 7.07px;position:absolute;inset:0;opacity:0;border-radius:8px;transition:opacity .3s}.editor_space-handle[data-v-ebadee9c]{align-items:center;background-color:var(--section-ui-tint);border-radius:2px;cursor:ns-resize;flex-shrink:0;display:flex;height:1px;outline:1px solid var(--section-ui-tint-foreground);position:relative;touch-action:none;transition:opacity .3s;width:12px;z-index:1}.editor_space-handle[data-v-ebadee9c]:before{content:"";display:block;inset:-16px -32px;position:absolute}.editor_space-value[data-v-ebadee9c]{align-items:center;background-color:var(--section-ui-tint);border-radius:99px;color:var(--section-ui-tint-foreground);display:flex;font-size:12px;font-weight:600;gap:4px;left:50%;line-height:1;margin-left:16px;padding:4px 6px;pointer-events:auto;position:absolute;transition:opacity .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:9;opacity:0}.custom-thin-scrollbar[data-v-df549e59]{scrollbar-width:thin;scrollbar-color:var(--input) transparent}.tiptap-container-padding-resizer[data-v-bdccc71a]{position:relative;display:flex;align-items:center;justify-content:center;min-height:16px}.tiptap-container-padding-resizer.-resizing .editor_space-value[data-v-bdccc71a]{opacity:1}.tiptap-container-padding-resizer[data-v-bdccc71a]:before{display:block;content:"";background-clip:content-box;background-image:linear-gradient(-45deg,var(--section-ui-tint) 10%,transparent 10%,transparent 50%,var(--section-ui-tint) 50%,var(--section-ui-tint) 60%,transparent 60%,transparent 100%);background-size:7.07px 7.07px;position:absolute;inset:0;opacity:0;border-radius:8px;transition:opacity .3s}.tiptap-container-padding-resizer.-hovering-dragger[data-v-bdccc71a]:before,.tiptap-container-padding-resizer.-resizing[data-v-bdccc71a]:before{opacity:.3!important}.editor_space-handle[data-v-bdccc71a]{align-items:center;background-color:var(--section-ui-tint);border-radius:2px;cursor:ns-resize;flex-shrink:0;display:flex;height:1px;outline:1px solid var(--section-ui-tint-foreground);position:relative;touch-action:none;transition:opacity .3s;width:12px;z-index:1}.editor_space-handle[data-v-bdccc71a]:before{content:"";display:block;inset:-16px -32px;position:absolute}.editor_space-value[data-v-bdccc71a]{align-items:center;background-color:var(--section-ui-tint);border-radius:99px;color:var(--section-ui-tint-foreground);display:flex;font-size:12px;font-weight:600;gap:4px;left:50%;line-height:1;margin-left:16px;padding:4px 6px;pointer-events:auto;position:absolute;transition:opacity .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:9;opacity:0}.tiptap-top-margin-resizable[data-v-63116a14]{display:flex;align-items:center;justify-content:center;min-height:4px;opacity:0}.tiptap-top-margin-resizable.-resizing .editor_space-handle[data-v-63116a14]:after,.tiptap-top-margin-resizable.-hovering-dragger .editor_space-handle[data-v-63116a14]:after{width:85px}.tiptap-top-margin-resizable.-resizing .editor_space-value[data-v-63116a14],.tiptap-top-margin-resizable.-hovering-dragger .editor_space-value[data-v-63116a14]{opacity:1}.tiptap-top-margin-resizable[data-v-63116a14]:before{display:block;content:"";background-clip:content-box;background-image:linear-gradient(-45deg,var(--section-ui-tint) 10%,transparent 10%,transparent 50%,var(--section-ui-tint) 50%,var(--section-ui-tint) 60%,transparent 60%,transparent 100%);background-size:7.07px 7.07px;position:absolute;inset:0;opacity:0;border-radius:8px;transition:opacity .3s}.tiptap-top-margin-resizable.-hovering-dragger[data-v-63116a14]:before,.tiptap-top-margin-resizable.-resizing[data-v-63116a14]:before{opacity:.3!important}.editor_space-handle[data-v-63116a14]{align-items:center;background-color:var(--section-ui-tint);border-radius:2px;cursor:ns-resize;flex-shrink:0;display:flex;height:1px;outline:1px solid var(--section-ui-tint-foreground);position:relative;touch-action:none;transition:opacity .3s;width:12px;z-index:1}.editor_space-handle[data-v-63116a14]:before{content:"";display:block;inset:-16px -32px;position:absolute}.editor_space-handle[data-v-63116a14]:after{content:"";position:absolute;display:block;width:0px;height:20px;left:0;z-index:0}.editor_space-value[data-v-63116a14]{align-items:center;background-color:var(--section-ui-tint);border-radius:99px;color:var(--section-ui-tint-foreground);display:flex;font-size:12px;font-weight:600;gap:4px;left:50%;line-height:1;margin-left:16px;padding:4px 6px;pointer-events:auto;position:absolute;transition:opacity .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:9;opacity:0;pointer-events:none}.editor_space-value button[data-v-63116a14]{color:var(--section-ui-tint-foreground)}.tiptap.ProseMirror-focused .tiptap-top-margin-resizable{opacity:1}.tiptap-row.editable[data-v-42bc5875]:not(.-no-interaction):hover,.has-focus[data-v-42bc5875]{outline:2px solid var(--section-ui-tint)}.tiptap-stack.editable[data-v-853bffab]:not(.-no-interaction):hover,.has-focus[data-v-853bffab]{outline:2px solid var(--section-ui-tint)}.tiptap-column.editable[data-v-dae9c290]:not(.-no-interaction):hover,.has-focus[data-v-dae9c290]{outline:2px solid var(--section-ui-tint);outline-offset:2px}.resize-handle[data-v-256b2801]{opacity:0}.resize-handle[data-v-256b2801]:after{content:"";position:absolute;left:-8px;top:-5px;width:calc(100% + 16px);height:calc(100% + 10px)}.tiptap.ProseMirror-focused .resize-handle{opacity:1}.tiptap-card.editable[data-v-45135b32]:not(.-no-interaction):hover,.has-focus[data-v-45135b32]{outline:2px solid var(--section-ui-tint)}.tiptap-button.editable[data-v-b8032cfa]:not(.-no-interaction):hover,.has-focus[data-v-b8032cfa]{outline:2px solid var(--section-ui-tint)}.has-focus[data-v-4c86f2c2]{outline:2px solid var(--section-ui-tint);outline-offset:2px}.tiptap-image.editable[data-v-f6aafacd]:not(.-no-interaction):hover,.has-focus[data-v-f6aafacd]{outline:2px solid var(--section-ui-tint)}.tiptap-video.editable[data-v-18248eb5]:not(.-no-interaction):hover,.has-focus[data-v-18248eb5]{outline:2px solid var(--section-ui-tint);outline-offset:2px}.tiptap-heading.editable[data-v-23246135]:not(.-no-interaction):hover,.has-focus[data-v-23246135]{outline:2px solid var(--section-ui-tint)}.tiptap-heading h1 div:focus-visible,.tiptap-heading h2 div:focus-visible,.tiptap-heading h3 div:focus-visible,.tiptap-heading h4 div:focus-visible,.tiptap-heading h5 div:focus-visible,.tiptap-heading h6 div:focus-visible{outline:none}.tiptap-paragraph.editable[data-v-2d65c69e]:not(.-no-interaction):hover,.has-focus[data-v-2d65c69e]{outline:2px solid var(--section-ui-tint)}.tiptap-divider.editable[data-v-b00d2b7c]:not(.-no-interaction):hover,.has-focus[data-v-b00d2b7c]{outline:2px solid var(--section-ui-tint)}.tiptap-details.editable[data-v-91e54428]:not(.-no-interaction):hover,.has-focus[data-v-91e54428]{outline:2px solid var(--section-ui-tint);outline-offset:2px}#content-manager-editor-element-editor-menu>div[data-v-e54a4a9b]{scrollbar-width:thin;scrollbar-color:var(--input) transparent}#content-manager-content-editor .ProseMirror{flex:1;outline:none;transition:background-color .2s ease-in-out;padding:0;--section-ui-tint: #29a1fe;--section-ui-tint-foreground: white}#content-manager-content-editor .ProseMirror::selection :not(.NODE-VIEW){background:#000000ae;color:var(--primary-foreground)}#content-manager-content-editor .ProseMirror p.is-empty:before{color:#adb5bd;content:attr(data-placeholder);float:left;height:0;pointer-events:none}#content-manager-content-editor .ProseMirror p{margin:0 0 .25rem}#content-manager-content-editor .ProseMirror h1,#content-manager-content-editor .ProseMirror h2,#content-manager-content-editor .ProseMirror h3{margin:1rem 0 .5rem;font-weight:700}#content-manager-content-editor .ProseMirror ul,#content-manager-content-editor .ProseMirror ol{margin:0 0 .5rem;padding-left:1.25rem}#content-manager-content-editor .ProseMirror ul li,#content-manager-content-editor .ProseMirror ol li{padding-left:.25rem}#content-manager-content-editor .ProseMirror ol{list-style:decimal}#content-manager-content-editor .ProseMirror ul{list-style:disc}#content-manager-content-editor .ProseMirror a{pointer-events:none}.dark #content-manager-content-editor .ProseMirror::selection :not(.NODE-VIEW){background:#fffd;color:#000}.dark #content-manager-content-editor .ProseMirror p.is-empty:before{color:#868686}.custom-drop-cursor{border:2px solid var(--primary);height:1em}.collaboration-carets__caret{position:relative;display:inline-block;width:.5px;height:1em;border-width:2px;border-style:solid;transform:translateY(.1em)}.collaboration-carets__label{position:absolute;padding:4px 8px 2px;border-radius:5px;transform:translateY(-100%);white-space:nowrap}[data-is-resizing-ew=true],[data-is-resizing-ew=true] *{cursor:ew-resize!important;-webkit-user-select:none!important;user-select:none!important}[data-is-grabbing=true],[data-is-grabbing=true] *{cursor:grabbing!important}[data-is-grabbing=true] [data-node-view-content]>*{pointer-events:none}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container [data-node-view-wrapper]:not(.tiptap-node--dragged){pointer-events:none}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container [data-node-view-wrapper]:not(.tiptap-node--dragged) *{pointer-events:none}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container .tiptap-node--dragged,.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container .tiptap-node--dragged *{pointer-events:auto!important}.tiptap-node-dragging .ProseMirror.tiptap .tiptap-container .tiptap-node--dragged{opacity:.3;transition:opacity .2s ease}.tiptap-drag-ghost{pointer-events:none!important;-webkit-user-select:none;user-select:none}@keyframes pulse-subtle-99339cf2{0%,to{opacity:1}50%{opacity:.7}}.animate-pulse-subtle[data-v-99339cf2]{animation:pulse-subtle-99339cf2 2s ease-in-out infinite}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar{height:8px}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar-track{background:hsl(var(--muted));border-radius:4px}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar-thumb{background:hsl(var(--primary) / .3);border-radius:4px;transition:background .2s}.overflow-x-auto[data-v-99339cf2]::-webkit-scrollbar-thumb:hover{background:hsl(var(--primary) / .5)}
@@ -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 { $ as re, c as U, b, e as N } from "./DateFormatter-2B0R-DY4.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 = {
@@ -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-DbtOLV0L.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,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),W=require("@oneclick.dev/cms-kit"),P=require("lucide-vue-next"),ne=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),y=require("./index-BuzLn4Km.js"),X=require("./index-DYpruS-A-CA2jEOA3.js"),ae=require("./index-CxETuRsG.js"),M=require("./index-DQYBP8Js.js"),J=require("./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Vxubki_v.js"),re=require("./NewReservationDialog.vue_vue_type_script_setup_true_lang-C5YczjNb.js");function se({x:h,y:l,w:o,h:u,tl:f=!1,tr:c=!1,bl:v=!1,br:r=!1,r:a=0}){let m;m=`M${h+a},${l}h${o-2*a}`;let t=c?a:0,s=c?0:a;return m+=`a${t},${t} 0 0 1 ${t},${t}`,m+=`h${s}v${s}`,m+=`v${u-2*a}`,t=r?a:0,s=r?0:a,m+=`a${t},${t} 0 0 1 ${-t},${t}`,m+=`v${s}h${-s}`,m+=`h${2*a-o}`,t=v?a:0,s=v?0:a,m+=`a${t},${t} 0 0 1 ${-t},${-t}`,m+=`h${-s}v${-s}`,m+=`v${2*a-u}`,t=f?a:0,s=f?0:a,m+=`a${t},${t} 0 0 1 ${t},${-t}`,m+=`v${-s}h${s}`,m+="z",m}const le=Object.assign(Object.assign({},M.XYComponentDefaultConfig),{color:void 0,groupMaxWidth:void 0,groupWidth:void 0,dataStep:void 0,groupPadding:.05,barPadding:0,roundedCorners:2,barMinHeight:2,cursor:null,orientation:M.Orientation.Vertical}),ee=y.css`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),W=require("@oneclick.dev/cms-kit"),A=require("lucide-vue-next"),ne=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),y=require("./index-BuzLn4Km.js"),X=require("@oneclick.dev/cms-kit/charts"),ae=require("./index-CxETuRsG.js"),M=require("./index-DQYBP8Js.js"),J=require("./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-VWVIxIr6.js"),re=require("./NewReservationDialog.vue_vue_type_script_setup_true_lang-CqERfyYb.js");function se({x:h,y:l,w:o,h:u,tl:f=!1,tr:c=!1,bl:g=!1,br:r=!1,r:a=0}){let m;m=`M${h+a},${l}h${o-2*a}`;let t=c?a:0,s=c?0:a;return m+=`a${t},${t} 0 0 1 ${t},${t}`,m+=`h${s}v${s}`,m+=`v${u-2*a}`,t=r?a:0,s=r?0:a,m+=`a${t},${t} 0 0 1 ${-t},${t}`,m+=`v${s}h${-s}`,m+=`h${2*a-o}`,t=g?a:0,s=g?0:a,m+=`a${t},${t} 0 0 1 ${-t},${-t}`,m+=`h${-s}v${-s}`,m+=`v${2*a-u}`,t=f?a:0,s=f?0:a,m+=`a${t},${t} 0 0 1 ${t},${-t}`,m+=`v${-s}h${s}`,m+="z",m}const le=Object.assign(Object.assign({},M.XYComponentDefaultConfig),{color:void 0,groupMaxWidth:void 0,groupWidth:void 0,dataStep:void 0,groupPadding:.05,barPadding:0,roundedCorners:2,barMinHeight:2,cursor:null,orientation:M.Orientation.Vertical}),ee=y.css`
2
2
  label: grouped-bar-component;
3
3
  `,ie=y.injectGlobal`
4
4
  :root {
@@ -32,4 +32,4 @@
32
32
  label: barGroup;
33
33
  `,te=y.css`
34
34
  label: barGroupExit;
35
- `,ce=Object.freeze(Object.defineProperty({__proto__:null,bar:K,barGroup:Q,barGroupExit:te,globalStyles:ie,root:ee},Symbol.toStringTag,{value:"Module"}));class oe extends M.XYComponentCore{constructor(l){super(),this._defaultConfig=le,this.config=this._defaultConfig,this.getAccessors=()=>y.isArray(this.config.y)?this.config.y:[this.config.y],this.events={},this._barData=[],l&&this.setConfig(l)}get bleed(){if(this._barData=this._getVisibleData(),this._barData.length===0)return{top:0,bottom:0,left:0,right:0};const l=!this.isVertical()&&this.dataScale.range()[0]>this.dataScale.range()[1],o=this.dataScale.domain(),u=this._getGroupWidth()/2,f=this._barData.map((C,S)=>y.getNumber(C,this.config.x,S)),c=y.min(f),v=y.max(f),r=this.dataScale(c),a=this.dataScale(v),m=this.dataScale.invert(r+(l?u:-u)),t=this.dataScale.invert(a+(l?-u:u)),s=m<=o[0]?this.dataScale(o[0])-this.dataScale(m):0,N=t>o[1]?this.dataScale(t)-this.dataScale(o[1]):0;return{top:this.isVertical()?0:l?-N:s,bottom:this.isVertical()?0:l?-s:N,left:this.isVertical()?s:0,right:this.isVertical()?N:0}}get dataScale(){return this.isVertical()?this.xScale:this.yScale}get valueScale(){return this.isVertical()?this.yScale:this.xScale}isVertical(){return this.config.orientation===M.Orientation.Vertical}_render(l){const{config:o}=this,u=y.isNumber(l)?l:o.duration,f=this._getGroupWidth(),c=this.getAccessors(),v=[-f/2,f/2],r=M.band().domain(M.range(c.length)).range(v).paddingInner(o.barPadding).paddingOuter(o.barPadding),a=this.g.selectAll(`.${Q}`).data(this._barData,(k,E)=>{var i;return`${(i=y.getString(k,o.id,E))!==null&&i!==void 0?i:E}`}),m=(k,E)=>{const i=this.dataScale(y.getNumber(k,o.x,E)),p=this.isVertical()?i:0,$=this.isVertical()?0:i;return`translate(${p},${$})`},s=a.enter().append("g").attr("class",Q).attr("transform",m).style("opacity",1).merge(a);y.smartTransition(s,u).attr("transform",m).style("opacity",1);const N=a.exit().attr("class",te);y.smartTransition(N,u).style("opacity",0).remove(),y.smartTransition(N.selectAll(`.${K}`),u).attr("transform",(k,E,i)=>this.isVertical()?`translate(0,${this.yScale(0)}) scale(1,0)`:`translate(${this.xScale(0)},0) scale(0,1)`);const C=r.bandwidth(),S=s.selectAll(`.${K}`).data(k=>c.map(()=>k)),B=this._getValueAxisDirection(),j=S.enter().append("path").attr("class",K).attr("d",(k,E)=>{const i=r(E),p=this.valueScale(0),$=C;return this._getBarPath(i,p,$,0,!1,B)}).style("fill",(k,E)=>y.getColor(k,o.color,E)).merge(S);y.smartTransition(j,u).attr("d",(k,E)=>{const i=r(E),p=C,$=y.getNumber(k,c[E]),d=$<0;let R=d?this.valueScale(0):this.valueScale($||0),_=Math.abs(this.valueScale(0)-this.valueScale($))||0;if(_<o.barMinHeight){const L=B===M.Direction.North?-1:1;R=this.valueScale(0)+L*o.barMinHeight,_=o.barMinHeight}return this._getBarPath(i,R,p,_,d,B)}).style("fill",(k,E)=>y.getColor(k,o.color,E)).style("cursor",(k,E)=>y.getString(k,o.cursor,E)),y.smartTransition(S.exit(),u).remove()}_getValueAxisDirection(){return this.valueScale.range()[0]>this.valueScale.range()[1]?M.Direction.North:M.Direction.South}_getVisibleData(){const{config:l,datamodel:{data:o}}=this,u=this._getGroupWidth(),f=o.length<2?0:u/2,c=this.dataScale,v=Math.abs(c.invert(f)-c.invert(0));return o?.filter((a,m)=>{const t=y.getNumber(a,l.x,m),s=c.domain(),N=+s[0],C=+s[1];return t>=N-v&&t<=C+v})}_getBarPath(l,o,u,f,c,v){const{config:r}=this,a=r.roundedCorners?y.isNumber(r.roundedCorners)?+r.roundedCorners:u/2:0,m=y.clamp(a,0,Math.min(f,u)/2),t=v===M.Direction.North,s=this.isVertical()&&c!==t,N=this.isVertical()&&c===t,C=!this.isVertical()&&c,S=!this.isVertical()&&!c;return se({x:this.isVertical()?l:o+(t?0:-f),y:this.isVertical()?o+(t?0:-f):l,w:this.isVertical()?u:f,h:this.isVertical()?f:u,tl:s||C,tr:s||S,bl:N||C,br:N||S,r:m})}_getGroupWidth(){const{config:l,datamodel:{data:o}}=this;if(y.isEmpty(o))return 0;if(l.groupWidth)return y.min([l.groupWidth,l.groupMaxWidth]);const u=this.dataScale.bandwidth,f=this.dataScale.domain?this.dataScale.domain():[];let v=1+(u?f.length:f[1]-f[0])/l.dataStep||!u&&o.filter((m,t)=>{const s=y.getNumber(m,l.x,t);return s>=f[0]&&s<=f[1]}).length||o.length;!u&&v>=2&&(v+=1);const a=(v<2?1:1-l.groupPadding)*(this.isVertical()?this._width:this._height)/v;return y.min([a,l.groupMaxWidth])}getValueScaleExtent(l){const{datamodel:o}=this,u=this.getAccessors(),f=l?this._getVisibleData():o.data,c=y.getMin(f,...u),v=y.getMax(f,...u);return[c>0?0:c,v<0?0:v]}getDataScaleExtent(){const{config:l,datamodel:o}=this;return y.getExtent(o.data,l.x)}getYDataExtent(l){return this.isVertical()?this.getValueScaleExtent(l):this.getDataScaleExtent()}getXDataExtent(){return this.isVertical()?this.getDataScaleExtent():this.getValueScaleExtent(!1)}}oe.selectors=ce;const de={"data-vis-component":""},Z=e.defineComponent({__name:"index",props:{color:{type:[Function,String,Array,null]},groupWidth:{},groupMaxWidth:{},dataStep:{},groupPadding:{},barPadding:{},roundedCorners:{type:[Number,Boolean]},barMinHeight:{},cursor:{type:[Function,String,null]},orientation:{},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(h,{expose:l}){const o=e.inject(y.o),u=h,f=e.computed(()=>o.data.value??u.data),c=y.m(u),v=e.ref();return e.onMounted(()=>{e.nextTick(()=>{var r;v.value=new oe(c.value),(r=v.value)==null||r.setData(f.value),o.update(v.value)})}),e.onUnmounted(()=>{var r;(r=v.value)==null||r.destroy(),o.destroy()}),e.watch(c,(r,a)=>{var m;y.f(r,a)||(m=v.value)==null||m.setConfig(c.value)}),e.watch(f,()=>{var r;(r=v.value)==null||r.setData(f.value)}),l({component:v}),(r,a)=>(e.openBlock(),e.createElementBlock("div",de))}}),ue={class:"flex flex-col sm:flex-row"},me=["data-active"],pe={class:"flex items-center gap-2"},fe={class:"block text-muted-foreground text-xs mr-2 max-w-[120px] truncate"},ve={class:"block text-lg leading-none font-bold sm:text-3xl"},ge={class:"mx-auto w-full max-w-sm mt-2 mb-8"},he={class:"text-muted-foreground"},xe={class:"text-muted-foreground"},ye={class:"grid"},ke={class:"flex gap-1 overflow-hidden max-w-80"},Ce={class:"truncate"},be=e.defineComponent({__name:"ResourceSelector",props:{resources:{type:Array,required:!0},totals:{type:Object,required:!0},viewMode:{type:String,required:!0},activeChart:{type:String,required:!1}},emits:["update:viewMode","update:activeChart"],setup(h,{emit:l}){const o=h,u=l,f=e.computed({get:()=>o.viewMode,set:m=>{u("update:viewMode",m)}}),c=e.computed({get:()=>o.activeChart,set:m=>{u("update:activeChart",m)}}),{width:v}=ae.useWindowSize(),r=e.computed(()=>v.value<640),a=e.ref(!1);return(m,t)=>{const s=e.resolveComponent("DrawerTitle"),N=e.resolveComponent("DrawerDescription"),C=e.resolveComponent("DrawerHeader"),S=e.resolveComponent("Button"),B=e.resolveComponent("DrawerFooter"),z=e.resolveComponent("DrawerContent"),j=e.resolveComponent("Drawer"),k=e.resolveComponent("DropdownMenuTrigger"),E=e.resolveComponent("DropdownMenuLabel"),i=e.resolveComponent("DropdownMenuItem"),p=e.resolveComponent("DropdownMenuContent"),$=e.resolveComponent("DropdownMenu");return e.openBlock(),e.createElementBlock("div",ue,[h.resources.length>1?(e.openBlock(),e.createElementBlock("button",{key:0,"data-active":h.viewMode==="stacked",class:"hover:bg-muted/50 flex flex-1 flex-col justify-center gap-2 border-t px-4 py-3 text-left sm:border-t-0 sm:border-l sm:px-6 sm:py-6 cursor-pointer",onClick:t[0]||(t[0]=d=>a.value=!0)},[e.createElementVNode("div",pe,[h.viewMode==="stacked"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(P.Layers),{class:"size-3 text-muted-foreground"}),t[5]||(t[5]=e.createElementVNode("span",{class:"block text-muted-foreground text-xs mr-2 max-w-[120px] truncate"},"All Resources",-1))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:"size-3 rounded-full mr-2",style:e.normalizeStyle({backgroundColor:h.resources.find(d=>d.id===h.activeChart)?.color||"#6b7280"})},null,4),e.createElementVNode("span",fe,e.toDisplayString(h.resources.find(d=>d.id===h.activeChart)?.name||"Select Resource"),1)],64)),e.createVNode(e.unref(P.ChevronDown),{class:"ml-auto size-4"})]),e.createElementVNode("span",ve,e.toDisplayString(h.viewMode==="stacked"?Object.values(h.totals).reduce((d,R)=>d+R,0).toLocaleString():(h.totals[h.activeChart]||0).toLocaleString()),1)],8,me)):e.createCommentVNode("",!0),e.unref(r)?(e.openBlock(),e.createBlock(j,{key:1,open:e.unref(a),"onUpdate:open":t[2]||(t[2]=d=>e.isRef(a)?a.value=d:null)},{default:e.withCtx(()=>[e.createVNode(z,null,{default:e.withCtx(()=>[e.createElementVNode("div",ge,[e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Resources",-1)])]),_:1}),e.createVNode(N,null,{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Select the resources to display on the timeline.",-1)])]),_:1})]),_:1}),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(S,{onClick:t[1]||(t[1]=d=>{f.value="stacked",c.value="",a.value=!1}),variant:h.viewMode==="stacked"?"secondary":"outline"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Layers),{class:"size-3 text-muted-foreground"}),e.createElementVNode("span",he," All Resources ("+e.toDisplayString(Object.values(h.totals).reduce((d,R)=>d+R,0).toLocaleString())+") ",1)]),_:1},8,["variant"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.resources,d=>(e.openBlock(),e.createBlock(S,{key:d.id,onClick:R=>{f.value="single",c.value=d.id,a.value=!1},variant:h.viewMode==="single"&&h.activeChart===d.id?"secondary":"outline"},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"size-3 rounded-full",style:e.normalizeStyle({backgroundColor:d.color||"#6b7280"})},null,4),e.createElementVNode("span",xe,e.toDisplayString(d.name)+" ("+e.toDisplayString((h.totals[d.id]||0).toLocaleString())+") ",1)]),_:2},1032,["onClick","variant"]))),128))]),_:1})])]),_:1})]),_:1},8,["open"])):(e.openBlock(),e.createBlock($,{key:2,open:e.unref(a),"onUpdate:open":t[4]||(t[4]=d=>e.isRef(a)?a.value=d:null)},{default:e.withCtx(()=>[e.createVNode(k,{"as-child":""},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createElementVNode("button",{tabindex:"-1",class:"size-0 opacity-0 self-end"},null,-1)])]),_:1}),e.createVNode(p,{align:"start"},{default:e.withCtx(()=>[e.createVNode(E,null,{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("Resources",-1)])]),_:1}),e.createElementVNode("div",ye,[e.createVNode(i,{onClick:t[3]||(t[3]=d=>{f.value="stacked",c.value="",a.value=!1}),class:e.normalizeClass(h.viewMode==="stacked"?"bg-input":"")},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Layers),{class:"size-3 text-muted-foreground"}),e.createElementVNode("span",null," All Resources ("+e.toDisplayString(Object.values(h.totals).reduce((d,R)=>d+R,0).toLocaleString())+") ",1)]),_:1},8,["class"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.resources,d=>(e.openBlock(),e.createBlock(i,{key:d.id,onClick:R=>{f.value="single",c.value=d.id,a.value=!1},class:e.normalizeClass(h.viewMode==="single"&&h.activeChart===d.id?"bg-input":"")},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"size-3 rounded-full",style:e.normalizeStyle({backgroundColor:d.color||"#6b7280"})},null,4),e.createElementVNode("span",ke,[e.createElementVNode("span",Ce,e.toDisplayString(d.name),1),e.createElementVNode("span",null,"("+e.toDisplayString((h.totals[d.id]||0).toLocaleString())+")",1)])]),_:2},1032,["onClick","class"]))),128))])]),_:1})]),_:1},8,["open"]))])}}}),_e={class:"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6"},Ve={class:"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3"},we={class:"flex items-center gap-1"},Ne={key:1,class:"flex items-center justify-center px-6 py-4 text-muted-foreground text-sm"},Se={key:0,class:"flex items-center justify-center h-[250px]"},De={key:1,class:"flex items-center justify-center h-[250px]"},Ee=e.defineComponent({__name:"Timeline",props:{modelValue:{},selectedResource:{},viewMode:{},agendaData:{},resources:{}},emits:["update:modelValue","update:selectedResource","update:viewMode"],setup(h,{emit:l}){const o=h,u=l,{params:f}=W.useModuleRoute(),{config:c}=W.useModule(),v=W.useFirebaseIntegration(c.project),r=e.ref([]),a=e.ref([]),m=e.ref(!0),t=e.ref(o.viewMode||"stacked"),s=e.ref(o.selectedResource||"");e.watch(t,n=>{u("update:viewMode",n)},{immediate:!0}),e.watch(s,n=>{u("update:selectedResource",t.value==="single"?n:null)}),e.watch(t,n=>{u("update:selectedResource",n==="single"?s.value:null)});const N=new Date,C=e.ref(o.modelValue||new Date);e.watch(()=>o.modelValue,n=>{n&&n.getTime()!==C.value.getTime()&&(C.value=n)}),e.watch(C,n=>{u("update:modelValue",n)},{immediate:!0});const S=e.computed(()=>{const n=new Date(N);n.setDate(N.getDate()-1);const g=new Date(N);return g.setDate(N.getDate()+1),C.value.toDateString()===N.toDateString()?"Today":C.value.toDateString()===n.toDateString()?"Yesterday":C.value.toDateString()===g.toDateString()?"Tomorrow":C.value.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})}),B=()=>{const n=new Date(C.value);n.setDate(n.getDate()-1),C.value=n},z=()=>{const n=new Date(C.value);n.setDate(n.getDate()+1),C.value=n},j=()=>{C.value=new Date},k=e.computed(()=>o.resources?.length===0?10:Math.max(...(o.resources||[]).map(n=>n.capacity||10))),E=e.computed(()=>(o.resources?.length||0)===0?60:Math.min(...(o.resources||[]).map(n=>n.interval||60))),i=e.computed(()=>{const n={total:{label:"Total Reservations",color:void 0}};return(o.resources||[]).forEach((g,w)=>{n[g.id]={label:g.name,color:g.color||`var(--chart-${w%5+1})`}}),n});e.watch(()=>o.resources,n=>{(n?.length||0)>0&&!s.value&&(s.value=n[0].id)},{immediate:!0});const p=e.computed(()=>[...o.resources||[]].sort((n,g)=>{const w=d.value[n.id]||0;return(d.value[g.id]||0)-w})),$=e.computed(()=>{const n=[];return E.value,r.value.forEach((g,w)=>{g.time.endsWith(":00")&&n.push(w)}),n}),d=e.computed(()=>{const n={};return o.resources?.forEach(g=>{n[g.id]=a.value.filter(w=>w.resourceId===g.id).reduce((w,D)=>w+(D.reserved||0),0)}),n}),R=n=>{const g=n.getFullYear(),w=String(n.getMonth()+1).padStart(2,"0"),D=String(n.getDate()).padStart(2,"0");return`${g}-${w}-${D}`},_=n=>{const[g,w]=n.split(":").map(Number);return g*60+w},L=(n,g)=>(o.agendaData?.exceptions||[]).find(D=>g>=D.startDate&&g<=D.endDate?D.resourceIds===null?!0:D.resourceIds?.includes(n):!1)||null,T=e.computed(()=>{const n=R(C.value),g=C.value.getDay();let w=1440,D=0;if((o.resources||[]).forEach(G=>{const I=L(G.id,n);if(I){if(I.isClosed)return;I.timeslots.forEach(O=>{const x=_(O.startTime),b=_(O.endTime);w=Math.min(w,x),D=Math.max(D,b)})}else(G.openingHours?.[g]||[]).forEach(x=>{const b=_(x.start),F=_(x.end);w=Math.min(w,b),D=Math.max(D,F)})}),w>=D)return{startMinutes:540,endMinutes:1020};const A=Math.floor(w/60)*60,q=Math.ceil(D/60)*60;return{startMinutes:A,endMinutes:q}}),H=()=>{const n=[],g=E.value,{startMinutes:w,endMinutes:D}=T.value;for(let A=w;A<D;A+=g){const q=Math.floor(A/60),G=A%60,I=`${String(q).padStart(2,"0")}:${String(G).padStart(2,"0")}`,O={time:I,label:I};o.resources?.forEach(x=>{O[x.id]=0}),n.push(O)}return n},U=async()=>{m.value=!0;try{const n=f.value.id,g=R(C.value),w=`${n}_${g}`,D=await v.get(c.reservedSpotsCollection,w);a.value=[];for(const I of o.resources||[]){const O=D?.[I.id]||{};Object.entries(O).forEach(([x,b])=>{const[F,Y]=x.split("-");a.value.push({resourceId:I.id,startTime:F,endTime:Y,reserved:b})})}const A=H(),q=E.value,{startMinutes:G}=T.value;a.value.forEach(I=>{const O=_(I.startTime),x=_(I.endTime);for(let b=O;b<x;b+=q){const F=Math.floor((b-G)/q);if(F>=0&&F<A.length){const Y=A[F][I.resourceId];typeof Y=="number"&&(A[F][I.resourceId]=Y+(I.reserved||0))}}}),r.value=A}catch(n){console.error("Error loading reservation data:",n),r.value=H(),a.value=[]}finally{m.value=!1}};return(async()=>await U())(),e.watch(C,()=>{U()}),e.watch(()=>o.resources,()=>{(o.resources?.length||0)>0&&U()}),(n,g)=>{const w=e.resolveComponent("CardTitle"),D=e.resolveComponent("Button"),A=e.resolveComponent("CardDescription"),q=e.resolveComponent("CardHeader"),G=e.resolveComponent("ChartContainer"),I=e.resolveComponent("CardContent"),O=e.resolveComponent("Card");return e.openBlock(),e.createBlock(O,{class:"py-4 sm:py-0"},{default:e.withCtx(()=>[e.createVNode(q,{class:"flex flex-col items-stretch border-b !p-0 sm:flex-row"},{default:e.withCtx(()=>[e.createElementVNode("div",_e,[e.createElementVNode("div",Ve,[e.createVNode(w,null,{default:e.withCtx(()=>[...g[2]||(g[2]=[e.createTextVNode("Reservations",-1)])]),_:1}),e.createElementVNode("div",we,[e.createVNode(D,{variant:"ghost",size:"icon",class:"size-8",onClick:B},{default:e.withCtx(()=>[e.createVNode(e.unref(P.ChevronLeft),{size:16})]),_:1}),e.createVNode(D,{variant:"ghost",size:"sm",class:"h-8 px-3 text-xs",onClick:j},{default:e.withCtx(()=>[...g[3]||(g[3]=[e.createTextVNode(" Today ",-1)])]),_:1}),e.createVNode(D,{variant:"ghost",size:"icon",class:"size-8",onClick:z},{default:e.withCtx(()=>[e.createVNode(e.unref(P.ChevronRight),{size:16})]),_:1})])]),e.createVNode(A,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)),1)]),_:1})]),h.resources.length>0?(e.openBlock(),e.createBlock(be,{key:0,resources:h.resources,totals:e.unref(d),viewMode:e.unref(t),"onUpdate:viewMode":g[0]||(g[0]=x=>e.isRef(t)?t.value=x:null),activeChart:e.unref(s),"onUpdate:activeChart":g[1]||(g[1]=x=>e.isRef(s)?s.value=x:null)},null,8,["resources","totals","viewMode","activeChart"])):(e.openBlock(),e.createElementBlock("div",Ne," No resources configured "))]),_:1}),e.createVNode(I,{class:"px-2 sm:p-6"},{default:e.withCtx(()=>[e.unref(m)?(e.openBlock(),e.createElementBlock("div",Se,[...g[4]||(g[4]=[e.createElementVNode("div",{class:"text-muted-foreground"},"Loading...",-1)])])):h.resources.length===0?(e.openBlock(),e.createElementBlock("div",De,[...g[5]||(g[5]=[e.createElementVNode("div",{class:"text-muted-foreground"},"No resources to display",-1)])])):e.unref(t)==="stacked"?(e.openBlock(),e.createBlock(G,{key:2,config:e.unref(i),class:"aspect-auto h-[250px] w-full",cursor:""},{default:e.withCtx(()=>[e.createVNode(e.unref(M.S),{data:e.unref(r),margin:{left:-24},"y-domain":[0,e.unref(k)]},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),x=>(e.openBlock(),e.createBlock(e.unref(Z),{key:x.id,x:(b,F)=>F,y:b=>b[x.id]||0,color:b=>b[x.id]>0?e.unref(i)[x.id]?.color:"#61616180","bar-padding":.1,"rounded-corners":2},null,8,["x","y","color"]))),128)),e.createVNode(e.unref(M.C),{type:"x",x:(x,b)=>b,"tick-line":!1,"domain-line":!1,"grid-line":!1,"tick-values":e.unref($),"tick-format":x=>e.unref(r)[x]?.time||""},null,8,["x","tick-values","tick-format"]),e.createVNode(e.unref(M.C),{type:"y","num-ticks":3,"tick-line":!1,"domain-line":!1}),e.createVNode(e.unref(M.z)),e.createVNode(e.unref(M.A),{template:e.unref(X.st)(e.unref(i),e.unref(X.Ue),{labelFormatter(x){const b=Math.round(x);return b>=0&&b<e.unref(r).length&&e.unref(r)[b]?.time||""}}),color:"#0000"},null,8,["template"])]),_:1},8,["data","y-domain"])]),_:1},8,["config"])):(e.openBlock(),e.createBlock(G,{key:3,config:e.unref(i),class:"aspect-auto h-[250px] w-full",cursor:""},{default:e.withCtx(()=>[e.createVNode(e.unref(M.S),{data:e.unref(r),margin:{left:-24},"y-domain":[0,e.unref(k)]},{default:e.withCtx(()=>[e.createVNode(e.unref(Z),{x:(x,b)=>b,y:x=>x[e.unref(s)]||0,color:x=>x[e.unref(s)]>0?e.unref(i)[e.unref(s)]?.color:"hsl(var(--muted))","bar-padding":.1,"rounded-corners":!1},null,8,["x","y","color"]),e.createVNode(e.unref(M.C),{type:"x",x:(x,b)=>b,"tick-line":!1,"domain-line":!1,"grid-line":!1,"tick-values":e.unref($),"tick-format":x=>e.unref(r)[x]?.time||""},null,8,["x","tick-values","tick-format"]),e.createVNode(e.unref(M.C),{type:"y","num-ticks":3,"tick-line":!1,"domain-line":!1}),e.createVNode(e.unref(M.z)),e.createVNode(e.unref(M.A),{template:e.unref(X.st)(e.unref(i),e.unref(X.Ue),{labelFormatter(x){const b=Math.round(x);return b>=0&&b<e.unref(r).length&&e.unref(r)[b]?.time||""}}),color:"#0000"},null,8,["template"])]),_:1},8,["data","y-domain"])]),_:1},8,["config"]))]),_:1})]),_:1})}}}),Be={class:"flex flex-row items-center justify-between gap-2"},$e={class:"relative mb-4"},Me={class:"flex gap-1 mb-4 flex-wrap"},Te={key:0,class:"mb-3 text-sm text-muted-foreground"},Re={key:1,class:"flex items-center justify-center py-8"},ze={key:2,class:"flex flex-col items-center gap-2 text-center py-8 text-muted-foreground"},Ie={key:3,class:"text-center py-8 text-muted-foreground"},Ae={key:4,class:"space-y-2"},Pe=["onClick"],je={class:"flex items-start justify-between"},Oe={class:"flex-1"},Le={class:"font-medium"},Fe={class:"text-sm text-muted-foreground"},We={class:"text-sm text-muted-foreground"},Ge={class:"flex items-center gap-4 flex-wrap"},qe={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},He={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},Ue={key:0,class:"flex items-center gap-1 mt-1 text-xs text-muted-foreground"},Ye={class:"text-right"},Xe={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"},Ke={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"},Qe={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"},Je={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"},Ze={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"},et={key:5,class:"text-sm font-medium mt-1"},tt=e.defineComponent({__name:"BookingsList",props:{activeDate:{},selectedResource:{},resources:{}},setup(h){const l=h,{params:o}=W.useModuleRoute(),{config:u}=W.useModule(),f=W.useFirebaseIntegration(u.project),c=e.ref([]),v=e.ref(!0),r=e.ref(""),a=e.ref(null),m=e.computed(()=>({date:t(l.activeDate),resource:null}));e.provide("event",m);const t=i=>{const p=i.getFullYear(),$=String(i.getMonth()+1).padStart(2,"0"),d=String(i.getDate()).padStart(2,"0");return`${p}-${$}-${d}`},s=e.computed(()=>{let i=c.value;return l.selectedResource&&(i=i.filter(p=>p.resourceId===l.selectedResource)),r.value.trim()&&(i=new J.Fuse(i,{keys:["customerInfo.firstName","customerInfo.lastName","customerInfo.email","customerInfo.phone","resourceName"],threshold:.3,ignoreLocation:!0}).search(r.value).map($=>$.item)),i}),N=e.computed(()=>s.value.filter(i=>z.value.includes(i.reservationStatus))),C=e.computed(()=>c.value.some(i=>i.reservationStatus==="approved"||i.reservationStatus==="needs_approval")),S=e.computed(()=>({spots:c.value.reduce((i,p)=>i+(p.spots||0),0),bookings:c.value.length})),B=()=>{r.value=""},z=e.ref(["needs_approval","approved"]),j=i=>{z.value.includes(i)?z.value=z.value.filter(p=>p!==i):z.value.push(i)},k=async()=>{v.value=!0,c.value=[];try{const i=o.value.id,p=t(l.activeDate),$=new Set;l.resources?.forEach(_=>{const L=`${_.id}_${p}`;$.add(L)});const d=await f.find(u.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:i},{field:"status",operator:"==",value:"confirmed"},{field:"flattenedReservationDates",operator:"array-contains-any",value:Array.from($)}]});let R=[];d.forEach(_=>{(_.reservations?.filter(T=>T.date===p)||[]).forEach(T=>{const H=l.resources.find(U=>U.id===T.resourceId);R.push({customerInfo:_.customerInfo,amountDue:_.amountDue,amountPaid:_.amountPaid,status:_.status,reservationStatus:T.status,subtotal:_.subtotal,total:_.total,discount:_.discount,id:_.id,res_id:T.id,resourceId:T.resourceId,spots:T.spots,date:p,startTime:T.timeslot?.startTime,endTime:T.timeslot?.endTime,reservationPrice:T.totalPrice,reservationBasePrice:T.basePrice,reservationAddOnsPrice:T.addOnsPrice,pricingOptionId:T.pricingOptionId,pricingOption:T.pricingOption,resourceName:H?.name||"Unknown",resourceColor:H?.color})})}),c.value=R.sort((_,L)=>_.startTime?.localeCompare(L.startTime||"")||0)}catch(i){console.error("Error loading orders:",i),c.value=[]}finally{v.value=!1}};return(async()=>await k())(),e.watch(()=>l.activeDate,()=>{k()}),(i,p)=>{const $=e.resolveComponent("Badge"),d=e.resolveComponent("CardTitle"),R=e.resolveComponent("CardDescription"),_=e.resolveComponent("Button"),L=e.resolveComponent("CardHeader"),T=e.resolveComponent("Input"),H=e.resolveComponent("CardContent"),U=e.resolveComponent("Card");return e.openBlock(),e.createBlock(U,null,{default:e.withCtx(()=>[e.createVNode(L,null,{default:e.withCtx(()=>[e.createElementVNode("div",Be,[e.createElementVNode("div",null,[e.createVNode(d,{class:"flex items-center gap-2"},{default:e.withCtx(()=>[p[6]||(p[6]=e.createTextVNode(" Bookings ",-1)),e.unref(S).bookings>0?(e.openBlock(),e.createBlock($,{key:0,variant:"secondary"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S).bookings),1)]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createVNode(R,{class:"flex items-center gap-2 mt-1"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Users),{size:14}),e.createElementVNode("span",null,e.toDisplayString(e.unref(S).spots)+" total spots",1)]),_:1})]),e.createVNode(_,{variant:"ghost",size:"icon",onClick:k,disabled:e.unref(v)},{default:e.withCtx(()=>[e.createVNode(e.unref(P.RefreshCw),{size:16,class:e.normalizeClass({"animate-spin":e.unref(v)})},null,8,["class"])]),_:1},8,["disabled"])])]),_:1}),e.createVNode(H,null,{default:e.withCtx(()=>[e.createElementVNode("div",$e,[e.createVNode(e.unref(P.Search),{size:16,class:"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"}),e.createVNode(T,{modelValue:e.unref(r),"onUpdate:modelValue":p[0]||(p[0]=V=>e.isRef(r)?r.value=V:null),placeholder:"Search by name, email, or phone...",class:"pl-9 pr-9"},null,8,["modelValue"]),e.unref(r)?(e.openBlock(),e.createBlock(_,{key:0,variant:"ghost",size:"icon",class:"absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7",onClick:B},{default:e.withCtx(()=>[e.createVNode(e.unref(P.X),{size:14})]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",Me,[e.createElementVNode("button",{onClick:p[1]||(p[1]=V=>j("needs_approval")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("needs_approval")}])}," Needs Approval ",2),e.createElementVNode("button",{onClick:p[2]||(p[2]=V=>j("approved")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("approved")}])}," Approved ",2),e.createElementVNode("button",{onClick:p[3]||(p[3]=V=>j("rejected")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("rejected")}])}," Rejected ",2),e.createElementVNode("button",{onClick:p[4]||(p[4]=V=>j("cancelled")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("cancelled")}])}," Cancelled ",2)]),e.unref(r)?(e.openBlock(),e.createElementBlock("div",Te," Showing "+e.toDisplayString(e.unref(s).length)+" of "+e.toDisplayString(e.unref(c).length)+" bookings ",1)):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",Re,[...p[7]||(p[7]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):e.unref(N).length===0?(e.openBlock(),e.createElementBlock("div",ze,[p[9]||(p[9]=e.createTextVNode(" No bookings for this day ",-1)),e.unref(C)?(e.openBlock(),e.createBlock(_,{key:0,onClick:p[5]||(p[5]=V=>z.value=["needs_approval","approved"])},{default:e.withCtx(()=>[...p[8]||(p[8]=[e.createTextVNode("Reset filters",-1)])]),_:1})):e.createCommentVNode("",!0)])):e.unref(s).length===0?(e.openBlock(),e.createElementBlock("div",Ie," No bookings match your search ")):(e.openBlock(),e.createElementBlock("div",Ae,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),V=>(e.openBlock(),e.createElementBlock("div",{key:V.res_id||V.id,class:"p-3 border rounded-lg hover:bg-muted/50 transition-colors cursor-pointer",onClick:n=>e.unref(a)?.openDialog(V)},[e.createElementVNode("div",je,[e.createElementVNode("div",Oe,[e.createElementVNode("div",Le,e.toDisplayString(V.customerInfo?.firstName)+" "+e.toDisplayString(V.customerInfo?.lastName||"Unknown Customer"),1),e.createElementVNode("div",Fe,e.toDisplayString(V.customerInfo?.email),1),e.createElementVNode("div",We,e.toDisplayString(V.customerInfo?.phone),1),e.createElementVNode("div",Ge,[e.createElementVNode("div",qe,[e.createVNode(e.unref(P.Clock),{size:12}),e.createElementVNode("span",null,e.toDisplayString(V.startTime)+" - "+e.toDisplayString(V.endTime),1)]),e.createElementVNode("div",He,[e.createVNode(e.unref(P.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(V.spots)+" spots",1)]),V.resourceName?(e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("div",{class:"w-3 h-3 rounded-full",style:e.normalizeStyle({backgroundColor:V.resourceColor||"#6b7280"})},null,4),e.createElementVNode("span",null,e.toDisplayString(V.resourceName),1)])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ye,[V.reservationStatus==="needs_approval"?(e.openBlock(),e.createElementBlock("span",Xe,"Needs Approval")):V.reservationStatus==="approved"?(e.openBlock(),e.createElementBlock("span",Ke,"Approved")):V.reservationStatus==="rejected"?(e.openBlock(),e.createElementBlock("span",Qe,"Rejected")):V.reservationStatus==="cancelled"?(e.openBlock(),e.createElementBlock("span",Je,"Cancelled")):(e.openBlock(),e.createElementBlock("span",Ze,"Pending")),V.reservationPrice||V.reservationPrice===0?(e.openBlock(),e.createElementBlock("div",et," €"+e.toDisplayString(V.reservationPrice.toFixed(2)),1)):e.createCommentVNode("",!0)])])],8,Pe))),128))]))]),_:1}),e.createVNode(J._sfc_main,{ref_key:"reservationDetailDialog",ref:a,onCancelled:k,onConfirmed:k,onRejected:k},null,512)]),_:1})}}}),ot={class:"space-y-6"},nt={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},at={class:"text-2xl font-semibold tracking-tight"},rt={class:"flex flex-col md:flex-row gap-2"},st={class:"grid gap-6 md:grid-cols-2 lg:grid-cols-3"},lt={class:"md:col-span-2 lg:col-span-3"},it=e.defineComponent({__name:"index",setup(h){const{hasPermission:l}=W.useModulePermissions(),{params:o,resolvePath:u}=W.useModuleRoute(),{config:f}=W.useModule(),c=W.useFirebaseIntegration(f.project),v=e.ref(""),r=e.ref(!0),a=e.ref(new Date),m=e.ref(null),t=e.ref("stacked"),s=e.ref(null),N=e.ref([]);return(async()=>{try{const S=await c.get(f.agendaCollection,o.value.id);v.value=S?.serviceName||"",s.value=S,N.value=S?.resources?.filter(B=>B.isActive)||[]}catch(S){console.error("Error loading data:",S)}finally{r.value=!1}})(),e.provide("agendaData",s),(S,B)=>{const z=e.resolveComponent("Button"),j=e.resolveComponent("NuxtLink");return e.openBlock(),e.createBlock(ne._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",ot,[e.createElementVNode("div",nt,[e.createElementVNode("div",null,[e.createElementVNode("h1",at,e.toDisplayString(e.unref(v)||"Dashboard"),1),B[3]||(B[3]=e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"}," Overview and analytics for your booking service ",-1))]),e.createElementVNode("div",rt,[e.unref(l)("manage-reservations")?(e.openBlock(),e.createBlock(re._sfc_main,{key:0})):e.createCommentVNode("",!0),e.createVNode(j,{to:e.unref(u)(`/edit/${e.unref(o).id}/agenda`)},{default:e.withCtx(()=>[e.createVNode(z,{class:"w-full"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Calendar),{class:"size-4"}),B[4]||(B[4]=e.createTextVNode(" View Agenda ",-1))]),_:1})]),_:1},8,["to"])])]),e.createVNode(Ee,{modelValue:e.unref(a),"onUpdate:modelValue":B[0]||(B[0]=k=>e.isRef(a)?a.value=k:null),"view-mode":e.unref(t),"onUpdate:viewMode":B[1]||(B[1]=k=>e.isRef(t)?t.value=k:null),"onUpdate:selectedResource":B[2]||(B[2]=k=>m.value=k),"agenda-data":e.unref(s),resources:e.unref(N)},null,8,["modelValue","view-mode","agenda-data","resources"]),e.createElementVNode("div",st,[e.createElementVNode("div",lt,[e.unref(N).length>0?(e.openBlock(),e.createBlock(tt,{key:0,"active-date":e.unref(a),"selected-resource":e.unref(m),resources:e.unref(N)},null,8,["active-date","selected-resource","resources"])):e.createCommentVNode("",!0)])])])]),_:1})}}});exports.default=it;
35
+ `,ce=Object.freeze(Object.defineProperty({__proto__:null,bar:K,barGroup:Q,barGroupExit:te,globalStyles:ie,root:ee},Symbol.toStringTag,{value:"Module"}));class oe extends M.XYComponentCore{constructor(l){super(),this._defaultConfig=le,this.config=this._defaultConfig,this.getAccessors=()=>y.isArray(this.config.y)?this.config.y:[this.config.y],this.events={},this._barData=[],l&&this.setConfig(l)}get bleed(){if(this._barData=this._getVisibleData(),this._barData.length===0)return{top:0,bottom:0,left:0,right:0};const l=!this.isVertical()&&this.dataScale.range()[0]>this.dataScale.range()[1],o=this.dataScale.domain(),u=this._getGroupWidth()/2,f=this._barData.map((C,S)=>y.getNumber(C,this.config.x,S)),c=y.min(f),g=y.max(f),r=this.dataScale(c),a=this.dataScale(g),m=this.dataScale.invert(r+(l?u:-u)),t=this.dataScale.invert(a+(l?-u:u)),s=m<=o[0]?this.dataScale(o[0])-this.dataScale(m):0,N=t>o[1]?this.dataScale(t)-this.dataScale(o[1]):0;return{top:this.isVertical()?0:l?-N:s,bottom:this.isVertical()?0:l?-s:N,left:this.isVertical()?s:0,right:this.isVertical()?N:0}}get dataScale(){return this.isVertical()?this.xScale:this.yScale}get valueScale(){return this.isVertical()?this.yScale:this.xScale}isVertical(){return this.config.orientation===M.Orientation.Vertical}_render(l){const{config:o}=this,u=y.isNumber(l)?l:o.duration,f=this._getGroupWidth(),c=this.getAccessors(),g=[-f/2,f/2],r=M.band().domain(M.range(c.length)).range(g).paddingInner(o.barPadding).paddingOuter(o.barPadding),a=this.g.selectAll(`.${Q}`).data(this._barData,(k,E)=>{var i;return`${(i=y.getString(k,o.id,E))!==null&&i!==void 0?i:E}`}),m=(k,E)=>{const i=this.dataScale(y.getNumber(k,o.x,E)),p=this.isVertical()?i:0,$=this.isVertical()?0:i;return`translate(${p},${$})`},s=a.enter().append("g").attr("class",Q).attr("transform",m).style("opacity",1).merge(a);y.smartTransition(s,u).attr("transform",m).style("opacity",1);const N=a.exit().attr("class",te);y.smartTransition(N,u).style("opacity",0).remove(),y.smartTransition(N.selectAll(`.${K}`),u).attr("transform",(k,E,i)=>this.isVertical()?`translate(0,${this.yScale(0)}) scale(1,0)`:`translate(${this.xScale(0)},0) scale(0,1)`);const C=r.bandwidth(),S=s.selectAll(`.${K}`).data(k=>c.map(()=>k)),B=this._getValueAxisDirection(),j=S.enter().append("path").attr("class",K).attr("d",(k,E)=>{const i=r(E),p=this.valueScale(0),$=C;return this._getBarPath(i,p,$,0,!1,B)}).style("fill",(k,E)=>y.getColor(k,o.color,E)).merge(S);y.smartTransition(j,u).attr("d",(k,E)=>{const i=r(E),p=C,$=y.getNumber(k,c[E]),d=$<0;let R=d?this.valueScale(0):this.valueScale($||0),_=Math.abs(this.valueScale(0)-this.valueScale($))||0;if(_<o.barMinHeight){const L=B===M.Direction.North?-1:1;R=this.valueScale(0)+L*o.barMinHeight,_=o.barMinHeight}return this._getBarPath(i,R,p,_,d,B)}).style("fill",(k,E)=>y.getColor(k,o.color,E)).style("cursor",(k,E)=>y.getString(k,o.cursor,E)),y.smartTransition(S.exit(),u).remove()}_getValueAxisDirection(){return this.valueScale.range()[0]>this.valueScale.range()[1]?M.Direction.North:M.Direction.South}_getVisibleData(){const{config:l,datamodel:{data:o}}=this,u=this._getGroupWidth(),f=o.length<2?0:u/2,c=this.dataScale,g=Math.abs(c.invert(f)-c.invert(0));return o?.filter((a,m)=>{const t=y.getNumber(a,l.x,m),s=c.domain(),N=+s[0],C=+s[1];return t>=N-g&&t<=C+g})}_getBarPath(l,o,u,f,c,g){const{config:r}=this,a=r.roundedCorners?y.isNumber(r.roundedCorners)?+r.roundedCorners:u/2:0,m=y.clamp(a,0,Math.min(f,u)/2),t=g===M.Direction.North,s=this.isVertical()&&c!==t,N=this.isVertical()&&c===t,C=!this.isVertical()&&c,S=!this.isVertical()&&!c;return se({x:this.isVertical()?l:o+(t?0:-f),y:this.isVertical()?o+(t?0:-f):l,w:this.isVertical()?u:f,h:this.isVertical()?f:u,tl:s||C,tr:s||S,bl:N||C,br:N||S,r:m})}_getGroupWidth(){const{config:l,datamodel:{data:o}}=this;if(y.isEmpty(o))return 0;if(l.groupWidth)return y.min([l.groupWidth,l.groupMaxWidth]);const u=this.dataScale.bandwidth,f=this.dataScale.domain?this.dataScale.domain():[];let g=1+(u?f.length:f[1]-f[0])/l.dataStep||!u&&o.filter((m,t)=>{const s=y.getNumber(m,l.x,t);return s>=f[0]&&s<=f[1]}).length||o.length;!u&&g>=2&&(g+=1);const a=(g<2?1:1-l.groupPadding)*(this.isVertical()?this._width:this._height)/g;return y.min([a,l.groupMaxWidth])}getValueScaleExtent(l){const{datamodel:o}=this,u=this.getAccessors(),f=l?this._getVisibleData():o.data,c=y.getMin(f,...u),g=y.getMax(f,...u);return[c>0?0:c,g<0?0:g]}getDataScaleExtent(){const{config:l,datamodel:o}=this;return y.getExtent(o.data,l.x)}getYDataExtent(l){return this.isVertical()?this.getValueScaleExtent(l):this.getDataScaleExtent()}getXDataExtent(){return this.isVertical()?this.getDataScaleExtent():this.getValueScaleExtent(!1)}}oe.selectors=ce;const de={"data-vis-component":""},Z=e.defineComponent({__name:"index",props:{color:{type:[Function,String,Array,null]},groupWidth:{},groupMaxWidth:{},dataStep:{},groupPadding:{},barPadding:{},roundedCorners:{type:[Number,Boolean]},barMinHeight:{},cursor:{type:[Function,String,null]},orientation:{},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(h,{expose:l}){const o=e.inject(y.o),u=h,f=e.computed(()=>o.data.value??u.data),c=y.m(u),g=e.ref();return e.onMounted(()=>{e.nextTick(()=>{var r;g.value=new oe(c.value),(r=g.value)==null||r.setData(f.value),o.update(g.value)})}),e.onUnmounted(()=>{var r;(r=g.value)==null||r.destroy(),o.destroy()}),e.watch(c,(r,a)=>{var m;y.f(r,a)||(m=g.value)==null||m.setConfig(c.value)}),e.watch(f,()=>{var r;(r=g.value)==null||r.setData(f.value)}),l({component:g}),(r,a)=>(e.openBlock(),e.createElementBlock("div",de))}}),ue={class:"flex flex-col sm:flex-row"},me=["data-active"],pe={class:"flex items-center gap-2"},fe={class:"block text-muted-foreground text-xs mr-2 max-w-[120px] truncate"},ge={class:"block text-lg leading-none font-bold sm:text-3xl"},ve={class:"mx-auto w-full max-w-sm mt-2 mb-8"},he={class:"text-muted-foreground"},xe={class:"text-muted-foreground"},ye={class:"grid"},ke={class:"flex gap-1 overflow-hidden max-w-80"},Ce={class:"truncate"},be=e.defineComponent({__name:"ResourceSelector",props:{resources:{type:Array,required:!0},totals:{type:Object,required:!0},viewMode:{type:String,required:!0},activeChart:{type:String,required:!1}},emits:["update:viewMode","update:activeChart"],setup(h,{emit:l}){const o=h,u=l,f=e.computed({get:()=>o.viewMode,set:m=>{u("update:viewMode",m)}}),c=e.computed({get:()=>o.activeChart,set:m=>{u("update:activeChart",m)}}),{width:g}=ae.useWindowSize(),r=e.computed(()=>g.value<640),a=e.ref(!1);return(m,t)=>{const s=e.resolveComponent("DrawerTitle"),N=e.resolveComponent("DrawerDescription"),C=e.resolveComponent("DrawerHeader"),S=e.resolveComponent("Button"),B=e.resolveComponent("DrawerFooter"),z=e.resolveComponent("DrawerContent"),j=e.resolveComponent("Drawer"),k=e.resolveComponent("DropdownMenuTrigger"),E=e.resolveComponent("DropdownMenuLabel"),i=e.resolveComponent("DropdownMenuItem"),p=e.resolveComponent("DropdownMenuContent"),$=e.resolveComponent("DropdownMenu");return e.openBlock(),e.createElementBlock("div",ue,[h.resources.length>1?(e.openBlock(),e.createElementBlock("button",{key:0,"data-active":h.viewMode==="stacked",class:"hover:bg-muted/50 flex flex-1 flex-col justify-center gap-2 border-t px-4 py-3 text-left sm:border-t-0 sm:border-l sm:px-6 sm:py-6 cursor-pointer",onClick:t[0]||(t[0]=d=>a.value=!0)},[e.createElementVNode("div",pe,[h.viewMode==="stacked"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(A.Layers),{class:"size-3 text-muted-foreground"}),t[5]||(t[5]=e.createElementVNode("span",{class:"block text-muted-foreground text-xs mr-2 max-w-[120px] truncate"},"All Resources",-1))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:"size-3 rounded-full mr-2",style:e.normalizeStyle({backgroundColor:h.resources.find(d=>d.id===h.activeChart)?.color||"#6b7280"})},null,4),e.createElementVNode("span",fe,e.toDisplayString(h.resources.find(d=>d.id===h.activeChart)?.name||"Select Resource"),1)],64)),e.createVNode(e.unref(A.ChevronDown),{class:"ml-auto size-4"})]),e.createElementVNode("span",ge,e.toDisplayString(h.viewMode==="stacked"?Object.values(h.totals).reduce((d,R)=>d+R,0).toLocaleString():(h.totals[h.activeChart]||0).toLocaleString()),1)],8,me)):e.createCommentVNode("",!0),e.unref(r)?(e.openBlock(),e.createBlock(j,{key:1,open:e.unref(a),"onUpdate:open":t[2]||(t[2]=d=>e.isRef(a)?a.value=d:null)},{default:e.withCtx(()=>[e.createVNode(z,null,{default:e.withCtx(()=>[e.createElementVNode("div",ve,[e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Resources",-1)])]),_:1}),e.createVNode(N,null,{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Select the resources to display on the timeline.",-1)])]),_:1})]),_:1}),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(S,{onClick:t[1]||(t[1]=d=>{f.value="stacked",c.value="",a.value=!1}),variant:h.viewMode==="stacked"?"secondary":"outline"},{default:e.withCtx(()=>[e.createVNode(e.unref(A.Layers),{class:"size-3 text-muted-foreground"}),e.createElementVNode("span",he," All Resources ("+e.toDisplayString(Object.values(h.totals).reduce((d,R)=>d+R,0).toLocaleString())+") ",1)]),_:1},8,["variant"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.resources,d=>(e.openBlock(),e.createBlock(S,{key:d.id,onClick:R=>{f.value="single",c.value=d.id,a.value=!1},variant:h.viewMode==="single"&&h.activeChart===d.id?"secondary":"outline"},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"size-3 rounded-full",style:e.normalizeStyle({backgroundColor:d.color||"#6b7280"})},null,4),e.createElementVNode("span",xe,e.toDisplayString(d.name)+" ("+e.toDisplayString((h.totals[d.id]||0).toLocaleString())+") ",1)]),_:2},1032,["onClick","variant"]))),128))]),_:1})])]),_:1})]),_:1},8,["open"])):(e.openBlock(),e.createBlock($,{key:2,open:e.unref(a),"onUpdate:open":t[4]||(t[4]=d=>e.isRef(a)?a.value=d:null)},{default:e.withCtx(()=>[e.createVNode(k,{"as-child":""},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createElementVNode("button",{tabindex:"-1",class:"size-0 opacity-0 self-end"},null,-1)])]),_:1}),e.createVNode(p,{align:"start"},{default:e.withCtx(()=>[e.createVNode(E,null,{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("Resources",-1)])]),_:1}),e.createElementVNode("div",ye,[e.createVNode(i,{onClick:t[3]||(t[3]=d=>{f.value="stacked",c.value="",a.value=!1}),class:e.normalizeClass(h.viewMode==="stacked"?"bg-input":"")},{default:e.withCtx(()=>[e.createVNode(e.unref(A.Layers),{class:"size-3 text-muted-foreground"}),e.createElementVNode("span",null," All Resources ("+e.toDisplayString(Object.values(h.totals).reduce((d,R)=>d+R,0).toLocaleString())+") ",1)]),_:1},8,["class"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.resources,d=>(e.openBlock(),e.createBlock(i,{key:d.id,onClick:R=>{f.value="single",c.value=d.id,a.value=!1},class:e.normalizeClass(h.viewMode==="single"&&h.activeChart===d.id?"bg-input":"")},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"size-3 rounded-full",style:e.normalizeStyle({backgroundColor:d.color||"#6b7280"})},null,4),e.createElementVNode("span",ke,[e.createElementVNode("span",Ce,e.toDisplayString(d.name),1),e.createElementVNode("span",null,"("+e.toDisplayString((h.totals[d.id]||0).toLocaleString())+")",1)])]),_:2},1032,["onClick","class"]))),128))])]),_:1})]),_:1},8,["open"]))])}}}),_e={class:"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6"},Ve={class:"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3"},we={class:"flex items-center gap-1"},Ne={key:1,class:"flex items-center justify-center px-6 py-4 text-muted-foreground text-sm"},Se={key:0,class:"flex items-center justify-center h-[250px]"},De={key:1,class:"flex items-center justify-center h-[250px]"},Ee=e.defineComponent({__name:"Timeline",props:{modelValue:{},selectedResource:{},viewMode:{},agendaData:{},resources:{}},emits:["update:modelValue","update:selectedResource","update:viewMode"],setup(h,{emit:l}){const o=h,u=l,{params:f}=W.useModuleRoute(),{config:c}=W.useModule(),g=W.useFirebaseIntegration(c.project),r=e.ref([]),a=e.ref([]),m=e.ref(!0),t=e.ref(o.viewMode||"stacked"),s=e.ref(o.selectedResource||"");e.watch(t,n=>{u("update:viewMode",n)},{immediate:!0}),e.watch(s,n=>{u("update:selectedResource",t.value==="single"?n:null)}),e.watch(t,n=>{u("update:selectedResource",n==="single"?s.value:null)});const N=new Date,C=e.ref(o.modelValue||new Date);e.watch(()=>o.modelValue,n=>{n&&n.getTime()!==C.value.getTime()&&(C.value=n)}),e.watch(C,n=>{u("update:modelValue",n)},{immediate:!0});const S=e.computed(()=>{const n=new Date(N);n.setDate(N.getDate()-1);const v=new Date(N);return v.setDate(N.getDate()+1),C.value.toDateString()===N.toDateString()?"Today":C.value.toDateString()===n.toDateString()?"Yesterday":C.value.toDateString()===v.toDateString()?"Tomorrow":C.value.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})}),B=()=>{const n=new Date(C.value);n.setDate(n.getDate()-1),C.value=n},z=()=>{const n=new Date(C.value);n.setDate(n.getDate()+1),C.value=n},j=()=>{C.value=new Date},k=e.computed(()=>o.resources?.length===0?10:Math.max(...(o.resources||[]).map(n=>n.capacity||10))),E=e.computed(()=>(o.resources?.length||0)===0?60:Math.min(...(o.resources||[]).map(n=>n.interval||60))),i=e.computed(()=>{const n={total:{label:"Total Reservations",color:void 0}};return(o.resources||[]).forEach((v,w)=>{n[v.id]={label:v.name,color:v.color||`var(--chart-${w%5+1})`}}),n});e.watch(()=>o.resources,n=>{(n?.length||0)>0&&!s.value&&(s.value=n[0].id)},{immediate:!0});const p=e.computed(()=>[...o.resources||[]].sort((n,v)=>{const w=d.value[n.id]||0;return(d.value[v.id]||0)-w})),$=e.computed(()=>{const n=[];return E.value,r.value.forEach((v,w)=>{v.time.endsWith(":00")&&n.push(w)}),n}),d=e.computed(()=>{const n={};return o.resources?.forEach(v=>{n[v.id]=a.value.filter(w=>w.resourceId===v.id).reduce((w,D)=>w+(D.reserved||0),0)}),n}),R=n=>{const v=n.getFullYear(),w=String(n.getMonth()+1).padStart(2,"0"),D=String(n.getDate()).padStart(2,"0");return`${v}-${w}-${D}`},_=n=>{const[v,w]=n.split(":").map(Number);return v*60+w},L=(n,v)=>(o.agendaData?.exceptions||[]).find(D=>v>=D.startDate&&v<=D.endDate?D.resourceIds===null?!0:D.resourceIds?.includes(n):!1)||null,T=e.computed(()=>{const n=R(C.value),v=C.value.getDay();let w=1440,D=0;if((o.resources||[]).forEach(G=>{const I=L(G.id,n);if(I){if(I.isClosed)return;I.timeslots.forEach(O=>{const x=_(O.startTime),b=_(O.endTime);w=Math.min(w,x),D=Math.max(D,b)})}else(G.openingHours?.[v]||[]).forEach(x=>{const b=_(x.start),F=_(x.end);w=Math.min(w,b),D=Math.max(D,F)})}),w>=D)return{startMinutes:540,endMinutes:1020};const P=Math.floor(w/60)*60,q=Math.ceil(D/60)*60;return{startMinutes:P,endMinutes:q}}),H=()=>{const n=[],v=E.value,{startMinutes:w,endMinutes:D}=T.value;for(let P=w;P<D;P+=v){const q=Math.floor(P/60),G=P%60,I=`${String(q).padStart(2,"0")}:${String(G).padStart(2,"0")}`,O={time:I,label:I};o.resources?.forEach(x=>{O[x.id]=0}),n.push(O)}return n},U=async()=>{m.value=!0;try{const n=f.value.id,v=R(C.value),w=`${n}_${v}`,D=await g.get(c.reservedSpotsCollection,w);a.value=[];for(const I of o.resources||[]){const O=D?.[I.id]||{};Object.entries(O).forEach(([x,b])=>{const[F,Y]=x.split("-");a.value.push({resourceId:I.id,startTime:F,endTime:Y,reserved:b})})}const P=H(),q=E.value,{startMinutes:G}=T.value;a.value.forEach(I=>{const O=_(I.startTime),x=_(I.endTime);for(let b=O;b<x;b+=q){const F=Math.floor((b-G)/q);if(F>=0&&F<P.length){const Y=P[F][I.resourceId];typeof Y=="number"&&(P[F][I.resourceId]=Y+(I.reserved||0))}}}),r.value=P}catch(n){console.error("Error loading reservation data:",n),r.value=H(),a.value=[]}finally{m.value=!1}};return(async()=>await U())(),e.watch(C,()=>{U()}),e.watch(()=>o.resources,()=>{(o.resources?.length||0)>0&&U()}),(n,v)=>{const w=e.resolveComponent("CardTitle"),D=e.resolveComponent("Button"),P=e.resolveComponent("CardDescription"),q=e.resolveComponent("CardHeader"),G=e.resolveComponent("ChartContainer"),I=e.resolveComponent("CardContent"),O=e.resolveComponent("Card");return e.openBlock(),e.createBlock(O,{class:"py-4 sm:py-0"},{default:e.withCtx(()=>[e.createVNode(q,{class:"flex flex-col items-stretch border-b !p-0 sm:flex-row"},{default:e.withCtx(()=>[e.createElementVNode("div",_e,[e.createElementVNode("div",Ve,[e.createVNode(w,null,{default:e.withCtx(()=>[...v[2]||(v[2]=[e.createTextVNode("Reservations",-1)])]),_:1}),e.createElementVNode("div",we,[e.createVNode(D,{variant:"ghost",size:"icon",class:"size-8",onClick:B},{default:e.withCtx(()=>[e.createVNode(e.unref(A.ChevronLeft),{size:16})]),_:1}),e.createVNode(D,{variant:"ghost",size:"sm",class:"h-8 px-3 text-xs",onClick:j},{default:e.withCtx(()=>[...v[3]||(v[3]=[e.createTextVNode(" Today ",-1)])]),_:1}),e.createVNode(D,{variant:"ghost",size:"icon",class:"size-8",onClick:z},{default:e.withCtx(()=>[e.createVNode(e.unref(A.ChevronRight),{size:16})]),_:1})])]),e.createVNode(P,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)),1)]),_:1})]),h.resources.length>0?(e.openBlock(),e.createBlock(be,{key:0,resources:h.resources,totals:e.unref(d),viewMode:e.unref(t),"onUpdate:viewMode":v[0]||(v[0]=x=>e.isRef(t)?t.value=x:null),activeChart:e.unref(s),"onUpdate:activeChart":v[1]||(v[1]=x=>e.isRef(s)?s.value=x:null)},null,8,["resources","totals","viewMode","activeChart"])):(e.openBlock(),e.createElementBlock("div",Ne," No resources configured "))]),_:1}),e.createVNode(I,{class:"px-2 sm:p-6"},{default:e.withCtx(()=>[e.unref(m)?(e.openBlock(),e.createElementBlock("div",Se,[...v[4]||(v[4]=[e.createElementVNode("div",{class:"text-muted-foreground"},"Loading...",-1)])])):h.resources.length===0?(e.openBlock(),e.createElementBlock("div",De,[...v[5]||(v[5]=[e.createElementVNode("div",{class:"text-muted-foreground"},"No resources to display",-1)])])):e.unref(t)==="stacked"?(e.openBlock(),e.createBlock(G,{key:2,config:e.unref(i),class:"aspect-auto h-[250px] w-full",cursor:""},{default:e.withCtx(()=>[e.createVNode(e.unref(M.S),{data:e.unref(r),margin:{left:-24},"y-domain":[0,e.unref(k)]},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),x=>(e.openBlock(),e.createBlock(e.unref(Z),{key:x.id,x:(b,F)=>F,y:b=>b[x.id]||0,color:b=>b[x.id]>0?e.unref(i)[x.id]?.color:"#61616180","bar-padding":.1,"rounded-corners":2},null,8,["x","y","color"]))),128)),e.createVNode(e.unref(M.C),{type:"x",x:(x,b)=>b,"tick-line":!1,"domain-line":!1,"grid-line":!1,"tick-values":e.unref($),"tick-format":x=>e.unref(r)[x]?.time||""},null,8,["x","tick-values","tick-format"]),e.createVNode(e.unref(M.C),{type:"y","num-ticks":3,"tick-line":!1,"domain-line":!1}),e.createVNode(e.unref(M.z)),e.createVNode(e.unref(M.A),{template:e.unref(X.componentToString)(e.unref(i),e.unref(X.ChartTooltipContent),{labelFormatter(x){const b=Math.round(x);return b>=0&&b<e.unref(r).length&&e.unref(r)[b]?.time||""}}),color:"#0000"},null,8,["template"])]),_:1},8,["data","y-domain"])]),_:1},8,["config"])):(e.openBlock(),e.createBlock(G,{key:3,config:e.unref(i),class:"aspect-auto h-[250px] w-full",cursor:""},{default:e.withCtx(()=>[e.createVNode(e.unref(M.S),{data:e.unref(r),margin:{left:-24},"y-domain":[0,e.unref(k)]},{default:e.withCtx(()=>[e.createVNode(e.unref(Z),{x:(x,b)=>b,y:x=>x[e.unref(s)]||0,color:x=>x[e.unref(s)]>0?e.unref(i)[e.unref(s)]?.color:"hsl(var(--muted))","bar-padding":.1,"rounded-corners":!1},null,8,["x","y","color"]),e.createVNode(e.unref(M.C),{type:"x",x:(x,b)=>b,"tick-line":!1,"domain-line":!1,"grid-line":!1,"tick-values":e.unref($),"tick-format":x=>e.unref(r)[x]?.time||""},null,8,["x","tick-values","tick-format"]),e.createVNode(e.unref(M.C),{type:"y","num-ticks":3,"tick-line":!1,"domain-line":!1}),e.createVNode(e.unref(M.z)),e.createVNode(e.unref(M.A),{template:e.unref(X.componentToString)(e.unref(i),e.unref(X.ChartTooltipContent),{labelFormatter(x){const b=Math.round(x);return b>=0&&b<e.unref(r).length&&e.unref(r)[b]?.time||""}}),color:"#0000"},null,8,["template"])]),_:1},8,["data","y-domain"])]),_:1},8,["config"]))]),_:1})]),_:1})}}}),Be={class:"flex flex-row items-center justify-between gap-2"},$e={class:"relative mb-4"},Me={class:"flex gap-1 mb-4 flex-wrap"},Te={key:0,class:"mb-3 text-sm text-muted-foreground"},Re={key:1,class:"flex items-center justify-center py-8"},ze={key:2,class:"flex flex-col items-center gap-2 text-center py-8 text-muted-foreground"},Ie={key:3,class:"text-center py-8 text-muted-foreground"},Pe={key:4,class:"space-y-2"},Ae=["onClick"],je={class:"flex items-start justify-between"},Oe={class:"flex-1"},Le={class:"font-medium"},Fe={class:"text-sm text-muted-foreground"},We={class:"text-sm text-muted-foreground"},Ge={class:"flex items-center gap-4 flex-wrap"},qe={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},He={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},Ue={key:0,class:"flex items-center gap-1 mt-1 text-xs text-muted-foreground"},Ye={class:"text-right"},Xe={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"},Ke={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"},Qe={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"},Je={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"},Ze={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"},et={key:5,class:"text-sm font-medium mt-1"},tt=e.defineComponent({__name:"BookingsList",props:{activeDate:{},selectedResource:{},resources:{}},setup(h){const l=h,{params:o}=W.useModuleRoute(),{config:u}=W.useModule(),f=W.useFirebaseIntegration(u.project),c=e.ref([]),g=e.ref(!0),r=e.ref(""),a=e.ref(null),m=e.computed(()=>({date:t(l.activeDate),resource:null}));e.provide("event",m);const t=i=>{const p=i.getFullYear(),$=String(i.getMonth()+1).padStart(2,"0"),d=String(i.getDate()).padStart(2,"0");return`${p}-${$}-${d}`},s=e.computed(()=>{let i=c.value;return l.selectedResource&&(i=i.filter(p=>p.resourceId===l.selectedResource)),r.value.trim()&&(i=new J.Fuse(i,{keys:["customerInfo.firstName","customerInfo.lastName","customerInfo.email","customerInfo.phone","resourceName"],threshold:.3,ignoreLocation:!0}).search(r.value).map($=>$.item)),i}),N=e.computed(()=>s.value.filter(i=>z.value.includes(i.reservationStatus))),C=e.computed(()=>c.value.some(i=>i.reservationStatus==="approved"||i.reservationStatus==="needs_approval")),S=e.computed(()=>({spots:c.value.reduce((i,p)=>i+(p.spots||0),0),bookings:c.value.length})),B=()=>{r.value=""},z=e.ref(["needs_approval","approved"]),j=i=>{z.value.includes(i)?z.value=z.value.filter(p=>p!==i):z.value.push(i)},k=async()=>{g.value=!0,c.value=[];try{const i=o.value.id,p=t(l.activeDate),$=new Set;l.resources?.forEach(_=>{const L=`${_.id}_${p}`;$.add(L)});const d=await f.find(u.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:i},{field:"status",operator:"==",value:"confirmed"},{field:"flattenedReservationDates",operator:"array-contains-any",value:Array.from($)}]});let R=[];d.forEach(_=>{(_.reservations?.filter(T=>T.date===p)||[]).forEach(T=>{const H=l.resources.find(U=>U.id===T.resourceId);R.push({customerInfo:_.customerInfo,amountDue:_.amountDue,amountPaid:_.amountPaid,status:_.status,reservationStatus:T.status,subtotal:_.subtotal,total:_.total,discount:_.discount,id:_.id,res_id:T.id,resourceId:T.resourceId,spots:T.spots,date:p,startTime:T.timeslot?.startTime,endTime:T.timeslot?.endTime,reservationPrice:T.totalPrice,reservationBasePrice:T.basePrice,reservationAddOnsPrice:T.addOnsPrice,pricingOptionId:T.pricingOptionId,pricingOption:T.pricingOption,resourceName:H?.name||"Unknown",resourceColor:H?.color})})}),c.value=R.sort((_,L)=>_.startTime?.localeCompare(L.startTime||"")||0)}catch(i){console.error("Error loading orders:",i),c.value=[]}finally{g.value=!1}};return(async()=>await k())(),e.watch(()=>l.activeDate,()=>{k()}),(i,p)=>{const $=e.resolveComponent("Badge"),d=e.resolveComponent("CardTitle"),R=e.resolveComponent("CardDescription"),_=e.resolveComponent("Button"),L=e.resolveComponent("CardHeader"),T=e.resolveComponent("Input"),H=e.resolveComponent("CardContent"),U=e.resolveComponent("Card");return e.openBlock(),e.createBlock(U,null,{default:e.withCtx(()=>[e.createVNode(L,null,{default:e.withCtx(()=>[e.createElementVNode("div",Be,[e.createElementVNode("div",null,[e.createVNode(d,{class:"flex items-center gap-2"},{default:e.withCtx(()=>[p[6]||(p[6]=e.createTextVNode(" Bookings ",-1)),e.unref(S).bookings>0?(e.openBlock(),e.createBlock($,{key:0,variant:"secondary"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S).bookings),1)]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createVNode(R,{class:"flex items-center gap-2 mt-1"},{default:e.withCtx(()=>[e.createVNode(e.unref(A.Users),{size:14}),e.createElementVNode("span",null,e.toDisplayString(e.unref(S).spots)+" total spots",1)]),_:1})]),e.createVNode(_,{variant:"ghost",size:"icon",onClick:k,disabled:e.unref(g)},{default:e.withCtx(()=>[e.createVNode(e.unref(A.RefreshCw),{size:16,class:e.normalizeClass({"animate-spin":e.unref(g)})},null,8,["class"])]),_:1},8,["disabled"])])]),_:1}),e.createVNode(H,null,{default:e.withCtx(()=>[e.createElementVNode("div",$e,[e.createVNode(e.unref(A.Search),{size:16,class:"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"}),e.createVNode(T,{modelValue:e.unref(r),"onUpdate:modelValue":p[0]||(p[0]=V=>e.isRef(r)?r.value=V:null),placeholder:"Search by name, email, or phone...",class:"pl-9 pr-9"},null,8,["modelValue"]),e.unref(r)?(e.openBlock(),e.createBlock(_,{key:0,variant:"ghost",size:"icon",class:"absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7",onClick:B},{default:e.withCtx(()=>[e.createVNode(e.unref(A.X),{size:14})]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",Me,[e.createElementVNode("button",{onClick:p[1]||(p[1]=V=>j("needs_approval")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("needs_approval")}])}," Needs Approval ",2),e.createElementVNode("button",{onClick:p[2]||(p[2]=V=>j("approved")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("approved")}])}," Approved ",2),e.createElementVNode("button",{onClick:p[3]||(p[3]=V=>j("rejected")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("rejected")}])}," Rejected ",2),e.createElementVNode("button",{onClick:p[4]||(p[4]=V=>j("cancelled")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(z).includes("cancelled")}])}," Cancelled ",2)]),e.unref(r)?(e.openBlock(),e.createElementBlock("div",Te," Showing "+e.toDisplayString(e.unref(s).length)+" of "+e.toDisplayString(e.unref(c).length)+" bookings ",1)):e.createCommentVNode("",!0),e.unref(g)?(e.openBlock(),e.createElementBlock("div",Re,[...p[7]||(p[7]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):e.unref(N).length===0?(e.openBlock(),e.createElementBlock("div",ze,[p[9]||(p[9]=e.createTextVNode(" No bookings for this day ",-1)),e.unref(C)?(e.openBlock(),e.createBlock(_,{key:0,onClick:p[5]||(p[5]=V=>z.value=["needs_approval","approved"])},{default:e.withCtx(()=>[...p[8]||(p[8]=[e.createTextVNode("Reset filters",-1)])]),_:1})):e.createCommentVNode("",!0)])):e.unref(s).length===0?(e.openBlock(),e.createElementBlock("div",Ie," No bookings match your search ")):(e.openBlock(),e.createElementBlock("div",Pe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),V=>(e.openBlock(),e.createElementBlock("div",{key:V.res_id||V.id,class:"p-3 border rounded-lg hover:bg-muted/50 transition-colors cursor-pointer",onClick:n=>e.unref(a)?.openDialog(V)},[e.createElementVNode("div",je,[e.createElementVNode("div",Oe,[e.createElementVNode("div",Le,e.toDisplayString(V.customerInfo?.firstName)+" "+e.toDisplayString(V.customerInfo?.lastName||"Unknown Customer"),1),e.createElementVNode("div",Fe,e.toDisplayString(V.customerInfo?.email),1),e.createElementVNode("div",We,e.toDisplayString(V.customerInfo?.phone),1),e.createElementVNode("div",Ge,[e.createElementVNode("div",qe,[e.createVNode(e.unref(A.Clock),{size:12}),e.createElementVNode("span",null,e.toDisplayString(V.startTime)+" - "+e.toDisplayString(V.endTime),1)]),e.createElementVNode("div",He,[e.createVNode(e.unref(A.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(V.spots)+" spots",1)]),V.resourceName?(e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("div",{class:"w-3 h-3 rounded-full",style:e.normalizeStyle({backgroundColor:V.resourceColor||"#6b7280"})},null,4),e.createElementVNode("span",null,e.toDisplayString(V.resourceName),1)])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ye,[V.reservationStatus==="needs_approval"?(e.openBlock(),e.createElementBlock("span",Xe,"Needs Approval")):V.reservationStatus==="approved"?(e.openBlock(),e.createElementBlock("span",Ke,"Approved")):V.reservationStatus==="rejected"?(e.openBlock(),e.createElementBlock("span",Qe,"Rejected")):V.reservationStatus==="cancelled"?(e.openBlock(),e.createElementBlock("span",Je,"Cancelled")):(e.openBlock(),e.createElementBlock("span",Ze,"Pending")),V.reservationPrice||V.reservationPrice===0?(e.openBlock(),e.createElementBlock("div",et," €"+e.toDisplayString(V.reservationPrice.toFixed(2)),1)):e.createCommentVNode("",!0)])])],8,Ae))),128))]))]),_:1}),e.createVNode(J._sfc_main,{ref_key:"reservationDetailDialog",ref:a,onCancelled:k,onConfirmed:k,onRejected:k},null,512)]),_:1})}}}),ot={class:"space-y-6"},nt={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},at={class:"text-2xl font-semibold tracking-tight"},rt={class:"flex flex-col md:flex-row gap-2"},st={class:"grid gap-6 md:grid-cols-2 lg:grid-cols-3"},lt={class:"md:col-span-2 lg:col-span-3"},it=e.defineComponent({__name:"index",setup(h){const{hasPermission:l}=W.useModulePermissions(),{params:o,resolvePath:u}=W.useModuleRoute(),{config:f}=W.useModule(),c=W.useFirebaseIntegration(f.project),g=e.ref(""),r=e.ref(!0),a=e.ref(new Date),m=e.ref(null),t=e.ref("stacked"),s=e.ref(null),N=e.ref([]);return(async()=>{try{const S=await c.get(f.agendaCollection,o.value.id);g.value=S?.serviceName||"",s.value=S,N.value=S?.resources?.filter(B=>B.isActive)||[]}catch(S){console.error("Error loading data:",S)}finally{r.value=!1}})(),e.provide("agendaData",s),(S,B)=>{const z=e.resolveComponent("Button"),j=e.resolveComponent("NuxtLink");return e.openBlock(),e.createBlock(ne._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",ot,[e.createElementVNode("div",nt,[e.createElementVNode("div",null,[e.createElementVNode("h1",at,e.toDisplayString(e.unref(g)||"Dashboard"),1),B[3]||(B[3]=e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"}," Overview and analytics for your booking service ",-1))]),e.createElementVNode("div",rt,[e.unref(l)("manage-reservations")?(e.openBlock(),e.createBlock(re._sfc_main,{key:0})):e.createCommentVNode("",!0),e.createVNode(j,{to:e.unref(u)(`/edit/${e.unref(o).id}/agenda`)},{default:e.withCtx(()=>[e.createVNode(z,{class:"w-full"},{default:e.withCtx(()=>[e.createVNode(e.unref(A.Calendar),{class:"size-4"}),B[4]||(B[4]=e.createTextVNode(" View Agenda ",-1))]),_:1})]),_:1},8,["to"])])]),e.createVNode(Ee,{modelValue:e.unref(a),"onUpdate:modelValue":B[0]||(B[0]=k=>e.isRef(a)?a.value=k:null),"view-mode":e.unref(t),"onUpdate:viewMode":B[1]||(B[1]=k=>e.isRef(t)?t.value=k:null),"onUpdate:selectedResource":B[2]||(B[2]=k=>m.value=k),"agenda-data":e.unref(s),resources:e.unref(N)},null,8,["modelValue","view-mode","agenda-data","resources"]),e.createElementVNode("div",st,[e.createElementVNode("div",lt,[e.unref(N).length>0?(e.openBlock(),e.createBlock(tt,{key:0,"active-date":e.unref(a),"selected-resource":e.unref(m),resources:e.unref(N)},null,8,["active-date","selected-resource","resources"])):e.createCommentVNode("",!0)])])])]),_:1})}}});exports.default=it;
@@ -3,11 +3,11 @@ import { useModuleRoute as ye, useModule as be, useFirebaseIntegration as _e, us
3
3
  import { Layers as ge, ChevronDown as Fe, ChevronLeft as We, ChevronRight as Ge, Users as ke, RefreshCw as He, Search as Ue, X as qe, Clock as Ye, Calendar as Xe } from "lucide-vue-next";
4
4
  import { _ as Qe } from "./EditLayout.vue_vue_type_script_setup_true_lang-CcysXzmW.mjs";
5
5
  import { h as fe, t as Je, s as Ke, M as re, a3 as he, a4 as Ze, J as Se, _ as De, y as le, P as Ce, a5 as et, a6 as tt, a7 as st, q as at, j as ot, R as nt, Q as rt, Z as lt } from "./index-CMk3uhUt.mjs";
6
- import { g as we, h as $e } from "./index-DYpruS-A-D38FBcI3.mjs";
6
+ import { componentToString as we, ChartTooltipContent as $e } from "@oneclick.dev/cms-kit/charts";
7
7
  import { a as it } from "./index-B-lVEpFX.mjs";
8
8
  import { X as ct, O as Ie, a as dt, b as ut, r as mt, D as de, S as Me, C as ue, z as Ve, A as Re } from "./index-_2lRVt_k.mjs";
9
- import { F as pt, _ as vt } from "./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-B7ks5mbf.mjs";
10
- import { _ as ft } from "./NewReservationDialog.vue_vue_type_script_setup_true_lang-Ds7z0qeH.mjs";
9
+ import { F as pt, _ as vt } from "./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Cohhnd5x.mjs";
10
+ import { _ as ft } from "./NewReservationDialog.vue_vue_type_script_setup_true_lang-Bc946oSc.mjs";
11
11
  function gt({ x: _, y: c, w: s, h: p, tl: g = !1, tr: u = !1, bl: x = !1, br: r = !1, r: o = 0 }) {
12
12
  let v;
13
13
  v = `M${_ + o},${c}h${s - 2 * o}`;