@oneclick.dev/cms-core-modules 0.0.123 → 0.0.125

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/AppointmentListTable-CWzbwqR-.js +1 -0
  2. package/dist/AppointmentListTable-DoZuBstk.mjs +270 -0
  3. package/dist/ContentEditor-BlNbqkAz.js +324 -0
  4. package/dist/{ContentEditor-MDGolnIP.mjs → ContentEditor-D754iLJS.mjs} +7985 -26820
  5. package/dist/{Detail-Dk8E6_uF.mjs → Detail-BOxWQ1QQ.mjs} +15 -14
  6. package/dist/{Detail-Cn9Bk0u0.mjs → Detail-BfKW0uZE.mjs} +26 -25
  7. package/dist/Detail-DFVu2F38.mjs +11 -0
  8. package/dist/Detail-DJea_fCd.js +1 -0
  9. package/dist/Detail-DPJacXfm.js +1 -0
  10. package/dist/Detail-DSLZ7_bM.js +1 -0
  11. package/dist/Detail-DUGThL9Y.js +1 -0
  12. package/dist/{Detail-B_scnidb.mjs → Detail-D_LlEeHu.mjs} +35 -34
  13. package/dist/Editor-D4evcdhv.mjs +768 -0
  14. package/dist/Editor-gLLtuJbY.js +1 -0
  15. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-BjKpsqT9.js +1 -0
  16. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-D5v5AhLe.mjs +76 -0
  17. package/dist/Knowledge-B66vxz--.js +1 -0
  18. package/dist/Knowledge-BnMTTuJ7.mjs +742 -0
  19. package/dist/Overview-0hFXiuYo.js +1 -0
  20. package/dist/Overview-BE4uYPx0.mjs +745 -0
  21. package/dist/Overview-BTx5LF4J.js +1 -0
  22. package/dist/Overview-CCu2PHai.mjs +289 -0
  23. package/dist/Overview-CQRpFhbJ.mjs +286 -0
  24. package/dist/Overview-CTs7sX4d.js +1 -0
  25. package/dist/Overview-Cj89XXKN.js +1 -0
  26. package/dist/Overview-D2u-leeO.js +1 -0
  27. package/dist/Overview-D_2wozCG.mjs +1733 -0
  28. package/dist/Overview-D_c18mbR.mjs +248 -0
  29. package/dist/Overview-Dffo-zH4.mjs +11 -0
  30. package/dist/Overview-g4Rcj245.js +1 -0
  31. package/dist/{TableCalculationWidget-CrqcLGfU.mjs → TableCalculationWidget-B_LFoOYm.mjs} +3 -3
  32. package/dist/{TableCalculationWidget-CkQPrVUd.js → TableCalculationWidget-CahOIcbk.js} +1 -1
  33. package/dist/TableDataWidget-BwqWFH4A.js +1 -0
  34. package/dist/TableDataWidget-RsVxcDsL.mjs +112 -0
  35. package/dist/TableOverviewCard-BPWCqo56.js +1 -0
  36. package/dist/{TableOverviewCard-Ci0d4o4w.mjs → TableOverviewCard-D667DDag.mjs} +113 -127
  37. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C3XiOXgb.js +1 -0
  38. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-sp0TLio0.mjs +547 -0
  39. package/dist/{TableRowActionCard-BhdnnPaq.mjs → TableRowActionCard-BPYJ-Kjy.mjs} +95 -101
  40. package/dist/TableRowActionCard-Bnqj1YIe.js +1 -0
  41. package/dist/TableView-CwhZ9YN2.js +4 -0
  42. package/dist/TableView-DX9PKS8N.mjs +9673 -0
  43. package/dist/TemplateBuilder.vue_vue_type_script_setup_true_lang-BgDdzbLe.js +1 -0
  44. package/dist/TemplateBuilder.vue_vue_type_script_setup_true_lang-D85V4nrQ.mjs +2886 -0
  45. package/dist/Test-CzmOmi53.mjs +447 -0
  46. package/dist/Test-USDtNFY1.js +1 -0
  47. package/dist/UserDetail-DpUL3mhk.mjs +1483 -0
  48. package/dist/UserDetail-KRIfxaYd.js +1 -0
  49. package/dist/cms-core-modules.css +1 -1
  50. package/dist/dateRangePresets-CaPVagHY.mjs +453 -0
  51. package/dist/dateRangePresets-gxQCiZ6c.js +1 -0
  52. package/dist/index-6hZ6MYY6.js +1 -0
  53. package/dist/index-BVmmicu3.mjs +14 -0
  54. package/dist/index-CQuN5rKx.js +1 -0
  55. package/dist/index-ChHD_1Cf.js +144 -0
  56. package/dist/index-CnDGeInm.js +1 -0
  57. package/dist/index-CqDTc5Ig.mjs +20 -0
  58. package/dist/index-CvV4nVWI.js +1 -0
  59. package/dist/index-CyvvAdt4.js +1 -0
  60. package/dist/index-DH2z0W_w.mjs +19012 -0
  61. package/dist/index-DIRD7t5_.mjs +20 -0
  62. package/dist/index-DZKzj48V.mjs +17 -0
  63. package/dist/index-OJuBYR60.mjs +57 -0
  64. package/dist/index.cjs.js +1 -1
  65. package/dist/index.mjs +480 -103
  66. package/dist/orders-C_sz8J9b.js +1 -0
  67. package/dist/{orders-BfTLIm7U.mjs → orders-Cgdggzvx.mjs} +84 -84
  68. package/dist/server-handlers.cjs.js +1 -1
  69. package/dist/server-handlers.mjs +2696 -605
  70. package/dist/src/appointments/chat-components/AppointmentListTable.vue.d.ts +3 -0
  71. package/dist/src/appointments/index.d.ts +93 -3
  72. package/dist/src/appointments/reservation-summary.d.ts +48 -0
  73. package/dist/src/appointments/server.d.ts +1 -0
  74. package/dist/src/appointments/tools.d.ts +93 -3
  75. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.d.ts +1 -1
  76. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.d.ts +7 -0
  77. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.d.ts +7 -0
  78. package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/resizeHistory.d.ts +9 -0
  79. package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +3 -1
  80. package/dist/src/filezone/config.d.ts +31 -0
  81. package/dist/src/filezone/index.d.ts +43 -0
  82. package/dist/src/filezone/index.vue.d.ts +2 -0
  83. package/dist/src/filezone/metadata.d.ts +2 -0
  84. package/dist/src/filezone/pages/Overview.vue.d.ts +4 -0
  85. package/dist/src/filezone/permissions.d.ts +5 -0
  86. package/dist/src/filezone/routes.d.ts +5 -0
  87. package/dist/src/filezone/server.d.ts +36 -0
  88. package/dist/src/firebaseAuthManager/components/DeleteUserDialog.vue.d.ts +25 -0
  89. package/dist/src/firebaseAuthManager/components/ReasonActionDialog.vue.d.ts +23 -0
  90. package/dist/src/firebaseAuthManager/components/UserStatusBadge.vue.d.ts +5 -0
  91. package/dist/src/firebaseAuthManager/config.d.ts +151 -0
  92. package/dist/src/firebaseAuthManager/index.d.ts +163 -0
  93. package/dist/src/firebaseAuthManager/index.vue.d.ts +14 -0
  94. package/dist/src/firebaseAuthManager/metadata.d.ts +2 -0
  95. package/dist/src/firebaseAuthManager/pages/Overview.vue.d.ts +2 -0
  96. package/dist/src/firebaseAuthManager/pages/UserDetail.vue.d.ts +2 -0
  97. package/dist/src/firebaseAuthManager/permissions.d.ts +5 -0
  98. package/dist/src/firebaseAuthManager/routes.d.ts +5 -0
  99. package/dist/src/firebaseAuthManager/server.d.ts +162 -0
  100. package/dist/src/firebaseAuthManager/types.d.ts +84 -0
  101. package/dist/src/formBuilder/components/FormPreviewDialog.vue.d.ts +12 -0
  102. package/dist/src/formBuilder/components/FormStatusBadge.vue.d.ts +9 -0
  103. package/dist/src/formBuilder/config.d.ts +31 -0
  104. package/dist/src/formBuilder/index.d.ts +44 -0
  105. package/dist/src/formBuilder/index.vue.d.ts +14 -0
  106. package/dist/src/formBuilder/lib/forms.d.ts +11 -0
  107. package/dist/src/formBuilder/metadata.d.ts +2 -0
  108. package/dist/src/formBuilder/pages/Editor.vue.d.ts +2 -0
  109. package/dist/src/formBuilder/pages/Overview.vue.d.ts +2 -0
  110. package/dist/src/formBuilder/permissions.d.ts +5 -0
  111. package/dist/src/formBuilder/routes.d.ts +5 -0
  112. package/dist/src/formBuilder/server.d.ts +87 -0
  113. package/dist/src/formBuilder/tools.d.ts +1 -0
  114. package/dist/src/formBuilder/types.d.ts +46 -0
  115. package/dist/src/helpbot/composables/useHelpbotApi.d.ts +18 -0
  116. package/dist/src/helpbot/config.d.ts +17 -0
  117. package/dist/src/helpbot/index.d.ts +29 -0
  118. package/dist/src/helpbot/index.vue.d.ts +2 -0
  119. package/dist/src/helpbot/metadata.d.ts +2 -0
  120. package/dist/src/helpbot/pages/Knowledge.vue.d.ts +4 -0
  121. package/dist/src/helpbot/pages/Overview.vue.d.ts +2 -0
  122. package/dist/src/helpbot/pages/Test.vue.d.ts +4 -0
  123. package/dist/src/helpbot/permissions.d.ts +5 -0
  124. package/dist/src/helpbot/routes.d.ts +5 -0
  125. package/dist/src/helpbot/types.d.ts +42 -0
  126. package/dist/src/index.d.ts +5 -0
  127. package/dist/src/mailTemplates/builder-types.d.ts +40 -0
  128. package/dist/src/mailTemplates/components/BlockRenderer.vue.d.ts +24 -0
  129. package/dist/src/mailTemplates/components/DesignPanel.vue.d.ts +13 -0
  130. package/dist/src/mailTemplates/components/EmailCanvas.vue.d.ts +44 -0
  131. package/dist/src/mailTemplates/components/RichTextEditor.vue.d.ts +10 -0
  132. package/dist/src/mailTemplates/components/RightSidebar.vue.d.ts +18 -0
  133. package/dist/src/mailTemplates/components/SettingsPanel.vue.d.ts +15 -0
  134. package/dist/src/mailTemplates/components/TemplateBuilder.vue.d.ts +2 -0
  135. package/dist/src/mailTemplates/components/TemplateList.vue.d.ts +19 -1
  136. package/dist/src/mailTemplates/components/rich-text.d.ts +6 -0
  137. package/dist/src/mailTemplates/config.d.ts +10 -4
  138. package/dist/src/mailTemplates/defaults.d.ts +10 -0
  139. package/dist/src/mailTemplates/editor-state.d.ts +21 -0
  140. package/dist/src/mailTemplates/index.d.ts +11 -5
  141. package/dist/src/mailTemplates/index.vue.d.ts +2 -4
  142. package/dist/src/mailTemplates/metadata.d.ts +1 -1
  143. package/dist/src/mailTemplates/pages/Detail.vue.d.ts +1 -13
  144. package/dist/src/mailTemplates/pages/Overview.vue.d.ts +1 -13
  145. package/dist/src/mailTemplates/server.d.ts +23 -0
  146. package/dist/src/server-handlers.d.ts +6 -0
  147. package/dist/src/table/badge-filter-utils.d.ts +8 -0
  148. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +2 -7
  149. package/dist/src/table/chat-components/TableResultView.vue.d.ts +3 -7
  150. package/dist/src/table/components/TableDisplayCell.vue.d.ts +8 -0
  151. package/dist/src/table/components/columns/BadgeColumnSettings.vue.d.ts +9 -0
  152. package/dist/src/table/components/columns/ColumnColorSelect.vue.d.ts +11 -0
  153. package/dist/src/table/components/columns/ColumnDisplaySettings.vue.d.ts +9 -0
  154. package/dist/src/table/components/columns/ColumnTypeSelect.vue.d.ts +11 -0
  155. package/dist/src/table/components/columns/ColumnValueSourceInput.vue.d.ts +15 -0
  156. package/dist/src/table/components/columns/DialogTableColumnItem.vue.d.ts +8 -11
  157. package/dist/src/table/components/columns/ProgressColumnSettings.vue.d.ts +8 -0
  158. package/dist/src/table/components/stats/StatDialog.vue.d.ts +6 -10
  159. package/dist/src/table/components/stats/Stats.vue.d.ts +9 -15
  160. package/dist/src/table/composables/useTableClock.d.ts +4 -0
  161. package/dist/src/table/display-utils.d.ts +35 -0
  162. package/dist/src/table/row-value.d.ts +1 -0
  163. package/dist/src/table/stat-utils.d.ts +9 -0
  164. package/dist/src/table/tool-utils.d.ts +1 -1
  165. package/dist/src/table/types.d.ts +54 -1
  166. package/dist/src/whatsappBusiness/analytics.d.ts +4 -0
  167. package/dist/src/whatsappBusiness/components/AccountPanel.vue.d.ts +2 -0
  168. package/dist/src/whatsappBusiness/components/InsightsPanel.vue.d.ts +5 -0
  169. package/dist/src/whatsappBusiness/components/TemplateDialog.vue.d.ts +14 -0
  170. package/dist/src/whatsappBusiness/components/TemplatesPanel.vue.d.ts +5 -0
  171. package/dist/src/whatsappBusiness/components/presentation.d.ts +4 -0
  172. package/dist/src/whatsappBusiness/config.d.ts +51 -0
  173. package/dist/src/whatsappBusiness/connection.d.ts +77 -0
  174. package/dist/src/whatsappBusiness/index.d.ts +63 -0
  175. package/dist/src/whatsappBusiness/index.vue.d.ts +5 -0
  176. package/dist/src/whatsappBusiness/metadata.d.ts +2 -0
  177. package/dist/src/whatsappBusiness/pages/Overview.vue.d.ts +2 -0
  178. package/dist/src/whatsappBusiness/permissions.d.ts +5 -0
  179. package/dist/src/whatsappBusiness/provider.d.ts +21 -0
  180. package/dist/src/whatsappBusiness/routes.d.ts +5 -0
  181. package/dist/src/whatsappBusiness/server.d.ts +14 -0
  182. package/dist/src/whatsappBusiness/templates.d.ts +94 -0
  183. package/dist/src/whatsappBusiness/types.d.ts +162 -0
  184. package/dist/{tool-sandbox-DoF1PsyS.js → tool-sandbox-BSkKdH7V.js} +1 -1
  185. package/dist/{tool-sandbox-DdkMLkDK.mjs → tool-sandbox-DU9b1B7v.mjs} +1 -1
  186. package/dist/types-9N-DKxNj.mjs +250 -0
  187. package/dist/types-B5MifmeF.mjs +2696 -0
  188. package/dist/types-Cem0vPo_.js +1 -0
  189. package/dist/types-D5dgTskW.js +1 -0
  190. package/dist/useHelpbotApi-BIIungOh.js +1 -0
  191. package/dist/useHelpbotApi-HC9JSiSn.mjs +229 -0
  192. package/dist/{useTableAgentTools-D5mzGf3A.js → useTableAgentTools-BrUot49I.js} +1 -1
  193. package/dist/{useTableAgentTools-DcN3kYRL.mjs → useTableAgentTools-r5InEI4p.mjs} +8 -8
  194. package/dist/vee-validate-zod-CWZwNTWE.js +1 -0
  195. package/dist/vee-validate-zod-D0WaDgDZ.mjs +1780 -0
  196. package/package.json +2 -2
  197. package/src/appointments/tools.ts +52 -2
  198. package/src/formBuilder/tools.ts +1 -0
  199. package/dist/AppointmentListTable-DZJNmTMb.mjs +0 -177
  200. package/dist/AppointmentListTable-Dieu9US_.js +0 -1
  201. package/dist/ContentEditor-C-Wm48ai.js +0 -467
  202. package/dist/Detail-BCUUNWvp.js +0 -1
  203. package/dist/Detail-Byk781b4.mjs +0 -26
  204. package/dist/Detail-DGg_xXZc.js +0 -1
  205. package/dist/Detail-Sc2qZdxj.js +0 -1
  206. package/dist/Detail-mvSGbnFU.js +0 -1
  207. package/dist/Overview-BDlBCUI_.js +0 -1
  208. package/dist/Overview-Su8ZUbMs.mjs +0 -26
  209. package/dist/TableDataWidget-7qvC3Egd.js +0 -1
  210. package/dist/TableDataWidget-DMTSoGRO.mjs +0 -121
  211. package/dist/TableOverviewCard-AFq-puJs.js +0 -1
  212. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +0 -534
  213. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +0 -1
  214. package/dist/TableRowActionCard-IzB6tNN-.js +0 -1
  215. package/dist/TableView-BkwoKREo.js +0 -4
  216. package/dist/TableView-C4Zyp8d7.mjs +0 -8228
  217. package/dist/TemplateList.vue_vue_type_script_setup_true_lang-B_AtWnHa.js +0 -1
  218. package/dist/TemplateList.vue_vue_type_script_setup_true_lang-Cmovy7kk.mjs +0 -40
  219. package/dist/dateRangePresets-B-l5b_wR.mjs +0 -48
  220. package/dist/dateRangePresets-CPWqst_x.js +0 -1
  221. package/dist/orders-DUa2PVoa.js +0 -1
  222. package/dist/vee-validate-zod-SjDT8X35.mjs +0 -4404
  223. package/dist/vee-validate-zod-VCmLnrtQ.js +0 -1
