@oneclick.dev/cms-core-modules 0.0.106 → 0.0.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Acquisition-DypEyPSO.js +1 -0
- package/dist/Acquisition-TCNX-th6.mjs +308 -0
- package/dist/AgendaOpeningHoursCard-BIhm0vpV.js +1 -0
- package/dist/AgendaOpeningHoursCard-BKUdJxRI.mjs +133 -0
- package/dist/AppointmentDetailsCard-C5rQ5jsW.js +1 -0
- package/dist/AppointmentDetailsCard-NRHeNP2L.mjs +111 -0
- package/dist/AppointmentEditor-BcF8CiD-.mjs +150 -0
- package/dist/AppointmentEditor-BlhFtoCm.js +1 -0
- package/dist/AppointmentListTable-B-ReBVtV.js +1 -0
- package/dist/AppointmentListTable-DHmy-iid.mjs +129 -0
- package/dist/Audience-CfWHjjg8.mjs +394 -0
- package/dist/Audience-Cj4TyauW.js +1 -0
- package/dist/Components-BehelN4r.js +1 -0
- package/dist/Components-CR6zukUU.mjs +468 -0
- package/dist/Content-C5Iye3t0.mjs +257 -0
- package/dist/Content-eOfBx52Y.js +1 -0
- package/dist/ContentEditor-BgL4qEeg.mjs +26835 -0
- package/dist/ContentEditor-Tlu3w0Hu.js +462 -0
- package/dist/CountryBreakdownCard-CWVyB8be.mjs +151 -0
- package/dist/CountryBreakdownCard-Db-pMiNe.js +1 -0
- package/dist/Create-B1it8S4m.js +1 -0
- package/dist/Create-DbYi0FAI.mjs +907 -0
- package/dist/DateFormatter-DLrDYkby.mjs +630 -0
- package/dist/DateFormatter-Dni0Oq8r.js +1 -0
- package/dist/Detail-D-eahJGO.mjs +21 -0
- package/dist/Detail-D0kdPPIm.mjs +2757 -0
- package/dist/Detail-DAafePYi.mjs +485 -0
- package/dist/Detail-DYpv4fYg.js +1 -0
- package/dist/Detail-Dc_ui4LM.js +1 -0
- package/dist/Detail-DccUekl_.js +1 -0
- package/dist/Detail-Dhz0V0Vf.js +1 -0
- package/dist/Detail-DjnGY0F8.mjs +282 -0
- package/dist/Detail-DplAitHg.mjs +447 -0
- package/dist/Detail-SugyeSxb.js +1 -0
- package/dist/DeviceBreakdownCard-CzxZT6To.js +1 -0
- package/dist/DeviceBreakdownCard-eEwPjzKl.mjs +115 -0
- package/dist/EditLayout-Bnz9q_jd.js +1 -0
- package/dist/EditLayout-J_DGXb8v.mjs +99 -0
- package/dist/Entries-CgpWg6fE.js +1 -0
- package/dist/Entries-CkGTXcAq.mjs +575 -0
- package/dist/Find-Bz0TNJzk.mjs +164 -0
- package/dist/Find-D-ItTXaZ.js +1 -0
- package/dist/GlobalStyling-CSQPF7o_.mjs +1162 -0
- package/dist/GlobalStyling-DabldMZh.js +15 -0
- package/dist/NewReservationDialog-BhIiY2B9.js +1 -0
- package/dist/NewReservationDialog-CN49aGcM.mjs +1002 -0
- package/dist/OrderDetailDialog-BJ01DZFe.js +1 -0
- package/dist/OrderDetailDialog-CoVQ_rzs.mjs +215 -0
- package/dist/Overview-9FMgn5hT.mjs +492 -0
- package/dist/Overview-BOOwMQ-c.mjs +636 -0
- package/dist/Overview-Biz3h60w.js +1 -0
- package/dist/Overview-C2K2ofdS.js +1 -0
- package/dist/Overview-CFHOXP9N.mjs +123 -0
- package/dist/Overview-CTJe7J5_.js +1 -0
- package/dist/Overview-Cvj2i9eW.js +1 -0
- package/dist/Overview-D2I1F8Dm.mjs +21 -0
- package/dist/Overview-DFOc9emt.mjs +345 -0
- package/dist/Overview-Dmhfb94Y.js +1 -0
- package/dist/Overview-PPzv7weG.mjs +450 -0
- package/dist/Overview-qFKcXHVF.js +1 -0
- package/dist/Overview-xkmYYTae.mjs +133 -0
- package/dist/Overview-yPsLvR2c.js +1 -0
- package/dist/PeakHoursCard-CtgEP-ez.mjs +157 -0
- package/dist/PeakHoursCard-DPeoMyhu.js +1 -0
- package/dist/ProductDetailsCard-B0WhmzO-.mjs +98 -0
- package/dist/ProductDetailsCard-C1ROuH6l.js +1 -0
- package/dist/RealtimeCard-DQno-Okz.js +1 -0
- package/dist/RealtimeCard-dR-g1iDo.mjs +92 -0
- package/dist/ReservationDetailDialog-Cdo6h0RD.mjs +2163 -0
- package/dist/ReservationDetailDialog-DZTFD2xI.js +349 -0
- package/dist/SearchTermsCard-BXJSXz_k.js +1 -0
- package/dist/SearchTermsCard-DsaxLKwP.mjs +146 -0
- package/dist/SendPush-Bssi-OZD.mjs +150 -0
- package/dist/SendPush-BuaYboRH.js +1 -0
- package/dist/SeoHealth-CP-kL0us.js +1 -0
- package/dist/SeoHealth-Cxp_Gb3Y.mjs +459 -0
- package/dist/TableView-7iwBkQ_k.mjs +4757 -0
- package/dist/TableView-BB_oIYYZ.js +4 -0
- package/dist/TemplateList-CNcM_Kgq.mjs +56 -0
- package/dist/TemplateList-VuPcBUJO.js +1 -0
- package/dist/TopPagesCard-CvDECn3_.mjs +117 -0
- package/dist/TopPagesCard-DNdATXJE.js +1 -0
- package/dist/TrafficSourcesCard-BLpBr7u0.mjs +151 -0
- package/dist/TrafficSourcesCard-_3gRUCw3.js +1 -0
- package/dist/View-DSnUHI7h.mjs +30 -0
- package/dist/View-Dbcfpdqh.js +1 -0
- package/dist/VisitorStatsCard-CFEnXSjF.mjs +185 -0
- package/dist/VisitorStatsCard-C_jhQxDW.js +1 -0
- package/dist/_plugin-vue_export-helper-5u7tqpWC.js +1 -0
- package/dist/_plugin-vue_export-helper-BJQSo0im.mjs +8 -0
- package/dist/agenda-CzMRcQTA.mjs +989 -0
- package/dist/agenda-D4zWRYSQ.js +1 -0
- package/dist/appointments-9syR5TZE.js +1 -0
- package/dist/appointments-BBmOJMhM.mjs +23 -0
- package/dist/array-BH1uH7XT.js +1 -0
- package/dist/array-DnDL9cFz.mjs +98 -0
- package/dist/availability-CAXB7Yd6.js +1 -0
- package/dist/availability-Dp7eF-ZK.mjs +215 -0
- package/dist/booking-data-Bysf6e5x.mjs +724 -0
- package/dist/booking-data-C6SGjC2X.js +1 -0
- package/dist/chunk-DQi1bQcV.js +1 -0
- package/dist/cms-core-modules.css +2 -1
- package/dist/contentManager-D7JxXCwE.js +1 -0
- package/dist/contentManager-tfy0x1LD.mjs +22 -0
- package/dist/context-AQKfnJ4t.mjs +3809 -0
- package/dist/context-ubyMq9Xe.js +54 -0
- package/dist/core-Dhgr4ctC.mjs +202 -0
- package/dist/core-_HKfBlaZ.js +1 -0
- package/dist/countries-MXLT3mVe.mjs +4 -0
- package/dist/countries-OCd5qPxG.js +1 -0
- package/dist/create-BfNc2C7N.js +1 -0
- package/dist/create-C7JlIlIh.mjs +95 -0
- package/dist/custom-BwN9-6Mb.js +1 -0
- package/dist/custom-INNwaWla.mjs +13 -0
- package/dist/dist-BCVg7FKM.js +1 -0
- package/dist/dist-DIhK9VWh.mjs +3045 -0
- package/dist/edit-BiI2VG60.js +35 -0
- package/dist/edit-DD3iFBEh.mjs +1097 -0
- package/dist/exceptions-DICMaDcH.mjs +462 -0
- package/dist/exceptions-DpWqMNuG.js +1 -0
- package/dist/google-Bcc4XZnV.mjs +4 -0
- package/dist/google-DTSRmJ51.js +1 -0
- package/dist/googleAnalytics-BSaqRR_L.js +1 -0
- package/dist/googleAnalytics-Cg-iWblZ.mjs +47 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +1095 -806
- package/dist/interpolation-B8OzkMyi.mjs +131 -0
- package/dist/interpolation-DpAqtGOW.js +1 -0
- package/dist/lib-4wSi00Vr.js +1 -0
- package/dist/lib-BZgXUui5.mjs +198 -0
- package/dist/line-DJdnFNI7.js +75 -0
- package/dist/line-tYLnEDGV.mjs +1500 -0
- package/dist/mailTemplates-BNk8fhVS.mjs +23 -0
- package/dist/mailTemplates-DswHzyQe.js +1 -0
- package/dist/orders-CIc0JlKX.mjs +512 -0
- package/dist/orders-DwPSi_pD.js +1 -0
- package/dist/payment-BsNWFaDm.js +1 -0
- package/dist/payment-Ced5_dpa.mjs +718 -0
- package/dist/productCollections-Cuvw_8zC.js +1 -0
- package/dist/productCollections-D0AxRlzr.mjs +23 -0
- package/dist/products-DUD-ZMkR.mjs +22 -0
- package/dist/products-DvX9B-Ul.js +1 -0
- package/dist/promoCodes-BCWqN6w4.mjs +23 -0
- package/dist/promoCodes-CEZ4LYot.js +1 -0
- package/dist/push-notifications-BGp4XWo9.js +1 -0
- package/dist/push-notifications-C7W7KuzR.mjs +23 -0
- package/dist/regular-BCFrS6lK.mjs +908 -0
- package/dist/regular-DBqPgT8C.js +1 -0
- package/dist/resources-DwsMmWgm.mjs +669 -0
- package/dist/resources-Dz81GkHe.js +1 -0
- package/dist/server-handlers.cjs.js +1 -1
- package/dist/server-handlers.mjs +1049 -996
- package/dist/shippingOptions-C3NEJff1.mjs +23 -0
- package/dist/shippingOptions-Cy040ZW1.js +1 -0
- package/dist/single-container-BJmmqq65.mjs +468 -0
- package/dist/single-container-Xoo0Xzxv.js +58 -0
- package/dist/src/appointments/index.d.ts +9 -12
- package/dist/src/appointments/metadata.d.ts +1 -1
- package/dist/src/appointments/routes.d.ts +3 -6
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/LockBlocks.d.ts +15 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/TrailingNodeInContainers.d.ts +4 -1
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/index.d.ts +12 -132
- package/dist/src/contentManager/index.d.ts +5 -14
- package/dist/src/contentManager/metadata.d.ts +1 -1
- package/dist/src/contentManager/routes.d.ts +3 -12
- package/dist/src/custom/index.d.ts +2 -2
- package/dist/src/custom/routes.d.ts +1 -1
- package/dist/src/googleAnalytics/index.d.ts +10 -10
- package/dist/src/googleAnalytics/routes.d.ts +1 -1
- package/dist/src/mailTemplates/index.d.ts +3 -3
- package/dist/src/mailTemplates/metadata.d.ts +1 -1
- package/dist/src/mailTemplates/routes.d.ts +1 -1
- package/dist/src/productCollections/index.d.ts +3 -3
- package/dist/src/productCollections/metadata.d.ts +1 -1
- package/dist/src/productCollections/routes.d.ts +1 -1
- package/dist/src/products/index.d.ts +4 -4
- package/dist/src/products/metadata.d.ts +1 -1
- package/dist/src/products/routes.d.ts +1 -1
- package/dist/src/promoCodes/index.d.ts +3 -3
- package/dist/src/promoCodes/metadata.d.ts +1 -1
- package/dist/src/promoCodes/routes.d.ts +1 -1
- package/dist/src/push-notifications/index.d.ts +3 -3
- package/dist/src/push-notifications/metadata.d.ts +1 -1
- package/dist/src/push-notifications/routes.d.ts +1 -1
- package/dist/src/shippingOptions/index.d.ts +3 -3
- package/dist/src/shippingOptions/metadata.d.ts +1 -1
- package/dist/src/shippingOptions/routes.d.ts +1 -1
- package/dist/src/table/flow-builder-extensions/row-item.d.ts +3 -17
- package/dist/src/table/index.d.ts +2 -2
- package/dist/src/table/routes.d.ts +1 -1
- package/dist/src/types/index.d.ts +6 -0
- package/dist/src/vue-shim.d.ts +7 -0
- package/dist/table-DWw0fs3S.js +1 -0
- package/dist/table-LXt5DQOL.mjs +23 -0
- package/dist/utils-CVIHqQsU.js +3 -0
- package/dist/utils-h3owcMtS.mjs +37 -0
- package/dist/vee-validate-zod-BmXMJo8W.js +1 -0
- package/dist/vee-validate-zod-D9dZzbWZ.mjs +4985 -0
- package/dist/xy-container-CuQSwrtB.mjs +3180 -0
- package/dist/xy-container-_6YpscZh.js +158 -0
- package/package.json +55 -55
- package/dist/Acquisition-B2pM5vSp.mjs +0 -400
- package/dist/Acquisition-Dt2rREU8.js +0 -1
- package/dist/AgendaOpeningHoursCard-B7ROIPWw.js +0 -1
- package/dist/AgendaOpeningHoursCard-Cp4wxUeK.mjs +0 -172
- package/dist/AppointmentDetailsCard-33WpATpV.mjs +0 -161
- package/dist/AppointmentDetailsCard-DpLM5IrB.js +0 -1
- package/dist/AppointmentEditor-BeOtYV6u.mjs +0 -196
- package/dist/AppointmentEditor-CaTfbkIf.js +0 -1
- package/dist/AppointmentListTable-DZJNmTMb.mjs +0 -177
- package/dist/AppointmentListTable-Dieu9US_.js +0 -1
- package/dist/Audience-Bs7b0TNm.js +0 -1
- package/dist/Audience-VLnUsQvW.mjs +0 -489
- package/dist/Components-C83O-xlF.mjs +0 -623
- package/dist/Components-DXbx0RLV.js +0 -1
- package/dist/Content-BHr_rPVY.js +0 -1
- package/dist/Content-CYOZKvWK.mjs +0 -358
- package/dist/ContentEditor-BNLEv-qJ.mjs +0 -30697
- package/dist/ContentEditor-BUvvqfG1.js +0 -462
- package/dist/CountryBreakdownCard-D7BK3nRD.js +0 -1
- package/dist/CountryBreakdownCard-DVxNz2DJ.mjs +0 -196
- package/dist/Create-89z41K73.js +0 -1
- package/dist/Create-Cn_Eufga.mjs +0 -1251
- package/dist/DateFormatter-Bw-87W31.mjs +0 -734
- package/dist/DateFormatter-CYAD4GBN.js +0 -1
- package/dist/Detail-Byk781b4.mjs +0 -26
- package/dist/Detail-C1Blq61w.mjs +0 -585
- package/dist/Detail-C857g62L.js +0 -1
- package/dist/Detail-C8wQiDcv.js +0 -1
- package/dist/Detail-CPqug27l.js +0 -1
- package/dist/Detail-CjuhjPby.js +0 -1
- package/dist/Detail-CtItxMX4.mjs +0 -649
- package/dist/Detail-CujdFApD.mjs +0 -379
- package/dist/Detail-Dnpnmy4-.mjs +0 -3477
- package/dist/Detail-mvSGbnFU.js +0 -1
- package/dist/DeviceBreakdownCard-DRhQ9ufG.js +0 -1
- package/dist/DeviceBreakdownCard-W1frLe0L.mjs +0 -159
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +0 -76
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +0 -1
- package/dist/Entries-BdhUyJR5.mjs +0 -728
- package/dist/Entries-CEXM_SkO.js +0 -1
- package/dist/Find-B24ZEhYM.mjs +0 -229
- package/dist/Find-D4Qa45qC.js +0 -1
- package/dist/GlobalStyling-C9VthHWK.mjs +0 -1588
- package/dist/GlobalStyling-CnSlXkZc.js +0 -25
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Ceoje52V.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-DMGcRmm-.mjs +0 -1255
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js +0 -1
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs +0 -330
- package/dist/Overview-3HWhsqaz.mjs +0 -860
- package/dist/Overview-BCpJNiEB.mjs +0 -190
- package/dist/Overview-BDlBCUI_.js +0 -1
- package/dist/Overview-BbvfH1u-.js +0 -1
- package/dist/Overview-Bn1Xx3_j.js +0 -1
- package/dist/Overview-CIa1E-HH.mjs +0 -178
- package/dist/Overview-DAxCu9XC.js +0 -1
- package/dist/Overview-DC9io1bk.js +0 -1
- package/dist/Overview-Di84CsR5.mjs +0 -476
- package/dist/Overview-Su8ZUbMs.mjs +0 -26
- package/dist/Overview-T-lsy3UZ.js +0 -1
- package/dist/Overview-UoZHUMUz.js +0 -1
- package/dist/Overview-ejh4vUMT.mjs +0 -567
- package/dist/Overview-lWAyyenp.mjs +0 -632
- package/dist/PeakHoursCard-9-EZFZLR.mjs +0 -182
- package/dist/PeakHoursCard-BR5zmta4.js +0 -1
- package/dist/ProductDetailsCard-6nHikw4V.mjs +0 -121
- package/dist/ProductDetailsCard-Bn7qrgmc.js +0 -1
- package/dist/RealtimeCard--APfRNc8.js +0 -1
- package/dist/RealtimeCard-fvQlJcM7.mjs +0 -126
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js +0 -349
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs +0 -3077
- package/dist/SearchTermsCard-BsB-63aH.js +0 -1
- package/dist/SearchTermsCard-BzVrHKqQ.mjs +0 -201
- package/dist/SendPush-COns44j7.js +0 -1
- package/dist/SendPush-CPIOjVX4.mjs +0 -184
- package/dist/SeoHealth-DsbVdd2l.mjs +0 -615
- package/dist/SeoHealth-az1YuNF2.js +0 -1
- package/dist/TableView-Bm6HaRHm.mjs +0 -6143
- package/dist/TableView-DQW0A1oG.js +0 -4
- package/dist/TemplateList.vue_vue_type_script_setup_true_lang-B_AtWnHa.js +0 -1
- package/dist/TemplateList.vue_vue_type_script_setup_true_lang-Cmovy7kk.mjs +0 -40
- package/dist/TopPagesCard-BDeA997A.js +0 -1
- package/dist/TopPagesCard-CTozhOr_.mjs +0 -159
- package/dist/TrafficSourcesCard-BxtCKsqx.mjs +0 -197
- package/dist/TrafficSourcesCard-C3ziDTUL.js +0 -1
- package/dist/View-CsudjxCE.mjs +0 -30
- package/dist/View-Dw_wA6kK.js +0 -1
- package/dist/VisitorStatsCard-BmByE_Hi.js +0 -1
- package/dist/VisitorStatsCard-CXizEbVK.mjs +0 -174
- package/dist/_plugin-vue_export-helper-BHFhmbuH.js +0 -1
- package/dist/_plugin-vue_export-helper-CHgC5LLL.mjs +0 -9
- package/dist/agenda-IOqtALWf.js +0 -1
- package/dist/agenda-neyeLWv-.mjs +0 -1165
- package/dist/array-CbATeQbk.js +0 -1
- package/dist/array-CvmZXzxF.mjs +0 -108
- package/dist/availability-CMrRa5y2.mjs +0 -269
- package/dist/availability-Cf2YfMwM.js +0 -1
- package/dist/booking-data-DgJd0BcM.mjs +0 -889
- package/dist/booking-data-Di5GmH_8.js +0 -1
- package/dist/countries-BTPvmrsb.mjs +0 -4
- package/dist/countries-CgZ081No.js +0 -1
- package/dist/exceptions-CI0B4xVj.js +0 -1
- package/dist/exceptions-vo8SA5SE.mjs +0 -646
- package/dist/google-CvtuJwgk.mjs +0 -4
- package/dist/google-D4N3gb01.js +0 -1
- package/dist/index-4tjmIans.js +0 -1
- package/dist/index-9HVlmvK3.js +0 -1
- package/dist/index-A2kp8Isi.js +0 -75
- package/dist/index-B5aBwdxY.js +0 -54
- package/dist/index-BRdCrvcz.mjs +0 -1443
- package/dist/index-BWDwEd8D.mjs +0 -24
- package/dist/index-BfBBm9uY.mjs +0 -24
- package/dist/index-BiT55eU0.js +0 -58
- package/dist/index-Bkq58CeQ.mjs +0 -22
- package/dist/index-Bvxc5xv_.mjs +0 -3843
- package/dist/index-CJQQBRLY.js +0 -1
- package/dist/index-CQkOH2_3.mjs +0 -24
- package/dist/index-CSxYBeVA.js +0 -1
- package/dist/index-CU-tbS5W.mjs +0 -24
- package/dist/index-CZn2nDLv.mjs +0 -34
- package/dist/index-CkiNvRzs.js +0 -1
- package/dist/index-Co4ON2Di.js +0 -1
- package/dist/index-Cpnn_Pxd.mjs +0 -24
- package/dist/index-CrgzoTyR.mjs +0 -110
- package/dist/index-CsVeM3PA.mjs +0 -24
- package/dist/index-CwqrAU-H.js +0 -1
- package/dist/index-CxETuRsG.js +0 -1
- package/dist/index-Cz-baGax.js +0 -1
- package/dist/index-DFQGVHTs.js +0 -1
- package/dist/index-DPd3waTN.js +0 -1
- package/dist/index-DRqJOqUR.mjs +0 -3484
- package/dist/index-DjWuIBxh.js +0 -1
- package/dist/index-Dnn2SCSl.js +0 -1
- package/dist/index-Dpl9sU6a.mjs +0 -12
- package/dist/index-DrXxXB2F.mjs +0 -138
- package/dist/index-G7cIlnGN.js +0 -158
- package/dist/index-MYWjg0zi.mjs +0 -176
- package/dist/index-R2oUDsjx.js +0 -1
- package/dist/index-RLz1QPrf.mjs +0 -203
- package/dist/index-UtjLbLw-.js +0 -1
- package/dist/index-X6LV64jK.mjs +0 -442
- package/dist/index-cOnxXTbF.mjs +0 -24
- package/dist/index-hlylYYgy.mjs +0 -24
- package/dist/index-ijdf0d9-.js +0 -1
- package/dist/index-uOkqO74I.mjs +0 -2940
- package/dist/index-unsDfNYv.mjs +0 -1187
- package/dist/index-vHmvbEwa.js +0 -35
- package/dist/interpolation-CHn59tIC.js +0 -1
- package/dist/interpolation-w7IRDJwK.mjs +0 -180
- package/dist/orders-C65SlpJy.mjs +0 -618
- package/dist/orders-XVzWAgG1.js +0 -1
- package/dist/payment-C3ohkehF.mjs +0 -1080
- package/dist/payment-Dfr-Ro-a.js +0 -1
- package/dist/regular-1LXNPviB.js +0 -1
- package/dist/regular-_05oq5Tx.mjs +0 -1101
- package/dist/resources-CxeFd57z.js +0 -1
- package/dist/resources-WI_4SO6T.mjs +0 -811
- package/dist/src/appointments/chat-components/AgendaOpeningHoursCard.vue.d.ts +0 -15
- package/dist/src/appointments/chat-components/AppointmentDetailsCard.vue.d.ts +0 -14
- package/dist/src/appointments/chat-components/AppointmentEditor.vue.d.ts +0 -14
- package/dist/src/appointments/chat-components/AppointmentListTable.vue.d.ts +0 -14
- package/dist/src/appointments/components/create/StepNavigation.vue.d.ts +0 -32
- package/dist/src/appointments/components/create/regular/Step1.vue.d.ts +0 -2
- package/dist/src/appointments/components/create/regular/Step2.vue.d.ts +0 -2
- package/dist/src/appointments/components/create/regular/Step3.vue.d.ts +0 -2
- package/dist/src/appointments/components/create/regular/Step4.vue.d.ts +0 -2
- package/dist/src/appointments/components/edit/CustomerInformationFieldEditorDialog.vue.d.ts +0 -24
- package/dist/src/appointments/components/edit/EditLayout.vue.d.ts +0 -17
- package/dist/src/appointments/components/edit/Event24hSidebar.vue.d.ts +0 -2
- package/dist/src/appointments/components/edit/EventDialog/ApproveReservationDialog.vue.d.ts +0 -8
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +0 -136
- package/dist/src/appointments/components/edit/EventDialog/CancelReservationDialog.vue.d.ts +0 -8
- package/dist/src/appointments/components/edit/EventDialog/EventDialog.vue.d.ts +0 -11
- package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +0 -55
- package/dist/src/appointments/components/edit/EventDialog/RejectReservationDialog.vue.d.ts +0 -8
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +0 -87
- package/dist/src/appointments/components/edit/EventDialog/TimelineChart.vue.d.ts +0 -24
- package/dist/src/appointments/components/edit/EventDialog/TransferReservationDialog.vue.d.ts +0 -4
- package/dist/src/appointments/components/edit/EventTimeIndicator.vue.d.ts +0 -12
- package/dist/src/appointments/components/edit/EventTimeline.vue.d.ts +0 -48
- package/dist/src/appointments/components/edit/EventView.vue.d.ts +0 -9
- package/dist/src/appointments/components/edit/ExceptionDialog.vue.d.ts +0 -29
- package/dist/src/appointments/components/edit/MetadataSchemaEditorDialog.vue.d.ts +0 -12
- package/dist/src/appointments/components/edit/NewReservationDialog/CustomerInformation.vue.d.ts +0 -10
- package/dist/src/appointments/components/edit/NewReservationDialog/NewReservationDialog.vue.d.ts +0 -26
- package/dist/src/appointments/components/edit/NewReservationDialog/QuickReservationAdder.vue.d.ts +0 -26
- package/dist/src/appointments/components/edit/NewReservationDialog/ReservationLines.vue.d.ts +0 -31
- package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +0 -21
- package/dist/src/appointments/components/edit/PaymentAddons/Addon.vue.d.ts +0 -22
- package/dist/src/appointments/components/edit/PaymentAddons/AddonList.vue.d.ts +0 -5
- package/dist/src/appointments/components/edit/PaymentAddons/index.vue.d.ts +0 -15
- package/dist/src/appointments/components/edit/ResourceEditorDialog.vue.d.ts +0 -13
- package/dist/src/appointments/components/edit/dashboard/Timeline.vue.d.ts +0 -36
- package/dist/src/appointments/components/edit/dashboard/timeline/ResourceSelector.vue.d.ts +0 -50
- package/dist/src/appointments/index.vue.d.ts +0 -22
- package/dist/src/appointments/pages/Overview.vue.d.ts +0 -4
- package/dist/src/appointments/pages/create/index.vue.d.ts +0 -2
- package/dist/src/appointments/pages/create/regular.vue.d.ts +0 -6
- package/dist/src/appointments/pages/edit/agenda.vue.d.ts +0 -4
- package/dist/src/appointments/pages/edit/availability.vue.d.ts +0 -2
- package/dist/src/appointments/pages/edit/booking-data.vue.d.ts +0 -65
- package/dist/src/appointments/pages/edit/index.vue.d.ts +0 -2
- package/dist/src/appointments/pages/edit/payment.vue.d.ts +0 -2
- package/dist/src/appointments/pages/edit/resources.vue.d.ts +0 -28
- package/dist/src/contentManager/components/components/ComponentDialog.vue.d.ts +0 -12
- package/dist/src/contentManager/components/components/ComponentGridItem.vue.d.ts +0 -16
- package/dist/src/contentManager/components/content-editor/ApiDocs.vue.d.ts +0 -2
- package/dist/src/contentManager/components/content-editor/ContentLayout.vue.d.ts +0 -49
- package/dist/src/contentManager/components/content-editor/ContentSettings.vue.d.ts +0 -24
- package/dist/src/contentManager/components/content-editor/ContentStructuredContentSections.vue.d.ts +0 -4
- package/dist/src/contentManager/components/content-editor/Header.vue.d.ts +0 -64
- package/dist/src/contentManager/components/content-editor/LivePreviewWrapper.vue.d.ts +0 -53
- package/dist/src/contentManager/components/content-editor/Locales.vue.d.ts +0 -44
- package/dist/src/contentManager/components/content-editor/NewSectionDialog.vue.d.ts +0 -21
- package/dist/src/contentManager/components/content-editor/PageSettings.vue.d.ts +0 -2
- package/dist/src/contentManager/components/content-editor/SEO.vue.d.ts +0 -14
- package/dist/src/contentManager/components/content-editor/SidebarSectionWrapper.vue.d.ts +0 -39
- package/dist/src/contentManager/components/content-editor/Status.vue.d.ts +0 -2
- package/dist/src/contentManager/components/content-editor/Versions.vue.d.ts +0 -63
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Button.vue.d.ts +0 -94
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Card.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Column.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Divider.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/EmptySpace.vue.d.ts +0 -94
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Heading.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Image.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Map.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Paragraph.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.vue.d.ts +0 -115
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.vue.d.ts +0 -115
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Video.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/extension-details/DetailsNodeView.vue.d.ts +0 -92
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/NodeLabel.vue.d.ts +0 -108
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/ResizeHandlers.vue.d.ts +0 -20
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/TopMarginDragger.vue.d.ts +0 -104
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuClassBuilder.vue.d.ts +0 -19
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuLinkBuilder.vue.d.ts +0 -19
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuToggleButton.vue.d.ts +0 -29
- package/dist/src/contentManager/components/content-editor/tiptap-menus/DefaultBubbleMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +0 -19
- package/dist/src/contentManager/components/content-editor/tiptap-menus/EmojiMenu.vue.d.ts +0 -8
- package/dist/src/contentManager/components/content-editor/tiptap-menus/NewNodeView.vue.d.ts +0 -47
- package/dist/src/contentManager/components/content-editor/tiptap-menus/SlashMenu.vue.d.ts +0 -6
- package/dist/src/contentManager/components/content-editor/tiptap-menus/SlashMenuButton.vue.d.ts +0 -17
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/ButtonMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/CardMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/ColumnMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/DividerMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/EmptySpaceMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/HeadingMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/ImageMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/MapMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/RowMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/StackMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/TextMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/VideoMenu.vue.d.ts +0 -13
- package/dist/src/contentManager/components/overview/CollectionDialog.vue.d.ts +0 -30
- package/dist/src/contentManager/components/overview/CollectionsGridView.vue.d.ts +0 -18
- package/dist/src/contentManager/components/overview/ContentEntryContextMenu.vue.d.ts +0 -27
- package/dist/src/contentManager/components/overview/FilterPopover.vue.d.ts +0 -2
- package/dist/src/contentManager/components/overview/ListView.vue.d.ts +0 -12
- package/dist/src/contentManager/components/styling/ButtonStyleDialog.vue.d.ts +0 -24
- package/dist/src/contentManager/components/styling/CardStyleDialog.vue.d.ts +0 -24
- package/dist/src/contentManager/components/styling/SectionStyleDialog.vue.d.ts +0 -24
- package/dist/src/contentManager/index.vue.d.ts +0 -22
- package/dist/src/contentManager/pages/Components.vue.d.ts +0 -27
- package/dist/src/contentManager/pages/ContentEditor.vue.d.ts +0 -14
- package/dist/src/contentManager/pages/Entries.vue.d.ts +0 -16
- package/dist/src/contentManager/pages/GlobalStyling.vue.d.ts +0 -117
- package/dist/src/contentManager/pages/Overview.vue.d.ts +0 -57
- package/dist/src/custom/index.vue.d.ts +0 -2
- package/dist/src/custom/pages/View.vue.d.ts +0 -2
- package/dist/src/googleAnalytics/chat-components/CountryBreakdownCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/chat-components/DeviceBreakdownCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/chat-components/PeakHoursCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/chat-components/RealtimeCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/chat-components/SearchTermsCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/chat-components/TopPagesCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/chat-components/TrafficSourcesCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/chat-components/VisitorStatsCard.vue.d.ts +0 -14
- package/dist/src/googleAnalytics/components/seo-health/SeoClicksChart.vue.d.ts +0 -5
- package/dist/src/googleAnalytics/components/seo-health/SeoImpressionsChart.vue.d.ts +0 -5
- package/dist/src/googleAnalytics/components/seo-health/SeoKeywordsTab.vue.d.ts +0 -5
- package/dist/src/googleAnalytics/components/seo-health/SeoKpiCards.vue.d.ts +0 -10
- package/dist/src/googleAnalytics/components/seo-health/SeoMappingTab.vue.d.ts +0 -5
- package/dist/src/googleAnalytics/components/seo-health/SeoPagesTab.vue.d.ts +0 -5
- package/dist/src/googleAnalytics/components/seo-health/SeoRankingDistribution.vue.d.ts +0 -5
- package/dist/src/googleAnalytics/index.vue.d.ts +0 -2
- package/dist/src/googleAnalytics/pages/Acquisition.vue.d.ts +0 -2
- package/dist/src/googleAnalytics/pages/Audience.vue.d.ts +0 -2
- package/dist/src/googleAnalytics/pages/Content.vue.d.ts +0 -2
- package/dist/src/googleAnalytics/pages/Overview.vue.d.ts +0 -2
- package/dist/src/googleAnalytics/pages/SeoHealth.vue.d.ts +0 -2
- package/dist/src/mailTemplates/components/TemplateList.vue.d.ts +0 -2
- package/dist/src/mailTemplates/index.vue.d.ts +0 -22
- package/dist/src/mailTemplates/pages/Detail.vue.d.ts +0 -14
- package/dist/src/mailTemplates/pages/Overview.vue.d.ts +0 -14
- package/dist/src/productCollections/components/detail/Main.vue.d.ts +0 -2
- package/dist/src/productCollections/components/detail/SEO.vue.d.ts +0 -2
- package/dist/src/productCollections/components/detail/Status.vue.d.ts +0 -2
- package/dist/src/productCollections/components/overview/ListView.vue.d.ts +0 -12
- package/dist/src/productCollections/index.vue.d.ts +0 -22
- package/dist/src/productCollections/pages/Detail.vue.d.ts +0 -14
- package/dist/src/productCollections/pages/Overview.vue.d.ts +0 -16
- package/dist/src/products/chat-components/ProductDetailsCard.vue.d.ts +0 -14
- package/dist/src/products/components/detail/Collections.vue.d.ts +0 -14
- package/dist/src/products/components/detail/Inventory.vue.d.ts +0 -2
- package/dist/src/products/components/detail/Main.vue.d.ts +0 -2
- package/dist/src/products/components/detail/NewSection.vue.d.ts +0 -2
- package/dist/src/products/components/detail/Price.vue.d.ts +0 -2
- package/dist/src/products/components/detail/SEO.vue.d.ts +0 -2
- package/dist/src/products/components/detail/Shipping.vue.d.ts +0 -2
- package/dist/src/products/components/detail/Status.vue.d.ts +0 -2
- package/dist/src/products/components/detail/price/UnitPriceDialog.vue.d.ts +0 -17
- package/dist/src/products/components/detail/variants/Option.vue.d.ts +0 -33
- package/dist/src/products/components/detail/variants/VariantList.vue.d.ts +0 -38
- package/dist/src/products/components/overview/FilterPopover.vue.d.ts +0 -2
- package/dist/src/products/components/overview/GridView.vue.d.ts +0 -12
- package/dist/src/products/components/overview/ListView.vue.d.ts +0 -12
- package/dist/src/products/components/overview/ProductContextMenu.vue.d.ts +0 -27
- package/dist/src/products/index.vue.d.ts +0 -22
- package/dist/src/products/pages/Detail.vue.d.ts +0 -14
- package/dist/src/products/pages/Overview.vue.d.ts +0 -16
- package/dist/src/promoCodes/components/create/DateRange.vue.d.ts +0 -2
- package/dist/src/promoCodes/components/create/MultiCodes.vue.d.ts +0 -2
- package/dist/src/promoCodes/components/create/Note.vue.d.ts +0 -2
- package/dist/src/promoCodes/components/create/SingleCode.vue.d.ts +0 -2
- package/dist/src/promoCodes/components/create/TypeAndValue/TypeDetailDialog.vue.d.ts +0 -6
- package/dist/src/promoCodes/components/create/TypeAndValue/TypeManageDialog.vue.d.ts +0 -18
- package/dist/src/promoCodes/components/create/TypeAndValue/index.vue.d.ts +0 -2
- package/dist/src/promoCodes/index.vue.d.ts +0 -22
- package/dist/src/promoCodes/pages/Create.vue.d.ts +0 -16
- package/dist/src/promoCodes/pages/Detail.vue.d.ts +0 -14
- package/dist/src/promoCodes/pages/Find.vue.d.ts +0 -16
- package/dist/src/push-notifications/components/PreviewAndroid.vue.d.ts +0 -28
- package/dist/src/push-notifications/components/PreviewIPhone.vue.d.ts +0 -28
- package/dist/src/push-notifications/components/PushPreview.vue.d.ts +0 -28
- package/dist/src/push-notifications/index.vue.d.ts +0 -22
- package/dist/src/push-notifications/pages/SendPush.vue.d.ts +0 -14
- package/dist/src/shared/BrandLogo.vue.d.ts +0 -12
- package/dist/src/shared/DrawerToggle.vue.d.ts +0 -60
- package/dist/src/shared/VerticalToggle.vue.d.ts +0 -60
- package/dist/src/shippingOptions/components/detail/Condition.vue.d.ts +0 -2
- package/dist/src/shippingOptions/components/detail/Countries.vue.d.ts +0 -2
- package/dist/src/shippingOptions/components/detail/Example.vue.d.ts +0 -2
- package/dist/src/shippingOptions/components/detail/Main.vue.d.ts +0 -2
- package/dist/src/shippingOptions/components/overview/ListView.vue.d.ts +0 -12
- package/dist/src/shippingOptions/index.vue.d.ts +0 -22
- package/dist/src/shippingOptions/pages/Detail.vue.d.ts +0 -14
- package/dist/src/shippingOptions/pages/Overview.vue.d.ts +0 -16
- package/dist/src/table/components/DataTable.vue.d.ts +0 -18
- package/dist/src/table/components/DataTableAction.vue.d.ts +0 -14
- package/dist/src/table/components/DataTableMobileRowActionDrawer.vue.d.ts +0 -4
- package/dist/src/table/components/DataTablePagination.vue.d.ts +0 -6
- package/dist/src/table/components/actions/ActionDialog.vue.d.ts +0 -19
- package/dist/src/table/components/actions/CtaActionDialog.vue.d.ts +0 -4
- package/dist/src/table/components/columns/ColumnDropdown.vue.d.ts +0 -2
- package/dist/src/table/components/columns/ColumnEditorDialog.vue.d.ts +0 -34
- package/dist/src/table/components/columns/DialogTableColumnItem.vue.d.ts +0 -12
- package/dist/src/table/components/date-range-filter/DateRangeFilter.vue.d.ts +0 -2
- package/dist/src/table/components/date-range-filter/DateRangeSettingsDialog.vue.d.ts +0 -27
- package/dist/src/table/components/filters/FilterDialog.vue.d.ts +0 -12
- package/dist/src/table/components/filters/Filters.vue.d.ts +0 -27
- package/dist/src/table/components/search/Search.vue.d.ts +0 -2
- package/dist/src/table/components/sort/SortMode.vue.d.ts +0 -2
- package/dist/src/table/components/sort/SortModeSettingsDialog.vue.d.ts +0 -18
- package/dist/src/table/components/stats/StatDialog.vue.d.ts +0 -12
- package/dist/src/table/components/stats/Stats.vue.d.ts +0 -27
- package/dist/src/table/flow-builder-extensions/TableRowEditor.vue.d.ts +0 -16
- package/dist/src/table/index.vue.d.ts +0 -22
- package/dist/src/table/pages/TableView.vue.d.ts +0 -54
- package/dist/utils-CanmrIWO.mjs +0 -47
- package/dist/utils-Yd6F5mea.js +0 -3
- package/dist/vee-validate-zod-ByykgYKJ.js +0 -1
- package/dist/vee-validate-zod-CcOwoF6y.mjs +0 -4402
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
import { i as e, n as t, r as n, t as r } from "./xy-container-CuQSwrtB.mjs";
|
|
2
|
+
import { n as i, t as a } from "./line-tYLnEDGV.mjs";
|
|
3
|
+
import { useModule as ee, useModuleBreadcrumbs as o, useModuleRoute as s } from "@oneclick.dev/cms-kit";
|
|
4
|
+
import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as te, normalizeClass as g, normalizeStyle as _, onMounted as v, openBlock as y, ref as b, renderList as x, resolveComponent as S, resolveDynamicComponent as C, toDisplayString as w, unref as T, watch as E, withCtx as D } from "vue";
|
|
5
|
+
import { Activity as O, ArrowUpRight as ne, Clock as k, Eye as re, Globe as ie, Loader2 as ae, Minus as oe, Monitor as se, MousePointerClick as ce, RefreshCw as le, Smartphone as ue, Tablet as de, TrendingDown as A, TrendingUp as j, UserPlus as fe, Users as pe, Zap as me } from "@lucide/vue";
|
|
6
|
+
import { ChartTooltipContent as M, componentToString as N } from "@oneclick.dev/cms-kit/charts";
|
|
7
|
+
//#region src/googleAnalytics/pages/Overview.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
+
var he = { class: "flex flex-col gap-4 w-full max-w-7xl mx-auto py-8" }, ge = { class: "flex justify-between gap-4 flex-col @lg:flex-row @lg:items-center" }, _e = { class: "text-muted-foreground text-sm mt-1" }, ve = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "flex items-center gap-2"
|
|
11
|
+
}, ye = { class: "flex items-center border rounded-lg overflow-hidden" }, be = ["onClick"], xe = { class: "text-sm text-destructive font-medium" }, Se = {
|
|
12
|
+
key: 2,
|
|
13
|
+
class: "flex items-center justify-center py-20"
|
|
14
|
+
}, Ce = { class: "flex items-start justify-between" }, we = { class: "flex items-center gap-2" }, Te = { class: "text-sm font-medium" }, Ee = { class: "grid grid-cols-2 @md:grid-cols-3 @xl:grid-cols-4 gap-4" }, De = { class: "flex items-center gap-1.5 text-muted-foreground mb-2" }, Oe = { class: "text-xs font-medium uppercase tracking-wide" }, ke = { class: "text-2xl font-semibold tabular-nums" }, Ae = {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "flex items-center gap-1 mt-1"
|
|
17
|
+
}, je = { class: "flex flex-col @xl:grid @xl:grid-cols-2 gap-4 max-w-full" }, Me = { class: "flex flex-col @lg:grid @lg:grid-cols-2 gap-4" }, Ne = { class: "divide-y" }, Pe = { class: "flex items-center gap-3 min-w-0" }, Fe = { class: "text-muted-foreground w-5 text-right shrink-0" }, Ie = { class: "truncate font-mono text-xs" }, Le = { class: "flex items-center gap-4 shrink-0 tabular-nums" }, Re = { class: "text-muted-foreground text-xs w-16 text-right" }, ze = { class: "text-muted-foreground text-xs w-16 text-right" }, Be = {
|
|
18
|
+
key: 0,
|
|
19
|
+
class: "px-6 py-8 text-center text-muted-foreground text-sm"
|
|
20
|
+
}, Ve = { class: "divide-y" }, He = { class: "flex items-center gap-3 min-w-0" }, Ue = { class: "text-muted-foreground w-5 text-right shrink-0" }, We = { class: "truncate" }, Ge = { class: "flex items-center gap-4 shrink-0 tabular-nums" }, Ke = { class: "text-muted-foreground text-xs w-20 text-right" }, qe = {
|
|
21
|
+
key: 0,
|
|
22
|
+
class: "px-6 py-8 text-center text-muted-foreground text-sm"
|
|
23
|
+
}, Je = { class: "grid @lg:grid-cols-2 gap-4" }, Ye = { class: "space-y-3" }, Xe = { class: "text-sm capitalize flex-1" }, Ze = { class: "flex-1 h-2 bg-muted rounded-full overflow-hidden" }, Qe = { class: "text-xs tabular-nums text-muted-foreground w-16 text-right" }, $e = {
|
|
24
|
+
key: 0,
|
|
25
|
+
class: "py-4 text-center text-muted-foreground text-sm"
|
|
26
|
+
}, et = { class: "space-y-3" }, tt = { class: "text-sm flex-1" }, nt = { class: "flex-1 h-2 bg-muted rounded-full overflow-hidden" }, rt = { class: "text-xs tabular-nums text-muted-foreground w-16 text-right" }, it = {
|
|
27
|
+
key: 0,
|
|
28
|
+
class: "py-4 text-center text-muted-foreground text-sm"
|
|
29
|
+
}, P = /* @__PURE__ */ te({
|
|
30
|
+
__name: "Overview",
|
|
31
|
+
setup(te) {
|
|
32
|
+
let { config: P } = ee(), { moduleId: at } = s();
|
|
33
|
+
o(() => [{ label: "Overview" }]);
|
|
34
|
+
let F = b(!0), I = b(null), L = b("30"), R = b([]), z = b({}), ot = b({}), B = b({}), st = b(0), V = b([]), H = b([]), U = b([]), W = b([]), G = l(() => !!(P.serviceAccount && P.propertyId));
|
|
35
|
+
function K(e) {
|
|
36
|
+
return `/api/v1/modules/${at}${e}`;
|
|
37
|
+
}
|
|
38
|
+
let ct = [
|
|
39
|
+
{
|
|
40
|
+
label: "7 days",
|
|
41
|
+
value: "7"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
label: "14 days",
|
|
45
|
+
value: "14"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
label: "30 days",
|
|
49
|
+
value: "30"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: "90 days",
|
|
53
|
+
value: "90"
|
|
54
|
+
}
|
|
55
|
+
], q = {
|
|
56
|
+
sessions: "#3b82f6",
|
|
57
|
+
users: "#8b5cf6",
|
|
58
|
+
pageViews: "#10b981"
|
|
59
|
+
}, J = {
|
|
60
|
+
sessions: {
|
|
61
|
+
label: "Sessions",
|
|
62
|
+
color: q.sessions
|
|
63
|
+
},
|
|
64
|
+
totalUsers: {
|
|
65
|
+
label: "Users",
|
|
66
|
+
color: q.users
|
|
67
|
+
}
|
|
68
|
+
}, Y = { screenPageViews: {
|
|
69
|
+
label: "Page Views",
|
|
70
|
+
color: q.pageViews
|
|
71
|
+
} }, X = (e, t) => t, lt = (e) => e.sessions || 0, ut = (e) => e.totalUsers || 0, dt = (e) => e.screenPageViews || 0, ft = (e) => {
|
|
72
|
+
let t = R.value[Math.round(e)];
|
|
73
|
+
if (!t) return "";
|
|
74
|
+
let n = new Date(t.date);
|
|
75
|
+
return `${n.getDate()}/${n.getMonth() + 1}`;
|
|
76
|
+
}, pt = (e) => {
|
|
77
|
+
let t = R.value[Math.round(Number(e))];
|
|
78
|
+
return t ? new Date(t.date).toLocaleDateString(void 0, {
|
|
79
|
+
weekday: "short",
|
|
80
|
+
month: "short",
|
|
81
|
+
day: "numeric"
|
|
82
|
+
}) : "";
|
|
83
|
+
}, mt = l(() => [
|
|
84
|
+
{
|
|
85
|
+
label: "Sessions",
|
|
86
|
+
value: Z(z.value.sessions || 0),
|
|
87
|
+
icon: ce,
|
|
88
|
+
change: B.value.sessions
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
label: "Users",
|
|
92
|
+
value: Z(z.value.totalUsers || 0),
|
|
93
|
+
icon: pe,
|
|
94
|
+
change: B.value.totalUsers
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
label: "Page Views",
|
|
98
|
+
value: Z(z.value.screenPageViews || 0),
|
|
99
|
+
icon: re,
|
|
100
|
+
change: B.value.screenPageViews
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
label: "Avg. Duration",
|
|
104
|
+
value: ht(z.value.averageSessionDuration || 0),
|
|
105
|
+
icon: k,
|
|
106
|
+
change: B.value.averageSessionDuration
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
label: "Engagement",
|
|
110
|
+
value: `${((z.value.engagementRate || 0) * 100).toFixed(1)}%`,
|
|
111
|
+
icon: me,
|
|
112
|
+
change: B.value.engagementRate,
|
|
113
|
+
positive: !0
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
label: "Bounce Rate",
|
|
117
|
+
value: `${((z.value.bounceRate || 0) * 100).toFixed(1)}%`,
|
|
118
|
+
icon: (z.value.bounceRate || 0) > .5 ? A : j,
|
|
119
|
+
change: B.value.bounceRate,
|
|
120
|
+
positive: !1
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
label: "New Users",
|
|
124
|
+
value: Z(z.value.newUsers || 0),
|
|
125
|
+
icon: fe,
|
|
126
|
+
change: B.value.newUsers
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
label: "Pages / Session",
|
|
130
|
+
value: (z.value.screenPageViewsPerSession || 0).toFixed(1),
|
|
131
|
+
icon: O,
|
|
132
|
+
change: B.value.screenPageViewsPerSession
|
|
133
|
+
}
|
|
134
|
+
]);
|
|
135
|
+
function Z(e) {
|
|
136
|
+
return e >= 1e6 ? `${(e / 1e6).toFixed(1)}M` : e >= 1e3 ? `${(e / 1e3).toFixed(1)}K` : Math.round(e).toString();
|
|
137
|
+
}
|
|
138
|
+
function ht(e) {
|
|
139
|
+
let t = Math.floor(e / 60), n = Math.round(e % 60);
|
|
140
|
+
return t > 0 ? `${t}m ${n}s` : `${n}s`;
|
|
141
|
+
}
|
|
142
|
+
function Q(e, t = !0) {
|
|
143
|
+
if (e == null) return {
|
|
144
|
+
text: "—",
|
|
145
|
+
cls: "text-muted-foreground",
|
|
146
|
+
icon: oe
|
|
147
|
+
};
|
|
148
|
+
let n = `${Math.abs(e).toFixed(1)}%`, r = e > 0;
|
|
149
|
+
return {
|
|
150
|
+
text: n,
|
|
151
|
+
cls: (t ? r : !r) ? "text-emerald-600 dark:text-emerald-400" : "text-red-500 dark:text-red-400",
|
|
152
|
+
icon: r ? j : A
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function gt(e) {
|
|
156
|
+
let t = e.toLowerCase();
|
|
157
|
+
return t === "mobile" ? ue : t === "tablet" ? de : se;
|
|
158
|
+
}
|
|
159
|
+
async function $() {
|
|
160
|
+
if (!G.value) return;
|
|
161
|
+
F.value = !0, I.value = null;
|
|
162
|
+
let e = `${L.value}daysAgo`;
|
|
163
|
+
try {
|
|
164
|
+
let [t, n, r, i, a, ee] = await Promise.all([
|
|
165
|
+
$fetch(K(`/report?startDate=${e}&endDate=today`)),
|
|
166
|
+
$fetch(K("/realtime")).catch(() => ({ activeUsers: 0 })),
|
|
167
|
+
$fetch(K(`/top-pages?startDate=${e}&endDate=today&limit=10`)),
|
|
168
|
+
$fetch(K(`/top-sources?startDate=${e}&endDate=today`)),
|
|
169
|
+
$fetch(K(`/devices?startDate=${e}&endDate=today`)),
|
|
170
|
+
$fetch(K(`/countries?startDate=${e}&endDate=today`))
|
|
171
|
+
]);
|
|
172
|
+
R.value = t.rows || [], z.value = t.totals || {}, ot.value = t.previousTotals || {}, B.value = t.changes || {}, st.value = n.activeUsers || 0, V.value = r.rows || [], H.value = i.rows || [], U.value = a.rows || [], W.value = ee.rows || [];
|
|
173
|
+
} catch (e) {
|
|
174
|
+
console.error("Failed to fetch analytics data:", e), I.value = e?.data?.statusMessage || e?.message || "Failed to load analytics data";
|
|
175
|
+
} finally {
|
|
176
|
+
F.value = !1;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return E(L, () => $()), v(() => {
|
|
180
|
+
G.value ? $() : F.value = !1;
|
|
181
|
+
}), (ee, o) => {
|
|
182
|
+
let s = S("Button"), l = S("Card"), te = S("Badge"), v = S("CardTitle"), b = S("CardHeader"), E = S("ChartLegendContent"), O = S("ChartContainer"), k = S("CardContent");
|
|
183
|
+
return y(), f("div", he, [p("div", ge, [p("div", null, [o[0] ||= p("h1", { class: "text-2xl font-semibold" }, "Analytics Overview", -1), p("p", _e, "Property " + w(T(P).propertyId || "—"), 1)]), G.value ? (y(), f("div", ve, [p("div", ye, [(y(), f(c, null, x(ct, (e) => p("button", {
|
|
184
|
+
key: e.value,
|
|
185
|
+
class: g(["px-3 py-1.5 text-xs font-medium transition-colors", L.value === e.value ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground hover:bg-muted"]),
|
|
186
|
+
onClick: (t) => L.value = e.value
|
|
187
|
+
}, w(e.label), 11, be)), 64))]), h(s, {
|
|
188
|
+
variant: "outline",
|
|
189
|
+
size: "icon",
|
|
190
|
+
onClick: $,
|
|
191
|
+
disabled: F.value
|
|
192
|
+
}, {
|
|
193
|
+
default: D(() => [h(T(le), { class: g(["size-4", { "animate-spin": F.value }]) }, null, 8, ["class"])]),
|
|
194
|
+
_: 1
|
|
195
|
+
}, 8, ["disabled"])])) : d("", !0)]), G.value ? I.value ? (y(), u(l, {
|
|
196
|
+
key: 1,
|
|
197
|
+
class: "p-6 border-destructive/50 bg-destructive/5"
|
|
198
|
+
}, {
|
|
199
|
+
default: D(() => [p("p", xe, w(I.value), 1), h(s, {
|
|
200
|
+
variant: "outline",
|
|
201
|
+
size: "sm",
|
|
202
|
+
class: "mt-3",
|
|
203
|
+
onClick: $
|
|
204
|
+
}, {
|
|
205
|
+
default: D(() => [...o[2] ||= [m("Retry", -1)]]),
|
|
206
|
+
_: 1
|
|
207
|
+
})]),
|
|
208
|
+
_: 1
|
|
209
|
+
})) : F.value ? (y(), f("div", Se, [h(T(ae), { class: "size-8 animate-spin text-muted-foreground" })])) : (y(), f(c, { key: 3 }, [
|
|
210
|
+
h(l, { class: "p-4" }, {
|
|
211
|
+
default: D(() => [p("div", Ce, [p("div", we, [
|
|
212
|
+
o[3] ||= p("span", { class: "relative flex h-2.5 w-2.5" }, [p("span", { class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75" }), p("span", { class: "relative inline-flex rounded-full h-2.5 w-2.5 bg-green-500" })], -1),
|
|
213
|
+
p("span", Te, w(st.value) + " visitors", 1),
|
|
214
|
+
o[4] ||= p("span", { class: "text-xs text-muted-foreground translate-y-0.25" }, "in the last 30 minutes", -1)
|
|
215
|
+
]), h(te, {
|
|
216
|
+
variant: "outline",
|
|
217
|
+
class: "text-xs"
|
|
218
|
+
}, {
|
|
219
|
+
default: D(() => [...o[5] ||= [m("Live", -1)]]),
|
|
220
|
+
_: 1
|
|
221
|
+
})])]),
|
|
222
|
+
_: 1
|
|
223
|
+
}),
|
|
224
|
+
p("div", Ee, [(y(!0), f(c, null, x(mt.value, (e) => (y(), u(l, {
|
|
225
|
+
key: e.label,
|
|
226
|
+
class: "p-4"
|
|
227
|
+
}, {
|
|
228
|
+
default: D(() => [
|
|
229
|
+
p("div", De, [(y(), u(C(e.icon), { class: "size-3.5" })), p("span", Oe, w(e.label), 1)]),
|
|
230
|
+
p("p", ke, w(e.value), 1),
|
|
231
|
+
e.change === void 0 ? d("", !0) : (y(), f("div", Ae, [
|
|
232
|
+
(y(), u(C(Q(e.change, e.positive !== !1).icon), { class: g(["size-3", Q(e.change, e.positive !== !1).cls]) }, null, 8, ["class"])),
|
|
233
|
+
p("span", { class: g(["text-xs font-medium", Q(e.change, e.positive !== !1).cls]) }, w(Q(e.change, e.positive !== !1).text), 3),
|
|
234
|
+
o[6] ||= p("span", { class: "text-xs text-muted-foreground" }, "vs prev.", -1)
|
|
235
|
+
]))
|
|
236
|
+
]),
|
|
237
|
+
_: 2
|
|
238
|
+
}, 1024))), 128))]),
|
|
239
|
+
p("div", je, [h(l, null, {
|
|
240
|
+
default: D(() => [h(b, { class: "pb-2" }, {
|
|
241
|
+
default: D(() => [h(v, { class: "text-base" }, {
|
|
242
|
+
default: D(() => [...o[7] ||= [m("Sessions & Users", -1)]]),
|
|
243
|
+
_: 1
|
|
244
|
+
})]),
|
|
245
|
+
_: 1
|
|
246
|
+
}), h(k, null, {
|
|
247
|
+
default: D(() => [h(O, {
|
|
248
|
+
config: J,
|
|
249
|
+
class: "h-[240px] w-full"
|
|
250
|
+
}, {
|
|
251
|
+
default: D(() => [h(T(r), {
|
|
252
|
+
data: R.value,
|
|
253
|
+
margin: {
|
|
254
|
+
top: 8,
|
|
255
|
+
right: 8,
|
|
256
|
+
bottom: 24,
|
|
257
|
+
left: 40
|
|
258
|
+
}
|
|
259
|
+
}, {
|
|
260
|
+
default: D(() => [
|
|
261
|
+
h(T(i), {
|
|
262
|
+
x: X,
|
|
263
|
+
y: lt,
|
|
264
|
+
color: q.sessions,
|
|
265
|
+
opacity: .1,
|
|
266
|
+
curveType: "monotoneX"
|
|
267
|
+
}, null, 8, ["color"]),
|
|
268
|
+
h(T(a), {
|
|
269
|
+
x: X,
|
|
270
|
+
y: lt,
|
|
271
|
+
color: q.sessions,
|
|
272
|
+
lineWidth: 2,
|
|
273
|
+
curveType: "monotoneX"
|
|
274
|
+
}, null, 8, ["color"]),
|
|
275
|
+
h(T(a), {
|
|
276
|
+
x: X,
|
|
277
|
+
y: ut,
|
|
278
|
+
color: q.users,
|
|
279
|
+
lineWidth: 2,
|
|
280
|
+
curveType: "monotoneX"
|
|
281
|
+
}, null, 8, ["color"]),
|
|
282
|
+
h(T(e), {
|
|
283
|
+
type: "x",
|
|
284
|
+
tickFormat: ft,
|
|
285
|
+
numTicks: 6
|
|
286
|
+
}),
|
|
287
|
+
h(T(e), {
|
|
288
|
+
type: "y",
|
|
289
|
+
numTicks: 4
|
|
290
|
+
}),
|
|
291
|
+
h(T(n), { template: T(N)(J, T(M), { labelFormatter: pt }) }, null, 8, ["template"]),
|
|
292
|
+
h(T(t))
|
|
293
|
+
]),
|
|
294
|
+
_: 1
|
|
295
|
+
}, 8, ["data"]), h(E, { config: J })]),
|
|
296
|
+
_: 1
|
|
297
|
+
})]),
|
|
298
|
+
_: 1
|
|
299
|
+
})]),
|
|
300
|
+
_: 1
|
|
301
|
+
}), h(l, null, {
|
|
302
|
+
default: D(() => [h(b, { class: "pb-2" }, {
|
|
303
|
+
default: D(() => [h(v, { class: "text-base" }, {
|
|
304
|
+
default: D(() => [...o[8] ||= [m("Page Views", -1)]]),
|
|
305
|
+
_: 1
|
|
306
|
+
})]),
|
|
307
|
+
_: 1
|
|
308
|
+
}), h(k, null, {
|
|
309
|
+
default: D(() => [h(O, {
|
|
310
|
+
config: Y,
|
|
311
|
+
class: "h-[240px] w-full"
|
|
312
|
+
}, {
|
|
313
|
+
default: D(() => [h(T(r), {
|
|
314
|
+
data: R.value,
|
|
315
|
+
margin: {
|
|
316
|
+
top: 8,
|
|
317
|
+
right: 8,
|
|
318
|
+
bottom: 24,
|
|
319
|
+
left: 40
|
|
320
|
+
}
|
|
321
|
+
}, {
|
|
322
|
+
default: D(() => [
|
|
323
|
+
h(T(i), {
|
|
324
|
+
x: X,
|
|
325
|
+
y: dt,
|
|
326
|
+
color: q.pageViews,
|
|
327
|
+
opacity: .15,
|
|
328
|
+
curveType: "monotoneX"
|
|
329
|
+
}, null, 8, ["color"]),
|
|
330
|
+
h(T(a), {
|
|
331
|
+
x: X,
|
|
332
|
+
y: dt,
|
|
333
|
+
color: q.pageViews,
|
|
334
|
+
lineWidth: 2,
|
|
335
|
+
curveType: "monotoneX"
|
|
336
|
+
}, null, 8, ["color"]),
|
|
337
|
+
h(T(e), {
|
|
338
|
+
type: "x",
|
|
339
|
+
tickFormat: ft,
|
|
340
|
+
numTicks: 6
|
|
341
|
+
}),
|
|
342
|
+
h(T(e), {
|
|
343
|
+
type: "y",
|
|
344
|
+
numTicks: 4
|
|
345
|
+
}),
|
|
346
|
+
h(T(n), { template: T(N)(Y, T(M), { labelFormatter: pt }) }, null, 8, ["template"]),
|
|
347
|
+
h(T(t))
|
|
348
|
+
]),
|
|
349
|
+
_: 1
|
|
350
|
+
}, 8, ["data"]), h(E, { config: Y })]),
|
|
351
|
+
_: 1
|
|
352
|
+
})]),
|
|
353
|
+
_: 1
|
|
354
|
+
})]),
|
|
355
|
+
_: 1
|
|
356
|
+
})]),
|
|
357
|
+
p("div", Me, [h(l, null, {
|
|
358
|
+
default: D(() => [h(b, { class: "pb-2" }, {
|
|
359
|
+
default: D(() => [h(v, { class: "text-base" }, {
|
|
360
|
+
default: D(() => [...o[9] ||= [m("Top Pages", -1)]]),
|
|
361
|
+
_: 1
|
|
362
|
+
})]),
|
|
363
|
+
_: 1
|
|
364
|
+
}), h(k, { class: "p-0" }, {
|
|
365
|
+
default: D(() => [p("div", Ne, [(y(!0), f(c, null, x(V.value, (e, t) => (y(), f("div", {
|
|
366
|
+
key: e.pagePath,
|
|
367
|
+
class: "flex items-center justify-between px-6 py-3 text-sm"
|
|
368
|
+
}, [p("div", Pe, [p("span", Fe, w(t + 1), 1), p("span", Ie, w(e.pagePath), 1)]), p("div", Le, [p("span", Re, w(Z(e.screenPageViews)) + " views", 1), p("span", ze, w(Z(e.totalUsers)) + " users", 1)])]))), 128)), V.value.length ? d("", !0) : (y(), f("div", Be, "No data available"))])]),
|
|
369
|
+
_: 1
|
|
370
|
+
})]),
|
|
371
|
+
_: 1
|
|
372
|
+
}), h(l, null, {
|
|
373
|
+
default: D(() => [h(b, { class: "pb-2" }, {
|
|
374
|
+
default: D(() => [h(v, { class: "text-base" }, {
|
|
375
|
+
default: D(() => [...o[10] ||= [m("Traffic Sources", -1)]]),
|
|
376
|
+
_: 1
|
|
377
|
+
})]),
|
|
378
|
+
_: 1
|
|
379
|
+
}), h(k, { class: "p-0" }, {
|
|
380
|
+
default: D(() => [p("div", Ve, [(y(!0), f(c, null, x(H.value, (e, t) => (y(), f("div", {
|
|
381
|
+
key: e.sessionSource,
|
|
382
|
+
class: "flex items-center justify-between px-6 py-3 text-sm"
|
|
383
|
+
}, [p("div", He, [
|
|
384
|
+
p("span", Ue, w(t + 1), 1),
|
|
385
|
+
h(T(ne), { class: "size-3.5 text-muted-foreground shrink-0" }),
|
|
386
|
+
p("span", We, w(e.sessionSource || "(direct)"), 1)
|
|
387
|
+
]), p("div", Ge, [p("span", Ke, w(Z(e.sessions)) + " sessions", 1)])]))), 128)), H.value.length ? d("", !0) : (y(), f("div", qe, "No data available"))])]),
|
|
388
|
+
_: 1
|
|
389
|
+
})]),
|
|
390
|
+
_: 1
|
|
391
|
+
})]),
|
|
392
|
+
p("div", Je, [h(l, null, {
|
|
393
|
+
default: D(() => [h(b, { class: "pb-2" }, {
|
|
394
|
+
default: D(() => [h(v, { class: "text-base" }, {
|
|
395
|
+
default: D(() => [...o[11] ||= [m("Devices", -1)]]),
|
|
396
|
+
_: 1
|
|
397
|
+
})]),
|
|
398
|
+
_: 1
|
|
399
|
+
}), h(k, null, {
|
|
400
|
+
default: D(() => [p("div", Ye, [(y(!0), f(c, null, x(U.value, (e) => (y(), f("div", {
|
|
401
|
+
key: e.deviceCategory,
|
|
402
|
+
class: "flex items-center gap-3"
|
|
403
|
+
}, [
|
|
404
|
+
(y(), u(C(gt(e.deviceCategory)), { class: "size-4 text-muted-foreground shrink-0" })),
|
|
405
|
+
p("span", Xe, w(e.deviceCategory), 1),
|
|
406
|
+
p("div", Ze, [p("div", {
|
|
407
|
+
class: "h-full bg-primary rounded-full transition-all",
|
|
408
|
+
style: _({ width: `${e.sessions / (U.value[0]?.sessions || 1) * 100}%` })
|
|
409
|
+
}, null, 4)]),
|
|
410
|
+
p("span", Qe, w(Z(e.sessions)), 1)
|
|
411
|
+
]))), 128)), U.value.length ? d("", !0) : (y(), f("div", $e, "No data available"))])]),
|
|
412
|
+
_: 1
|
|
413
|
+
})]),
|
|
414
|
+
_: 1
|
|
415
|
+
}), h(l, null, {
|
|
416
|
+
default: D(() => [h(b, { class: "pb-2" }, {
|
|
417
|
+
default: D(() => [h(v, { class: "text-base" }, {
|
|
418
|
+
default: D(() => [...o[12] ||= [m("Top Countries", -1)]]),
|
|
419
|
+
_: 1
|
|
420
|
+
})]),
|
|
421
|
+
_: 1
|
|
422
|
+
}), h(k, null, {
|
|
423
|
+
default: D(() => [p("div", et, [(y(!0), f(c, null, x(W.value, (e) => (y(), f("div", {
|
|
424
|
+
key: e.country,
|
|
425
|
+
class: "flex items-center gap-3"
|
|
426
|
+
}, [
|
|
427
|
+
h(T(ie), { class: "size-4 text-muted-foreground shrink-0" }),
|
|
428
|
+
p("span", tt, w(e.country), 1),
|
|
429
|
+
p("div", nt, [p("div", {
|
|
430
|
+
class: "h-full bg-primary rounded-full transition-all",
|
|
431
|
+
style: _({ width: `${e.sessions / (W.value[0]?.sessions || 1) * 100}%` })
|
|
432
|
+
}, null, 4)]),
|
|
433
|
+
p("span", rt, w(Z(e.sessions)), 1)
|
|
434
|
+
]))), 128)), W.value.length ? d("", !0) : (y(), f("div", it, "No data available"))])]),
|
|
435
|
+
_: 1
|
|
436
|
+
})]),
|
|
437
|
+
_: 1
|
|
438
|
+
})])
|
|
439
|
+
], 64)) : (y(), u(l, {
|
|
440
|
+
key: 0,
|
|
441
|
+
class: "p-8 text-center"
|
|
442
|
+
}, {
|
|
443
|
+
default: D(() => [...o[1] ||= [p("div", { class: "mx-auto max-w-md space-y-3" }, [p("p", { class: "text-lg font-medium" }, "Setup required"), p("p", { class: "text-sm text-muted-foreground" }, "Connect a Google Service Account and enter your GA4 Property ID in the module settings to start seeing analytics.")], -1)]]),
|
|
444
|
+
_: 1
|
|
445
|
+
}))]);
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
//#endregion
|
|
450
|
+
export { P as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./chunk-DQi1bQcV.js`);const e=require(`./xy-container-_6YpscZh.js`),t=require(`./line-DJdnFNI7.js`);let n=require(`@oneclick.dev/cms-kit`),r=require(`vue`),i=require(`@lucide/vue`),a=require(`@oneclick.dev/cms-kit/charts`);var o={class:`flex flex-col gap-4 w-full max-w-7xl mx-auto py-8`},s={class:`flex justify-between gap-4 flex-col @lg:flex-row @lg:items-center`},c={class:`text-muted-foreground text-sm mt-1`},l={key:0,class:`flex items-center gap-2`},u={class:`flex items-center border rounded-lg overflow-hidden`},d=[`onClick`],ee={class:`text-sm text-destructive font-medium`},te={key:2,class:`flex items-center justify-center py-20`},ne={class:`flex items-start justify-between`},re={class:`flex items-center gap-2`},ie={class:`text-sm font-medium`},ae={class:`grid grid-cols-2 @md:grid-cols-3 @xl:grid-cols-4 gap-4`},oe={class:`flex items-center gap-1.5 text-muted-foreground mb-2`},se={class:`text-xs font-medium uppercase tracking-wide`},ce={class:`text-2xl font-semibold tabular-nums`},le={key:0,class:`flex items-center gap-1 mt-1`},ue={class:`flex flex-col @xl:grid @xl:grid-cols-2 gap-4 max-w-full`},de={class:`flex flex-col @lg:grid @lg:grid-cols-2 gap-4`},fe={class:`divide-y`},pe={class:`flex items-center gap-3 min-w-0`},me={class:`text-muted-foreground w-5 text-right shrink-0`},he={class:`truncate font-mono text-xs`},ge={class:`flex items-center gap-4 shrink-0 tabular-nums`},_e={class:`text-muted-foreground text-xs w-16 text-right`},ve={class:`text-muted-foreground text-xs w-16 text-right`},ye={key:0,class:`px-6 py-8 text-center text-muted-foreground text-sm`},be={class:`divide-y`},f={class:`flex items-center gap-3 min-w-0`},xe={class:`text-muted-foreground w-5 text-right shrink-0`},Se={class:`truncate`},Ce={class:`flex items-center gap-4 shrink-0 tabular-nums`},we={class:`text-muted-foreground text-xs w-20 text-right`},Te={key:0,class:`px-6 py-8 text-center text-muted-foreground text-sm`},Ee={class:`grid @lg:grid-cols-2 gap-4`},p={class:`space-y-3`},m={class:`text-sm capitalize flex-1`},h={class:`flex-1 h-2 bg-muted rounded-full overflow-hidden`},g={class:`text-xs tabular-nums text-muted-foreground w-16 text-right`},_={key:0,class:`py-4 text-center text-muted-foreground text-sm`},v={class:`space-y-3`},y={class:`text-sm flex-1`},b={class:`flex-1 h-2 bg-muted rounded-full overflow-hidden`},x={class:`text-xs tabular-nums text-muted-foreground w-16 text-right`},S={key:0,class:`py-4 text-center text-muted-foreground text-sm`},C=(0,r.defineComponent)({__name:`Overview`,setup(C){let{config:w}=(0,n.useModule)(),{moduleId:T}=(0,n.useModuleRoute)();(0,n.useModuleBreadcrumbs)(()=>[{label:`Overview`}]);let E=(0,r.ref)(!0),D=(0,r.ref)(null),O=(0,r.ref)(`30`),k=(0,r.ref)([]),A=(0,r.ref)({}),j=(0,r.ref)({}),M=(0,r.ref)({}),N=(0,r.ref)(0),P=(0,r.ref)([]),F=(0,r.ref)([]),I=(0,r.ref)([]),L=(0,r.ref)([]),R=(0,r.computed)(()=>!!(w.serviceAccount&&w.propertyId));function z(e){return`/api/v1/modules/${T}${e}`}let De=[{label:`7 days`,value:`7`},{label:`14 days`,value:`14`},{label:`30 days`,value:`30`},{label:`90 days`,value:`90`}],B={sessions:`#3b82f6`,users:`#8b5cf6`,pageViews:`#10b981`},V={sessions:{label:`Sessions`,color:B.sessions},totalUsers:{label:`Users`,color:B.users}},H={screenPageViews:{label:`Page Views`,color:B.pageViews}},U=(e,t)=>t,W=e=>e.sessions||0,Oe=e=>e.totalUsers||0,G=e=>e.screenPageViews||0,K=e=>{let t=k.value[Math.round(e)];if(!t)return``;let n=new Date(t.date);return`${n.getDate()}/${n.getMonth()+1}`},q=e=>{let t=k.value[Math.round(Number(e))];return t?new Date(t.date).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`}):``},ke=(0,r.computed)(()=>[{label:`Sessions`,value:J(A.value.sessions||0),icon:i.MousePointerClick,change:M.value.sessions},{label:`Users`,value:J(A.value.totalUsers||0),icon:i.Users,change:M.value.totalUsers},{label:`Page Views`,value:J(A.value.screenPageViews||0),icon:i.Eye,change:M.value.screenPageViews},{label:`Avg. Duration`,value:Y(A.value.averageSessionDuration||0),icon:i.Clock,change:M.value.averageSessionDuration},{label:`Engagement`,value:`${((A.value.engagementRate||0)*100).toFixed(1)}%`,icon:i.Zap,change:M.value.engagementRate,positive:!0},{label:`Bounce Rate`,value:`${((A.value.bounceRate||0)*100).toFixed(1)}%`,icon:(A.value.bounceRate||0)>.5?i.TrendingDown:i.TrendingUp,change:M.value.bounceRate,positive:!1},{label:`New Users`,value:J(A.value.newUsers||0),icon:i.UserPlus,change:M.value.newUsers},{label:`Pages / Session`,value:(A.value.screenPageViewsPerSession||0).toFixed(1),icon:i.Activity,change:M.value.screenPageViewsPerSession}]);function J(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:Math.round(e).toString()}function Y(e){let t=Math.floor(e/60),n=Math.round(e%60);return t>0?`${t}m ${n}s`:`${n}s`}function X(e,t=!0){if(e==null)return{text:`—`,cls:`text-muted-foreground`,icon:i.Minus};let n=`${Math.abs(e).toFixed(1)}%`,r=e>0;return{text:n,cls:(t?r:!r)?`text-emerald-600 dark:text-emerald-400`:`text-red-500 dark:text-red-400`,icon:r?i.TrendingUp:i.TrendingDown}}function Ae(e){let t=e.toLowerCase();return t===`mobile`?i.Smartphone:t===`tablet`?i.Tablet:i.Monitor}async function Z(){if(!R.value)return;E.value=!0,D.value=null;let e=`${O.value}daysAgo`;try{let[t,n,r,i,a,o]=await Promise.all([$fetch(z(`/report?startDate=${e}&endDate=today`)),$fetch(z(`/realtime`)).catch(()=>({activeUsers:0})),$fetch(z(`/top-pages?startDate=${e}&endDate=today&limit=10`)),$fetch(z(`/top-sources?startDate=${e}&endDate=today`)),$fetch(z(`/devices?startDate=${e}&endDate=today`)),$fetch(z(`/countries?startDate=${e}&endDate=today`))]);k.value=t.rows||[],A.value=t.totals||{},j.value=t.previousTotals||{},M.value=t.changes||{},N.value=n.activeUsers||0,P.value=r.rows||[],F.value=i.rows||[],I.value=a.rows||[],L.value=o.rows||[]}catch(e){console.error(`Failed to fetch analytics data:`,e),D.value=e?.data?.statusMessage||e?.message||`Failed to load analytics data`}finally{E.value=!1}}return(0,r.watch)(O,()=>Z()),(0,r.onMounted)(()=>{R.value?Z():E.value=!1}),(n,C)=>{let T=(0,r.resolveComponent)(`Button`),A=(0,r.resolveComponent)(`Card`),j=(0,r.resolveComponent)(`Badge`),M=(0,r.resolveComponent)(`CardTitle`),z=(0,r.resolveComponent)(`CardHeader`),Y=(0,r.resolveComponent)(`ChartLegendContent`),Q=(0,r.resolveComponent)(`ChartContainer`),$=(0,r.resolveComponent)(`CardContent`);return(0,r.openBlock)(),(0,r.createElementBlock)(`div`,o,[(0,r.createElementVNode)(`div`,s,[(0,r.createElementVNode)(`div`,null,[C[0]||=(0,r.createElementVNode)(`h1`,{class:`text-2xl font-semibold`},`Analytics Overview`,-1),(0,r.createElementVNode)(`p`,c,`Property `+(0,r.toDisplayString)((0,r.unref)(w).propertyId||`—`),1)]),R.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,l,[(0,r.createElementVNode)(`div`,u,[((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(De,e=>(0,r.createElementVNode)(`button`,{key:e.value,class:(0,r.normalizeClass)([`px-3 py-1.5 text-xs font-medium transition-colors`,O.value===e.value?`bg-primary text-primary-foreground`:`text-muted-foreground hover:text-foreground hover:bg-muted`]),onClick:t=>O.value=e.value},(0,r.toDisplayString)(e.label),11,d)),64))]),(0,r.createVNode)(T,{variant:`outline`,size:`icon`,onClick:Z,disabled:E.value},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(i.RefreshCw),{class:(0,r.normalizeClass)([`size-4`,{"animate-spin":E.value}])},null,8,[`class`])]),_:1},8,[`disabled`])])):(0,r.createCommentVNode)(``,!0)]),R.value?D.value?((0,r.openBlock)(),(0,r.createBlock)(A,{key:1,class:`p-6 border-destructive/50 bg-destructive/5`},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`p`,ee,(0,r.toDisplayString)(D.value),1),(0,r.createVNode)(T,{variant:`outline`,size:`sm`,class:`mt-3`,onClick:Z},{default:(0,r.withCtx)(()=>[...C[2]||=[(0,r.createTextVNode)(`Retry`,-1)]]),_:1})]),_:1})):E.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,te,[(0,r.createVNode)((0,r.unref)(i.Loader2),{class:`size-8 animate-spin text-muted-foreground`})])):((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:3},[(0,r.createVNode)(A,{class:`p-4`},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,ne,[(0,r.createElementVNode)(`div`,re,[C[3]||=(0,r.createElementVNode)(`span`,{class:`relative flex h-2.5 w-2.5`},[(0,r.createElementVNode)(`span`,{class:`animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75`}),(0,r.createElementVNode)(`span`,{class:`relative inline-flex rounded-full h-2.5 w-2.5 bg-green-500`})],-1),(0,r.createElementVNode)(`span`,ie,(0,r.toDisplayString)(N.value)+` visitors`,1),C[4]||=(0,r.createElementVNode)(`span`,{class:`text-xs text-muted-foreground translate-y-0.25`},`in the last 30 minutes`,-1)]),(0,r.createVNode)(j,{variant:`outline`,class:`text-xs`},{default:(0,r.withCtx)(()=>[...C[5]||=[(0,r.createTextVNode)(`Live`,-1)]]),_:1})])]),_:1}),(0,r.createElementVNode)(`div`,ae,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(ke.value,e=>((0,r.openBlock)(),(0,r.createBlock)(A,{key:e.label,class:`p-4`},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,oe,[((0,r.openBlock)(),(0,r.createBlock)((0,r.resolveDynamicComponent)(e.icon),{class:`size-3.5`})),(0,r.createElementVNode)(`span`,se,(0,r.toDisplayString)(e.label),1)]),(0,r.createElementVNode)(`p`,ce,(0,r.toDisplayString)(e.value),1),e.change===void 0?(0,r.createCommentVNode)(``,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,le,[((0,r.openBlock)(),(0,r.createBlock)((0,r.resolveDynamicComponent)(X(e.change,e.positive!==!1).icon),{class:(0,r.normalizeClass)([`size-3`,X(e.change,e.positive!==!1).cls])},null,8,[`class`])),(0,r.createElementVNode)(`span`,{class:(0,r.normalizeClass)([`text-xs font-medium`,X(e.change,e.positive!==!1).cls])},(0,r.toDisplayString)(X(e.change,e.positive!==!1).text),3),C[6]||=(0,r.createElementVNode)(`span`,{class:`text-xs text-muted-foreground`},`vs prev.`,-1)]))]),_:2},1024))),128))]),(0,r.createElementVNode)(`div`,ue,[(0,r.createVNode)(A,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(z,{class:`pb-2`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)(M,{class:`text-base`},{default:(0,r.withCtx)(()=>[...C[7]||=[(0,r.createTextVNode)(`Sessions & Users`,-1)]]),_:1})]),_:1}),(0,r.createVNode)($,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(Q,{config:V,class:`h-[240px] w-full`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(e.t),{data:k.value,margin:{top:8,right:8,bottom:24,left:40}},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.n),{x:U,y:W,color:B.sessions,opacity:.1,curveType:`monotoneX`},null,8,[`color`]),(0,r.createVNode)((0,r.unref)(t.t),{x:U,y:W,color:B.sessions,lineWidth:2,curveType:`monotoneX`},null,8,[`color`]),(0,r.createVNode)((0,r.unref)(t.t),{x:U,y:Oe,color:B.users,lineWidth:2,curveType:`monotoneX`},null,8,[`color`]),(0,r.createVNode)((0,r.unref)(e.i),{type:`x`,tickFormat:K,numTicks:6}),(0,r.createVNode)((0,r.unref)(e.i),{type:`y`,numTicks:4}),(0,r.createVNode)((0,r.unref)(e.r),{template:(0,r.unref)(a.componentToString)(V,(0,r.unref)(a.ChartTooltipContent),{labelFormatter:q})},null,8,[`template`]),(0,r.createVNode)((0,r.unref)(e.n))]),_:1},8,[`data`]),(0,r.createVNode)(Y,{config:V})]),_:1})]),_:1})]),_:1}),(0,r.createVNode)(A,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(z,{class:`pb-2`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)(M,{class:`text-base`},{default:(0,r.withCtx)(()=>[...C[8]||=[(0,r.createTextVNode)(`Page Views`,-1)]]),_:1})]),_:1}),(0,r.createVNode)($,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(Q,{config:H,class:`h-[240px] w-full`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(e.t),{data:k.value,margin:{top:8,right:8,bottom:24,left:40}},{default:(0,r.withCtx)(()=>[(0,r.createVNode)((0,r.unref)(t.n),{x:U,y:G,color:B.pageViews,opacity:.15,curveType:`monotoneX`},null,8,[`color`]),(0,r.createVNode)((0,r.unref)(t.t),{x:U,y:G,color:B.pageViews,lineWidth:2,curveType:`monotoneX`},null,8,[`color`]),(0,r.createVNode)((0,r.unref)(e.i),{type:`x`,tickFormat:K,numTicks:6}),(0,r.createVNode)((0,r.unref)(e.i),{type:`y`,numTicks:4}),(0,r.createVNode)((0,r.unref)(e.r),{template:(0,r.unref)(a.componentToString)(H,(0,r.unref)(a.ChartTooltipContent),{labelFormatter:q})},null,8,[`template`]),(0,r.createVNode)((0,r.unref)(e.n))]),_:1},8,[`data`]),(0,r.createVNode)(Y,{config:H})]),_:1})]),_:1})]),_:1})]),(0,r.createElementVNode)(`div`,de,[(0,r.createVNode)(A,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(z,{class:`pb-2`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)(M,{class:`text-base`},{default:(0,r.withCtx)(()=>[...C[9]||=[(0,r.createTextVNode)(`Top Pages`,-1)]]),_:1})]),_:1}),(0,r.createVNode)($,{class:`p-0`},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,fe,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(P.value,(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.pagePath,class:`flex items-center justify-between px-6 py-3 text-sm`},[(0,r.createElementVNode)(`div`,pe,[(0,r.createElementVNode)(`span`,me,(0,r.toDisplayString)(t+1),1),(0,r.createElementVNode)(`span`,he,(0,r.toDisplayString)(e.pagePath),1)]),(0,r.createElementVNode)(`div`,ge,[(0,r.createElementVNode)(`span`,_e,(0,r.toDisplayString)(J(e.screenPageViews))+` views`,1),(0,r.createElementVNode)(`span`,ve,(0,r.toDisplayString)(J(e.totalUsers))+` users`,1)])]))),128)),P.value.length?(0,r.createCommentVNode)(``,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ye,`No data available`))])]),_:1})]),_:1}),(0,r.createVNode)(A,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(z,{class:`pb-2`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)(M,{class:`text-base`},{default:(0,r.withCtx)(()=>[...C[10]||=[(0,r.createTextVNode)(`Traffic Sources`,-1)]]),_:1})]),_:1}),(0,r.createVNode)($,{class:`p-0`},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,be,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(F.value,(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.sessionSource,class:`flex items-center justify-between px-6 py-3 text-sm`},[(0,r.createElementVNode)(`div`,f,[(0,r.createElementVNode)(`span`,xe,(0,r.toDisplayString)(t+1),1),(0,r.createVNode)((0,r.unref)(i.ArrowUpRight),{class:`size-3.5 text-muted-foreground shrink-0`}),(0,r.createElementVNode)(`span`,Se,(0,r.toDisplayString)(e.sessionSource||`(direct)`),1)]),(0,r.createElementVNode)(`div`,Ce,[(0,r.createElementVNode)(`span`,we,(0,r.toDisplayString)(J(e.sessions))+` sessions`,1)])]))),128)),F.value.length?(0,r.createCommentVNode)(``,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,Te,`No data available`))])]),_:1})]),_:1})]),(0,r.createElementVNode)(`div`,Ee,[(0,r.createVNode)(A,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(z,{class:`pb-2`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)(M,{class:`text-base`},{default:(0,r.withCtx)(()=>[...C[11]||=[(0,r.createTextVNode)(`Devices`,-1)]]),_:1})]),_:1}),(0,r.createVNode)($,null,{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,p,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(I.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.deviceCategory,class:`flex items-center gap-3`},[((0,r.openBlock)(),(0,r.createBlock)((0,r.resolveDynamicComponent)(Ae(e.deviceCategory)),{class:`size-4 text-muted-foreground shrink-0`})),(0,r.createElementVNode)(`span`,m,(0,r.toDisplayString)(e.deviceCategory),1),(0,r.createElementVNode)(`div`,h,[(0,r.createElementVNode)(`div`,{class:`h-full bg-primary rounded-full transition-all`,style:(0,r.normalizeStyle)({width:`${e.sessions/(I.value[0]?.sessions||1)*100}%`})},null,4)]),(0,r.createElementVNode)(`span`,g,(0,r.toDisplayString)(J(e.sessions)),1)]))),128)),I.value.length?(0,r.createCommentVNode)(``,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,_,`No data available`))])]),_:1})]),_:1}),(0,r.createVNode)(A,null,{default:(0,r.withCtx)(()=>[(0,r.createVNode)(z,{class:`pb-2`},{default:(0,r.withCtx)(()=>[(0,r.createVNode)(M,{class:`text-base`},{default:(0,r.withCtx)(()=>[...C[12]||=[(0,r.createTextVNode)(`Top Countries`,-1)]]),_:1})]),_:1}),(0,r.createVNode)($,null,{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,v,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(L.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.country,class:`flex items-center gap-3`},[(0,r.createVNode)((0,r.unref)(i.Globe),{class:`size-4 text-muted-foreground shrink-0`}),(0,r.createElementVNode)(`span`,y,(0,r.toDisplayString)(e.country),1),(0,r.createElementVNode)(`div`,b,[(0,r.createElementVNode)(`div`,{class:`h-full bg-primary rounded-full transition-all`,style:(0,r.normalizeStyle)({width:`${e.sessions/(L.value[0]?.sessions||1)*100}%`})},null,4)]),(0,r.createElementVNode)(`span`,x,(0,r.toDisplayString)(J(e.sessions)),1)]))),128)),L.value.length?(0,r.createCommentVNode)(``,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,S,`No data available`))])]),_:1})]),_:1})])],64)):((0,r.openBlock)(),(0,r.createBlock)(A,{key:0,class:`p-8 text-center`},{default:(0,r.withCtx)(()=>[...C[1]||=[(0,r.createElementVNode)(`div`,{class:`mx-auto max-w-md space-y-3`},[(0,r.createElementVNode)(`p`,{class:`text-lg font-medium`},`Setup required`),(0,r.createElementVNode)(`p`,{class:`text-sm text-muted-foreground`},`Connect a Google Service Account and enter your GA4 Property ID in the module settings to start seeing analytics.`)],-1)]]),_:1}))])}}});exports.default=C;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { useFirebaseIntegration as e, useLogs as t, useModuleBreadcrumbs as n, useModulePermissions as r, useModuleRoute as i } from "@oneclick.dev/cms-kit";
|
|
2
|
+
import { Fragment as a, computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, onMounted as m, openBlock as h, ref as g, renderList as _, resolveComponent as v, toDisplayString as y, unref as b, withCtx as x, withKeys as S } from "vue";
|
|
3
|
+
import { Pencil as C, Plus as w, Search as T } from "@lucide/vue";
|
|
4
|
+
//#region src/productCollections/components/overview/ListView.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var E = { class: "flex items-center gap-2" }, D = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"
|
|
8
|
+
}, O = {
|
|
9
|
+
key: 1,
|
|
10
|
+
class: "bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"
|
|
11
|
+
}, k = /* @__PURE__ */ p({
|
|
12
|
+
__name: "ListView",
|
|
13
|
+
props: { collections: {
|
|
14
|
+
type: Array,
|
|
15
|
+
required: !0
|
|
16
|
+
} },
|
|
17
|
+
setup(e) {
|
|
18
|
+
let { navigateTo: t } = i();
|
|
19
|
+
return (n, r) => {
|
|
20
|
+
let i = v("TableHead"), o = v("TableRow"), p = v("TableHeader"), m = v("AvatarImage"), g = v("AvatarFallback"), S = v("Avatar"), w = v("TableCell"), T = v("Button"), k = v("TableBody"), A = v("Table");
|
|
21
|
+
return h(), s(A, null, {
|
|
22
|
+
default: x(() => [f(p, null, {
|
|
23
|
+
default: x(() => [f(o, null, {
|
|
24
|
+
default: x(() => [
|
|
25
|
+
f(i, { class: "w-[100px]" }, {
|
|
26
|
+
default: x(() => [...r[0] ||= [d(" Title ", -1)]]),
|
|
27
|
+
_: 1
|
|
28
|
+
}),
|
|
29
|
+
f(i, null, {
|
|
30
|
+
default: x(() => [...r[1] ||= [d("Status", -1)]]),
|
|
31
|
+
_: 1
|
|
32
|
+
}),
|
|
33
|
+
f(i, null, {
|
|
34
|
+
default: x(() => [...r[2] ||= [d(" Type", -1)]]),
|
|
35
|
+
_: 1
|
|
36
|
+
}),
|
|
37
|
+
f(i, { class: "text-right" }, {
|
|
38
|
+
default: x(() => [...r[3] ||= [d(" Actions ", -1)]]),
|
|
39
|
+
_: 1
|
|
40
|
+
})
|
|
41
|
+
]),
|
|
42
|
+
_: 1
|
|
43
|
+
})]),
|
|
44
|
+
_: 1
|
|
45
|
+
}), f(k, null, {
|
|
46
|
+
default: x(() => [(h(!0), l(a, null, _(e.collections, (e) => (h(), s(o, {
|
|
47
|
+
key: e.id,
|
|
48
|
+
onClick: (n) => b(t)(e.id),
|
|
49
|
+
class: "cursor-pointer"
|
|
50
|
+
}, {
|
|
51
|
+
default: x(() => [
|
|
52
|
+
f(w, { class: "font-medium" }, {
|
|
53
|
+
default: x(() => [u("div", E, [e.thumbnail ? (h(), s(S, {
|
|
54
|
+
key: 0,
|
|
55
|
+
class: "size-12 rounded-xl"
|
|
56
|
+
}, {
|
|
57
|
+
default: x(() => [f(m, {
|
|
58
|
+
src: e.thumbnail,
|
|
59
|
+
class: "object-cover"
|
|
60
|
+
}, null, 8, ["src"]), f(g, { class: "rounded-xl" })]),
|
|
61
|
+
_: 2
|
|
62
|
+
}, 1024)) : c("", !0), u("span", null, y(e.title), 1)])]),
|
|
63
|
+
_: 2
|
|
64
|
+
}, 1024),
|
|
65
|
+
f(w, null, {
|
|
66
|
+
default: x(() => [e.status === "published" ? (h(), l("span", D, "Published")) : e.status === "draft" ? (h(), l("span", O, "Draft")) : c("", !0)]),
|
|
67
|
+
_: 2
|
|
68
|
+
}, 1024),
|
|
69
|
+
f(w, null, {
|
|
70
|
+
default: x(() => [d(y(e.type), 1)]),
|
|
71
|
+
_: 2
|
|
72
|
+
}, 1024),
|
|
73
|
+
f(w, { class: "text-right" }, {
|
|
74
|
+
default: x(() => [f(T, {
|
|
75
|
+
size: "icon",
|
|
76
|
+
variant: "ghost"
|
|
77
|
+
}, {
|
|
78
|
+
default: x(() => [f(b(C), { class: "size-4" })]),
|
|
79
|
+
_: 1
|
|
80
|
+
})]),
|
|
81
|
+
_: 1
|
|
82
|
+
})
|
|
83
|
+
]),
|
|
84
|
+
_: 2
|
|
85
|
+
}, 1032, ["onClick"]))), 128))]),
|
|
86
|
+
_: 1
|
|
87
|
+
})]),
|
|
88
|
+
_: 1
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}), A = { class: "relative" }, j = {
|
|
93
|
+
ref: "container",
|
|
94
|
+
class: "flex items-center justify-between gap-4 w-full mt-12 mb-8"
|
|
95
|
+
}, M = { class: "flex items-center gap-4" }, N = { class: "text-lg whitespace-nowrap" }, P = { class: "relative w-full max-w-sm items-center" }, F = { class: "absolute start-0 inset-y-0 flex items-center justify-center px-2" }, I = { class: "flex items-center gap-4" }, L = /* @__PURE__ */ p({
|
|
96
|
+
__name: "Overview",
|
|
97
|
+
props: { config: {
|
|
98
|
+
type: Object,
|
|
99
|
+
required: !0
|
|
100
|
+
} },
|
|
101
|
+
setup(a) {
|
|
102
|
+
let p = a, { hasPermission: _ } = r(), { navigateTo: C } = i(), { log: E, logWarning: D, logError: O } = t();
|
|
103
|
+
n(() => []);
|
|
104
|
+
let L = e(p.config.project), R = g([]), z = g(""), B = o(() => R.value.filter((e) => e.title.toLowerCase().includes(z.value.toLowerCase()))), V = async () => (R.value = await (async () => {
|
|
105
|
+
if (!p.config.collectionsCollection) return [];
|
|
106
|
+
let e = p.config.collectionsCollection.split(":");
|
|
107
|
+
return e.length === 2 && (await L.get(e[0]))?.[e[1]] || [];
|
|
108
|
+
})(), R.value);
|
|
109
|
+
return m(() => {
|
|
110
|
+
V();
|
|
111
|
+
}), (e, t) => {
|
|
112
|
+
let n = v("Input"), r = v("Button");
|
|
113
|
+
return h(), l("div", A, [u("div", j, [u("div", M, [u("p", N, y(R.value?.length) + " collections", 1), u("div", P, [f(n, {
|
|
114
|
+
id: "search",
|
|
115
|
+
type: "text",
|
|
116
|
+
placeholder: "Search...",
|
|
117
|
+
class: "pl-8",
|
|
118
|
+
modelValue: z.value,
|
|
119
|
+
"onUpdate:modelValue": t[0] ||= (e) => z.value = e,
|
|
120
|
+
onKeydown: t[1] ||= S((e) => z.value = "", ["escape"])
|
|
121
|
+
}, null, 8, ["modelValue"]), u("span", F, [f(b(T), { class: "size-4 text-muted-foreground" })])])]), u("div", I, [b(_)("create-collection") ? (h(), s(r, {
|
|
122
|
+
key: 0,
|
|
123
|
+
variant: "outline",
|
|
124
|
+
onClick: t[2] ||= (e) => b(C)("new")
|
|
125
|
+
}, {
|
|
126
|
+
default: x(() => [f(b(w), { class: "size-4" }), t[3] ||= d(" New Collection ", -1)]),
|
|
127
|
+
_: 1
|
|
128
|
+
})) : c("", !0)])], 512), f(k, { collections: b(B) }, null, 8, ["collections"])]);
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
//#endregion
|
|
133
|
+
export { L as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./chunk-DQi1bQcV.js`);let e=require(`@oneclick.dev/cms-kit`),t=require(`vue`),n=require(`@lucide/vue`);var r={class:`container @container mx-auto py-8 px-4`},i={key:0,class:`flex justify-center py-24`},a={class:`flex gap-2`},o={key:2},s={class:`flex flex-col gap-4 mb-6 @md:flex-row @md:items-end @md:justify-between`},c={class:`flex flex-wrap items-center gap-2`},l={class:`relative`},u={key:0,class:`flex flex-wrap items-center justify-between gap-3 mb-4 px-4 py-3 rounded-lg border bg-muted/40`},d={class:`flex items-center gap-3`},f={class:`text-sm font-medium`},p={class:`flex items-center gap-2`},m={key:1,class:`flex flex-col items-center justify-center py-16 text-center border border-dashed rounded-lg`},h={class:`font-medium`},g={key:2,class:`grid gap-4 @md:grid-cols-2 @3xl:grid-cols-3`},ee=[`onClick`],_=[`onClick`],te={class:`flex items-start gap-3`},ne=[`disabled`,`onClick`],re={class:`text-base font-semibold leading-tight line-clamp-1`},ie={class:`flex items-center gap-2 mt-1`},ae={key:0,class:`text-xs text-muted-foreground cursor-pointer`},oe={key:0,class:`shrink-0`},se={class:`grid grid-cols-3 gap-2 mt-5`},ce={class:`flex flex-col items-start gap-1 rounded-lg bg-muted/40 px-3 py-2`},le={class:`flex items-center gap-1 text-muted-foreground`},v={class:`text-sm font-semibold`},y={class:`flex flex-col items-start gap-1 rounded-lg bg-muted/40 px-3 py-2`},b={class:`flex items-center gap-1 text-muted-foreground`},x={class:`text-sm font-semibold`},S={class:`flex flex-col items-start gap-1 rounded-lg bg-muted/40 px-3 py-2`},C={class:`flex items-center gap-1 text-muted-foreground`},w={class:`text-sm font-semibold`},T={key:0,class:`flex items-center justify-between gap-2 px-5 py-3 border-t bg-muted/20`},E=(0,t.defineComponent)({__name:`Overview`,setup(E){let{config:D}=(0,e.useModule)(),O=(0,e.useFirebaseIntegration)(D.project),{navigateTo:k}=(0,e.useModuleRoute)(),{confirm:A}=(0,e.useConfirmation)(),{hasPermission:j}=(0,e.useModulePermissions)();(0,e.useModuleBreadcrumbs)(()=>[]);let M=(0,t.ref)(null),N=(0,t.ref)(``),P=(0,t.ref)(!1),F=(0,t.ref)([]),I=(0,t.ref)(`importAgendasInput`),L=(0,t.computed)(()=>{if(!M.value)return[];let e=N.value.trim().toLowerCase();return e?M.value.filter(t=>(t.serviceName||``).toLowerCase().includes(e)):M.value}),R=(0,t.computed)(()=>L.value.length>0&&L.value.every(e=>F.value.includes(e.id))),z=()=>{if(R.value){let e=L.value.map(e=>e.id);F.value=F.value.filter(t=>!e.includes(t))}else{let e=L.value.map(e=>e.id),t=new Set([...F.value,...e]);F.value=Array.from(t)}},B=e=>{F.value.includes(e)?F.value=F.value.filter(t=>t!==e):F.value.push(e)},V=e=>{if(!e)return`??`;let t=e.trim().split(/\s+/);return t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()},H=[{fg:`#7c3aed`,bg:`rgba(124, 58, 237, 0.12)`},{fg:`#0891b2`,bg:`rgba(8, 145, 178, 0.12)`},{fg:`#ea580c`,bg:`rgba(234, 88, 12, 0.12)`},{fg:`#16a34a`,bg:`rgba(22, 163, 74, 0.12)`},{fg:`#2563eb`,bg:`rgba(37, 99, 235, 0.12)`},{fg:`#db2777`,bg:`rgba(219, 39, 119, 0.12)`},{fg:`#475569`,bg:`rgba(71, 85, 105, 0.12)`}],U=e=>{let t=(e.id||e.serviceName||``).toString(),n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)>>>0;return H[n%H.length]},W=e=>{let t=e?.pricingOptions?.[0];return t?.duration?`${t.duration} min`:null},ue=e=>{let t=e?.pricingOptions?.[0];return t?.price===void 0||t?.price===null||t?.price===``?null:`${e.currency===`EUR`?`€`:`$`}${t.price}`},de=e=>Array.isArray(e?.resources)?e.resources.filter(e=>e?.isActive!==!1).length:0,fe=e=>e.type===`regular`?`Regular`:e.type?e.type.charAt(0).toUpperCase()+e.type.slice(1):`Agenda`,pe=e=>{P.value=!0,F.value=[e]},G=async()=>{M.value=await O.find(D.agendaCollection)},me=async e=>{if(!j(`create-agendas`))return;let t=await O.get(D.agendaCollection,e);if(!t){alert(`Agenda not found`);return}let n=prompt(`Enter name for duplicated agenda`,t.serviceName+` (Copy)`);if(!n)return;let r={...t,serviceName:n};delete r.id,await O.add(D.agendaCollection,r),await G()},he=async e=>{j(`delete-agendas`)&&await A(`Are you sure you want to delete this agenda? This action cannot be undone.`)&&(await O.remove(D.agendaCollection,e),await G())},ge=async()=>{if(!M.value)return;let e=M.value.filter(e=>F.value.includes(e.id));e=e.map(e=>{let{id:t,...n}=e;return n});let t=`data:text/json;charset=utf-8,`+encodeURIComponent(JSON.stringify(e,null,2)),n=document.createElement(`a`);n.setAttribute(`href`,t),n.setAttribute(`download`,`agendas_export.json`),document.body.appendChild(n),n.click(),n.remove(),P.value=!1,F.value=[]},_e=async e=>{let t=e.target;if(!t.files||t.files.length===0)return;let n=await t.files[0].text(),r;try{r=JSON.parse(n)}catch{alert(`Invalid JSON file`);return}if(!Array.isArray(r)){alert(`Invalid agendas format`);return}for(let e of r)await O.add(D.agendaCollection,e);t.value=``,await G()},K=e=>{P.value||(j(`edit-agendas`)?k(`/edit/${e}`):k(`/edit/${e}/agenda`))};return G(),(e,E)=>{let D=(0,t.resolveComponent)(`Spinner`),O=(0,t.resolveComponent)(`EmptyMedia`),A=(0,t.resolveComponent)(`EmptyTitle`),H=(0,t.resolveComponent)(`EmptyDescription`),G=(0,t.resolveComponent)(`EmptyHeader`),q=(0,t.resolveComponent)(`Button`),ve=(0,t.resolveComponent)(`EmptyContent`),J=(0,t.resolveComponent)(`Empty`),ye=(0,t.resolveComponent)(`Input`),Y=(0,t.resolveComponent)(`DropdownMenuTrigger`),X=(0,t.resolveComponent)(`DropdownMenuItem`),Z=(0,t.resolveComponent)(`DropdownMenuGroup`),Q=(0,t.resolveComponent)(`DropdownMenuContent`),$=(0,t.resolveComponent)(`DropdownMenu`),be=(0,t.resolveComponent)(`ButtonGroup`),xe=(0,t.resolveComponent)(`Checkbox`),Se=(0,t.resolveComponent)(`Badge`);return(0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,[(0,t.createElementVNode)(`div`,r,[M.value===null?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,i,[(0,t.createVNode)(D,{class:`mx-auto`})])):M.value.length===0?((0,t.openBlock)(),(0,t.createBlock)(J,{key:1},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(G,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(O,{variant:`icon`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.CalendarX),{class:`size-4-6`})]),_:1}),(0,t.createVNode)(A,null,{default:(0,t.withCtx)(()=>[...E[6]||=[(0,t.createTextVNode)(`No Agendas Yet`,-1)]]),_:1}),(0,t.createVNode)(H,null,{default:(0,t.withCtx)(()=>[...E[7]||=[(0,t.createTextVNode)(` You haven't created any agenda yet. Get started by creating your first agenda. `,-1)]]),_:1})]),_:1}),(0,t.createVNode)(ve,null,{default:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`div`,a,[(0,t.createVNode)(q,{onClick:E[0]||=e=>(0,t.unref)(k)(`/create`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.PlusIcon)),E[8]||=(0,t.createTextVNode)(` Create Agenda `,-1)]),_:1})])]),_:1})]),_:1})):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,o,[(0,t.createElementVNode)(`div`,s,[E[11]||=(0,t.createElementVNode)(`div`,null,[(0,t.createElementVNode)(`h2`,{class:`text-3xl font-bold tracking-tight`},`Agendas`),(0,t.createElementVNode)(`p`,{class:`text-sm text-muted-foreground mt-1`},` Manage your bookable services, hours and resources. `)],-1),(0,t.createElementVNode)(`div`,c,[(0,t.createElementVNode)(`div`,l,[(0,t.createVNode)((0,t.unref)(n.Search),{class:`absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground pointer-events-none`}),(0,t.createVNode)(ye,{modelValue:N.value,"onUpdate:modelValue":E[1]||=e=>N.value=e,placeholder:`Search agendas...`,class:`pl-9 w-full @md:w-64`},null,8,[`modelValue`])]),!P.value&&(0,t.unref)(j)(`create-agendas`)?((0,t.openBlock)(),(0,t.createBlock)(be,{key:0},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(q,{onClick:E[2]||=e=>(0,t.unref)(k)(`/create`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.PlusIcon)),E[9]||=(0,t.createTextVNode)(` New Agenda `,-1)]),_:1}),(0,t.createVNode)($,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(Y,{"as-child":``},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(q,{size:`icon`,"aria-label":`More Options`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.MoreHorizontalIcon))]),_:1})]),_:1}),(0,t.createVNode)(Q,{align:`end`,class:`w-52`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(Z,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(X,{onClick:E[3]||=e=>I.value.click()},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.ImportIcon)),E[10]||=(0,t.createTextVNode)(` Import Agendas... `,-1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):(0,t.createCommentVNode)(``,!0)])]),P.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,u,[(0,t.createElementVNode)(`div`,d,[(0,t.createVNode)(xe,{modelValue:R.value,"onUpdate:modelValue":z},null,8,[`modelValue`]),(0,t.createElementVNode)(`span`,f,(0,t.toDisplayString)(F.value.length)+` of `+(0,t.toDisplayString)(L.value.length)+` selected `,1)]),(0,t.createElementVNode)(`div`,p,[(0,t.createVNode)(q,{variant:`ghost`,onClick:E[4]||=e=>{P.value=!1,F.value=[]}},{default:(0,t.withCtx)(()=>[...E[12]||=[(0,t.createTextVNode)(` Cancel `,-1)]]),_:1}),(0,t.createVNode)(q,{onClick:ge,disabled:F.value.length===0},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Upload)),(0,t.createTextVNode)(` Export `+(0,t.toDisplayString)(F.value.length||``),1)]),_:1},8,[`disabled`])])])):(0,t.createCommentVNode)(``,!0),L.value.length===0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,m,[(0,t.createVNode)((0,t.unref)(n.Search),{class:`size-8 text-muted-foreground mb-3`}),(0,t.createElementVNode)(`p`,h,`No agendas match "`+(0,t.toDisplayString)(N.value)+`"`,1),E[13]||=(0,t.createElementVNode)(`p`,{class:`text-sm text-muted-foreground mt-1`},`Try a different search term.`,-1)])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,g,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(L.value,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,class:(0,t.normalizeClass)([`group relative flex flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all duration-200`,{"cursor-pointer":P.value,"ring-2 ring-primary border-primary/40":P.value&&F.value.includes(e.id)}]),onClick:t=>P.value?B(e.id):null},[(0,t.createElementVNode)(`div`,{class:`h-1 w-full`,style:(0,t.normalizeStyle)({backgroundColor:U(e).fg})},null,4),(0,t.createElementVNode)(`div`,{onClick:(0,t.withModifiers)(t=>!P.value&&K(e.id),[`stop`]),class:`flex flex-col flex-1 p-5`},[(0,t.createElementVNode)(`div`,te,[(0,t.createElementVNode)(`div`,{class:`shrink-0 size-12 rounded-lg flex items-center justify-center font-semibold text-sm`,style:(0,t.normalizeStyle)({backgroundColor:U(e).bg,color:U(e).fg})},(0,t.toDisplayString)(V(e.serviceName)),5),(0,t.createElementVNode)(`button`,{type:`button`,class:`flex-1 min-w-0 text-left focus:outline-none`,disabled:P.value,onClick:t=>!P.value&&K(e.id)},[(0,t.createElementVNode)(`h3`,re,(0,t.toDisplayString)(e.serviceName||`Untitled Agenda`),1),(0,t.createElementVNode)(`div`,ie,[(0,t.createVNode)(Se,{variant:`secondary`,class:`text-[10px] font-medium px-1.5 py-0 h-4`},{default:(0,t.withCtx)(()=>[(0,t.createTextVNode)((0,t.toDisplayString)(fe(e)),1)]),_:2},1024),P.value?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`span`,ae,` Click to `+(0,t.toDisplayString)((0,t.unref)(j)(`edit-agendas`)?`edit`:`view`),1))])],8,ne),P.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,oe,[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`flex items-center justify-center size-6 rounded-full border-2 transition`,F.value.includes(e.id)?`border-primary bg-primary text-primary-foreground`:`border-muted-foreground/30`])},[F.value.includes(e.id)?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.CheckCircle2),{key:0,class:`size-4`})):(0,t.createCommentVNode)(``,!0)],2)])):(0,t.createCommentVNode)(``,!0)]),(0,t.createElementVNode)(`div`,se,[(0,t.createElementVNode)(`div`,ce,[(0,t.createElementVNode)(`div`,le,[(0,t.createVNode)((0,t.unref)(n.Clock),{class:`size-3.5`}),E[14]||=(0,t.createElementVNode)(`span`,{class:`text-[10px] uppercase tracking-wide font-medium`},`Duration`,-1)]),(0,t.createElementVNode)(`span`,v,(0,t.toDisplayString)(W(e)||`—`),1)]),(0,t.createElementVNode)(`div`,y,[(0,t.createElementVNode)(`div`,b,[(0,t.createVNode)((0,t.unref)(n.DollarSign),{class:`size-3.5`}),E[15]||=(0,t.createElementVNode)(`span`,{class:`text-[10px] uppercase tracking-wide font-medium`},`Price`,-1)]),(0,t.createElementVNode)(`span`,x,(0,t.toDisplayString)(ue(e)||`—`),1)]),(0,t.createElementVNode)(`div`,S,[(0,t.createElementVNode)(`div`,C,[(0,t.createVNode)((0,t.unref)(n.Users),{class:`size-3.5`}),E[16]||=(0,t.createElementVNode)(`span`,{class:`text-[10px] uppercase tracking-wide font-medium`},`Resources`,-1)]),(0,t.createElementVNode)(`span`,w,(0,t.toDisplayString)(de(e)),1)])])],8,_),P.value?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,T,[(0,t.unref)(j)(`edit-agendas`)?((0,t.openBlock)(),(0,t.createBlock)(q,{key:0,variant:`ghost`,size:`sm`,class:`gap-1.5`,onClick:(0,t.withModifiers)(n=>(0,t.unref)(k)(`/edit/${e.id}`),[`stop`])},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.CalendarDays),{class:`size-4`}),E[17]||=(0,t.createTextVNode)(` Edit Agenda `,-1)]),_:1},8,[`onClick`])):((0,t.openBlock)(),(0,t.createBlock)(q,{key:1,variant:`ghost`,size:`sm`,class:`gap-1.5`,onClick:(0,t.withModifiers)(n=>(0,t.unref)(k)(`/edit/${e.id}/agenda`),[`stop`])},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.CalendarDays),{class:`size-4`}),E[18]||=(0,t.createTextVNode)(` View Agenda `,-1)]),_:1},8,[`onClick`])),(0,t.createVNode)($,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(Y,{"as-child":``},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(q,{variant:`ghost`,size:`icon`,"aria-label":`More Options`,onClick:E[5]||=(0,t.withModifiers)(()=>{},[`stop`])},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.MoreHorizontalIcon))]),_:1})]),_:1}),(0,t.createVNode)(Q,{align:`end`,class:`w-52`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(Z,null,{default:(0,t.withCtx)(()=>[(0,t.unref)(j)(`create-agendas`)?((0,t.openBlock)(),(0,t.createBlock)(X,{key:0,onClick:t=>me(e.id)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Copy)),E[19]||=(0,t.createTextVNode)(` Duplicate Agenda `,-1)]),_:1},8,[`onClick`])):(0,t.createCommentVNode)(``,!0),(0,t.createVNode)(X,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.ChevronsLeftRightEllipsis)),E[20]||=(0,t.createTextVNode)(` API Set-up `,-1)]),_:1}),(0,t.createVNode)(X,{onClick:t=>pe(e.id)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Upload)),E[21]||=(0,t.createTextVNode)(` Export Agenda `,-1)]),_:1},8,[`onClick`]),(0,t.unref)(j)(`delete-agendas`)?((0,t.openBlock)(),(0,t.createBlock)(X,{key:1,variant:`destructive`,onClick:t=>he(e.id)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Trash2Icon)),E[22]||=(0,t.createTextVNode)(` Remove Agenda `,-1)]),_:1},8,[`onClick`])):(0,t.createCommentVNode)(``,!0)]),_:2},1024)]),_:2},1024)]),_:2},1024)]))],10,ee))),128))]))]))]),(0,t.createElementVNode)(`input`,{type:`file`,ref_key:`importAgendasInput`,ref:I,class:`hidden`,accept:`.json,application/json`,onChange:_e},null,544)],64)}}});exports.default=E;
|