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

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
@@ -0,0 +1,559 @@
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
+ };
@@ -0,0 +1 @@
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;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as z, inject as H, resolveComponent as m, openBlock as i, createElementBlock as u, createElementVNode as l, createVNode as t, withCtx as o, createTextVNode as s, createCommentVNode as w, ref as M, Fragment as U, renderList as L, unref as b, toDisplayString as k, withModifiers as Z, normalizeClass as B, useTemplateRef as ee, nextTick as te, reactive as ne, provide as le, createBlock as Y, normalizeStyle as oe } from "vue";
2
- import { _ as se } from "./EditLayout.vue_vue_type_script_setup_true_lang-DXa-Xxue.mjs";
2
+ import { _ as se } from "./EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs";
3
3
  import { DollarSign as de, Pencil as ae, Trash2 as F, PlusCircle as G, Users as K, ChevronDown as ie } from "lucide-vue-next";
4
4
  import { useConfirmation as re, useModuleRoute as ue, useModule as me, useFirebaseIntegration as pe } from "@oneclick.dev/cms-kit";
5
5
  import { t as ce } from "./index-RLz1QPrf.mjs";