@oneclick.dev/cms-core-modules 0.0.124 → 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 (149) 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-DX1bTQKs.mjs → ContentEditor-D754iLJS.mjs} +8074 -27026
  5. package/dist/{Detail-B7pe808q.mjs → Detail-BOxWQ1QQ.mjs} +2 -2
  6. package/dist/{Detail-B_Q7Qkuz.mjs → Detail-BfKW0uZE.mjs} +2 -2
  7. package/dist/Detail-DFVu2F38.mjs +11 -0
  8. package/dist/{Detail-t3tOcy3X.js → Detail-DJea_fCd.js} +1 -1
  9. package/dist/{Detail-CNiLIEh9.js → Detail-DPJacXfm.js} +1 -1
  10. package/dist/Detail-DSLZ7_bM.js +1 -0
  11. package/dist/{Detail-BESGmY7z.js → Detail-DUGThL9Y.js} +1 -1
  12. package/dist/{Detail-DNxAzeCs.mjs → Detail-D_LlEeHu.mjs} +2 -2
  13. package/dist/Overview-0hFXiuYo.js +1 -0
  14. package/dist/Overview-BTx5LF4J.js +1 -0
  15. package/dist/Overview-CCu2PHai.mjs +289 -0
  16. package/dist/Overview-D2u-leeO.js +1 -0
  17. package/dist/Overview-D_2wozCG.mjs +1733 -0
  18. package/dist/Overview-Dffo-zH4.mjs +11 -0
  19. package/dist/{TableCalculationWidget-CrqcLGfU.mjs → TableCalculationWidget-B_LFoOYm.mjs} +3 -3
  20. package/dist/{TableCalculationWidget-CkQPrVUd.js → TableCalculationWidget-CahOIcbk.js} +1 -1
  21. package/dist/TableDataWidget-BwqWFH4A.js +1 -0
  22. package/dist/TableDataWidget-RsVxcDsL.mjs +112 -0
  23. package/dist/TableOverviewCard-BPWCqo56.js +1 -0
  24. package/dist/{TableOverviewCard-Ci0d4o4w.mjs → TableOverviewCard-D667DDag.mjs} +113 -127
  25. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C3XiOXgb.js +1 -0
  26. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-sp0TLio0.mjs +547 -0
  27. package/dist/{TableRowActionCard-BhdnnPaq.mjs → TableRowActionCard-BPYJ-Kjy.mjs} +95 -101
  28. package/dist/TableRowActionCard-Bnqj1YIe.js +1 -0
  29. package/dist/TableView-CwhZ9YN2.js +4 -0
  30. package/dist/TableView-DX9PKS8N.mjs +9673 -0
  31. package/dist/TemplateBuilder.vue_vue_type_script_setup_true_lang-BgDdzbLe.js +1 -0
  32. package/dist/TemplateBuilder.vue_vue_type_script_setup_true_lang-D85V4nrQ.mjs +2886 -0
  33. package/dist/cms-core-modules.css +1 -1
  34. package/dist/dateRangePresets-CaPVagHY.mjs +453 -0
  35. package/dist/dateRangePresets-gxQCiZ6c.js +1 -0
  36. package/dist/index-6hZ6MYY6.js +1 -0
  37. package/dist/index-BVmmicu3.mjs +14 -0
  38. package/dist/index-ChHD_1Cf.js +144 -0
  39. package/dist/index-CvV4nVWI.js +1 -0
  40. package/dist/index-DH2z0W_w.mjs +19012 -0
  41. package/dist/index-DZKzj48V.mjs +17 -0
  42. package/dist/index.cjs.js +1 -1
  43. package/dist/index.mjs +237 -103
  44. package/dist/orders-C_sz8J9b.js +1 -0
  45. package/dist/{orders-BfTLIm7U.mjs → orders-Cgdggzvx.mjs} +84 -84
  46. package/dist/server-handlers.cjs.js +1 -1
  47. package/dist/server-handlers.mjs +2055 -1123
  48. package/dist/src/appointments/chat-components/AppointmentListTable.vue.d.ts +3 -0
  49. package/dist/src/appointments/index.d.ts +93 -3
  50. package/dist/src/appointments/reservation-summary.d.ts +48 -0
  51. package/dist/src/appointments/server.d.ts +1 -0
  52. package/dist/src/appointments/tools.d.ts +93 -3
  53. package/dist/src/filezone/config.d.ts +31 -0
  54. package/dist/src/filezone/index.d.ts +43 -0
  55. package/dist/src/filezone/index.vue.d.ts +2 -0
  56. package/dist/src/filezone/metadata.d.ts +2 -0
  57. package/dist/src/filezone/pages/Overview.vue.d.ts +4 -0
  58. package/dist/src/filezone/permissions.d.ts +5 -0
  59. package/dist/src/filezone/routes.d.ts +5 -0
  60. package/dist/src/filezone/server.d.ts +36 -0
  61. package/dist/src/index.d.ts +2 -0
  62. package/dist/src/mailTemplates/builder-types.d.ts +40 -0
  63. package/dist/src/mailTemplates/components/BlockRenderer.vue.d.ts +24 -0
  64. package/dist/src/mailTemplates/components/DesignPanel.vue.d.ts +13 -0
  65. package/dist/src/mailTemplates/components/EmailCanvas.vue.d.ts +44 -0
  66. package/dist/src/mailTemplates/components/RichTextEditor.vue.d.ts +10 -0
  67. package/dist/src/mailTemplates/components/RightSidebar.vue.d.ts +18 -0
  68. package/dist/src/mailTemplates/components/SettingsPanel.vue.d.ts +15 -0
  69. package/dist/src/mailTemplates/components/TemplateBuilder.vue.d.ts +2 -0
  70. package/dist/src/mailTemplates/components/TemplateList.vue.d.ts +19 -1
  71. package/dist/src/mailTemplates/components/rich-text.d.ts +6 -0
  72. package/dist/src/mailTemplates/config.d.ts +10 -4
  73. package/dist/src/mailTemplates/defaults.d.ts +10 -0
  74. package/dist/src/mailTemplates/editor-state.d.ts +21 -0
  75. package/dist/src/mailTemplates/index.d.ts +11 -5
  76. package/dist/src/mailTemplates/index.vue.d.ts +2 -4
  77. package/dist/src/mailTemplates/metadata.d.ts +1 -1
  78. package/dist/src/mailTemplates/pages/Detail.vue.d.ts +1 -13
  79. package/dist/src/mailTemplates/pages/Overview.vue.d.ts +1 -13
  80. package/dist/src/mailTemplates/server.d.ts +23 -0
  81. package/dist/src/server-handlers.d.ts +4 -0
  82. package/dist/src/table/badge-filter-utils.d.ts +8 -0
  83. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +2 -7
  84. package/dist/src/table/chat-components/TableResultView.vue.d.ts +3 -7
  85. package/dist/src/table/components/TableDisplayCell.vue.d.ts +8 -0
  86. package/dist/src/table/components/columns/BadgeColumnSettings.vue.d.ts +9 -0
  87. package/dist/src/table/components/columns/ColumnColorSelect.vue.d.ts +11 -0
  88. package/dist/src/table/components/columns/ColumnDisplaySettings.vue.d.ts +9 -0
  89. package/dist/src/table/components/columns/ColumnTypeSelect.vue.d.ts +11 -0
  90. package/dist/src/table/components/columns/ColumnValueSourceInput.vue.d.ts +15 -0
  91. package/dist/src/table/components/columns/DialogTableColumnItem.vue.d.ts +8 -11
  92. package/dist/src/table/components/columns/ProgressColumnSettings.vue.d.ts +8 -0
  93. package/dist/src/table/components/stats/StatDialog.vue.d.ts +6 -10
  94. package/dist/src/table/components/stats/Stats.vue.d.ts +9 -15
  95. package/dist/src/table/composables/useTableClock.d.ts +4 -0
  96. package/dist/src/table/display-utils.d.ts +35 -0
  97. package/dist/src/table/row-value.d.ts +1 -0
  98. package/dist/src/table/stat-utils.d.ts +9 -0
  99. package/dist/src/table/tool-utils.d.ts +1 -1
  100. package/dist/src/table/types.d.ts +54 -1
  101. package/dist/src/whatsappBusiness/analytics.d.ts +4 -0
  102. package/dist/src/whatsappBusiness/components/AccountPanel.vue.d.ts +2 -0
  103. package/dist/src/whatsappBusiness/components/InsightsPanel.vue.d.ts +5 -0
  104. package/dist/src/whatsappBusiness/components/TemplateDialog.vue.d.ts +14 -0
  105. package/dist/src/whatsappBusiness/components/TemplatesPanel.vue.d.ts +5 -0
  106. package/dist/src/whatsappBusiness/components/presentation.d.ts +4 -0
  107. package/dist/src/whatsappBusiness/config.d.ts +51 -0
  108. package/dist/src/whatsappBusiness/connection.d.ts +77 -0
  109. package/dist/src/whatsappBusiness/index.d.ts +63 -0
  110. package/dist/src/whatsappBusiness/index.vue.d.ts +5 -0
  111. package/dist/src/whatsappBusiness/metadata.d.ts +2 -0
  112. package/dist/src/whatsappBusiness/pages/Overview.vue.d.ts +2 -0
  113. package/dist/src/whatsappBusiness/permissions.d.ts +5 -0
  114. package/dist/src/whatsappBusiness/provider.d.ts +21 -0
  115. package/dist/src/whatsappBusiness/routes.d.ts +5 -0
  116. package/dist/src/whatsappBusiness/server.d.ts +14 -0
  117. package/dist/src/whatsappBusiness/templates.d.ts +94 -0
  118. package/dist/src/whatsappBusiness/types.d.ts +162 -0
  119. package/dist/{tool-sandbox-DoF1PsyS.js → tool-sandbox-BSkKdH7V.js} +1 -1
  120. package/dist/{tool-sandbox-DdkMLkDK.mjs → tool-sandbox-DU9b1B7v.mjs} +1 -1
  121. package/dist/{types-ibC3-e1N.mjs → types-B5MifmeF.mjs} +339 -273
  122. package/dist/types-D5dgTskW.js +1 -0
  123. package/dist/{useTableAgentTools-D5mzGf3A.js → useTableAgentTools-BrUot49I.js} +1 -1
  124. package/dist/{useTableAgentTools-DcN3kYRL.mjs → useTableAgentTools-r5InEI4p.mjs} +8 -8
  125. package/dist/{vee-validate-zod-BQElPD0m.js → vee-validate-zod-CWZwNTWE.js} +1 -1
  126. package/dist/{vee-validate-zod-CN16K2x9.mjs → vee-validate-zod-D0WaDgDZ.mjs} +1 -1
  127. package/package.json +2 -2
  128. package/src/appointments/tools.ts +52 -2
  129. package/dist/AppointmentListTable-DZJNmTMb.mjs +0 -177
  130. package/dist/AppointmentListTable-Dieu9US_.js +0 -1
  131. package/dist/ContentEditor-BcIUumah.js +0 -467
  132. package/dist/Detail-Byk781b4.mjs +0 -26
  133. package/dist/Detail-mvSGbnFU.js +0 -1
  134. package/dist/Overview-BDlBCUI_.js +0 -1
  135. package/dist/Overview-Su8ZUbMs.mjs +0 -26
  136. package/dist/TableDataWidget-7qvC3Egd.js +0 -1
  137. package/dist/TableDataWidget-DMTSoGRO.mjs +0 -121
  138. package/dist/TableOverviewCard-AFq-puJs.js +0 -1
  139. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +0 -534
  140. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +0 -1
  141. package/dist/TableRowActionCard-IzB6tNN-.js +0 -1
  142. package/dist/TableView-6mdrL3zx.js +0 -4
  143. package/dist/TableView-Du5nOE6R.mjs +0 -8228
  144. package/dist/TemplateList.vue_vue_type_script_setup_true_lang-B_AtWnHa.js +0 -1
  145. package/dist/TemplateList.vue_vue_type_script_setup_true_lang-Cmovy7kk.mjs +0 -40
  146. package/dist/dateRangePresets-B-l5b_wR.mjs +0 -48
  147. package/dist/dateRangePresets-CPWqst_x.js +0 -1
  148. package/dist/orders-DUa2PVoa.js +0 -1
  149. package/dist/types-BMraG1kN.js +0 -1
