@oneclick.dev/cms-core-modules 0.0.102 → 0.0.104

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 (102) hide show
  1. package/dist/AgendaOpeningHoursCard-B7ROIPWw.js +1 -0
  2. package/dist/AgendaOpeningHoursCard-Cp4wxUeK.mjs +172 -0
  3. package/dist/AppointmentListTable-DZJNmTMb.mjs +177 -0
  4. package/dist/AppointmentListTable-Dieu9US_.js +1 -0
  5. package/dist/{ContentEditor-Cjqgb64R.mjs → ContentEditor-B1nfKG_5.mjs} +706 -677
  6. package/dist/{ContentEditor-YgOS3kxS.js → ContentEditor-DdFU8piH.js} +15 -16
  7. package/dist/{Create-6uT9HWar.mjs → Create-BRBh0xjM.mjs} +2 -2
  8. package/dist/{Create-DuZ5nZrX.js → Create-qPeQxkdl.js} +1 -1
  9. package/dist/{DateFormatter-2B0R-DY4.mjs → DateFormatter-Bw-87W31.mjs} +212 -227
  10. package/dist/DateFormatter-CYAD4GBN.js +1 -0
  11. package/dist/{Detail-BZ-iE9vf.js → Detail-C857g62L.js} +1 -1
  12. package/dist/{Detail-CJVMJDP7.mjs → Detail-CujdFApD.mjs} +2 -2
  13. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +76 -0
  14. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +1 -0
  15. package/dist/{Entries-DkRhOt95.js → Entries-BaS6H6ak.js} +1 -1
  16. package/dist/{Entries-dLlCrXXe.mjs → Entries-C8UJkrVC.mjs} +1 -1
  17. package/dist/{Find-Bd1uLqSa.mjs → Find-B24ZEhYM.mjs} +1 -1
  18. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-Bc946oSc.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-9Q7TMm4u.mjs} +37 -37
  19. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-CqERfyYb.js → NewReservationDialog.vue_vue_type_script_setup_true_lang-DiNzGl-q.js} +1 -1
  20. package/dist/{Overview-DoOASlNz.mjs → Overview-3HWhsqaz.mjs} +2 -2
  21. package/dist/{Overview-37nilXzE.js → Overview-CpHhuiaV.js} +1 -1
  22. package/dist/{Overview-DeQQ0FY3.js → Overview-DAxCu9XC.js} +1 -1
  23. package/dist/{Overview-C--dq51X.mjs → Overview-D_T3K6aq.mjs} +1 -1
  24. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Cz_22Oce.mjs +2927 -0
  25. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DPPNc-Z5.js +349 -0
  26. package/dist/TableView-CPAw3h8g.js +4 -0
  27. package/dist/TableView-DXmEF6pY.mjs +6143 -0
  28. package/dist/agenda-BNG05SAq.js +1 -0
  29. package/dist/agenda-D1RxMxBS.mjs +1152 -0
  30. package/dist/availability-CMrRa5y2.mjs +269 -0
  31. package/dist/availability-Cf2YfMwM.js +1 -0
  32. package/dist/booking-data-DgJd0BcM.mjs +889 -0
  33. package/dist/booking-data-Di5GmH_8.js +1 -0
  34. package/dist/cms-core-modules.css +1 -1
  35. package/dist/{exceptions-Bp5BSvxO.js → exceptions-CI0B4xVj.js} +1 -1
  36. package/dist/{exceptions-C97cNZYl.mjs → exceptions-vo8SA5SE.mjs} +68 -68
  37. package/dist/index-BtujSJeg.js +35 -0
  38. package/dist/{index-CrGjxSwa.mjs → index-CrgzoTyR.mjs} +1 -1
  39. package/dist/{index-D2a6wEPh.js → index-DPd3waTN.js} +1 -1
  40. package/dist/{index-CABh6Qn6.mjs → index-DrXxXB2F.mjs} +15 -15
  41. package/dist/{index-B-lVEpFX.mjs → index-MYWjg0zi.mjs} +3 -3
  42. package/dist/index-dOdMm1pV.mjs +1105 -0
  43. package/dist/index.cjs.js +1 -1
  44. package/dist/index.mjs +196 -143
  45. package/dist/interpolation-DEDSLETn.mjs +128 -0
  46. package/dist/interpolation-DERg6Lwt.js +1 -0
  47. package/dist/orders-CzzcFQha.mjs +559 -0
  48. package/dist/orders-ETtbA4aQ.js +1 -0
  49. package/dist/{payment-Bosr0m3u.mjs → payment-C3ohkehF.mjs} +1 -1
  50. package/dist/{payment-DDnC03jb.js → payment-Dfr-Ro-a.js} +1 -1
  51. package/dist/{resources-BtF5RUUq.js → resources-CxeFd57z.js} +1 -1
  52. package/dist/{resources-B7qDBC91.mjs → resources-WI_4SO6T.mjs} +2 -2
  53. package/dist/server-handlers.cjs.js +1 -1
  54. package/dist/server-handlers.mjs +457 -387
  55. package/dist/src/appointments/chat-components/AgendaOpeningHoursCard.vue.d.ts +15 -0
  56. package/dist/src/appointments/components/edit/CustomerInformationFieldEditorDialog.vue.d.ts +17 -5
  57. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +8 -3
  58. package/dist/src/appointments/components/edit/EventDialog/EventDialog.vue.d.ts +1 -0
  59. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +6 -3
  60. package/dist/src/appointments/components/edit/EventTimeline.vue.d.ts +3 -0
  61. package/dist/src/appointments/components/edit/EventView.vue.d.ts +6 -1
  62. package/dist/src/appointments/components/edit/MetadataSchemaEditorDialog.vue.d.ts +12 -0
  63. package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +21 -0
  64. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +8 -3
  65. package/dist/src/appointments/index.d.ts +53 -0
  66. package/dist/src/appointments/pages/edit/agenda.vue.d.ts +3 -1
  67. package/dist/src/appointments/pages/edit/availability.vue.d.ts +1 -26
  68. package/dist/src/appointments/pages/edit/booking-data.vue.d.ts +65 -0
  69. package/dist/src/appointments/pages/edit/orders.vue.d.ts +7 -3
  70. package/dist/src/appointments/tools.d.ts +52 -0
  71. package/dist/src/appointments/types.d.ts +12 -0
  72. package/dist/src/table/config.d.ts +200 -0
  73. package/dist/src/table/get_data_flow-DEFAULT.json.d.ts +129 -0
  74. package/dist/src/table/index.d.ts +200 -0
  75. package/dist/utils-CanmrIWO.mjs +47 -0
  76. package/dist/utils-Yd6F5mea.js +3 -0
  77. package/package.json +2 -2
  78. package/src/appointments/tools.ts +38 -0
  79. package/dist/AppointmentListTable-CQ0WIXtj.js +0 -1
  80. package/dist/AppointmentListTable-aV_UJd6j.mjs +0 -159
  81. package/dist/DateFormatter-DbtOLV0L.js +0 -1
  82. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DXa-Xxue.mjs +0 -74
  83. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-ozYrxb2g.js +0 -1
  84. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CL5kbDII.mjs +0 -2782
  85. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DcyyNvf6.js +0 -349
  86. package/dist/TableView-CIJs118q.mjs +0 -5929
  87. package/dist/TableView-DzZYf34i.js +0 -4
  88. package/dist/agenda-CCOjPiwP.mjs +0 -1133
  89. package/dist/agenda-CNPQfaIQ.js +0 -1
  90. package/dist/availability-B1D4Fyzi.mjs +0 -629
  91. package/dist/availability-DxrUcYbW.js +0 -1
  92. package/dist/index-BOnqrBfY.js +0 -35
  93. package/dist/index-Bj0qaL1N.mjs +0 -1091
  94. package/dist/interpolation-BBwG_ON6.mjs +0 -65
  95. package/dist/interpolation-CsOrww73.js +0 -1
  96. package/dist/orders-BJV5vRQr.mjs +0 -397
  97. package/dist/orders-C1C5IEIP.js +0 -1
  98. package/dist/regular-slots-Cc1jmKuC.mjs +0 -222
  99. package/dist/regular-slots-DBs1XVeN.js +0 -1
  100. package/dist/src/appointments/pages/edit/regular-slots.vue.d.ts +0 -2
  101. package/dist/utils-BVKy9S2J.mjs +0 -29
  102. package/dist/utils-D6CaKJbp.js +0 -2
