@oneclick.dev/cms-core-modules 0.0.108 → 0.0.110
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-DNCy8nQz.mjs +400 -0
- package/dist/Acquisition-Dt2rREU8.js +1 -0
- package/dist/AgendaOpeningHoursCard-B7ROIPWw.js +1 -0
- package/dist/AgendaOpeningHoursCard-Cp4wxUeK.mjs +172 -0
- package/dist/AppointmentDetailsCard-33WpATpV.mjs +161 -0
- package/dist/AppointmentDetailsCard-DpLM5IrB.js +1 -0
- package/dist/AppointmentEditor-BeOtYV6u.mjs +196 -0
- package/dist/AppointmentEditor-CaTfbkIf.js +1 -0
- package/dist/AppointmentListTable-DZJNmTMb.mjs +177 -0
- package/dist/AppointmentListTable-Dieu9US_.js +1 -0
- package/dist/Audience-Bs7b0TNm.js +1 -0
- package/dist/Audience-CUeMVYRy.mjs +489 -0
- package/dist/Components-C83O-xlF.mjs +623 -0
- package/dist/Components-DXbx0RLV.js +1 -0
- package/dist/Content-BHr_rPVY.js +1 -0
- package/dist/Content-CYOZKvWK.mjs +358 -0
- package/dist/ContentEditor-BprPiHMJ.js +462 -0
- package/dist/ContentEditor-D9-1SJ5F.mjs +30700 -0
- package/dist/CountryBreakdownCard-D7BK3nRD.js +1 -0
- package/dist/CountryBreakdownCard-DVxNz2DJ.mjs +196 -0
- package/dist/Create-89z41K73.js +1 -0
- package/dist/Create-BCklc_T1.mjs +1251 -0
- package/dist/DateFormatter-CYAD4GBN.js +1 -0
- package/dist/DateFormatter-DUxlo8X8.mjs +734 -0
- package/dist/Detail-BCOcP2ql.mjs +585 -0
- package/dist/Detail-Btzwo0Y3.mjs +3477 -0
- package/dist/Detail-Byk781b4.mjs +26 -0
- package/dist/Detail-C857g62L.js +1 -0
- package/dist/Detail-C8wQiDcv.js +1 -0
- package/dist/Detail-CNlljBfH.mjs +379 -0
- package/dist/Detail-CPqug27l.js +1 -0
- package/dist/Detail-CjuhjPby.js +1 -0
- package/dist/Detail-DnX7tsqN.mjs +649 -0
- package/dist/Detail-mvSGbnFU.js +1 -0
- package/dist/DeviceBreakdownCard-DRhQ9ufG.js +1 -0
- package/dist/DeviceBreakdownCard-W1frLe0L.mjs +159 -0
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +76 -0
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +1 -0
- package/dist/Entries-BdhUyJR5.mjs +728 -0
- package/dist/Entries-CEXM_SkO.js +1 -0
- package/dist/Find-D4Qa45qC.js +1 -0
- package/dist/Find-DIISO5GO.mjs +229 -0
- package/dist/GlobalStyling-C9VthHWK.mjs +1588 -0
- package/dist/GlobalStyling-CnSlXkZc.js +25 -0
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Ceoje52V.js +1 -0
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Dh9jzvE0.mjs +1255 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js +1 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs +330 -0
- package/dist/Overview-BCpJNiEB.mjs +190 -0
- package/dist/Overview-BDlBCUI_.js +1 -0
- package/dist/Overview-BKAti8nc.mjs +567 -0
- package/dist/Overview-BbvfH1u-.js +1 -0
- package/dist/Overview-Bn1Xx3_j.js +1 -0
- package/dist/Overview-C-Jb_BxY.mjs +860 -0
- package/dist/Overview-CIa1E-HH.mjs +178 -0
- package/dist/Overview-DAxCu9XC.js +1 -0
- package/dist/Overview-DC9io1bk.js +1 -0
- package/dist/Overview-Di84CsR5.mjs +476 -0
- package/dist/Overview-Su8ZUbMs.mjs +26 -0
- package/dist/Overview-T-lsy3UZ.js +1 -0
- package/dist/Overview-UoZHUMUz.js +1 -0
- package/dist/Overview-lWAyyenp.mjs +632 -0
- package/dist/PeakHoursCard-9-EZFZLR.mjs +182 -0
- package/dist/PeakHoursCard-BR5zmta4.js +1 -0
- package/dist/ProductDetailsCard-6nHikw4V.mjs +121 -0
- package/dist/ProductDetailsCard-Bn7qrgmc.js +1 -0
- package/dist/RealtimeCard--APfRNc8.js +1 -0
- package/dist/RealtimeCard-fvQlJcM7.mjs +126 -0
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js +349 -0
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs +3077 -0
- package/dist/SearchTermsCard-BsB-63aH.js +1 -0
- package/dist/SearchTermsCard-BzVrHKqQ.mjs +201 -0
- package/dist/SendPush-COns44j7.js +1 -0
- package/dist/SendPush-CPIOjVX4.mjs +184 -0
- package/dist/SeoHealth-MC3lSCOY.mjs +615 -0
- package/dist/SeoHealth-az1YuNF2.js +1 -0
- package/dist/TableView-DQW0A1oG.js +4 -0
- package/dist/TableView-DXHhJ-jm.mjs +6143 -0
- package/dist/TemplateList.vue_vue_type_script_setup_true_lang-B_AtWnHa.js +1 -0
- package/dist/TemplateList.vue_vue_type_script_setup_true_lang-Cmovy7kk.mjs +40 -0
- package/dist/TopPagesCard-BDeA997A.js +1 -0
- package/dist/TopPagesCard-CTozhOr_.mjs +159 -0
- package/dist/TrafficSourcesCard-BxtCKsqx.mjs +197 -0
- package/dist/TrafficSourcesCard-C3ziDTUL.js +1 -0
- package/dist/View-CsudjxCE.mjs +30 -0
- package/dist/View-Dw_wA6kK.js +1 -0
- package/dist/VisitorStatsCard-BmByE_Hi.js +1 -0
- package/dist/VisitorStatsCard-CXizEbVK.mjs +174 -0
- package/dist/_plugin-vue_export-helper-BHFhmbuH.js +1 -0
- package/dist/_plugin-vue_export-helper-CHgC5LLL.mjs +9 -0
- package/dist/agenda-DcatSSYQ.mjs +1165 -0
- package/dist/agenda-IOqtALWf.js +1 -0
- package/dist/array-CbATeQbk.js +1 -0
- package/dist/array-DT5pE8Gm.mjs +108 -0
- package/dist/availability-CMrRa5y2.mjs +269 -0
- package/dist/availability-Cf2YfMwM.js +1 -0
- package/dist/booking-data-DgJd0BcM.mjs +889 -0
- package/dist/booking-data-Di5GmH_8.js +1 -0
- package/dist/cms-core-modules.css +1 -2
- package/dist/countries-BTPvmrsb.mjs +4 -0
- package/dist/countries-CgZ081No.js +1 -0
- package/dist/exceptions-CI0B4xVj.js +1 -0
- package/dist/exceptions-YCQkHa6a.mjs +646 -0
- package/dist/google-CvtuJwgk.mjs +4 -0
- package/dist/google-D4N3gb01.js +1 -0
- package/dist/index-4tjmIans.js +1 -0
- package/dist/index-9HVlmvK3.js +1 -0
- package/dist/index-A2kp8Isi.js +75 -0
- package/dist/index-B5aBwdxY.js +54 -0
- package/dist/index-BFLV54kw.mjs +3843 -0
- package/dist/index-BWDwEd8D.mjs +24 -0
- package/dist/index-BfBBm9uY.mjs +24 -0
- package/dist/index-BhWvXMOp.mjs +176 -0
- package/dist/index-BiT55eU0.js +58 -0
- package/dist/index-Bkq58CeQ.mjs +22 -0
- package/dist/index-BzWmWCo5.mjs +1187 -0
- package/dist/index-CJQQBRLY.js +1 -0
- package/dist/index-CQkOH2_3.mjs +24 -0
- package/dist/index-CSxYBeVA.js +1 -0
- package/dist/index-CU-tbS5W.mjs +24 -0
- package/dist/index-CZn2nDLv.mjs +34 -0
- package/dist/index-CkiNvRzs.js +1 -0
- package/dist/index-Co4ON2Di.js +1 -0
- package/dist/index-Cpnn_Pxd.mjs +24 -0
- package/dist/index-CpzDEMeC.mjs +1443 -0
- package/dist/index-CsVeM3PA.mjs +24 -0
- package/dist/index-CwqrAU-H.js +1 -0
- package/dist/index-CxETuRsG.js +1 -0
- package/dist/index-Cz-baGax.js +1 -0
- package/dist/index-D30apIn-.mjs +110 -0
- package/dist/index-DFQGVHTs.js +1 -0
- package/dist/index-DPd3waTN.js +1 -0
- package/dist/index-DRqJOqUR.mjs +3484 -0
- package/dist/index-DjWuIBxh.js +1 -0
- package/dist/index-Dnn2SCSl.js +1 -0
- package/dist/index-Dpl9sU6a.mjs +12 -0
- package/dist/index-DrXxXB2F.mjs +138 -0
- package/dist/index-G7cIlnGN.js +158 -0
- package/dist/index-R2oUDsjx.js +1 -0
- package/dist/index-RLz1QPrf.mjs +203 -0
- package/dist/index-UtjLbLw-.js +1 -0
- package/dist/index-V78huaSJ.mjs +442 -0
- package/dist/index-cOnxXTbF.mjs +24 -0
- package/dist/index-hlylYYgy.mjs +24 -0
- package/dist/index-ijdf0d9-.js +1 -0
- package/dist/index-vHmvbEwa.js +35 -0
- package/dist/index-wjkEPsNx.mjs +2940 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +806 -1095
- package/dist/interpolation-CHn59tIC.js +1 -0
- package/dist/interpolation-w7IRDJwK.mjs +180 -0
- package/dist/orders-C65SlpJy.mjs +618 -0
- package/dist/orders-XVzWAgG1.js +1 -0
- package/dist/payment-C3ohkehF.mjs +1080 -0
- package/dist/payment-Dfr-Ro-a.js +1 -0
- package/dist/regular-1LXNPviB.js +1 -0
- package/dist/regular-_05oq5Tx.mjs +1101 -0
- package/dist/resources-CYOb5Bl6.mjs +811 -0
- package/dist/resources-CxeFd57z.js +1 -0
- package/dist/server-handlers.cjs.js +1 -1
- package/dist/server-handlers.mjs +996 -1049
- package/dist/src/appointments/chat-components/AgendaOpeningHoursCard.vue.d.ts +15 -0
- package/dist/src/appointments/chat-components/AppointmentDetailsCard.vue.d.ts +14 -0
- package/dist/src/appointments/chat-components/AppointmentEditor.vue.d.ts +14 -0
- package/dist/src/appointments/chat-components/AppointmentListTable.vue.d.ts +14 -0
- package/dist/src/appointments/components/create/StepNavigation.vue.d.ts +32 -0
- package/dist/src/appointments/components/create/regular/Step1.vue.d.ts +2 -0
- package/dist/src/appointments/components/create/regular/Step2.vue.d.ts +2 -0
- package/dist/src/appointments/components/create/regular/Step3.vue.d.ts +2 -0
- package/dist/src/appointments/components/create/regular/Step4.vue.d.ts +2 -0
- package/dist/src/appointments/components/edit/CustomerInformationFieldEditorDialog.vue.d.ts +24 -0
- package/dist/src/appointments/components/edit/EditLayout.vue.d.ts +17 -0
- package/dist/src/appointments/components/edit/Event24hSidebar.vue.d.ts +2 -0
- package/dist/src/appointments/components/edit/EventDialog/ApproveReservationDialog.vue.d.ts +8 -0
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +136 -0
- package/dist/src/appointments/components/edit/EventDialog/CancelReservationDialog.vue.d.ts +8 -0
- package/dist/src/appointments/components/edit/EventDialog/EventDialog.vue.d.ts +11 -0
- package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +55 -0
- package/dist/src/appointments/components/edit/EventDialog/RejectReservationDialog.vue.d.ts +8 -0
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +87 -0
- package/dist/src/appointments/components/edit/EventDialog/TimelineChart.vue.d.ts +24 -0
- package/dist/src/appointments/components/edit/EventDialog/TransferReservationDialog.vue.d.ts +4 -0
- package/dist/src/appointments/components/edit/EventTimeIndicator.vue.d.ts +12 -0
- package/dist/src/appointments/components/edit/EventTimeline.vue.d.ts +48 -0
- package/dist/src/appointments/components/edit/EventView.vue.d.ts +9 -0
- package/dist/src/appointments/components/edit/ExceptionDialog.vue.d.ts +29 -0
- package/dist/src/appointments/components/edit/MetadataSchemaEditorDialog.vue.d.ts +12 -0
- package/dist/src/appointments/components/edit/NewReservationDialog/CustomerInformation.vue.d.ts +10 -0
- package/dist/src/appointments/components/edit/NewReservationDialog/NewReservationDialog.vue.d.ts +26 -0
- package/dist/src/appointments/components/edit/NewReservationDialog/QuickReservationAdder.vue.d.ts +26 -0
- package/dist/src/appointments/components/edit/NewReservationDialog/ReservationLines.vue.d.ts +31 -0
- package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +21 -0
- package/dist/src/appointments/components/edit/PaymentAddons/Addon.vue.d.ts +22 -0
- package/dist/src/appointments/components/edit/PaymentAddons/AddonList.vue.d.ts +5 -0
- package/dist/src/appointments/components/edit/PaymentAddons/index.vue.d.ts +15 -0
- package/dist/src/appointments/components/edit/ResourceEditorDialog.vue.d.ts +13 -0
- package/dist/src/appointments/components/edit/dashboard/Timeline.vue.d.ts +36 -0
- package/dist/src/appointments/components/edit/dashboard/timeline/ResourceSelector.vue.d.ts +50 -0
- package/dist/src/appointments/index.d.ts +12 -9
- package/dist/src/appointments/index.vue.d.ts +22 -0
- package/dist/src/appointments/metadata.d.ts +1 -1
- package/dist/src/appointments/pages/Overview.vue.d.ts +4 -0
- package/dist/src/appointments/pages/create/index.vue.d.ts +2 -0
- package/dist/src/appointments/pages/create/regular.vue.d.ts +6 -0
- package/dist/src/appointments/pages/edit/agenda.vue.d.ts +4 -0
- package/dist/src/appointments/pages/edit/availability.vue.d.ts +2 -0
- package/dist/src/appointments/pages/edit/booking-data.vue.d.ts +65 -0
- package/dist/src/appointments/pages/edit/index.vue.d.ts +2 -0
- package/dist/src/appointments/pages/edit/payment.vue.d.ts +2 -0
- package/dist/src/appointments/pages/edit/resources.vue.d.ts +28 -0
- package/dist/src/appointments/routes.d.ts +6 -3
- package/dist/src/contentManager/components/components/ComponentDialog.vue.d.ts +12 -0
- package/dist/src/contentManager/components/components/ComponentGridItem.vue.d.ts +16 -0
- package/dist/src/contentManager/components/content-editor/ApiDocs.vue.d.ts +2 -0
- package/dist/src/contentManager/components/content-editor/ContentLayout.vue.d.ts +49 -0
- package/dist/src/contentManager/components/content-editor/ContentSettings.vue.d.ts +24 -0
- package/dist/src/contentManager/components/content-editor/ContentStructuredContentSections.vue.d.ts +4 -0
- package/dist/src/contentManager/components/content-editor/Header.vue.d.ts +64 -0
- package/dist/src/contentManager/components/content-editor/LivePreviewWrapper.vue.d.ts +53 -0
- package/dist/src/contentManager/components/content-editor/Locales.vue.d.ts +44 -0
- package/dist/src/contentManager/components/content-editor/NewSectionDialog.vue.d.ts +21 -0
- package/dist/src/contentManager/components/content-editor/PageSettings.vue.d.ts +2 -0
- package/dist/src/contentManager/components/content-editor/SEO.vue.d.ts +14 -0
- package/dist/src/contentManager/components/content-editor/SidebarSectionWrapper.vue.d.ts +39 -0
- package/dist/src/contentManager/components/content-editor/Status.vue.d.ts +2 -0
- package/dist/src/contentManager/components/content-editor/Versions.vue.d.ts +63 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Button.vue.d.ts +94 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Card.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Column.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Divider.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/EmptySpace.vue.d.ts +94 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Heading.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Image.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/LockBlocks.d.ts +0 -15
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Map.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Paragraph.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.vue.d.ts +115 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.vue.d.ts +115 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/TrailingNodeInContainers.d.ts +1 -4
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Video.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/extension-details/DetailsNodeView.vue.d.ts +92 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/NodeLabel.vue.d.ts +108 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/ResizeHandlers.vue.d.ts +20 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/TopMarginDragger.vue.d.ts +104 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuClassBuilder.vue.d.ts +19 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuLinkBuilder.vue.d.ts +19 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuToggleButton.vue.d.ts +29 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/DefaultBubbleMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +19 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/EmojiMenu.vue.d.ts +8 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/NewNodeView.vue.d.ts +47 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/SlashMenu.vue.d.ts +6 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/SlashMenuButton.vue.d.ts +17 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/ButtonMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/CardMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/ColumnMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/DividerMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/EmptySpaceMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/HeadingMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/ImageMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/MapMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/RowMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/StackMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/TextMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/VideoMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/index.d.ts +132 -12
- package/dist/src/contentManager/components/overview/CollectionDialog.vue.d.ts +30 -0
- package/dist/src/contentManager/components/overview/CollectionsGridView.vue.d.ts +18 -0
- package/dist/src/contentManager/components/overview/ContentEntryContextMenu.vue.d.ts +27 -0
- package/dist/src/contentManager/components/overview/FilterPopover.vue.d.ts +2 -0
- package/dist/src/contentManager/components/overview/ListView.vue.d.ts +12 -0
- package/dist/src/contentManager/components/styling/ButtonStyleDialog.vue.d.ts +24 -0
- package/dist/src/contentManager/components/styling/CardStyleDialog.vue.d.ts +24 -0
- package/dist/src/contentManager/components/styling/SectionStyleDialog.vue.d.ts +24 -0
- package/dist/src/contentManager/index.d.ts +14 -5
- package/dist/src/contentManager/index.vue.d.ts +22 -0
- package/dist/src/contentManager/metadata.d.ts +1 -1
- package/dist/src/contentManager/pages/Components.vue.d.ts +27 -0
- package/dist/src/contentManager/pages/ContentEditor.vue.d.ts +14 -0
- package/dist/src/contentManager/pages/Entries.vue.d.ts +16 -0
- package/dist/src/contentManager/pages/GlobalStyling.vue.d.ts +117 -0
- package/dist/src/contentManager/pages/Overview.vue.d.ts +57 -0
- package/dist/src/contentManager/routes.d.ts +12 -3
- package/dist/src/custom/index.d.ts +2 -2
- package/dist/src/custom/index.vue.d.ts +2 -0
- package/dist/src/custom/pages/View.vue.d.ts +2 -0
- package/dist/src/custom/routes.d.ts +1 -1
- package/dist/src/googleAnalytics/chat-components/CountryBreakdownCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/DeviceBreakdownCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/PeakHoursCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/RealtimeCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/SearchTermsCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/TopPagesCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/TrafficSourcesCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/VisitorStatsCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/components/seo-health/SeoClicksChart.vue.d.ts +5 -0
- package/dist/src/googleAnalytics/components/seo-health/SeoImpressionsChart.vue.d.ts +5 -0
- package/dist/src/googleAnalytics/components/seo-health/SeoKeywordsTab.vue.d.ts +5 -0
- package/dist/src/googleAnalytics/components/seo-health/SeoKpiCards.vue.d.ts +10 -0
- package/dist/src/googleAnalytics/components/seo-health/SeoMappingTab.vue.d.ts +5 -0
- package/dist/src/googleAnalytics/components/seo-health/SeoPagesTab.vue.d.ts +5 -0
- package/dist/src/googleAnalytics/components/seo-health/SeoRankingDistribution.vue.d.ts +5 -0
- package/dist/src/googleAnalytics/index.d.ts +10 -10
- package/dist/src/googleAnalytics/index.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Acquisition.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Audience.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Content.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Overview.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/SeoHealth.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/routes.d.ts +1 -1
- package/dist/src/mailTemplates/components/TemplateList.vue.d.ts +2 -0
- package/dist/src/mailTemplates/index.d.ts +3 -3
- package/dist/src/mailTemplates/index.vue.d.ts +22 -0
- package/dist/src/mailTemplates/metadata.d.ts +1 -1
- package/dist/src/mailTemplates/pages/Detail.vue.d.ts +14 -0
- package/dist/src/mailTemplates/pages/Overview.vue.d.ts +14 -0
- package/dist/src/mailTemplates/routes.d.ts +1 -1
- package/dist/src/productCollections/components/detail/Main.vue.d.ts +2 -0
- package/dist/src/productCollections/components/detail/SEO.vue.d.ts +2 -0
- package/dist/src/productCollections/components/detail/Status.vue.d.ts +2 -0
- package/dist/src/productCollections/components/overview/ListView.vue.d.ts +12 -0
- package/dist/src/productCollections/index.d.ts +3 -3
- package/dist/src/productCollections/index.vue.d.ts +22 -0
- package/dist/src/productCollections/metadata.d.ts +1 -1
- package/dist/src/productCollections/pages/Detail.vue.d.ts +14 -0
- package/dist/src/productCollections/pages/Overview.vue.d.ts +16 -0
- package/dist/src/productCollections/routes.d.ts +1 -1
- package/dist/src/products/chat-components/ProductDetailsCard.vue.d.ts +14 -0
- package/dist/src/products/components/detail/Collections.vue.d.ts +14 -0
- package/dist/src/products/components/detail/Inventory.vue.d.ts +2 -0
- package/dist/src/products/components/detail/Main.vue.d.ts +2 -0
- package/dist/src/products/components/detail/NewSection.vue.d.ts +2 -0
- package/dist/src/products/components/detail/Price.vue.d.ts +2 -0
- package/dist/src/products/components/detail/SEO.vue.d.ts +2 -0
- package/dist/src/products/components/detail/Shipping.vue.d.ts +2 -0
- package/dist/src/products/components/detail/Status.vue.d.ts +2 -0
- package/dist/src/products/components/detail/price/UnitPriceDialog.vue.d.ts +17 -0
- package/dist/src/products/components/detail/variants/Option.vue.d.ts +33 -0
- package/dist/src/products/components/detail/variants/VariantList.vue.d.ts +38 -0
- package/dist/src/products/components/overview/FilterPopover.vue.d.ts +2 -0
- package/dist/src/products/components/overview/GridView.vue.d.ts +12 -0
- package/dist/src/products/components/overview/ListView.vue.d.ts +12 -0
- package/dist/src/products/components/overview/ProductContextMenu.vue.d.ts +27 -0
- package/dist/src/products/index.d.ts +4 -4
- package/dist/src/products/index.vue.d.ts +22 -0
- package/dist/src/products/metadata.d.ts +1 -1
- package/dist/src/products/pages/Detail.vue.d.ts +14 -0
- package/dist/src/products/pages/Overview.vue.d.ts +16 -0
- package/dist/src/products/routes.d.ts +1 -1
- package/dist/src/promoCodes/components/create/DateRange.vue.d.ts +2 -0
- package/dist/src/promoCodes/components/create/MultiCodes.vue.d.ts +2 -0
- package/dist/src/promoCodes/components/create/Note.vue.d.ts +2 -0
- package/dist/src/promoCodes/components/create/SingleCode.vue.d.ts +2 -0
- package/dist/src/promoCodes/components/create/TypeAndValue/TypeDetailDialog.vue.d.ts +6 -0
- package/dist/src/promoCodes/components/create/TypeAndValue/TypeManageDialog.vue.d.ts +18 -0
- package/dist/src/promoCodes/components/create/TypeAndValue/index.vue.d.ts +2 -0
- package/dist/src/promoCodes/index.d.ts +3 -3
- package/dist/src/promoCodes/index.vue.d.ts +22 -0
- package/dist/src/promoCodes/metadata.d.ts +1 -1
- package/dist/src/promoCodes/pages/Create.vue.d.ts +16 -0
- package/dist/src/promoCodes/pages/Detail.vue.d.ts +14 -0
- package/dist/src/promoCodes/pages/Find.vue.d.ts +16 -0
- package/dist/src/promoCodes/routes.d.ts +1 -1
- package/dist/src/push-notifications/components/PreviewAndroid.vue.d.ts +28 -0
- package/dist/src/push-notifications/components/PreviewIPhone.vue.d.ts +28 -0
- package/dist/src/push-notifications/components/PushPreview.vue.d.ts +28 -0
- package/dist/src/push-notifications/index.d.ts +3 -3
- package/dist/src/push-notifications/index.vue.d.ts +22 -0
- package/dist/src/push-notifications/metadata.d.ts +1 -1
- package/dist/src/push-notifications/pages/SendPush.vue.d.ts +14 -0
- package/dist/src/push-notifications/routes.d.ts +1 -1
- package/dist/src/shared/BrandLogo.vue.d.ts +12 -0
- package/dist/src/shared/DrawerToggle.vue.d.ts +60 -0
- package/dist/src/shared/VerticalToggle.vue.d.ts +60 -0
- package/dist/src/shippingOptions/components/detail/Condition.vue.d.ts +2 -0
- package/dist/src/shippingOptions/components/detail/Countries.vue.d.ts +2 -0
- package/dist/src/shippingOptions/components/detail/Example.vue.d.ts +2 -0
- package/dist/src/shippingOptions/components/detail/Main.vue.d.ts +2 -0
- package/dist/src/shippingOptions/components/overview/ListView.vue.d.ts +12 -0
- package/dist/src/shippingOptions/index.d.ts +3 -3
- package/dist/src/shippingOptions/index.vue.d.ts +22 -0
- package/dist/src/shippingOptions/metadata.d.ts +1 -1
- package/dist/src/shippingOptions/pages/Detail.vue.d.ts +14 -0
- package/dist/src/shippingOptions/pages/Overview.vue.d.ts +16 -0
- package/dist/src/shippingOptions/routes.d.ts +1 -1
- package/dist/src/table/components/DataTable.vue.d.ts +18 -0
- package/dist/src/table/components/DataTableAction.vue.d.ts +14 -0
- package/dist/src/table/components/DataTableMobileRowActionDrawer.vue.d.ts +4 -0
- package/dist/src/table/components/DataTablePagination.vue.d.ts +6 -0
- package/dist/src/table/components/actions/ActionDialog.vue.d.ts +19 -0
- package/dist/src/table/components/actions/CtaActionDialog.vue.d.ts +4 -0
- package/dist/src/table/components/columns/ColumnDropdown.vue.d.ts +2 -0
- package/dist/src/table/components/columns/ColumnEditorDialog.vue.d.ts +34 -0
- package/dist/src/table/components/columns/DialogTableColumnItem.vue.d.ts +12 -0
- package/dist/src/table/components/date-range-filter/DateRangeFilter.vue.d.ts +2 -0
- package/dist/src/table/components/date-range-filter/DateRangeSettingsDialog.vue.d.ts +27 -0
- package/dist/src/table/components/filters/FilterDialog.vue.d.ts +12 -0
- package/dist/src/table/components/filters/Filters.vue.d.ts +27 -0
- package/dist/src/table/components/search/Search.vue.d.ts +2 -0
- package/dist/src/table/components/sort/SortMode.vue.d.ts +2 -0
- package/dist/src/table/components/sort/SortModeSettingsDialog.vue.d.ts +18 -0
- package/dist/src/table/components/stats/StatDialog.vue.d.ts +12 -0
- package/dist/src/table/components/stats/Stats.vue.d.ts +27 -0
- package/dist/src/table/flow-builder-extensions/TableRowEditor.vue.d.ts +16 -0
- package/dist/src/table/flow-builder-extensions/row-item.d.ts +17 -3
- package/dist/src/table/index.d.ts +2 -2
- package/dist/src/table/index.vue.d.ts +22 -0
- package/dist/src/table/pages/TableView.vue.d.ts +54 -0
- package/dist/src/table/routes.d.ts +1 -1
- package/dist/src/types/index.d.ts +0 -6
- package/dist/utils-CanmrIWO.mjs +47 -0
- package/dist/utils-Yd6F5mea.js +3 -0
- package/dist/vee-validate-zod-ByykgYKJ.js +1 -0
- package/dist/vee-validate-zod-DNjTLCgh.mjs +4402 -0
- package/package.json +56 -55
- package/dist/Acquisition-DypEyPSO.js +0 -1
- package/dist/Acquisition-TCNX-th6.mjs +0 -308
- package/dist/AgendaOpeningHoursCard-BIhm0vpV.js +0 -1
- package/dist/AgendaOpeningHoursCard-BKUdJxRI.mjs +0 -133
- package/dist/AppointmentDetailsCard-C5rQ5jsW.js +0 -1
- package/dist/AppointmentDetailsCard-NRHeNP2L.mjs +0 -111
- package/dist/AppointmentEditor-BcF8CiD-.mjs +0 -150
- package/dist/AppointmentEditor-BlhFtoCm.js +0 -1
- package/dist/AppointmentListTable-B-ReBVtV.js +0 -1
- package/dist/AppointmentListTable-DHmy-iid.mjs +0 -129
- package/dist/Audience-CfWHjjg8.mjs +0 -394
- package/dist/Audience-Cj4TyauW.js +0 -1
- package/dist/Components-BehelN4r.js +0 -1
- package/dist/Components-CR6zukUU.mjs +0 -468
- package/dist/Content-C5Iye3t0.mjs +0 -257
- package/dist/Content-eOfBx52Y.js +0 -1
- package/dist/ContentEditor-BgL4qEeg.mjs +0 -26835
- package/dist/ContentEditor-Tlu3w0Hu.js +0 -462
- package/dist/CountryBreakdownCard-CWVyB8be.mjs +0 -151
- package/dist/CountryBreakdownCard-Db-pMiNe.js +0 -1
- package/dist/Create-B1it8S4m.js +0 -1
- package/dist/Create-DbYi0FAI.mjs +0 -907
- package/dist/DateFormatter-DLrDYkby.mjs +0 -630
- package/dist/DateFormatter-Dni0Oq8r.js +0 -1
- package/dist/Detail-D-eahJGO.mjs +0 -21
- package/dist/Detail-D0kdPPIm.mjs +0 -2757
- package/dist/Detail-DAafePYi.mjs +0 -485
- package/dist/Detail-DYpv4fYg.js +0 -1
- package/dist/Detail-Dc_ui4LM.js +0 -1
- package/dist/Detail-DccUekl_.js +0 -1
- package/dist/Detail-Dhz0V0Vf.js +0 -1
- package/dist/Detail-DjnGY0F8.mjs +0 -282
- package/dist/Detail-DplAitHg.mjs +0 -447
- package/dist/Detail-SugyeSxb.js +0 -1
- package/dist/DeviceBreakdownCard-CzxZT6To.js +0 -1
- package/dist/DeviceBreakdownCard-eEwPjzKl.mjs +0 -115
- package/dist/EditLayout-Bnz9q_jd.js +0 -1
- package/dist/EditLayout-J_DGXb8v.mjs +0 -99
- package/dist/Entries-CgpWg6fE.js +0 -1
- package/dist/Entries-CkGTXcAq.mjs +0 -575
- package/dist/Find-Bz0TNJzk.mjs +0 -164
- package/dist/Find-D-ItTXaZ.js +0 -1
- package/dist/GlobalStyling-CSQPF7o_.mjs +0 -1162
- package/dist/GlobalStyling-DabldMZh.js +0 -15
- package/dist/NewReservationDialog-BhIiY2B9.js +0 -1
- package/dist/NewReservationDialog-CN49aGcM.mjs +0 -1002
- package/dist/OrderDetailDialog-BJ01DZFe.js +0 -1
- package/dist/OrderDetailDialog-CoVQ_rzs.mjs +0 -215
- package/dist/Overview-9FMgn5hT.mjs +0 -492
- package/dist/Overview-BOOwMQ-c.mjs +0 -636
- package/dist/Overview-Biz3h60w.js +0 -1
- package/dist/Overview-C2K2ofdS.js +0 -1
- package/dist/Overview-CFHOXP9N.mjs +0 -123
- package/dist/Overview-CTJe7J5_.js +0 -1
- package/dist/Overview-Cvj2i9eW.js +0 -1
- package/dist/Overview-D2I1F8Dm.mjs +0 -21
- package/dist/Overview-DFOc9emt.mjs +0 -345
- package/dist/Overview-Dmhfb94Y.js +0 -1
- package/dist/Overview-PPzv7weG.mjs +0 -450
- package/dist/Overview-qFKcXHVF.js +0 -1
- package/dist/Overview-xkmYYTae.mjs +0 -133
- package/dist/Overview-yPsLvR2c.js +0 -1
- package/dist/PeakHoursCard-CtgEP-ez.mjs +0 -157
- package/dist/PeakHoursCard-DPeoMyhu.js +0 -1
- package/dist/ProductDetailsCard-B0WhmzO-.mjs +0 -98
- package/dist/ProductDetailsCard-C1ROuH6l.js +0 -1
- package/dist/RealtimeCard-DQno-Okz.js +0 -1
- package/dist/RealtimeCard-dR-g1iDo.mjs +0 -92
- package/dist/ReservationDetailDialog-Cdo6h0RD.mjs +0 -2163
- package/dist/ReservationDetailDialog-DZTFD2xI.js +0 -349
- package/dist/SearchTermsCard-BXJSXz_k.js +0 -1
- package/dist/SearchTermsCard-DsaxLKwP.mjs +0 -146
- package/dist/SendPush-Bssi-OZD.mjs +0 -150
- package/dist/SendPush-BuaYboRH.js +0 -1
- package/dist/SeoHealth-CP-kL0us.js +0 -1
- package/dist/SeoHealth-Cxp_Gb3Y.mjs +0 -459
- package/dist/TableView-7iwBkQ_k.mjs +0 -4757
- package/dist/TableView-BB_oIYYZ.js +0 -4
- package/dist/TemplateList-CNcM_Kgq.mjs +0 -56
- package/dist/TemplateList-VuPcBUJO.js +0 -1
- package/dist/TopPagesCard-CvDECn3_.mjs +0 -117
- package/dist/TopPagesCard-DNdATXJE.js +0 -1
- package/dist/TrafficSourcesCard-BLpBr7u0.mjs +0 -151
- package/dist/TrafficSourcesCard-_3gRUCw3.js +0 -1
- package/dist/View-DSnUHI7h.mjs +0 -30
- package/dist/View-Dbcfpdqh.js +0 -1
- package/dist/VisitorStatsCard-CFEnXSjF.mjs +0 -185
- package/dist/VisitorStatsCard-C_jhQxDW.js +0 -1
- package/dist/_plugin-vue_export-helper-5u7tqpWC.js +0 -1
- package/dist/_plugin-vue_export-helper-BJQSo0im.mjs +0 -8
- package/dist/agenda-CzMRcQTA.mjs +0 -989
- package/dist/agenda-D4zWRYSQ.js +0 -1
- package/dist/appointments-9syR5TZE.js +0 -1
- package/dist/appointments-BBmOJMhM.mjs +0 -23
- package/dist/array-BH1uH7XT.js +0 -1
- package/dist/array-DnDL9cFz.mjs +0 -98
- package/dist/availability-CAXB7Yd6.js +0 -1
- package/dist/availability-Dp7eF-ZK.mjs +0 -215
- package/dist/booking-data-Bysf6e5x.mjs +0 -724
- package/dist/booking-data-C6SGjC2X.js +0 -1
- package/dist/chunk-DQi1bQcV.js +0 -1
- package/dist/contentManager-D7JxXCwE.js +0 -1
- package/dist/contentManager-tfy0x1LD.mjs +0 -22
- package/dist/context-AQKfnJ4t.mjs +0 -3809
- package/dist/context-ubyMq9Xe.js +0 -54
- package/dist/core-Dhgr4ctC.mjs +0 -202
- package/dist/core-_HKfBlaZ.js +0 -1
- package/dist/countries-MXLT3mVe.mjs +0 -4
- package/dist/countries-OCd5qPxG.js +0 -1
- package/dist/create-BfNc2C7N.js +0 -1
- package/dist/create-C7JlIlIh.mjs +0 -95
- package/dist/custom-BwN9-6Mb.js +0 -1
- package/dist/custom-INNwaWla.mjs +0 -13
- package/dist/dist-BCVg7FKM.js +0 -1
- package/dist/dist-DIhK9VWh.mjs +0 -3045
- package/dist/edit-BiI2VG60.js +0 -35
- package/dist/edit-DD3iFBEh.mjs +0 -1097
- package/dist/exceptions-DICMaDcH.mjs +0 -462
- package/dist/exceptions-DpWqMNuG.js +0 -1
- package/dist/google-Bcc4XZnV.mjs +0 -4
- package/dist/google-DTSRmJ51.js +0 -1
- package/dist/googleAnalytics-BSaqRR_L.js +0 -1
- package/dist/googleAnalytics-Cg-iWblZ.mjs +0 -47
- package/dist/interpolation-B8OzkMyi.mjs +0 -131
- package/dist/interpolation-DpAqtGOW.js +0 -1
- package/dist/lib-4wSi00Vr.js +0 -1
- package/dist/lib-BZgXUui5.mjs +0 -198
- package/dist/line-DJdnFNI7.js +0 -75
- package/dist/line-tYLnEDGV.mjs +0 -1500
- package/dist/mailTemplates-BNk8fhVS.mjs +0 -23
- package/dist/mailTemplates-DswHzyQe.js +0 -1
- package/dist/orders-CIc0JlKX.mjs +0 -512
- package/dist/orders-DwPSi_pD.js +0 -1
- package/dist/payment-BsNWFaDm.js +0 -1
- package/dist/payment-Ced5_dpa.mjs +0 -718
- package/dist/productCollections-Cuvw_8zC.js +0 -1
- package/dist/productCollections-D0AxRlzr.mjs +0 -23
- package/dist/products-DUD-ZMkR.mjs +0 -22
- package/dist/products-DvX9B-Ul.js +0 -1
- package/dist/promoCodes-BCWqN6w4.mjs +0 -23
- package/dist/promoCodes-CEZ4LYot.js +0 -1
- package/dist/push-notifications-BGp4XWo9.js +0 -1
- package/dist/push-notifications-C7W7KuzR.mjs +0 -23
- package/dist/regular-BCFrS6lK.mjs +0 -908
- package/dist/regular-DBqPgT8C.js +0 -1
- package/dist/resources-DwsMmWgm.mjs +0 -669
- package/dist/resources-Dz81GkHe.js +0 -1
- package/dist/shippingOptions-C3NEJff1.mjs +0 -23
- package/dist/shippingOptions-Cy040ZW1.js +0 -1
- package/dist/single-container-BJmmqq65.mjs +0 -468
- package/dist/single-container-Xoo0Xzxv.js +0 -58
- package/dist/src/vue-shim.d.ts +0 -7
- package/dist/table-DWw0fs3S.js +0 -1
- package/dist/table-LXt5DQOL.mjs +0 -23
- package/dist/utils-CVIHqQsU.js +0 -3
- package/dist/utils-h3owcMtS.mjs +0 -37
- package/dist/vee-validate-zod-BmXMJo8W.js +0 -1
- package/dist/vee-validate-zod-D9dZzbWZ.mjs +0 -4985
- package/dist/xy-container-CuQSwrtB.mjs +0 -3180
- package/dist/xy-container-_6YpscZh.js +0 -158
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { defineComponent as T, computed as L, ref as x, onMounted as j, resolveComponent as P, openBlock as d, createElementBlock as l, unref as r, createVNode as i, createElementVNode as t, toDisplayString as a, Fragment as E, renderList as M, normalizeClass as V, createCommentVNode as D, withCtx as F, createTextVNode as R } from "vue";
|
|
2
|
+
import { Loader2 as B, CalendarDays as g, Mail as U, Clock as O, Users as q, ExternalLink as G } from "lucide-vue-next";
|
|
3
|
+
const H = { class: "w-full" }, J = {
|
|
4
|
+
key: 0,
|
|
5
|
+
class: "flex items-center gap-2 py-3"
|
|
6
|
+
}, K = {
|
|
7
|
+
key: 1,
|
|
8
|
+
class: "text-xs text-destructive py-2"
|
|
9
|
+
}, Q = {
|
|
10
|
+
key: 2,
|
|
11
|
+
class: "rounded-xl border bg-background p-4 text-center"
|
|
12
|
+
}, W = {
|
|
13
|
+
key: 3,
|
|
14
|
+
class: "space-y-3"
|
|
15
|
+
}, X = { class: "flex items-start gap-3" }, Y = { class: "shrink-0 size-10 rounded-lg bg-primary/10 flex items-center justify-center" }, Z = { class: "flex-1 min-w-0" }, ee = { class: "text-sm font-semibold truncate" }, te = { class: "flex items-center gap-2 mt-1 flex-wrap" }, se = {
|
|
16
|
+
key: 0,
|
|
17
|
+
class: "text-xs font-medium"
|
|
18
|
+
}, re = { class: "grid grid-cols-2 gap-2 text-xs text-muted-foreground" }, ne = { class: "flex items-center gap-1.5" }, ae = { class: "truncate" }, oe = { class: "flex items-center gap-1.5" }, ie = { class: "flex items-center gap-1.5" }, de = { class: "flex items-center gap-1.5" }, ue = /* @__PURE__ */ T({
|
|
19
|
+
__name: "AppointmentDetailsCard",
|
|
20
|
+
props: {
|
|
21
|
+
toolName: {},
|
|
22
|
+
instanceId: {},
|
|
23
|
+
instanceName: {},
|
|
24
|
+
moduleType: {},
|
|
25
|
+
resolvedArgs: {},
|
|
26
|
+
status: {}
|
|
27
|
+
},
|
|
28
|
+
emits: ["submit"],
|
|
29
|
+
setup(v, { emit: b }) {
|
|
30
|
+
const { $useRoute: h, $useModuleApi: k } = useNuxtApp(), f = v, y = b, N = h(), I = L(() => N.params.slug), C = k(f.instanceId), p = x(!0), c = x(null), u = x([]);
|
|
31
|
+
async function z() {
|
|
32
|
+
const { name: s, email: o, date: m } = f.resolvedArgs || {};
|
|
33
|
+
if (!m) {
|
|
34
|
+
c.value = "No date provided", p.value = !1;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
p.value = !0, c.value = null;
|
|
38
|
+
try {
|
|
39
|
+
const e = new URLSearchParams();
|
|
40
|
+
s && e.set("name", s), o && e.set("email", o), m && e.set("date", m);
|
|
41
|
+
const A = await C.get(`/appointments/find?${e.toString()}`);
|
|
42
|
+
u.value = A.appointments || [], _({
|
|
43
|
+
count: u.value.length,
|
|
44
|
+
appointments: u.value.map((n) => ({
|
|
45
|
+
orderId: n.orderId,
|
|
46
|
+
reservationId: n.reservationId,
|
|
47
|
+
customerName: `${n.customerInfo?.firstName || ""} ${n.customerInfo?.lastName || ""}`.trim(),
|
|
48
|
+
email: n.customerInfo?.email,
|
|
49
|
+
date: n.date,
|
|
50
|
+
startTime: n.startTime,
|
|
51
|
+
endTime: n.endTime,
|
|
52
|
+
spots: n.spots,
|
|
53
|
+
status: n.reservationStatus || n.status,
|
|
54
|
+
price: n.reservationPrice
|
|
55
|
+
}))
|
|
56
|
+
});
|
|
57
|
+
} catch (e) {
|
|
58
|
+
c.value = e?.data?.statusMessage || e?.message || "Failed to find appointment", _(`Error finding appointment: ${c.value}`);
|
|
59
|
+
} finally {
|
|
60
|
+
p.value = !1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
j(() => {
|
|
64
|
+
z();
|
|
65
|
+
});
|
|
66
|
+
function _(s) {
|
|
67
|
+
f.status !== "completed" && y("submit", s);
|
|
68
|
+
}
|
|
69
|
+
const S = (s) => {
|
|
70
|
+
switch (s) {
|
|
71
|
+
case "approved":
|
|
72
|
+
return "text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20";
|
|
73
|
+
case "needs_approval":
|
|
74
|
+
return "text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20";
|
|
75
|
+
case "rejected":
|
|
76
|
+
case "cancelled":
|
|
77
|
+
return "text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";
|
|
78
|
+
default:
|
|
79
|
+
return "text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20";
|
|
80
|
+
}
|
|
81
|
+
}, $ = (s) => {
|
|
82
|
+
switch (s) {
|
|
83
|
+
case "approved":
|
|
84
|
+
return "Approved";
|
|
85
|
+
case "needs_approval":
|
|
86
|
+
return "Needs Approval";
|
|
87
|
+
case "rejected":
|
|
88
|
+
return "Rejected";
|
|
89
|
+
case "cancelled":
|
|
90
|
+
return "Cancelled";
|
|
91
|
+
case "confirmed":
|
|
92
|
+
return "Confirmed";
|
|
93
|
+
default:
|
|
94
|
+
return s || "Pending";
|
|
95
|
+
}
|
|
96
|
+
}, w = (s) => s == null ? "" : `€${s.toFixed(2)}`;
|
|
97
|
+
return (s, o) => {
|
|
98
|
+
const m = P("NuxtLink");
|
|
99
|
+
return d(), l("div", H, [
|
|
100
|
+
r(p) ? (d(), l("div", J, [
|
|
101
|
+
i(r(B), { class: "size-4 animate-spin text-muted-foreground" }),
|
|
102
|
+
o[0] || (o[0] = t("span", { class: "text-xs text-muted-foreground" }, "Searching appointments…", -1))
|
|
103
|
+
])) : r(c) ? (d(), l("div", K, a(r(c)), 1)) : r(u).length === 0 ? (d(), l("div", Q, [
|
|
104
|
+
i(r(g), { class: "size-8 text-muted-foreground mx-auto mb-2" }),
|
|
105
|
+
o[1] || (o[1] = t("p", { class: "text-sm text-muted-foreground" }, "No appointments found for the given criteria.", -1))
|
|
106
|
+
])) : (d(), l("div", W, [
|
|
107
|
+
(d(!0), l(E, null, M(r(u), (e) => (d(), l("div", {
|
|
108
|
+
key: e.reservationId || e.orderId,
|
|
109
|
+
class: "rounded-xl border bg-background p-3 space-y-3"
|
|
110
|
+
}, [
|
|
111
|
+
t("div", X, [
|
|
112
|
+
t("div", Y, [
|
|
113
|
+
i(r(g), { class: "size-5 text-primary" })
|
|
114
|
+
]),
|
|
115
|
+
t("div", Z, [
|
|
116
|
+
t("p", ee, a(e.customerInfo?.firstName) + " " + a(e.customerInfo?.lastName), 1),
|
|
117
|
+
t("div", te, [
|
|
118
|
+
t("span", {
|
|
119
|
+
class: V(["text-[10px] font-medium px-1.5 py-0.5 rounded-full uppercase", S(e.reservationStatus || e.status)])
|
|
120
|
+
}, a($(e.reservationStatus || e.status)), 3),
|
|
121
|
+
e.reservationPrice != null ? (d(), l("span", se, a(w(e.reservationPrice)), 1)) : D("", !0)
|
|
122
|
+
])
|
|
123
|
+
])
|
|
124
|
+
]),
|
|
125
|
+
t("div", re, [
|
|
126
|
+
t("div", ne, [
|
|
127
|
+
i(r(U), { class: "size-3" }),
|
|
128
|
+
t("span", ae, a(e.customerInfo?.email || "—"), 1)
|
|
129
|
+
]),
|
|
130
|
+
t("div", oe, [
|
|
131
|
+
i(r(g), { class: "size-3" }),
|
|
132
|
+
t("span", null, a(e.date), 1)
|
|
133
|
+
]),
|
|
134
|
+
t("div", ie, [
|
|
135
|
+
i(r(O), { class: "size-3" }),
|
|
136
|
+
t("span", null, a(e.startTime) + " – " + a(e.endTime), 1)
|
|
137
|
+
]),
|
|
138
|
+
t("div", de, [
|
|
139
|
+
i(r(q), { class: "size-3" }),
|
|
140
|
+
t("span", null, a(e.spots || 1) + " " + a((e.spots || 1) === 1 ? "spot" : "spots"), 1)
|
|
141
|
+
])
|
|
142
|
+
]),
|
|
143
|
+
i(m, {
|
|
144
|
+
to: `/projects/${r(I)}/modules/${v.instanceId}`,
|
|
145
|
+
class: "inline-flex items-center gap-1.5 text-xs text-primary hover:underline"
|
|
146
|
+
}, {
|
|
147
|
+
default: F(() => [
|
|
148
|
+
i(r(G), { class: "size-3" }),
|
|
149
|
+
o[2] || (o[2] = R(" Open in agenda ", -1))
|
|
150
|
+
]),
|
|
151
|
+
_: 1
|
|
152
|
+
}, 8, ["to"])
|
|
153
|
+
]))), 128))
|
|
154
|
+
]))
|
|
155
|
+
]);
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
export {
|
|
160
|
+
ue as default
|
|
161
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),o=require("lucide-vue-next"),h={class:"w-full"},S={key:0,class:"flex items-center gap-2 py-3"},B={key:1,class:"text-xs text-destructive py-2"},D={key:2,class:"rounded-xl border bg-background p-4 text-center"},I={key:3,class:"space-y-3"},C={class:"flex items-start gap-3"},z={class:"shrink-0 size-10 rounded-lg bg-primary/10 flex items-center justify-center"},T={class:"flex-1 min-w-0"},$={class:"text-sm font-semibold truncate"},w={class:"flex items-center gap-2 mt-1 flex-wrap"},A={key:0,class:"text-xs font-medium"},j={class:"grid grid-cols-2 gap-2 text-xs text-muted-foreground"},L={class:"flex items-center gap-1.5"},P={class:"truncate"},M={class:"flex items-center gap-1.5"},F={class:"flex items-center gap-1.5"},R={class:"flex items-center gap-1.5"},q=e.defineComponent({__name:"AppointmentDetailsCard",props:{toolName:{},instanceId:{},instanceName:{},moduleType:{},resolvedArgs:{},status:{}},emits:["submit"],setup(u,{emit:p}){const{$useRoute:f,$useModuleApi:g}=useNuxtApp(),d=u,x=p,v=f(),N=e.computed(()=>v.params.slug),k=g(d.instanceId),c=e.ref(!0),a=e.ref(null),l=e.ref([]);async function _(){const{name:s,email:n,date:i}=d.resolvedArgs||{};if(!i){a.value="No date provided",c.value=!1;return}c.value=!0,a.value=null;try{const t=new URLSearchParams;s&&t.set("name",s),n&&t.set("email",n),i&&t.set("date",i);const E=await k.get(`/appointments/find?${t.toString()}`);l.value=E.appointments||[],m({count:l.value.length,appointments:l.value.map(r=>({orderId:r.orderId,reservationId:r.reservationId,customerName:`${r.customerInfo?.firstName||""} ${r.customerInfo?.lastName||""}`.trim(),email:r.customerInfo?.email,date:r.date,startTime:r.startTime,endTime:r.endTime,spots:r.spots,status:r.reservationStatus||r.status,price:r.reservationPrice}))})}catch(t){a.value=t?.data?.statusMessage||t?.message||"Failed to find appointment",m(`Error finding appointment: ${a.value}`)}finally{c.value=!1}}e.onMounted(()=>{_()});function m(s){d.status!=="completed"&&x("submit",s)}const y=s=>{switch(s){case"approved":return"text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20";case"needs_approval":return"text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20";case"rejected":case"cancelled":return"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";default:return"text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20"}},b=s=>{switch(s){case"approved":return"Approved";case"needs_approval":return"Needs Approval";case"rejected":return"Rejected";case"cancelled":return"Cancelled";case"confirmed":return"Confirmed";default:return s||"Pending"}},V=s=>s==null?"":`€${s.toFixed(2)}`;return(s,n)=>{const i=e.resolveComponent("NuxtLink");return e.openBlock(),e.createElementBlock("div",h,[e.unref(c)?(e.openBlock(),e.createElementBlock("div",S,[e.createVNode(e.unref(o.Loader2),{class:"size-4 animate-spin text-muted-foreground"}),n[0]||(n[0]=e.createElementVNode("span",{class:"text-xs text-muted-foreground"},"Searching appointments…",-1))])):e.unref(a)?(e.openBlock(),e.createElementBlock("div",B,e.toDisplayString(e.unref(a)),1)):e.unref(l).length===0?(e.openBlock(),e.createElementBlock("div",D,[e.createVNode(e.unref(o.CalendarDays),{class:"size-8 text-muted-foreground mx-auto mb-2"}),n[1]||(n[1]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"},"No appointments found for the given criteria.",-1))])):(e.openBlock(),e.createElementBlock("div",I,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),t=>(e.openBlock(),e.createElementBlock("div",{key:t.reservationId||t.orderId,class:"rounded-xl border bg-background p-3 space-y-3"},[e.createElementVNode("div",C,[e.createElementVNode("div",z,[e.createVNode(e.unref(o.CalendarDays),{class:"size-5 text-primary"})]),e.createElementVNode("div",T,[e.createElementVNode("p",$,e.toDisplayString(t.customerInfo?.firstName)+" "+e.toDisplayString(t.customerInfo?.lastName),1),e.createElementVNode("div",w,[e.createElementVNode("span",{class:e.normalizeClass(["text-[10px] font-medium px-1.5 py-0.5 rounded-full uppercase",y(t.reservationStatus||t.status)])},e.toDisplayString(b(t.reservationStatus||t.status)),3),t.reservationPrice!=null?(e.openBlock(),e.createElementBlock("span",A,e.toDisplayString(V(t.reservationPrice)),1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",j,[e.createElementVNode("div",L,[e.createVNode(e.unref(o.Mail),{class:"size-3"}),e.createElementVNode("span",P,e.toDisplayString(t.customerInfo?.email||"—"),1)]),e.createElementVNode("div",M,[e.createVNode(e.unref(o.CalendarDays),{class:"size-3"}),e.createElementVNode("span",null,e.toDisplayString(t.date),1)]),e.createElementVNode("div",F,[e.createVNode(e.unref(o.Clock),{class:"size-3"}),e.createElementVNode("span",null,e.toDisplayString(t.startTime)+" – "+e.toDisplayString(t.endTime),1)]),e.createElementVNode("div",R,[e.createVNode(e.unref(o.Users),{class:"size-3"}),e.createElementVNode("span",null,e.toDisplayString(t.spots||1)+" "+e.toDisplayString((t.spots||1)===1?"spot":"spots"),1)])]),e.createVNode(i,{to:`/projects/${e.unref(N)}/modules/${u.instanceId}`,class:"inline-flex items-center gap-1.5 text-xs text-primary hover:underline"},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ExternalLink),{class:"size-3"}),n[2]||(n[2]=e.createTextVNode(" Open in agenda ",-1))]),_:1},8,["to"])]))),128))]))])}}});exports.default=q;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { defineComponent as S, ref as p, reactive as B, onMounted as L, computed as T, openBlock as i, createElementBlock as r, unref as t, createVNode as u, createElementVNode as a, toDisplayString as N, createTextVNode as f, withDirectives as g, vModelText as v, createCommentVNode as k, createBlock as C } from "vue";
|
|
2
|
+
import { Loader2 as I, CalendarDays as z, User as V, Mail as R, Calendar as $, Save as j } from "lucide-vue-next";
|
|
3
|
+
const q = { class: "w-full" }, G = {
|
|
4
|
+
key: 0,
|
|
5
|
+
class: "flex items-center gap-2 py-3"
|
|
6
|
+
}, H = {
|
|
7
|
+
key: 1,
|
|
8
|
+
class: "text-xs text-destructive py-2"
|
|
9
|
+
}, J = {
|
|
10
|
+
key: 2,
|
|
11
|
+
class: "rounded-xl border bg-background p-4 text-center"
|
|
12
|
+
}, K = {
|
|
13
|
+
key: 3,
|
|
14
|
+
class: "rounded-xl border bg-background p-4 space-y-4"
|
|
15
|
+
}, O = { class: "flex items-center gap-2" }, P = { class: "text-[10px] text-muted-foreground ml-auto" }, Q = { class: "space-y-1.5" }, W = { class: "text-xs font-medium text-muted-foreground flex items-center gap-1.5" }, X = ["disabled"], Y = { class: "space-y-1.5" }, Z = { class: "text-xs font-medium text-muted-foreground flex items-center gap-1.5" }, ee = ["disabled"], te = { class: "space-y-1.5" }, se = { class: "text-xs font-medium text-muted-foreground flex items-center gap-1.5" }, ae = ["disabled"], oe = { class: "space-y-1.5" }, ne = { class: "text-xs font-medium text-muted-foreground flex items-center gap-1.5" }, le = ["disabled"], ie = {
|
|
16
|
+
key: 0,
|
|
17
|
+
class: "text-xs text-destructive"
|
|
18
|
+
}, de = {
|
|
19
|
+
key: 1,
|
|
20
|
+
class: "flex items-center gap-2 pt-1"
|
|
21
|
+
}, re = ["disabled"], ce = /* @__PURE__ */ S({
|
|
22
|
+
__name: "AppointmentEditor",
|
|
23
|
+
props: {
|
|
24
|
+
toolName: {},
|
|
25
|
+
instanceId: {},
|
|
26
|
+
instanceName: {},
|
|
27
|
+
moduleType: {},
|
|
28
|
+
resolvedArgs: {},
|
|
29
|
+
status: {}
|
|
30
|
+
},
|
|
31
|
+
emits: ["submit"],
|
|
32
|
+
setup(m, { emit: w }) {
|
|
33
|
+
const b = m, A = w, M = useModuleApi(b.instanceId), x = p(!0), c = p(!1), d = p(null), n = p(null), y = p(!1), s = B({
|
|
34
|
+
firstName: "",
|
|
35
|
+
lastName: "",
|
|
36
|
+
email: "",
|
|
37
|
+
date: ""
|
|
38
|
+
});
|
|
39
|
+
async function D() {
|
|
40
|
+
const o = b.resolvedArgs?.orderId;
|
|
41
|
+
if (!o) {
|
|
42
|
+
d.value = "No appointment ID provided", x.value = !1;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
x.value = !0, d.value = null;
|
|
46
|
+
try {
|
|
47
|
+
const e = await M.get(`/appointments/${o}`);
|
|
48
|
+
n.value = e;
|
|
49
|
+
const l = e.customerInfo || {};
|
|
50
|
+
s.firstName = l.firstName || "", s.lastName = l.lastName || "", s.email = l.email || "";
|
|
51
|
+
const U = e.reservations?.[0];
|
|
52
|
+
s.date = U?.date || "";
|
|
53
|
+
} catch (e) {
|
|
54
|
+
d.value = e?.data?.statusMessage || e?.message || "Failed to load appointment";
|
|
55
|
+
} finally {
|
|
56
|
+
x.value = !1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
L(() => {
|
|
60
|
+
D();
|
|
61
|
+
});
|
|
62
|
+
function _(o) {
|
|
63
|
+
b.status !== "completed" && A("submit", o);
|
|
64
|
+
}
|
|
65
|
+
const h = T(() => {
|
|
66
|
+
if (!n.value) return !1;
|
|
67
|
+
const o = n.value.customerInfo || {};
|
|
68
|
+
return s.firstName !== (o.firstName || "") || s.lastName !== (o.lastName || "") || s.email !== (o.email || "") || s.date !== (n.value.reservations?.[0]?.date || "");
|
|
69
|
+
});
|
|
70
|
+
async function E() {
|
|
71
|
+
if (!(!h.value || c.value)) {
|
|
72
|
+
c.value = !0;
|
|
73
|
+
try {
|
|
74
|
+
const o = {
|
|
75
|
+
appointmentId: n.value.id,
|
|
76
|
+
updatedFields: {
|
|
77
|
+
firstName: s.firstName,
|
|
78
|
+
lastName: s.lastName,
|
|
79
|
+
email: s.email,
|
|
80
|
+
date: s.date
|
|
81
|
+
},
|
|
82
|
+
previousValues: {
|
|
83
|
+
firstName: n.value.customerInfo?.firstName,
|
|
84
|
+
lastName: n.value.customerInfo?.lastName,
|
|
85
|
+
email: n.value.customerInfo?.email,
|
|
86
|
+
date: n.value.reservations?.[0]?.date
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
_(o), y.value = !0;
|
|
90
|
+
} catch (o) {
|
|
91
|
+
d.value = o?.data?.statusMessage || o?.message || "Failed to save changes";
|
|
92
|
+
} finally {
|
|
93
|
+
c.value = !1;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function F() {
|
|
98
|
+
_({ cancelled: !0, appointmentId: n.value?.id }), y.value = !0;
|
|
99
|
+
}
|
|
100
|
+
return (o, e) => (i(), r("div", q, [
|
|
101
|
+
t(x) ? (i(), r("div", G, [
|
|
102
|
+
u(t(I), { class: "size-4 animate-spin text-muted-foreground" }),
|
|
103
|
+
e[4] || (e[4] = a("span", { class: "text-xs text-muted-foreground" }, "Loading appointment…", -1))
|
|
104
|
+
])) : t(d) && !t(n) ? (i(), r("div", H, N(t(d)), 1)) : t(y) ? (i(), r("div", J, [
|
|
105
|
+
u(t(z), { class: "size-8 text-primary mx-auto mb-2" }),
|
|
106
|
+
e[5] || (e[5] = a("p", { class: "text-sm text-muted-foreground" }, "Changes submitted.", -1))
|
|
107
|
+
])) : t(n) ? (i(), r("div", K, [
|
|
108
|
+
a("div", O, [
|
|
109
|
+
u(t(z), { class: "size-5 text-primary" }),
|
|
110
|
+
e[6] || (e[6] = a("h3", { class: "text-sm font-semibold" }, "Edit Appointment", -1)),
|
|
111
|
+
a("span", P, " #" + N(t(n).id?.slice(0, 8)), 1)
|
|
112
|
+
]),
|
|
113
|
+
a("div", Q, [
|
|
114
|
+
a("label", W, [
|
|
115
|
+
u(t(V), { class: "size-3" }),
|
|
116
|
+
e[7] || (e[7] = f(" First Name ", -1))
|
|
117
|
+
]),
|
|
118
|
+
g(a("input", {
|
|
119
|
+
"onUpdate:modelValue": e[0] || (e[0] = (l) => t(s).firstName = l),
|
|
120
|
+
type: "text",
|
|
121
|
+
class: "w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",
|
|
122
|
+
disabled: m.status === "completed"
|
|
123
|
+
}, null, 8, X), [
|
|
124
|
+
[v, t(s).firstName]
|
|
125
|
+
])
|
|
126
|
+
]),
|
|
127
|
+
a("div", Y, [
|
|
128
|
+
a("label", Z, [
|
|
129
|
+
u(t(V), { class: "size-3" }),
|
|
130
|
+
e[8] || (e[8] = f(" Last Name ", -1))
|
|
131
|
+
]),
|
|
132
|
+
g(a("input", {
|
|
133
|
+
"onUpdate:modelValue": e[1] || (e[1] = (l) => t(s).lastName = l),
|
|
134
|
+
type: "text",
|
|
135
|
+
class: "w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",
|
|
136
|
+
disabled: m.status === "completed"
|
|
137
|
+
}, null, 8, ee), [
|
|
138
|
+
[v, t(s).lastName]
|
|
139
|
+
])
|
|
140
|
+
]),
|
|
141
|
+
a("div", te, [
|
|
142
|
+
a("label", se, [
|
|
143
|
+
u(t(R), { class: "size-3" }),
|
|
144
|
+
e[9] || (e[9] = f(" Email ", -1))
|
|
145
|
+
]),
|
|
146
|
+
g(a("input", {
|
|
147
|
+
"onUpdate:modelValue": e[2] || (e[2] = (l) => t(s).email = l),
|
|
148
|
+
type: "email",
|
|
149
|
+
class: "w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",
|
|
150
|
+
disabled: m.status === "completed"
|
|
151
|
+
}, null, 8, ae), [
|
|
152
|
+
[v, t(s).email]
|
|
153
|
+
])
|
|
154
|
+
]),
|
|
155
|
+
a("div", oe, [
|
|
156
|
+
a("label", ne, [
|
|
157
|
+
u(t($), { class: "size-3" }),
|
|
158
|
+
e[10] || (e[10] = f(" Date ", -1))
|
|
159
|
+
]),
|
|
160
|
+
g(a("input", {
|
|
161
|
+
"onUpdate:modelValue": e[3] || (e[3] = (l) => t(s).date = l),
|
|
162
|
+
type: "date",
|
|
163
|
+
class: "w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",
|
|
164
|
+
disabled: m.status === "completed"
|
|
165
|
+
}, null, 8, le), [
|
|
166
|
+
[v, t(s).date]
|
|
167
|
+
])
|
|
168
|
+
]),
|
|
169
|
+
t(d) ? (i(), r("div", ie, N(t(d)), 1)) : k("", !0),
|
|
170
|
+
m.status !== "completed" ? (i(), r("div", de, [
|
|
171
|
+
a("button", {
|
|
172
|
+
onClick: E,
|
|
173
|
+
disabled: !t(h) || t(c),
|
|
174
|
+
class: "inline-flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors"
|
|
175
|
+
}, [
|
|
176
|
+
t(c) ? (i(), C(t(I), {
|
|
177
|
+
key: 0,
|
|
178
|
+
class: "size-3 animate-spin"
|
|
179
|
+
})) : (i(), C(t(j), {
|
|
180
|
+
key: 1,
|
|
181
|
+
class: "size-3"
|
|
182
|
+
})),
|
|
183
|
+
e[11] || (e[11] = f(" Confirm Changes ", -1))
|
|
184
|
+
], 8, re),
|
|
185
|
+
a("button", {
|
|
186
|
+
onClick: F,
|
|
187
|
+
class: "inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:bg-muted transition-colors"
|
|
188
|
+
}, " Cancel ")
|
|
189
|
+
])) : k("", !0)
|
|
190
|
+
])) : k("", !0)
|
|
191
|
+
]));
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
export {
|
|
195
|
+
ce as default
|
|
196
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("lucide-vue-next"),k={class:"w-full"},E={key:0,class:"flex items-center gap-2 py-3"},B={key:1,class:"text-xs text-destructive py-2"},h={key:2,class:"rounded-xl border bg-background p-4 text-center"},_={key:3,class:"rounded-xl border bg-background p-4 space-y-4"},C={class:"flex items-center gap-2"},I={class:"text-[10px] text-muted-foreground ml-auto"},w={class:"space-y-1.5"},D={class:"text-xs font-medium text-muted-foreground flex items-center gap-1.5"},T=["disabled"],M={class:"space-y-1.5"},z={class:"text-xs font-medium text-muted-foreground flex items-center gap-1.5"},S=["disabled"],A={class:"space-y-1.5"},U={class:"text-xs font-medium text-muted-foreground flex items-center gap-1.5"},F=["disabled"],L={class:"space-y-1.5"},q={class:"text-xs font-medium text-muted-foreground flex items-center gap-1.5"},j=["disabled"],O={key:0,class:"text-xs text-destructive"},P={key:1,class:"flex items-center gap-2 pt-1"},R=["disabled"],$=e.defineComponent({__name:"AppointmentEditor",props:{toolName:{},instanceId:{},instanceName:{},moduleType:{},resolvedArgs:{},status:{}},emits:["submit"],setup(d,{emit:x}){const c=d,g=x,N=useModuleApi(c.instanceId),u=e.ref(!0),i=e.ref(!1),l=e.ref(null),o=e.ref(null),m=e.ref(!1),s=e.reactive({firstName:"",lastName:"",email:"",date:""});async function v(){const a=c.resolvedArgs?.orderId;if(!a){l.value="No appointment ID provided",u.value=!1;return}u.value=!0,l.value=null;try{const t=await N.get(`/appointments/${a}`);o.value=t;const n=t.customerInfo||{};s.firstName=n.firstName||"",s.lastName=n.lastName||"",s.email=n.email||"";const V=t.reservations?.[0];s.date=V?.date||""}catch(t){l.value=t?.data?.statusMessage||t?.message||"Failed to load appointment"}finally{u.value=!1}}e.onMounted(()=>{v()});function f(a){c.status!=="completed"&&g("submit",a)}const p=e.computed(()=>{if(!o.value)return!1;const a=o.value.customerInfo||{};return s.firstName!==(a.firstName||"")||s.lastName!==(a.lastName||"")||s.email!==(a.email||"")||s.date!==(o.value.reservations?.[0]?.date||"")});async function b(){if(!(!p.value||i.value)){i.value=!0;try{const a={appointmentId:o.value.id,updatedFields:{firstName:s.firstName,lastName:s.lastName,email:s.email,date:s.date},previousValues:{firstName:o.value.customerInfo?.firstName,lastName:o.value.customerInfo?.lastName,email:o.value.customerInfo?.email,date:o.value.reservations?.[0]?.date}};f(a),m.value=!0}catch(a){l.value=a?.data?.statusMessage||a?.message||"Failed to save changes"}finally{i.value=!1}}}function y(){f({cancelled:!0,appointmentId:o.value?.id}),m.value=!0}return(a,t)=>(e.openBlock(),e.createElementBlock("div",k,[e.unref(u)?(e.openBlock(),e.createElementBlock("div",E,[e.createVNode(e.unref(r.Loader2),{class:"size-4 animate-spin text-muted-foreground"}),t[4]||(t[4]=e.createElementVNode("span",{class:"text-xs text-muted-foreground"},"Loading appointment…",-1))])):e.unref(l)&&!e.unref(o)?(e.openBlock(),e.createElementBlock("div",B,e.toDisplayString(e.unref(l)),1)):e.unref(m)?(e.openBlock(),e.createElementBlock("div",h,[e.createVNode(e.unref(r.CalendarDays),{class:"size-8 text-primary mx-auto mb-2"}),t[5]||(t[5]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"},"Changes submitted.",-1))])):e.unref(o)?(e.openBlock(),e.createElementBlock("div",_,[e.createElementVNode("div",C,[e.createVNode(e.unref(r.CalendarDays),{class:"size-5 text-primary"}),t[6]||(t[6]=e.createElementVNode("h3",{class:"text-sm font-semibold"},"Edit Appointment",-1)),e.createElementVNode("span",I," #"+e.toDisplayString(e.unref(o).id?.slice(0,8)),1)]),e.createElementVNode("div",w,[e.createElementVNode("label",D,[e.createVNode(e.unref(r.User),{class:"size-3"}),t[7]||(t[7]=e.createTextVNode(" First Name ",-1))]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[0]||(t[0]=n=>e.unref(s).firstName=n),type:"text",class:"w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",disabled:d.status==="completed"},null,8,T),[[e.vModelText,e.unref(s).firstName]])]),e.createElementVNode("div",M,[e.createElementVNode("label",z,[e.createVNode(e.unref(r.User),{class:"size-3"}),t[8]||(t[8]=e.createTextVNode(" Last Name ",-1))]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[1]||(t[1]=n=>e.unref(s).lastName=n),type:"text",class:"w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",disabled:d.status==="completed"},null,8,S),[[e.vModelText,e.unref(s).lastName]])]),e.createElementVNode("div",A,[e.createElementVNode("label",U,[e.createVNode(e.unref(r.Mail),{class:"size-3"}),t[9]||(t[9]=e.createTextVNode(" Email ",-1))]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>e.unref(s).email=n),type:"email",class:"w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",disabled:d.status==="completed"},null,8,F),[[e.vModelText,e.unref(s).email]])]),e.createElementVNode("div",L,[e.createElementVNode("label",q,[e.createVNode(e.unref(r.Calendar),{class:"size-3"}),t[10]||(t[10]=e.createTextVNode(" Date ",-1))]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>e.unref(s).date=n),type:"date",class:"w-full rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",disabled:d.status==="completed"},null,8,j),[[e.vModelText,e.unref(s).date]])]),e.unref(l)?(e.openBlock(),e.createElementBlock("div",O,e.toDisplayString(e.unref(l)),1)):e.createCommentVNode("",!0),d.status!=="completed"?(e.openBlock(),e.createElementBlock("div",P,[e.createElementVNode("button",{onClick:b,disabled:!e.unref(p)||e.unref(i),class:"inline-flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors"},[e.unref(i)?(e.openBlock(),e.createBlock(e.unref(r.Loader2),{key:0,class:"size-3 animate-spin"})):(e.openBlock(),e.createBlock(e.unref(r.Save),{key:1,class:"size-3"})),t[11]||(t[11]=e.createTextVNode(" Confirm Changes ",-1))],8,R),e.createElementVNode("button",{onClick:y,class:"inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:bg-muted transition-colors"}," Cancel ")])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}});exports.default=$;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { defineComponent as A, computed as L, ref as x, onMounted as j, resolveComponent as D, openBlock as d, createElementBlock as i, unref as o, createVNode as m, createElementVNode as t, toDisplayString as n, Fragment as P, renderList as z, normalizeClass as E, withCtx as F, createTextVNode as V } from "vue";
|
|
2
|
+
import { Loader2 as q, CalendarDays as M, ExternalLink as B } from "lucide-vue-next";
|
|
3
|
+
const R = { class: "w-full" }, U = {
|
|
4
|
+
key: 0,
|
|
5
|
+
class: "flex items-center gap-2 py-3"
|
|
6
|
+
}, S = {
|
|
7
|
+
key: 1,
|
|
8
|
+
class: "text-xs text-destructive py-2"
|
|
9
|
+
}, G = {
|
|
10
|
+
key: 2,
|
|
11
|
+
class: "rounded-xl border bg-background p-4 text-center"
|
|
12
|
+
}, H = {
|
|
13
|
+
key: 3,
|
|
14
|
+
class: "rounded-xl border bg-background overflow-hidden"
|
|
15
|
+
}, J = { class: "overflow-x-auto" }, K = { class: "w-full text-xs" }, O = { class: "px-3 py-2" }, Q = { class: "font-medium truncate max-w-[160px]" }, W = { class: "text-muted-foreground truncate max-w-[160px]" }, X = { class: "px-3 py-2 whitespace-nowrap" }, Y = { class: "px-3 py-2 whitespace-nowrap" }, Z = { class: "px-3 py-2 text-center" }, ee = { class: "px-3 py-2" }, te = { class: "px-3 py-2 text-right font-medium whitespace-nowrap" }, se = { class: "px-3 py-2 border-t bg-muted/20 flex items-center justify-between" }, re = { class: "text-xs text-muted-foreground" }, ae = /* @__PURE__ */ A({
|
|
16
|
+
__name: "AppointmentListTable",
|
|
17
|
+
props: {
|
|
18
|
+
toolName: {},
|
|
19
|
+
instanceId: {},
|
|
20
|
+
instanceName: {},
|
|
21
|
+
moduleType: {},
|
|
22
|
+
resolvedArgs: {},
|
|
23
|
+
status: {}
|
|
24
|
+
},
|
|
25
|
+
emits: ["submit"],
|
|
26
|
+
setup(f, { emit: b }) {
|
|
27
|
+
const { $useRoute: h, $useModuleApi: v } = useNuxtApp(), u = f, y = b, _ = h(), k = L(() => _.params.slug), w = v(u.instanceId), p = x(!0), l = x(null), a = x([]);
|
|
28
|
+
async function I() {
|
|
29
|
+
const r = u.resolvedArgs?.quantity || 20, s = u.resolvedArgs?.status || "confirmed";
|
|
30
|
+
p.value = !0, l.value = null;
|
|
31
|
+
try {
|
|
32
|
+
const c = await w.get(`/appointments?quantity=${r}&status=${s}`);
|
|
33
|
+
a.value = c.appointments || [], g({
|
|
34
|
+
count: a.value.length,
|
|
35
|
+
appointments: a.value.map((e) => ({
|
|
36
|
+
orderId: e.orderId,
|
|
37
|
+
reservationId: e.reservationId,
|
|
38
|
+
customerName: `${e.customerInfo?.firstName || ""} ${e.customerInfo?.lastName || ""}`.trim(),
|
|
39
|
+
email: e.customerInfo?.email,
|
|
40
|
+
date: e.date,
|
|
41
|
+
startTime: e.startTime,
|
|
42
|
+
endTime: e.endTime,
|
|
43
|
+
spots: e.spots,
|
|
44
|
+
status: e.reservationStatus || e.status,
|
|
45
|
+
price: e.reservationPrice
|
|
46
|
+
}))
|
|
47
|
+
});
|
|
48
|
+
} catch (c) {
|
|
49
|
+
l.value = c?.data?.statusMessage || c?.message || "Failed to load appointments", g(`Error loading appointments: ${l.value}`);
|
|
50
|
+
} finally {
|
|
51
|
+
p.value = !1;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
j(() => {
|
|
55
|
+
I();
|
|
56
|
+
});
|
|
57
|
+
function g(r) {
|
|
58
|
+
u.status !== "completed" && y("submit", r);
|
|
59
|
+
}
|
|
60
|
+
const N = (r, s) => {
|
|
61
|
+
if (s !== "confirmed")
|
|
62
|
+
switch (s) {
|
|
63
|
+
case "pending":
|
|
64
|
+
return "text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20";
|
|
65
|
+
case "cancelled":
|
|
66
|
+
return "text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";
|
|
67
|
+
default:
|
|
68
|
+
return "text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";
|
|
69
|
+
}
|
|
70
|
+
switch (r || s) {
|
|
71
|
+
case "approved":
|
|
72
|
+
return "text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20";
|
|
73
|
+
case "needs_approval":
|
|
74
|
+
return "text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20";
|
|
75
|
+
case "rejected":
|
|
76
|
+
case "cancelled":
|
|
77
|
+
return "text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";
|
|
78
|
+
default:
|
|
79
|
+
return "text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20";
|
|
80
|
+
}
|
|
81
|
+
}, C = (r, s) => {
|
|
82
|
+
if (s !== "confirmed")
|
|
83
|
+
switch (s) {
|
|
84
|
+
case "pending":
|
|
85
|
+
return "Pending";
|
|
86
|
+
case "cancelled":
|
|
87
|
+
return "Cancelled";
|
|
88
|
+
default:
|
|
89
|
+
return s || "Unknown";
|
|
90
|
+
}
|
|
91
|
+
switch (r || s) {
|
|
92
|
+
case "approved":
|
|
93
|
+
return "Approved";
|
|
94
|
+
case "needs_approval":
|
|
95
|
+
return "Needs Approval";
|
|
96
|
+
case "rejected":
|
|
97
|
+
return "Rejected";
|
|
98
|
+
case "cancelled":
|
|
99
|
+
return "Cancelled";
|
|
100
|
+
case "confirmed":
|
|
101
|
+
return "Confirmed";
|
|
102
|
+
default:
|
|
103
|
+
return r || s || "Pending";
|
|
104
|
+
}
|
|
105
|
+
}, T = (r) => r == null ? "—" : `€${r.toFixed(2)}`, $ = (r) => {
|
|
106
|
+
if (!r) return "—";
|
|
107
|
+
try {
|
|
108
|
+
return new Date(r).toLocaleDateString("en-US", { weekday: "short", month: "short", day: "numeric" });
|
|
109
|
+
} catch {
|
|
110
|
+
return r;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
return (r, s) => {
|
|
114
|
+
const c = D("NuxtLink");
|
|
115
|
+
return d(), i("div", R, [
|
|
116
|
+
o(p) ? (d(), i("div", U, [
|
|
117
|
+
m(o(q), { class: "size-4 animate-spin text-muted-foreground" }),
|
|
118
|
+
s[0] || (s[0] = t("span", { class: "text-xs text-muted-foreground" }, "Loading appointments…", -1))
|
|
119
|
+
])) : o(l) ? (d(), i("div", S, n(o(l)), 1)) : o(a).length === 0 ? (d(), i("div", G, [
|
|
120
|
+
m(o(M), { class: "size-8 text-muted-foreground mx-auto mb-2" }),
|
|
121
|
+
s[1] || (s[1] = t("p", { class: "text-sm text-muted-foreground" }, "No recent appointments found.", -1))
|
|
122
|
+
])) : (d(), i("div", H, [
|
|
123
|
+
t("div", J, [
|
|
124
|
+
t("table", K, [
|
|
125
|
+
s[2] || (s[2] = t("thead", null, [
|
|
126
|
+
t("tr", { class: "border-b bg-muted/40" }, [
|
|
127
|
+
t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Customer"),
|
|
128
|
+
t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Date"),
|
|
129
|
+
t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Time"),
|
|
130
|
+
t("th", { class: "text-center px-3 py-2 font-medium text-muted-foreground" }, "Spots"),
|
|
131
|
+
t("th", { class: "text-left px-3 py-2 font-medium text-muted-foreground" }, "Status"),
|
|
132
|
+
t("th", { class: "text-right px-3 py-2 font-medium text-muted-foreground" }, "Price")
|
|
133
|
+
])
|
|
134
|
+
], -1)),
|
|
135
|
+
t("tbody", null, [
|
|
136
|
+
(d(!0), i(P, null, z(o(a), (e) => (d(), i("tr", {
|
|
137
|
+
key: e.reservationId || e.orderId,
|
|
138
|
+
class: "border-b last:border-b-0 hover:bg-muted/30 transition-colors"
|
|
139
|
+
}, [
|
|
140
|
+
t("td", O, [
|
|
141
|
+
t("div", Q, n(e.customerInfo?.firstName) + " " + n(e.customerInfo?.lastName), 1),
|
|
142
|
+
t("div", W, n(e.customerInfo?.email), 1)
|
|
143
|
+
]),
|
|
144
|
+
t("td", X, n($(e.date)), 1),
|
|
145
|
+
t("td", Y, n(e.startTime) + " – " + n(e.endTime), 1),
|
|
146
|
+
t("td", Z, n(e.spots || 1), 1),
|
|
147
|
+
t("td", ee, [
|
|
148
|
+
t("span", {
|
|
149
|
+
class: E(["inline-block text-[10px] font-medium px-1.5 py-0.5 rounded-full uppercase whitespace-nowrap", N(e.reservationStatus, e.status)])
|
|
150
|
+
}, n(C(e.reservationStatus, e.status)), 3)
|
|
151
|
+
]),
|
|
152
|
+
t("td", te, n(T(e.reservationPrice)), 1)
|
|
153
|
+
]))), 128))
|
|
154
|
+
])
|
|
155
|
+
])
|
|
156
|
+
]),
|
|
157
|
+
t("div", se, [
|
|
158
|
+
t("span", re, n(o(a).length) + " appointment" + n(o(a).length === 1 ? "" : "s"), 1),
|
|
159
|
+
m(c, {
|
|
160
|
+
to: `/projects/${o(k)}/modules/${f.instanceId}`,
|
|
161
|
+
class: "inline-flex items-center gap-1.5 text-xs text-primary hover:underline"
|
|
162
|
+
}, {
|
|
163
|
+
default: F(() => [
|
|
164
|
+
m(o(B), { class: "size-3" }),
|
|
165
|
+
s[3] || (s[3] = V(" View all ", -1))
|
|
166
|
+
]),
|
|
167
|
+
_: 1
|
|
168
|
+
}, 8, ["to"])
|
|
169
|
+
])
|
|
170
|
+
]))
|
|
171
|
+
]);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
export {
|
|
176
|
+
ae as default
|
|
177
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),c=require("lucide-vue-next"),E={class:"w-full"},V={key:0,class:"flex items-center gap-2 py-3"},w={key:1,class:"text-xs text-destructive py-2"},D={key:2,class:"rounded-xl border bg-background p-4 text-center"},I={key:3,class:"rounded-xl border bg-background overflow-hidden"},B={class:"overflow-x-auto"},S={class:"w-full text-xs"},T={class:"px-3 py-2"},C={class:"font-medium truncate max-w-[160px]"},$={class:"text-muted-foreground truncate max-w-[160px]"},A={class:"px-3 py-2 whitespace-nowrap"},L={class:"px-3 py-2 whitespace-nowrap"},j={class:"px-3 py-2 text-center"},P={class:"px-3 py-2"},q={class:"px-3 py-2 text-right font-medium whitespace-nowrap"},z={class:"px-3 py-2 border-t bg-muted/20 flex items-center justify-between"},F={class:"text-xs text-muted-foreground"},M=e.defineComponent({__name:"AppointmentListTable",props:{toolName:{},instanceId:{},instanceName:{},moduleType:{},resolvedArgs:{},status:{}},emits:["submit"],setup(i,{emit:m}){const{$useRoute:p,$useModuleApi:x}=useNuxtApp(),d=i,f=m,g=p(),b=e.computed(()=>g.params.slug),y=x(d.instanceId),l=e.ref(!0),a=e.ref(null),o=e.ref([]);async function N(){const n=d.resolvedArgs?.quantity||20,r=d.resolvedArgs?.status||"confirmed";l.value=!0,a.value=null;try{const s=await y.get(`/appointments?quantity=${n}&status=${r}`);o.value=s.appointments||[],u({count:o.value.length,appointments:o.value.map(t=>({orderId:t.orderId,reservationId:t.reservationId,customerName:`${t.customerInfo?.firstName||""} ${t.customerInfo?.lastName||""}`.trim(),email:t.customerInfo?.email,date:t.date,startTime:t.startTime,endTime:t.endTime,spots:t.spots,status:t.reservationStatus||t.status,price:t.reservationPrice}))})}catch(s){a.value=s?.data?.statusMessage||s?.message||"Failed to load appointments",u(`Error loading appointments: ${a.value}`)}finally{l.value=!1}}e.onMounted(()=>{N()});function u(n){d.status!=="completed"&&f("submit",n)}const h=(n,r)=>{if(r!=="confirmed")switch(r){case"pending":return"text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20";case"cancelled":return"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";default:return"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20"}switch(n||r){case"approved":return"text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20";case"needs_approval":return"text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20";case"rejected":case"cancelled":return"text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/20";default:return"text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20"}},k=(n,r)=>{if(r!=="confirmed")switch(r){case"pending":return"Pending";case"cancelled":return"Cancelled";default:return r||"Unknown"}switch(n||r){case"approved":return"Approved";case"needs_approval":return"Needs Approval";case"rejected":return"Rejected";case"cancelled":return"Cancelled";case"confirmed":return"Confirmed";default:return n||r||"Pending"}},v=n=>n==null?"—":`€${n.toFixed(2)}`,_=n=>{if(!n)return"—";try{return new Date(n).toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric"})}catch{return n}};return(n,r)=>{const s=e.resolveComponent("NuxtLink");return e.openBlock(),e.createElementBlock("div",E,[e.unref(l)?(e.openBlock(),e.createElementBlock("div",V,[e.createVNode(e.unref(c.Loader2),{class:"size-4 animate-spin text-muted-foreground"}),r[0]||(r[0]=e.createElementVNode("span",{class:"text-xs text-muted-foreground"},"Loading appointments…",-1))])):e.unref(a)?(e.openBlock(),e.createElementBlock("div",w,e.toDisplayString(e.unref(a)),1)):e.unref(o).length===0?(e.openBlock(),e.createElementBlock("div",D,[e.createVNode(e.unref(c.CalendarDays),{class:"size-8 text-muted-foreground mx-auto mb-2"}),r[1]||(r[1]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"},"No recent appointments found.",-1))])):(e.openBlock(),e.createElementBlock("div",I,[e.createElementVNode("div",B,[e.createElementVNode("table",S,[r[2]||(r[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",{class:"border-b bg-muted/40"},[e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Customer"),e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Date"),e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Time"),e.createElementVNode("th",{class:"text-center px-3 py-2 font-medium text-muted-foreground"},"Spots"),e.createElementVNode("th",{class:"text-left px-3 py-2 font-medium text-muted-foreground"},"Status"),e.createElementVNode("th",{class:"text-right px-3 py-2 font-medium text-muted-foreground"},"Price")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),t=>(e.openBlock(),e.createElementBlock("tr",{key:t.reservationId||t.orderId,class:"border-b last:border-b-0 hover:bg-muted/30 transition-colors"},[e.createElementVNode("td",T,[e.createElementVNode("div",C,e.toDisplayString(t.customerInfo?.firstName)+" "+e.toDisplayString(t.customerInfo?.lastName),1),e.createElementVNode("div",$,e.toDisplayString(t.customerInfo?.email),1)]),e.createElementVNode("td",A,e.toDisplayString(_(t.date)),1),e.createElementVNode("td",L,e.toDisplayString(t.startTime)+" – "+e.toDisplayString(t.endTime),1),e.createElementVNode("td",j,e.toDisplayString(t.spots||1),1),e.createElementVNode("td",P,[e.createElementVNode("span",{class:e.normalizeClass(["inline-block text-[10px] font-medium px-1.5 py-0.5 rounded-full uppercase whitespace-nowrap",h(t.reservationStatus,t.status)])},e.toDisplayString(k(t.reservationStatus,t.status)),3)]),e.createElementVNode("td",q,e.toDisplayString(v(t.reservationPrice)),1)]))),128))])])]),e.createElementVNode("div",z,[e.createElementVNode("span",F,e.toDisplayString(e.unref(o).length)+" appointment"+e.toDisplayString(e.unref(o).length===1?"":"s"),1),e.createVNode(s,{to:`/projects/${e.unref(b)}/modules/${i.instanceId}`,class:"inline-flex items-center gap-1.5 text-xs text-primary hover:underline"},{default:e.withCtx(()=>[e.createVNode(e.unref(c.ExternalLink),{class:"size-3"}),r[3]||(r[3]=e.createTextVNode(" View all ",-1))]),_:1},8,["to"])])]))])}}});exports.default=M;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),D=require("@oneclick.dev/cms-kit");require("./index-B5aBwdxY.js");const r=require("lucide-vue-next"),z=require("./index-BiT55eU0.js"),H=require("./_plugin-vue_export-helper-BHFhmbuH.js"),I={class:"flex flex-col gap-6 w-full max-w-7xl mx-auto py-8"},K={class:"flex justify-between gap-4 flex-col @lg:flex-row @lg:items-center"},G={key:0,class:"flex items-center gap-2"},J={class:"flex items-center border rounded-lg overflow-hidden"},Q=["onClick"],X={class:"text-sm text-destructive font-medium"},Y={key:2,class:"flex items-center justify-center py-20"},Z={class:"flex flex-col @lg:grid @lg:grid-cols-3 gap-6"},ee={class:"relative"},te={class:"absolute inset-0 flex items-center justify-center pointer-events-none"},se={class:"text-center"},oe={class:"text-xl font-bold tabular-nums"},ne={class:"mt-4 flex items-center gap-6"},le={class:"flex items-center gap-2"},ae={class:"text-sm font-semibold tabular-nums"},re={key:0,class:"text-xs text-muted-foreground"},de={class:"flex items-center gap-2"},ce={class:"text-sm font-semibold tabular-nums"},ie={key:0,class:"text-xs text-muted-foreground"},ue={class:"overflow-x-auto"},me={class:"w-full text-sm"},xe={class:"divide-y"},fe={class:"px-4 py-3"},ge={class:"flex items-center gap-2"},pe={class:"font-medium capitalize"},ve={class:"px-4 py-3 text-right tabular-nums"},he={class:"px-4 py-3 text-right tabular-nums"},Ve={class:"px-4 py-3 text-right tabular-nums"},_e={class:"px-4 py-3 text-right tabular-nums"},Ne={class:"px-4 py-3 text-right tabular-nums"},ye={class:"overflow-x-auto"},be={class:"min-w-[600px]"},Ee={class:"flex items-center mb-1.5"},ke={class:"flex-1 grid grid-cols-24 gap-0.5"},Ce={class:"w-10 shrink-0 text-xs text-muted-foreground"},we={class:"flex-1 grid grid-cols-24 gap-0.5"},Be=["title"],De={class:"grid @lg:grid-cols-3 gap-6"},Se={class:"flex items-center justify-between"},$e={class:"flex items-center gap-1"},ze=["onClick","title"],Re={class:"space-y-3"},Ue={class:"text-sm flex-1 truncate"},Te={class:"flex-1 h-2 bg-muted rounded-full overflow-hidden"},Fe={class:"text-xs tabular-nums text-muted-foreground w-12 text-right"},Me={key:0,class:"py-4 text-center text-muted-foreground text-sm"},Le={class:"space-y-3"},Ae={class:"text-sm flex-1 truncate"},qe={class:"flex-1 h-2 bg-muted rounded-full overflow-hidden"},Pe={class:"text-xs tabular-nums text-muted-foreground w-12 text-right"},Oe={key:0,class:"py-4 text-center text-muted-foreground text-sm"},je={class:"space-y-2.5"},We={class:"flex-1 min-w-0"},He={class:"text-sm truncate block"},Ie={class:"text-xs text-muted-foreground truncate block"},Ke={class:"flex-1 h-2 bg-muted rounded-full overflow-hidden"},Ge={class:"text-xs tabular-nums text-muted-foreground w-12 text-right"},Je={key:0,class:"py-4 text-center text-muted-foreground text-sm"},Qe=e.defineComponent({__name:"Audience",setup(Ye){const{config:S}=D.useModule(),{moduleId:R}=D.useModuleRoute();D.useModuleBreadcrumbs(()=>[{label:"Audience"}]);const u=e.ref(!0),h=e.ref(null),g=e.ref("30"),i=e.ref("browser"),V=e.ref([]),p=e.ref([]),_=e.ref([]),$=e.ref([]),N=e.ref([]),y=e.computed(()=>!!(S.serviceAccount&&S.propertyId));function m(o){return`/api/v1/modules/${R}${o}`}const U=[{label:"7d",value:"7"},{label:"14d",value:"14"},{label:"30d",value:"30"},{label:"90d",value:"90"}];function d(o){return o>=1e6?`${(o/1e6).toFixed(1)}M`:o>=1e3?`${(o/1e3).toFixed(1)}K`:Math.round(o).toString()}function T(o){return`${(o*100).toFixed(1)}%`}function F(o){const t=Math.floor(o/60),n=Math.round(o%60);return t>0?`${t}m ${n}s`:`${n}s`}const x={new:"#3b82f6",returning:"#8b5cf6"},M={new:{label:"New Users",color:x.new},returning:{label:"Returning Users",color:x.returning}},b=e.computed(()=>V.value.find(t=>t.newVsReturning==="new")?.totalUsers||0),E=e.computed(()=>V.value.find(t=>t.newVsReturning==="returning")?.totalUsers||0),L=e.computed(()=>[{key:"new",label:"New",value:b.value,fill:x.new},{key:"returning",label:"Returning",value:E.value,fill:x.returning}]),v=e.computed(()=>b.value+E.value),A=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],q=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],B=e.computed(()=>{const o=Array.from({length:7},()=>Array(24).fill(0));let t=1;return $.value.forEach(n=>{const l=A.indexOf(n.dayOfWeekName),a=parseInt(n.hour,10);l>=0&&a>=0&&a<24&&(o[l][a]=n.sessions||0,n.sessions>t&&(t=n.sessions))}),{matrix:o,maxVal:t}});function P(o,t){if(o===0)return"bg-muted";const n=o/t;return n>.75?"bg-blue-600 dark:bg-blue-500":n>.5?"bg-blue-500 dark:bg-blue-400":n>.25?"bg-blue-400/70 dark:bg-blue-400/60":"bg-blue-300/50 dark:bg-blue-300/30"}const O=[{key:"browser",label:"Browser",icon:r.Chrome},{key:"operatingSystem",label:"OS",icon:r.Cpu},{key:"screenResolution",label:"Screen",icon:r.Monitor}];async function k(){if(!y.value)return;u.value=!0,h.value=null;const o=`${g.value}daysAgo`;try{const[t,n,l,a,c]=await Promise.all([$fetch(m(`/audience/overview?startDate=${o}&endDate=today`)),$fetch(m(`/audience/technology?startDate=${o}&endDate=today&dimension=${i.value}`)),$fetch(m(`/audience/languages?startDate=${o}&endDate=today`)),$fetch(m(`/audience/hours?startDate=${o}&endDate=today`)),$fetch(m(`/audience/cities?startDate=${o}&endDate=today`))]);V.value=t.rows||[],p.value=n.rows||[],_.value=l.rows||[],$.value=a.rows||[],N.value=c.rows||[]}catch(t){h.value=t?.data?.statusMessage||t?.message||"Failed to load audience data"}finally{u.value=!1}}async function j(){const o=`${g.value}daysAgo`;try{const t=await $fetch(m(`/audience/technology?startDate=${o}&endDate=today&dimension=${i.value}`));p.value=t.rows||[]}catch{}}return e.watch(g,()=>k()),e.watch(i,()=>j()),e.onMounted(()=>{y.value?k():u.value=!1}),(o,t)=>{const n=e.resolveComponent("Button"),l=e.resolveComponent("Card"),a=e.resolveComponent("CardTitle"),c=e.resolveComponent("CardHeader"),W=e.resolveComponent("ChartContainer"),f=e.resolveComponent("CardContent");return e.openBlock(),e.createElementBlock("div",I,[e.createElementVNode("div",K,[t[0]||(t[0]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"text-2xl font-semibold"},"Audience"),e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"},"Who visits your site")],-1)),y.value?(e.openBlock(),e.createElementBlock("div",G,[e.createElementVNode("div",J,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(U,s=>e.createElementVNode("button",{key:s.value,class:e.normalizeClass(["px-3 py-1.5 text-xs font-medium transition-colors",g.value===s.value?"bg-primary text-primary-foreground":"text-muted-foreground hover:text-foreground hover:bg-muted"]),onClick:C=>g.value=s.value},e.toDisplayString(s.label),11,Q)),64))]),e.createVNode(n,{variant:"outline",size:"icon",onClick:k,disabled:u.value},{default:e.withCtx(()=>[e.createVNode(e.unref(r.RefreshCw),{class:e.normalizeClass(["size-4",{"animate-spin":u.value}])},null,8,["class"])]),_:1},8,["disabled"])])):e.createCommentVNode("",!0)]),y.value?h.value?(e.openBlock(),e.createBlock(l,{key:1,class:"p-6 border-destructive/50 bg-destructive/5"},{default:e.withCtx(()=>[e.createElementVNode("p",X,e.toDisplayString(h.value),1),e.createVNode(n,{variant:"outline",size:"sm",class:"mt-3",onClick:k},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode("Retry",-1)])]),_:1})]),_:1})):u.value?(e.openBlock(),e.createElementBlock("div",Y,[e.createVNode(e.unref(r.Loader2),{class:"size-8 animate-spin text-muted-foreground"})])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",Z,[e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("New vs Returning",-1)])]),_:1})]),_:1}),e.createVNode(f,{class:"flex flex-col items-center"},{default:e.withCtx(()=>[e.createElementVNode("div",ee,[e.createVNode(W,{config:M,class:"mx-auto aspect-square max-h-[200px]"},{default:e.withCtx(()=>[e.createVNode(e.unref(z.S),{data:L.value,margin:{top:16,bottom:16,left:16,right:16}},{default:e.withCtx(()=>[e.createVNode(e.unref(z.E),{value:s=>s.value,color:s=>s.fill,arcWidth:35,padAngle:.03,cornerRadius:4},null,8,["value","color"])]),_:1},8,["data"])]),_:1}),e.createElementVNode("div",te,[e.createElementVNode("div",se,[e.createElementVNode("p",oe,e.toDisplayString(d(v.value)),1),t[4]||(t[4]=e.createElementVNode("p",{class:"text-xs text-muted-foreground"},"total users",-1))])])]),e.createElementVNode("div",ne,[e.createElementVNode("div",le,[e.createElementVNode("div",{class:"size-2.5 rounded-full",style:e.normalizeStyle({backgroundColor:x.new})},null,4),t[5]||(t[5]=e.createElementVNode("span",{class:"text-sm"},"New",-1)),e.createElementVNode("span",ae,e.toDisplayString(d(b.value)),1),v.value?(e.openBlock(),e.createElementBlock("span",re,e.toDisplayString(Math.round(b.value/v.value*100))+"%",1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",de,[e.createElementVNode("div",{class:"size-2.5 rounded-full",style:e.normalizeStyle({backgroundColor:x.returning})},null,4),t[6]||(t[6]=e.createElementVNode("span",{class:"text-sm"},"Returning",-1)),e.createElementVNode("span",ce,e.toDisplayString(d(E.value)),1),v.value?(e.openBlock(),e.createElementBlock("span",ie,e.toDisplayString(Math.round(E.value/v.value*100))+"%",1)):e.createCommentVNode("",!0)])])]),_:1})]),_:1}),e.createVNode(l,{class:"@lg:col-span-2"},{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Engagement by Visitor Type",-1)])]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",ue,[e.createElementVNode("table",me,[t[8]||(t[8]=e.createElementVNode("thead",null,[e.createElementVNode("tr",{class:"border-b text-left"},[e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground"},"Type"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Users"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Sessions"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Engagement Rate"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Avg Duration"),e.createElementVNode("th",{class:"px-4 py-3 font-medium text-muted-foreground text-right"},"Pages/Session")])],-1)),e.createElementVNode("tbody",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,s=>(e.openBlock(),e.createElementBlock("tr",{key:s.newVsReturning,class:"hover:bg-muted/50"},[e.createElementVNode("td",fe,[e.createElementVNode("div",ge,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.newVsReturning==="new"?e.unref(r.UserPlus):e.unref(r.UserCheck)),{class:"size-4 text-muted-foreground"})),e.createElementVNode("span",pe,e.toDisplayString(s.newVsReturning),1)])]),e.createElementVNode("td",ve,e.toDisplayString(d(s.totalUsers)),1),e.createElementVNode("td",he,e.toDisplayString(d(s.sessions)),1),e.createElementVNode("td",Ve,e.toDisplayString(T(s.engagementRate||0)),1),e.createElementVNode("td",_e,e.toDisplayString(F(s.averageSessionDuration||0)),1),e.createElementVNode("td",Ne,e.toDisplayString((s.screenPageViewsPerSession||0).toFixed(1)),1)]))),128))])])])]),_:1})]),_:1})]),e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(r.Clock),{class:"size-4"}),t[9]||(t[9]=e.createTextVNode(" Peak Hours ",-1))]),_:1}),t[10]||(t[10]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"},"When your visitors are most active (based on sessions)",-1))]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",ye,[e.createElementVNode("div",be,[e.createElementVNode("div",Ee,[t[11]||(t[11]=e.createElementVNode("div",{class:"w-10 shrink-0"},null,-1)),e.createElementVNode("div",ke,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(24,s=>e.createElementVNode("div",{key:s,class:"text-[10px] text-muted-foreground text-center"},e.toDisplayString(s-1),1)),64))])]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(q,(s,C)=>e.createElementVNode("div",{key:s,class:"flex items-center mb-0.5"},[e.createElementVNode("div",Ce,e.toDisplayString(s),1),e.createElementVNode("div",we,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(24,w=>e.createElementVNode("div",{key:w,class:e.normalizeClass(["aspect-square rounded-sm transition-colors",P(B.value.matrix[C]?.[w-1]||0,B.value.maxVal)]),title:`${s} ${w-1}:00 — ${B.value.matrix[C]?.[w-1]||0} sessions`},null,10,Be)),64))])])),64)),t[12]||(t[12]=e.createElementVNode("div",{class:"flex items-center justify-end gap-1.5 mt-3"},[e.createElementVNode("span",{class:"text-[10px] text-muted-foreground"},"Less"),e.createElementVNode("div",{class:"size-3 rounded-sm bg-muted"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-300/50 dark:bg-blue-300/30"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-400/70 dark:bg-blue-400/60"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-500 dark:bg-blue-400"}),e.createElementVNode("div",{class:"size-3 rounded-sm bg-blue-600 dark:bg-blue-500"}),e.createElementVNode("span",{class:"text-[10px] text-muted-foreground"},"More")],-1))])])]),_:1})]),_:1}),e.createElementVNode("div",De,[e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createElementVNode("div",Se,[e.createVNode(a,{class:"text-base"},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode("Technology",-1)])]),_:1}),e.createElementVNode("div",$e,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(O,s=>e.createElementVNode("button",{key:s.key,class:e.normalizeClass(["p-1.5 rounded-md transition-colors",i.value===s.key?"bg-muted text-foreground":"text-muted-foreground hover:text-foreground"]),onClick:C=>i.value=s.key,title:s.label},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.icon),{class:"size-3.5"}))],10,ze)),64))])])]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",Re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,s=>(e.openBlock(),e.createElementBlock("div",{key:s[i.value],class:"flex items-center gap-3"},[e.createElementVNode("span",Ue,e.toDisplayString(s[i.value]||"(not set)"),1),e.createElementVNode("div",Te,[e.createElementVNode("div",{class:"h-full bg-primary rounded-full transition-all",style:e.normalizeStyle({width:`${s.totalUsers/(p.value[0]?.totalUsers||1)*100}%`})},null,4)]),e.createElementVNode("span",Fe,e.toDisplayString(d(s.totalUsers)),1)]))),128)),p.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Me,"No data"))])]),_:1})]),_:1}),e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(r.Languages),{class:"size-4"}),t[14]||(t[14]=e.createTextVNode(" Languages ",-1))]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",Le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,s=>(e.openBlock(),e.createElementBlock("div",{key:s.language,class:"flex items-center gap-3"},[e.createElementVNode("span",Ae,e.toDisplayString(s.language),1),e.createElementVNode("div",qe,[e.createElementVNode("div",{class:"h-full bg-primary rounded-full transition-all",style:e.normalizeStyle({width:`${s.totalUsers/(_.value[0]?.totalUsers||1)*100}%`})},null,4)]),e.createElementVNode("span",Pe,e.toDisplayString(d(s.totalUsers)),1)]))),128)),_.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Oe,"No data"))])]),_:1})]),_:1}),e.createVNode(l,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(a,{class:"text-base flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(r.MapPin),{class:"size-4"}),t[15]||(t[15]=e.createTextVNode(" Top Cities ",-1))]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,s=>(e.openBlock(),e.createElementBlock("div",{key:`${s.city}-${s.country}`,class:"flex items-center gap-3"},[e.createElementVNode("div",We,[e.createElementVNode("span",He,e.toDisplayString(s.city),1),e.createElementVNode("span",Ie,e.toDisplayString(s.country),1)]),e.createElementVNode("div",Ke,[e.createElementVNode("div",{class:"h-full bg-primary rounded-full transition-all",style:e.normalizeStyle({width:`${s.totalUsers/(N.value[0]?.totalUsers||1)*100}%`})},null,4)]),e.createElementVNode("span",Ge,e.toDisplayString(d(s.totalUsers)),1)]))),128)),N.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Je,"No data"))])]),_:1})]),_:1})])],64)):(e.openBlock(),e.createBlock(l,{key:0,class:"p-8 text-center"},{default:e.withCtx(()=>[...t[1]||(t[1]=[e.createElementVNode("p",{class:"text-lg font-medium"},"Setup required",-1)])]),_:1}))])}}}),Xe=H._export_sfc(Qe,[["__scopeId","data-v-4f3ae270"]]);exports.default=Xe;
|