@oneclick.dev/cms-core-modules 0.0.101 → 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 (117) hide show
  1. package/dist/Acquisition-Br1Pfny3.js +1 -0
  2. package/dist/{Acquisition-BJXNY4ko.mjs → Acquisition-CPlZzUBo.mjs} +40 -40
  3. package/dist/AgendaOpeningHoursCard-B7ROIPWw.js +1 -0
  4. package/dist/AgendaOpeningHoursCard-Cp4wxUeK.mjs +172 -0
  5. package/dist/AppointmentListTable-DZJNmTMb.mjs +177 -0
  6. package/dist/AppointmentListTable-Dieu9US_.js +1 -0
  7. package/dist/Audience-BfkrmBuQ.js +1 -0
  8. package/dist/{Audience-CIzVtUvV.mjs → Audience-DTblSAiL.mjs} +89 -89
  9. package/dist/Content-BHr_rPVY.js +1 -0
  10. package/dist/{Content-CWhjurn_.mjs → Content-CYOZKvWK.mjs} +56 -56
  11. package/dist/{ContentEditor-Cjqgb64R.mjs → ContentEditor-B1nfKG_5.mjs} +706 -677
  12. package/dist/{ContentEditor-YgOS3kxS.js → ContentEditor-DdFU8piH.js} +15 -16
  13. package/dist/{Create-6uT9HWar.mjs → Create-BRBh0xjM.mjs} +2 -2
  14. package/dist/{Create-DuZ5nZrX.js → Create-qPeQxkdl.js} +1 -1
  15. package/dist/{DateFormatter-2B0R-DY4.mjs → DateFormatter-Bw-87W31.mjs} +212 -227
  16. package/dist/DateFormatter-CYAD4GBN.js +1 -0
  17. package/dist/{Detail-BZ-iE9vf.js → Detail-C857g62L.js} +1 -1
  18. package/dist/{Detail-CJVMJDP7.mjs → Detail-CujdFApD.mjs} +2 -2
  19. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +76 -0
  20. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +1 -0
  21. package/dist/{Entries-DkRhOt95.js → Entries-BaS6H6ak.js} +1 -1
  22. package/dist/{Entries-dLlCrXXe.mjs → Entries-C8UJkrVC.mjs} +1 -1
  23. package/dist/{Find-Bd1uLqSa.mjs → Find-B24ZEhYM.mjs} +1 -1
  24. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-Bc946oSc.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-9Q7TMm4u.mjs} +37 -37
  25. 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
  26. package/dist/{Overview-DoOASlNz.mjs → Overview-3HWhsqaz.mjs} +2 -2
  27. package/dist/Overview-BrCwozey.js +1 -0
  28. package/dist/{Overview-37nilXzE.js → Overview-CpHhuiaV.js} +1 -1
  29. package/dist/{Overview-DeQQ0FY3.js → Overview-DAxCu9XC.js} +1 -1
  30. package/dist/{Overview-C--dq51X.mjs → Overview-D_T3K6aq.mjs} +1 -1
  31. package/dist/{Overview-CGo4jaaA.mjs → Overview-kaMhsIUq.mjs} +21 -21
  32. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Cz_22Oce.mjs +2927 -0
  33. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DPPNc-Z5.js +349 -0
  34. package/dist/SeoHealth-09sEOu3G.js +1 -0
  35. package/dist/{SeoHealth-DVFDz3em.mjs → SeoHealth-BzcWd_w7.mjs} +29 -29
  36. package/dist/TableView-CPAw3h8g.js +4 -0
  37. package/dist/TableView-DXmEF6pY.mjs +6143 -0
  38. package/dist/agenda-BNG05SAq.js +1 -0
  39. package/dist/agenda-D1RxMxBS.mjs +1152 -0
  40. package/dist/availability-CMrRa5y2.mjs +269 -0
  41. package/dist/availability-Cf2YfMwM.js +1 -0
  42. package/dist/booking-data-DgJd0BcM.mjs +889 -0
  43. package/dist/booking-data-Di5GmH_8.js +1 -0
  44. package/dist/cms-core-modules.css +1 -1
  45. package/dist/{exceptions-Bp5BSvxO.js → exceptions-CI0B4xVj.js} +1 -1
  46. package/dist/{exceptions-C97cNZYl.mjs → exceptions-vo8SA5SE.mjs} +68 -68
  47. package/dist/index-BtujSJeg.js +35 -0
  48. package/dist/{index-CrGjxSwa.mjs → index-CrgzoTyR.mjs} +1 -1
  49. package/dist/{index-D2a6wEPh.js → index-DPd3waTN.js} +1 -1
  50. package/dist/{index-CABh6Qn6.mjs → index-DrXxXB2F.mjs} +15 -15
  51. package/dist/{index-B-lVEpFX.mjs → index-MYWjg0zi.mjs} +3 -3
  52. package/dist/index-dOdMm1pV.mjs +1105 -0
  53. package/dist/index.cjs.js +1 -1
  54. package/dist/index.mjs +201 -148
  55. package/dist/interpolation-DEDSLETn.mjs +128 -0
  56. package/dist/interpolation-DERg6Lwt.js +1 -0
  57. package/dist/orders-CzzcFQha.mjs +559 -0
  58. package/dist/orders-ETtbA4aQ.js +1 -0
  59. package/dist/{payment-Bosr0m3u.mjs → payment-C3ohkehF.mjs} +1 -1
  60. package/dist/{payment-DDnC03jb.js → payment-Dfr-Ro-a.js} +1 -1
  61. package/dist/{resources-BtF5RUUq.js → resources-CxeFd57z.js} +1 -1
  62. package/dist/{resources-B7qDBC91.mjs → resources-WI_4SO6T.mjs} +2 -2
  63. package/dist/server-handlers.cjs.js +1 -1
  64. package/dist/server-handlers.mjs +457 -387
  65. package/dist/src/appointments/chat-components/AgendaOpeningHoursCard.vue.d.ts +15 -0
  66. package/dist/src/appointments/components/edit/CustomerInformationFieldEditorDialog.vue.d.ts +17 -5
  67. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +8 -3
  68. package/dist/src/appointments/components/edit/EventDialog/EventDialog.vue.d.ts +1 -0
  69. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +6 -3
  70. package/dist/src/appointments/components/edit/EventTimeline.vue.d.ts +3 -0
  71. package/dist/src/appointments/components/edit/EventView.vue.d.ts +6 -1
  72. package/dist/src/appointments/components/edit/MetadataSchemaEditorDialog.vue.d.ts +12 -0
  73. package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +21 -0
  74. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +8 -3
  75. package/dist/src/appointments/index.d.ts +53 -0
  76. package/dist/src/appointments/pages/edit/agenda.vue.d.ts +3 -1
  77. package/dist/src/appointments/pages/edit/availability.vue.d.ts +1 -26
  78. package/dist/src/appointments/pages/edit/booking-data.vue.d.ts +65 -0
  79. package/dist/src/appointments/pages/edit/orders.vue.d.ts +7 -3
  80. package/dist/src/appointments/tools.d.ts +52 -0
  81. package/dist/src/appointments/types.d.ts +12 -0
  82. package/dist/src/table/config.d.ts +200 -0
  83. package/dist/src/table/get_data_flow-DEFAULT.json.d.ts +129 -0
  84. package/dist/src/table/index.d.ts +200 -0
  85. package/dist/utils-CanmrIWO.mjs +47 -0
  86. package/dist/utils-Yd6F5mea.js +3 -0
  87. package/package.json +2 -2
  88. package/src/appointments/tools.ts +38 -0
  89. package/dist/Acquisition-DPScJD4t.js +0 -1
  90. package/dist/AppointmentListTable-CQ0WIXtj.js +0 -1
  91. package/dist/AppointmentListTable-aV_UJd6j.mjs +0 -159
  92. package/dist/Audience-Csw1QLmw.js +0 -1
  93. package/dist/Content-dYr7kYT0.js +0 -1
  94. package/dist/DateFormatter-DbtOLV0L.js +0 -1
  95. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DXa-Xxue.mjs +0 -74
  96. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-ozYrxb2g.js +0 -1
  97. package/dist/Overview-DBu86Ikb.js +0 -1
  98. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-COfCOMsz.js +0 -349
  99. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CYXkhhdp.mjs +0 -2383
  100. package/dist/SeoHealth-DzftZW1m.js +0 -1
  101. package/dist/TableView-CIJs118q.mjs +0 -5929
  102. package/dist/TableView-DzZYf34i.js +0 -4
  103. package/dist/agenda-DMT75Qfo.mjs +0 -1133
  104. package/dist/agenda-DxD4RMsy.js +0 -1
  105. package/dist/availability-B1D4Fyzi.mjs +0 -629
  106. package/dist/availability-DxrUcYbW.js +0 -1
  107. package/dist/index-BbqRTXuU.js +0 -35
  108. package/dist/index-D4GsbUId.mjs +0 -1091
  109. package/dist/interpolation-BBwG_ON6.mjs +0 -65
  110. package/dist/interpolation-CsOrww73.js +0 -1
  111. package/dist/orders-BRfXlWgV.mjs +0 -397
  112. package/dist/orders-CrCz1WTR.js +0 -1
  113. package/dist/regular-slots-Cc1jmKuC.mjs +0 -222
  114. package/dist/regular-slots-DBs1XVeN.js +0 -1
  115. package/dist/src/appointments/pages/edit/regular-slots.vue.d.ts +0 -2
  116. package/dist/utils-BVKy9S2J.mjs +0 -29
  117. package/dist/utils-D6CaKJbp.js +0 -2