@@ -0,0 +1,44 @@
1
+ declare const _default: {
2
+ component: () => Promise<typeof import("./index.vue")>;
3
+ metadata: import('@oneclick.dev/cms-kit').ModuleMetadata;
4
+ config: {
5
+ readonly databaseIntegration: {
6
+ readonly label: "Firebase database";
7
+ readonly type: "resource";
8
+ readonly accept: ["FIREBASE"];
9
+ readonly required: true;
10
+ };
11
+ readonly formsCollection: {
12
+ readonly label: "Forms root collection";
13
+ readonly description: "Each Form Builder module gets an isolated namespace inside this Firestore collection.";
14
+ readonly type: "input";
15
+ readonly default: "studio_forms";
16
+ readonly required: true;
17
+ };
18
+ } & {
19
+ readonly databaseIntegration: {
20
+ readonly label: "Firebase database";
21
+ readonly type: "resource";
22
+ readonly accept: ["FIREBASE"];
23
+ readonly required: true;
24
+ };
25
+ readonly formsCollection: {
26
+ readonly label: "Forms root collection";
27
+ readonly description: "Each Form Builder module gets an isolated namespace inside this Firestore collection.";
28
+ readonly type: "input";
29
+ readonly default: "studio_forms";
30
+ readonly required: true;
31
+ };
32
+ };
33
+ routes: {
34
+ path: string;
35
+ component: () => Promise<typeof import("./pages/Overview.vue")>;
36
+ }[];
37
+ permissions: {
38
+ key: string;
39
+ name: string;
40
+ description: string;
41
+ }[];
42
+ tools: any[];
43
+ };
44
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import { PropType } from 'vue';
2
+ import { ConfigValues } from './config';
3
+ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
4
+ config: {
5
+ type: PropType<ConfigValues>;
6
+ required: true;
7
+ };
8
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
9
+ config: {
10
+ type: PropType<ConfigValues>;
11
+ required: true;
12
+ };
13
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
14
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { FormDefinition, FormListResponse, FormResponse, StudioForm, StudioFormSummary } from '../types';
2
+ export declare function unwrapForms(payload: FormListResponse | StudioFormSummary[]): StudioFormSummary[];
3
+ export declare function unwrapForm(payload: FormResponse | StudioForm): StudioForm;
4
+ export declare function readableError(error: unknown, fallback: string): string;
5
+ export declare function toFormKey(value: string): string;
6
+ export declare function isValidFormKey(value: string): boolean;
7
+ export declare function hasFormDefinition(definition: FormDefinition | undefined): boolean;
8
+ export declare function definitionFieldCount(definition: FormDefinition | undefined): number;
9
+ export declare function createEmptyFormDefinition(): FormDefinition;
10
+ export declare function cloneDefinition(definition: FormDefinition): FormDefinition;
11
+ export declare function formatFormDate(value: StudioFormSummary['updatedAt']): string;
@@ -0,0 +1,2 @@
1
+ import { ModuleMetadata } from '@oneclick.dev/cms-kit';
2
+ export declare const metadata: ModuleMetadata;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
2
+ export default _default;
@@ -0,0 +1,5 @@
1
+ export declare const permissions: {
2
+ key: string;
3
+ name: string;
4
+ description: string;
5
+ }[];
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ path: string;
3
+ component: () => Promise<typeof import("./pages/Overview.vue")>;
4
+ }[];
5
+ export default _default;
@@ -0,0 +1,87 @@
1
+ export declare const FORM_SCHEMA_VERSION = 1;
2
+ export declare const MAX_FORM_DEFINITION_BYTES: number;
3
+ export declare const MAX_FORM_DEFINITION_DEPTH = 20;
4
+ type FormStatus = 'draft' | 'published' | 'archived';
5
+ type FormDefinition = Record<string, unknown> | unknown[];
6
+ interface ModuleHandlerDeps {
7
+ initFirebase: (event: any, integrationId: string) => Promise<any>;
8
+ normalizeTimestamps?: (data: any) => any;
9
+ }
10
+ interface NormalizedFormFields {
11
+ name: string;
12
+ key: string;
13
+ description: string;
14
+ definition: FormDefinition;
15
+ }
16
+ interface NormalizedDraftPayload extends NormalizedFormFields {
17
+ expectedRevision: number;
18
+ }
19
+ interface StoredForm {
20
+ name: string;
21
+ key: string;
22
+ description?: string;
23
+ status: FormStatus;
24
+ draftDefinition: FormDefinition;
25
+ schemaVersion: number;
26
+ revision: number;
27
+ draftRevision: number;
28
+ publishedRevision?: number | null;
29
+ publishedRevisionId?: string | null;
30
+ publishedDraftRevision?: number | null;
31
+ createdAt: string;
32
+ createdBy?: string | null;
33
+ updatedAt: string;
34
+ updatedBy?: string | null;
35
+ draftUpdatedAt?: string | null;
36
+ draftUpdatedBy?: string | null;
37
+ publishedAt?: string | null;
38
+ publishedBy?: string | null;
39
+ archivedAt?: string | null;
40
+ archivedBy?: string | null;
41
+ statusBeforeArchive?: Exclude<FormStatus, 'archived'> | null;
42
+ }
43
+ interface PublishedRevisionInput {
44
+ formId: string;
45
+ form: StoredForm;
46
+ revision: number;
47
+ revisionId: string;
48
+ publishedAt: string;
49
+ publishedBy: string | null;
50
+ }
51
+ /**
52
+ * Normalize and validate the public, stable machine key used by consumers.
53
+ */
54
+ export declare function normalizeFormKey(value: unknown): string;
55
+ /**
56
+ * Keep collection selection server-controlled while allowing a safe nested
57
+ * Firestore collection path such as `sites/site-id/forms`.
58
+ */
59
+ export declare function normalizeFormsCollection(value: unknown): string;
60
+ /**
61
+ * Validate that a definition is safe to serialize into a Firestore map.
62
+ */
63
+ export declare function validateFormDefinition(definition: unknown): asserts definition is FormDefinition;
64
+ export declare function normalizeCreateFormPayload(input: unknown): NormalizedFormFields;
65
+ export declare function normalizeUpdateDraftPayload(input: unknown): NormalizedDraftPayload;
66
+ export declare function normalizeExpectedRevisionPayload(input: unknown): {
67
+ expectedRevision: number;
68
+ };
69
+ /**
70
+ * Build the immutable snapshot stored in `/revisions/:revisionId` on publish.
71
+ */
72
+ export declare function buildPublishedRevision(input: PublishedRevisionInput): {
73
+ id: string;
74
+ formId: string;
75
+ key: string;
76
+ name: string;
77
+ description: string;
78
+ definition: FormDefinition;
79
+ schemaVersion: number;
80
+ revision: number;
81
+ draftRevision: number;
82
+ previousRevisionId: string | null;
83
+ publishedAt: string;
84
+ publishedBy: string | null;
85
+ };
86
+ export declare function createServerHandler(deps: ModuleHandlerDeps): import('h3').EventHandler<import('h3').EventHandlerRequest, any>;
87
+ export {};
@@ -0,0 +1 @@
1
+ export declare const tools: any[];
@@ -0,0 +1,46 @@
1
+ export type FormStatus = 'draft' | 'published' | 'archived';
2
+ /** Serialisable state returned by the CMS-kit form builder. */
3
+ export interface FormDefinition extends Record<string, unknown> {
4
+ layout?: unknown[];
5
+ variables?: unknown[];
6
+ transformers?: unknown[];
7
+ apiActions?: unknown[];
8
+ outputConfig?: Record<string, unknown>;
9
+ startupScript?: string;
10
+ }
11
+ export interface StudioForm {
12
+ id: string;
13
+ name: string;
14
+ key: string;
15
+ description: string;
16
+ definition: FormDefinition;
17
+ status: FormStatus;
18
+ revision: number;
19
+ draftRevision?: number;
20
+ publishedRevision?: number | null;
21
+ publishedRevisionId?: string | null;
22
+ hasUnpublishedChanges?: boolean;
23
+ schemaVersion?: number;
24
+ createdAt?: string | number | null;
25
+ updatedAt?: string | number | null;
26
+ publishedAt?: string | number | null;
27
+ archivedAt?: string | number | null;
28
+ }
29
+ export type StudioFormSummary = Omit<StudioForm, 'definition'> & {
30
+ definition?: FormDefinition;
31
+ };
32
+ export interface CreateFormInput {
33
+ name: string;
34
+ key: string;
35
+ description: string;
36
+ definition: FormDefinition;
37
+ }
38
+ export interface SaveDraftInput extends CreateFormInput {
39
+ expectedRevision: number;
40
+ }
41
+ export interface FormListResponse {
42
+ forms: StudioFormSummary[];
43
+ }
44
+ export interface FormResponse {
45
+ form: StudioForm;
46
+ }
@@ -0,0 +1,18 @@
1
+ import { HelpbotChatTurn, HelpbotConnectionStatus, HelpbotFileEntry, HelpbotSource, HelpbotTextEntry } from '../types';
2
+ export declare function getHelpbotErrorMessage(error: unknown, fallback?: string): string;
3
+ export declare function useHelpbotApi(): {
4
+ getStatus: () => Promise<HelpbotConnectionStatus>;
5
+ listTexts: () => Promise<HelpbotTextEntry[]>;
6
+ getText: (title: string) => Promise<HelpbotTextEntry>;
7
+ createText: (title: string, content: string) => Promise<any>;
8
+ updateText: (originalTitle: string, title: string, content: string) => Promise<any>;
9
+ deleteText: (title: string) => Promise<any>;
10
+ listFiles: () => Promise<HelpbotFileEntry[]>;
11
+ uploadFile: (file: File) => Promise<any>;
12
+ deleteFile: (filename: string) => Promise<any>;
13
+ query: (question: string) => Promise<HelpbotSource[]>;
14
+ chat: (message: string, history: HelpbotChatTurn[]) => Promise<{
15
+ answer: string;
16
+ sources: HelpbotSource[];
17
+ }>;
18
+ };
@@ -0,0 +1,17 @@
1
+ import { ResolveConfig } from '@oneclick.dev/cms-kit';
2
+ export declare const config: {
3
+ readonly agentId: {
4
+ readonly label: "Helpbot assignment";
5
+ readonly description: "Agency-managed assignment that connects this module to the helpbot on your website.";
6
+ readonly type: "input";
7
+ readonly required: true;
8
+ };
9
+ } & {
10
+ readonly agentId: {
11
+ readonly label: "Helpbot assignment";
12
+ readonly description: "Agency-managed assignment that connects this module to the helpbot on your website.";
13
+ readonly type: "input";
14
+ readonly required: true;
15
+ };
16
+ };
17
+ export type ConfigValues = ResolveConfig<typeof config>;
@@ -0,0 +1,29 @@
1
+ declare const _default: {
2
+ component: () => Promise<typeof import("./index.vue")>;
3
+ metadata: import('@oneclick.dev/cms-kit').ModuleMetadata;
4
+ config: {
5
+ readonly agentId: {
6
+ readonly label: "Helpbot assignment";
7
+ readonly description: "Agency-managed assignment that connects this module to the helpbot on your website.";
8
+ readonly type: "input";
9
+ readonly required: true;
10
+ };
11
+ } & {
12
+ readonly agentId: {
13
+ readonly label: "Helpbot assignment";
14
+ readonly description: "Agency-managed assignment that connects this module to the helpbot on your website.";
15
+ readonly type: "input";
16
+ readonly required: true;
17
+ };
18
+ };
19
+ routes: {
20
+ path: string;
21
+ component: () => Promise<typeof import("./pages/Overview.vue")>;
22
+ }[];
23
+ permissions: {
24
+ key: string;
25
+ name: string;
26
+ description: string;
27
+ }[];
28
+ };
29
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { ModuleMetadata } from '@oneclick.dev/cms-kit';
2
+ export declare const metadata: ModuleMetadata;
@@ -0,0 +1,4 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
2
+ uploadInput: HTMLInputElement;
3
+ }, HTMLElement>;
4
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
2
+ chatContainer: HTMLDivElement;
3
+ }, HTMLElement>;
4
+ export default _default;
@@ -0,0 +1,5 @@
1
+ export declare const permissions: {
2
+ key: string;
3
+ name: string;
4
+ description: string;
5
+ }[];
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ path: string;
3
+ component: () => Promise<typeof import("./pages/Overview.vue")>;
4
+ }[];
5
+ export default _default;
@@ -0,0 +1,42 @@
1
+ export type HelpbotSourceStatus = 'available' | 'processing' | 'failed' | 'unknown';
2
+ export interface HelpbotTextEntry {
3
+ title: string;
4
+ preview: string;
5
+ content?: string;
6
+ status: HelpbotSourceStatus;
7
+ updatedAt?: string;
8
+ }
9
+ export interface HelpbotFileEntry {
10
+ filename: string;
11
+ status: HelpbotSourceStatus;
12
+ size?: number;
13
+ pages?: number;
14
+ updatedAt?: string;
15
+ }
16
+ export interface HelpbotSource {
17
+ title: string;
18
+ excerpt: string;
19
+ kind?: 'answer' | 'pdf';
20
+ }
21
+ export interface HelpbotChatTurn {
22
+ role: 'user' | 'assistant';
23
+ content: string;
24
+ sources?: HelpbotSource[];
25
+ }
26
+ export interface HelpbotConnectionStatus {
27
+ configured: boolean;
28
+ connected: boolean | null;
29
+ health?: string;
30
+ helpbotName?: string;
31
+ connectionName?: string;
32
+ message?: string;
33
+ sourceCounts: {
34
+ texts?: number;
35
+ pdfs?: number;
36
+ chunks?: number;
37
+ };
38
+ permissions: {
39
+ canManageKnowledge: boolean;
40
+ canTestHelpbot: boolean;
41
+ };
42
+ }
@@ -9,3 +9,8 @@ export { default as contentManager } from './contentManager';
9
9
  export { default as mailTemplates } from './mailTemplates';
