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