@oneclick.dev/cms-core-modules 0.0.59 → 0.0.60

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 (147) hide show
  1. package/dist/{Components-D9yIIosM.mjs → Components-C83O-xlF.mjs} +1 -1
  2. package/dist/{ContentEditor-DCmt_y_R.js → ContentEditor-BAepN3Yd.js} +51 -34
  3. package/dist/{ContentEditor-CtGeIzC4.mjs → ContentEditor-BPjWW3d1.mjs} +12341 -10099
  4. package/dist/Create-Bh4g6QW4.js +1 -0
  5. package/dist/{Create-Bwf1RXdG.mjs → Create-Cf7pvh5G.mjs} +38 -39
  6. package/dist/DateFormatter-BPPBZp1j.js +1 -0
  7. package/dist/{CalendarDate-CRT2Viyt.mjs → DateFormatter-DsmlAuYV.mjs} +353 -256
  8. package/dist/{Detail-CpfOQChd.mjs → Detail-B4b_FLDa.mjs} +2 -2
  9. package/dist/{Detail-B-PnkcXD.mjs → Detail-BGD75ul4.mjs} +2 -2
  10. package/dist/{Detail-Dd_OkpcN.js → Detail-BayNaAg9.js} +1 -1
  11. package/dist/{Detail-C4E1T87K.mjs → Detail-Byk781b4.mjs} +3 -3
  12. package/dist/{Detail-Cd5CBVN0.js → Detail-CnK-qbhE.js} +1 -1
  13. package/dist/Detail-CtbWzq-R.js +1 -0
  14. package/dist/{Detail-CNfTDUE5.js → Detail-Cxd2VMOl.js} +1 -1
  15. package/dist/{Detail-BVlGSjOq.mjs → Detail-D10shmpK.mjs} +6 -7
  16. package/dist/{Detail-CwagT6gQ.mjs → Detail-U0mgLKt6.mjs} +2 -2
  17. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-CcysXzmW.mjs +75 -0
  18. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js +1 -0
  19. package/dist/{Entries-zyhycw1M.mjs → Entries-C6Di46My.mjs} +1 -1
  20. package/dist/{Find-BPR0uU-Z.mjs → Find-B4sAEx0B.mjs} +2 -2
  21. package/dist/{Find-BidEQJxT.js → Find-Ds6OvuH6.js} +1 -1
  22. package/dist/{GlobalStyling-BLQ_1W2y.mjs → GlobalStyling-C9VthHWK.mjs} +1 -1
  23. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BJitmbPE.mjs +396 -0
  24. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-D50uTpZY.js +1 -0
  25. package/dist/Overview-B-8TLLjh.js +1 -0
  26. package/dist/{Overview-CDN88OSM.mjs → Overview-BCpJNiEB.mjs} +1 -1
  27. package/dist/Overview-B_99j5eA.js +1 -0
  28. package/dist/{Overview-BLsZMHNW.mjs → Overview-CIa1E-HH.mjs} +1 -1
  29. package/dist/{Overview-D1nJLBe1.mjs → Overview-CgViRnNc.mjs} +1 -1
  30. package/dist/Overview-DtWvKB3W.mjs +327 -0
  31. package/dist/Overview-HvlDEgqi.mjs +862 -0
  32. package/dist/{Overview-BH3NwvNX.mjs → Overview-Su8ZUbMs.mjs} +3 -3
  33. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CI8YgHdU.js +345 -0
  34. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-P-MWwcVh.mjs +2093 -0
  35. package/dist/{TableView-CS13LLxk.mjs → TableView-B8iLWWcP.mjs} +48394 -36321
  36. package/dist/TableView-BxK6R8v3.js +312 -0
  37. package/dist/{TemplateList.vue_vue_type_script_setup_true_lang-BiLAkhIA.mjs → TemplateList.vue_vue_type_script_setup_true_lang-Cmovy7kk.mjs} +5 -5
  38. package/dist/{View-C7axVP9t.mjs → View-DDXN0tKD.mjs} +7 -7
  39. package/dist/View-DfzaVOzS.js +1 -0
  40. package/dist/agenda-D81m29_4.mjs +1135 -0
  41. package/dist/agenda-uzPPxgsW.js +1 -0
  42. package/dist/availability-B-tRp8hB.mjs +629 -0
  43. package/dist/availability-BiBbzEIM.js +1 -0
  44. package/dist/{exceptions-D3b18TiY.mjs → exceptions-BFchkR06.mjs} +70 -71
  45. package/dist/exceptions-C-DPRNQa.js +1 -0
  46. package/dist/index-4tjmIans.js +1 -0
  47. package/dist/index-AmUV8LZQ.mjs +176 -0
  48. package/dist/index-BDaVYdkD.mjs +7763 -0
  49. package/dist/{index-DT1wWnUk.mjs → index-BWDwEd8D.mjs} +1 -1
  50. package/dist/{index-CImCyE3L.mjs → index-BfBBm9uY.mjs} +1 -1
  51. package/dist/{index-DMoyoaks.mjs → index-Bkq58CeQ.mjs} +2 -2
  52. package/dist/{index-DI6mydpm.mjs → index-CABh6Qn6.mjs} +2 -2
  53. package/dist/{index-CQiY-oTN.mjs → index-CQkOH2_3.mjs} +1 -1
  54. package/dist/{index-Bwi1mtkq.mjs → index-CU-tbS5W.mjs} +1 -1
  55. package/dist/{index-BzuHN-r8.mjs → index-Cpnn_Pxd.mjs} +1 -1
  56. package/dist/index-CxETuRsG.js +1 -0
  57. package/dist/{index-DyCHxFp3.mjs → index-DRqJOqUR.mjs} +502 -449
  58. package/dist/index-DTago6vW-Bhr8E1Y6.js +88 -0
  59. package/dist/index-DTago6vW-CnomHQ_S.mjs +4123 -0
  60. package/dist/index-DfV8-6ON.js +245 -0
  61. package/dist/index-Dnn2SCSl.js +1 -0
  62. package/dist/{index-BEGU8Kme.mjs → index-Dpl9sU6a.mjs} +2 -2
  63. package/dist/index-Uf7TwBuW.mjs +110 -0
  64. package/dist/index-YMaY4uuk-BgpTtr73.js +1 -0
  65. package/dist/{index-CKPshlZ8-BQiiP6r_.mjs → index-YMaY4uuk-C_xV5K9Z.mjs} +399 -363
  66. package/dist/{index--jjEzba7.mjs → index-cOnxXTbF.mjs} +1 -1
  67. package/dist/index-hlylYYgy.mjs +24 -0
  68. package/dist/index.cjs.js +1 -1
  69. package/dist/index.mjs +98 -81
  70. package/dist/orders-Bh8w0ueq.mjs +346 -0
  71. package/dist/orders-Dt0zMz97.js +1 -0
  72. package/dist/payment-BQaAqQ5q.js +1 -0
  73. package/dist/payment-BbWByERf.mjs +1080 -0
  74. package/dist/regular-1LXNPviB.js +1 -0
  75. package/dist/regular-_05oq5Tx.mjs +1101 -0
  76. package/dist/regular-slots-Bs3WJB3U.js +1 -0
  77. package/dist/regular-slots-C2NYxLPn.mjs +222 -0
  78. package/dist/resources-DgPnEv76.mjs +811 -0
  79. package/dist/resources-eb0pivDL.js +1 -0
  80. package/dist/src/appointments/components/edit/EditLayout.vue.d.ts +2 -2
  81. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +92 -0
  82. package/dist/src/appointments/components/edit/EventDialog/CancelReservationDialog.vue.d.ts +8 -0
  83. package/dist/src/appointments/components/edit/EventDialog/EventDialog.vue.d.ts +10 -0
  84. package/dist/src/appointments/components/edit/{EventDialog.vue.d.ts → EventDialog/ResendConfirmationDialog.vue.d.ts} +1 -1
  85. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +51 -0
  86. package/dist/src/appointments/components/edit/EventDialog/TimelineChart.vue.d.ts +24 -0
  87. package/dist/src/appointments/components/edit/EventDialog/TransferReservationDialog.vue.d.ts +4 -0
  88. package/dist/src/appointments/components/edit/EventTimeline.vue.d.ts +15 -7
  89. package/dist/src/appointments/components/edit/NewReservationDialog/NewReservationDialog.vue.d.ts +2 -0
  90. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +68 -0
  91. package/dist/src/appointments/components/edit/dashboard/Timeline.vue.d.ts +15 -0
  92. package/dist/src/appointments/components/edit/dashboard/timeline/ResourceSelector.vue.d.ts +50 -0
  93. package/dist/src/appointments/config.d.ts +30 -0
  94. package/dist/src/appointments/index.d.ts +32 -5
  95. package/dist/src/appointments/pages/edit/agenda.vue.d.ts +1 -1
  96. package/dist/src/appointments/pages/edit/availability.vue.d.ts +1 -1
  97. package/dist/src/appointments/pages/edit/index.vue.d.ts +1 -1
  98. package/dist/src/appointments/pages/edit/orders.vue.d.ts +64 -0
  99. package/dist/src/appointments/pages/edit/payment.vue.d.ts +1 -1
  100. package/dist/src/appointments/pages/edit/regular-slots.vue.d.ts +1 -1
  101. package/dist/src/appointments/pages/edit/resources.vue.d.ts +1 -1
  102. package/dist/src/appointments/routes.d.ts +2 -5
  103. package/dist/src/appointments/types.d.ts +16 -0
  104. package/dist/src/appointments/utils/printReservation.d.ts +45 -0
  105. package/dist/src/content-manager/components/content-editor/ContentStructuredContentSections.vue.d.ts +4 -0
  106. package/dist/src/content-manager/components/content-editor/PageSettings.vue.d.ts +2 -0
  107. package/dist/src/content-manager/components/content-editor/SidebarSectionWrapper.vue.d.ts +11 -1
  108. package/dist/src/content-manager/types.d.ts +5 -0
  109. package/dist/{vee-validate-zod-BPQyEfpF.js → vee-validate-zod-ByykgYKJ.js} +1 -1
  110. package/dist/{vee-validate-zod-IXkfh-6Q.mjs → vee-validate-zod-CcOwoF6y.mjs} +4 -4
  111. package/package.json +4 -2
  112. package/dist/CalendarDate-CWtpXgpD.js +0 -1
  113. package/dist/Create-BP8TX6rj.js +0 -1
  114. package/dist/DateFormatter-BbcSwTs4.js +0 -1
  115. package/dist/DateFormatter-CbO0PVUK.mjs +0 -99
  116. package/dist/Detail-DUo6qKqO.js +0 -1
  117. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-BWuKVkvV.js +0 -1
  118. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-D0-EcU0_.mjs +0 -55
  119. package/dist/Overview-BNMZ9MUK.js +0 -1
  120. package/dist/Overview-CEPodGCn.mjs +0 -311
  121. package/dist/Overview-CvquDPhB.js +0 -1
  122. package/dist/Overview-D67UjG6n.mjs +0 -947
  123. package/dist/RegularSlotEditor.vue_vue_type_script_setup_true_lang-0xZSq0rx.js +0 -1
  124. package/dist/RegularSlotEditor.vue_vue_type_script_setup_true_lang-Bj_PVLLV.mjs +0 -392
  125. package/dist/TableView-Dv4YXBD1.js +0 -111
  126. package/dist/View-7qb_ohVo.js +0 -1
  127. package/dist/agenda-B49oKGeh.mjs +0 -706
  128. package/dist/agenda-DipQ5IWP.js +0 -1
  129. package/dist/availability-C7q9tq6l.js +0 -1
  130. package/dist/availability-DeCkqiu8.mjs +0 -613
  131. package/dist/exceptions-DJ9zWX3k.js +0 -1
  132. package/dist/index-CKPshlZ8-CIz1tDwX.js +0 -1
  133. package/dist/index-DUeFrD-B.js +0 -1
  134. package/dist/index-DsnoK4ia.mjs +0 -579
  135. package/dist/index-WL1P6d3j.js +0 -1
  136. package/dist/index-_mG-aU3Z.mjs +0 -87
  137. package/dist/index-_sQDF1pH.js +0 -1
  138. package/dist/index-klI238nT.mjs +0 -24
  139. package/dist/payment-kTjsV0Jj.js +0 -1
  140. package/dist/payment-zpCM0LD-.mjs +0 -981
  141. package/dist/regular-C4_3YXqx.mjs +0 -602
  142. package/dist/regular-DFwPEbZO.js +0 -1
  143. package/dist/regular-slots-4ooEpICB.mjs +0 -67
  144. package/dist/regular-slots-BAVGbomI.js +0 -1
  145. package/dist/resources-MpQkSstv.mjs +0 -563
  146. package/dist/resources-iM28T3dD.js +0 -1
  147. package/dist/src/appointments/components/edit/RegularSlotEditor.vue.d.ts +0 -16
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Z=require("./EditLayout.vue_vue_type_script_setup_true_lang-Czu6Dcde.js"),u=require("lucide-vue-next"),M=require("@oneclick.dev/cms-kit"),ee=require("./index-CxETuRsG.js"),te={class:"space-y-5 py-4"},oe={class:"flex flex-wrap gap-2 mt-2"},ne=["onClick"],le={class:"space-y-2"},ae={class:"flex items-center justify-between mb-2"},se={class:"text-sm font-medium"},re={class:"flex items-center gap-1"},de={class:"space-y-2"},ie={key:0,class:"text-sm text-muted-foreground italic py-1"},ce={class:"flex items-center justify-between rounded-lg border p-4"},ue={class:"space-y-0.5"},me={class:"text-xs text-muted-foreground"},pe={class:"w-full flex justify-between items-center gap-4 flex-col @sm/dialog-footer:flex-row"},ve={class:"flex items-center gap-2 ml-auto w-full @sm/dialog-footer:w-auto flex-col-reverse @sm/dialog-footer:flex-row"},fe=e.defineComponent({__name:"ResourceEditorDialog",emits:["add-resource","update-resource","remove-resource"],setup(Q,{expose:R,emit:y}){const C=y,i=e.ref(!1),p=e.ref("add"),d=["#ef4444","#f97316","#f59e0b","#eab308","#84cc16","#22c55e","#10b981","#14b8a6","#06b6d4","#0ea5e9","#3b82f6","#6366f1","#8b5cf6","#a855f7","#d946ef","#ec4899","#f43f5e"],g=[{value:1,label:"Monday"},{value:2,label:"Tuesday"},{value:3,label:"Wednesday"},{value:4,label:"Thursday"},{value:5,label:"Friday"},{value:6,label:"Saturday"},{value:0,label:"Sunday"}],n=e.reactive({id:"",name:"",publicLabel:"",avatarLabel:"",description:"",capacity:1,interval:30,openingHours:{0:[],1:[{start:"09:00",end:"17:00"}],2:[{start:"09:00",end:"17:00"}],3:[{start:"09:00",end:"17:00"}],4:[{start:"09:00",end:"17:00"}],5:[{start:"09:00",end:"17:00"}],6:[]},color:"blue",isActive:!0}),w=r=>{p.value=r?"edit":"add",n.id=r?.id||"",n.name=r?.name||"",n.publicLabel=r?.publicLabel||"",n.avatarLabel=r?.avatarLabel||"",n.description=r?.description||"",n.capacity=r?.capacity||1,n.interval=r?.interval||30,n.openingHours=r?.openingHours||{0:[],1:[{start:"09:00",end:"17:00"}],2:[{start:"09:00",end:"17:00"}],3:[{start:"09:00",end:"17:00"}],4:[{start:"09:00",end:"17:00"}],5:[{start:"09:00",end:"17:00"}],6:[]},n.color=r?.color||"blue",n.isActive=r?.isActive!==void 0?r.isActive:!0,i.value=!0},N=()=>{i.value=!1},k=()=>{C("add-resource",{...n}),i.value=!1},A=()=>{C("update-resource",{...n}),i.value=!1},f=()=>{C("remove-resource",n.id),i.value=!1},E=e.computed(()=>n.name.trim().length>0),z=r=>{n.openingHours[r]||(n.openingHours[r]=[]),n.openingHours[r].push({start:"09:00",end:"17:00"})},h=(r,t)=>{n.openingHours[r].splice(t,1)},L=r=>{const t=n.openingHours[r];g.forEach(x=>{n.openingHours[x.value]=JSON.parse(JSON.stringify(t))})},$=r=>{n.openingHours[r]=[]};return R({openDialog:w}),(r,t)=>{const x=e.resolveComponent("DialogTitle"),I=e.resolveComponent("DialogDescription"),D=e.resolveComponent("DialogHeader"),l=e.resolveComponent("Label"),o=e.resolveComponent("Input"),c=e.resolveComponent("NumberFieldDecrement"),U=e.resolveComponent("NumberFieldInput"),F=e.resolveComponent("NumberFieldIncrement"),b=e.resolveComponent("NumberFieldContent"),H=e.resolveComponent("NumberField"),j=e.resolveComponent("SelectValue"),q=e.resolveComponent("SelectTrigger"),V=e.resolveComponent("SelectItem"),O=e.resolveComponent("SelectContent"),B=e.resolveComponent("Select"),m=e.resolveComponent("Button"),P=e.resolveComponent("DropdownMenuTrigger"),S=e.resolveComponent("DropdownMenuItem"),Y=e.resolveComponent("DropdownMenuContent"),J=e.resolveComponent("DropdownMenu"),W=e.resolveComponent("Textarea"),s=e.resolveComponent("Switch"),_=e.resolveComponent("DialogFooter"),G=e.resolveComponent("DialogScrollContent"),X=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(X,{open:i.value,"onUpdate:open":t[7]||(t[7]=a=>i.value=a)},{default:e.withCtx(()=>[e.createVNode(G,{class:"sm:max-w-xl lg:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(D,null,{default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.value==="add"?"Add New Resource":"Edit Resource"),1)]),_:1}),e.createVNode(I,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.value==="add"?"Define a new bookable resource such as staff member, room, or equipment.":"Update the details of this resource."),1)]),_:1})]),_:1}),e.createElementVNode("div",te,[e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-1.5",for:"resource-name"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Resource Name ",-1),e.createElementVNode("span",{class:"text-destructive"},"*",-1)])]),_:1}),e.createVNode(o,{modelValue:n.name,"onUpdate:modelValue":t[0]||(t[0]=a=>n.name=a),id:"resource-name",placeholder:"e.g., James, Box 1, Meeting Room A"},null,8,["modelValue"]),t[9]||(t[9]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"}," Internal name visible to your team. ",-1))]),e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-1.5",for:"resource-public-label"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode(" Public Label ",-1)])]),_:1}),e.createVNode(o,{modelValue:n.publicLabel,"onUpdate:modelValue":t[1]||(t[1]=a=>n.publicLabel=a),id:"resource-public-label",placeholder:"Name shown to customers"},null,8,["modelValue"]),t[11]||(t[11]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"}," If empty, the internal name will be displayed to customers. ",-1))]),e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-1.5",for:"resource-avatar-label"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode(" Avatar Label ",-1)])]),_:1}),e.createVNode(o,{modelValue:n.avatarLabel,"onUpdate:modelValue":t[2]||(t[2]=a=>n.avatarLabel=a),id:"resource-avatar-label",placeholder:"e.g., B1, 1, JD",maxlength:"3"},null,8,["modelValue"]),t[13]||(t[13]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"}," Short text shown in the colored circle (max 3 characters). If empty, first letter of name is used. ",-1))]),e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode("Color",-1)])]),_:1}),e.createElementVNode("div",oe,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(d,a=>e.createElementVNode("button",{key:a,type:"button",class:e.normalizeClass(["size-7 rounded-full transition-all ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",[n.color===a?"ring-2 ring-ring ring-offset-2":"hover:scale-110"]]),style:e.normalizeStyle({background:a}),onClick:v=>n.color=a},null,14,ne)),64))]),t[15]||(t[15]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-2"}," Used for visual identification in the calendar. ",-1))]),e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-1.5",for:"resource-capacity"},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode(" Capacity ",-1)])]),_:1}),e.createVNode(H,{id:"resource-capacity",modelValue:n.capacity,"onUpdate:modelValue":t[3]||(t[3]=a=>n.capacity=a),min:1,max:999},{default:e.withCtx(()=>[e.createVNode(b,null,{default:e.withCtx(()=>[e.createVNode(c),e.createVNode(U),e.createVNode(F)]),_:1})]),_:1},8,["modelValue"]),t[17]||(t[17]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"}," Maximum simultaneous bookings allowed for this resource. ",-1))]),e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-1.5",for:"resource-interval"},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode(" Booking Interval ",-1)])]),_:1}),e.createVNode(B,{modelValue:n.interval,"onUpdate:modelValue":t[4]||(t[4]=a=>n.interval=a),modelModifiers:{number:!0}},{default:e.withCtx(()=>[e.createVNode(q,{id:"resource-interval"},{default:e.withCtx(()=>[e.createVNode(j,{placeholder:"Select interval"})]),_:1}),e.createVNode(O,null,{default:e.withCtx(()=>[e.createVNode(V,{value:5},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode("5 minutes",-1)])]),_:1}),e.createVNode(V,{value:10},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode("10 minutes",-1)])]),_:1}),e.createVNode(V,{value:15},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode("15 minutes",-1)])]),_:1}),e.createVNode(V,{value:30},{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("30 minutes",-1)])]),_:1}),e.createVNode(V,{value:60},{default:e.withCtx(()=>[...t[23]||(t[23]=[e.createTextVNode("1 hour",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t[24]||(t[24]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"}," Time slots will be generated at this interval within operating hours. ",-1))]),e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-2 flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Clock),{class:"w-4 h-4"}),t[25]||(t[25]=e.createTextVNode(" Operating Hours ",-1))]),_:1}),e.createElementVNode("div",le,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(g,a=>e.createElementVNode("div",{key:a.value,class:"rounded-md bg-muted/30 p-2 sm:p-3"},[e.createElementVNode("div",ae,[e.createElementVNode("span",se,e.toDisplayString(a.label),1),e.createElementVNode("div",re,[e.createVNode(m,{variant:"outline",size:"sm",class:"h-7 px-2 text-xs",onClick:v=>z(a.value)},{default:e.withCtx(()=>[...t[26]||(t[26]=[e.createTextVNode(" Add ",-1)])]),_:1},8,["onClick"]),e.createVNode(J,null,{default:e.withCtx(()=>[e.createVNode(P,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(m,{variant:"ghost",size:"icon",class:"size-7"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.MoreHorizontal),{class:"w-4 h-4"})]),_:1})]),_:1}),e.createVNode(Y,{align:"end"},{default:e.withCtx(()=>[e.createVNode(S,{onClick:v=>L(a.value)},{default:e.withCtx(()=>[...t[27]||(t[27]=[e.createTextVNode(" Copy to all days ",-1)])]),_:1},8,["onClick"]),e.createVNode(S,{onClick:v=>$(a.value),variant:"destructive"},{default:e.withCtx(()=>[...t[28]||(t[28]=[e.createTextVNode(" Set as closed ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)])]),e.createElementVNode("div",de,[n.openingHours[a.value]?.length===0?(e.openBlock(),e.createElementBlock("div",ie," Closed ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.openingHours[a.value],(v,K)=>(e.openBlock(),e.createElementBlock("div",{key:K,class:"flex items-center gap-1.5 sm:gap-2"},[e.createVNode(o,{modelValue:v.start,"onUpdate:modelValue":T=>v.start=T,type:"time",class:"flex-1 min-w-0 h-8 text-sm"},null,8,["modelValue","onUpdate:modelValue"]),t[29]||(t[29]=e.createElementVNode("span",{class:"text-muted-foreground text-xs sm:text-sm shrink-0"},"to",-1)),e.createVNode(o,{modelValue:v.end,"onUpdate:modelValue":T=>v.end=T,type:"time",class:"flex-1 min-w-0 h-8 text-sm"},null,8,["modelValue","onUpdate:modelValue"]),e.createVNode(m,{variant:"ghost",size:"icon",class:"size-7 shrink-0",onClick:T=>h(a.value,K)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Trash2),{class:"w-3.5 h-3.5 text-destructive"})]),_:1},8,["onClick"])]))),128))])])),64))]),t[30]||(t[30]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-2"}," Define when this resource is available. You can add multiple time ranges per day for split shifts. ",-1))]),e.createElementVNode("div",null,[e.createVNode(l,{class:"text-sm font-normal mb-1.5",for:"resource-description"},{default:e.withCtx(()=>[...t[31]||(t[31]=[e.createTextVNode(" Description ",-1)])]),_:1}),e.createVNode(W,{modelValue:n.description,"onUpdate:modelValue":t[5]||(t[5]=a=>n.description=a),id:"resource-description",placeholder:"Internal notes about this resource...",rows:"3"},null,8,["modelValue"]),t[32]||(t[32]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"}," Admin-only notes. Not shown to customers. ",-1))]),e.createElementVNode("div",ce,[e.createElementVNode("div",ue,[e.createVNode(l,{class:"text-sm font-medium"},{default:e.withCtx(()=>[...t[33]||(t[33]=[e.createTextVNode("Active",-1)])]),_:1}),e.createElementVNode("p",me,e.toDisplayString(n.isActive?"Resource can be used for new slots and bookings.":"Existing bookings stay, but no new ones can be created."),1)]),e.createVNode(s,{modelValue:n.isActive,"onUpdate:modelValue":t[6]||(t[6]=a=>n.isActive=a)},null,8,["modelValue"])])]),e.createVNode(_,{class:"@container/dialog-footer gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",pe,[p.value==="edit"?(e.openBlock(),e.createBlock(m,{key:0,variant:"destructive",onClick:f,class:"w-full @sm/dialog-footer:w-auto"},{default:e.withCtx(()=>[...t[34]||(t[34]=[e.createTextVNode(" Delete Resource ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",ve,[e.createVNode(m,{variant:"outline",onClick:N,class:"w-full @sm/dialog-footer:w-auto"},{default:e.withCtx(()=>[...t[35]||(t[35]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),p.value==="add"?(e.openBlock(),e.createBlock(m,{key:0,onClick:k,disabled:!E.value,class:"w-full @sm/dialog-footer:w-auto"},{default:e.withCtx(()=>[...t[36]||(t[36]=[e.createTextVNode(" Add Resource ",-1)])]),_:1},8,["disabled"])):(e.openBlock(),e.createBlock(m,{key:1,onClick:A,disabled:!E.value,class:"w-full @sm/dialog-footer:w-auto"},{default:e.withCtx(()=>[...t[37]||(t[37]=[e.createTextVNode(" Save Changes ",-1)])]),_:1},8,["disabled"]))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),xe={class:"@container/resources"},Ve={class:"flex flex-col @lg/resources:flex-row @lg/resources:items-center @lg/resources:justify-between gap-4 mb-6"},ge={class:"space-y-6"},Ne={key:0,class:"flex flex-col @md/resources:flex-row gap-4 items-start @md/resources:items-center justify-between"},Ce={class:"relative w-full @md/resources:w-64"},we={class:"text-sm text-muted-foreground"},be={key:1,class:"grid grid-cols-1 @2xl/resources:grid-cols-2 @4xl/resources:grid-cols-3 gap-4"},_e={class:"p-4 pl-5"},ye={class:"flex items-start gap-3"},ke={class:"flex-1 min-w-0"},Ee={class:"flex items-center gap-2"},he={class:"font-semibold truncate text-base"},De={key:0},Be={key:0,class:"text-sm text-muted-foreground truncate"},Se={key:0,class:"text-sm text-muted-foreground mt-3 line-clamp-2"},Te={class:"flex items-center flex-wrap gap-3 mt-4 pt-3 border-t"},Me={class:"flex items-center gap-1.5 text-xs text-muted-foreground"},Re={class:"flex items-center gap-1.5 text-xs text-muted-foreground"},Ae={class:"flex items-center gap-2"},ze={class:"text-xs text-muted-foreground"},Le={key:1,class:"flex items-center gap-1.5 text-xs text-orange-500"},$e={key:2,class:"text-center py-8 text-muted-foreground"},Ie={key:3,class:"flex justify-center py-12"},Ue={key:5,class:"fixed bottom-4 right-4 bg-background border rounded-lg px-4 py-2 shadow-lg flex items-center gap-2"},Fe=e.defineComponent({__name:"resources",setup(Q){const{width:R}=ee.useWindowSize(),{params:y}=M.useModuleRoute(),{confirm:C}=M.useConfirmation(),{config:i}=M.useModule(),p=M.useFirebaseIntegration(i.project),d=e.ref([]),g=e.ref(!1),n=e.ref(!0),w=e.ref(),N=e.ref(""),k=()=>Date.now().toString(36)+Math.random().toString(36).substr(2),A=async()=>{try{n.value=!0;const l=await p.get(i.agendaCollection,y.value.id);d.value=l.resources||[]}catch(l){console.error("Error loading resources:",l)}finally{n.value=!1}},f=async()=>{g.value=!0;try{await p.update(i.agendaCollection,y.value.id,{resources:d.value})}catch(l){console.error("Error saving resources:",l)}finally{g.value=!1}},E=l=>{const o={...l,id:k()};d.value.push(o),f()},z=l=>{const o=d.value.findIndex(c=>c.id===l.id);o!==-1&&(d.value[o]=l),f()},h=async l=>{await C("Are you sure you want to delete this resource? This action cannot be undone.","Delete Resource","Delete")&&(d.value=d.value.filter(c=>c.id!==l),f())},L=async l=>{const o=d.value.findIndex(c=>c.id===l.id);o!==-1&&(d.value[o].isActive=!d.value[o].isActive,await f())},$=l=>{const o={...l,id:k(),name:`${l.name} (Copy)`,publicLabel:l.publicLabel?`${l.publicLabel} (Copy)`:""};d.value.push(o),f()},r=()=>{w.value?.openDialog()},t=l=>{w.value?.openDialog(l)},x=e.computed(()=>{if(!N.value.trim())return d.value;const l=N.value.toLowerCase();return d.value.filter(o=>o.name.toLowerCase().includes(l)||o.publicLabel?.toLowerCase().includes(l))}),I=e.computed(()=>d.value.filter(l=>l.isActive).length),D=e.computed(()=>d.value.length);return A(),(l,o)=>{const c=e.resolveComponent("Button"),U=e.resolveComponent("Input"),F=e.resolveComponent("DropdownMenuTrigger"),b=e.resolveComponent("DropdownMenuItem"),H=e.resolveComponent("DropdownMenuSeparator"),j=e.resolveComponent("DropdownMenuContent"),q=e.resolveComponent("DropdownMenu"),V=e.resolveComponent("Switch"),O=e.resolveComponent("Card"),B=e.resolveComponent("Spinner"),m=e.resolveComponent("EmptyMedia"),P=e.resolveComponent("EmptyTitle"),S=e.resolveComponent("EmptyDescription"),Y=e.resolveComponent("EmptyHeader"),J=e.resolveComponent("EmptyContent"),W=e.resolveComponent("Empty");return e.openBlock(),e.createBlock(Z._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",xe,[e.createElementVNode("div",Ve,[o[2]||(o[2]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"text-lg font-medium"},"Resource Management"),e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"}," Define the rooms, boxes, or staff that can be booked in this agenda. ")],-1)),d.value.length>0?(e.openBlock(),e.createBlock(c,{key:0,onClick:r},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Plus),{class:"size-4 mr-1.5"}),o[1]||(o[1]=e.createTextVNode(" Add Resource ",-1))]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",ge,[d.value.length>0?(e.openBlock(),e.createElementBlock("div",Ne,[e.createElementVNode("div",Ce,[e.createVNode(U,{modelValue:N.value,"onUpdate:modelValue":o[0]||(o[0]=s=>N.value=s),placeholder:"Search resources...",class:"pl-9"},null,8,["modelValue"]),o[3]||(o[3]=e.createElementVNode("svg",{class:"absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1))]),e.createElementVNode("div",we,e.toDisplayString(I.value)+" active of "+e.toDisplayString(D.value)+" resource"+e.toDisplayString(D.value!==1?"s":""),1)])):e.createCommentVNode("",!0),x.value.length>0?(e.openBlock(),e.createElementBlock("div",be,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,s=>(e.openBlock(),e.createBlock(O,{key:s.id,class:e.normalizeClass(["group relative overflow-hidden transition-all duration-200 hover:shadow-md",s.isActive?"":"opacity-60 grayscale-[30%]"])},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"absolute inset-y-0 left-0 w-1 transition-all duration-200 group-hover:w-1.5",style:e.normalizeStyle({background:s.color})},null,4),e.createElementVNode("div",_e,[e.createElementVNode("div",ye,[e.createElementVNode("div",{class:"size-11 rounded-xl flex-shrink-0 flex items-center justify-center text-white font-semibold text-sm shadow-sm",style:e.normalizeStyle({background:s.color})},e.toDisplayString(s.avatarLabel||s.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",ke,[e.createElementVNode("div",Ee,[e.createElementVNode("h3",he,[e.createTextVNode(e.toDisplayString(s.name)+" ",1),s.isActive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",De,"(Inactive)"))])]),s.publicLabel&&s.publicLabel!==s.name?(e.openBlock(),e.createElementBlock("p",Be,e.toDisplayString(s.publicLabel),1)):e.createCommentVNode("",!0)]),e.createVNode(q,null,{default:e.withCtx(()=>[e.createVNode(F,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(c,{variant:"ghost",size:"icon",class:"size-8"},{default:e.withCtx(()=>[...o[4]||(o[4]=[e.createElementVNode("svg",{class:"size-4",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"})],-1)])]),_:1})]),_:1}),e.createVNode(j,{align:"end"},{default:e.withCtx(()=>[e.createVNode(b,{onClick:_=>t(s)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Pencil),{class:"size-4 mr-2"}),o[5]||(o[5]=e.createTextVNode(" Edit ",-1))]),_:1},8,["onClick"]),e.createVNode(b,{onClick:_=>$(s)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Copy),{class:"size-4 mr-2"}),o[6]||(o[6]=e.createTextVNode(" Duplicate ",-1))]),_:1},8,["onClick"]),e.createVNode(H),e.createVNode(b,{variant:"destructive",onClick:_=>h(s.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Trash2),{class:"size-4 mr-2"}),o[7]||(o[7]=e.createTextVNode(" Delete ",-1))]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),s.description?(e.openBlock(),e.createElementBlock("p",Se,e.toDisplayString(s.description),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Te,[e.createElementVNode("div",Me,[e.createVNode(e.unref(u.Users),{class:"size-3.5"}),e.createElementVNode("span",null,e.toDisplayString(s.capacity)+" "+e.toDisplayString(s.capacity===1?"slot":"slots"),1)]),e.createElementVNode("div",Re,[o[8]||(o[8]=e.createElementVNode("svg",{class:"size-3.5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e.createElementVNode("span",null,e.toDisplayString(s.interval)+" min",1)]),e.unref(R)>=640?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[o[9]||(o[9]=e.createElementVNode("div",{class:"flex-1"},null,-1)),e.createElementVNode("div",Ae,[e.createElementVNode("span",ze,e.toDisplayString(s.isActive?"Active":"Inactive"),1),e.createVNode(V,{defaultValue:s.isActive,"onUpdate:modelValue":_=>L(s),class:"scale-90"},null,8,["defaultValue","onUpdate:modelValue"])])],64)):s.isActive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Le,[e.createVNode(e.unref(u.CircleAlert),{class:"size-3.5"}),o[10]||(o[10]=e.createElementVNode("span",null,"Inactive",-1))]))])])]),_:2},1032,["class"]))),128))])):d.value.length>0&&x.value.length===0?(e.openBlock(),e.createElementBlock("div",$e,[...o[11]||(o[11]=[e.createElementVNode("p",null,"No resources match your search.",-1)])])):n.value?(e.openBlock(),e.createElementBlock("div",Ie,[e.createVNode(B,{class:"size-8"})])):(e.openBlock(),e.createBlock(W,{key:4,class:"border border-dashed"},{default:e.withCtx(()=>[e.createVNode(Y,null,{default:e.withCtx(()=>[e.createVNode(m,{variant:"icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Users),{class:"size-6"})]),_:1}),e.createVNode(P,null,{default:e.withCtx(()=>[...o[12]||(o[12]=[e.createTextVNode("No Resources Yet",-1)])]),_:1}),e.createVNode(S,null,{default:e.withCtx(()=>[...o[13]||(o[13]=[e.createTextVNode(" You haven't added any bookable resources yet. Define your staff, rooms, or equipment to start configuring availability. ",-1)])]),_:1})]),_:1}),e.createVNode(J,null,{default:e.withCtx(()=>[e.createVNode(c,{variant:"outline",onClick:r},{default:e.withCtx(()=>[e.createVNode(e.unref(u.Plus),{class:"size-4 mr-1.5"}),o[14]||(o[14]=e.createTextVNode(" Add Your First Resource ",-1))]),_:1})]),_:1})]),_:1})),g.value?(e.openBlock(),e.createElementBlock("div",Ue,[e.createVNode(B,{class:"size-4"}),o[15]||(o[15]=e.createElementVNode("span",{class:"text-sm"},"Saving...",-1))])):e.createCommentVNode("",!0)])]),e.createVNode(fe,{ref_key:"resourceDialogRef",ref:w,onAddResource:E,onUpdateResource:z,onRemoveResource:h},null,512)]),_:1})}}});exports.default=Fe;
@@ -4,10 +4,10 @@ declare function __VLS_template(): {
4
4
  default?(_: {}): any;
5
5
  };