@@ -2,9 +2,12 @@ type __VLS_Props = {
2
2
  toolName: string;
3
3
  instanceId: string;
4
4
  instanceName: string;
5
+ projectSlug?: string;
5
6
  moduleType: string;
6
7
  resolvedArgs: Record<string, any>;
7
8
  status: 'pending' | 'running' | 'completed' | 'error';
9
+ executionMode?: 'page' | 'api' | 'component';
10
+ result?: unknown;
8
11
  };
9
12
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
10
13
  submit: (result: any) => any;
@@ -88,10 +88,17 @@ declare const _default: {
88
88
  };
89
89
  quantity?: undefined;
90
90
  status?: undefined;
91
- orderId?: undefined;
91
+ startDate?: undefined;
92
+ endDate?: undefined;
92
93
  agendaId?: undefined;
94
+ orderStatus?: undefined;
95
+ reservationStatus?: undefined;
96
+ limit?: undefined;
97
+ offset?: undefined;
98
+ orderId?: undefined;
93
99
  };
94
100
  required: string[];
101
+ additionalProperties?: undefined;
95
102
  };
96
103
  } | {
97
104
  name: string;
@@ -114,8 +121,70 @@ declare const _default: {
114
121
  name?: undefined;
115
122
  email?: undefined;
116
123
  date?: undefined;
117
- orderId?: undefined;
124
+ startDate?: undefined;
125
+ endDate?: undefined;
118
126
  agendaId?: undefined;
127
+ orderStatus?: undefined;
128
+ reservationStatus?: undefined;
129
+ limit?: undefined;
130
+ offset?: undefined;
131
+ orderId?: undefined;
132
+ };
133
+ required: string[];
134
+ additionalProperties?: undefined;
135
+ };
136
+ } | {
137
+ name: string;
138
+ description: string;
139
+ executionMode: string;
140
+ chatComponent: string;
141
+ parameters: {
142
+ type: string;
143
+ additionalProperties: boolean;
144
+ properties: {
145
+ startDate: {
146
+ type: string;
147
+ description: string;
148
+ };
149
+ endDate: {
150
+ type: string;
151
+ description: string;
152
+ };
153
+ agendaId: {
154
+ type: string;
155
+ description: string;
156
+ };
157
+ orderStatus: {
158
+ type: string;
159
+ enum: string[];
160
+ default: string;
161
+ description: string;
162
+ };
163
+ reservationStatus: {
164
+ type: string;
165
+ enum: string[];
166
+ default: string;
167
+ description: string;
168
+ };
169
+ limit: {
170
+ type: string;
171
+ minimum: number;
172
+ maximum: number;
173
+ default: number;
174
+ description: string;
175
+ };
176
+ offset: {
177
+ type: string;
178
+ minimum: number;
179
+ default: number;
180
+ description: string;
181
+ };
182
+ name?: undefined;
183
+ email?: undefined;
184
+ date?: undefined;
185
+ quantity?: undefined;
186
+ status?: undefined;
187
+ orderId?: undefined;
119
188
  };
120
189
  required: string[];
121
190
  };
@@ -136,9 +205,16 @@ declare const _default: {
136
205
  date?: undefined;
137
206
  quantity?: undefined;
138
207
  status?: undefined;
208
+ startDate?: undefined;
209
+ endDate?: undefined;
139
210
  agendaId?: undefined;
211
+ orderStatus?: undefined;
212
+ reservationStatus?: undefined;
213
+ limit?: undefined;
214
+ offset?: undefined;
140
215
  };
141
216
  required: string[];
217
+ additionalProperties?: undefined;
142
218
  };