@@ -1,6 +1,6 @@
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
- import { _ as me } from "./EditLayout.vue_vue_type_script_setup_true_lang-DXa-Xxue.mjs";
3
- import { $ as re, c as U, b, e as N } from "./DateFormatter-2B0R-DY4.mjs";
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 r, createVNode as n, createTextVNode as u, toDisplayString as h, createElementVNode as o, unref as m, createElementBlock as a, Fragment as D, normalizeClass as k, createCommentVNode as v, renderList as B, normalizeStyle as re } from "vue";
2
+ import { _ as me } from "./EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs";
3
+ import { $ as ae, c as U, b, e as N } from "./DateFormatter-Bw-87W31.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 = {
@@ -40,7 +40,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
40
40
  },
41
41
  emits: ["add-exception", "update-exception", "remove-exception"],
42
42
  setup(oe, { expose: V, emit: F }) {
43
- const I = new re("en-US", {
43
+ const I = new ae("en-US", {
44
44
  dateStyle: "medium"
45
45
  }), T = oe, x = F, y = E(!1), $ = E("add"), A = E(!1), c = E({
46
46
  start: U(b()),
@@ -115,13 +115,13 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
115
115
  open: y.value,
116
116
  "onUpdate:open": e[6] || (e[6] = (d) => y.value = d)
117
117
  }, {
118
- default: a(() => [
118
+ default: r(() => [
119
119
  n(_, { class: "sm:max-w-2xl" }, {
120
- default: a(() => [
120
+ default: r(() => [
121
121
  n(S, null, {
122
- default: a(() => [
122
+ default: r(() => [
123
123
  n(p, null, {
124
- default: a(() => [
124
+ default: r(() => [
125
125
  u(h($.value === "add" ? "Add Exception" : "Edit Exception"), 1)
126
126
  ]),
127
127
  _: 1
@@ -132,7 +132,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
132
132
  o("div", xe, [
133
133
  o("div", null, [
134
134
  n(R, { class: "text-sm font-normal mb-1.5" }, {
135
- default: a(() => [...e[7] || (e[7] = [
135
+ default: r(() => [...e[7] || (e[7] = [
136
136
  u("Select Date or Date Range", -1)
137
137
  ])]),
138
138
  _: 1
@@ -141,22 +141,22 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
141
141
  open: A.value,
142
142
  "onUpdate:open": e[1] || (e[1] = (d) => A.value = d)
143
143
  }, {
144
- default: a(() => [
144
+ default: r(() => [
145
145
  n(K, { "as-child": "" }, {
146
- default: a(() => [
146
+ default: r(() => [
147
147
  n(w, {
148
148
  variant: "outline",
149
149
  class: "w-full justify-start text-left font-normal"
150
150
  }, {
151
- default: a(() => [
151
+ default: r(() => [
152
152
  n(m(se), { class: "mr-2 h-4 w-4" }),
153
- c.value.start ? (l(), r(D, { key: 0 }, [
154
- c.value.end && c.value.start.toString() !== c.value.end.toString() ? (l(), r(D, { key: 0 }, [
153
+ c.value.start ? (l(), a(D, { key: 0 }, [
154
+ c.value.end && c.value.start.toString() !== c.value.end.toString() ? (l(), a(D, { key: 0 }, [
155
155
  u(h(m(I).format(c.value.start.toDate(m(b)()))) + " - " + h(m(I).format(c.value.end.toDate(m(b)()))), 1)
156
- ], 64)) : (l(), r(D, { key: 1 }, [
156
+ ], 64)) : (l(), a(D, { key: 1 }, [
157
157
  u(h(m(I).format(c.value.start.toDate(m(b)()))), 1)
158
158
  ], 64))
159
- ], 64)) : (l(), r(D, { key: 1 }, [
159
+ ], 64)) : (l(), a(D, { key: 1 }, [
160
160
  u(" Pick a date ")
161
161
  ], 64))
162
162
  ]),
@@ -166,7 +166,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
166
166
  _: 1
167
167
  }),
168
168
  n(W, { class: "w-auto p-0" }, {
169
- default: a(() => [
169
+ default: r(() => [
170
170
  n(Q, {
171
171
  modelValue: c.value,
172
172
  "onUpdate:modelValue": e[0] || (e[0] = (d) => c.value = d),
@@ -181,9 +181,9 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
181
181
  _: 1
182
182
  }, 8, ["open"])
183
183
  ]),
184
- T.resources && T.resources.length > 0 ? (l(), r("div", ye, [
184
+ T.resources && T.resources.length > 0 ? (l(), a("div", ye, [
185
185
  n(R, { class: "text-sm font-normal mb-1.5" }, {
186
- default: a(() => [...e[8] || (e[8] = [
186
+ default: r(() => [...e[8] || (e[8] = [
187
187
  u("Apply To", -1)
188
188
  ])]),
189
189
  _: 1
@@ -203,7 +203,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
203
203
  o("div", {
204
204
  class: k(["w-4 h-4 rounded-full border-2", C.value ? "border-primary bg-primary" : "border-muted-foreground"])
205
205
  }, [
206
- C.value ? (l(), r("div", Ce)) : v("", !0)
206
+ C.value ? (l(), a("div", Ce)) : v("", !0)
207
207
  ], 2)
208
208
  ], 2),
209
209
  o("div", {
@@ -220,11 +220,11 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
220
220
  o("div", {
221
221
  class: k(["w-4 h-4 rounded-full border-2", C.value ? "border-muted-foreground" : "border-primary bg-primary"])
222
222
  }, [
223
- C.value ? v("", !0) : (l(), r("div", De))
223
+ C.value ? v("", !0) : (l(), a("div", De))
224
224
  ], 2)
225
225
  ], 2),
226
- C.value ? v("", !0) : (l(), r("div", he, [
227
- (l(!0), r(D, null, B(T.resources, (d) => (l(), r("div", {
226
+ C.value ? v("", !0) : (l(), a("div", he, [
227
+ (l(!0), a(D, null, B(T.resources, (d) => (l(), a("div", {
228
228
  key: d.id,
229
229
  class: k(["flex items-center gap-2 p-2 rounded-md hover:bg-muted cursor-pointer transition-colors", {
230
230
  "bg-muted": t.resourceIds?.includes(d.id),
@@ -234,7 +234,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
234
234
  }, [
235
235
  o("div", {
236
236
  class: "size-6 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0",
237
- style: ae({ backgroundColor: d.color || "#6b7280" })
237
+ style: re({ backgroundColor: d.color || "#6b7280" })
238
238
  }, h(d.avatarLabel || d.name.charAt(0).toUpperCase()), 5),
239
239
  o("div", Ee, [
240
240
  o("div", $e, h(d.name), 1)
@@ -242,7 +242,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
242
242
  o("div", {
243
243
  class: k(["size-4 rounded border-2 flex items-center justify-center flex-shrink-0", t.resourceIds?.includes(d.id) ? "border-primary bg-primary" : "border-muted-foreground"])
244
244
  }, [
245
- t.resourceIds?.includes(d.id) ? (l(), r("svg", Ie, [...e[11] || (e[11] = [
245
+ t.resourceIds?.includes(d.id) ? (l(), a("svg", Ie, [...e[11] || (e[11] = [
246
246
  o("path", {
247
247
  "stroke-linecap": "round",
248
248
  "stroke-linejoin": "round",
@@ -252,13 +252,13 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
252
252
  ])])) : v("", !0)
253
253
  ], 2)
254
254
  ], 10, we))), 128)),
255
- t.resourceIds?.length === 0 ? (l(), r("p", Se, " ⚠️ Please select at least one resource ")) : v("", !0)
255
+ t.resourceIds?.length === 0 ? (l(), a("p", Se, " ⚠️ Please select at least one resource ")) : v("", !0)
256
256
  ]))
257
257
  ])
258
258
  ])) : v("", !0),
259
259
  o("div", null, [
260
260
  n(R, { class: "text-sm font-normal mb-1.5" }, {
261
- default: a(() => [...e[12] || (e[12] = [
261
+ default: r(() => [...e[12] || (e[12] = [
262
262
  u("Exception Type", -1)
263
263
  ])]),
264
264
  _: 1
@@ -278,7 +278,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
278
278
  o("div", {
279
279
  class: k(["w-4 h-4 rounded-full border-2", t.isClosed ? "border-primary bg-primary" : "border-muted-foreground"])
280
280
  }, [
281
- t.isClosed ? (l(), r("div", Re)) : v("", !0)
281
+ t.isClosed ? (l(), a("div", Re)) : v("", !0)
282
282
  ], 2)
283
283
  ], 2),
284
284
  o("div", {
@@ -295,22 +295,22 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
295
295
  o("div", {
296
296
  class: k(["w-4 h-4 rounded-full border-2", t.isClosed ? "border-muted-foreground" : "border-primary bg-primary"])
297
297
  }, [
298
- t.isClosed ? v("", !0) : (l(), r("div", Ve))
298
+ t.isClosed ? v("", !0) : (l(), a("div", Ve))
299
299
  ], 2)
300
300
  ], 2)
301
301
  ])
302
302
  ]),
303
- t.isClosed ? v("", !0) : (l(), r("div", ze, [
303
+ t.isClosed ? v("", !0) : (l(), a("div", ze, [
304
304
  n(R, { class: "text-sm font-normal mb-1.5" }, {
305
- default: a(() => [...e[15] || (e[15] = [
305
+ default: r(() => [...e[15] || (e[15] = [
306
306
  u("Time Slots", -1)
307
307
  ])]),
308
308
  _: 1
309
309
  }),
310
310
  n(Z, { class: "p-4" }, {
311
- default: a(() => [
312
- t.timeslots.length === 0 ? (l(), r("div", je, ' No time slots added. Click "Add Time Slot" to create one. ')) : (l(), r("div", Pe, [
313
- (l(!0), r(D, null, B(t.timeslots, (d) => (l(), r("div", {
311
+ default: r(() => [
312
+ t.timeslots.length === 0 ? (l(), a("div", je, ' No time slots added. Click "Add Time Slot" to create one. ')) : (l(), a("div", Pe, [
313
+ (l(!0), a(D, null, B(t.timeslots, (d) => (l(), a("div", {
314
314
  key: d.id,
315
315
  class: "flex items-center gap-2"
316
316
  }, [
@@ -332,7 +332,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
332
332
  size: "icon",
333
333
  onClick: (P) => G(d.id)
334
334
  }, {
335
- default: a(() => [
335
+ default: r(() => [
336
336
  n(m(ie), { class: "size-4" })
337
337
  ]),
338
338
  _: 1
@@ -345,7 +345,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
345
345
  size: "sm",
346
346
  class: "w-full"
347
347
  }, {
348
- default: a(() => [
348
+ default: r(() => [
349
349
  n(m(ue), { class: "size-4 mr-1" }),
350
350
  e[17] || (e[17] = u(" Add Time Slot ", -1))
351
351
  ]),
@@ -357,14 +357,14 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
357
357
  ]))
358
358
  ]),
359
359
  n(f, { class: "gap-2" }, {
360
- default: a(() => [
360
+ default: r(() => [
361
361
  o("div", Be, [
362
362
  $.value === "edit" ? (l(), g(w, {
363
363
  key: 0,
364
364
  variant: "destructive",
365
365
  onClick: O
366
366
  }, {
367
- default: a(() => [...e[18] || (e[18] = [
367
+ default: r(() => [...e[18] || (e[18] = [
368
368
  u(" Remove Exception ", -1)
369
369
  ])]),
370
370
  _: 1
@@ -374,7 +374,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
374
374
  variant: "outline",
375
375
  onClick: H
376
376
  }, {
377
- default: a(() => [...e[19] || (e[19] = [
377
+ default: r(() => [...e[19] || (e[19] = [
378
378
  u(" Cancel ", -1)
379
379
  ])]),
380
380
  _: 1
@@ -384,7 +384,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
384
384
  onClick: z,
385
385
  disabled: !L.value
386
386
  }, {
387
- default: a(() => [...e[20] || (e[20] = [
387
+ default: r(() => [...e[20] || (e[20] = [
388
388
  u(" Add Exception ", -1)
389
389
  ])]),
390
390
  _: 1
@@ -393,7 +393,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
393
393
  onClick: j,
394
394
  disabled: !L.value
395
395
  }, {
396
- default: a(() => [...e[21] || (e[21] = [
396
+ default: r(() => [...e[21] || (e[21] = [
397
397
  u(" Update Exception ", -1)
398
398
  ])]),
399
399
  _: 1
@@ -429,7 +429,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
429
429
  }, dt = /* @__PURE__ */ ne({
430
430
  __name: "exceptions",
431
431
  setup(oe) {
432
- const V = new re("en-US", {
432
+ const V = new ae("en-US", {
433
433
  dateStyle: "medium"
434
434
  }), { params: F } = fe(), { config: I } = ve(), T = ge(I.project), x = E([]), y = E([]), $ = E(!1), A = E(!0), c = E(), t = (s) => !s.resourceIds || s.resourceIds.length === 0 ? null : y.value.filter((e) => s.resourceIds?.includes(e.id)), C = async () => {
435
435
  try {
@@ -466,27 +466,27 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
466
466
  return C(), (s, e) => {
467
467
  const p = i("Button"), S = i("Badge"), R = i("Card"), w = i("Spinner"), K = i("EmptyMedia"), Q = i("EmptyTitle"), W = i("EmptyDescription"), X = i("EmptyHeader"), J = i("EmptyContent"), Z = i("Empty");
468
468
  return l(), g(me, null, {
469
- default: a(() => [
469
+ default: r(() => [
470
470
  e[10] || (e[10] = o("h1", { class: "text-lg font-medium mb-2" }, "Exception Management", -1)),
471
471
  e[11] || (e[11] = o("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)),
472
472
  o("div", Le, [
473
- j.value.length > 0 ? (l(), r("div", He, [
473
+ j.value.length > 0 ? (l(), a("div", He, [
474
474
  n(p, { onClick: M }, {
475
- default: a(() => [
475
+ default: r(() => [
476
476
  n(m(ue), { class: "size-4 mr-1" }),
477
477
  e[0] || (e[0] = u(" Add Exception ", -1))
478
478
  ]),
479
479
  _: 1
480
480
  })
481
481
  ])) : v("", !0),
482
- j.value.length > 0 ? (l(), r("div", Me, [
482
+ j.value.length > 0 ? (l(), a("div", Me, [
483
483
  e[5] || (e[5] = o("h2", { class: "text-base font-medium mb-3" }, "Active Exceptions", -1)),
484
484
  o("div", Oe, [
485
- (l(!0), r(D, null, B(j.value, (f) => (l(), g(R, {
485
+ (l(!0), a(D, null, B(j.value, (f) => (l(), g(R, {
486
486
  key: f.id,
487
487
  class: k(["p-4", O(f.endDate) ? "opacity-60" : ""])
488
488
  }, {
489
- default: a(() => [
489
+ default: r(() => [
490
490
  o("div", Je, [
491
491
  o("div", Ye, [
492
492
  o("div", qe, [
@@ -503,42 +503,42 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
503
503
  variant: "secondary",
504
504
  class: "text-xs"
505
505
  }, {
506
- default: a(() => [...e[1] || (e[1] = [
506
+ default: r(() => [...e[1] || (e[1] = [
507
507
  u(" Past ", -1)
508
508
  ])]),
509
509
  _: 1
510
510
  })) : v("", !0)
511
511
  ]),
512
- y.value.length > 0 ? (l(), r("div", Ke, [
513
- t(f) ? (l(!0), r(D, { key: 0 }, B(t(f), (_) => (l(), r("div", {
512
+ y.value.length > 0 ? (l(), a("div", Ke, [
513
+ t(f) ? (l(!0), a(D, { key: 0 }, B(t(f), (_) => (l(), a("div", {
514
514
  key: _.id,
515
515
  class: "size-5 rounded-full flex items-center justify-center text-white text-[10px] font-medium",
516
- style: ae({ backgroundColor: _.color || "#6b7280" }),
516
+ style: re({ backgroundColor: _.color || "#6b7280" }),
517
517
  title: _.name
518
518
  }, h(_.avatarLabel || _.name.charAt(0).toUpperCase()), 13, Qe))), 128)) : (l(), g(S, {
519
519
  key: 1,
520
520
  variant: "outline",
521
521
  class: "text-xs"
522
522
  }, {
523
- default: a(() => [...e[2] || (e[2] = [
523
+ default: r(() => [...e[2] || (e[2] = [
524
524
  u(" All Resources ", -1)
525
525
  ])]),
526
526
  _: 1
527
527
  }))
528
528
  ])) : v("", !0),
529
529
  o("div", We, [
530
- f.isClosed ? (l(), r(D, { key: 0 }, [
530
+ f.isClosed ? (l(), a(D, { key: 0 }, [
531
531
  u(" Closed - No appointments available ")
532
- ], 64)) : (l(), r(D, { key: 1 }, [
533
- f.timeslots.length === 0 ? (l(), r("div", Xe, " ⚠️ No time slots defined ")) : (l(), r("div", Ze, [
532
+ ], 64)) : (l(), a(D, { key: 1 }, [
533
+ f.timeslots.length === 0 ? (l(), a("div", Xe, " ⚠️ No time slots defined ")) : (l(), a("div", Ze, [
534
534
  e[3] || (e[3] = o("div", { class: "font-medium text-foreground" }, "Custom Hours:", -1)),
535
535
  o("div", et, [
536
- (l(!0), r(D, null, B(f.timeslots, (_, ee) => (l(), g(S, {
536
+ (l(!0), a(D, null, B(f.timeslots, (_, ee) => (l(), g(S, {
537
537
  key: ee,
538
538
  variant: "outline",
539
539
  class: "font-mono text-xs"
540
540
  }, {
541
- default: a(() => [
541
+ default: r(() => [
542
542
  u(h(_.startTime) + " - " + h(_.endTime), 1)
543
543
  ]),
544
544
  _: 2
@@ -553,7 +553,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
553
553
  variant: "ghost",
554
554
  onClick: (_) => G(f)
555
555
  }, {
556
- default: a(() => [...e[4] || (e[4] = [
556
+ default: r(() => [...e[4] || (e[4] = [
557
557
  u(" Edit ", -1)
558
558
  ])]),
559
559
  _: 1
@@ -563,7 +563,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
563
563
  size: "icon",
564
564
  onClick: (_) => H(f.id)
565
565
  }, {
566
- default: a(() => [
566
+ default: r(() => [
567
567
  n(m(ie), { class: "size-4 text-destructive" })
568
568
  ]),
569
569
  _: 1
@@ -581,23 +581,23 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
581
581
  key: 3,
582
582
  class: "border border-dashed"
583
583
  }, {
584
- default: a(() => [
584
+ default: r(() => [
585
585
  n(X, null, {
586
- default: a(() => [
586
+ default: r(() => [
587
587
  n(K, { variant: "icon" }, {
588
- default: a(() => [
588
+ default: r(() => [
589
589
  n(m(pe))
590
590
  ]),
591
591
  _: 1
592
592
  }),
593
593
  n(Q, null, {
594
- default: a(() => [...e[6] || (e[6] = [
594
+ default: r(() => [...e[6] || (e[6] = [
595
595
  u("No Exceptions Created", -1)
596
596
  ])]),
597
597
  _: 1
598
598
  }),
599
599
  n(W, null, {
600
- default: a(() => [...e[7] || (e[7] = [
600
+ default: r(() => [...e[7] || (e[7] = [
601
601
  u(' Your agenda runs smoothly without any exceptions. Click "Add Exception" to create one. ', -1)
602
602
  ])]),
603
603
  _: 1
@@ -606,13 +606,13 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
606
606
  _: 1
607
607
  }),
608
608
  n(J, null, {
609
- default: a(() => [
609
+ default: r(() => [
610
610
  n(p, {
611
611
  variant: "outline",
612
612
  size: "sm",
613
613
  onClick: M
614
614
  }, {
615
- default: a(() => [...e[8] || (e[8] = [
615
+ default: r(() => [...e[8] || (e[8] = [
616
616
  u(" Add Exception ", -1)
617
617
  ])]),
618
618
  _: 1
@@ -623,7 +623,7 @@ const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-
623
623
  ]),
624
624
  _: 1
625
625
  })),
626
- $.value ? (l(), r("div", st, [...e[9] || (e[9] = [
626
+ $.value ? (l(), a("div", st, [...e[9] || (e[9] = [
627
627
  o("span", null, "Saving...", -1)
628
628
  ])])) : v("", !0)
629
629
  ]),
@@ -0,0 +1,35 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),L=require("@oneclick.dev/cms-kit"),P=require("lucide-vue-next"),ne=require("./EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js"),y=require("./index-BuzLn4Km.js"),X=require("@oneclick.dev/cms-kit/charts"),ae=require("./index-CxETuRsG.js"),M=require("./index-DQYBP8Js.js"),Q=require("./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DPPNc-Z5.js"),re=require("./NewReservationDialog.vue_vue_type_script_setup_true_lang-DiNzGl-q.js");function se({x:v,y:s,w:n,h:u,tl:p=!1,tr:d=!1,bl:f=!1,br:r=!1,r:a=0}){let m;m=`M${v+a},${s}h${n-2*a}`;let o=d?a:0,i=d?0:a;return m+=`a${o},${o} 0 0 1 ${o},${o}`,m+=`h${i}v${i}`,m+=`v${u-2*a}`,o=r?a:0,i=r?0:a,m+=`a${o},${o} 0 0 1 ${-o},${o}`,m+=`v${i}h${-i}`,m+=`h${2*a-n}`,o=f?a:0,i=f?0:a,m+=`a${o},${o} 0 0 1 ${-o},${-o}`,m+=`h${-i}v${-i}`,m+=`v${2*a-u}`,o=p?a:0,i=p?0:a,m+=`a${o},${o} 0 0 1 ${o},${-o}`,m+=`v${-i}h${i}`,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
+ label: grouped-bar-component;
3
+ `,ie=y.injectGlobal`
4
+ :root {
5
+ --vis-grouped-bar-cursor: default;
6
+ --vis-grouped-bar-fill-color: var(--vis-color-main);
7
+ --vis-grouped-bar-stroke-color: none;
8
+ --vis-grouped-bar-stroke-width: 0px;
9
+ --vis-grouped-bar-hover-stroke-width: 1px;
10
+ --vis-grouped-bar-hover-stroke-color: none;
11
+
12
+
13
+ /* Dark Theme */
14
+ --vis-dark-grouped-bar-stroke-color: none;
15
+ }
16
+
17
+ body.theme-dark ${`.${ee}`} {
18
+ --vis-grouped-bar-stroke-color: var(--vis-dark-grouped-bar-stroke-color);
19
+ }
20
+ `,K=y.css`
21
+ label: bar;
22
+ fill: var(--vis-grouped-bar-fill-color);
23
+ stroke: var(--vis-grouped-bar-stroke-color);
24
+ stroke-width: var(--vis-grouped-bar-stroke-width);
25
+ cursor: var(--vis-grouped-bar-cursor);
26
+
27
+ &:hover {
28
+ stroke-width: var(--vis-grouped-bar-hover-stroke-width);
29
+ stroke: var(--vis-grouped-bar-hover-stroke-color);
30
+ }
31
+ `,J=y.css`
32
+ label: barGroup;
33
+ `,te=y.css`
34
+ label: barGroupExit;
35
+ `,ce=Object.freeze(Object.defineProperty({__proto__:null,bar:K,barGroup:J,barGroupExit:te,globalStyles:ie,root:ee},Symbol.toStringTag,{value:"Module"}));class oe extends M.XYComponentCore{constructor(s){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=[],s&&this.setConfig(s)}get bleed(){if(this._barData=this._getVisibleData(),this._barData.length===0)return{top:0,bottom:0,left:0,right:0};const s=!this.isVertical()&&this.dataScale.range()[0]>this.dataScale.range()[1],n=this.dataScale.domain(),u=this._getGroupWidth()/2,p=this._barData.map((k,D)=>y.getNumber(k,this.config.x,D)),d=y.min(p),f=y.max(p),r=this.dataScale(d),a=this.dataScale(f),m=this.dataScale.invert(r+(s?u:-u)),o=this.dataScale.invert(a+(s?-u:u)),i=m<=n[0]?this.dataScale(n[0])-this.dataScale(m):0,V=o>n[1]?this.dataScale(o)-this.dataScale(n[1]):0;return{top:this.isVertical()?0:s?-V:i,bottom:this.isVertical()?0:s?-i:V,left:this.isVertical()?i:0,right:this.isVertical()?V: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(s){const{config:n}=this,u=y.isNumber(s)?s:n.duration,p=this._getGroupWidth(),d=this.getAccessors(),f=[-p/2,p/2],r=M.band().domain(M.range(d.length)).range(f).paddingInner(n.barPadding).paddingOuter(n.barPadding),a=this.g.selectAll(`.${J}`).data(this._barData,(C,_)=>{var E;return`${(E=y.getString(C,n.id,_))!==null&&E!==void 0?E:_}`}),m=(C,_)=>{const E=this.dataScale(y.getNumber(C,n.x,_)),h=this.isVertical()?E:0,c=this.isVertical()?0:E;return`translate(${h},${c})`},i=a.enter().append("g").attr("class",J).attr("transform",m).style("opacity",1).merge(a);y.smartTransition(i,u).attr("transform",m).style("opacity",1);const V=a.exit().attr("class",te);y.smartTransition(V,u).style("opacity",0).remove(),y.smartTransition(V.selectAll(`.${K}`),u).attr("transform",(C,_,E)=>this.isVertical()?`translate(0,${this.yScale(0)}) scale(1,0)`:`translate(${this.xScale(0)},0) scale(0,1)`);const k=r.bandwidth(),D=i.selectAll(`.${K}`).data(C=>d.map(()=>C)),N=this._getValueAxisDirection(),R=D.enter().append("path").attr("class",K).attr("d",(C,_)=>{const E=r(_),h=this.valueScale(0),c=k;return this._getBarPath(E,h,c,0,!1,N)}).style("fill",(C,_)=>y.getColor(C,n.color,_)).merge(D);y.smartTransition(R,u).attr("d",(C,_)=>{const E=r(_),h=k,c=y.getNumber(C,d[_]),l=c<0;let T=l?this.valueScale(0):this.valueScale(c||0),I=Math.abs(this.valueScale(0)-this.valueScale(c))||0;if(I<n.barMinHeight){const B=N===M.Direction.North?-1:1;T=this.valueScale(0)+B*n.barMinHeight,I=n.barMinHeight}return this._getBarPath(E,T,h,I,l,N)}).style("fill",(C,_)=>y.getColor(C,n.color,_)).style("cursor",(C,_)=>y.getString(C,n.cursor,_)),y.smartTransition(D.exit(),u).remove()}_getValueAxisDirection(){return this.valueScale.range()[0]>this.valueScale.range()[1]?M.Direction.North:M.Direction.South}_getVisibleData(){const{config:s,datamodel:{data:n}}=this,u=this._getGroupWidth(),p=n.length<2?0:u/2,d=this.dataScale,f=Math.abs(d.invert(p)-d.invert(0));return n?.filter((a,m)=>{const o=y.getNumber(a,s.x,m),i=d.domain(),V=+i[0],k=+i[1];return o>=V-f&&o<=k+f})}_getBarPath(s,n,u,p,d,f){const{config:r}=this,a=r.roundedCorners?y.isNumber(r.roundedCorners)?+r.roundedCorners:u/2:0,m=y.clamp(a,0,Math.min(p,u)/2),o=f===M.Direction.North,i=this.isVertical()&&d!==o,V=this.isVertical()&&d===o,k=!this.isVertical()&&d,D=!this.isVertical()&&!d;return se({x:this.isVertical()?s:n+(o?0:-p),y:this.isVertical()?n+(o?0:-p):s,w:this.isVertical()?u:p,h:this.isVertical()?p:u,tl:i||k,tr:i||D,bl:V||k,br:V||D,r:m})}_getGroupWidth(){const{config:s,datamodel:{data:n}}=this;if(y.isEmpty(n))return 0;if(s.groupWidth)return y.min([s.groupWidth,s.groupMaxWidth]);const u=this.dataScale.bandwidth,p=this.dataScale.domain?this.dataScale.domain():[];let f=1+(u?p.length:p[1]-p[0])/s.dataStep||!u&&n.filter((m,o)=>{const i=y.getNumber(m,s.x,o);return i>=p[0]&&i<=p[1]}).length||n.length;!u&&f>=2&&(f+=1);const a=(f<2?1:1-s.groupPadding)*(this.isVertical()?this._width:this._height)/f;return y.min([a,s.groupMaxWidth])}getValueScaleExtent(s){const{datamodel:n}=this,u=this.getAccessors(),p=s?this._getVisibleData():n.data,d=y.getMin(p,...u),f=y.getMax(p,...u);return[d>0?0:d,f<0?0:f]}getDataScaleExtent(){const{config:s,datamodel:n}=this;return y.getExtent(n.data,s.x)}getYDataExtent(s){return this.isVertical()?this.getValueScaleExtent(s):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(v,{expose:s}){const n=e.inject(y.o),u=v,p=e.computed(()=>n.data.value??u.data),d=y.m(u),f=e.ref();return e.onMounted(()=>{e.nextTick(()=>{var r;f.value=new oe(d.value),(r=f.value)==null||r.setData(p.value),n.update(f.value)})}),e.onUnmounted(()=>{var r;(r=f.value)==null||r.destroy(),n.destroy()}),e.watch(d,(r,a)=>{var m;y.f(r,a)||(m=f.value)==null||m.setConfig(d.value)}),e.watch(p,()=>{var r;(r=f.value)==null||r.setData(p.value)}),s({component:f}),(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(v,{emit:s}){const n=v,u=s,p=e.computed({get:()=>n.viewMode,set:m=>{u("update:viewMode",m)}}),d=e.computed({get:()=>n.activeChart,set:m=>{u("update:activeChart",m)}}),{width:f}=ae.useWindowSize(),r=e.computed(()=>f.value<640),a=e.ref(!1);return(m,o)=>{const i=e.resolveComponent("DrawerTitle"),V=e.resolveComponent("DrawerDescription"),k=e.resolveComponent("DrawerHeader"),D=e.resolveComponent("Button"),N=e.resolveComponent("DrawerFooter"),G=e.resolveComponent("DrawerContent"),R=e.resolveComponent("Drawer"),C=e.resolveComponent("DropdownMenuTrigger"),_=e.resolveComponent("DropdownMenuLabel"),E=e.resolveComponent("DropdownMenuItem"),h=e.resolveComponent("DropdownMenuContent"),c=e.resolveComponent("DropdownMenu");return e.openBlock(),e.createElementBlock("div",ue,[v.resources.length>1?(e.openBlock(),e.createElementBlock("button",{key:0,"data-active":v.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:o[0]||(o[0]=l=>a.value=!0),onContextmenu:o[1]||(o[1]=e.withModifiers(l=>a.value=!0,["prevent"]))},[e.createElementVNode("div",pe,[v.viewMode==="stacked"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(P.Layers),{class:"size-3 text-muted-foreground"}),o[6]||(o[6]=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:v.resources.find(l=>l.id===v.activeChart)?.color||"#6b7280"})},null,4),e.createElementVNode("span",fe,e.toDisplayString(v.resources.find(l=>l.id===v.activeChart)?.name||"Select Resource"),1)],64)),e.createVNode(e.unref(P.ChevronDown),{class:"ml-auto size-4"})]),e.createElementVNode("span",ge,e.toDisplayString(v.viewMode==="stacked"?Object.values(v.totals).reduce((l,T)=>l+T,0).toLocaleString():(v.totals[v.activeChart]||0).toLocaleString()),1)],40,me)):e.createCommentVNode("",!0),e.unref(r)?(e.openBlock(),e.createBlock(R,{key:1,open:e.unref(a),"onUpdate:open":o[3]||(o[3]=l=>e.isRef(a)?a.value=l:null)},{default:e.withCtx(()=>[e.createVNode(G,null,{default:e.withCtx(()=>[e.createElementVNode("div",ve,[e.createVNode(k,null,{default:e.withCtx(()=>[e.createVNode(i,null,{default:e.withCtx(()=>[...o[7]||(o[7]=[e.createTextVNode("Resources",-1)])]),_:1}),e.createVNode(V,null,{default:e.withCtx(()=>[...o[8]||(o[8]=[e.createTextVNode("Select the resources to display on the timeline.",-1)])]),_:1})]),_:1}),e.createVNode(N,null,{default:e.withCtx(()=>[e.createVNode(D,{onClick:o[2]||(o[2]=l=>{p.value="stacked",d.value="",a.value=!1}),variant:v.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(v.totals).reduce((l,T)=>l+T,0).toLocaleString())+") ",1)]),_:1},8,["variant"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.resources,l=>(e.openBlock(),e.createBlock(D,{key:l.id,onClick:T=>{p.value="single",d.value=l.id,a.value=!1},variant:v.viewMode==="single"&&v.activeChart===l.id?"secondary":"outline"},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"size-3 rounded-full",style:e.normalizeStyle({backgroundColor:l.color||"#6b7280"})},null,4),e.createElementVNode("span",xe,e.toDisplayString(l.name)+" ("+e.toDisplayString((v.totals[l.id]||0).toLocaleString())+") ",1)]),_:2},1032,["onClick","variant"]))),128))]),_:1})])]),_:1})]),_:1},8,["open"])):(e.openBlock(),e.createBlock(c,{key:2,open:e.unref(a),"onUpdate:open":o[5]||(o[5]=l=>e.isRef(a)?a.value=l:null)},{default:e.withCtx(()=>[e.createVNode(C,{"as-child":""},{default:e.withCtx(()=>[...o[9]||(o[9]=[e.createElementVNode("button",{tabindex:"-1",class:"size-0 opacity-0 self-end"},null,-1)])]),_:1}),e.createVNode(h,{align:"end"},{default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[...o[10]||(o[10]=[e.createTextVNode("Resources",-1)])]),_:1}),e.createElementVNode("div",ye,[e.createVNode(E,{onClick:o[4]||(o[4]=l=>{p.value="stacked",d.value="",a.value=!1}),class:e.normalizeClass(v.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(v.totals).reduce((l,T)=>l+T,0).toLocaleString())+") ",1)]),_:1},8,["class"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.resources,l=>(e.openBlock(),e.createBlock(E,{key:l.id,onClick:T=>{p.value="single",d.value=l.id,a.value=!1},class:e.normalizeClass(v.viewMode==="single"&&v.activeChart===l.id?"bg-input":"")},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"size-3 rounded-full",style:e.normalizeStyle({backgroundColor:l.color||"#6b7280"})},null,4),e.createElementVNode("span",ke,[e.createElementVNode("span",Ce,e.toDisplayString(l.name),1),e.createElementVNode("span",null,"("+e.toDisplayString((v.totals[l.id]||0).toLocaleString())+")",1)])]),_:2},1032,["onClick","class"]))),128))])]),_:1})]),_:1},8,["open"]))])}}}),Ve={class:"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6"},_e={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(v,{emit:s}){const n=v,u=s,{params:p}=L.useModuleRoute(),{config:d}=L.useModule(),f=L.useFirebaseIntegration(d.project),r=e.ref([]),a=e.ref([]),m=e.ref(!0),o=e.ref(n.viewMode||"stacked"),i=e.ref(n.selectedResource||"");e.watch(o,t=>{u("update:viewMode",t)},{immediate:!0}),e.watch(i,t=>{u("update:selectedResource",o.value==="single"?t:null)}),e.watch(o,t=>{u("update:selectedResource",t==="single"?i.value:null)});const V=new Date,k=e.ref(n.modelValue||new Date);e.watch(()=>n.modelValue,t=>{t&&t.getTime()!==k.value.getTime()&&(k.value=t)}),e.watch(k,t=>{u("update:modelValue",t)},{immediate:!0});const D=e.computed(()=>{const t=new Date(V);t.setDate(V.getDate()-1);const g=new Date(V);return g.setDate(V.getDate()+1),k.value.toDateString()===V.toDateString()?"Today":k.value.toDateString()===t.toDateString()?"Yesterday":k.value.toDateString()===g.toDateString()?"Tomorrow":k.value.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})}),N=()=>{const t=new Date(k.value);t.setDate(t.getDate()-1),k.value=t},G=()=>{const t=new Date(k.value);t.setDate(t.getDate()+1),k.value=t},R=()=>{k.value=new Date},C=e.computed(()=>n.resources?.length===0?10:Math.max(...(n.resources||[]).map(t=>t.capacity||10))),_=e.computed(()=>(n.resources?.length||0)===0?60:Math.min(...(n.resources||[]).map(t=>t.interval||60))),E=e.computed(()=>{const t={total:{label:"Total Reservations",color:void 0}};return(n.resources||[]).forEach((g,w)=>{t[g.id]={label:g.name,color:g.color||`var(--chart-${w%5+1})`}}),t});e.watch(()=>n.resources,t=>{(t?.length||0)>0&&!i.value&&(i.value=t[0].id)},{immediate:!0});const h=e.computed(()=>[...n.resources||[]].sort((t,g)=>{const w=l.value[t.id]||0;return(l.value[g.id]||0)-w})),c=e.computed(()=>{const t=[];return _.value,r.value.forEach((g,w)=>{g.time.endsWith(":00")&&t.push(w)}),t}),l=e.computed(()=>{const t={};return n.resources?.forEach(g=>{t[g.id]=a.value.filter(w=>w.resourceId===g.id).reduce((w,S)=>w+(S.reserved||0),0)}),t}),T=t=>{const g=t.getFullYear(),w=String(t.getMonth()+1).padStart(2,"0"),S=String(t.getDate()).padStart(2,"0");return`${g}-${w}-${S}`},I=t=>{const[g,w]=t.split(":").map(Number);return g*60+w},B=(t,g)=>(n.agendaData?.exceptions||[]).find(S=>g>=S.startDate&&g<=S.endDate?S.resourceIds===null?!0:S.resourceIds?.includes(t):!1)||null,F=e.computed(()=>{const t=T(k.value),g=k.value.getDay();let w=1440,S=0;if((n.resources||[]).forEach(W=>{const z=B(W.id,t);if(z){if(z.isClosed)return;z.timeslots.forEach(j=>{const x=I(j.startTime),b=I(j.endTime);w=Math.min(w,x),S=Math.max(S,b)})}else(W.openingHours?.[g]||[]).forEach(x=>{const b=I(x.start),O=I(x.end);w=Math.min(w,b),S=Math.max(S,O)})}),w>=S)return{startMinutes:540,endMinutes:1020};const A=Math.floor(w/60)*60,H=Math.ceil(S/60)*60;return{startMinutes:A,endMinutes:H}}),$=()=>{const t=[],g=_.value,{startMinutes:w,endMinutes:S}=F.value;for(let A=w;A<S;A+=g){const H=Math.floor(A/60),W=A%60,z=`${String(H).padStart(2,"0")}:${String(W).padStart(2,"0")}`,j={time:z,label:z};n.resources?.forEach(x=>{j[x.id]=0}),t.push(j)}return t},q=async()=>{m.value=!0;try{const t=p.value.id,g=T(k.value),w=`${t}_${g}`,S=await f.get(d.reservedSpotsCollection,w);a.value=[];for(const z of n.resources||[]){const j=S?.[z.id]||{};Object.entries(j).forEach(([x,b])=>{const[O,Y]=x.split("-");a.value.push({resourceId:z.id,startTime:O,endTime:Y,reserved:b})})}const A=$(),H=_.value,{startMinutes:W}=F.value;a.value.forEach(z=>{const j=I(z.startTime),x=I(z.endTime);for(let b=j;b<x;b+=H){const O=Math.floor((b-W)/H);if(O>=0&&O<A.length){const Y=A[O][z.resourceId];typeof Y=="number"&&(A[O][z.resourceId]=Y+(z.reserved||0))}}}),r.value=A}catch(t){console.error("Error loading reservation data:",t),r.value=$(),a.value=[]}finally{m.value=!1}};return(async()=>await q())(),e.watch(k,()=>{q()}),e.watch(()=>n.resources,()=>{(n.resources?.length||0)>0&&q()}),(t,g)=>{const w=e.resolveComponent("CardTitle"),S=e.resolveComponent("Button"),A=e.resolveComponent("CardDescription"),H=e.resolveComponent("CardHeader"),W=e.resolveComponent("ChartContainer"),z=e.resolveComponent("CardContent"),j=e.resolveComponent("Card");return e.openBlock(),e.createBlock(j,{class:"py-4 sm:py-0"},{default:e.withCtx(()=>[e.createVNode(H,{class:"flex flex-col items-stretch border-b !p-0 sm:flex-row"},{default:e.withCtx(()=>[e.createElementVNode("div",Ve,[e.createElementVNode("div",_e,[e.createVNode(w,null,{default:e.withCtx(()=>[...g[2]||(g[2]=[e.createTextVNode("Reservations",-1)])]),_:1}),e.createElementVNode("div",we,[e.createVNode(S,{variant:"ghost",size:"icon",class:"size-8",onClick:N},{default:e.withCtx(()=>[e.createVNode(e.unref(P.ChevronLeft),{size:16})]),_:1}),e.createVNode(S,{variant:"ghost",size:"sm",class:"h-8 px-3 text-xs",onClick:R},{default:e.withCtx(()=>[...g[3]||(g[3]=[e.createTextVNode(" Today ",-1)])]),_:1}),e.createVNode(S,{variant:"ghost",size:"icon",class:"size-8",onClick:G},{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(D)),1)]),_:1})]),v.resources.length>0?(e.openBlock(),e.createBlock(be,{key:0,resources:v.resources,totals:e.unref(l),viewMode:e.unref(o),"onUpdate:viewMode":g[0]||(g[0]=x=>e.isRef(o)?o.value=x:null),activeChart:e.unref(i),"onUpdate:activeChart":g[1]||(g[1]=x=>e.isRef(i)?i.value=x:null)},null,8,["resources","totals","viewMode","activeChart"])):(e.openBlock(),e.createElementBlock("div",Ne," No resources configured "))]),_:1}),e.createVNode(z,{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)])])):v.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(o)==="stacked"?(e.openBlock(),e.createBlock(W,{key:2,config:e.unref(E),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(C)]},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),x=>(e.openBlock(),e.createBlock(e.unref(Z),{key:x.id,x:(b,O)=>O,y:b=>b[x.id]||0,color:b=>b[x.id]>0?e.unref(E)[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(c),"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(E),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(W,{key:3,config:e.unref(E),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(C)]},{default:e.withCtx(()=>[e.createVNode(e.unref(Z),{x:(x,b)=>b,y:x=>x[e.unref(i)]||0,color:x=>x[e.unref(i)]>0?e.unref(E)[e.unref(i)]?.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(c),"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(E),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"},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:{agendaData:{},activeDate:{},selectedResource:{},resources:{}},setup(v){const s=v,{params:n}=L.useModuleRoute(),{config:u}=L.useModule(),p=L.useFirebaseIntegration(u.project),d=e.ref([]),f=e.ref(!0),r=e.ref(""),a=e.ref(null),m=e.computed(()=>s.agendaData?.metadataSchema||[]),o=e.computed(()=>({date:i(s.activeDate),resource:null}));e.provide("event",o);const i=h=>{const c=h.getFullYear(),l=String(h.getMonth()+1).padStart(2,"0"),T=String(h.getDate()).padStart(2,"0");return`${c}-${l}-${T}`},V=e.computed(()=>{let h=d.value;return s.selectedResource&&(h=h.filter(c=>c.resourceId===s.selectedResource)),r.value.trim()&&(h=new Q.Fuse(h,{keys:["customerInfo.firstName","customerInfo.lastName","customerInfo.email","customerInfo.phone","resourceName"],threshold:.3,ignoreLocation:!0}).search(r.value).map(l=>l.item)),h}),k=e.computed(()=>V.value.filter(h=>R.value.includes(h.reservationStatus))),D=e.computed(()=>d.value.some(h=>h.reservationStatus==="approved"||h.reservationStatus==="needs_approval")),N=e.computed(()=>({spots:d.value.reduce((h,c)=>h+(c.spots||0),0),bookings:d.value.length})),G=()=>{r.value=""},R=e.ref(["needs_approval","approved"]),C=h=>{R.value.includes(h)?R.value=R.value.filter(c=>c!==h):R.value.push(h)},_=async()=>{f.value=!0,d.value=[];try{const h=n.value.id,c=i(s.activeDate),l=new Set;s.resources?.forEach(B=>{const F=`${B.id}_${c}`;l.add(F)});const T=await p.find(u.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:h},{field:"status",operator:"==",value:"confirmed"},{field:"flattenedReservationDates",operator:"array-contains-any",value:Array.from(l)}]});let I=[];T.forEach(B=>{(B.reservations?.filter($=>$.date===c)||[]).forEach($=>{const q=s.resources.find(U=>U.id===$.resourceId);I.push({customerInfo:B.customerInfo,amountDue:B.amountDue,amountPaid:B.amountPaid,status:B.status,reservationStatus:$.status,subtotal:B.subtotal,total:B.total,discount:B.discount,id:B.id,res_id:$.id,resourceId:$.resourceId,spots:$.spots,date:c,startTime:$.timeslot?.startTime,endTime:$.timeslot?.endTime,reservationPrice:$.totalPrice,reservationBasePrice:$.basePrice,reservationAddOnsPrice:$.addOnsPrice,pricingOptionId:$.pricingOptionId,pricingOption:$.pricingOption,resourceName:q?.name||"Unknown",resourceColor:q?.color,metadata:B.metadata||{},reservationMetadata:$.metadata||{}})})}),d.value=I.sort((B,F)=>B.startTime?.localeCompare(F.startTime||"")||0)}catch(h){console.error("Error loading orders:",h),d.value=[]}finally{f.value=!1}};return(async()=>await _())(),e.watch(()=>s.activeDate,()=>{_()}),(h,c)=>{const l=e.resolveComponent("Badge"),T=e.resolveComponent("CardTitle"),I=e.resolveComponent("CardDescription"),B=e.resolveComponent("Button"),F=e.resolveComponent("CardHeader"),$=e.resolveComponent("Input"),q=e.resolveComponent("CardContent"),U=e.resolveComponent("Card");return e.openBlock(),e.createBlock(U,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(d))+" ",1),e.createVNode(F,null,{default:e.withCtx(()=>[e.createElementVNode("div",Be,[e.createElementVNode("div",null,[e.createVNode(T,{class:"flex items-center gap-2"},{default:e.withCtx(()=>[c[6]||(c[6]=e.createTextVNode(" Bookings ",-1)),e.unref(N).bookings>0?(e.openBlock(),e.createBlock(l,{key:0,variant:"secondary"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(N).bookings),1)]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createVNode(I,{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(N).spots)+" total spots",1)]),_:1})]),e.createVNode(B,{variant:"ghost",size:"icon",onClick:_,disabled:e.unref(f)},{default:e.withCtx(()=>[e.createVNode(e.unref(P.RefreshCw),{size:16,class:e.normalizeClass({"animate-spin":e.unref(f)})},null,8,["class"])]),_:1},8,["disabled"])])]),_:1}),e.createVNode(q,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($,{modelValue:e.unref(r),"onUpdate:modelValue":c[0]||(c[0]=t=>e.isRef(r)?r.value=t:null),placeholder:"Search by name, email, or phone...",class:"pl-9 pr-9"},null,8,["modelValue"]),e.unref(r)?(e.openBlock(),e.createBlock(B,{key:0,variant:"ghost",size:"icon",class:"absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7",onClick:G},{default:e.withCtx(()=>[e.createVNode(e.unref(P.X),{size:14})]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",Me,[v.agendaData.needsApproval?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:c[1]||(c[1]=t=>C("needs_approval")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(R).includes("needs_approval")}])}," Needs Approval ",2)):e.createCommentVNode("",!0),e.createElementVNode("button",{onClick:c[2]||(c[2]=t=>C("approved")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(R).includes("approved")}])}," Approved ",2),e.createElementVNode("button",{onClick:c[3]||(c[3]=t=>C("rejected")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(R).includes("rejected")}])}," Rejected ",2),e.createElementVNode("button",{onClick:c[4]||(c[4]=t=>C("cancelled")),class:e.normalizeClass(["px-3 py-1.5 rounded-full text-sm bg-muted",{"opacity-50 hover:opacity-75":!e.unref(R).includes("cancelled")}])}," Cancelled ",2)]),e.unref(r)?(e.openBlock(),e.createElementBlock("div",Te," Showing "+e.toDisplayString(e.unref(V).length)+" of "+e.toDisplayString(e.unref(d).length)+" bookings ",1)):e.createCommentVNode("",!0),e.unref(f)?(e.openBlock(),e.createElementBlock("div",Re,[...c[7]||(c[7]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):e.unref(k).length===0?(e.openBlock(),e.createElementBlock("div",ze,[c[9]||(c[9]=e.createTextVNode(" No bookings for this day ",-1)),e.unref(D)?(e.openBlock(),e.createBlock(B,{key:0,onClick:c[5]||(c[5]=t=>R.value=["needs_approval","approved"])},{default:e.withCtx(()=>[...c[8]||(c[8]=[e.createTextVNode("Reset filters",-1)])]),_:1})):e.createCommentVNode("",!0)])):e.unref(V).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(V),t=>(e.openBlock(),e.createElementBlock("div",{key:t.res_id||t.id,class:"p-3 border rounded-lg hover:bg-muted/50 transition-colors cursor-pointer",onClick:g=>e.unref(a)?.openDialog(t)},[e.createElementVNode("div",je,[e.createElementVNode("div",Oe,[e.createElementVNode("div",Le,e.toDisplayString(t.customerInfo?.firstName)+" "+e.toDisplayString(t.customerInfo?.lastName||"Unknown Customer"),1),e.createElementVNode("div",Fe,e.toDisplayString(t.customerInfo?.email),1),e.createElementVNode("div",We,e.toDisplayString(t.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(t.startTime)+" - "+e.toDisplayString(t.endTime),1)]),e.createElementVNode("div",He,[e.createVNode(e.unref(P.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(t.spots)+" spots",1)]),t.resourceName?(e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("div",{class:"w-3 h-3 rounded-full",style:e.normalizeStyle({backgroundColor:t.resourceColor||"#6b7280"})},null,4),e.createElementVNode("span",null,e.toDisplayString(t.resourceName),1)])):e.createCommentVNode("",!0)]),e.createVNode(Q._sfc_main,{metadata:{...t.metadata,...t.reservationMetadata},schema:e.unref(m),"display-filter":["highlight","badge"],compact:"",class:"mt-1"},null,8,["metadata","schema"])]),e.createElementVNode("div",Ye,[t.reservationStatus==="needs_approval"?(e.openBlock(),e.createElementBlock("span",Xe,"Needs Approval")):t.reservationStatus==="approved"?(e.openBlock(),e.createElementBlock("span",Ke,"Approved")):t.reservationStatus==="rejected"?(e.openBlock(),e.createElementBlock("span",Qe,"Rejected")):t.reservationStatus==="cancelled"?(e.openBlock(),e.createElementBlock("span",Je,"Cancelled")):(e.openBlock(),e.createElementBlock("span",Ze,"Pending")),t.reservationPrice||t.reservationPrice===0?(e.openBlock(),e.createElementBlock("div",et," €"+e.toDisplayString(t.reservationPrice.toFixed(2)),1)):e.createCommentVNode("",!0)])])],8,Pe))),128))]))]),_:1}),e.createVNode(Q._sfc_main$1,{ref_key:"reservationDetailDialog",ref:a,agendaData:v.agendaData,onCancelled:_,onConfirmed:_,onRejected:_},null,8,["agendaData"])]),_: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(v){const{hasPermission:s}=L.useModulePermissions(),{params:n,resolvePath:u}=L.useModuleRoute(),{config:p}=L.useModule(),d=L.useFirebaseIntegration(p.project),f=e.ref(""),r=e.ref(!0),a=e.ref(new Date),m=e.ref(null),o=e.ref("stacked"),i=e.ref(null),V=e.ref([]);return(async()=>{try{const D=await d.get(p.agendaCollection,n.value.id);f.value=D?.serviceName||"",i.value=D,V.value=D?.resources?.filter(N=>N.isActive)||[]}catch(D){console.error("Error loading data:",D)}finally{r.value=!1}})(),(D,N)=>{const G=e.resolveComponent("Button"),R=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(f)||"Dashboard"),1),N[3]||(N[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(s)("manage-reservations")?(e.openBlock(),e.createBlock(re._sfc_main,{key:0})):e.createCommentVNode("",!0),e.createVNode(R,{to:e.unref(u)(`/edit/${e.unref(n).id}/agenda`)},{default:e.withCtx(()=>[e.createVNode(G,{class:"w-full"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Calendar),{class:"size-4"}),N[4]||(N[4]=e.createTextVNode(" View Agenda ",-1))]),_:1})]),_:1},8,["to"])])]),e.createVNode(Ee,{modelValue:e.unref(a),"onUpdate:modelValue":N[0]||(N[0]=C=>e.isRef(a)?a.value=C:null),"view-mode":e.unref(o),"onUpdate:viewMode":N[1]||(N[1]=C=>e.isRef(o)?o.value=C:null),"onUpdate:selectedResource":N[2]||(N[2]=C=>m.value=C),"agenda-data":e.unref(i),resources:e.unref(V)},null,8,["modelValue","view-mode","agenda-data","resources"]),e.createElementVNode("div",st,[e.createElementVNode("div",lt,[e.unref(V).length>0?(e.openBlock(),e.createBlock(tt,{key:0,"agenda-data":e.unref(i),"active-date":e.unref(a),"selected-resource":e.unref(m),resources:e.unref(V)},null,8,["agenda-data","active-date","selected-resource","resources"])):e.createCommentVNode("",!0)])])])]),_:1})}}});exports.default=it;
@@ -1,4 +1,4 @@
1
- import { watch as m, onMounted as j, nextTick as g, getCurrentScope as F, onScopeDispose as O, getCurrentInstance as h, hasInjectionContext as S, inject as T, toValue as p } from "vue";
1
+ import { onMounted as j, nextTick as g, watch as m, getCurrentScope as F, onScopeDispose as O, getCurrentInstance as h, hasInjectionContext as S, inject as T, toValue as p } from "vue";
2
2
  function k(t) {
3
3
  return F() ? (O(t), !0) : !1;
4
4
  }