6
6
  refs: {};
7
- rootEl: HTMLDivElement;
7
+ rootEl: any;
8
8
  };
9
9
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
10
- declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
10
+ declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
11
11
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
12
12
  export default _default;
13
13
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -0,0 +1,92 @@
1
+ interface Order {
2
+ id: string;
3
+ res_id?: string;
4
+ customerInfo: {
5
+ firstName: string;
6
+ lastName: string;
7
+ email: string;
8
+ phone: string;
9
+ };
10
+ startTime: string;
11
+ endTime: string;
12
+ spots: number;
13
+ status: string;
14
+ reservationPrice?: number;
15
+ }
16
+ type __VLS_Props = {
17
+ orders: Order[];
18
+ filteredOrders: Order[];
19
+ isLoading: boolean;
20
+ selectedTimeSlot: string | null;
21
+ searchQuery: string;
22
+ };
23
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
24
+ refresh: () => any;
25
+ "update:searchQuery": (value: string) => any;
26
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
27
+ onRefresh?: (() => any) | undefined;
28
+ "onUpdate:searchQuery"?: ((value: string) => any) | undefined;
29
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
30
+ reservationDetailDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
31
+ onCancelled?: ((orderId: string) => any) | undefined;
32
+ }>, {
33
+ openDialog: (order: any) => void;
34
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
35
+ cancelled: (orderId: string) => any;
36
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
37
+ cancelReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
38
+ onCancel?: ((...args: any[]) => any) | undefined;
39
+ }>, {
40
+ openDialog: (input: any) => void;
41
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
42
+ cancel: (...args: any[]) => void;
43
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
44
+ P: {};
45
+ B: {};
46
+ D: {};
47
+ C: {};
48
+ M: {};
49
+ Defaults: {};
50
+ }, Readonly<{}> & Readonly<{
51
+ onCancel?: ((...args: any[]) => any) | undefined;
52
+ }>, {
53
+ openDialog: (input: any) => void;
54
+ }, {}, {}, {}, {}> | null;
55
+ resendConfirmationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
56
+ openDialog: (input: any) => void;
57
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
58
+ P: {};
59
+ B: {};
60
+ D: {};
61
+ C: {};
62
+ M: {};
63
+ Defaults: {};
64
+ }, Readonly<{}> & Readonly<{}>, {
65
+ openDialog: (input: any) => void;
66
+ }, {}, {}, {}, {}> | null;
67
+ transferReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
68
+ openDialog: () => void;
69
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
70
+ P: {};
71
+ B: {};
72
+ D: {};
73
+ C: {};
74
+ M: {};
75
+ Defaults: {};
76
+ }, Readonly<{}> & Readonly<{}>, {
77
+ openDialog: () => void;
78
+ }, {}, {}, {}, {}> | null;
79
+ }, any, import('vue').ComponentProvideOptions, {
80
+ P: {};
81
+ B: {};
82
+ D: {};
83
+ C: {};
84
+ M: {};
85
+ Defaults: {};
86
+ }, Readonly<{}> & Readonly<{
87
+ onCancelled?: ((orderId: string) => any) | undefined;
88
+ }>, {
89
+ openDialog: (order: any) => void;
90
+ }, {}, {}, {}, {}> | null;
91
+ }, HTMLDivElement>;
92
+ export default _default;
@@ -0,0 +1,8 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {
2
+ openDialog: (input: any) => void;
3
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
4
+ cancel: (...args: any[]) => void;
5
+ }, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
6
+ onCancel?: ((...args: any[]) => any) | undefined;
7
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
8
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import { Resource } from '../../../types';
2
+ type __VLS_Props = {
3
+ resources?: Resource[];
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {
6
+ openDialog: (timelineEvent: any) => Promise<void>;
7
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
8
+ resources: Resource[];
9
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ export default _default;
@@ -1,4 +1,4 @@
1
1
  declare const _default: import('vue').DefineComponent<{}, {
2
- openDialog: (timelineEvent: any) => void;
2
+ openDialog: (input: any) => void;
3
3
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
4
4
  export default _default;
@@ -0,0 +1,51 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {
2
+ openDialog: (order: any) => void;
3
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
4
+ cancelled: (orderId: string) => any;
5
+ }, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
6
+ onCancelled?: ((orderId: string) => any) | undefined;
7
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
8
+ cancelReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
9
+ onCancel?: ((...args: any[]) => any) | undefined;
10
+ }>, {
11
+ openDialog: (input: any) => void;
12
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
13
+ cancel: (...args: any[]) => void;
14
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
15
+ P: {};
16
+ B: {};
17
+ D: {};
18
+ C: {};
19
+ M: {};
20
+ Defaults: {};
21
+ }, Readonly<{}> & Readonly<{
22
+ onCancel?: ((...args: any[]) => any) | undefined;
23
+ }>, {
24
+ openDialog: (input: any) => void;
25
+ }, {}, {}, {}, {}> | null;
26
+ resendConfirmationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
27
+ openDialog: (input: any) => void;
28
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
29
+ P: {};
30
+ B: {};
31
+ D: {};
32
+ C: {};
33
+ M: {};
34
+ Defaults: {};
35
+ }, Readonly<{}> & Readonly<{}>, {
36
+ openDialog: (input: any) => void;
37
+ }, {}, {}, {}, {}> | null;
38
+ transferReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
39
+ openDialog: () => void;
40
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
41
+ P: {};
42
+ B: {};
43
+ D: {};
44
+ C: {};
45
+ M: {};
46
+ Defaults: {};
47
+ }, Readonly<{}> & Readonly<{}>, {
48
+ openDialog: () => void;
49
+ }, {}, {}, {}, {}> | null;
50
+ }, any>;
51
+ export default _default;
@@ -0,0 +1,24 @@
1
+ interface TimeSlot {
2
+ startTime: string;
3
+ endTime: string;
4
+ label: string;
5
+ }
6
+ interface SlotStats {
7
+ bookings: number;
8
+ spots: number;
9
+ orders: any[];
10
+ }
11
+ type __VLS_Props = {
12
+ timeSlots: TimeSlot[];
13
+ slotStats: Record<string, SlotStats>;
14
+ selectedTimeSlot: string | null;
15
+ maxSpots: number;
16
+ };
17
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
18
+ select: (slotStartTime: string) => any;
19
+ clear: () => any;
20
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
21
+ onSelect?: ((slotStartTime: string) => any) | undefined;
22
+ onClear?: (() => any) | undefined;
23
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
24
+ export default _default;
@@ -0,0 +1,4 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {
2
+ openDialog: () => void;
3
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
4
+ export default _default;
@@ -18,20 +18,28 @@ type __VLS_Props = {
18
18
  resources?: Resource[];
19
19
  };
20
20
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
- firstDay: boolean;
22
21
  resources: Resource[];
22
+ firstDay: boolean;
23
23
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
24
- eventDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
25
- openDialog: (timelineEvent: any) => void;
26
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
24
+ eventDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
25
+ resources?: Resource[];
26
+ }> & Readonly<{}>, {
27
+ openDialog: (timelineEvent: any) => Promise<void>;
28
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
29
+ resources: Resource[];
30
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
27
31
  P: {};
28
32
  B: {};
29
33
  D: {};
30
34
  C: {};
31
35
  M: {};
32
36
  Defaults: {};
33
- }, Readonly<{}> & Readonly<{}>, {
34
- openDialog: (timelineEvent: any) => void;
35
- }, {}, {}, {}, {}> | null;
37
+ }, Readonly<{
38
+ resources?: Resource[];
39
+ }> & Readonly<{}>, {
40
+ openDialog: (timelineEvent: any) => Promise<void>;
41
+ }, {}, {}, {}, {
42
+ resources: Resource[];
43
+ }> | null;
36
44
  }, any>;
