@oneclick.dev/cms-core-modules 0.0.105 → 0.0.106

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 (73) hide show
  1. package/dist/{Acquisition-CPlZzUBo.mjs → Acquisition-B2pM5vSp.mjs} +2 -2
  2. package/dist/{Acquisition-Br1Pfny3.js → Acquisition-Dt2rREU8.js} +1 -1
  3. package/dist/{Audience-BfkrmBuQ.js → Audience-Bs7b0TNm.js} +1 -1
  4. package/dist/{Audience-DTblSAiL.mjs → Audience-VLnUsQvW.mjs} +2 -2
  5. package/dist/{ContentEditor-B1nfKG_5.mjs → ContentEditor-BNLEv-qJ.mjs} +3119 -3098
  6. package/dist/{ContentEditor-DdFU8piH.js → ContentEditor-BUvvqfG1.js} +36 -36
  7. package/dist/{Create-qPeQxkdl.js → Create-89z41K73.js} +1 -1
  8. package/dist/{Create-BRBh0xjM.mjs → Create-Cn_Eufga.mjs} +5 -1
  9. package/dist/{Entries-C8UJkrVC.mjs → Entries-BdhUyJR5.mjs} +1 -1
  10. package/dist/{Entries-BaS6H6ak.js → Entries-CEXM_SkO.js} +1 -1
  11. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Ceoje52V.js +1 -0
  12. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-DMGcRmm-.mjs +1255 -0
  13. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js +1 -0
  14. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs +330 -0
  15. package/dist/{Overview-CpHhuiaV.js → Overview-Bn1Xx3_j.js} +1 -1
  16. package/dist/{Overview-BrCwozey.js → Overview-DC9io1bk.js} +1 -1
  17. package/dist/Overview-Di84CsR5.mjs +476 -0
  18. package/dist/Overview-UoZHUMUz.js +1 -0
  19. package/dist/{Overview-kaMhsIUq.mjs → Overview-ejh4vUMT.mjs} +3 -3
  20. package/dist/{Overview-D_T3K6aq.mjs → Overview-lWAyyenp.mjs} +1 -1
  21. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js +349 -0
  22. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs +3077 -0
  23. package/dist/{SeoHealth-BzcWd_w7.mjs → SeoHealth-DsbVdd2l.mjs} +3 -3
  24. package/dist/SeoHealth-az1YuNF2.js +1 -0
  25. package/dist/{TableView-DXmEF6pY.mjs → TableView-Bm6HaRHm.mjs} +1 -1
  26. package/dist/{TableView-CPAw3h8g.js → TableView-DQW0A1oG.js} +1 -1
  27. package/dist/agenda-IOqtALWf.js +1 -0
  28. package/dist/agenda-neyeLWv-.mjs +1165 -0
  29. package/dist/cms-core-modules.css +1 -1
  30. package/dist/{index-C4YUVWzJ.js → index-A2kp8Isi.js} +6 -6
  31. package/dist/{index-BuzLn4Km.js → index-B5aBwdxY.js} +2 -2
  32. package/dist/{index-p5Uqu8c2.mjs → index-BRdCrvcz.mjs} +52 -47
  33. package/dist/{index-D3L8WAJI.js → index-BiT55eU0.js} +2 -2
  34. package/dist/{index-CMk3uhUt.mjs → index-Bvxc5xv_.mjs} +153 -147
  35. package/dist/{index-DQYBP8Js.js → index-G7cIlnGN.js} +4 -4
  36. package/dist/{index-DjDCYQ_6.mjs → index-X6LV64jK.mjs} +102 -101
  37. package/dist/{index-_2lRVt_k.mjs → index-uOkqO74I.mjs} +105 -107
  38. package/dist/index-unsDfNYv.mjs +1187 -0
  39. package/dist/index-vHmvbEwa.js +35 -0
  40. package/dist/index.cjs.js +1 -1
  41. package/dist/index.mjs +14 -14
  42. package/dist/interpolation-CHn59tIC.js +1 -0
  43. package/dist/interpolation-w7IRDJwK.mjs +180 -0
  44. package/dist/orders-C65SlpJy.mjs +618 -0
  45. package/dist/orders-XVzWAgG1.js +1 -0
  46. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +11 -2
  47. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +55 -0
  48. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +6 -1
  49. package/dist/src/appointments/components/edit/NewReservationDialog/CustomerInformation.vue.d.ts +10 -0
  50. package/dist/src/appointments/components/edit/NewReservationDialog/NewReservationDialog.vue.d.ts +25 -1
  51. package/dist/src/appointments/components/edit/NewReservationDialog/QuickReservationAdder.vue.d.ts +26 -0
  52. package/dist/src/appointments/components/edit/NewReservationDialog/ReservationLines.vue.d.ts +31 -0
  53. package/dist/src/appointments/components/edit/dashboard/Timeline.vue.d.ts +3 -1
  54. package/dist/src/appointments/composables/useHorizontalScroll.d.ts +20 -0
  55. package/dist/src/lib/interpolation.d.ts +6 -0
  56. package/package.json +2 -2
  57. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-9Q7TMm4u.mjs +0 -401
  58. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-DiNzGl-q.js +0 -1
  59. package/dist/Overview-BYMrsZjM.mjs +0 -332
  60. package/dist/Overview-t0pG5xjA.js +0 -1
  61. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Cz_22Oce.mjs +0 -2927
  62. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DPPNc-Z5.js +0 -349
  63. package/dist/SeoHealth-09sEOu3G.js +0 -1
  64. package/dist/agenda-BNG05SAq.js +0 -1
  65. package/dist/agenda-D1RxMxBS.mjs +0 -1152
  66. package/dist/index-BtujSJeg.js +0 -35
  67. package/dist/index-dOdMm1pV.mjs +0 -1105
  68. package/dist/interpolation-DEDSLETn.mjs +0 -128
  69. package/dist/interpolation-DERg6Lwt.js +0 -1
  70. package/dist/orders-CzzcFQha.mjs +0 -559
  71. package/dist/orders-ETtbA4aQ.js +0 -1
  72. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +0 -110
  73. package/dist/src/appointments/pages/edit/orders.vue.d.ts +0 -98
