@oneclick.dev/cms-core-modules 0.0.115 → 0.0.117

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 (107) hide show
  1. package/dist/{Acquisition-FV3QpaUX.mjs → Acquisition-X5-eksDw.mjs} +2 -2
  2. package/dist/{Audience-ka0b7YPE.mjs → Audience-CXryJ8tc.mjs} +2 -2
  3. package/dist/{ContentEditor-C5yNNLeV.mjs → ContentEditor-CUe6-NwF.mjs} +17650 -14456
  4. package/dist/{ContentEditor-MctMvN7D.js → ContentEditor-DWoXc0T_.js} +52 -52
  5. package/dist/{Create-BXNLRQag.mjs → Create-BPA2ywrd.mjs} +1 -1
  6. package/dist/{DateFormatter-qbhRYxI_.mjs → DateFormatter-BkKoSf_l.mjs} +5 -5
  7. package/dist/{Detail-BCOcP2ql.mjs → Detail-C1Blq61w.mjs} +1 -1
  8. package/dist/{Detail-ChD5XurA.mjs → Detail-CfsPwl4s.mjs} +17 -17
  9. package/dist/{Detail-DnX7tsqN.mjs → Detail-CtItxMX4.mjs} +1 -1
  10. package/dist/{Detail-Btzwo0Y3.mjs → Detail-Dnpnmy4-.mjs} +1 -1
  11. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-gozJKXvM.js +1 -0
  12. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-pDO9b4Pv.mjs +77 -0
  13. package/dist/{Find-zN_dKz4p.mjs → Find-BAvaNf90.mjs} +1 -1
  14. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BXTkYCm_.mjs +1476 -0
  15. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-C2zwt5UF.js +1 -0
  16. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +925 -0
  17. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +5021 -0
  18. package/dist/{Overview-BR_y8x3W.mjs → Overview-BWLxUksJ.mjs} +1 -1
  19. package/dist/{Overview-MpgkLB6m.mjs → Overview-Bjvu9Lfc.mjs} +3 -3
  20. package/dist/Overview-CBahJviK.js +1 -0
  21. package/dist/Overview-CVQ1pkuD.mjs +527 -0
  22. package/dist/{SeoHealth-bVQj_Xgm.mjs → SeoHealth-I2mqiuLm.mjs} +3 -3
  23. package/dist/TableView-BQI3CWll.mjs +6234 -0
  24. package/dist/TableView-Cwal0BPW.js +4 -0
  25. package/dist/agenda-B3nj388v.mjs +1253 -0
  26. package/dist/agenda-Bev1mO7E.js +1 -0
  27. package/dist/availability-ClBGVgE9.js +1 -0
  28. package/dist/availability-D8JdA4rP.mjs +274 -0
  29. package/dist/booking-data-Px7XCIfU.mjs +1024 -0
  30. package/dist/booking-data-aMS1p_3g.js +1 -0
  31. package/dist/cms-core-modules.css +1 -1
  32. package/dist/exceptions-DXqc0Nza.js +1 -0
  33. package/dist/exceptions-Dgj54ULn.mjs +651 -0
  34. package/dist/{index-DZV720u-.mjs → index-52nwosIs.mjs} +45 -45
  35. package/dist/{index-CkVwMqpn.mjs → index-Bnn9LahC.mjs} +52 -52
  36. package/dist/{index-B8GvmAwh.mjs → index-DiTIA8Sh.mjs} +27 -27
  37. package/dist/index-Djp4EBb0.mjs +1245 -0
  38. package/dist/index-DliTZzwI.js +35 -0
  39. package/dist/{index-L54VBzwJ.mjs → index-ar4tbR3i.mjs} +8 -8
  40. package/dist/{index-BIF2RB7k.mjs → index-cC_2cw31.mjs} +4 -4
  41. package/dist/{index-CFzn2Lus.mjs → index-hMp4p5qA.mjs} +3 -3
  42. package/dist/index.cjs.js +1 -1
  43. package/dist/index.mjs +26 -25
  44. package/dist/{math-BJ-oX_IM.mjs → math-Bkw6u412.mjs} +11 -11
  45. package/dist/orders-1swJVKw2.js +1 -0
  46. package/dist/orders-D41GbzIa.mjs +624 -0
  47. package/dist/payment-BJHgpaeT.js +1 -0
  48. package/dist/payment-D5j-68Ig.mjs +1278 -0
  49. package/dist/refunds-D9nTeD2d.mjs +436 -0
  50. package/dist/refunds-oVB2Opib.js +1 -0
  51. package/dist/resources-8WouFvJe.js +1 -0
  52. package/dist/resources-CK0oWssj.mjs +975 -0
  53. package/dist/server-handlers.cjs.js +1 -1
  54. package/dist/server-handlers.mjs +626 -515
  55. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +146 -5
  56. package/dist/src/appointments/components/edit/EventDialog/CancelRefundReservationDialog.vue.d.ts +33 -0
  57. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +26 -8
  58. package/dist/src/appointments/components/edit/EventDialog/RefundDetailsDisplay.vue.d.ts +8 -0
  59. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +91 -5
  60. package/dist/src/appointments/components/edit/EventDialog/TransferReservationDialog.vue.d.ts +20 -3
  61. package/dist/src/appointments/components/edit/NewReservationDialog/ReservationLines.vue.d.ts +5 -0
  62. package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +20 -2
  63. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +240 -0
  64. package/dist/src/appointments/composables/useAgendaMetadataSchema.d.ts +37 -0
  65. package/dist/src/appointments/pages/edit/orders.vue.d.ts +225 -0
  66. package/dist/src/appointments/pages/edit/refunds.vue.d.ts +2 -0
  67. package/dist/src/appointments/server.d.ts +2 -0
  68. package/dist/src/appointments/types.d.ts +6 -0
  69. package/dist/src/appointments/utils/printReservation.d.ts +65 -3
  70. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/Table.d.ts +36 -0
  71. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/Table.vue.d.ts +95 -0
  72. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableCell.d.ts +13 -0
  73. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableHeader.d.ts +6 -0
  74. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableRow.d.ts +6 -0
  75. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/index.d.ts +4 -0
  76. package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/TableMenu.vue.d.ts +13 -0
  77. package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/index.d.ts +14 -0
  78. package/dist/{vee-validate-zod-DNjTLCgh.mjs → vee-validate-zod-CcOwoF6y.mjs} +6 -6
  79. package/package.json +2 -2
  80. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +0 -76
  81. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +0 -1
  82. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Baqy-rTT.js +0 -1
  83. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Dx4Bpa2m.mjs +0 -1263
  84. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js +0 -1
  85. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs +0 -330
  86. package/dist/Overview-98nkJUWN.mjs +0 -481
  87. package/dist/Overview-Dl8cMlsr.js +0 -1
  88. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js +0 -349
  89. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs +0 -3077
  90. package/dist/TableView-CVfkyj1k.js +0 -4
  91. package/dist/TableView-zDx0IegJ.mjs +0 -6096
  92. package/dist/agenda-BaJu3-1c.js +0 -1
  93. package/dist/agenda-BwVY_8oM.mjs +0 -1165
  94. package/dist/availability-CMrRa5y2.mjs +0 -269
  95. package/dist/availability-Cf2YfMwM.js +0 -1
  96. package/dist/booking-data-DgJd0BcM.mjs +0 -889
  97. package/dist/booking-data-Di5GmH_8.js +0 -1
  98. package/dist/exceptions-B6P9UiCj.js +0 -1
  99. package/dist/exceptions-De9-FvdP.mjs +0 -646
  100. package/dist/index-DL6orwdK.js +0 -35
  101. package/dist/index-hH3e-IYz.mjs +0 -1187
  102. package/dist/orders-C65SlpJy.mjs +0 -618
  103. package/dist/orders-XVzWAgG1.js +0 -1
  104. package/dist/payment-C3ohkehF.mjs +0 -1080
  105. package/dist/payment-Dfr-Ro-a.js +0 -1
  106. package/dist/resources-CxeFd57z.js +0 -1
  107. package/dist/resources-DwYxn2Vi.mjs +0 -811