37
45
  export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,68 @@
1
+ type __VLS_Props = {
2
+ activeDate: Date;
3
+ selectedResource?: string | null;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
6
+ reservationDetailDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
7
+ onCancelled?: ((orderId: string) => any) | undefined;
8
+ }>, {
9
+ openDialog: (order: any) => void;
10
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
+ cancelled: (orderId: string) => any;
12
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
13
+ cancelReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
14
+ onCancel?: ((...args: any[]) => any) | undefined;
15
+ }>, {
16
+ openDialog: (input: any) => void;
17
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
18
+ cancel: (...args: any[]) => void;
19
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
20
+ P: {};
21
+ B: {};
22
+ D: {};
23
+ C: {};
24
+ M: {};
25
+ Defaults: {};
26
+ }, Readonly<{}> & Readonly<{
27
+ onCancel?: ((...args: any[]) => any) | undefined;
28
+ }>, {
29
+ openDialog: (input: any) => void;
30
+ }, {}, {}, {}, {}> | null;
31
+ resendConfirmationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
32
+ openDialog: (input: any) => void;
33
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
34
+ P: {};
35
+ B: {};
36
+ D: {};
37
+ C: {};
38
+ M: {};
39
+ Defaults: {};
40
+ }, Readonly<{}> & Readonly<{}>, {
41
+ openDialog: (input: any) => void;
42
+ }, {}, {}, {}, {}> | null;
43
+ transferReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
44
+ openDialog: () => void;
45
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
46
+ P: {};
47
+ B: {};
48
+ D: {};
49
+ C: {};
50
+ M: {};
51
+ Defaults: {};
52
+ }, Readonly<{}> & Readonly<{}>, {
53
+ openDialog: () => void;
54
+ }, {}, {}, {}, {}> | null;
55
+ }, any, import('vue').ComponentProvideOptions, {
56
+ P: {};
57
+ B: {};
58
+ D: {};
59
+ C: {};
60
+ M: {};
61
+ Defaults: {};
62
+ }, Readonly<{}> & Readonly<{
63
+ onCancelled?: ((orderId: string) => any) | undefined;
64
+ }>, {
65
+ openDialog: (order: any) => void;
66
+ }, {}, {}, {}, {}> | null;
67
+ }, any>;
68
+ export default _default;
@@ -0,0 +1,15 @@
1
+ type __VLS_Props = {
2
+ modelValue?: Date;
3
+ selectedResource?: string | null;
4
+ viewMode?: 'stacked' | 'single';
5
+ };
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
7
+ "update:modelValue": (value: Date) => any;
8
+ "update:viewMode": (value: "single" | "stacked") => any;
9
+ "update:selectedResource": (value: string | null) => any;
10
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ "onUpdate:modelValue"?: ((value: Date) => any) | undefined;
12
+ "onUpdate:viewMode"?: ((value: "single" | "stacked") => any) | undefined;
13
+ "onUpdate:selectedResource"?: ((value: string | null) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
15
+ export default _default;
@@ -0,0 +1,50 @@
1
+ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
2
+ resources: {
3
+ type: () => {
4
+ id: string;
5
+ name: string;
6
+ color?: string;
7
+ }[];
8
+ required: true;
9
+ };
10
+ totals: {
11
+ type: () => Record<string, number>;
12
+ required: true;
13
+ };
14
+ viewMode: {
15
+ type: () => "stacked" | "single";
16
+ required: true;
17
+ };
18
+ activeChart: {
19
+ type: StringConstructor;
20
+ required: false;
21
+ };
22
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
23
+ "update:viewMode": (value: "single" | "stacked") => any;
24
+ "update:activeChart": (value: string) => any;
25
+ }, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
26
+ resources: {
27
+ type: () => {
28
+ id: string;
29
+ name: string;
30
+ color?: string;
31
+ }[];
32
+ required: true;
33
+ };
34
+ totals: {
35
+ type: () => Record<string, number>;
36
+ required: true;
37
+ };
38
+ viewMode: {
39
+ type: () => "stacked" | "single";
40
+ required: true;
41
+ };
42
+ activeChart: {
43
+ type: StringConstructor;
44
+ required: false;
45
+ };
46
+ }>> & Readonly<{
47
+ "onUpdate:viewMode"?: ((value: "single" | "stacked") => any) | undefined;
48
+ "onUpdate:activeChart"?: ((value: string) => any) | undefined;
49
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
50
+ export default _default;
@@ -5,21 +5,51 @@ export declare const config: {
5
5
  readonly type: "resource";
6
6
  readonly accept: ["FIREBASE"];
7
7
  };
8
+ readonly mailAccount: {
9
+ readonly label: "Mail account";
10
+ readonly type: "resource";
11
+ readonly accept: ["GMAIL"];
12
+ };
8
13
  readonly agendaCollection: {
9
14
  readonly label: "Agenda Collection";
10
15
  readonly type: "input";
11
16
  readonly default: "agendas";
12
17
  };
18
+ readonly reservationsCollection: {
19
+ readonly label: "Reservations Collection";
20
+ readonly type: "input";
21
+ readonly default: "bookings_orders";
22
+ };
23
+ readonly reservedSpotsCollection: {
24
+ readonly label: "Reserved Spots Collection";
25
+ readonly type: "input";
26
+ readonly default: "reserved_spots";
27
+ };
13
28
  } & {
14
29
  readonly project: {
15
30
  readonly label: "Project";
16
31
  readonly type: "resource";
17
32
  readonly accept: ["FIREBASE"];
18
33
  };
34
+ readonly mailAccount: {
35
+ readonly label: "Mail account";
36
+ readonly type: "resource";
37
+ readonly accept: ["GMAIL"];
38
+ };
19
39
  readonly agendaCollection: {
20
40
  readonly label: "Agenda Collection";
21
41
  readonly type: "input";
22
42
  readonly default: "agendas";
23
43
  };
44
+ readonly reservationsCollection: {
45
+ readonly label: "Reservations Collection";
46
+ readonly type: "input";
47
+ readonly default: "bookings_orders";
48
+ };
49
+ readonly reservedSpotsCollection: {
50
+ readonly label: "Reserved Spots Collection";
51
+ readonly type: "input";
52
+ readonly default: "reserved_spots";
53
+ };
24
54
  };