10
10
  export { default as appointments } from './appointments';
11
11
  export { default as pushNotifications } from './push-notifications';
12
+ export { default as firebaseAuthManager } from './firebaseAuthManager';
13
+ export { default as helpbot } from './helpbot';
14
+ export { default as formBuilder } from './formBuilder';
15
+ export { default as filezone } from './filezone';
16
+ export { default as whatsappBusiness } from './whatsappBusiness';
@@ -0,0 +1,40 @@
1
+ export interface MailTemplate {
2
+ id: string;
3
+ name: string;
4
+ subject: string;
5
+ preheader?: string;
6
+ description: string;
7
+ category: 'authentication' | 'billing' | 'notifications' | 'onboarding' | 'system';
8
+ status?: 'active' | 'draft' | 'inactive';
9
+ system_key?: string | null;
10
+ blocks: EmailBlock[];
11
+ styles: TemplateStyles;
12
+ updatedAt?: string;
13
+ createdAt?: string;
14
+ created_at?: string;
15
+ updated_at?: string;
16
+ }
17
+ export interface EmailBlock {
18
+ id: string;
19
+ type: 'header' | 'text' | 'button' | 'image' | 'divider' | 'spacer' | 'columns';
20
+ content: Record<string, any>;
21
+ }
22
+ export interface TemplateStyles {
23
+ bodyBg: string;
24
+ contentBg: string;
25
+ footerBg: string;
26
+ footerTextColor: string;
27
+ primaryColor: string;
28
+ primaryForeground: string;
29
+ textColor: string;
30
+ secondaryTextColor: string;
31
+ linkColor: string;
32
+ fontFamily: string;
33
+ borderRadius: number;
34
+ contentWidth: number;
35
+ contentPadding: number;
36
+ logoUrl: string;
37
+ footerText: string;
38
+ showUnsubscribe: boolean;
39
+ showSocialLinks: boolean;
40
+ }
@@ -0,0 +1,24 @@
1
+ import { EmailBlock, TemplateStyles } from '../builder-types';
2
+ type __VLS_Props = {
3
+ block: EmailBlock;
4
+ index: number;
5
+ totalBlocks: number;
6
+ selectedBlockId: string | null;
7
+ templateStyles: TemplateStyles;
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
10
+ select: (id: string) => any;
11
+ delete: (id: string) => any;
12
+ move: (id: string, direction: "up" | "down") => any;
13
+ duplicate: (id: string) => any;
14
+ "drag-start": (id: string) => any;
15
+ "drag-end": () => any;
16
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
17
+ onSelect?: ((id: string) => any) | undefined;
18
+ onDelete?: ((id: string) => any) | undefined;
19
+ onMove?: ((id: string, direction: "up" | "down") => any) | undefined;
20
+ onDuplicate?: ((id: string) => any) | undefined;
21
+ "onDrag-start"?: ((id: string) => any) | undefined;
22
+ "onDrag-end"?: (() => any) | undefined;
23
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
24
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import { EmailBlock, TemplateStyles } from '../builder-types';
2
+ type __VLS_Props = {
3
+ selectedBlock: EmailBlock | null;
4
+ templateStyles: TemplateStyles;
5
+ };
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "deselect-block": () => any;
8
+ "update:hasUnsavedChanges": (value: boolean) => any;
9
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ "onDeselect-block"?: (() => any) | undefined;
11
+ "onUpdate:hasUnsavedChanges"?: ((value: boolean) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
13
+ export default _default;
@@ -0,0 +1,44 @@
1
+ import { MailTemplate, TemplateStyles } from '../builder-types';
2
+ type __VLS_Props = {
3
+ template: MailTemplate | null;
4
+ selectedBlockId: string | null;
5
+ templateStyles: TemplateStyles;
6
+ saving: boolean;
7
+ hasUnsavedChanges: boolean;
8
+ canUndo: boolean;
9
+ canRedo: boolean;
10
+ dirtyCount: number;
11
+ canEdit: boolean;
12
+ canCreate: boolean;
13
+ canDelete: boolean;
14
+ };
15
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
16
+ create: () => any;
17
+ undo: () => any;
18
+ redo: () => any;
19
+ save: () => any;
20
+ "select-block": (id: string) => any;
21
+ "add-block": (type: "text" | "image" | "button" | "header" | "columns" | "spacer" | "divider") => any;
22
+ "move-block": (id: string, direction: "up" | "down") => any;
23
+ "reorder-block": (id: string, beforeId: string | null) => any;
24
+ "duplicate-block": (id: string) => any;
25
+ "delete-block": (id: string) => any;
26
+ "duplicate-template": () => any;
27
+ "delete-template": () => any;
28
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
29
+ onCreate?: (() => any) | undefined;
30
+ onUndo?: (() => any) | undefined;
31
+ onRedo?: (() => any) | undefined;
32
+ onSave?: (() => any) | undefined;
33
+ "onSelect-block"?: ((id: string) => any) | undefined;
34
+ "onAdd-block"?: ((type: "text" | "image" | "button" | "header" | "columns" | "spacer" | "divider") => any) | undefined;
35
+ "onMove-block"?: ((id: string, direction: "up" | "down") => any) | undefined;
36
+ "onReorder-block"?: ((id: string, beforeId: string | null) => any) | undefined;
37
+ "onDuplicate-block"?: ((id: string) => any) | undefined;
38
+ "onDelete-block"?: ((id: string) => any) | undefined;
39
+ "onDuplicate-template"?: (() => any) | undefined;
40
+ "onDelete-template"?: (() => any) | undefined;
41
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
42
+ blockList: HTMLDivElement;
43
+ }, HTMLElement>;
44
+ export default _default;
@@ -0,0 +1,10 @@
1
+ type __VLS_Props = {
2
+ modelValue: string;
3
+ label?: string;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
6
+ "update:modelValue": (value: string) => any;
7
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
8
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
9
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
10
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { MailTemplate, EmailBlock, TemplateStyles } from '../builder-types';
2
+ type __VLS_Props = {
3
+ template: MailTemplate;
4
+ selectedBlock: EmailBlock | null;
5
+ templateStyles: TemplateStyles;
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
8
+ "deselect-block": () => any;
9
+ "update:hasUnsavedChanges": (value: boolean) => any;
10
+ "reset-styles": (styles: TemplateStyles) => any;
11
+ "reset-template": (blocks: EmailBlock[]) => any;
12
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ "onDeselect-block"?: (() => any) | undefined;
14
+ "onUpdate:hasUnsavedChanges"?: ((value: boolean) => any) | undefined;
15
+ "onReset-styles"?: ((styles: TemplateStyles) => any) | undefined;
16
+ "onReset-template"?: ((blocks: EmailBlock[]) => any) | undefined;
17
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
18
+ export default _default;
@@ -0,0 +1,15 @@
1
+ import { MailTemplate, EmailBlock, TemplateStyles } from '../builder-types';
2
+ type __VLS_Props = {
3
+ template: MailTemplate;
4
+ templateStyles: TemplateStyles;
5
+ };
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "update:hasUnsavedChanges": (value: boolean) => any;
8
+ "reset-styles": (styles: TemplateStyles) => any;
9
+ "reset-template": (blocks: EmailBlock[]) => any;
10
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ "onUpdate:hasUnsavedChanges"?: ((value: boolean) => any) | undefined;
12
+ "onReset-styles"?: ((styles: TemplateStyles) => any) | undefined;
13
+ "onReset-template"?: ((blocks: EmailBlock[]) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
15
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
2
+ export default _default;
@@ -1,2 +1,20 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
1
+ import { MailTemplate } from '../builder-types';
2
+ type __VLS_Props = {
3
+ templates: MailTemplate[];
4
+ selectedTemplateId: string | null;
5
+ dirtyTemplateIds: string[];
6
+ canCreate: boolean;
7
+ };
8
+ type __VLS_PublicProps = {
9
+ 'searchQuery'?: string;
10
+ } & __VLS_Props;
11
+ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
+ select: (id: string) => any;
13
+ create: () => any;
14
+ "update:searchQuery": (value: string) => any;
15
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
+ onSelect?: ((id: string) => any) | undefined;
17
+ onCreate?: (() => any) | undefined;
18
+ "onUpdate:searchQuery"?: ((value: string) => any) | undefined;
19
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
2
20
  export default _default;
@@ -0,0 +1,6 @@
1
+ import { VNodeChild } from 'vue';
2
+ /** Preserve email text formatting without copying executable HTML attributes. */
3
+ export declare function safeTextStyles(element: HTMLElement): Record<string, string>;
4
+ export declare function isEmailLink(value: string): boolean;
5
+ /** Canvas text is rebuilt as Vue nodes; raw template HTML never enters v-html. */
6
+ export declare function emailTextNodes(html: string): VNodeChild[];
@@ -1,23 +1,29 @@
1
1
  import { ResolveConfig } from '@oneclick.dev/cms-kit';
2
2
  export declare const config: {
3
3
  readonly project: {
4
- readonly label: "Project";
4
+ readonly label: "Firebase integration";
5
+ readonly description: "Use a Firebase integration connected to this project. Templates, MJML, and compiled HTML are saved in its Firestore database.";
6
+ readonly required: true;
5
7
  readonly type: "resource";
6
8
  readonly accept: ["FIREBASE"];
7
9
  };
8
10
  readonly templateCollection: {
9
- readonly label: "Mail Templates Collection";
11
+ readonly label: "Templates collection";
12
+ readonly description: "A dedicated Firestore collection for your email templates, for example mail-templates.";
10
13
  readonly type: "input";
11
14
  readonly default: "mail-templates";
12
15
  };
13
16
  } & {
14
17
  readonly project: {
15
- readonly label: "Project";
18
+ readonly label: "Firebase integration";
19
+ readonly description: "Use a Firebase integration connected to this project. Templates, MJML, and compiled HTML are saved in its Firestore database.";
20
+ readonly required: true;
16
21
  readonly type: "resource";
17
22
  readonly accept: ["FIREBASE"];
18
23
  };
19
24
  readonly templateCollection: {
20
- readonly label: "Mail Templates Collection";
25
+ readonly label: "Templates collection";
26
+ readonly description: "A dedicated Firestore collection for your email templates, for example mail-templates.";
21
27
  readonly type: "input";
22
28
  readonly default: "mail-templates";
23
29
  };