@oneclick.dev/cms-core-modules 0.0.93 → 0.0.94

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/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@oneclick.dev/cms-kit"),t={name:"Table",description:"Manage tables and structured data.",icon:"mdi-table",version:"1.0.0"},o=e.defineModuleConfig({getItems:{label:"Fetch items",type:"flow"},viewable:{label:"Viewable",type:"checkbox",default:!1},editable:{label:"Editable",type:"checkbox",default:!1},deletable:{label:"Deletable",type:"checkbox",default:!1},addable:{label:"Addable",type:"checkbox",default:!1},searchable:{label:"Searchable",type:"checkbox",default:!1},downloadable:{label:"Downloadable",type:"checkbox",default:!1},allowBulkActions:{label:"Allow Bulk Actions",type:"checkbox",default:!1}}),r=[{path:"",component:()=>Promise.resolve().then(()=>require("./TableView-DtcF-oQc.js"))}],n=[],i={component:()=>Promise.resolve().then(()=>require("./index-DFQGVHTs.js")),metadata:t,config:o,routes:r,permissions:n},a={name:"Products",description:"Manage products",icon:"mdi-table",version:"1.0.0"},s=e.defineModuleConfig({project:{label:"Database",type:"resource",accept:["FIREBASE"]},productCollection:{label:"Product Collection",type:"input",default:"products"},collectionsCollection:{label:"Collections Collection",type:"input",default:"public/e-commerce:collections"},allowedMediaSources:{label:"Allowed Media Sources",type:"mediaSource",multiple:!0},defaultUploadMediaSource:{label:"Default Upload Media Source",type:"mediaSource",multiple:!1},previewUrl:{label:"Preview URL",type:"input",default:"https://preview.com/shop/{{slug}}"}}),c=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-DeQQ0FY3.js"))},{path:"/:productId",component:()=>Promise.resolve().then(()=>require("./Detail-CjuhjPby.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-CjuhjPby.js"))}],p=[{key:"create-product",name:"Create product",description:"Team member can create a new product"},{key:"edit-product",name:"Edit product",description:"Team member can edit a product"},{key:"delete-product",name:"Delete product",description:"Team member can delete a product"}],l=[{name:"getEmptyStock",description:"Get a list of products with empty stock.",executionMode:"api",parameters:{type:"object",properties:{category:{type:"string",description:"Category of the product"}},required:["category"]}},{name:"viewProductDetails",description:"Show a card in chat with details of a product based on product ID.",executionMode:"component",chatComponent:"ProductDetailsCard",parameters:{type:"object",properties:{productId:{type:"string",description:"ID of the product"}},required:["productId"]}}],d={component:()=>Promise.resolve().then(()=>require("./index-R2oUDsjx.js")),metadata:a,config:s,routes:c,permissions:p,tools:l,chatComponents:{ProductDetailsCard:()=>Promise.resolve().then(()=>require("./ProductDetailsCard-Bn7qrgmc.js"))}},m={name:"Custom",description:"Custom module",icon:"mdi-table",version:"1.0.0"},u=e.defineModuleConfig({formLayout:{label:"Design View",type:"form"}}),h=[{path:"",component:()=>Promise.resolve().then(()=>require("./View-C8oQG6gI.js"))}],f=[],g={component:()=>Promise.resolve().then(()=>require("./index-CSxYBeVA.js")),metadata:m,config:u,routes:h,permissions:f},y={name:"Promo Codes",description:"Create and manage promo codes",icon:"mdi-table",version:"1.0.0"},b=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},promoCodeCollection:{label:"Promo Code Collection",type:"input",default:"promo-codes"}}),v=[{path:"",component:()=>Promise.resolve().then(()=>require("./Create-DuZ5nZrX.js"))},{path:"/promo-codes",component:()=>Promise.resolve().then(()=>require("./Find-D4Qa45qC.js"))},{path:"/promo-codes/:promoCodeId",component:()=>Promise.resolve().then(()=>require("./Detail-BZ-iE9vf.js"))}],C=[{key:"create-promo-codes",name:"Create promo codes",description:"Team member can create promo codes"},{key:"view-promo-codes",name:"View promo codes",description:"Team member can view promo codes"},{key:"delete-promo-codes",name:"Delete promo codes",description:"Team member can delete promo codes"}],w={component:()=>Promise.resolve().then(()=>require("./index-CkiNvRzs.js")),metadata:y,config:b,routes:v,permissions:C},P={name:"Product Collections",description:"Manage product collections",icon:"mdi-table",version:"1.0.0"},q=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},collectionsCollection:{label:"Collections Collection",type:"input",default:"public/e-commerce:collections"},allowedMediaSources:{label:"Allowed Media Sources",type:"mediaSource",multiple:!0},defaultUploadMediaSource:{label:"Default Upload Media Source",type:"mediaSource",multiple:!1}}),D=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-T-lsy3UZ.js"))},{path:"/:collectionId",component:()=>Promise.resolve().then(()=>require("./Detail-CPqug27l.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-CPqug27l.js"))}],S=[{key:"create-collection",name:"Create product collection",description:"Team member can create a new product collection"},{key:"edit-collection",name:"Edit product collection",description:"Team member can edit a product collection"},{key:"delete-collection",name:"Delete product collection",description:"Team member can delete a product collection"}],k={component:()=>Promise.resolve().then(()=>require("./index-CwqrAU-H.js")),metadata:P,config:q,routes:D,permissions:S},M={name:"Shipping Options",description:"Manage shipping options",icon:"mdi-table",version:"1.0.0"},A=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},shippingOptionsCollection:{label:"Shipping Options Collection",type:"input",default:"public/e-commerce:shipping-options"}}),$=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-BbvfH1u-.js"))},{path:"/:optionId",component:()=>Promise.resolve().then(()=>require("./Detail-C8wQiDcv.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-C8wQiDcv.js"))}],T=[{key:"create-option",name:"Create shipping option",description:"Team member can create a new shipping option"},{key:"edit-option",name:"Edit shipping option",description:"Team member can edit a shipping option"},{key:"delete-option",name:"Delete shipping option",description:"Team member can delete a shipping option"}],x={component:()=>Promise.resolve().then(()=>require("./index-Co4ON2Di.js")),metadata:M,config:A,routes:$,permissions:T},E={name:"Google Analytics",description:"Configure Google Analytics settings.",icon:"mdi-google-analytics",version:"1.0.0"},I=e.defineModuleConfig({serviceAccount:{label:"Google Service Account",type:"resource",accept:["GOOGLE_SERVICE_ACCOUNT"]},propertyId:{label:"GA4 Property ID",type:"input",default:""},siteUrl:{label:"Search Console Site URL",type:"input",default:"",placeholder:"https://example.com or sc-domain:example.com",description:"Optional. When set, the module will fetch real keyword data from Google Search Console. Use the same site URL format as shown in Search Console."}}),j=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-Da0XexiT.js"))},{path:"/acquisition",component:()=>Promise.resolve().then(()=>require("./Acquisition-_-cq972V.js"))},{path:"/content",component:()=>Promise.resolve().then(()=>require("./Content-C-4Cdniz.js"))},{path:"/audience",component:()=>Promise.resolve().then(()=>require("./Audience-QnFQs93n.js"))},{path:"/seo",component:()=>Promise.resolve().then(()=>require("./SeoHealth-BkpJ1F2Y.js"))}],U=[],Y=[{name:"getTopPages",description:"Show a card in chat with the most popular/visited pages on the website for a given period.",executionMode:"component",chatComponent:"TopPagesCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Use relative formats like 'yesterday', '7daysAgo', '30daysAgo', '90daysAgo', '365daysAgo' or exact dates 'YYYY-MM-DD'. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Use 'today', 'yesterday', or exact dates 'YYYY-MM-DD'. Default: 'today'"},limit:{type:"number",description:"Number of pages to show. Default: 10, max: 50",default:10}},required:[]}},{name:"getVisitorStats",description:"Show a card in chat with visitor/traffic statistics (sessions, users, page views, bounce rate, etc.) for a given period. Use this when the user asks about traffic, visitors, how many people visited, etc.",executionMode:"component",chatComponent:"VisitorStatsCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Use 'yesterday' for yesterday, '7daysAgo' for last week, '30daysAgo' for last month, '90daysAgo' for last quarter, '365daysAgo' for last year, or exact 'YYYY-MM-DD'. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Use 'today', 'yesterday', or exact 'YYYY-MM-DD'. Default: 'today'"}},required:[]}},{name:"getSearchTerms",description:"Show a card in chat with search terms/keywords that bring visitors to the website. Use this when the user asks about keywords, SEO terms, what people search for, or search queries.",executionMode:"component",chatComponent:"SearchTermsCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getTrafficSources",description:"Show a card in chat with where website visitors are coming from (traffic sources, channels, referrals). Use this when the user asks about traffic sources, where visitors come from, referrals, channels, etc.",executionMode:"component",chatComponent:"TrafficSourcesCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getRealtimeVisitors",description:"Show a card in chat with the current real-time active visitors on the website right now.",executionMode:"component",chatComponent:"RealtimeCard",parameters:{type:"object",properties:{},required:[]}},{name:"getCountryBreakdown",description:"Show a card in chat with a geographic breakdown of where website visitors are located. Use this when the user asks about visitor countries, geographic distribution, or where their audience is from.",executionMode:"component",chatComponent:"CountryBreakdownCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getDeviceBreakdown",description:"Show a card in chat with a device breakdown (desktop, mobile, tablet) of website visitors. Use this when the user asks about what devices people use, mobile vs desktop traffic, or if their site is mobile-friendly.",executionMode:"component",chatComponent:"DeviceBreakdownCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getPeakHours",description:"Show a card in chat with peak traffic hours and a weekly heatmap showing when visitors are most active. Use this when the user asks about best times to post, peak hours, busiest times, or when their audience is online.",executionMode:"component",chatComponent:"PeakHoursCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}}],R={component:()=>Promise.resolve().then(()=>require("./index-DwHYfZl_.js")),metadata:E,config:I,routes:j,permissions:U,tools:Y,chatComponents:{TopPagesCard:()=>Promise.resolve().then(()=>require("./TopPagesCard-BDeA997A.js")),VisitorStatsCard:()=>Promise.resolve().then(()=>require("./VisitorStatsCard-BmByE_Hi.js")),SearchTermsCard:()=>Promise.resolve().then(()=>require("./SearchTermsCard-BsB-63aH.js")),TrafficSourcesCard:()=>Promise.resolve().then(()=>require("./TrafficSourcesCard-C3ziDTUL.js")),RealtimeCard:()=>Promise.resolve().then(()=>require("./RealtimeCard--APfRNc8.js")),CountryBreakdownCard:()=>Promise.resolve().then(()=>require("./CountryBreakdownCard-D7BK3nRD.js")),DeviceBreakdownCard:()=>Promise.resolve().then(()=>require("./DeviceBreakdownCard-DRhQ9ufG.js")),PeakHoursCard:()=>Promise.resolve().then(()=>require("./PeakHoursCard-BR5zmta4.js"))}},B={name:"Content Manager",description:"Create and manage content",icon:"mdi-table",version:"1.0.0"},O=e.defineModuleConfig({project:{label:"Database",type:"resource",accept:["FIREBASE"]},domain:{label:"Domain",type:"input",default:"https://domain.com"},collectionsCollection:{label:"Collections Collection",type:"input",default:"content_collections"},contentCollection:{label:"Content Collection",type:"input",default:"content"},allowedMediaSources:{label:"Allowed Media Sources",type:"mediaSource",multiple:!0},defaultUploadMediaSource:{label:"Default Upload Media Source",type:"mediaSource",multiple:!1},supportedLanguages:{label:"Supported Languages",type:"select",predefinedOptions:"languages",multiple:!0},defaultLanguage:{label:"Default Language",type:"select",predefinedOptions:"languages"},githubIntegration:{label:"GitHub Integration",type:"resource",accept:["GITHUB"]},githubRepo:{label:"GitHub Repository",type:"input"},githubOwner:{label:"GitHub Owner",type:"input",required:!1}}),G=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-37nilXzE.js"))},{path:"/collections",component:()=>Promise.resolve().then(()=>require("./Overview-37nilXzE.js"))},{path:"/collections/:collectionId",component:()=>Promise.resolve().then(()=>require("./Entries-DkRhOt95.js"))},{path:"/collections/:collectionId/:entryId",component:()=>Promise.resolve().then(()=>require("./ContentEditor-ClYwiqvs.js"))},{path:"/components",component:()=>Promise.resolve().then(()=>require("./Components-DXbx0RLV.js"))},{path:"/global-styling",component:()=>Promise.resolve().then(()=>require("./GlobalStyling-CnSlXkZc.js"))}],L=[{key:"create-content",name:"Create content",description:"Team member can create content"},{key:"edit-content",name:"Edit content",description:"Team member can edit content"},{key:"delete-content",name:"Delete content",description:"Team member can delete content"}],F={component:()=>Promise.resolve().then(()=>require("./index-UtjLbLw-.js")),metadata:B,config:O,routes:G,permissions:L},V={name:"Mail Templates",description:"Build templates for your transactional emails.",icon:"mdi-table",version:"1.0.0"},H=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},templateCollection:{label:"Mail Templates Collection",type:"input",default:"mail-templates"}}),N=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-BDlBCUI_.js"))},{path:"/:optionId",component:()=>Promise.resolve().then(()=>require("./Detail-mvSGbnFU.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-mvSGbnFU.js"))}],_=[{key:"create-template",name:"Create mail template",description:"Team member can create a new mail template"},{key:"edit-template",name:"Edit mail template",description:"Team member can edit a mail template"},{key:"delete-template",name:"Delete mail template",description:"Team member can delete a mail template"}],K={component:()=>Promise.resolve().then(()=>require("./index-Cz-baGax.js")),metadata:V,config:H,routes:N,permissions:_},W={name:"Appointments",description:"Create and manage agendas for booking appointments.",icon:"mdi-table",version:"1.0.0"},z=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},mailAccount:{label:"Mail account",type:"resource",accept:["GMAIL"]},agendaCollection:{label:"Agenda Collection",type:"input",default:"agendas"},reservationsCollection:{label:"Reservations Collection",type:"input",default:"bookings_orders"},reservedSpotsCollection:{label:"Reserved Spots Collection",type:"input",default:"reserved_spots"}}),J=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-t0pG5xjA.js"))},{path:"/create",component:()=>Promise.resolve().then(()=>require("./index-D2a6wEPh.js"))},{path:"/create/regular",component:()=>Promise.resolve().then(()=>require("./regular-1LXNPviB.js"))},{path:"/edit/:id",component:()=>Promise.resolve().then(()=>require("./index-DOeXSG47.js"))},{path:"/edit/:id/agenda",component:()=>Promise.resolve().then(()=>require("./agenda-H1NyBNr2.js"))},{path:"/edit/:id/regular-slots",component:()=>Promise.resolve().then(()=>require("./regular-slots-DBs1XVeN.js"))},{path:"/edit/:id/exceptions",component:()=>Promise.resolve().then(()=>require("./exceptions-Bp5BSvxO.js"))},{path:"/edit/:id/availability",component:()=>Promise.resolve().then(()=>require("./availability-DxrUcYbW.js"))},{path:"/edit/:id/payment",component:()=>Promise.resolve().then(()=>require("./payment-DDnC03jb.js"))},{path:"/edit/:id/resources",component:()=>Promise.resolve().then(()=>require("./resources-BtF5RUUq.js"))},{path:"/edit/:id/orders",component:()=>Promise.resolve().then(()=>require("./orders-BAT2ciXx.js"))}],Q=[{key:"create-agendas",name:"Create agendas",description:"Team member can create agendas"},{key:"edit-agendas",name:"Edit agendas",description:"Team member can edit agendas"},{key:"delete-agendas",name:"Delete agendas",description:"Team member can delete agendas"},{key:"manage-reservations",name:"Manage reservations",description:"Team member can create, edit, and delete reservations"}],X=[{name:"findAppointment",description:"Show a card in chat with details of an appointment/booking/reservation/...",executionMode:"component",chatComponent:"AppointmentDetailsCard",parameters:{type:"object",properties:{name:{type:"string",description:"Name of the booker"},email:{type:"string",description:"Email of the booker"},date:{type:"string",description:"Date of the appointment (YYYY-MM-DD)"}},required:["date"]}},{name:"getRecentAppointments",description:"Show a table in chat with recent appointments, default loading the latest 20 appointments.",executionMode:"component",chatComponent:"AppointmentListTable",parameters:{type:"object",properties:{quantity:{type:"number",description:"Number of appointments to load. default: 20 max: 100",default:20}},required:["quantity"]}},{name:"changeAppointmentDetails",description:"Show a card in chat where user can edit name, email and date of an existing appointment.",executionMode:"component",chatComponent:"AppointmentEditor",parameters:{type:"object",properties:{orderId:{type:"string",description:"ID of the order / appointment. This is NOT the reservation ID."}},required:["orderId"]}}],Z={component:()=>Promise.resolve().then(()=>require("./index-9HVlmvK3.js")),metadata:W,config:z,routes:J,permissions:Q,tools:X,chatComponents:{AppointmentDetailsCard:()=>Promise.resolve().then(()=>require("./AppointmentDetailsCard-DpLM5IrB.js")),AppointmentListTable:()=>Promise.resolve().then(()=>require("./AppointmentListTable-CQ0WIXtj.js")),AppointmentEditor:()=>Promise.resolve().then(()=>require("./AppointmentEditor-CaTfbkIf.js"))}};exports.appointments=Z;exports.contentManager=F;exports.custom=g;exports.googleAnalytics=R;exports.mailTemplates=K;exports.productCollections=k;exports.products=d;exports.promoCodes=w;exports.shippingOptions=x;exports.table=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@oneclick.dev/cms-kit"),t={name:"Table",description:"Manage tables and structured data.",icon:"mdi-table",version:"1.0.0"},o=e.defineModuleConfig({getItems:{label:"Fetch items",type:"flow"},viewable:{label:"Viewable",type:"checkbox",default:!1},editable:{label:"Editable",type:"checkbox",default:!1},deletable:{label:"Deletable",type:"checkbox",default:!1},addable:{label:"Addable",type:"checkbox",default:!1},searchable:{label:"Searchable",type:"checkbox",default:!1},downloadable:{label:"Downloadable",type:"checkbox",default:!1},allowBulkActions:{label:"Allow Bulk Actions",type:"checkbox",default:!1}}),r=[{path:"",component:()=>Promise.resolve().then(()=>require("./TableView-DtcF-oQc.js"))}],n=[],i={component:()=>Promise.resolve().then(()=>require("./index-DFQGVHTs.js")),metadata:t,config:o,routes:r,permissions:n},a={name:"Products",description:"Manage products",icon:"mdi-table",version:"1.0.0"},s=e.defineModuleConfig({project:{label:"Database",type:"resource",accept:["FIREBASE"]},productCollection:{label:"Product Collection",type:"input",default:"products"},collectionsCollection:{label:"Collections Collection",type:"input",default:"public/e-commerce:collections"},allowedMediaSources:{label:"Allowed Media Sources",type:"mediaSource",multiple:!0},defaultUploadMediaSource:{label:"Default Upload Media Source",type:"mediaSource",multiple:!1},previewUrl:{label:"Preview URL",type:"input",default:"https://preview.com/shop/{{slug}}"}}),c=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-DeQQ0FY3.js"))},{path:"/:productId",component:()=>Promise.resolve().then(()=>require("./Detail-CjuhjPby.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-CjuhjPby.js"))}],p=[{key:"create-product",name:"Create product",description:"Team member can create a new product"},{key:"edit-product",name:"Edit product",description:"Team member can edit a product"},{key:"delete-product",name:"Delete product",description:"Team member can delete a product"}],l=[{name:"getEmptyStock",description:"Get a list of products with empty stock.",executionMode:"api",parameters:{type:"object",properties:{category:{type:"string",description:"Category of the product"}},required:["category"]}},{name:"viewProductDetails",description:"Show a card in chat with details of a product based on product ID.",executionMode:"component",chatComponent:"ProductDetailsCard",parameters:{type:"object",properties:{productId:{type:"string",description:"ID of the product"}},required:["productId"]}}],d={component:()=>Promise.resolve().then(()=>require("./index-R2oUDsjx.js")),metadata:a,config:s,routes:c,permissions:p,tools:l,chatComponents:{ProductDetailsCard:()=>Promise.resolve().then(()=>require("./ProductDetailsCard-Bn7qrgmc.js"))}},m={name:"Custom",description:"Custom module",icon:"mdi-table",version:"1.0.0"},u=e.defineModuleConfig({formLayout:{label:"Design View",type:"form"}}),h=[{path:"",component:()=>Promise.resolve().then(()=>require("./View-C8oQG6gI.js"))}],g=[],f={component:()=>Promise.resolve().then(()=>require("./index-CSxYBeVA.js")),metadata:m,config:u,routes:h,permissions:g},y={name:"Promo Codes",description:"Create and manage promo codes",icon:"mdi-table",version:"1.0.0"},b=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},promoCodeCollection:{label:"Promo Code Collection",type:"input",default:"promo-codes"}}),v=[{path:"",component:()=>Promise.resolve().then(()=>require("./Create-DuZ5nZrX.js"))},{path:"/promo-codes",component:()=>Promise.resolve().then(()=>require("./Find-D4Qa45qC.js"))},{path:"/promo-codes/:promoCodeId",component:()=>Promise.resolve().then(()=>require("./Detail-BZ-iE9vf.js"))}],C=[{key:"create-promo-codes",name:"Create promo codes",description:"Team member can create promo codes"},{key:"view-promo-codes",name:"View promo codes",description:"Team member can view promo codes"},{key:"delete-promo-codes",name:"Delete promo codes",description:"Team member can delete promo codes"}],w={component:()=>Promise.resolve().then(()=>require("./index-CkiNvRzs.js")),metadata:y,config:b,routes:v,permissions:C},q={name:"Product Collections",description:"Manage product collections",icon:"mdi-table",version:"1.0.0"},P=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},collectionsCollection:{label:"Collections Collection",type:"input",default:"public/e-commerce:collections"},allowedMediaSources:{label:"Allowed Media Sources",type:"mediaSource",multiple:!0},defaultUploadMediaSource:{label:"Default Upload Media Source",type:"mediaSource",multiple:!1}}),D=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-T-lsy3UZ.js"))},{path:"/:collectionId",component:()=>Promise.resolve().then(()=>require("./Detail-CPqug27l.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-CPqug27l.js"))}],S=[{key:"create-collection",name:"Create product collection",description:"Team member can create a new product collection"},{key:"edit-collection",name:"Edit product collection",description:"Team member can edit a product collection"},{key:"delete-collection",name:"Delete product collection",description:"Team member can delete a product collection"}],k={component:()=>Promise.resolve().then(()=>require("./index-CwqrAU-H.js")),metadata:q,config:P,routes:D,permissions:S},M={name:"Shipping Options",description:"Manage shipping options",icon:"mdi-table",version:"1.0.0"},A=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},shippingOptionsCollection:{label:"Shipping Options Collection",type:"input",default:"public/e-commerce:shipping-options"}}),$=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-BbvfH1u-.js"))},{path:"/:optionId",component:()=>Promise.resolve().then(()=>require("./Detail-C8wQiDcv.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-C8wQiDcv.js"))}],T=[{key:"create-option",name:"Create shipping option",description:"Team member can create a new shipping option"},{key:"edit-option",name:"Edit shipping option",description:"Team member can edit a shipping option"},{key:"delete-option",name:"Delete shipping option",description:"Team member can delete a shipping option"}],x={component:()=>Promise.resolve().then(()=>require("./index-Co4ON2Di.js")),metadata:M,config:A,routes:$,permissions:T},E={name:"Google Analytics",description:"Configure Google Analytics settings.",icon:"mdi-google-analytics",version:"1.0.0"},I=e.defineModuleConfig({serviceAccount:{label:"Google Service Account",type:"resource",accept:["GOOGLE_SERVICE_ACCOUNT"]},propertyId:{label:"GA4 Property ID",type:"input",default:""},siteUrl:{label:"Search Console Site URL",type:"input",default:"",placeholder:"https://example.com or sc-domain:example.com",description:"Optional. When set, the module will fetch real keyword data from Google Search Console. Use the same site URL format as shown in Search Console."}}),j=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-Da0XexiT.js"))},{path:"/acquisition",component:()=>Promise.resolve().then(()=>require("./Acquisition-_-cq972V.js"))},{path:"/content",component:()=>Promise.resolve().then(()=>require("./Content-C-4Cdniz.js"))},{path:"/audience",component:()=>Promise.resolve().then(()=>require("./Audience-QnFQs93n.js"))},{path:"/seo",component:()=>Promise.resolve().then(()=>require("./SeoHealth-BkpJ1F2Y.js"))}],U=[],Y=[{name:"getTopPages",description:"Show a card in chat with the most popular/visited pages on the website for a given period.",executionMode:"component",chatComponent:"TopPagesCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Use relative formats like 'yesterday', '7daysAgo', '30daysAgo', '90daysAgo', '365daysAgo' or exact dates 'YYYY-MM-DD'. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Use 'today', 'yesterday', or exact dates 'YYYY-MM-DD'. Default: 'today'"},limit:{type:"number",description:"Number of pages to show. Default: 10, max: 50",default:10}},required:[]}},{name:"getVisitorStats",description:"Show a card in chat with visitor/traffic statistics (sessions, users, page views, bounce rate, etc.) for a given period. Use this when the user asks about traffic, visitors, how many people visited, etc.",executionMode:"component",chatComponent:"VisitorStatsCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Use 'yesterday' for yesterday, '7daysAgo' for last week, '30daysAgo' for last month, '90daysAgo' for last quarter, '365daysAgo' for last year, or exact 'YYYY-MM-DD'. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Use 'today', 'yesterday', or exact 'YYYY-MM-DD'. Default: 'today'"}},required:[]}},{name:"getSearchTerms",description:"Show a card in chat with search terms/keywords that bring visitors to the website. Use this when the user asks about keywords, SEO terms, what people search for, or search queries.",executionMode:"component",chatComponent:"SearchTermsCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getTrafficSources",description:"Show a card in chat with where website visitors are coming from (traffic sources, channels, referrals). Use this when the user asks about traffic sources, where visitors come from, referrals, channels, etc.",executionMode:"component",chatComponent:"TrafficSourcesCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getRealtimeVisitors",description:"Show a card in chat with the current real-time active visitors on the website right now.",executionMode:"component",chatComponent:"RealtimeCard",parameters:{type:"object",properties:{},required:[]}},{name:"getCountryBreakdown",description:"Show a card in chat with a geographic breakdown of where website visitors are located. Use this when the user asks about visitor countries, geographic distribution, or where their audience is from.",executionMode:"component",chatComponent:"CountryBreakdownCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getDeviceBreakdown",description:"Show a card in chat with a device breakdown (desktop, mobile, tablet) of website visitors. Use this when the user asks about what devices people use, mobile vs desktop traffic, or if their site is mobile-friendly.",executionMode:"component",chatComponent:"DeviceBreakdownCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}},{name:"getPeakHours",description:"Show a card in chat with peak traffic hours and a weekly heatmap showing when visitors are most active. Use this when the user asks about best times to post, peak hours, busiest times, or when their audience is online.",executionMode:"component",chatComponent:"PeakHoursCard",parameters:{type:"object",properties:{startDate:{type:"string",description:"Start date for the report. Default: '30daysAgo'"},endDate:{type:"string",description:"End date for the report. Default: 'today'"}},required:[]}}],R={component:()=>Promise.resolve().then(()=>require("./index-DwHYfZl_.js")),metadata:E,config:I,routes:j,permissions:U,tools:Y,chatComponents:{TopPagesCard:()=>Promise.resolve().then(()=>require("./TopPagesCard-BDeA997A.js")),VisitorStatsCard:()=>Promise.resolve().then(()=>require("./VisitorStatsCard-BmByE_Hi.js")),SearchTermsCard:()=>Promise.resolve().then(()=>require("./SearchTermsCard-BsB-63aH.js")),TrafficSourcesCard:()=>Promise.resolve().then(()=>require("./TrafficSourcesCard-C3ziDTUL.js")),RealtimeCard:()=>Promise.resolve().then(()=>require("./RealtimeCard--APfRNc8.js")),CountryBreakdownCard:()=>Promise.resolve().then(()=>require("./CountryBreakdownCard-D7BK3nRD.js")),DeviceBreakdownCard:()=>Promise.resolve().then(()=>require("./DeviceBreakdownCard-DRhQ9ufG.js")),PeakHoursCard:()=>Promise.resolve().then(()=>require("./PeakHoursCard-BR5zmta4.js"))}},B={name:"Content Manager",description:"Create and manage content",icon:"mdi-table",version:"1.0.0"},G=e.defineModuleConfig({project:{label:"Database",type:"resource",accept:["FIREBASE"],required:!0},domain:{label:"Domain",type:"input",default:"https://domain.com"},collectionsCollection:{label:"Collections Collection",type:"input",default:"content_collections",required:!0},contentCollection:{label:"Content Collection",type:"input",default:"content",required:!0},allowedMediaSources:{label:"Allowed Media Sources",type:"mediaSource",multiple:!0},defaultUploadMediaSource:{label:"Default Upload Media Source",type:"mediaSource",multiple:!1},supportedLanguages:{label:"Supported Languages",type:"select",predefinedOptions:"languages",multiple:!0},defaultLanguage:{label:"Default Language",type:"select",predefinedOptions:"languages"},githubIntegration:{label:"GitHub Integration",type:"resource",accept:["GITHUB"]},githubSettings:e.configGroup({label:"GitHub Settings",description:"Configure the GitHub repository for content sync.",visibleWhen:{githubIntegration:"isNotEmpty"},fields:{githubRepo:{label:"GitHub Repository",type:"input"},githubOwner:{label:"GitHub Owner",type:"input"}}})}),O=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-37nilXzE.js"))},{path:"/collections",component:()=>Promise.resolve().then(()=>require("./Overview-37nilXzE.js"))},{path:"/collections/:collectionId",component:()=>Promise.resolve().then(()=>require("./Entries-DkRhOt95.js"))},{path:"/collections/:collectionId/:entryId",component:()=>Promise.resolve().then(()=>require("./ContentEditor-D8jaI0h6.js"))},{path:"/components",component:()=>Promise.resolve().then(()=>require("./Components-DXbx0RLV.js"))},{path:"/global-styling",component:()=>Promise.resolve().then(()=>require("./GlobalStyling-CnSlXkZc.js"))}],L=[{key:"create-content",name:"Create content",description:"Team member can create content"},{key:"edit-content",name:"Edit content",description:"Team member can edit content"},{key:"delete-content",name:"Delete content",description:"Team member can delete content"}],H={component:()=>Promise.resolve().then(()=>require("./index-UtjLbLw-.js")),metadata:B,config:G,routes:O,permissions:L},F={name:"Mail Templates",description:"Build templates for your transactional emails.",icon:"mdi-table",version:"1.0.0"},V=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},templateCollection:{label:"Mail Templates Collection",type:"input",default:"mail-templates"}}),N=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-BDlBCUI_.js"))},{path:"/:optionId",component:()=>Promise.resolve().then(()=>require("./Detail-mvSGbnFU.js"))},{path:"/new",component:()=>Promise.resolve().then(()=>require("./Detail-mvSGbnFU.js"))}],_=[{key:"create-template",name:"Create mail template",description:"Team member can create a new mail template"},{key:"edit-template",name:"Edit mail template",description:"Team member can edit a mail template"},{key:"delete-template",name:"Delete mail template",description:"Team member can delete a mail template"}],W={component:()=>Promise.resolve().then(()=>require("./index-Cz-baGax.js")),metadata:F,config:V,routes:N,permissions:_},K={name:"Appointments",description:"Create and manage agendas for booking appointments.",icon:"mdi-table",version:"1.0.0"},z=e.defineModuleConfig({project:{label:"Project",type:"resource",accept:["FIREBASE"]},mailAccount:{label:"Mail account",type:"resource",accept:["GMAIL"]},agendaCollection:{label:"Agenda Collection",type:"input",default:"agendas"},reservationsCollection:{label:"Reservations Collection",type:"input",default:"bookings_orders"},reservedSpotsCollection:{label:"Reserved Spots Collection",type:"input",default:"reserved_spots"}}),J=[{path:"",component:()=>Promise.resolve().then(()=>require("./Overview-t0pG5xjA.js"))},{path:"/create",component:()=>Promise.resolve().then(()=>require("./index-D2a6wEPh.js"))},{path:"/create/regular",component:()=>Promise.resolve().then(()=>require("./regular-1LXNPviB.js"))},{path:"/edit/:id",component:()=>Promise.resolve().then(()=>require("./index-DOeXSG47.js"))},{path:"/edit/:id/agenda",component:()=>Promise.resolve().then(()=>require("./agenda-H1NyBNr2.js"))},{path:"/edit/:id/regular-slots",component:()=>Promise.resolve().then(()=>require("./regular-slots-DBs1XVeN.js"))},{path:"/edit/:id/exceptions",component:()=>Promise.resolve().then(()=>require("./exceptions-Bp5BSvxO.js"))},{path:"/edit/:id/availability",component:()=>Promise.resolve().then(()=>require("./availability-DxrUcYbW.js"))},{path:"/edit/:id/payment",component:()=>Promise.resolve().then(()=>require("./payment-DDnC03jb.js"))},{path:"/edit/:id/resources",component:()=>Promise.resolve().then(()=>require("./resources-BtF5RUUq.js"))},{path:"/edit/:id/orders",component:()=>Promise.resolve().then(()=>require("./orders-BAT2ciXx.js"))}],Q=[{key:"create-agendas",name:"Create agendas",description:"Team member can create agendas"},{key:"edit-agendas",name:"Edit agendas",description:"Team member can edit agendas"},{key:"delete-agendas",name:"Delete agendas",description:"Team member can delete agendas"},{key:"manage-reservations",name:"Manage reservations",description:"Team member can create, edit, and delete reservations"}],X=[{name:"findAppointment",description:"Show a card in chat with details of an appointment/booking/reservation/...",executionMode:"component",chatComponent:"AppointmentDetailsCard",parameters:{type:"object",properties:{name:{type:"string",description:"Name of the booker"},email:{type:"string",description:"Email of the booker"},date:{type:"string",description:"Date of the appointment (YYYY-MM-DD)"}},required:["date"]}},{name:"getRecentAppointments",description:"Show a table in chat with recent appointments, default loading the latest 20 appointments.",executionMode:"component",chatComponent:"AppointmentListTable",parameters:{type:"object",properties:{quantity:{type:"number",description:"Number of appointments to load. default: 20 max: 100",default:20}},required:["quantity"]}},{name:"changeAppointmentDetails",description:"Show a card in chat where user can edit name, email and date of an existing appointment.",executionMode:"component",chatComponent:"AppointmentEditor",parameters:{type:"object",properties:{orderId:{type:"string",description:"ID of the order / appointment. This is NOT the reservation ID."}},required:["orderId"]}}],Z={component:()=>Promise.resolve().then(()=>require("./index-9HVlmvK3.js")),metadata:K,config:z,routes:J,permissions:Q,tools:X,chatComponents:{AppointmentDetailsCard:()=>Promise.resolve().then(()=>require("./AppointmentDetailsCard-DpLM5IrB.js")),AppointmentListTable:()=>Promise.resolve().then(()=>require("./AppointmentListTable-CQ0WIXtj.js")),AppointmentEditor:()=>Promise.resolve().then(()=>require("./AppointmentEditor-CaTfbkIf.js"))}};exports.appointments=Z;exports.contentManager=H;exports.custom=f;exports.googleAnalytics=R;exports.mailTemplates=W;exports.productCollections=k;exports.products=d;exports.promoCodes=w;exports.shippingOptions=x;exports.table=i;
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
- import { defineModuleConfig as e } from "@oneclick.dev/cms-kit";
2
- const t = {
1
+ import { defineModuleConfig as e, configGroup as t } from "@oneclick.dev/cms-kit";
2
+ const o = {
3
3
  name: "Table",
4
4
  description: "Manage tables and structured data.",
5
5
  icon: "mdi-table",
6
6
  version: "1.0.0"
7
- }, o = e({
7
+ }, a = e({
8
8
  getItems: {
9
9
  label: "Fetch items",
10
10
  type: "flow"
@@ -44,20 +44,20 @@ const t = {
44
44
  type: "checkbox",
45
45
  default: !1
46
46
  }
47
- }), a = [
47
+ }), n = [
48
48
  { path: "", component: () => import("./TableView-YJ3BvQk7.mjs") }
49
- ], n = [], N = {
49
+ ], i = [], _ = {
50
50
  component: () => import("./index-Bkq58CeQ.mjs"),
51
- metadata: t,
52
- config: o,
53
- routes: a,
54
- permissions: n
55
- }, i = {
51
+ metadata: o,
52
+ config: a,
53
+ routes: n,
54
+ permissions: i
55
+ }, r = {
56
56
  name: "Products",
57
57
  description: "Manage products",
58
58
  icon: "mdi-table",
59
59
  version: "1.0.0"
60
- }, r = e({
60
+ }, p = e({
61
61
  project: {
62
62
  label: "Database",
63
63
  type: "resource",
@@ -88,15 +88,15 @@ const t = {
88
88
  type: "input",
89
89
  default: "https://preview.com/shop/{{slug}}"
90
90
  }
91
- }), p = [
91
+ }), s = [
92
92
  { path: "", component: () => import("./Overview-DoOASlNz.mjs") },
93
93
  { path: "/:productId", component: () => import("./Detail-Dnpnmy4-.mjs") },
94
94
  { path: "/new", component: () => import("./Detail-Dnpnmy4-.mjs") }
95
- ], s = [
95
+ ], c = [
96
96
  { key: "create-product", name: "Create product", description: "Team member can create a new product" },
97
97
  { key: "edit-product", name: "Edit product", description: "Team member can edit a product" },
98
98
  { key: "delete-product", name: "Delete product", description: "Team member can delete a product" }
99
- ], c = [
99
+ ], d = [
100
100
  {
101
101
  name: "getEmptyStock",
102
102
  description: "Get a list of products with empty stock.",
@@ -132,35 +132,35 @@ const t = {
132
132
  ]
133
133
  }
134
134
  }
135
- ], _ = {
135
+ ], W = {
136
136
  component: () => import("./index-Cpnn_Pxd.mjs"),
137
- metadata: i,
138
- config: r,
139
- routes: p,
140
- permissions: s,
141
- tools: c,
137
+ metadata: r,
138
+ config: p,
139
+ routes: s,
140
+ permissions: c,
141
+ tools: d,
142
142
  chatComponents: {
143
143
  ProductDetailsCard: () => import("./ProductDetailsCard-6nHikw4V.mjs")
144
144
  }
145
- }, d = {
145
+ }, m = {
146
146
  name: "Custom",
147
147
  description: "Custom module",
148
148
  icon: "mdi-table",
149
149
  version: "1.0.0"
150
- }, m = e({
150
+ }, l = e({
151
151
  formLayout: {
152
152
  label: "Design View",
153
153
  type: "form"
154
154
  }
155
- }), l = [
155
+ }), u = [
156
156
  { path: "", component: () => import("./View-CPMontPz.mjs") }
157
- ], u = [], W = {
157
+ ], h = [], z = {
158
158
  component: () => import("./index-Dpl9sU6a.mjs"),
159
- metadata: d,
160
- config: m,
161
- routes: l,
162
- permissions: u
163
- }, h = {
159
+ metadata: m,
160
+ config: l,
161
+ routes: u,
162
+ permissions: h
163
+ }, g = {
164
164
  name: "Promo Codes",
165
165
  description: "Create and manage promo codes",
166
166
  icon: "mdi-table",
@@ -176,26 +176,26 @@ const t = {
176
176
  type: "input",
177
177
  default: "promo-codes"
178
178
  }
179
- }), g = [
179
+ }), b = [
180
180
  { path: "", component: () => import("./Create-6uT9HWar.mjs") },
181
181
  { path: "/promo-codes", component: () => import("./Find-Bd1uLqSa.mjs") },
182
182
  { path: "/promo-codes/:promoCodeId", component: () => import("./Detail-CJVMJDP7.mjs") }
183
- ], b = [
183
+ ], f = [
184
184
  { key: "create-promo-codes", name: "Create promo codes", description: "Team member can create promo codes" },
185
185
  { key: "view-promo-codes", name: "View promo codes", description: "Team member can view promo codes" },
186
186
  { key: "delete-promo-codes", name: "Delete promo codes", description: "Team member can delete promo codes" }
187
- ], z = {
187
+ ], J = {
188
188
  component: () => import("./index-hlylYYgy.mjs"),
189
- metadata: h,
189
+ metadata: g,
190
190
  config: y,
191
- routes: g,
192
- permissions: b
193
- }, f = {
191
+ routes: b,
192
+ permissions: f
193
+ }, w = {
194
194
  name: "Product Collections",
195
195
  description: "Manage product collections",
196
196
  icon: "mdi-table",
197
197
  version: "1.0.0"
198
- }, w = e({
198
+ }, C = e({
199
199
  project: {
200
200
  label: "Project",
201
201
  type: "resource",
@@ -216,26 +216,26 @@ const t = {
216
216
  type: "mediaSource",
217
217
  multiple: !1
218
218
  }
219
- }), C = [
219
+ }), D = [
220
220
  { path: "", component: () => import("./Overview-BCpJNiEB.mjs") },
221
221
  { path: "/:collectionId", component: () => import("./Detail-C1Blq61w.mjs") },
222
222
  { path: "/new", component: () => import("./Detail-C1Blq61w.mjs") }
223
- ], D = [
223
+ ], S = [
224
224
  { key: "create-collection", name: "Create product collection", description: "Team member can create a new product collection" },
225
225
  { key: "edit-collection", name: "Edit product collection", description: "Team member can edit a product collection" },
226
226
  { key: "delete-collection", name: "Delete product collection", description: "Team member can delete a product collection" }
227
- ], J = {
227
+ ], K = {
228
228
  component: () => import("./index-CQkOH2_3.mjs"),
229
- metadata: f,
230
- config: w,
231
- routes: C,
232
- permissions: D
233
- }, S = {
229
+ metadata: w,
230
+ config: C,
231
+ routes: D,
232
+ permissions: S
233
+ }, k = {
234
234
  name: "Shipping Options",
235
235
  description: "Manage shipping options",
236
236
  icon: "mdi-table",
237
237
  version: "1.0.0"
238
- }, k = e({
238
+ }, v = e({
239
239
  project: {
240
240
  label: "Project",
241
241
  type: "resource",
@@ -246,26 +246,26 @@ const t = {
246
246
  type: "input",
247
247
  default: "public/e-commerce:shipping-options"
248
248
  }
249
- }), v = [
249
+ }), A = [
250
250
  { path: "", component: () => import("./Overview-CIa1E-HH.mjs") },
251
251
  { path: "/:optionId", component: () => import("./Detail-CtItxMX4.mjs") },
252
252
  { path: "/new", component: () => import("./Detail-CtItxMX4.mjs") }
253
- ], A = [
253
+ ], M = [
254
254
  { key: "create-option", name: "Create shipping option", description: "Team member can create a new shipping option" },
255
255
  { key: "edit-option", name: "Edit shipping option", description: "Team member can edit a shipping option" },
256
256
  { key: "delete-option", name: "Delete shipping option", description: "Team member can delete a shipping option" }
257
- ], K = {
257
+ ], Q = {
258
258
  component: () => import("./index-BfBBm9uY.mjs"),
259
- metadata: S,
260
- config: k,
261
- routes: v,
262
- permissions: A
263
- }, M = {
259
+ metadata: k,
260
+ config: v,
261
+ routes: A,
262
+ permissions: M
263
+ }, $ = {
264
264
  name: "Google Analytics",
265
265
  description: "Configure Google Analytics settings.",
266
266
  icon: "mdi-google-analytics",
267
267
  version: "1.0.0"
268
- }, $ = e({
268
+ }, x = e({
269
269
  serviceAccount: {
270
270
  label: "Google Service Account",
271
271
  type: "resource",
@@ -283,13 +283,13 @@ const t = {
283
283
  placeholder: "https://example.com or sc-domain:example.com",
284
284
  description: "Optional. When set, the module will fetch real keyword data from Google Search Console. Use the same site URL format as shown in Search Console."
285
285
  }
286
- }), x = [
286
+ }), T = [
287
287
  { path: "", component: () => import("./Overview-gJSvftdE.mjs") },
288
288
  { path: "/acquisition", component: () => import("./Acquisition-D_Qx7XRY.mjs") },
289
289
  { path: "/content", component: () => import("./Content-DW6xvbUo.mjs") },
290
290
  { path: "/audience", component: () => import("./Audience-BdlrWkY-.mjs") },
291
291
  { path: "/seo", component: () => import("./SeoHealth-Bc5chnaa.mjs") }
292
- ], T = [], E = [
292
+ ], E = [], I = [
293
293
  {
294
294
  name: "getTopPages",
295
295
  description: "Show a card in chat with the most popular/visited pages on the website for a given period.",
@@ -446,13 +446,13 @@ const t = {
446
446
  required: []
447
447
  }
448
448
  }
449
- ], Q = {
449
+ ], X = {
450
450
  component: () => import("./index-D7JBu6iT.mjs"),
451
- metadata: M,
452
- config: $,
453
- routes: x,
454
- permissions: T,
455
- tools: E,
451
+ metadata: $,
452
+ config: x,
453
+ routes: T,
454
+ permissions: E,
455
+ tools: I,
456
456
  chatComponents: {
457
457
  TopPagesCard: () => import("./TopPagesCard-CTozhOr_.mjs"),
458
458
  VisitorStatsCard: () => import("./VisitorStatsCard-CXizEbVK.mjs"),
@@ -463,16 +463,17 @@ const t = {
463
463
  DeviceBreakdownCard: () => import("./DeviceBreakdownCard-W1frLe0L.mjs"),
464
464
  PeakHoursCard: () => import("./PeakHoursCard-9-EZFZLR.mjs")
465
465
  }
466
- }, I = {
466
+ }, j = {
467
467
  name: "Content Manager",
468
468
  description: "Create and manage content",
469
469
  icon: "mdi-table",
470
470
  version: "1.0.0"
471
- }, j = e({
471
+ }, U = e({
472
472
  project: {
473
473
  label: "Database",
474
474
  type: "resource",
475
- accept: ["FIREBASE"]
475
+ accept: ["FIREBASE"],
476
+ required: !0
476
477
  },
477
478
  domain: {
478
479
  label: "Domain",
@@ -482,12 +483,14 @@ const t = {
482
483
  collectionsCollection: {
483
484
  label: "Collections Collection",
484
485
  type: "input",
485
- default: "content_collections"
486
+ default: "content_collections",
487
+ required: !0
486
488
  },
487
489
  contentCollection: {
488
490
  label: "Content Collection",
489
491
  type: "input",
490
- default: "content"
492
+ default: "content",
493
+ required: !0
491
494
  },
492
495
  allowedMediaSources: {
493
496
  label: "Allowed Media Sources",
@@ -515,38 +518,44 @@ const t = {
515
518
  type: "resource",
516
519
  accept: ["GITHUB"]
517
520
  },
518
- githubRepo: {
519
- label: "GitHub Repository",
520
- type: "input"
521
- },
522
- githubOwner: {
523
- label: "GitHub Owner",
524
- type: "input",
525
- required: !1
526
- }
527
- }), U = [
521
+ githubSettings: t({
522
+ label: "GitHub Settings",
523
+ description: "Configure the GitHub repository for content sync.",
524
+ visibleWhen: { githubIntegration: "isNotEmpty" },
525
+ fields: {
526
+ githubRepo: {
527
+ label: "GitHub Repository",
528
+ type: "input"
529
+ },
530
+ githubOwner: {
531
+ label: "GitHub Owner",
532
+ type: "input"
533
+ }
534
+ }
535
+ })
536
+ }), q = [
528
537
  { path: "", component: () => import("./Overview-C--dq51X.mjs") },
529
538
  { path: "/collections", component: () => import("./Overview-C--dq51X.mjs") },
530
539
  { path: "/collections/:collectionId", component: () => import("./Entries-dLlCrXXe.mjs") },
531
- { path: "/collections/:collectionId/:entryId", component: () => import("./ContentEditor-fwvAAH_A.mjs") },
540
+ { path: "/collections/:collectionId/:entryId", component: () => import("./ContentEditor-DxqN6cIZ.mjs") },
532
541
  { path: "/components", component: () => import("./Components-C83O-xlF.mjs") },
533
542
  { path: "/global-styling", component: () => import("./GlobalStyling-C9VthHWK.mjs") }
534
543
  ], P = [
535
544
  { key: "create-content", name: "Create content", description: "Team member can create content" },
536
545
  { key: "edit-content", name: "Edit content", description: "Team member can edit content" },
537
546
  { key: "delete-content", name: "Delete content", description: "Team member can delete content" }
538
- ], X = {
547
+ ], Z = {
539
548
  component: () => import("./index-BWDwEd8D.mjs"),
540
- metadata: I,
541
- config: j,
542
- routes: U,
549
+ metadata: j,
550
+ config: U,
551
+ routes: q,
543
552
  permissions: P
544
553
  }, Y = {
545
554
  name: "Mail Templates",
546
555
  description: "Build templates for your transactional emails.",
547
556
  icon: "mdi-table",
548
557
  version: "1.0.0"
549
- }, q = e({
558
+ }, R = e({
550
559
  project: {
551
560
  label: "Project",
552
561
  type: "resource",
@@ -557,26 +566,26 @@ const t = {
557
566
  type: "input",
558
567
  default: "mail-templates"
559
568
  }
560
- }), R = [
569
+ }), B = [
561
570
  { path: "", component: () => import("./Overview-Su8ZUbMs.mjs") },
562
571
  { path: "/:optionId", component: () => import("./Detail-Byk781b4.mjs") },
563
572
  { path: "/new", component: () => import("./Detail-Byk781b4.mjs") }
564
- ], B = [
573
+ ], G = [
565
574
  { key: "create-template", name: "Create mail template", description: "Team member can create a new mail template" },
566
575
  { key: "edit-template", name: "Edit mail template", description: "Team member can edit a mail template" },
567
576
  { key: "delete-template", name: "Delete mail template", description: "Team member can delete a mail template" }
568
- ], Z = {
577
+ ], ee = {
569
578
  component: () => import("./index-CU-tbS5W.mjs"),
570
579
  metadata: Y,
571
- config: q,
572
- routes: R,
573
- permissions: B
580
+ config: R,
581
+ routes: B,
582
+ permissions: G
574
583
  }, O = {
575
584
  name: "Appointments",
576
585
  description: "Create and manage agendas for booking appointments.",
577
586
  icon: "mdi-table",
578
587
  version: "1.0.0"
579
- }, G = e({
588
+ }, L = e({
580
589
  project: {
581
590
  label: "Project",
582
591
  type: "resource",
@@ -602,7 +611,7 @@ const t = {
602
611
  type: "input",
603
612
  default: "reserved_spots"
604
613
  }
605
- }), L = [
614
+ }), H = [
606
615
  { path: "", component: () => import("./Overview-BYMrsZjM.mjs") },
607
616
  { path: "/create", component: () => import("./index-CABh6Qn6.mjs") },
608
617
  { path: "/create/regular", component: () => import("./regular-_05oq5Tx.mjs") },
@@ -686,11 +695,11 @@ const t = {
686
695
  ]
687
696
  }
688
697
  }
689
- ], ee = {
698
+ ], te = {
690
699
  component: () => import("./index-cOnxXTbF.mjs"),
691
700
  metadata: O,
692
- config: G,
693
- routes: L,
701
+ config: L,
702
+ routes: H,
694
703
  permissions: F,
695
704
  tools: V,
696
705
  chatComponents: {
@@ -700,14 +709,14 @@ const t = {
700
709
  }
701
710
  };
702
711
  export {
703
- ee as appointments,
704
- X as contentManager,
705
- W as custom,
706
- Q as googleAnalytics,
707
- Z as mailTemplates,
708
- J as productCollections,
709
- _ as products,
710
- z as promoCodes,
711
- K as shippingOptions,
712
- N as table
712
+ te as appointments,
713
+ Z as contentManager,
714
+ z as custom,
715
+ X as googleAnalytics,
716
+ ee as mailTemplates,
717
+ K as productCollections,
718
+ W as products,
719
+ J as promoCodes,
720
+ Q as shippingOptions,
721
+ _ as table
713
722
  };
@@ -19,6 +19,7 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
19
19
  };
20
20
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
21
21
  changeLocale: (locale: string) => any;
22
+ copyFromLocale: (sourceLocale: string) => any;
22
23
  }, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
23
24
  latestByLocale: {
24
25
  type: () => Version[] | undefined;
@@ -34,6 +35,7 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
34
35
  };
35
36
  }>> & Readonly<{
36
37
  onChangeLocale?: ((locale: string) => any) | undefined;
38
+ onCopyFromLocale?: ((sourceLocale: string) => any) | undefined;
37
39
  }>, {
38
40
  liveByLocale: Version[] | undefined;
39
41
  latestByLocale: Version[] | undefined;
@@ -4,6 +4,7 @@ export declare const config: {
4
4
  readonly label: "Database";
5
5
  readonly type: "resource";
6
6
  readonly accept: ["FIREBASE"];
7
+ readonly required: true;
7
8
  };
8
9
  readonly domain: {
9
10
  readonly label: "Domain";
@@ -14,11 +15,13 @@ export declare const config: {
14
15
  readonly label: "Collections Collection";
15
16
  readonly type: "input";
16
17
  readonly default: "content_collections";
18
+ readonly required: true;
17
19
  };
18
20
  readonly contentCollection: {
19
21
  readonly label: "Content Collection";
20
22
  readonly type: "input";
21
23
  readonly default: "content";
24
+ readonly required: true;
22
25
  };
23
26
  readonly allowedMediaSources: {
24
27
  readonly label: "Allowed Media Sources";
@@ -46,20 +49,22 @@ export declare const config: {
46
49
  readonly type: "resource";
47
50
  readonly accept: ["GITHUB"];
48
51
  };
49
- readonly githubRepo: {
50
- readonly label: "GitHub Repository";
51
- readonly type: "input";
52
- };
53
- readonly githubOwner: {
54
- readonly label: "GitHub Owner";
55
- readonly type: "input";
56
- readonly required: false;
57
- };
52
+ readonly githubSettings: import('@oneclick.dev/cms-kit').SettingGroup<{
53
+ readonly githubRepo: {
54
+ readonly label: "GitHub Repository";
55
+ readonly type: "input";
56
+ };
57
+ readonly githubOwner: {
58
+ readonly label: "GitHub Owner";
59
+ readonly type: "input";
60
+ };
61
+ }>;
58
62
  } & {
59
63
  readonly project: {
60
64
  readonly label: "Database";
61
65
  readonly type: "resource";
62
66
  readonly accept: ["FIREBASE"];
67
+ readonly required: true;
63
68
  };
64
69
  readonly domain: {
65
70
  readonly label: "Domain";
@@ -70,11 +75,13 @@ export declare const config: {
70
75
  readonly label: "Collections Collection";
71
76
  readonly type: "input";
72
77
  readonly default: "content_collections";
78
+ readonly required: true;
73
79
  };
74
80
  readonly contentCollection: {
75
81
  readonly label: "Content Collection";
76
82
  readonly type: "input";
77
83
  readonly default: "content";
84
+ readonly required: true;
78
85
  };
79
86
  readonly allowedMediaSources: {
80
87
  readonly label: "Allowed Media Sources";
@@ -102,14 +109,15 @@ export declare const config: {
102
109
  readonly type: "resource";
103
110
  readonly accept: ["GITHUB"];
104
111
  };
105
- readonly githubRepo: {
106
- readonly label: "GitHub Repository";
107
- readonly type: "input";
108
- };
109
- readonly githubOwner: {
110
- readonly label: "GitHub Owner";
111
- readonly type: "input";
112
- readonly required: false;
113
- };
112
+ readonly githubSettings: import('@oneclick.dev/cms-kit').SettingGroup<{
113
+ readonly githubRepo: {
114
+ readonly label: "GitHub Repository";
115
+ readonly type: "input";
116
+ };
117
+ readonly githubOwner: {
118
+ readonly label: "GitHub Owner";
119
+ readonly type: "input";
120
+ };
121
+ }>;
114
122
  };
115
123
  export type ConfigValues = ResolveConfig<typeof config>;