@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,177 @@
1
+ import { defineComponent as A, computed as L, ref as x, onMounted as j, resolveComponent as D, openBlock as d, createElementBlock as i, unref as o, createVNode as m, createElementVNode as t, toDisplayString as n, Fragment as P, renderList as z, normalizeClass as E, withCtx as F, createTextVNode as V } from "vue";
2
+ import { Loader2 as q, CalendarDays as M, ExternalLink as B } from "lucide-vue-next";
3
+ const R = { class: "w-full" }, U = {
4
+ key: 0,
5
+ class: "flex items-center gap-2 py-3"
6
+ }, S = {
7
+ key: 1,
8
+ class: "text-xs text-destructive py-2"
9
+ }, G = {
10
+ key: 2,
11
+ class: "rounded-xl border bg-background p-4 text-center"
12
+ }, H = {
13
+ key: 3,
14
+ class: "rounded-xl border bg-background overflow-hidden"
15
+ }, J = { class: "overflow-x-auto" }, K = { class: "w-full text-xs" }, O = { class: "px-3 py-2" }, Q = { class: "font-medium truncate max-w-[160px]" }, W = { class: "text-muted-foreground truncate max-w-[160px]" }, X = { class: "px-3 py-2 whitespace-nowrap" }, Y = { class: "px-3 py-2 whitespace-nowrap" }, Z = { class: "px-3 py-2 text-center" }, ee = { class: "px-3 py-2" }, te = { class: "px-3 py-2 text-right font-medium whitespace-nowrap" }, se = { class: "px-3 py-2 border-t bg-muted/20 flex items-center justify-between" }, re = { class: "text-xs text-muted-foreground" }, ae = /* @__PURE__ */ A({
16
+ __name: "AppointmentListTable",
17
+ props: {
18
+ toolName: {},
19
+ instanceId: {},
20
+ instanceName: {},
21
+ moduleType: {},
22
+ resolvedArgs: {},
23
+ status: {}
24
+ },
25
+ emits: ["submit"],
26
+ setup(f, { emit: b }) {
27
+ const { $useRoute: h, $useModuleApi: v } = useNuxtApp(), u = f, y = b, _ = h(), k = L(() => _.params.slug), w = v(u.instanceId), p = x(!0), l = x(null), a = x([]);
28
+ async function I() {
29
+ const r = u.resolvedArgs?.quantity || 20, s = u.resolvedArgs?.status || "confirmed";
30
+ p.value = !0, l.value = null;
31
+ try {
32
+ const c = await w.get(`/appointments?quantity=${r}&status=${s}`);
33
+ a.value = c.appointments || [], g({
34
+ count: a.value.length,
35
+ appointments: a.value.map((e) => ({
36
+ orderId: e.orderId,
37
+ reservationId: e.reservationId,
38
+ customerName: `${e.customerInfo?.firstName || ""} ${e.customerInfo?.lastName || ""}`.trim(),
39
+ email: e.customerInfo?.email,
40
+ date: e.date,
41
+ startTime: e.startTime,
42
+ endTime: e.endTime,
43
+ spots: e.spots,
44
+ status: e.reservationStatus || e.status,
45
+ price: e.reservationPrice
46
+ }))
47
+ });
48
+ } catch (c) {
49
+ l.value = c?.data?.statusMessage || c?.message || "Failed to load appointments", g(`Error loading appointments: ${l.value}`);
50
+ } finally {
51
+ p.value = !1;
52
+ }
53
+ }
54
+ j(() => {
55
+ I();
56
+ });
57
+ function g(r) {
58
+ u.status !== "completed" && y("submit", r);
59
+ }
60
+ const N = (r, s) => {
61
+ if (s !== "confirmed")
62
+ switch (s) {
63
+ case "pending":
64
+ return "text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20";
65
+ case "cancelled":
66
+ return "text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";
67
+ default:
68
+ return "text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";
69
+ }
70
+ switch (r || s) {
71
+ case "approved":
72
+ return "text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20";
73
+ case "needs_approval":
74
+ return "text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20";
75
+ case "rejected":
76
+ case "cancelled":
77
+ return "text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";
78
+ default:
79
+ return "text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20";
80
+ }
81
+ }, C = (r, s) => {
82
+ if (s !== "confirmed")
83
+ switch (s) {
84
+ case "pending":
85
+ return "Pending";
86
+ case "cancelled":
87
+ return "Cancelled";
88
+ default:
89
+ return s || "Unknown";
90
+ }
91
+ switch (r || s) {
92
+ case "approved":
93
+ return "Approved";
94
+ case "needs_approval":
95
+ return "Needs Approval";
96
+ case "rejected":
97
+ return "Rejected";
98
+ case "cancelled":
99
+ return "Cancelled";
100
+ case "confirmed":
101
+ return "Confirmed";
102
+ default:
103
+ return r || s || "Pending";
104
+ }
105
+ }, T = (r) => r == null ? "—" : `€${r.toFixed(2)}`, $ = (r) => {
106
+ if (!r) return "—";
107
+ try {
108
+ return new Date(r).toLocaleDateString("en-US", { weekday: "short", month: "short", day: "numeric" });
109
+ } catch {
110
+ return r;
111
+ }
112
+ };
113
+ return (r, s) => {
114
+ const c = D("NuxtLink");
115
+ return d(), i("div", R, [
116
+ o(p) ? (d(), i("div", U, [
117
+ m(o(q), { class: "size-4 animate-spin text-muted-foreground" }),
118
+ s[0] || (s[0] = t("span", { class: "text-xs text-muted-foreground" }, "Loading appointments…", -1))
119
+ ])) : o(l) ? (d(), i("div", S, n(o(l)), 1)) : o(a).length === 0 ? (d(), i("div", G, [
120
+ m(o(M), { class: "size-8 text-muted-foreground mx-auto mb-2" }),
121
+ s[1] || (s[1] = t("p", { class: "text-sm text-muted-foreground" }, "No recent appointments found.", -1))
122
+ ])) : (d(), i("div", H, [
123
+ t("div", J, [
124
+ t("table", K, [
125
+ s[2] || (s[2] = t("thead", null, [
126
+ t("tr", { class: "border-b bg-muted/40" }, [
127
+ t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Customer"),
128
+ t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Date"),
129
+ t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Time"),
130
+ t("th", { class: "text-center px-3 py-2 font-medium text-muted-foreground" }, "Spots"),
131
+ t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Status"),
132
+ t("th", { class: "text-right px-3 py-2 font-medium text-muted-foreground" }, "Price")
133
+ ])
134
+ ], -1)),
135
+ t("tbody", null, [
136
+ (d(!0), i(P, null, z(o(a), (e) => (d(), i("tr", {
137
+ key: e.reservationId || e.orderId,
138
+ class: "border-b last:border-b-0 hover:bg-muted/30 transition-colors"
139
+ }, [
140
+ t("td", O, [
141
+ t("div", Q, n(e.customerInfo?.firstName) + " " + n(e.customerInfo?.lastName), 1),
142
+ t("div", W, n(e.customerInfo?.email), 1)
143
+ ]),
144
+ t("td", X, n($(e.date)), 1),
145
+ t("td", Y, n(e.startTime) + " – " + n(e.endTime), 1),
146
+ t("td", Z, n(e.spots || 1), 1),
147
+ t("td", ee, [
148
+ t("span", {
149
+ class: E(["inline-block text-[10px] font-medium px-1.5 py-0.5 rounded-full uppercase whitespace-nowrap", N(e.reservationStatus, e.status)])
150
+ }, n(C(e.reservationStatus, e.status)), 3)
151
+ ]),
152
+ t("td", te, n(T(e.reservationPrice)), 1)
153
+ ]))), 128))
154
+ ])
155
+ ])
156
+ ]),
157
+ t("div", se, [
158
+ t("span", re, n(o(a).length) + " appointment" + n(o(a).length === 1 ? "" : "s"), 1),
159
+ m(c, {
160
+ to: `/projects/${o(k)}/modules/${f.instanceId}`,
161
+ class: "inline-flex items-center gap-1.5 text-xs text-primary hover:underline"
162
+ }, {
163
+ default: F(() => [
164
+ m(o(B), { class: "size-3" }),
165
+ s[3] || (s[3] = V(" View all ", -1))
166
+ ]),
167
+ _: 1
168
+ }, 8, ["to"])
169
+ ])
170
+ ]))
171
+ ]);
172
+ };
173
+ }
174
+ });
175
+ export {
176
+ ae as default
177
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),c=require("lucide-vue-next"),E={class:"w-full"},V={key:0,class:"flex items-center gap-2 py-3"},w={key:1,class:"text-xs text-destructive py-2"},D={key:2,class:"rounded-xl border bg-background p-4 text-center"},I={key:3,class:"rounded-xl border bg-background overflow-hidden"},B={class:"overflow-x-auto"},S={class:"w-full text-xs"},T={class:"px-3 py-2"},C={class:"font-medium truncate max-w-[160px]"},$={class:"text-muted-foreground truncate max-w-[160px]"},A={class:"px-3 py-2 whitespace-nowrap"},L={class:"px-3 py-2 whitespace-nowrap"},j={class:"px-3 py-2 text-center"},P={class:"px-3 py-2"},q={class:"px-3 py-2 text-right font-medium whitespace-nowrap"},z={class:"px-3 py-2 border-t bg-muted/20 flex items-center justify-between"},F={class:"text-xs text-muted-foreground"},M=e.defineComponent({__name:"AppointmentListTable",props:{toolName:{},instanceId:{},instanceName:{},moduleType:{},resolvedArgs:{},status:{}},emits:["submit"],setup(i,{emit:m}){const{$useRoute:p,$useModuleApi:x}=useNuxtApp(),d=i,f=m,g=p(),b=e.computed(()=>g.params.slug),y=x(d.instanceId),l=e.ref(!0),a=e.ref(null),o=e.ref([]);async function N(){const n=d.resolvedArgs?.quantity||20,r=d.resolvedArgs?.status||"confirmed";l.value=!0,a.value=null;try{const s=await y.get(`/appointments?quantity=${n}&status=${r}`);o.value=s.appointments||[],u({count:o.value.length,appointments:o.value.map(t=>({orderId:t.orderId,reservationId:t.reservationId,customerName:`${t.customerInfo?.firstName||""} ${t.customerInfo?.lastName||""}`.trim(),email:t.customerInfo?.email,date:t.date,startTime:t.startTime,endTime:t.endTime,spots:t.spots,status:t.reservationStatus||t.status,price:t.reservationPrice}))})}catch(s){a.value=s?.data?.statusMessage||s?.message||"Failed to load appointments",u(`Error loading appointments: ${a.value}`)}finally{l.value=!1}}e.onMounted(()=>{N()});function u(n){d.status!=="completed"&&f("submit",n)}const h=(n,r)=>{if(r!=="confirmed")switch(r){case"pending":return"text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20";case"cancelled":return"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";default:return"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20"}switch(n||r){case"approved":return"text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20";case"needs_approval":return"text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20";case"rejected":case"cancelled":return"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";default:return"text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20"}},k=(n,r)=>{if(r!=="confirmed")switch(r){case"pending":return"Pending";case"cancelled":return"Cancelled";default:return r||"Unknown"}switch(n||r){case"approved":return"Approved";case"needs_approval":return"Needs Approval";case"rejected":return"Rejected";case"cancelled":return"Cancelled";case"confirmed":return"Confirmed";default:return n||r||"Pending"}},v=n=>n==null?"—":`€${n.toFixed(2)}`,_=n=>{if(!n)return"—";try{return new Date(n).toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric"})}catch{return n}};return(n,r)=>{const s=e.resolveComponent("NuxtLink");return e.openBlock(),e.createElementBlock("div",E,[e.unref(l)?(e.openBlock(),e.createElementBlock("div",V,[e.createVNode(e.unref(c.Loader2),{class:"size-4 animate-spin text-muted-foreground"}),r[0]||(r[0]=e.createElementVNode("span",{class:"text-xs text-muted-foreground"},"Loading appointments…",-1))])):e.unref(a)?(e.openBlock(),e.createElementBlock("div",w,e.toDisplayString(e.unref(a)),1)):e.unref(o).length===0?(e.openBlock(),e.createElementBlock("div",D,[e.createVNode(e.unref(c.CalendarDays),{class:"size-8 text-muted-foreground mx-auto mb-2"}),r[1]||(r[1]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"},"No recent appointments found.",-1))])):(e.openBlock(),e.createElementBlock("div",I,[e.createElementVNode("div",B,[e.createElementVNode("table",S,[r[2]||(r[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",{class:"border-b bg-muted/40"},[e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Customer"),e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Date"),e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Time"),e.createElementVNode("th",{class:"text-center px-3 py-2 font-medium text-muted-foreground"},"Spots"),e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Status"),e.createElementVNode("th",{class:"text-right px-3 py-2 font-medium text-muted-foreground"},"Price")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),t=>(e.openBlock(),e.createElementBlock("tr",{key:t.reservationId||t.orderId,class:"border-b last:border-b-0 hover:bg-muted/30 transition-colors"},[e.createElementVNode("td",T,[e.createElementVNode("div",C,e.toDisplayString(t.customerInfo?.firstName)+" "+e.toDisplayString(t.customerInfo?.lastName),1),e.createElementVNode("div",$,e.toDisplayString(t.customerInfo?.email),1)]),e.createElementVNode("td",A,e.toDisplayString(_(t.date)),1),e.createElementVNode("td",L,e.toDisplayString(t.startTime)+" – "+e.toDisplayString(t.endTime),1),e.createElementVNode("td",j,e.toDisplayString(t.spots||1),1),e.createElementVNode("td",P,[e.createElementVNode("span",{class:e.normalizeClass(["inline-block text-[10px] font-medium px-1.5 py-0.5 rounded-full uppercase whitespace-nowrap",h(t.reservationStatus,t.status)])},e.toDisplayString(k(t.reservationStatus,t.status)),3)]),e.createElementVNode("td",q,e.toDisplayString(v(t.reservationPrice)),1)]))),128))])])]),e.createElementVNode("div",z,[e.createElementVNode("span",F,e.toDisplayString(e.unref(o).length)+" appointment"+e.toDisplayString(e.unref(o).length===1?"":"s"),1),e.createVNode(s,{to:`/projects/${e.unref(b)}/modules/${i.instanceId}`,class:"inline-flex items-center gap-1.5 text-xs text-primary hover:underline"},{default:e.withCtx(()=>[e.createVNode(e.unref(c.ExternalLink),{class:"size-3"}),r[3]||(r[3]=e.createTextVNode(" View all ",-1))]),_:1},8,["to"])])]))])}}});exports.default=M;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),D=require("@oneclick.dev/cms-kit");require("./index-BuzLn4Km.js");const r=require("lucide-vue-next"),z=require("./index-D3L8WAJI.js"),H=require("./_plugin-vue_export-helper-BHFhmbuH.js"),I={class:"flex flex-col gap-6 w-full max-w-7xl mx-auto py-8"},K={class:"flex justify-between gap-4 flex-col @lg:flex-row @lg:items-center"},G={key:0,class:"flex items-center gap-2"},J={class:"flex items-center border rounded-lg overflow-hidden"},Q=["onClick"],X={class:"text-sm text-destructive font-medium"},Y={key:2,class:"flex items-center justify-center py-20"},Z={class:"flex flex-col @lg:grid @lg:grid-cols-3 gap-6"},ee={class:"relative"},te={class:"absolute inset-0 flex items-center justify-center pointer-events-none"},se={class:"text-center"},oe={class:"text-xl font-bold tabular-nums"},ne={class:"mt-4 flex items-center gap-6"},le={class:"flex items-center gap-2"},ae={class:"text-sm font-semibold tabular-nums"},re={key:0,class:"text-xs text-muted-foreground"},de={class:"flex items-center gap-2"},ce={class:"text-sm font-semibold tabular-nums"},ie={key:0,class:"text-xs text-muted-foreground"},ue={class:"overflow-x-auto"},me={class:"w-full text-sm"},xe={class:"divide-y"},fe={class:"px-4 py-3"},ge={class:"flex items-center gap-2"},pe={class:"font-medium capitalize"},ve={class:"px-4 py-3 text-right tabular-nums"},he={class:"px-4 py-3 text-right tabular-nums"},Ve={class:"px-4 py-3 text-right tabular-nums"},_e={class:"px-4 py-3 text-right tabular-nums"},Ne={class:"px-4 py-3 text-right tabular-nums"},ye={class:"overflow-x-auto"},be={class:"min-w-[600px]"},Ee={class:"flex items-center mb-1.5"},ke={class:"flex-1 grid grid-cols-24 gap-0.5"},Ce={class:"w-10 shrink-0 text-xs text-muted-foreground"},we={class:"flex-1 grid grid-cols-24 gap-0.5"},Be=["title"],De={class:"grid @lg:grid-cols-3 gap-6"},Se={class:"flex items-center justify-between"},$e={class:"flex items-center gap-1"},ze=["onClick","title"],Re={class:"space-y-3"},Ue={class:"text-sm flex-1 truncate"},Te={class:"flex-1 h-2 bg-muted rounded-full overflow-hidden"},Fe={class:"text-xs tabular-nums text-muted-foreground w-12 text-right"},Me={key:0,class:"py-4 text-center text-muted-foreground text-sm"},Le={class:"space-y-3"},Ae={class:"text-sm flex-1 truncate"},qe={class:"flex-1 h-2 bg-muted rounded-full overflow-hidden"},Pe={class:"text-xs tabular-nums text-muted-foreground w-12 text-right"},Oe={key:0,class:"py-4 text-center text-muted-foreground text-sm"},je={class:"space-y-2.5"},We={class:"flex-1 min-w-0"},He={class:"text-sm truncate block"},Ie={class:"text-xs text-muted-foreground truncate block"},Ke={class:"flex-1 h-2 bg-muted rounded-full overflow-hidden"},Ge={class:"text-xs tabular-nums text-muted-foreground w-12 text-right"},Je={key:0,class:"py-4 text-center text-muted-foreground text-sm"},Qe=e.defineComponent({__name:"Audience",setup(Ye){const{config:S}=D.useModule(),{moduleId:R}=D.useModuleRoute();D.useModuleBreadcrumbs(()=>[{label:"Audience"}]);const u=e.ref(!0),h=e.ref(null),g=e.ref("30"),i=e.ref("browser"),V=e.ref([]),p=e.ref([]),_=e.ref([]),$=e.ref([]),N=e.ref([]),y=e.computed(()=>!!(S.serviceAccount&&S.propertyId));function m(o){return`/api/v1/modules/${R}${o}`}const U=[{label:"7d",value:"7"},{label:"14d",value:"14"},{label:"30d",value:"30"},{label:"90d",value:"90"}];function d(o){return o>=1e6?`${(o/1e6).toFixed(1)}M`:o>=1e3?`${(o/1e3).toFixed(1)}K`:Math.round(o).toString()}function T(o){return`${(o*100).toFixed(1)}%`}function F(o){const t=Math.floor(o/60),n=Math.round(o%60);return t>0?`${t}m ${n}s`:`${n}s`}const x={new:"#3b82f6",returning:"#8b5cf6"},M={new:{label:"New Users",color:x.new},returning:{label:"Returning Users",color:x.returning}},b=e.computed(()=>V.value.find(t=>t.newVsReturning==="new")?.totalUsers||0),E=e.computed(()=>V.value.find(t=>t.newVsReturning==="returning")?.totalUsers||0),L=e.computed(()=>[{key:"new",label:"New",value:b.value,fill:x.new},{key:"returning",label:"Returning",value:E.value,fill:x.returning}]),v=e.computed(()=>b.value+E.value),A=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],q=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],B=e.computed(()=>{const o=Array.from({length:7},()=>Array(24).fill(0));let t=1;return $.value.forEach(n=>{const l=A.indexOf(n.dayOfWeekName),a=parseInt(n.hour,10);l>=0&&a>=0&&a<24&&(o[l][a]=n.sessions||0,n.sessions>t&&(t=n.sessions))}),{matrix:o,maxVal:t}});function P(o,t){if(o===0)return"bg-muted";const n=o/t;return n>.75?"bg-blue-600 dark:bg-blue-500":n>.5?"bg-blue-500 dark:bg-blue-400":n>.25?"bg-blue-400/70 dark:bg-blue-400/60":"bg-blue-300/50 dark:bg-blue-300/30"}const O=[{key:"browser",label:"Browser",icon:r.Chrome},{key:"operatingSystem",label:"OS",icon:r.Cpu},{key:"screenResolution",label:"Screen",icon:r.Monitor}];async function k(){if(!y.value)return;u.value=!0,h.value=null;const o=`${g.value}daysAgo`;try{const[t,n,l,a,c]=await Promise.all([$fetch(m(`/audience/overview?startDate=${o}&endDate=today`)),$fetch(m(`/audience/technology?startDate=${o}&endDate=today&dimension=${i.value}`)),$fetch(m(`/audience/languages?startDate=${o}&endDate=today`)),$fetch(m(`/audience/hours?startDate=${o}&endDate=today`)),$fetch(m(`/audience/cities?startDate=${o}&endDate=today`))]);V.value=t.rows||[],p.value=n.rows||[],_.value=l.rows||[],$.value=a.rows||[],N.value=c.rows||[]}catch(t){h.value=t?.data?.statusMessage||t?.message||"Failed to load audience data"}finally{u.value=!1}}async function j(){const o=`${g.value}daysAgo`;try{const t=await $fetch(m(`/audience/technology?startDate=${o}&endDate=today&dimension=${i.value}`));p.value=t.rows||[]}catch{}}return e.watch(g,()=>k()),e.watch(i,()=>j()),e.onMounted(()=>{y.value?k():u.value=!1}),(o,t)=>{const n=e.resolveComponent("Button"),l=e.resolveComponent("Card"),a=e.resolveComponent("CardTitle"),c=e.resolveComponent("CardHeader"),W=e.resolveComponent("ChartContainer"),f=e.resolveComponent("CardContent");return e.openBlock(),e.createElementBlock("div",I,[e.createElementVNode("div",K,[t[0]||(t[0]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"text-2xl font-semibold"},"Audience"),e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"},"Who visits your site")],-1)),y.value?(e.openBlock(),e.createElementBlock("div",G,[e.createElementVNode("div",J,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(U,s=>e.createElementVNode("button",{key:s.value,class:e.normalizeClass(["px-3 py-1.5 text-xs font-medium transition-colors",g.value===s.value?"bg-primary text-primary-foreground":"text-muted-foreground hover:text-foreground hover:bg-muted"]),onClick:C=>g.value=s.value},e.toDisplayString(s.label),11,Q)),64))]),e.createVNode(n,{variant:"outline",size:"icon",onClick:k,disabled:u.value},{default:e.withCtx(()=>[e.createVNode(e.unref(r.RefreshCw),{class:e.normalizeClass(["size-4",{"animate-spin":u.value}])},null,8,["class"])]),_:1},8,["disabled"])])):e.createCommentVNode("",!0)]),y.value?h.value?(e.openBlock(),e.createBlock(l,{key:1,class:"p-6 border-destructive/50 bg-destructive/5"},{default:e.withCtx(()=>[e.createElementVNode("p",X,e.toDisplayString(h.value),1),e.createVNode(n,{variant:"outline",size:"sm",class:"mt-3",onClick:k},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode("Retry",-1)])]),_:1})]),_:1})):u.value?(e.openBlock(),e.createElementBlock("div",Y,[e.createVNode(e.unref(r.Loader2),{class:"size-8 animate-spin text-muted-foreground"})])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",Z,[e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("New vs Returning",-1)])]),_:1})]),_:1}),e.createVNode(f,{class:"flex flex-col items-center"},{default:e.withCtx(()=>[e.createElementVNode("div",ee,[e.createVNode(W,{config:M,class:"mx-auto aspect-square max-h-[200px]"},{default:e.withCtx(()=>[e.createVNode(e.unref(z.b),{data:L.value,margin:{top:16,bottom:16,left:16,right:16}},{default:e.withCtx(()=>[e.createVNode(e.unref(z.E),{value:s=>s.value,color:s=>s.fill,arcWidth:35,padAngle:.03,cornerRadius:4},null,8,["value","color"])]),_:1},8,["data"])]),_:1}),e.createElementVNode("div",te,[e.createElementVNode("div",se,[e.createElementVNode("p",oe,e.toDisplayString(d(v.value)),1),t[4]||(t[4]=e.createElementVNode("p",{class:"text-xs text-muted-foreground"},"total users",-1))])])]),e.createElementVNode("div",ne,[e.createElementVNode("div",le,[e.createElementVNode("div",{class:"size-2.5 rounded-full",style:e.normalizeStyle({backgroundColor:x.new})},null,4),t[5]||(t[5]=e.createElementVNode("span",{class:"text-sm"},"New",-1)),e.createElementVNode("span",ae,e.toDisplayString(d(b.value)),1),v.value?(e.openBlock(),e.createElementBlock("span",re,e.toDisplayString(Math.round(b.value/v.value*100))+"%",1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",de,[e.createElementVNode("div",{class:"size-2.5 rounded-full",style:e.normalizeStyle({backgroundColor:x.returning})},null,4),t[6]||(t[6]=e.createElementVNode("span",{class:"text-sm"},"Returning",-1)),e.createElementVNode("span",ce,e.toDisplayString(d(E.value)),1),v.value?(e.openBlock(),e.createElementBlock("span",ie,e.toDisplayString(Math.round(E.value/v.value*100))+"%",1)):e.createCommentVNode("",!0)])])]),_:1})]),_:1}),e.createVNode(l,{class:"@lg:col-span-2"},{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Engagement by Visitor Type",-1)])]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",ue,[e.createElementVNode("table",me,[t[8]||(t[8]=e.createElementVNode("thead",null,[e.createElementVNode("tr",{class:"border-b text-left"},[e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground"},"Type"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Users"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Sessions"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Engagement Rate"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Avg Duration"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Pages/Session")])],-1)),e.createElementVNode("tbody",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,s=>(e.openBlock(),e.createElementBlock("tr",{key:s.newVsReturning,class:"hover:bg-muted/50"},[e.createElementVNode("td",fe,[e.createElementVNode("div",ge,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.newVsReturning==="new"?e.unref(r.UserPlus):e.unref(r.UserCheck)),{class:"size-4 text-muted-foreground"})),e.createElementVNode("span",pe,e.toDisplayString(s.newVsReturning),1)])]),e.createElementVNode("td",ve,e.toDisplayString(d(s.totalUsers)),1),e.createElementVNode("td",he,e.toDisplayString(d(s.sessions)),1),e.createElementVNode("td",Ve,e.toDisplayString(T(s.engagementRate||0)),1),e.createElementVNode("td",_e,e.toDisplayString(F(s.averageSessionDuration||0)),1),e.createElementVNode("td",Ne,e.toDisplayString((s.screenPageViewsPerSession||0).toFixed(1)),1)]))),128))])])])]),_:1})]),_:1})]),e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(r.Clock),{class:"size-4"}),t[9]||(t[9]=e.createTextVNode(" Peak Hours ",-1))]),_:1}),t[10]||(t[10]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"},"When your visitors are most active (based on sessions)",-1))]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",ye,[e.createElementVNode("div",be,[e.createElementVNode("div",Ee,[t[11]||(t[11]=e.createElementVNode("div",{class:"w-10 shrink-0"},null,-1)),e.createElementVNode("div",ke,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(24,s=>e.createElementVNode("div",{key:s,class:"text-[10px] text-muted-foreground text-center"},e.toDisplayString(s-1),1)),64))])]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(q,(s,C)=>e.createElementVNode("div",{key:s,class:"flex items-center mb-0.5"},[e.createElementVNode("div",Ce,e.toDisplayString(s),1),e.createElementVNode("div",we,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(24,w=>e.createElementVNode("div",{key:w,class:e.normalizeClass(["aspect-square rounded-sm transition-colors",P(B.value.matrix[C]?.[w-1]||0,B.value.maxVal)]),title:`${s} ${w-1}:00 — ${B.value.matrix[C]?.[w-1]||0} sessions`},null,10,Be)),64))])])),64)),t[12]||(t[12]=e.createElementVNode("div",{class:"flex items-center justify-end gap-1.5 mt-3"},[e.createElementVNode("span",{class:"text-[10px] text-muted-foreground"},"Less"),e.createElementVNode("div",{class:"size-3 rounded-sm bg-muted"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-300/50 dark:bg-blue-300/30"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-400/70 dark:bg-blue-400/60"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-500 dark:bg-blue-400"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-600 dark:bg-blue-500"}),e.createElementVNode("span",{class:"text-[10px] text-muted-foreground"},"More")],-1))])])]),_:1})]),_:1}),e.createElementVNode("div",De,[e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createElementVNode("div",Se,[e.createVNode(a,{class:"text-base"},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode("Technology",-1)])]),_:1}),e.createElementVNode("div",$e,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(O,s=>e.createElementVNode("button",{key:s.key,class:e.normalizeClass(["p-1.5 rounded-md transition-colors",i.value===s.key?"bg-muted text-foreground":"text-muted-foreground hover:text-foreground"]),onClick:C=>i.value=s.key,title:s.label},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.icon),{class:"size-3.5"}))],10,ze)),64))])])]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",Re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,s=>(e.openBlock(),e.createElementBlock("div",{key:s[i.value],class:"flex items-center gap-3"},[e.createElementVNode("span",Ue,e.toDisplayString(s[i.value]||"(not set)"),1),e.createElementVNode("div",Te,[e.createElementVNode("div",{class:"h-full bg-primary rounded-full transition-all",style:e.normalizeStyle({width:`${s.totalUsers/(p.value[0]?.totalUsers||1)*100}%`})},null,4)]),e.createElementVNode("span",Fe,e.toDisplayString(d(s.totalUsers)),1)]))),128)),p.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Me,"No data"))])]),_:1})]),_:1}),e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(r.Languages),{class:"size-4"}),t[14]||(t[14]=e.createTextVNode(" Languages ",-1))]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",Le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,s=>(e.openBlock(),e.createElementBlock("div",{key:s.language,class:"flex items-center gap-3"},[e.createElementVNode("span",Ae,e.toDisplayString(s.language),1),e.createElementVNode("div",qe,[e.createElementVNode("div",{class:"h-full bg-primary rounded-full transition-all",style:e.normalizeStyle({width:`${s.totalUsers/(_.value[0]?.totalUsers||1)*100}%`})},null,4)]),e.createElementVNode("span",Pe,e.toDisplayString(d(s.totalUsers)),1)]))),128)),_.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Oe,"No data"))])]),_:1})]),_:1}),e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(r.MapPin),{class:"size-4"}),t[15]||(t[15]=e.createTextVNode(" Top Cities ",-1))]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,s=>(e.openBlock(),e.createElementBlock("div",{key:`${s.city}-${s.country}`,class:"flex items-center gap-3"},[e.createElementVNode("div",We,[e.createElementVNode("span",He,e.toDisplayString(s.city),1),e.createElementVNode("span",Ie,e.toDisplayString(s.country),1)]),e.createElementVNode("div",Ke,[e.createElementVNode("div",{class:"h-full bg-primary rounded-full transition-all",style:e.normalizeStyle({width:`${s.totalUsers/(N.value[0]?.totalUsers||1)*100}%`})},null,4)]),e.createElementVNode("span",Ge,e.toDisplayString(d(s.totalUsers)),1)]))),128)),N.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Je,"No data"))])]),_:1})]),_:1})])],64)):(e.openBlock(),e.createBlock(l,{key:0,class:"p-8 text-center"},{default:e.withCtx(()=>[...t[1]||(t[1]=[e.createElementVNode("p",{class:"text-lg font-medium"},"Setup required",-1)])]),_:1}))])}}}),Xe=H._export_sfc(Qe,[["__scopeId","data-v-4f3ae270"]]);exports.default=Xe;
@@ -1,22 +1,22 @@
1
- import { defineComponent as oe, ref as f, computed as C, watch as q, onMounted as re, resolveComponent as $, openBlock as o, createElementBlock as r, createElementVNode as e, Fragment as m, renderList as g, normalizeClass as E, toDisplayString as u, createVNode as n, withCtx as l, unref as x, createCommentVNode as R, createBlock as W, createTextVNode as b, normalizeStyle as M, resolveDynamicComponent as K } from "vue";
1
+ import { defineComponent as oe, ref as m, computed as C, watch as q, onMounted as re, resolveComponent as $, openBlock as o, createElementBlock as r, createElementVNode as e, Fragment as f, renderList as g, normalizeClass as E, toDisplayString as u, createVNode as l, withCtx as n, unref as x, createCommentVNode as R, createBlock as W, createTextVNode as b, normalizeStyle as M, resolveDynamicComponent as K } from "vue";
2
2
  import { useModule as ue, useModuleRoute as de, useModuleBreadcrumbs as ie } from "@oneclick.dev/cms-kit";
3
3
  import "./index-CMk3uhUt.mjs";
4
- import { RefreshCw as ce, Loader2 as me, UserPlus as fe, UserCheck as ge, Clock as xe, Chrome as ve, Cpu as _e, Monitor as pe, Languages as be, MapPin as he } from "lucide-vue-next";
4
+ import { RefreshCw as ce, Loader2 as fe, UserPlus as me, UserCheck as ge, Clock as xe, Chrome as ve, Cpu as _e, Monitor as pe, Languages as be, MapPin as he } from "lucide-vue-next";
5
5
  import { b as ye, E as ke } from "./index-DjDCYQ_6.mjs";
6
6
  import { _ as we } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
7
- const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e = { class: "flex items-center justify-between" }, Re = {
7
+ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e = { class: "flex justify-between gap-4 flex-col @lg:flex-row @lg:items-center" }, Re = {
8
8
  key: 0,
9
9
  class: "flex items-center gap-2"
10
10
  }, De = { class: "flex items-center border rounded-lg overflow-hidden" }, Ue = ["onClick"], ze = { class: "text-sm text-destructive font-medium" }, Me = {
11
11
  key: 2,
12
12
  class: "flex items-center justify-center py-20"
13
- }, Se = { class: "grid @lg:grid-cols-3 gap-6" }, Ae = { class: "relative" }, Ne = { class: "absolute inset-0 flex items-center justify-center pointer-events-none" }, Ve = { class: "text-center" }, Te = { class: "text-xl font-bold tabular-nums" }, Be = { class: "mt-4 flex items-center gap-6" }, Fe = { class: "flex items-center gap-2" }, Pe = { class: "text-sm font-semibold tabular-nums" }, Le = {
13
+ }, Se = { class: "flex flex-col @lg:grid @lg:grid-cols-3 gap-6" }, Ae = { class: "relative" }, Ne = { class: "absolute inset-0 flex items-center justify-center pointer-events-none" }, Ve = { class: "text-center" }, Te = { class: "text-xl font-bold tabular-nums" }, Be = { class: "mt-4 flex items-center gap-6" }, Fe = { class: "flex items-center gap-2" }, Pe = { class: "text-sm font-semibold tabular-nums" }, Le = {
14
14
  key: 0,
15
15
  class: "text-xs text-muted-foreground"
16
16
  }, Oe = { class: "flex items-center gap-2" }, Ee = { class: "text-sm font-semibold tabular-nums" }, We = {
17
17
  key: 0,
18
18
  class: "text-xs text-muted-foreground"
19
- }, je = { class: "overflow-x-auto" }, Ie = { class: "w-full text-sm" }, He = { class: "divide-y" }, qe = { class: "px-4 py-3" }, Ke = { class: "flex items-center gap-2" }, Ge = { class: "font-medium capitalize" }, Je = { class: "px-4 py-3 text-right tabular-nums" }, Qe = { class: "px-4 py-3 text-right tabular-nums" }, Xe = { class: "px-4 py-3 text-right tabular-nums" }, Ye = { class: "px-4 py-3 text-right tabular-nums" }, Ze = { class: "px-4 py-3 text-right tabular-nums" }, et = { class: "overflow-x-auto" }, tt = { class: "min-w-[600px]" }, st = { class: "flex items-center mb-1.5" }, nt = { class: "flex-1 grid grid-cols-24 gap-0.5" }, lt = { class: "w-10 shrink-0 text-xs text-muted-foreground" }, at = { class: "flex-1 grid grid-cols-24 gap-0.5" }, ot = ["title"], rt = { class: "grid @lg:grid-cols-3 gap-6" }, ut = { class: "flex items-center justify-between" }, dt = { class: "flex items-center gap-1" }, it = ["onClick", "title"], ct = { class: "space-y-3" }, mt = { class: "text-sm flex-1 truncate" }, ft = { class: "flex-1 h-2 bg-muted rounded-full overflow-hidden" }, gt = { class: "text-xs tabular-nums text-muted-foreground w-12 text-right" }, xt = {
19
+ }, je = { class: "overflow-x-auto" }, Ie = { class: "w-full text-sm" }, He = { class: "divide-y" }, qe = { class: "px-4 py-3" }, Ke = { class: "flex items-center gap-2" }, Ge = { class: "font-medium capitalize" }, Je = { class: "px-4 py-3 text-right tabular-nums" }, Qe = { class: "px-4 py-3 text-right tabular-nums" }, Xe = { class: "px-4 py-3 text-right tabular-nums" }, Ye = { class: "px-4 py-3 text-right tabular-nums" }, Ze = { class: "px-4 py-3 text-right tabular-nums" }, et = { class: "overflow-x-auto" }, tt = { class: "min-w-[600px]" }, st = { class: "flex items-center mb-1.5" }, lt = { class: "flex-1 grid grid-cols-24 gap-0.5" }, nt = { class: "w-10 shrink-0 text-xs text-muted-foreground" }, at = { class: "flex-1 grid grid-cols-24 gap-0.5" }, ot = ["title"], rt = { class: "grid @lg:grid-cols-3 gap-6" }, ut = { class: "flex items-center justify-between" }, dt = { class: "flex items-center gap-1" }, it = ["onClick", "title"], ct = { class: "space-y-3" }, ft = { class: "text-sm flex-1 truncate" }, mt = { class: "flex-1 h-2 bg-muted rounded-full overflow-hidden" }, gt = { class: "text-xs tabular-nums text-muted-foreground w-12 text-right" }, xt = {
20
20
  key: 0,
21
21
  class: "py-4 text-center text-muted-foreground text-sm"
22
22
  }, vt = { class: "space-y-3" }, _t = { class: "text-sm flex-1 truncate" }, pt = { class: "flex-1 h-2 bg-muted rounded-full overflow-hidden" }, bt = { class: "text-xs tabular-nums text-muted-foreground w-12 text-right" }, ht = {
@@ -30,7 +30,7 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
30
30
  setup(zt) {
31
31
  const { config: I } = ue(), { moduleId: G } = de();
32
32
  ie(() => [{ label: "Audience" }]);
33
- const h = f(!0), S = f(null), D = f("30"), p = f("browser"), A = f([]), U = f([]), N = f([]), H = f([]), V = f([]), T = C(() => !!(I.serviceAccount && I.propertyId));
33
+ const h = m(!0), S = m(null), D = m("30"), p = m("browser"), A = m([]), U = m([]), N = m([]), H = m([]), V = m([]), T = C(() => !!(I.serviceAccount && I.propertyId));
34
34
  function y(a) {
35
35
  return `/api/v1/modules/${G}${a}`;
36
36
  }
@@ -69,7 +69,7 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
69
69
  const d = a / t;
70
70
  return d > 0.75 ? "bg-blue-600 dark:bg-blue-500" : d > 0.5 ? "bg-blue-500 dark:bg-blue-400" : d > 0.25 ? "bg-blue-400/70 dark:bg-blue-400/60" : "bg-blue-300/50 dark:bg-blue-300/30";
71
71
  }
72
- const ne = [
72
+ const le = [
73
73
  { key: "browser", label: "Browser", icon: ve },
74
74
  { key: "operatingSystem", label: "OS", icon: _e },
75
75
  { key: "screenResolution", label: "Screen", icon: pe }
@@ -93,7 +93,7 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
93
93
  h.value = !1;
94
94
  }
95
95
  }
96
- async function le() {
96
+ async function ne() {
97
97
  const a = `${D.value}daysAgo`;
98
98
  try {
99
99
  const t = await $fetch(y(`/audience/technology?startDate=${a}&endDate=today&dimension=${p.value}`));
@@ -101,7 +101,7 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
101
101
  } catch {
102
102
  }
103
103
  }
104
- return q(D, () => P()), q(p, () => le()), re(() => {
104
+ return q(D, () => P()), q(p, () => ne()), re(() => {
105
105
  T.value ? P() : h.value = !1;
106
106
  }), (a, t) => {
107
107
  const d = $("Button"), i = $("Card"), c = $("CardTitle"), _ = $("CardHeader"), ae = $("ChartContainer"), w = $("CardContent");
@@ -113,20 +113,20 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
113
113
  ], -1)),
114
114
  T.value ? (o(), r("div", Re, [
115
115
  e("div", De, [
116
- (o(), r(m, null, g(J, (s) => e("button", {
116
+ (o(), r(f, null, g(J, (s) => e("button", {
117
117
  key: s.value,
118
118
  class: E(["px-3 py-1.5 text-xs font-medium transition-colors", D.value === s.value ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground hover:bg-muted"]),
119
119
  onClick: (L) => D.value = s.value
120
120
  }, u(s.label), 11, Ue)), 64))
121
121
  ]),
122
- n(d, {
122
+ l(d, {
123
123
  variant: "outline",
124
124
  size: "icon",
125
125
  onClick: P,
126
126
  disabled: h.value
127
127
  }, {
128
- default: l(() => [
129
- n(x(ce), {
128
+ default: n(() => [
129
+ l(x(ce), {
130
130
  class: E(["size-4", { "animate-spin": h.value }])
131
131
  }, null, 8, ["class"])
132
132
  ]),
@@ -138,15 +138,15 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
138
138
  key: 1,
139
139
  class: "p-6 border-destructive/50 bg-destructive/5"
140
140
  }, {
141
- default: l(() => [
141
+ default: n(() => [
142
142
  e("p", ze, u(S.value), 1),
143
- n(d, {
143
+ l(d, {
144
144
  variant: "outline",
145
145
  size: "sm",
146
146
  class: "mt-3",
147
147
  onClick: P
148
148
  }, {
149
- default: l(() => [...t[2] || (t[2] = [
149
+ default: n(() => [...t[2] || (t[2] = [
150
150
  b("Retry", -1)
151
151
  ])]),
152
152
  _: 1
@@ -154,15 +154,15 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
154
154
  ]),
155
155
  _: 1
156
156
  })) : h.value ? (o(), r("div", Me, [
157
- n(x(me), { class: "size-8 animate-spin text-muted-foreground" })
158
- ])) : (o(), r(m, { key: 3 }, [
157
+ l(x(fe), { class: "size-8 animate-spin text-muted-foreground" })
158
+ ])) : (o(), r(f, { key: 3 }, [
159
159
  e("div", Se, [
160
- n(i, null, {
161
- default: l(() => [
162
- n(_, { class: "pb-2" }, {
163
- default: l(() => [
164
- n(c, { class: "text-base" }, {
165
- default: l(() => [...t[3] || (t[3] = [
160
+ l(i, null, {
161
+ default: n(() => [
162
+ l(_, { class: "pb-2" }, {
163
+ default: n(() => [
164
+ l(c, { class: "text-base" }, {
165
+ default: n(() => [...t[3] || (t[3] = [
166
166
  b("New vs Returning", -1)
167
167
  ])]),
168
168
  _: 1
@@ -170,20 +170,20 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
170
170
  ]),
171
171
  _: 1
172
172
  }),
173
- n(w, { class: "flex flex-col items-center" }, {
174
- default: l(() => [
173
+ l(w, { class: "flex flex-col items-center" }, {
174
+ default: n(() => [
175
175
  e("div", Ae, [
176
- n(ae, {
176
+ l(ae, {
177
177
  config: Y,
178
178
  class: "mx-auto aspect-square max-h-[200px]"
179
179
  }, {
180
- default: l(() => [
181
- n(x(ye), {
180
+ default: n(() => [
181
+ l(x(ye), {
182
182
  data: Z.value,
183
183
  margin: { top: 16, bottom: 16, left: 16, right: 16 }
184
184
  }, {
185
- default: l(() => [
186
- n(x(ke), {
185
+ default: n(() => [
186
+ l(x(ke), {
187
187
  value: (s) => s.value,
188
188
  color: (s) => s.fill,
189
189
  arcWidth: 35,
@@ -229,12 +229,12 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
229
229
  ]),
230
230
  _: 1
231
231
  }),
232
- n(i, { class: "@lg:col-span-2" }, {
233
- default: l(() => [
234
- n(_, { class: "pb-2" }, {
235
- default: l(() => [
236
- n(c, { class: "text-base" }, {
237
- default: l(() => [...t[7] || (t[7] = [
232
+ l(i, { class: "@lg:col-span-2" }, {
233
+ default: n(() => [
234
+ l(_, { class: "pb-2" }, {
235
+ default: n(() => [
236
+ l(c, { class: "text-base" }, {
237
+ default: n(() => [...t[7] || (t[7] = [
238
238
  b("Engagement by Visitor Type", -1)
239
239
  ])]),
240
240
  _: 1
@@ -242,8 +242,8 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
242
242
  ]),
243
243
  _: 1
244
244
  }),
245
- n(w, null, {
246
- default: l(() => [
245
+ l(w, null, {
246
+ default: n(() => [
247
247
  e("div", je, [
248
248
  e("table", Ie, [
249
249
  t[8] || (t[8] = e("thead", null, [
@@ -257,13 +257,13 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
257
257
  ])
258
258
  ], -1)),
259
259
  e("tbody", He, [
260
- (o(!0), r(m, null, g(A.value, (s) => (o(), r("tr", {
260
+ (o(!0), r(f, null, g(A.value, (s) => (o(), r("tr", {
261
261
  key: s.newVsReturning,
262
262
  class: "hover:bg-muted/50"
263
263
  }, [
264
264
  e("td", qe, [
265
265
  e("div", Ke, [
266
- (o(), W(K(s.newVsReturning === "new" ? x(fe) : x(ge)), { class: "size-4 text-muted-foreground" })),
266
+ (o(), W(K(s.newVsReturning === "new" ? x(me) : x(ge)), { class: "size-4 text-muted-foreground" })),
267
267
  e("span", Ge, u(s.newVsReturning), 1)
268
268
  ])
269
269
  ]),
@@ -283,13 +283,13 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
283
283
  _: 1
284
284
  })
285
285
  ]),
286
- n(i, null, {
287
- default: l(() => [
288
- n(_, { class: "pb-2" }, {
289
- default: l(() => [
290
- n(c, { class: "text-base flex items-center gap-2" }, {
291
- default: l(() => [
292
- n(x(xe), { class: "size-4" }),
286
+ l(i, null, {
287
+ default: n(() => [
288
+ l(_, { class: "pb-2" }, {
289
+ default: n(() => [
290
+ l(c, { class: "text-base flex items-center gap-2" }, {
291
+ default: n(() => [
292
+ l(x(xe), { class: "size-4" }),
293
293
  t[9] || (t[9] = b(" Peak Hours ", -1))
294
294
  ]),
295
295
  _: 1
@@ -298,26 +298,26 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
298
298
  ]),
299
299
  _: 1
300
300
  }),
301
- n(w, null, {
302
- default: l(() => [
301
+ l(w, null, {
302
+ default: n(() => [
303
303
  e("div", et, [
304
304
  e("div", tt, [
305
305
  e("div", st, [
306
306
  t[11] || (t[11] = e("div", { class: "w-10 shrink-0" }, null, -1)),
307
- e("div", nt, [
308
- (o(), r(m, null, g(24, (s) => e("div", {
307
+ e("div", lt, [
308
+ (o(), r(f, null, g(24, (s) => e("div", {
309
309
  key: s,
310
310
  class: "text-[10px] text-muted-foreground text-center"
311
311
  }, u(s - 1), 1)), 64))
312
312
  ])
313
313
  ]),
314
- (o(), r(m, null, g(te, (s, L) => e("div", {
314
+ (o(), r(f, null, g(te, (s, L) => e("div", {
315
315
  key: s,
316
316
  class: "flex items-center mb-0.5"
317
317
  }, [
318
- e("div", lt, u(s), 1),
318
+ e("div", nt, u(s), 1),
319
319
  e("div", at, [
320
- (o(), r(m, null, g(24, (O) => e("div", {
320
+ (o(), r(f, null, g(24, (O) => e("div", {
321
321
  key: O,
322
322
  class: E(["aspect-square rounded-sm transition-colors", se(j.value.matrix[L]?.[O - 1] || 0, j.value.maxVal)]),
323
323
  title: `${s} ${O - 1}:00 — ${j.value.matrix[L]?.[O - 1] || 0} sessions`
@@ -342,19 +342,19 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
342
342
  _: 1
343
343
  }),
344
344
  e("div", rt, [
345
- n(i, null, {
346
- default: l(() => [
347
- n(_, { class: "pb-2" }, {
348
- default: l(() => [
345
+ l(i, null, {
346
+ default: n(() => [
347
+ l(_, { class: "pb-2" }, {
348
+ default: n(() => [
349
349
  e("div", ut, [
350
- n(c, { class: "text-base" }, {
351
- default: l(() => [...t[13] || (t[13] = [
350
+ l(c, { class: "text-base" }, {
351
+ default: n(() => [...t[13] || (t[13] = [
352
352
  b("Technology", -1)
353
353
  ])]),
354
354
  _: 1
355
355
  }),
356
356
  e("div", dt, [
357
- (o(), r(m, null, g(ne, (s) => e("button", {
357
+ (o(), r(f, null, g(le, (s) => e("button", {
358
358
  key: s.key,
359
359
  class: E(["p-1.5 rounded-md transition-colors", p.value === s.key ? "bg-muted text-foreground" : "text-muted-foreground hover:text-foreground"]),
360
360
  onClick: (L) => p.value = s.key,
@@ -367,15 +367,15 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
367
367
  ]),
368
368
  _: 1
369
369
  }),
370
- n(w, null, {
371
- default: l(() => [
370
+ l(w, null, {
371
+ default: n(() => [
372
372
  e("div", ct, [
373
- (o(!0), r(m, null, g(U.value, (s) => (o(), r("div", {
373
+ (o(!0), r(f, null, g(U.value, (s) => (o(), r("div", {
374
374
  key: s[p.value],
375
375
  class: "flex items-center gap-3"
376
376
  }, [
377
- e("span", mt, u(s[p.value] || "(not set)"), 1),
378
- e("div", ft, [
377
+ e("span", ft, u(s[p.value] || "(not set)"), 1),
378
+ e("div", mt, [
379
379
  e("div", {
380
380
  class: "h-full bg-primary rounded-full transition-all",
381
381
  style: M({ width: `${s.totalUsers / (U.value[0]?.totalUsers || 1) * 100}%` })
@@ -391,13 +391,13 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
391
391
  ]),
392
392
  _: 1
393
393
  }),
394
- n(i, null, {
395
- default: l(() => [
396
- n(_, { class: "pb-2" }, {
397
- default: l(() => [
398
- n(c, { class: "text-base flex items-center gap-2" }, {
399
- default: l(() => [
400
- n(x(be), { class: "size-4" }),
394
+ l(i, null, {
395
+ default: n(() => [
396
+ l(_, { class: "pb-2" }, {
397
+ default: n(() => [
398
+ l(c, { class: "text-base flex items-center gap-2" }, {
399
+ default: n(() => [
400
+ l(x(be), { class: "size-4" }),
401
401
  t[14] || (t[14] = b(" Languages ", -1))
402
402
  ]),
403
403
  _: 1
@@ -405,10 +405,10 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
405
405
  ]),
406
406
  _: 1
407
407
  }),
408
- n(w, null, {
409
- default: l(() => [
408
+ l(w, null, {
409
+ default: n(() => [
410
410
  e("div", vt, [
411
- (o(!0), r(m, null, g(N.value, (s) => (o(), r("div", {
411
+ (o(!0), r(f, null, g(N.value, (s) => (o(), r("div", {
412
412
  key: s.language,
413
413
  class: "flex items-center gap-3"
414
414
  }, [
@@ -429,13 +429,13 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
429
429
  ]),
430
430
  _: 1
431
431
  }),
432
- n(i, null, {
433
- default: l(() => [
434
- n(_, { class: "pb-2" }, {
435
- default: l(() => [
436
- n(c, { class: "text-base flex items-center gap-2" }, {
437
- default: l(() => [
438
- n(x(he), { class: "size-4" }),
432
+ l(i, null, {
433
+ default: n(() => [
434
+ l(_, { class: "pb-2" }, {
435
+ default: n(() => [
436
+ l(c, { class: "text-base flex items-center gap-2" }, {
437
+ default: n(() => [
438
+ l(x(he), { class: "size-4" }),
439
439
  t[15] || (t[15] = b(" Top Cities ", -1))
440
440
  ]),
441
441
  _: 1
@@ -443,10 +443,10 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
443
443
  ]),
444
444
  _: 1
445
445
  }),
446
- n(w, null, {
447
- default: l(() => [
446
+ l(w, null, {
447
+ default: n(() => [
448
448
  e("div", yt, [
449
- (o(!0), r(m, null, g(V.value, (s) => (o(), r("div", {
449
+ (o(!0), r(f, null, g(V.value, (s) => (o(), r("div", {
450
450
  key: `${s.city}-${s.country}`,
451
451
  class: "flex items-center gap-3"
452
452
  }, [
@@ -475,7 +475,7 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
475
475
  key: 0,
476
476
  class: "p-8 text-center"
477
477
  }, {
478
- default: l(() => [...t[1] || (t[1] = [
478
+ default: n(() => [...t[1] || (t[1] = [
479
479
  e("p", { class: "text-lg font-medium" }, "Setup required", -1)
480
480
  ])]),
481
481
  _: 1
@@ -483,7 +483,7 @@ const Ce = { class: "flex flex-col gap-6 w-full max-w-7xl mx-auto py-8" }, $e =
483
483
  ]);
484
484
  };
485
485
  }
486
- }), Bt = /* @__PURE__ */ we(Ut, [["__scopeId", "data-v-4c7905b1"]]);
486
+ }), Bt = /* @__PURE__ */ we(Ut, [["__scopeId", "data-v-4f3ae270"]]);
487
487
  export {
488
488
  Bt as default
489
489
  };