25
55
  export type ConfigValues = ResolveConfig<typeof config>;
@@ -7,32 +7,59 @@ declare const _default: {
7
7
  readonly type: "resource";
8
8
  readonly accept: ["FIREBASE"];
9
9
  };
10
+ readonly mailAccount: {
11
+ readonly label: "Mail account";
12
+ readonly type: "resource";
13
+ readonly accept: ["GMAIL"];
14
+ };
10
15
  readonly agendaCollection: {
11
16
  readonly label: "Agenda Collection";
12
17
  readonly type: "input";
13
18
  readonly default: "agendas";
14
19
  };
20
+ readonly reservationsCollection: {
21
+ readonly label: "Reservations Collection";
22
+ readonly type: "input";
23
+ readonly default: "bookings_orders";
24
+ };
25
+ readonly reservedSpotsCollection: {
26
+ readonly label: "Reserved Spots Collection";
27
+ readonly type: "input";
28
+ readonly default: "reserved_spots";
29
+ };
15
30
  } & {
16
31
  readonly project: {
17
32
  readonly label: "Project";
18
33
  readonly type: "resource";
19
34
  readonly accept: ["FIREBASE"];
20
35
  };
36
+ readonly mailAccount: {
37
+ readonly label: "Mail account";
38
+ readonly type: "resource";
39
+ readonly accept: ["GMAIL"];
40
+ };
21
41
  readonly agendaCollection: {
22
42
  readonly label: "Agenda Collection";
23
43
  readonly type: "input";
24
44
  readonly default: "agendas";
25
45
  };
46
+ readonly reservationsCollection: {
47
+ readonly label: "Reservations Collection";
48
+ readonly type: "input";
49
+ readonly default: "bookings_orders";
50
+ };
51
+ readonly reservedSpotsCollection: {
52
+ readonly label: "Reserved Spots Collection";
53
+ readonly type: "input";
54
+ readonly default: "reserved_spots";
55
+ };
26
56
  };
27
57
  routes: ({
28
58
  path: string;
29
- component: () => Promise<typeof import("./pages/Overview.vue")>;
30
- } | {
31
- path: string;
32
- component: () => Promise<typeof import("./pages/create/index.vue")>;
59
+ component: () => Promise<typeof import("./pages/create/regular.vue")>;
33
60
  } | {
34
61
  path: string;
35
- component: () => Promise<typeof import("./pages/create/regular.vue")>;
62
+ component: () => Promise<typeof import("./pages/edit/index.vue")>;
36
63
  })[];
37
64
  permissions: {
38
65
  key: string;
@@ -1,2 +1,2 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -23,5 +23,5 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
23
23
  }>, {
24
24
  openDialog: (field: any) => void;
25
25
  }, {}, {}, {}, {}> | null;
26
- }, HTMLDivElement>;
26
+ }, any>;
27
27
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;