143
219
  } | {
144
220
  name: string;
@@ -152,10 +228,17 @@ declare const _default: {
152
228
  date?: undefined;
153
229
  quantity?: undefined;
154
230
  status?: undefined;
155
- orderId?: undefined;
231
+ startDate?: undefined;
232
+ endDate?: undefined;
156
233
  agendaId?: undefined;
234
+ orderStatus?: undefined;
235
+ reservationStatus?: undefined;
236
+ limit?: undefined;
237
+ offset?: undefined;
238
+ orderId?: undefined;
157
239
  };
158
240
  required: never[];
241
+ additionalProperties?: undefined;
159
242
  };
160
243
  chatComponent?: undefined;
161
244
  } | {
@@ -178,9 +261,16 @@ declare const _default: {
178
261
  email?: undefined;
179
262
  quantity?: undefined;
180
263
  status?: undefined;
264
+ startDate?: undefined;
265
+ endDate?: undefined;
266
+ orderStatus?: undefined;
267
+ reservationStatus?: undefined;
268
+ limit?: undefined;
269
+ offset?: undefined;
181
270
  orderId?: undefined;
182
271
  };
183
272
  required: string[];
273
+ additionalProperties?: undefined;
184
274
  };
185
275
  })[];
186
276
  chatComponents: {
@@ -0,0 +1,48 @@
1
+ interface SummaryAppointment {
2
+ orderId: string;
3
+ reservationId: string | null;
4
+ agendaId: string | null;
5
+ date: string;
6
+ startTime: string | null;
7
+ endTime: string | null;
8
+ spots: number;
9
+ status: string | null;
10
+ reservationStatus: string | null;
11
+ resourceId: string | null;
12
+ resourceName: string | null;
13
+ customerInfo: {
14
+ firstName: string | null;
15
+ lastName: string | null;
16
+ email: string | null;
17
+ };
18
+ reservationPrice: number | null;
19
+ }
20
+ /** Count every matching nested reservation and retain only the requested row window. */
21
+ export declare function getReservationSummary(firestore: any, collection: string, query: Record<string, unknown>, timeZone: string, now?: Date): Promise<{
22
+ byDate: {
23
+ reservationCount: number;
24
+ orderCount: number;
25
+ spotCount: number;
26
+ date: string;
27
+ }[];
28
+ appointments: SummaryAppointment[];
29
+ pagination: {
30
+ offset: number;
31
+ limit: number;
32
+ returnedCount: number;
33
+ hasMore: boolean;
34
+ nextOffset: number | null;
35
+ };
36
+ reservationCount: number;
37
+ orderCount: number;
38
+ spotCount: number;
39
+ startDate: string;
40
+ endDate: string;
41
+ timeZone: string;
42
+ filters: {
43
+ agendaId: string | null;
44
+ orderStatus: string;
45
+ reservationStatus: string;
46
+ };
47
+ }>;
48
+ export {};
@@ -15,6 +15,7 @@ export interface ModuleHandlerDeps {
15
15
  *
16
16
  * Routes (relative to `/api/v1/modules/:instanceId/`):
17
17
  * GET /appointments → list recent appointments/reservations
18
+ * GET /appointments/summary → count reservations by booking date/period
18
19
  * GET /appointments/find → find appointment by name, email, date
19
20
  * GET /appointments/:appointmentId → get single appointment/reservation
20
21
  */
@@ -20,10 +20,17 @@ export declare const tools: ({
20
20
  };
21
21
  quantity?: undefined;
22
22
  status?: undefined;
23
- orderId?: undefined;
23
+ startDate?: undefined;
24
+ endDate?: undefined;
24
25
  agendaId?: undefined;
26
+ orderStatus?: undefined;
27
+ reservationStatus?: undefined;
28
+ limit?: undefined;
29
+ offset?: undefined;
30
+ orderId?: undefined;
25
31
  };
26
32
  required: string[];
33
+ additionalProperties?: undefined;
27
34
  };
28
35
  } | {
29
36
  name: string;
@@ -46,8 +53,70 @@ export declare const tools: ({
46
53
  name?: undefined;
47
54
  email?: undefined;
48
55
  date?: undefined;
49
- orderId?: undefined;
56
+ startDate?: undefined;
57
+ endDate?: undefined;
50
58
  agendaId?: undefined;
59
+ orderStatus?: undefined;
60
+ reservationStatus?: undefined;
61
+ limit?: undefined;
62
+ offset?: undefined;
63
+ orderId?: undefined;
64
+ };
65
+ required: string[];
66
+ additionalProperties?: undefined;
67
+ };
68
+ } | {
69
+ name: string;
70
+ description: string;
71
+ executionMode: string;
72
+ chatComponent: string;
73
+ parameters: {
74
+ type: string;
75
+ additionalProperties: boolean;
76
+ properties: {
77
+ startDate: {
78
+ type: string;
79
+ description: string;
80
+ };
81
+ endDate: {
82
+ type: string;
83
+ description: string;
84
+ };
85
+ agendaId: {
86
+ type: string;
87
+ description: string;
88
+ };
89
+ orderStatus: {
90
+ type: string;
91
+ enum: string[];
92
+ default: string;
93
+ description: string;
94
+ };
95
+ reservationStatus: {
96
+ type: string;
97
+ enum: string[];
98
+ default: string;
99
+ description: string;
100
+ };
101
+ limit: {
102
+ type: string;
103
+ minimum: number;
104
+ maximum: number;
105
+ default: number;
106
+ description: string;
107
+ };
108
+ offset: {
109
+ type: string;
110
+ minimum: number;
111
+ default: number;
112
+ description: string;
113
+ };
114
+ name?: undefined;
115
+ email?: undefined;
116
+ date?: undefined;
117
+ quantity?: undefined;
118
+ status?: undefined;
119
+ orderId?: undefined;
51
120
  };
52
121
  required: string[];
53
122
  };
@@ -68,9 +137,16 @@ export declare const tools: ({
68
137
  date?: undefined;
69
138
  quantity?: undefined;
70
139
  status?: undefined;
140
+ startDate?: undefined;
141
+ endDate?: undefined;
71
142
  agendaId?: undefined;
143
+ orderStatus?: undefined;
144
+ reservationStatus?: undefined;
145
+ limit?: undefined;
146
+ offset?: undefined;
72
147
  };
73
148
  required: string[];
149
+ additionalProperties?: undefined;
74
150
  };
75
151
  } | {
76
152
  name: string;
@@ -84,10 +160,17 @@ export declare const tools: ({
84
160
  date?: undefined;
85
161
  quantity?: undefined;
86
162
  status?: undefined;
87
- orderId?: undefined;
163
+ startDate?: undefined;
164
+ endDate?: undefined;
88
165
  agendaId?: undefined;
166
+ orderStatus?: undefined;
167
+ reservationStatus?: undefined;
168
+ limit?: undefined;
169
+ offset?: undefined;
170
+ orderId?: undefined;
89
171
  };
90
172
  required: never[];
173
+ additionalProperties?: undefined;
91
174
  };
92
175
  chatComponent?: undefined;
93
176
  } | {
@@ -110,8 +193,15 @@ export declare const tools: ({
110
193
  email?: undefined;
111
194
  quantity?: undefined;
112
195
  status?: undefined;
196
+ startDate?: undefined;
197
+ endDate?: undefined;
198
+ orderStatus?: undefined;
199
+ reservationStatus?: undefined;
200
+ limit?: undefined;
201
+ offset?: undefined;
113
202
  orderId?: undefined;
114
203
  };
115
204
  required: string[];
205
+ additionalProperties?: undefined;
116
206
  };
117
207
  })[];