@@ -1,646 +0,0 @@
1
- import { defineComponent as ne, ref as E, reactive as ce, computed as te, resolveComponent as i, openBlock as l, createBlock as g, withCtx as a, createVNode as n, createTextVNode as u, toDisplayString as h, createElementVNode as o, unref as m, createElementBlock as r, Fragment as D, normalizeClass as k, createCommentVNode as v, renderList as B, normalizeStyle as ae } from "vue";
2
- import { _ as me } from "./EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs";
3
- import { e as re, a as U, $ as b, d as N } from "./DateFormatter-qbhRYxI_.mjs";
4
- import { Calendar as se, Users as le, BanIcon as de, Trash2 as ie, Plus as ue, CalendarPlus as pe } from "lucide-vue-next";
5
- import { useModuleRoute as fe, useModule as ve, useFirebaseIntegration as ge } from "@oneclick.dev/cms-kit";
6
- const xe = { class: "space-y-6 py-4" }, ye = { key: 0 }, _e = { class: "space-y-2" }, be = { class: "flex items-center justify-center w-8 h-8 rounded-full bg-muted" }, Ce = {
7
- key: 0,
8
- class: "w-full h-full rounded-full bg-white scale-50"
9
- }, ke = { class: "flex items-center justify-center w-8 h-8 rounded-full bg-muted" }, De = {
10
- key: 0,
11
- class: "w-full h-full rounded-full bg-white scale-50"
12
- }, he = {
13
- key: 0,
14
- class: "pl-4 pt-2 space-y-1"
15
- }, we = ["onClick"], Ee = { class: "min-w-0 flex-1" }, $e = { class: "text-sm font-medium truncate" }, Ie = {
16
- key: 0,
17
- class: "w-3 h-3 text-white",
18
- fill: "none",
19
- viewBox: "0 0 24 24",
20
- stroke: "currentColor"
21
- }, Se = {
22
- key: 0,
23
- class: "text-xs text-amber-600 mt-2"
24
- }, Te = { class: "space-y-3" }, Ae = { class: "flex items-center justify-center w-10 h-10 rounded-full bg-destructive/10" }, Re = {
25
- key: 0,
26
- class: "w-full h-full rounded-full bg-white scale-50"
27
- }, Ue = { class: "flex items-center justify-center w-10 h-10 rounded-full bg-primary/10" }, Ve = {
28
- key: 0,
29
- class: "w-full h-full rounded-full bg-white scale-50"
30
- }, ze = { key: 1 }, je = {
31
- key: 0,
32
- class: "text-center py-6 text-muted-foreground text-sm"
33
- }, Pe = {
34
- key: 1,
35
- class: "space-y-2 mb-3"
36
- }, Be = { class: "w-full flex justify-between items-center" }, Ne = { class: "flex items-center gap-2 ml-auto" }, Fe = /* @__PURE__ */ ne({
37
- __name: "ExceptionDialog",
38
- props: {
39
- resources: {}
40
- },
41
- emits: ["add-exception", "update-exception", "remove-exception"],
42
- setup(oe, { expose: V, emit: F }) {
43
- const I = new re("en-US", {
44
- dateStyle: "medium"
45
- }), T = oe, x = F, y = E(!1), $ = E("add"), A = E(!1), c = E({
46
- start: U(b()),
47
- end: U(b())
48
- }), t = ce({
49
- id: "",
50
- startDate: "",
51
- endDate: "",
52
- isClosed: !1,
53
- timeslots: [],
54
- resourceIds: null
55
- // null = all resources
56
- }), C = te({
57
- get: () => t.resourceIds === null,
58
- set: (s) => {
59
- s ? t.resourceIds = null : t.resourceIds = [];
60
- }
61
- }), Y = (s) => {
62
- if (t.resourceIds === null)
63
- t.resourceIds = [s];
64
- else {
65
- const e = t.resourceIds.indexOf(s);
66
- e === -1 ? t.resourceIds.push(s) : t.resourceIds.splice(e, 1);
67
- }
68
- }, L = te(() => !(!c.value.start || t.resourceIds !== null && t.resourceIds.length === 0)), q = (s) => {
69
- $.value = s ? "edit" : "add", s ? (t.id = s.id, t.startDate = s.startDate, t.endDate = s.endDate, t.isClosed = s.isClosed, t.timeslots = JSON.parse(JSON.stringify(s.timeslots)), t.resourceIds = s.resourceIds ? [...s.resourceIds] : null, c.value = {
70
- start: N(s.startDate),
71
- end: N(s.endDate)
72
- }) : (t.id = "", t.startDate = "", t.endDate = "", t.isClosed = !1, t.timeslots = [], t.resourceIds = null, c.value = {
73
- start: U(b()),
74
- end: U(b())
75
- }), y.value = !0;
76
- }, H = () => {
77
- y.value = !1;
78
- }, M = () => {
79
- t.timeslots.push({
80
- id: Date.now(),
81
- startTime: "",
82
- endTime: ""
83
- });
84
- }, G = (s) => {
85
- t.timeslots = t.timeslots.filter((e) => e.id !== s);
86
- }, z = () => {
87
- if (!c.value.start) return;
88
- const s = c.value.start.toString(), e = c.value.end?.toString() || s, p = {
89
- id: Date.now().toString(),
90
- startDate: s,
91
- endDate: e,
92
- isClosed: t.isClosed,
93
- timeslots: t.isClosed ? [] : [...t.timeslots],
94
- resourceIds: t.resourceIds
95
- };
96
- x("add-exception", p), y.value = !1;
97
- }, j = () => {
98
- const s = c.value.start.toString(), e = c.value.end?.toString() || s, p = {
99
- id: t.id,
100
- startDate: s,
101
- endDate: e,
102
- isClosed: t.isClosed,
103
- timeslots: t.isClosed ? [] : [...t.timeslots],
104
- resourceIds: t.resourceIds
105
- };
106
- x("update-exception", p), y.value = !1;
107
- }, O = () => {
108
- x("remove-exception", t.id), y.value = !1;
109
- };
110
- return V({
111
- openDialog: q
112
- }), (s, e) => {
113
- const p = i("DialogTitle"), S = i("DialogHeader"), R = i("Label"), w = i("Button"), K = i("PopoverTrigger"), Q = i("RangeCalendar"), W = i("PopoverContent"), X = i("Popover"), J = i("Input"), Z = i("Card"), f = i("DialogFooter"), _ = i("DialogScrollContent"), ee = i("Dialog");
114
- return l(), g(ee, {
115
- open: y.value,
116
- "onUpdate:open": e[6] || (e[6] = (d) => y.value = d)
117
- }, {
118
- default: a(() => [
119
- n(_, { class: "sm:max-w-2xl" }, {
120
- default: a(() => [
121
- n(S, null, {
122
- default: a(() => [
123
- n(p, null, {
124
- default: a(() => [
125
- u(h($.value === "add" ? "Add Exception" : "Edit Exception"), 1)
126
- ]),
127
- _: 1
128
- })
129
- ]),
130
- _: 1
131
- }),
132
- o("div", xe, [
133
- o("div", null, [
134
- n(R, { class: "text-sm font-normal mb-1.5" }, {
135
- default: a(() => [...e[7] || (e[7] = [
136
- u("Select Date or Date Range", -1)
137
- ])]),
138
- _: 1
139
- }),
140
- n(X, {
141
- open: A.value,
142
- "onUpdate:open": e[1] || (e[1] = (d) => A.value = d)
143
- }, {
144
- default: a(() => [
145
- n(K, { "as-child": "" }, {
146
- default: a(() => [
147
- n(w, {
148
- variant: "outline",
149
- class: "w-full justify-start text-left font-normal"
150
- }, {
151
- default: a(() => [
152
- n(m(se), { class: "mr-2 h-4 w-4" }),
153
- c.value.start ? (l(), r(D, { key: 0 }, [
154
- c.value.end && c.value.start.toString() !== c.value.end.toString() ? (l(), r(D, { key: 0 }, [
155
- u(h(m(I).format(c.value.start.toDate(m(b)()))) + " - " + h(m(I).format(c.value.end.toDate(m(b)()))), 1)
156
- ], 64)) : (l(), r(D, { key: 1 }, [
157
- u(h(m(I).format(c.value.start.toDate(m(b)()))), 1)
158
- ], 64))
159
- ], 64)) : (l(), r(D, { key: 1 }, [
160
- u(" Pick a date ")
161
- ], 64))
162
- ]),
163
- _: 1
164
- })
165
- ]),
166
- _: 1
167
- }),
168
- n(W, { class: "w-auto p-0" }, {
169
- default: a(() => [
170
- n(Q, {
171
- modelValue: c.value,
172
- "onUpdate:modelValue": e[0] || (e[0] = (d) => c.value = d),
173
- "initial-focus": "",
174
- "number-of-months": 2,
175
- "min-value": m(U)(m(b)())
176
- }, null, 8, ["modelValue", "min-value"])
177
- ]),
178
- _: 1
179
- })
180
- ]),
181
- _: 1
182
- }, 8, ["open"])
183
- ]),
184
- T.resources && T.resources.length > 0 ? (l(), r("div", ye, [
185
- n(R, { class: "text-sm font-normal mb-1.5" }, {
186
- default: a(() => [...e[8] || (e[8] = [
187
- u("Apply To", -1)
188
- ])]),
189
- _: 1
190
- }),
191
- o("div", _e, [
192
- o("div", {
193
- class: k(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors", C.value ? "bg-accent border-primary" : ""]),
194
- onClick: e[2] || (e[2] = (d) => C.value = !0)
195
- }, [
196
- o("div", be, [
197
- n(m(le), { class: "h-4 w-4 text-muted-foreground" })
198
- ]),
199
- e[9] || (e[9] = o("div", { class: "flex-1" }, [
200
- o("div", { class: "font-medium text-sm" }, "All Resources"),
201
- o("div", { class: "text-xs text-muted-foreground" }, "Exception applies to all resources")
202
- ], -1)),
203
- o("div", {
204
- class: k(["w-4 h-4 rounded-full border-2", C.value ? "border-primary bg-primary" : "border-muted-foreground"])
205
- }, [
206
- C.value ? (l(), r("div", Ce)) : v("", !0)
207
- ], 2)
208
- ], 2),
209
- o("div", {
210
- class: k(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors", C.value ? "" : "bg-accent border-primary"]),
211
- onClick: e[3] || (e[3] = (d) => C.value = !1)
212
- }, [
213
- o("div", ke, [
214
- n(m(le), { class: "h-4 w-4 text-muted-foreground" })
215
- ]),
216
- e[10] || (e[10] = o("div", { class: "flex-1" }, [
217
- o("div", { class: "font-medium text-sm" }, "Specific Resources"),
218
- o("div", { class: "text-xs text-muted-foreground" }, "Select which resources this exception applies to")
219
- ], -1)),
220
- o("div", {
221
- class: k(["w-4 h-4 rounded-full border-2", C.value ? "border-muted-foreground" : "border-primary bg-primary"])
222
- }, [
223
- C.value ? v("", !0) : (l(), r("div", De))
224
- ], 2)
225
- ], 2),
226
- C.value ? v("", !0) : (l(), r("div", he, [
227
- (l(!0), r(D, null, B(T.resources, (d) => (l(), r("div", {
228
- key: d.id,
229
- class: k(["flex items-center gap-2 p-2 rounded-md hover:bg-muted cursor-pointer transition-colors", {
230
- "bg-muted": t.resourceIds?.includes(d.id),
231
- "opacity-50": t.resourceIds && t.resourceIds.length > 0 && !t.resourceIds.includes(d.id)
232
- }]),
233
- onClick: (P) => Y(d.id)
234
- }, [
235
- o("div", {
236
- class: "size-6 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0",
237
- style: ae({ backgroundColor: d.color || "#6b7280" })
238
- }, h(d.avatarLabel || d.name.charAt(0).toUpperCase()), 5),
239
- o("div", Ee, [
240
- o("div", $e, h(d.name), 1)
241
- ]),
242
- o("div", {
243
- class: k(["size-4 rounded border-2 flex items-center justify-center flex-shrink-0", t.resourceIds?.includes(d.id) ? "border-primary bg-primary" : "border-muted-foreground"])
244
- }, [
245
- t.resourceIds?.includes(d.id) ? (l(), r("svg", Ie, [...e[11] || (e[11] = [
246
- o("path", {
247
- "stroke-linecap": "round",
248
- "stroke-linejoin": "round",
249
- "stroke-width": "3",
250
- d: "M5 13l4 4L19 7"
251
- }, null, -1)
252
- ])])) : v("", !0)
253
- ], 2)
254
- ], 10, we))), 128)),
255
- t.resourceIds?.length === 0 ? (l(), r("p", Se, " ⚠️ Please select at least one resource ")) : v("", !0)
256
- ]))
257
- ])
258
- ])) : v("", !0),
259
- o("div", null, [
260
- n(R, { class: "text-sm font-normal mb-1.5" }, {
261
- default: a(() => [...e[12] || (e[12] = [
262
- u("Exception Type", -1)
263
- ])]),
264
- _: 1
265
- }),
266
- o("div", Te, [
267
- o("div", {
268
- class: k(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors", t.isClosed ? "bg-accent border-primary" : ""]),
269
- onClick: e[4] || (e[4] = (d) => t.isClosed = !0)
270
- }, [
271
- o("div", Ae, [
272
- n(m(de), { class: "h-5 w-5 text-destructive" })
273
- ]),
274
- e[13] || (e[13] = o("div", { class: "flex-1" }, [
275
- o("div", { class: "font-medium" }, "Closed"),
276
- o("div", { class: "text-sm text-muted-foreground" }, "No appointments available during this period")
277
- ], -1)),
278
- o("div", {
279
- class: k(["w-4 h-4 rounded-full border-2", t.isClosed ? "border-primary bg-primary" : "border-muted-foreground"])
280
- }, [
281
- t.isClosed ? (l(), r("div", Re)) : v("", !0)
282
- ], 2)
283
- ], 2),
284
- o("div", {
285
- class: k(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors", t.isClosed ? "" : "bg-accent border-primary"]),
286
- onClick: e[5] || (e[5] = (d) => t.isClosed = !1)
287
- }, [
288
- o("div", Ue, [
289
- n(m(se), { class: "h-5 w-5 text-primary" })
290
- ]),
291
- e[14] || (e[14] = o("div", { class: "flex-1" }, [
292
- o("div", { class: "font-medium" }, "Custom Hours"),
293
- o("div", { class: "text-sm text-muted-foreground" }, "Set specific time slots for this period")
294
- ], -1)),
295
- o("div", {
296
- class: k(["w-4 h-4 rounded-full border-2", t.isClosed ? "border-muted-foreground" : "border-primary bg-primary"])
297
- }, [
298
- t.isClosed ? v("", !0) : (l(), r("div", Ve))
299
- ], 2)
300
- ], 2)
301
- ])
302
- ]),
303
- t.isClosed ? v("", !0) : (l(), r("div", ze, [
304
- n(R, { class: "text-sm font-normal mb-1.5" }, {
305
- default: a(() => [...e[15] || (e[15] = [
306
- u("Time Slots", -1)
307
- ])]),
308
- _: 1
309
- }),
310
- n(Z, { class: "p-4" }, {
311
- default: a(() => [
312
- t.timeslots.length === 0 ? (l(), r("div", je, ' No time slots added. Click "Add Time Slot" to create one. ')) : (l(), r("div", Pe, [
313
- (l(!0), r(D, null, B(t.timeslots, (d) => (l(), r("div", {
314
- key: d.id,
315
- class: "flex items-center gap-2"
316
- }, [
317
- n(J, {
318
- class: "w-32",
319
- modelValue: d.startTime,
320
- "onUpdate:modelValue": (P) => d.startTime = P,
321
- type: "time"
322
- }, null, 8, ["modelValue", "onUpdate:modelValue"]),
323
- e[16] || (e[16] = o("span", { class: "text-muted-foreground" }, "to", -1)),
324
- n(J, {
325
- class: "w-32",
326
- modelValue: d.endTime,
327
- "onUpdate:modelValue": (P) => d.endTime = P,
328
- type: "time"
329
- }, null, 8, ["modelValue", "onUpdate:modelValue"]),
330
- n(w, {
331
- variant: "ghost",
332
- size: "icon",
333
- onClick: (P) => G(d.id)
334
- }, {
335
- default: a(() => [
336
- n(m(ie), { class: "size-4" })
337
- ]),
338
- _: 1
339
- }, 8, ["onClick"])
340
- ]))), 128))
341
- ])),
342
- n(w, {
343
- onClick: M,
344
- variant: "outline",
345
- size: "sm",
346
- class: "w-full"
347
- }, {
348
- default: a(() => [
349
- n(m(ue), { class: "size-4 mr-1" }),
350
- e[17] || (e[17] = u(" Add Time Slot ", -1))
351
- ]),
352
- _: 1
353
- })
354
- ]),
355
- _: 1
356
- })
357
- ]))
358
- ]),
359
- n(f, { class: "gap-2" }, {
360
- default: a(() => [
361
- o("div", Be, [
362
- $.value === "edit" ? (l(), g(w, {
363
- key: 0,
364
- variant: "destructive",
365
- onClick: O
366
- }, {
367
- default: a(() => [...e[18] || (e[18] = [
368
- u(" Remove Exception ", -1)
369
- ])]),
370
- _: 1
371
- })) : v("", !0),
372
- o("div", Ne, [
373
- n(w, {
374
- variant: "outline",
375
- onClick: H
376
- }, {
377
- default: a(() => [...e[19] || (e[19] = [
378
- u(" Cancel ", -1)
379
- ])]),
380
- _: 1
381
- }),
382
- $.value === "add" ? (l(), g(w, {
383
- key: 0,
384
- onClick: z,
385
- disabled: !L.value
386
- }, {
387
- default: a(() => [...e[20] || (e[20] = [
388
- u(" Add Exception ", -1)
389
- ])]),
390
- _: 1
391
- }, 8, ["disabled"])) : (l(), g(w, {
392
- key: 1,
393
- onClick: j,
394
- disabled: !L.value
395
- }, {
396
- default: a(() => [...e[21] || (e[21] = [
397
- u(" Update Exception ", -1)
398
- ])]),
399
- _: 1
400
- }, 8, ["disabled"]))
401
- ])
402
- ])
403
- ]),
404
- _: 1
405
- })
406
- ]),
407
- _: 1
408
- })
409
- ]),
410
- _: 1
411
- }, 8, ["open"]);
412
- };
413
- }
414
- }), Le = { class: "max-w-4xl space-y-6" }, He = {
415
- key: 0,
416
- class: "flex"
417
- }, Me = { key: 1 }, Oe = { class: "space-y-3" }, Je = { class: "flex items-start justify-between" }, Ye = { class: "flex-1" }, qe = { class: "flex items-center gap-2 mb-1" }, Ge = { class: "font-medium" }, Ke = {
418
- key: 0,
419
- class: "flex items-center gap-1.5 ml-6 mb-2"
420
- }, Qe = ["title"], We = { class: "text-sm text-muted-foreground ml-6" }, Xe = {
421
- key: 0,
422
- class: "text-amber-600"
423
- }, Ze = {
424
- key: 1,
425
- class: "space-y-1"
426
- }, et = { class: "flex flex-wrap gap-2" }, tt = { class: "flex gap-1" }, st = {
427
- key: 4,
428
- class: "flex justify-end pt-4 border-t"
429
- }, dt = /* @__PURE__ */ ne({
430
- __name: "exceptions",
431
- setup(oe) {
432
- const V = new re("en-US", {
433
- dateStyle: "medium"
434
- }), { params: F } = fe(), { config: I } = ve(), T = ge(I.project), x = E([]), y = E([]), $ = E(!1), A = E(!0), c = E(), t = (s) => !s.resourceIds || s.resourceIds.length === 0 ? null : y.value.filter((e) => s.resourceIds?.includes(e.id)), C = async () => {
435
- try {
436
- A.value = !0;
437
- const s = await T.get(I.agendaCollection, F.value.id);
438
- x.value = s.exceptions || [], y.value = (s.resources || []).filter((e) => e.isActive);
439
- } catch (s) {
440
- console.error("Error loading exceptions:", s);
441
- } finally {
442
- A.value = !1;
443
- }
444
- }, Y = (s, e) => {
445
- const p = N(s), S = N(e);
446
- return s === e ? V.format(p.toDate(b())) : `${V.format(p.toDate(b()))} - ${V.format(S.toDate(b()))}`;
447
- }, L = (s) => {
448
- x.value.push(s), z();
449
- }, q = (s) => {
450
- const e = x.value.findIndex((p) => p.id === s.id);
451
- e !== -1 && (x.value[e] = s), z();
452
- }, H = (s) => {
453
- x.value = x.value.filter((e) => e.id !== s), z();
454
- }, M = () => {
455
- c.value?.openDialog();
456
- }, G = (s) => {
457
- c.value?.openDialog(s);
458
- }, z = async () => {
459
- $.value = !0, await T.update(I.agendaCollection, F.value.id, {
460
- exceptions: x.value
461
- }), $.value = !1;
462
- }, j = te(() => [...x.value].sort((s, e) => s.startDate.localeCompare(e.startDate))), O = (s) => {
463
- const e = N(s), p = U(b());
464
- return e.compare(p) < 0;
465
- };
466
- return C(), (s, e) => {
467
- const p = i("Button"), S = i("Badge"), R = i("Card"), w = i("Spinner"), K = i("EmptyMedia"), Q = i("EmptyTitle"), W = i("EmptyDescription"), X = i("EmptyHeader"), J = i("EmptyContent"), Z = i("Empty");
468
- return l(), g(me, null, {
469
- default: a(() => [
470
- e[10] || (e[10] = o("h1", { class: "text-lg font-medium mb-2" }, "Exception Management", -1)),
471
- e[11] || (e[11] = o("p", { class: "mb-6 text-muted-foreground text-sm" }, " Create exceptions to override your regular schedule. You can close specific dates or set custom hours for special occasions. ", -1)),
472
- o("div", Le, [
473
- j.value.length > 0 ? (l(), r("div", He, [
474
- n(p, { onClick: M }, {
475
- default: a(() => [
476
- n(m(ue), { class: "size-4 mr-1" }),
477
- e[0] || (e[0] = u(" Add Exception ", -1))
478
- ]),
479
- _: 1
480
- })
481
- ])) : v("", !0),
482
- j.value.length > 0 ? (l(), r("div", Me, [
483
- e[5] || (e[5] = o("h2", { class: "text-base font-medium mb-3" }, "Active Exceptions", -1)),
484
- o("div", Oe, [
485
- (l(!0), r(D, null, B(j.value, (f) => (l(), g(R, {
486
- key: f.id,
487
- class: k(["p-4", O(f.endDate) ? "opacity-60" : ""])
488
- }, {
489
- default: a(() => [
490
- o("div", Je, [
491
- o("div", Ye, [
492
- o("div", qe, [
493
- f.isClosed ? (l(), g(m(de), {
494
- key: 0,
495
- class: "h-4 w-4 text-destructive"
496
- })) : (l(), g(m(se), {
497
- key: 1,
498
- class: "h-4 w-4 text-primary"
499
- })),
500
- o("h3", Ge, h(Y(f.startDate, f.endDate)), 1),
501
- O(f.endDate) ? (l(), g(S, {
502
- key: 2,
503
- variant: "secondary",
504
- class: "text-xs"
505
- }, {
506
- default: a(() => [...e[1] || (e[1] = [
507
- u(" Past ", -1)
508
- ])]),
509
- _: 1
510
- })) : v("", !0)
511
- ]),
512
- y.value.length > 0 ? (l(), r("div", Ke, [
513
- t(f) ? (l(!0), r(D, { key: 0 }, B(t(f), (_) => (l(), r("div", {
514
- key: _.id,
515
- class: "size-5 rounded-full flex items-center justify-center text-white text-[10px] font-medium",
516
- style: ae({ backgroundColor: _.color || "#6b7280" }),
517
- title: _.name
518
- }, h(_.avatarLabel || _.name.charAt(0).toUpperCase()), 13, Qe))), 128)) : (l(), g(S, {
519
- key: 1,
520
- variant: "outline",
521
- class: "text-xs"
522
- }, {
523
- default: a(() => [...e[2] || (e[2] = [
524
- u(" All Resources ", -1)
525
- ])]),
526
- _: 1
527
- }))
528
- ])) : v("", !0),
529
- o("div", We, [
530
- f.isClosed ? (l(), r(D, { key: 0 }, [
531
- u(" Closed - No appointments available ")
532
- ], 64)) : (l(), r(D, { key: 1 }, [
533
- f.timeslots.length === 0 ? (l(), r("div", Xe, " ⚠️ No time slots defined ")) : (l(), r("div", Ze, [
534
- e[3] || (e[3] = o("div", { class: "font-medium text-foreground" }, "Custom Hours:", -1)),
535
- o("div", et, [
536
- (l(!0), r(D, null, B(f.timeslots, (_, ee) => (l(), g(S, {
537
- key: ee,
538
- variant: "outline",
539
- class: "font-mono text-xs"
540
- }, {
541
- default: a(() => [
542
- u(h(_.startTime) + " - " + h(_.endTime), 1)
543
- ]),
544
- _: 2
545
- }, 1024))), 128))
546
- ])
547
- ]))
548
- ], 64))
549
- ])
550
- ]),
551
- o("div", tt, [
552
- n(p, {
553
- variant: "ghost",
554
- onClick: (_) => G(f)
555
- }, {
556
- default: a(() => [...e[4] || (e[4] = [
557
- u(" Edit ", -1)
558
- ])]),
559
- _: 1
560
- }, 8, ["onClick"]),
561
- n(p, {
562
- variant: "ghost",
563
- size: "icon",
564
- onClick: (_) => H(f.id)
565
- }, {
566
- default: a(() => [
567
- n(m(ie), { class: "size-4 text-destructive" })
568
- ]),
569
- _: 1
570
- }, 8, ["onClick"])
571
- ])
572
- ])
573
- ]),
574
- _: 2
575
- }, 1032, ["class"]))), 128))
576
- ])
577
- ])) : A.value ? (l(), g(w, {
578
- key: 2,
579
- class: "my-8 size-8"
580
- })) : (l(), g(Z, {
581
- key: 3,
582
- class: "border border-dashed"
583
- }, {
584
- default: a(() => [
585
- n(X, null, {
586
- default: a(() => [
587
- n(K, { variant: "icon" }, {
588
- default: a(() => [
589
- n(m(pe))
590
- ]),
591
- _: 1
592
- }),
593
- n(Q, null, {
594
- default: a(() => [...e[6] || (e[6] = [
595
- u("No Exceptions Created", -1)
596
- ])]),
597
- _: 1
598
- }),
599
- n(W, null, {
600
- default: a(() => [...e[7] || (e[7] = [
601
- u(' Your agenda runs smoothly without any exceptions. Click "Add Exception" to create one. ', -1)
602
- ])]),
603
- _: 1
604
- })
605
- ]),
606
- _: 1
607
- }),
608
- n(J, null, {
609
- default: a(() => [
610
- n(p, {
611
- variant: "outline",
612
- size: "sm",
613
- onClick: M
614
- }, {
615
- default: a(() => [...e[8] || (e[8] = [
616
- u(" Add Exception ", -1)
617
- ])]),
618
- _: 1
619
- })
620
- ]),
621
- _: 1
622
- })
623
- ]),
624
- _: 1
625
- })),
626
- $.value ? (l(), r("div", st, [...e[9] || (e[9] = [
627
- o("span", null, "Saving...", -1)
628
- ])])) : v("", !0)
629
- ]),
630
- n(Fe, {
631
- ref_key: "exceptionDialogRef",
632
- ref: c,
633
- resources: y.value,
634
- onAddException: L,
635
- onUpdateException: q,
636
- onRemoveException: H
637
- }, null, 8, ["resources"])
638
- ]),
639
- _: 1
640
- });
641
- };
642
- }
643
- });
644
- export {
645
- dt as default
646
- };