@@ -0,0 +1,269 @@
1
+ import { defineComponent as U, reactive as $, ref as k, resolveComponent as a, openBlock as m, createBlock as y, withCtx as i, createElementVNode as s, createElementBlock as S, createVNode as t, createTextVNode as l, toDisplayString as N, createCommentVNode as w } from "vue";
2
+ import { _ as D } from "./EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs";
3
+ import { useModuleRoute as j, useModule as W, useFirebaseIntegration as q } from "@oneclick.dev/cms-kit";
4
+ const z = {
5
+ key: 0,
6
+ class: "max-w-2xl"
7
+ }, F = {
8
+ key: 0,
9
+ class: "text-sm text-orange-500 mt-2"
10
+ }, H = { class: "space-y-3" }, O = { class: "flex items-center justify-between rounded-lg border p-4 bg-card" }, J = { class: "space-y-2" }, K = { class: "flex justify-start mt-8" }, h = /* @__PURE__ */ U({
11
+ __name: "availability",
12
+ setup(Q) {
13
+ const { params: g } = j(), { config: v } = W(), x = q(v.project), n = $({
14
+ minimumAdvanceNotice: {
15
+ value: 0,
16
+ unit: "minutes"
17
+ },
18
+ serviceVisibility: 60,
19
+ maxTicketsPerReservation: "",
20
+ needsApproval: !1
21
+ }), d = k(!1), V = k(!0), _ = async () => {
22
+ d.value = !0;
23
+ try {
24
+ const o = g.value.id;
25
+ if (!o) throw new Error("Missing agenda ID");
26
+ await x.update(v.agendaCollection, o, {
27
+ minimumAdvanceNotice: {
28
+ value: Number(n.minimumAdvanceNotice?.value) || 0,
29
+ unit: n.minimumAdvanceNotice?.unit ?? "minutes"
30
+ },
31
+ serviceVisibility: Math.max(Number(n.serviceVisibility) || 1, 1),
32
+ maxTicketsPerReservation: Math.max(Number(n.maxTicketsPerReservation) || 0, 0),
33
+ needsApproval: n.needsApproval || !1
34
+ });
35
+ } catch (o) {
36
+ console.error("Error saving changes:", o);
37
+ } finally {
38
+ d.value = !1;
39
+ }
40
+ }, M = async () => {
41
+ try {
42
+ const o = await x.get(v.agendaCollection, g.value.id);
43
+ o && (n.minimumAdvanceNotice = o.minimumAdvanceNotice || { value: 0, unit: "minutes" }, n.serviceVisibility = o.serviceVisibility || 60, n.maxTicketsPerReservation = Number(o.maxTicketsPerReservation) && o.maxTicketsPerReservation > 0 ? parseInt(o.maxTicketsPerReservation) : "", n.needsApproval = o.needsApproval || !1);
44
+ } catch (o) {
45
+ console.error("Error loading agenda data:", o);
46
+ } finally {
47
+ V.value = !1;
48
+ }
49
+ }, T = () => {
50
+ let o = Math.abs(n.minimumAdvanceNotice.value), e = n.minimumAdvanceNotice.unit;
51
+ return o === 1 ? (e.endsWith("s") && (e = e.slice(0, -1)), `Lead time is negative. Bookings remain open for 1 ${e} after the slot has started.`) : `Lead time is negative. Bookings remain open for ${o} ${e} after the slot has started.`;
52
+ };
53
+ return M(), (o, e) => {
54
+ const u = a("Label"), c = a("InputGroupInput"), C = a("Search"), p = a("InputGroupAddon"), I = a("SelectValue"), B = a("SelectTrigger"), f = a("SelectItem"), R = a("SelectGroup"), P = a("SelectContent"), G = a("Select"), b = a("InputGroup"), A = a("Badge"), L = a("Switch"), E = a("Button");
55
+ return m(), y(D, null, {
56
+ default: i(() => [
57
+ e[26] || (e[26] = s("h1", { class: "text-lg font-medium mb-8" }, "Availability Settings", -1)),
58
+ V.value ? w("", !0) : (m(), S("div", z, [
59
+ s("div", null, [
60
+ t(u, {
61
+ for: "lead-time",
62
+ class: "text-base font-medium mb-2"
63
+ }, {
64
+ default: i(() => [...e[6] || (e[6] = [
65
+ l(" Minimum Advance Notice - Lead Time (Optional) ", -1)
66
+ ])]),
67
+ _: 1
68
+ }),
69
+ t(b, { class: "max-w-md" }, {
70
+ default: i(() => [
71
+ t(c, {
72
+ placeholder: "0",
73
+ id: "lead-time",
74
+ modelValue: n.minimumAdvanceNotice.value,
75
+ "onUpdate:modelValue": e[0] || (e[0] = (r) => n.minimumAdvanceNotice.value = r),
76
+ modelModifiers: { value: !0 },
77
+ type: "number",
78
+ class: "no-spinner"
79
+ }, null, 8, ["modelValue"]),
80
+ t(p, null, {
81
+ default: i(() => [
82
+ t(C)
83
+ ]),
84
+ _: 1
85
+ }),
86
+ t(p, { align: "inline-end" }, {
87
+ default: i(() => [
88
+ t(G, {
89
+ modelValue: n.minimumAdvanceNotice.unit,
90
+ "onUpdate:modelValue": e[1] || (e[1] = (r) => n.minimumAdvanceNotice.unit = r)
91
+ }, {
92
+ default: i(() => [
93
+ t(B, { class: "w-[180px] border-0 bg-transparent -mr-1.5" }, {
94
+ default: i(() => [
95
+ t(I)
96
+ ]),
97
+ _: 1
98
+ }),
99
+ t(P, null, {
100
+ default: i(() => [
101
+ t(R, null, {
102
+ default: i(() => [
103
+ t(f, { value: "minutes" }, {
104
+ default: i(() => [...e[7] || (e[7] = [
105
+ l(" Minutes ", -1)
106
+ ])]),
107
+ _: 1
108
+ }),
109
+ t(f, { value: "hours" }, {
110
+ default: i(() => [...e[8] || (e[8] = [
111
+ l(" Hours ", -1)
112
+ ])]),
113
+ _: 1
114
+ }),
115
+ t(f, { value: "days" }, {
116
+ default: i(() => [...e[9] || (e[9] = [
117
+ l(" Days ", -1)
118
+ ])]),
119
+ _: 1
120
+ })
121
+ ]),
122
+ _: 1
123
+ })
124
+ ]),
125
+ _: 1
126
+ })
127
+ ]),
128
+ _: 1
129
+ }, 8, ["modelValue"])
130
+ ]),
131
+ _: 1
132
+ })
133
+ ]),
134
+ _: 1
135
+ }),
136
+ e[10] || (e[10] = s("p", { class: "text-sm text-muted-foreground mt-2" }, " Set how far in advance a customer must book your slot. ", -1)),
137
+ n.minimumAdvanceNotice.value < 0 ? (m(), S("p", F, N(T()), 1)) : w("", !0)
138
+ ]),
139
+ e[23] || (e[23] = s("hr", { class: "my-8" }, null, -1)),
140
+ s("div", null, [
141
+ t(u, {
142
+ for: "service-visibility",
143
+ class: "text-base font-medium mb-2"
144
+ }, {
145
+ default: i(() => [...e[11] || (e[11] = [
146
+ l(" Service Visibility ", -1)
147
+ ])]),
148
+ _: 1
149
+ }),
150
+ t(b, { class: "max-w-md" }, {
151
+ default: i(() => [
152
+ t(c, {
153
+ id: "service-visibility",
154
+ modelValue: n.serviceVisibility,
155
+ "onUpdate:modelValue": e[2] || (e[2] = (r) => n.serviceVisibility = r),
156
+ modelModifiers: { number: !0 },
157
+ placeholder: "1",
158
+ type: "number",
159
+ class: "no-spinner",
160
+ min: "1",
161
+ onBlur: e[3] || (e[3] = (r) => n.serviceVisibility = Math.max(n.serviceVisibility, 1))
162
+ }, null, 8, ["modelValue"]),
163
+ t(p, { align: "inline-end" }, {
164
+ default: i(() => [...e[12] || (e[12] = [
165
+ l(" days ", -1)
166
+ ])]),
167
+ _: 1
168
+ })
169
+ ]),
170
+ _: 1
171
+ }),
172
+ e[13] || (e[13] = s("p", { class: "text-sm text-muted-foreground mt-2" }, " Set how many days in advance the service is visible to customers. ", -1))
173
+ ]),
174
+ e[24] || (e[24] = s("hr", { class: "my-8" }, null, -1)),
175
+ s("div", null, [
176
+ t(u, {
177
+ for: "max-capacity",
178
+ class: "text-base font-medium mb-2"
179
+ }, {
180
+ default: i(() => [...e[14] || (e[14] = [
181
+ l(" Maximum Tickets Per Booking ", -1)
182
+ ])]),
183
+ _: 1
184
+ }),
185
+ t(b, { class: "max-w-md" }, {
186
+ default: i(() => [
187
+ t(c, {
188
+ placeholder: "∞",
189
+ type: "number",
190
+ id: "max-capacity",
191
+ class: "no-spinner",
192
+ min: "1",
193
+ modelValue: n.maxTicketsPerReservation,
194
+ "onUpdate:modelValue": e[4] || (e[4] = (r) => n.maxTicketsPerReservation = r),
195
+ modelModifiers: { number: !0 }
196
+ }, null, 8, ["modelValue"]),
197
+ t(p, { align: "inline-end" }, {
198
+ default: i(() => [...e[15] || (e[15] = [
199
+ l(" spots ", -1)
200
+ ])]),
201
+ _: 1
202
+ })
203
+ ]),
204
+ _: 1
205
+ }),
206
+ e[16] || (e[16] = s("p", { class: "text-sm text-muted-foreground mt-2" }, " Limit how many spots a customer can book in a single reservation. ", -1))
207
+ ]),
208
+ e[25] || (e[25] = s("hr", { class: "my-8" }, null, -1)),
209
+ s("div", H, [
210
+ s("div", null, [
211
+ t(u, { class: "text-base font-medium" }, {
212
+ default: i(() => [...e[17] || (e[17] = [
213
+ l("Booking Approval", -1)
214
+ ])]),
215
+ _: 1
216
+ }),
217
+ e[18] || (e[18] = s("p", { class: "text-sm text-muted-foreground" }, " Choose whether you want to confirm booking requests manually or accept them automatically. ", -1))
218
+ ]),
219
+ s("div", O, [
220
+ s("div", J, [
221
+ t(u, { class: "text-sm font-semibold" }, {
222
+ default: i(() => [...e[19] || (e[19] = [
223
+ l("Enable Manual Approval", -1)
224
+ ])]),
225
+ _: 1
226
+ }),
227
+ e[22] || (e[22] = s("p", { class: "text-xs text-muted-foreground max-w-[300px]" }, " When enabled, you must approve bookings within your dashboard before they are finalized. ", -1)),
228
+ n.needsApproval ? (m(), y(A, { key: 0 }, {
229
+ default: i(() => [...e[20] || (e[20] = [
230
+ l("Status: Manual Review", -1)
231
+ ])]),
232
+ _: 1
233
+ })) : (m(), y(A, {
234
+ key: 1,
235
+ variant: "secondary"
236
+ }, {
237
+ default: i(() => [...e[21] || (e[21] = [
238
+ l("Status: Auto-Confirm", -1)
239
+ ])]),
240
+ _: 1
241
+ }))
242
+ ]),
243
+ t(L, {
244
+ modelValue: n.needsApproval,
245
+ "onUpdate:modelValue": e[5] || (e[5] = (r) => n.needsApproval = r)
246
+ }, null, 8, ["modelValue"])
247
+ ])
248
+ ]),
249
+ s("div", K, [
250
+ t(E, {
251
+ onClick: _,
252
+ disabled: d.value
253
+ }, {
254
+ default: i(() => [
255
+ l(N(d.value ? "Saving..." : "Save Changes"), 1)
256
+ ]),
257
+ _: 1
258
+ }, 8, ["disabled"])
259
+ ])
260
+ ]))
261
+ ]),
262
+ _: 1
263
+ });
264
+ };
265
+ }
266
+ });
267
+ export {
268
+ h as default
269
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),_=require("./EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js"),c=require("@oneclick.dev/cms-kit"),E={key:0,class:"max-w-2xl"},B={key:0,class:"text-sm text-orange-500 mt-2"},M={class:"space-y-3"},h={class:"flex items-center justify-between rounded-lg border p-4 bg-card"},I={class:"space-y-2"},P={class:"flex justify-start mt-8"},R=e.defineComponent({__name:"availability",setup(L){const{params:p}=c.useModuleRoute(),{config:r}=c.useModule(),v=c.useFirebaseIntegration(r.project),o=e.reactive({minimumAdvanceNotice:{value:0,unit:"minutes"},serviceVisibility:60,maxTicketsPerReservation:"",needsApproval:!1}),l=e.ref(!1),V=e.ref(!0),N=async()=>{l.value=!0;try{const n=p.value.id;if(!n)throw new Error("Missing agenda ID");await v.update(r.agendaCollection,n,{minimumAdvanceNotice:{value:Number(o.minimumAdvanceNotice?.value)||0,unit:o.minimumAdvanceNotice?.unit??"minutes"},serviceVisibility:Math.max(Number(o.serviceVisibility)||1,1),maxTicketsPerReservation:Math.max(Number(o.maxTicketsPerReservation)||0,0),needsApproval:o.needsApproval||!1})}catch(n){console.error("Error saving changes:",n)}finally{l.value=!1}},f=async()=>{try{const n=await v.get(r.agendaCollection,p.value.id);n&&(o.minimumAdvanceNotice=n.minimumAdvanceNotice||{value:0,unit:"minutes"},o.serviceVisibility=n.serviceVisibility||60,o.maxTicketsPerReservation=Number(n.maxTicketsPerReservation)&&n.maxTicketsPerReservation>0?parseInt(n.maxTicketsPerReservation):"",o.needsApproval=n.needsApproval||!1)}catch(n){console.error("Error loading agenda data:",n)}finally{V.value=!1}},y=()=>{let n=Math.abs(o.minimumAdvanceNotice.value),t=o.minimumAdvanceNotice.unit;return n===1?(t.endsWith("s")&&(t=t.slice(0,-1)),`Lead time is negative. Bookings remain open for 1 ${t} after the slot has started.`):`Lead time is negative. Bookings remain open for ${n} ${t} after the slot has started.`};return f(),(n,t)=>{const i=e.resolveComponent("Label"),d=e.resolveComponent("InputGroupInput"),b=e.resolveComponent("Search"),s=e.resolveComponent("InputGroupAddon"),g=e.resolveComponent("SelectValue"),C=e.resolveComponent("SelectTrigger"),m=e.resolveComponent("SelectItem"),w=e.resolveComponent("SelectGroup"),k=e.resolveComponent("SelectContent"),S=e.resolveComponent("Select"),u=e.resolveComponent("InputGroup"),x=e.resolveComponent("Badge"),A=e.resolveComponent("Switch"),T=e.resolveComponent("Button");return e.openBlock(),e.createBlock(_._sfc_main,null,{default:e.withCtx(()=>[t[26]||(t[26]=e.createElementVNode("h1",{class:"text-lg font-medium mb-8"},"Availability Settings",-1)),V.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",E,[e.createElementVNode("div",null,[e.createVNode(i,{for:"lead-time",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode(" Minimum Advance Notice - Lead Time (Optional) ",-1)])]),_:1}),e.createVNode(u,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(d,{placeholder:"0",id:"lead-time",modelValue:o.minimumAdvanceNotice.value,"onUpdate:modelValue":t[0]||(t[0]=a=>o.minimumAdvanceNotice.value=a),modelModifiers:{value:!0},type:"number",class:"no-spinner"},null,8,["modelValue"]),e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(b)]),_:1}),e.createVNode(s,{align:"inline-end"},{default:e.withCtx(()=>[e.createVNode(S,{modelValue:o.minimumAdvanceNotice.unit,"onUpdate:modelValue":t[1]||(t[1]=a=>o.minimumAdvanceNotice.unit=a)},{default:e.withCtx(()=>[e.createVNode(C,{class:"w-[180px] border-0 bg-transparent -mr-1.5"},{default:e.withCtx(()=>[e.createVNode(g)]),_:1}),e.createVNode(k,null,{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(m,{value:"minutes"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Minutes ",-1)])]),_:1}),e.createVNode(m,{value:"hours"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Hours ",-1)])]),_:1}),e.createVNode(m,{value:"days"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode(" Days ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t[10]||(t[10]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how far in advance a customer must book your slot. ",-1)),o.minimumAdvanceNotice.value<0?(e.openBlock(),e.createElementBlock("p",B,e.toDisplayString(y()),1)):e.createCommentVNode("",!0)]),t[23]||(t[23]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(i,{for:"service-visibility",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode(" Service Visibility ",-1)])]),_:1}),e.createVNode(u,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(d,{id:"service-visibility",modelValue:o.serviceVisibility,"onUpdate:modelValue":t[2]||(t[2]=a=>o.serviceVisibility=a),modelModifiers:{number:!0},placeholder:"1",type:"number",class:"no-spinner",min:"1",onBlur:t[3]||(t[3]=a=>o.serviceVisibility=Math.max(o.serviceVisibility,1))},null,8,["modelValue"]),e.createVNode(s,{align:"inline-end"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode(" days ",-1)])]),_:1})]),_:1}),t[13]||(t[13]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how many days in advance the service is visible to customers. ",-1))]),t[24]||(t[24]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(i,{for:"max-capacity",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" Maximum Tickets Per Booking ",-1)])]),_:1}),e.createVNode(u,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(d,{placeholder:"∞",type:"number",id:"max-capacity",class:"no-spinner",min:"1",modelValue:o.maxTicketsPerReservation,"onUpdate:modelValue":t[4]||(t[4]=a=>o.maxTicketsPerReservation=a),modelModifiers:{number:!0}},null,8,["modelValue"]),e.createVNode(s,{align:"inline-end"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" spots ",-1)])]),_:1})]),_:1}),t[16]||(t[16]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Limit how many spots a customer can book in a single reservation. ",-1))]),t[25]||(t[25]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",M,[e.createElementVNode("div",null,[e.createVNode(i,{class:"text-base font-medium"},{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createTextVNode("Booking Approval",-1)])]),_:1}),t[18]||(t[18]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"}," Choose whether you want to confirm booking requests manually or accept them automatically. ",-1))]),e.createElementVNode("div",h,[e.createElementVNode("div",I,[e.createVNode(i,{class:"text-sm font-semibold"},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode("Enable Manual Approval",-1)])]),_:1}),t[22]||(t[22]=e.createElementVNode("p",{class:"text-xs text-muted-foreground max-w-[300px]"}," When enabled, you must approve bookings within your dashboard before they are finalized. ",-1)),o.needsApproval?(e.openBlock(),e.createBlock(x,{key:0},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode("Status: Manual Review",-1)])]),_:1})):(e.openBlock(),e.createBlock(x,{key:1,variant:"secondary"},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode("Status: Auto-Confirm",-1)])]),_:1}))]),e.createVNode(A,{modelValue:o.needsApproval,"onUpdate:modelValue":t[5]||(t[5]=a=>o.needsApproval=a)},null,8,["modelValue"])])]),e.createElementVNode("div",P,[e.createVNode(T,{onClick:N,disabled:l.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.value?"Saving...":"Save Changes"),1)]),_:1},8,["disabled"])])]))]),_:1})}}});exports.default=R;