@@ -0,0 +1,618 @@
1
+ import { defineComponent as ye, ref as _, computed as y, provide as ke, onMounted as be, watch as ee, resolveComponent as k, openBlock as n, createElementBlock as l, Fragment as N, createVNode as r, withCtx as v, createElementVNode as a, unref as o, createTextVNode as b, renderList as M, toDisplayString as d, createBlock as te, createCommentVNode as w, normalizeClass as we, withDirectives as De, isRef as se, vModelText as Ce, normalizeStyle as ae, nextTick as Ie } from "vue";
2
+ import { useRoute as Se, useRouter as Pe, useOverlayParams as Ne, useModuleRoute as ze, useModule as Oe, useFirebaseIntegration as je } from "@oneclick.dev/cms-kit";
3
+ import { ShoppingBag as oe, Users as L, ChevronLeft as Ae, ChevronRight as Te, RefreshCw as Re, CalendarIcon as E, Search as Fe, X as Be, Clock as ne } from "lucide-vue-next";
4
+ import { F as $e, _ as H, a as Ue } from "./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs";
5
+ import { _ as Ve } from "./EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs";
6
+ import { _ as Me } from "./OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs";
7
+ import { _ as Le } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
8
+ const Ee = { class: "space-y-6" }, He = { class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, qe = { class: "text-2xl font-semibold tracking-tight flex items-center gap-2" }, Ye = { class: "flex gap-1 border rounded-lg p-1 w-fit" }, Qe = { class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, Xe = { class: "flex items-center gap-1" }, Ge = { class: "flex items-center gap-1" }, Je = { class: "flex items-center gap-2" }, Ke = { class: "flex items-center gap-1" }, We = { class: "mt-2 text-sm text-muted-foreground" }, Ze = { class: "orders-date-trigger" }, et = { class: "relative mb-4" }, tt = {
9
+ key: 0,
10
+ class: "mb-3 text-sm text-muted-foreground"
11
+ }, st = {
12
+ key: 1,
13
+ class: "flex items-center justify-center py-8"
14
+ }, at = {
15
+ key: 2,
16
+ class: "text-center py-8 text-muted-foreground"
17
+ }, ot = {
18
+ key: 3,
19
+ class: "text-center py-8 text-muted-foreground"
20
+ }, nt = {
21
+ key: 4,
22
+ class: "space-y-2"
23
+ }, rt = ["onClick"], lt = { class: "flex items-start justify-between" }, it = { class: "flex-1" }, dt = { class: "font-medium" }, ct = { class: "text-sm text-muted-foreground" }, ut = { class: "text-sm text-muted-foreground" }, mt = { class: "flex items-center gap-4 flex-wrap mt-1" }, ft = { class: "flex items-center gap-2 text-xs text-muted-foreground" }, vt = { class: "flex items-center gap-2 text-xs text-muted-foreground" }, pt = {
24
+ key: 0,
25
+ class: "flex items-center gap-1 text-xs text-muted-foreground"
26
+ }, xt = { class: "flex items-center gap-2 mt-1 text-xs text-muted-foreground" }, gt = { class: "text-right" }, _t = {
27
+ key: 0,
28
+ 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"
29
+ }, ht = {
30
+ key: 1,
31
+ 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"
32
+ }, yt = {
33
+ key: 2,
34
+ 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"
35
+ }, kt = {
36
+ key: 3,
37
+ 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"
38
+ }, bt = {
39
+ key: 4,
40
+ 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"
41
+ }, wt = {
42
+ key: 5,
43
+ 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"
44
+ }, Dt = {
45
+ key: 6,
46
+ 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"
47
+ }, Ct = {
48
+ key: 7,
49
+ class: "text-sm font-medium mt-1"
50
+ }, It = ["onClick"], St = { class: "flex items-start justify-between" }, Pt = { class: "flex-1" }, Nt = { class: "flex items-center gap-2" }, zt = { class: "font-medium" }, Ot = { class: "text-sm text-muted-foreground" }, jt = { class: "text-sm text-muted-foreground" }, At = { class: "flex items-center gap-2 mt-1 text-xs text-muted-foreground" }, Tt = { class: "text-right" }, Rt = {
51
+ key: 0,
52
+ 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"
53
+ }, Ft = {
54
+ key: 1,
55
+ 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"
56
+ }, Bt = {
57
+ key: 2,
58
+ 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"
59
+ }, $t = { class: "text-sm font-medium mt-1" }, Ut = ["onClick"], Vt = { class: "flex items-center justify-between" }, Mt = { class: "flex items-center gap-4 flex-wrap" }, Lt = { class: "flex items-center gap-2 text-xs text-muted-foreground" }, Et = { class: "flex items-center gap-2 text-xs text-muted-foreground" }, Ht = {
60
+ key: 0,
61
+ class: "flex items-center gap-1 text-xs text-muted-foreground"
62
+ }, qt = {
63
+ key: 0,
64
+ class: "text-right flex items-center gap-2"
65
+ }, Yt = {
66
+ key: 0,
67
+ 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"
68
+ }, Qt = {
69
+ key: 1,
70
+ 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"
71
+ }, Xt = {
72
+ key: 2,
73
+ 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"
74
+ }, Gt = {
75
+ key: 3,
76
+ 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"
77
+ }, Jt = {
78
+ key: 4,
79
+ 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"
80
+ }, Kt = {
81
+ key: 5,
82
+ class: "text-sm font-medium"
83
+ }, Wt = /* @__PURE__ */ ye({
84
+ __name: "orders",
85
+ setup(Zt) {
86
+ const q = Se();
87
+ Pe();
88
+ const Y = Ne(), { params: Q } = ze(), { config: z } = Oe(), A = je(z.project), x = _([]), T = _([]), S = _(!0), O = _(null), R = y(() => O?.value?.metadataSchema || []), h = _(""), P = _(null), F = _(null), I = _("confirmed"), D = /* @__PURE__ */ new Date(), m = _(/* @__PURE__ */ new Date()), X = _(null), re = y(() => ({
89
+ date: G(m.value),
90
+ resource: null
91
+ }));
92
+ ke("event", re);
93
+ const B = y({
94
+ get: () => G(m.value),
95
+ set: (e) => {
96
+ if (!e) {
97
+ m.value = /* @__PURE__ */ new Date();
98
+ return;
99
+ }
100
+ m.value = /* @__PURE__ */ new Date(`${e}T00:00:00`);
101
+ }
102
+ }), le = () => {
103
+ const e = X.value;
104
+ if (e) {
105
+ if (typeof e.showPicker == "function") {
106
+ e.showPicker();
107
+ return;
108
+ }
109
+ e.focus(), e.click();
110
+ }
111
+ }, ie = y(() => {
112
+ const e = new Date(D);
113
+ e.setDate(D.getDate() - 1);
114
+ const t = new Date(D);
115
+ return t.setDate(D.getDate() + 1), m.value.toDateString() === D.toDateString() ? "Today" : m.value.toDateString() === e.toDateString() ? "Yesterday" : m.value.toDateString() === t.toDateString() ? "Tomorrow" : m.value.toLocaleDateString("en-US", {
116
+ weekday: "long",
117
+ month: "long",
118
+ day: "numeric",
119
+ year: "numeric"
120
+ });
121
+ }), de = () => {
122
+ const e = new Date(m.value);
123
+ e.setDate(e.getDate() - 1), m.value = e;
124
+ }, ce = () => {
125
+ const e = new Date(m.value);
126
+ e.setDate(e.getDate() + 1), e <= D && (m.value = e);
127
+ }, ue = y(() => {
128
+ const e = new Date(m.value);
129
+ return e.setDate(e.getDate() + 1), e <= D;
130
+ }), me = () => {
131
+ m.value = /* @__PURE__ */ new Date();
132
+ }, G = (e) => {
133
+ const t = e.getFullYear(), i = String(e.getMonth() + 1).padStart(2, "0"), u = String(e.getDate()).padStart(2, "0");
134
+ return `${t}-${i}-${u}`;
135
+ }, J = (e) => e ? new Date(e).toLocaleTimeString("en-US", {
136
+ hour: "2-digit",
137
+ minute: "2-digit",
138
+ hour12: !1
139
+ }) : "", K = (e) => e ? new Date(e).toLocaleDateString("en-US", {
140
+ weekday: "short",
141
+ month: "short",
142
+ day: "numeric"
143
+ }) : "", W = (e, t) => {
144
+ const i = T.value.find((p) => p.id === t.resourceId), u = e.id || e.orderId || t.orderId || "";
145
+ return {
146
+ customerInfo: e.customerInfo,
147
+ amountDue: e.amountDue,
148
+ amountPaid: e.amountPaid,
149
+ status: e.status,
150
+ reservationStatus: t.status,
151
+ subtotal: e.subtotal,
152
+ total: e.total,
153
+ discount: e.discount,
154
+ id: u,
155
+ res_id: t.id,
156
+ resourceId: t.resourceId,
157
+ spots: t.spots,
158
+ date: t.date,
159
+ createdAt: e.createdAt,
160
+ startTime: t.timeslot?.startTime,
161
+ endTime: t.timeslot?.endTime,
162
+ reservationPrice: t.totalPrice,
163
+ reservationBasePrice: t.basePrice,
164
+ reservationAddOnsPrice: t.addOnsPrice,
165
+ pricingOptionId: t.pricingOptionId,
166
+ pricingOption: t.pricingOption,
167
+ resourceName: i?.name || "Unknown",
168
+ resourceColor: i?.color,
169
+ metadata: e.metadata || {},
170
+ reservationMetadata: t.metadata || {},
171
+ adjustments: e.adjustments || [],
172
+ reservationAdjustments: t.adjustments || []
173
+ };
174
+ }, $ = async () => {
175
+ await Ie(), await new Promise((e) => {
176
+ if (typeof requestAnimationFrame == "function") {
177
+ requestAnimationFrame(() => e());
178
+ return;
179
+ }
180
+ e();
181
+ });
182
+ }, U = y(() => h.value.trim() ? new $e(x.value, {
183
+ keys: [
184
+ "customerInfo.firstName",
185
+ "customerInfo.lastName",
186
+ "customerInfo.email",
187
+ "customerInfo.phone",
188
+ "resourceName"
189
+ ],
190
+ threshold: 0.3,
191
+ ignoreLocation: !0
192
+ }).search(h.value).map((t) => t.item) : x.value), fe = y(() => {
193
+ const e = /* @__PURE__ */ new Map();
194
+ for (const t of U.value) {
195
+ e.has(t.id) || e.set(t.id, {
196
+ id: t.id,
197
+ customerInfo: t.customerInfo,
198
+ status: t.status,
199
+ createdAt: t.createdAt,
200
+ metadata: t.metadata || {},
201
+ reservations: [],
202
+ adjustments: t.adjustments || [],
203
+ totalPrice: 0,
204
+ totalSpots: 0
205
+ });
206
+ const i = e.get(t.id);
207
+ i.reservations.push(t), i.totalPrice = typeof t.total == "number" ? t.total : i.totalPrice + (t.reservationPrice || 0), i.totalSpots += t.spots || 0;
208
+ }
209
+ return Array.from(e.values());
210
+ }), j = y(() => ({
211
+ spots: x.value.reduce((e, t) => e + (t.spots || 0), 0),
212
+ bookings: x.value.length,
213
+ revenue: x.value.reduce((e, t) => e + (t.reservationPrice || 0), 0)
214
+ })), ve = () => {
215
+ h.value = "";
216
+ }, pe = async () => {
217
+ try {
218
+ const e = Q.value.id, t = await A.get(z.agendaCollection, e);
219
+ O.value = t, T.value = t?.resources?.filter((i) => i.isActive) || [];
220
+ } catch (e) {
221
+ console.error("Error loading resources:", e), T.value = [];
222
+ }
223
+ }, C = async () => {
224
+ S.value = !0, x.value = [];
225
+ try {
226
+ const e = Q.value.id, t = new Date(m.value);
227
+ t.setHours(0, 0, 0, 0);
228
+ const i = new Date(m.value);
229
+ i.setHours(23, 59, 59, 999);
230
+ const u = await A.find(z.reservationsCollection, {
231
+ filters: [
232
+ { field: "agendaId", operator: "==", value: e },
233
+ { field: "createdAt", operator: ">=", value: t.toISOString() },
234
+ { field: "createdAt", operator: "<=", value: i.toISOString() },
235
+ { field: "status", operator: "==", value: I.value }
236
+ ]
237
+ });
238
+ let p = [];
239
+ u.forEach((f) => {
240
+ (f.reservations || []).forEach((V) => {
241
+ p.push(W(f, V));
242
+ });
243
+ }), x.value = p.sort((f, g) => (g.createdAt || "").localeCompare(f.createdAt || ""));
244
+ } catch (e) {
245
+ console.error("Error loading orders:", e), x.value = [];
246
+ } finally {
247
+ S.value = !1;
248
+ }
249
+ }, xe = async () => {
250
+ await pe(), await C();
251
+ }, Z = async (e, t) => {
252
+ const i = await A.get(z.reservationsCollection, e);
253
+ if (!i) return;
254
+ const u = { ...i, id: i.id || e }, p = (u.reservations || []).map((f) => W(u, f));
255
+ if (t) {
256
+ const f = p.find((g) => g.res_id === t);
257
+ if (!f) return;
258
+ await $(), P.value?.openDialog(f);
259
+ return;
260
+ }
261
+ p.length && (await $(), F.value?.openDialog({
262
+ id: u.id,
263
+ customerInfo: u.customerInfo,
264
+ status: u.status,
265
+ createdAt: u.createdAt,
266
+ metadata: u.metadata || {},
267
+ reservations: p,
268
+ adjustments: u.adjustments || [],
269
+ totalPrice: typeof u.total == "number" ? u.total : p.reduce((f, g) => f + (g.reservationPrice || 0), 0),
270
+ totalSpots: p.reduce((f, g) => f + (g.spots || 0), 0)
271
+ }));
272
+ }, ge = async (e) => {
273
+ await $(), P.value?.openDialog(e);
274
+ };
275
+ return xe(), be(async () => {
276
+ const e = Y.value.orderId || q.query.orderId, t = Y.value.reservationId || q.query.reservationId;
277
+ if (e) {
278
+ const i = new URL(window.location.href);
279
+ i.searchParams.delete("orderId"), i.searchParams.delete("reservationId"), window.history.replaceState(window.history.state, "", i.toString()), await Z(e, t);
280
+ }
281
+ }), ee(m, () => {
282
+ C();
283
+ }), ee(I, () => {
284
+ C();
285
+ }), (e, t) => {
286
+ const i = k("Button"), u = k("Badge"), p = k("CardTitle"), f = k("CardDescription"), g = k("CardHeader"), V = k("Input"), _e = k("CardContent"), he = k("Card");
287
+ return n(), l(N, null, [
288
+ r(Ve, null, {
289
+ default: v(() => [
290
+ a("div", Ee, [
291
+ a("div", He, [
292
+ a("div", null, [
293
+ a("h1", qe, [
294
+ r(o(oe), { class: "size-6" }),
295
+ t[4] || (t[4] = b(" Orders ", -1))
296
+ ]),
297
+ t[5] || (t[5] = a("p", { class: "text-muted-foreground text-sm mt-1" }, " View orders by when they were placed ", -1))
298
+ ])
299
+ ]),
300
+ a("div", Ye, [
301
+ (n(), l(N, null, M(["confirmed", "pending", "cancelled"], (s) => r(i, {
302
+ key: s,
303
+ variant: o(I) === s ? "default" : "ghost",
304
+ size: "sm",
305
+ class: "capitalize",
306
+ onClick: (c) => I.value = s
307
+ }, {
308
+ default: v(() => [
309
+ b(d(s), 1)
310
+ ]),
311
+ _: 2
312
+ }, 1032, ["variant", "onClick"])), 64))
313
+ ]),
314
+ r(he, null, {
315
+ default: v(() => [
316
+ r(g, null, {
317
+ default: v(() => [
318
+ a("div", Qe, [
319
+ a("div", null, [
320
+ r(p, { class: "flex items-center gap-2" }, {
321
+ default: v(() => [
322
+ t[6] || (t[6] = b(" Orders received ", -1)),
323
+ o(j).bookings > 0 ? (n(), te(u, {
324
+ key: 0,
325
+ variant: "secondary"
326
+ }, {
327
+ default: v(() => [
328
+ b(d(o(j).bookings), 1)
329
+ ]),
330
+ _: 1
331
+ })) : w("", !0)
332
+ ]),
333
+ _: 1
334
+ }),
335
+ r(f, { class: "flex items-center gap-4 mt-1" }, {
336
+ default: v(() => [
337
+ a("span", Xe, [
338
+ r(o(L), { size: 14 }),
339
+ b(" " + d(o(j).spots) + " spots ", 1)
340
+ ]),
341
+ a("span", Ge, " €" + d(o(j).revenue.toFixed(2)) + d(o(I) === "pending" ? " pending " : o(I) === "cancelled" ? " cancelled " : " ") + "revenue ", 1)
342
+ ]),
343
+ _: 1
344
+ })
345
+ ]),
346
+ a("div", Je, [
347
+ a("div", Ke, [
348
+ r(i, {
349
+ variant: "outline",
350
+ size: "icon",
351
+ class: "size-8",
352
+ onClick: de
353
+ }, {
354
+ default: v(() => [
355
+ r(o(Ae), { size: 16 })
356
+ ]),
357
+ _: 1
358
+ }),
359
+ r(i, {
360
+ variant: "outline",
361
+ size: "sm",
362
+ class: "h-8 px-3 text-xs",
363
+ onClick: me
364
+ }, {
365
+ default: v(() => [...t[7] || (t[7] = [
366
+ b(" Today ", -1)
367
+ ])]),
368
+ _: 1
369
+ }),
370
+ r(i, {
371
+ variant: "outline",
372
+ size: "icon",
373
+ class: "size-8",
374
+ onClick: ce,
375
+ disabled: !o(ue)
376
+ }, {
377
+ default: v(() => [
378
+ r(o(Te), { size: 16 })
379
+ ]),
380
+ _: 1
381
+ }, 8, ["disabled"])
382
+ ]),
383
+ r(i, {
384
+ variant: "outline",
385
+ size: "icon",
386
+ onClick: C,
387
+ disabled: o(S)
388
+ }, {
389
+ default: v(() => [
390
+ r(o(Re), {
391
+ size: 16,
392
+ class: we({ "animate-spin": o(S) })
393
+ }, null, 8, ["class"])
394
+ ]),
395
+ _: 1
396
+ }, 8, ["disabled"])
397
+ ])
398
+ ]),
399
+ a("div", We, [
400
+ a("div", Ze, [
401
+ r(i, {
402
+ type: "button",
403
+ variant: "outline",
404
+ onClick: le
405
+ }, {
406
+ default: v(() => [
407
+ r(o(E), { class: "size-4" }),
408
+ b(" " + d(o(ie)), 1)
409
+ ]),
410
+ _: 1
411
+ }),
412
+ De(a("input", {
413
+ ref_key: "dateInputRef",
414
+ ref: X,
415
+ "onUpdate:modelValue": t[0] || (t[0] = (s) => se(B) ? B.value = s : null),
416
+ type: "date",
417
+ class: "orders-date-picker",
418
+ "aria-label": "Select order date"
419
+ }, null, 512), [
420
+ [Ce, o(B)]
421
+ ])
422
+ ])
423
+ ])
424
+ ]),
425
+ _: 1
426
+ }),
427
+ r(_e, null, {
428
+ default: v(() => [
429
+ a("div", et, [
430
+ r(o(Fe), {
431
+ size: 16,
432
+ class: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"
433
+ }),
434
+ r(V, {
435
+ modelValue: o(h),
436
+ "onUpdate:modelValue": t[1] || (t[1] = (s) => se(h) ? h.value = s : null),
437
+ placeholder: "Search by name, email, or phone...",
438
+ class: "pl-9 pr-9"
439
+ }, null, 8, ["modelValue"]),
440
+ o(h) ? (n(), te(i, {
441
+ key: 0,
442
+ variant: "ghost",
443
+ size: "icon",
444
+ class: "absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7",
445
+ onClick: ve
446
+ }, {
447
+ default: v(() => [
448
+ r(o(Be), { size: 14 })
449
+ ]),
450
+ _: 1
451
+ })) : w("", !0)
452
+ ]),
453
+ o(h) ? (n(), l("div", tt, " Showing " + d(o(U).length) + " of " + d(o(x).length) + " orders ", 1)) : w("", !0),
454
+ o(S) ? (n(), l("div", st, [...t[8] || (t[8] = [
455
+ a("div", { class: "animate-spin rounded-full h-8 w-8 border-b-2 border-primary" }, null, -1)
456
+ ])])) : o(x).length === 0 ? (n(), l("div", at, [
457
+ r(o(oe), { class: "size-12 mx-auto mb-3 opacity-50" }),
458
+ t[9] || (t[9] = a("p", null, "No orders received on this day", -1))
459
+ ])) : o(U).length === 0 ? (n(), l("div", ot, " No orders match your search ")) : (n(), l("div", nt, [
460
+ (n(!0), l(N, null, M(o(fe), (s) => (n(), l("div", {
461
+ key: s.id,
462
+ class: "border rounded-lg overflow-hidden shadow-sm"
463
+ }, [
464
+ s.reservations.length === 1 ? (n(), l("div", {
465
+ key: 0,
466
+ class: "p-3 hover:bg-muted/50 transition-colors cursor-pointer",
467
+ onClick: (c) => o(P)?.openDialog(s.reservations[0])
468
+ }, [
469
+ a("div", lt, [
470
+ a("div", it, [
471
+ a("div", dt, d(s.customerInfo?.firstName || s.customerInfo?.lastName ? [s.customerInfo?.firstName, s.customerInfo?.lastName].filter(Boolean).join(" ") : "Unknown Customer"), 1),
472
+ a("div", ct, d(s.customerInfo?.email), 1),
473
+ a("div", ut, d(s.customerInfo?.phone), 1),
474
+ a("div", mt, [
475
+ a("div", ft, [
476
+ r(o(E), { size: 12 }),
477
+ a("span", null, d(K(s.reservations[0].date)) + " · " + d(s.reservations[0].startTime) + " - " + d(s.reservations[0].endTime), 1)
478
+ ]),
479
+ a("div", vt, [
480
+ r(o(L), { size: 12 }),
481
+ a("span", null, d(s.reservations[0].spots) + " spots", 1)
482
+ ]),
483
+ s.reservations[0].resourceName ? (n(), l("div", pt, [
484
+ a("div", {
485
+ class: "w-3 h-3 rounded-full",
486
+ style: ae({ backgroundColor: s.reservations[0].resourceColor || "#6b7280" })
487
+ }, null, 4),
488
+ a("span", null, d(s.reservations[0].resourceName), 1)
489
+ ])) : w("", !0)
490
+ ]),
491
+ a("div", xt, [
492
+ r(o(ne), { size: 12 }),
493
+ a("span", null, "Ordered at " + d(J(s.createdAt)), 1)
494
+ ]),
495
+ r(H, {
496
+ metadata: { ...s.reservations[0].metadata, ...s.reservations[0].reservationMetadata },
497
+ schema: o(R),
498
+ "display-filter": ["highlight", "badge"],
499
+ compact: "",
500
+ class: "mt-1"
501
+ }, null, 8, ["metadata", "schema"])
502
+ ]),
503
+ a("div", gt, [
504
+ s.reservations[0].status === "pending" ? (n(), l("span", _t, "Pending")) : s.reservations[0].status === "cancelled" ? (n(), l("span", ht, "Cancelled")) : s.reservations[0].reservationStatus === "needs_approval" ? (n(), l("span", yt, "Needs Approval")) : s.reservations[0].reservationStatus === "approved" ? (n(), l("span", kt, "Approved")) : s.reservations[0].reservationStatus === "cancelled" ? (n(), l("span", bt, "Cancelled")) : s.reservations[0].reservationStatus === "rejected" ? (n(), l("span", wt, "Rejected")) : (n(), l("span", Dt, "Pending")),
505
+ s.reservations[0].reservationPrice || s.reservations[0].reservationPrice === 0 ? (n(), l("div", Ct, " €" + d(s.reservations[0].reservationPrice.toFixed(2)), 1)) : w("", !0)
506
+ ])
507
+ ])
508
+ ], 8, rt)) : (n(), l(N, { key: 1 }, [
509
+ a("div", {
510
+ class: "p-3 bg-muted/30 hover:bg-muted/50 transition-colors cursor-pointer",
511
+ onClick: (c) => o(F)?.openDialog(s)
512
+ }, [
513
+ a("div", St, [
514
+ a("div", Pt, [
515
+ a("div", Nt, [
516
+ a("div", zt, d(s.customerInfo?.firstName || s.customerInfo?.lastName ? [s.customerInfo?.firstName, s.customerInfo?.lastName].filter(Boolean).join(" ") : "Unknown Customer"), 1),
517
+ r(u, {
518
+ variant: "secondary",
519
+ class: "text-xs"
520
+ }, {
521
+ default: v(() => [
522
+ b(d(s.reservations.length) + " reservations ", 1)
523
+ ]),
524
+ _: 2
525
+ }, 1024)
526
+ ]),
527
+ a("div", Ot, d(s.customerInfo?.email), 1),
528
+ a("div", jt, d(s.customerInfo?.phone), 1),
529
+ a("div", At, [
530
+ r(o(ne), { size: 12 }),
531
+ a("span", null, "Ordered at " + d(J(s.createdAt)), 1)
532
+ ]),
533
+ r(H, {
534
+ metadata: s.metadata,
535
+ schema: o(R),
536
+ "display-filter": ["highlight", "badge"],
537
+ compact: "",
538
+ class: "mt-1"
539
+ }, null, 8, ["metadata", "schema"])
540
+ ]),
541
+ a("div", Tt, [
542
+ s.status === "pending" ? (n(), l("span", Rt, "Pending")) : s.status === "cancelled" ? (n(), l("span", Ft, "Cancelled")) : (n(), l("span", Bt, "Confirmed")),
543
+ a("div", $t, " €" + d(s.totalPrice.toFixed(2)), 1)
544
+ ])
545
+ ])
546
+ ], 8, It),
547
+ (n(!0), l(N, null, M(s.reservations, (c) => (n(), l("div", {
548
+ key: c.res_id,
549
+ class: "p-3 border-t bg-muted/50 dark:bg-transparent dark:hover:bg-muted/50 transition-colors cursor-pointer",
550
+ onClick: (es) => o(P)?.openDialog(c)
551
+ }, [
552
+ a("div", Vt, [
553
+ a("div", Mt, [
554
+ a("div", Lt, [
555
+ r(o(E), { size: 12 }),
556
+ a("span", null, d(K(c.date)) + " · " + d(c.startTime) + " - " + d(c.endTime), 1)
557
+ ]),
558
+ a("div", Et, [
559
+ r(o(L), { size: 12 }),
560
+ a("span", null, d(c.spots) + " spots", 1)
561
+ ]),
562
+ c.resourceName ? (n(), l("div", Ht, [
563
+ a("div", {
564
+ class: "w-3 h-3 rounded-full",
565
+ style: ae({ backgroundColor: c.resourceColor || "#6b7280" })
566
+ }, null, 4),
567
+ a("span", null, d(c.resourceName), 1)
568
+ ])) : w("", !0)
569
+ ]),
570
+ c.status === "confirmed" ? (n(), l("div", qt, [
571
+ c.reservationStatus === "needs_approval" ? (n(), l("span", Yt, "Needs Approval")) : c.reservationStatus === "approved" ? (n(), l("span", Qt, "Approved")) : c.reservationStatus === "cancelled" ? (n(), l("span", Xt, "Cancelled")) : c.reservationStatus === "rejected" ? (n(), l("span", Gt, "Rejected")) : (n(), l("span", Jt, "Pending")),
572
+ c.reservationPrice || c.reservationPrice === 0 ? (n(), l("div", Kt, " €" + d(c.reservationPrice.toFixed(2)), 1)) : w("", !0)
573
+ ])) : w("", !0)
574
+ ]),
575
+ r(H, {
576
+ metadata: c.reservationMetadata,
577
+ schema: o(R),
578
+ "display-filter": ["highlight", "badge"],
579
+ compact: "",
580
+ class: "mt-1"
581
+ }, null, 8, ["metadata", "schema"])
582
+ ], 8, Ut))), 128))
583
+ ], 64))
584
+ ]))), 128))
585
+ ]))
586
+ ]),
587
+ _: 1
588
+ })
589
+ ]),
590
+ _: 1
591
+ })
592
+ ])
593
+ ]),
594
+ _: 1
595
+ }),
596
+ r(Ue, {
597
+ ref_key: "reservationDetailDialog",
598
+ ref: P,
599
+ "agenda-data": o(O),
600
+ "show-order-link": "",
601
+ onCancelled: C,
602
+ onConfirmed: C,
603
+ onRejected: C,
604
+ onOpenOrder: t[2] || (t[2] = (s) => Z(s))
605
+ }, null, 8, ["agenda-data"]),
606
+ r(Me, {
607
+ ref_key: "orderDetailDialog",
608
+ ref: F,
609
+ "agenda-data": o(O),
610
+ onOpenReservation: t[3] || (t[3] = (s) => ge(s))
611
+ }, null, 8, ["agenda-data"])
612
+ ], 64);
613
+ };
614
+ }
615
+ }), is = /* @__PURE__ */ Le(Wt, [["__scopeId", "data-v-b75d229e"]]);
616
+ export {
617
+ is as default
618
+ };