@@ -0,0 +1,31 @@
1
+ import { ResolveConfig } from '@oneclick.dev/cms-kit';
2
+ export declare const config: {
3
+ readonly storageIntegration: {
4
+ readonly label: "File storage connection";
5
+ readonly description: "Choose a project FTP, SFTP, Firebase Storage, Amazon S3, or Cloudflare R2 integration. Use private storage; public provider URLs can bypass Studio access.";
6
+ readonly type: "resource";
7
+ readonly accept: ["FIREBASE", "FTP", "SFTP", "S3", "CLOUDFLARE_R2"];
8
+ readonly required: true;
9
+ };
10
+ readonly folderPath: {
11
+ readonly label: "Folder in this connection";
12
+ readonly description: "Optional path relative to the connection root, for example shared/team. Existing files in this folder appear in File Zone. Leave empty to use the connection root.";
13
+ readonly type: "input";
14
+ readonly default: "";
15
+ };
16
+ } & {
17
+ readonly storageIntegration: {
18
+ readonly label: "File storage connection";
19
+ readonly description: "Choose a project FTP, SFTP, Firebase Storage, Amazon S3, or Cloudflare R2 integration. Use private storage; public provider URLs can bypass Studio access.";
20
+ readonly type: "resource";
21
+ readonly accept: ["FIREBASE", "FTP", "SFTP", "S3", "CLOUDFLARE_R2"];
22
+ readonly required: true;
23
+ };
24
+ readonly folderPath: {
25
+ readonly label: "Folder in this connection";
26
+ readonly description: "Optional path relative to the connection root, for example shared/team. Existing files in this folder appear in File Zone. Leave empty to use the connection root.";
27
+ readonly type: "input";
28
+ readonly default: "";
29
+ };
30
+ };
31
+ export type ConfigValues = ResolveConfig<typeof config>;
@@ -0,0 +1,43 @@
1
+ declare const _default: {
2
+ component: () => Promise<typeof import("./index.vue")>;
3
+ metadata: import('@oneclick.dev/cms-kit').ModuleMetadata;
4
+ config: {
5
+ readonly storageIntegration: {
6
+ readonly label: "File storage connection";
7
+ readonly description: "Choose a project FTP, SFTP, Firebase Storage, Amazon S3, or Cloudflare R2 integration. Use private storage; public provider URLs can bypass Studio access.";
8
+ readonly type: "resource";
9
+ readonly accept: ["FIREBASE", "FTP", "SFTP", "S3", "CLOUDFLARE_R2"];
10
+ readonly required: true;
11
+ };
12
+ readonly folderPath: {
13
+ readonly label: "Folder in this connection";
14
+ readonly description: "Optional path relative to the connection root, for example shared/team. Existing files in this folder appear in File Zone. Leave empty to use the connection root.";
15
+ readonly type: "input";
16
+ readonly default: "";
17
+ };
18
+ } & {
19
+ readonly storageIntegration: {
20
+ readonly label: "File storage connection";
21
+ readonly description: "Choose a project FTP, SFTP, Firebase Storage, Amazon S3, or Cloudflare R2 integration. Use private storage; public provider URLs can bypass Studio access.";
22
+ readonly type: "resource";
23
+ readonly accept: ["FIREBASE", "FTP", "SFTP", "S3", "CLOUDFLARE_R2"];
24
+ readonly required: true;
25
+ };
26
+ readonly folderPath: {
27
+ readonly label: "Folder in this connection";
28
+ readonly description: "Optional path relative to the connection root, for example shared/team. Existing files in this folder appear in File Zone. Leave empty to use the connection root.";
29
+ readonly type: "input";
30
+ readonly default: "";
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
+ };
43
+ 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
+ picker: HTMLInputElement;
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,36 @@
1
+ import { Readable } from 'node:stream';
2
+ type Integration = {
3
+ id: string;
4
+ type: string;
5
+ config: Record<string, any>;
6
+ };
7
+ type StorageObject = {
8
+ key: string;
9
+ name: string;
10
+ directory: boolean;
11
+ size: number;
12
+ modified: string | null;
13
+ contentType: string | null;
14
+ };
15
+ type Upload = {
16
+ localPath: string;
17
+ name: string;
18
+ size: number;
19
+ contentType: string | null;
20
+ cleanup: () => Promise<void>;
21
+ };
22
+ type Deps = {
23
+ filezone: {
24
+ maxBytes: number;
25
+ parseUpload: (event: any) => Promise<Upload>;
26
+ list: (event: any, integration: Integration, folder: string, cursor: string | null) => Promise<{
27
+ objects: StorageObject[];
28
+ nextCursor: string | null;
29
+ }>;
30
+ upload: (event: any, integration: Integration, key: string, localPath: string, contentType: string) => Promise<void>;
31
+ read: (event: any, integration: Integration, key: string) => Promise<Readable>;
32
+ remove: (event: any, integration: Integration, key: string) => Promise<void>;
33
+ };
34
+ };
35
+ export declare function createServerHandler({ filezone }: Deps): import('h3').EventHandler<import('h3').EventHandlerRequest, any>;
36
+ export {};
@@ -12,3 +12,5 @@ export { default as pushNotifications } from './push-notifications';
12
12
  export { default as firebaseAuthManager } from './firebaseAuthManager';
13
13
  export { default as helpbot } from './helpbot';
14
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;