@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
@@ -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
  };
@@ -0,0 +1,10 @@
1
+ import { MailTemplate, EmailBlock, TemplateStyles } from './builder-types';
2
+ export declare const defaultTemplateStyles: TemplateStyles;
3
+ export declare function getDefaultBlockContent(type: EmailBlock['type']): Record<string, any>;
4
+ export declare const defaultTemplates: Omit<MailTemplate, 'id' | 'created_at' | 'updated_at' | 'styles'>[];
5
+ /** Get a deep clone of the default styles */
6
+ export declare function getDefaultStyles(): TemplateStyles;
7
+ /** Get a deep clone of a default template by name */
8
+ export declare function getDefaultTemplate(name: string, systemKey?: string | null): Omit<MailTemplate, "id" | "styles" | "created_at" | "updated_at"> | null;
9
+ /** Get deep clones of all default templates */
10
+ export declare function getAllDefaultTemplates(): Omit<MailTemplate, "id" | "styles" | "created_at" | "updated_at">[];
@@ -0,0 +1,21 @@
1
+ import { MailTemplate } from './builder-types';
2
+ export declare function templatePayload(template: MailTemplate): {
3
+ name: string;
4
+ subject: string;
5
+ preheader: string | undefined;
6
+ description: string;
7
+ category: "authentication" | "billing" | "notifications" | "onboarding" | "system";
8
+ status: "active" | "draft" | "inactive" | undefined;
9
+ blocks: import('./builder-types').EmailBlock[];
10
+ styles: import('./builder-types').TemplateStyles;
11
+ };
12
+ export declare function templateFingerprint(template: MailTemplate): string;
13
+ /** A bounded document history; branching after undo discards the redo branch. */
14
+ export declare function createDraftHistory(initial: string, limit?: number): {
15
+ readonly canUndo: boolean;
16
+ readonly canRedo: boolean;
17
+ record(snapshot: string): void;
18
+ undo(): string | null;
19
+ redo(): string | null;
20
+ };
21
+ export declare function mailVariables(...values: unknown[]): string[];
@@ -1,25 +1,31 @@
1
1
  declare const _default: {
2
2
  component: () => Promise<typeof import("./index.vue")>;
3
- metadata: ModuleMetadata;
3
+ metadata: import('@oneclick.dev/cms-kit').ModuleMetadata;
4
4
  config: {
5
5
  readonly project: {
6
- readonly label: "Project";
6
+ readonly label: "Firebase integration";
7
+ readonly description: "Use a Firebase integration connected to this project. Templates, MJML, and compiled HTML are saved in its Firestore database.";
8
+ readonly required: true;
7
9
  readonly type: "resource";
8
10
  readonly accept: ["FIREBASE"];
9
11
  };
10
12
  readonly templateCollection: {
11
- readonly label: "Mail Templates Collection";
13
+ readonly label: "Templates collection";
14
+ readonly description: "A dedicated Firestore collection for your email templates, for example mail-templates.";
12
15
  readonly type: "input";
13
16
  readonly default: "mail-templates";
14
17
  };
15
18
  } & {
16
19
  readonly project: {
17
- readonly label: "Project";
20
+ readonly label: "Firebase integration";
21
+ readonly description: "Use a Firebase integration connected to this project. Templates, MJML, and compiled HTML are saved in its Firestore database.";
22
+ readonly required: true;
18
23
  readonly type: "resource";
19
24
  readonly accept: ["FIREBASE"];
20
25
  };
21
26
  readonly templateCollection: {
22
- readonly label: "Mail Templates Collection";
27
+ readonly label: "Templates collection";
28
+ readonly description: "A dedicated Firestore collection for your email templates, for example mail-templates.";
23
29
  readonly type: "input";
24
30
  readonly default: "mail-templates";
25
31
  };
@@ -1,12 +1,10 @@
1
- import { PropType } from 'vue';
2
- import { ModuleRoute } from '~/types';
3
1
  declare const _default: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
4
2
  config: {
5
3
  type: ObjectConstructor;
6
4
  required: true;
7
5
  };
8
6
  routes: {
9
- type: PropType<ModuleRoute[]>;
7
+ type: ArrayConstructor;
10
8
  required: true;
11
9
  };
12
10
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
@@ -15,7 +13,7 @@ declare const _default: import('vue').DefineComponent<globalThis.ExtractPropType
15
13
  required: true;
16
14
  };
17
15
  routes: {
18
- type: PropType<ModuleRoute[]>;
16
+ type: ArrayConstructor;
19
17
  required: true;
20
18
  };
21
19
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
@@ -1,2 +1,2 @@
1
- import { ModuleMetadata } from '~/types';
1
+ import { ModuleMetadata } from '@oneclick.dev/cms-kit';
2
2
  export declare const metadata: ModuleMetadata;
@@ -1,14 +1,2 @@
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>;
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>;
14
2
  export default _default;
@@ -1,14 +1,2 @@
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>;
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>;
14
2
  export default _default;
@@ -0,0 +1,23 @@
1
+ type RenderResult = {
2
+ html: string;
3
+ mjml: string;
4
+ errors: Array<{
5
+ message: string;
6
+ line?: number;
7
+ tagName?: string;
8
+ formattedMessage?: string;
9
+ }>;
10
+ };
11
+ type Deps = {
12
+ initFirebase: (event: any, integrationId: string) => Promise<any>;
13
+ mailTemplates: {
14
+ render: (options: {
15
+ blocks: any[];
16
+ styles: Record<string, any>;
17
+ variables?: Record<string, string>;
18
+ preheader?: string;
19
+ }) => RenderResult;
20
+ };
21
+ };
22
+ export declare function createServerHandler(deps: Deps): import('h3').EventHandler<import('h3').EventHandlerRequest, any>;
23
+ export {};
@@ -10,3 +10,7 @@ export { createServerHandler as googleAnalytics } from './googleAnalytics/server
10
10
  export { createServerHandler as contentManager } from './contentManager/server';
11
11
  export { createServerHandler as firebaseAuthManager } from './firebaseAuthManager/server';
12
12
  export { createServerHandler as formBuilder } from './formBuilder/server';
13
+ export { createServerHandler as mailTemplates } from './mailTemplates/server';
14
+ export { createServerHandler as filezone } from './filezone/server';
15
+ export { createServerHandler as whatsappBusiness } from './whatsappBusiness/server';
16
+ export { whatsappBusinessConnection } from './whatsappBusiness/connection';
@@ -0,0 +1,8 @@
1
+ import { MultiSelectFilterOption, MultiSelectTableFilter, TableColumn } from './types';
2
+ type FilterOptionSource = Pick<MultiSelectTableFilter, 'property' | 'optionSource' | 'columnId'>;
3
+ export declare const getLinkedBadgeColumn: (filter: FilterOptionSource, columns?: readonly TableColumn[] | null) => TableColumn | undefined;
4
+ /** Column-owned labels/colors stay live; only default selection belongs to the filter. */
5
+ export declare const getTableFilterOptions: (filter: FilterOptionSource & {
6
+ options?: MultiSelectFilterOption[];
7
+ }, columns?: readonly TableColumn[] | null) => MultiSelectFilterOption[];
8
+ export {};
@@ -1,10 +1,5 @@
1
- interface TableColumnMetadata {
2
- id?: string;
3
- property: string;
4
- label: string;
5
- type: string;
6
- visible: boolean;
7
- }
1
+ import { TableColumn } from '../types';
2
+ type TableColumnMetadata = TableColumn;
8
3
  interface TableOverviewSnapshot {
9
4
  module: {
10
5
  id: string;
@@ -1,10 +1,6 @@
1
- interface ResultColumn {
2
- id?: string;
3
- property?: string;
1
+ import { TableColumn } from '../types';
2
+ interface ResultColumn extends Partial<TableColumn> {
4
3
  key?: string;
5
- label?: string;
6
- type?: string;
7
- visible?: boolean;
8
4
  }
9
5
  type __VLS_Props = {
10
6
  rows?: Record<string, any>[];
@@ -30,9 +26,9 @@ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
30
26
  declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
31
27
  title: string;
32
28
  description: string;
29
+ currency: string;
33
30
  view: "auto" | "table" | "card" | "metric";
34
31
  columns: ResultColumn[];
35
- currency: string;
36
32
  rows: Record<string, any>[];
37
33
  totalCount: number;
38
34
  emptyText: string;
@@ -0,0 +1,8 @@
1
+ import { TableColumn } from '../types';
2
+ type __VLS_Props = {
3
+ row: any;
4
+ column: Partial<TableColumn>;
5
+ now?: number;
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
8
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import { TableBadgeOption, TableFilter } from '../../types';
2
+ type __VLS_Props = {
3
+ id: string;
4
+ property: string;
5
+ options: TableBadgeOption[];
6
+ filters: TableFilter[];
7
+ };
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
9
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { TableDisplayColor } from '../../types';
2
+ type __VLS_Props = {
3
+ id: string;
4
+ modelValue?: TableDisplayColor;
5
+ };
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "update:modelValue": (value: TableDisplayColor) => any;
8
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ "onUpdate:modelValue"?: ((value: TableDisplayColor) => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import { TableColumn, TableFilter } from '../../types';
2
+ type __VLS_Props = {
3
+ column: TableColumn;
4
+ fields: string[];
5
+ rows: Record<string, any>[];
6
+ filters: TableFilter[];
7
+ };
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
9
+ export default _default;
@@ -0,0 +1,11 @@
1
+ type __VLS_Props = {
2
+ id: string;
3
+ modelValue: string;
4
+ disabled?: boolean;
5
+ };
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "update:modelValue": (value: string) => any;
8
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ export default _default;
@@ -0,0 +1,15 @@
1
+ import { TableValueSource } from '../../types';
2
+ type __VLS_Props = {
3
+ id: string;
4
+ label: string;
5
+ modelValue: TableValueSource;
6
+ fields: string[];
7
+ valueType?: 'number' | 'date';
8
+ allowArrayCount?: boolean;
9
+ };
10
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
+ "update:modelValue": (value: TableValueSource) => any;
12
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ "onUpdate:modelValue"?: ((value: TableValueSource) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLFieldSetElement>;
15
+ export default _default;
@@ -1,12 +1,9 @@
1
- declare const _default: import('vue').DefineComponent<globalThis.ExtractPropTypes<{
2
- column: {
3
- type: ObjectConstructor;
4
- required: true;
5
- };
6
- }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<globalThis.ExtractPropTypes<{
7
- column: {
8
- type: ObjectConstructor;
9
- required: true;
10
- };
11
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1
+ import { TableColumn, TableFilter } from '../../types';
2
+ type __VLS_Props = {
3
+ column: TableColumn;
4
+ fields: string[];
5
+ rows: Record<string, any>[];
6
+ filters: TableFilter[];
7
+ };
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
12
9
  export default _default;
@@ -0,0 +1,8 @@
1
+ import { TableProgressSettings } from '../../types';
2
+ type __VLS_Props = {
3
+ id: string;
4
+ settings: TableProgressSettings;
5
+ fields: string[];
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
8
+ export default _default;
@@ -1,12 +1,8 @@
1
- declare const _default: import('vue').DefineComponent<{}, {
1
+ type __VLS_Props = {
2
+ saveStat: (stat: any) => Promise<void>;
3
+ removeStat: (id: string) => Promise<void>;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {
2
6
  openDialog: (stat?: any) => void;
3
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
4
- statAdded: (...args: any[]) => void;
5
- statEdited: (...args: any[]) => void;
6
- statRemoved: (...args: any[]) => void;
7
- }, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
8
- onStatAdded?: ((...args: any[]) => any) | undefined;
9
- onStatEdited?: ((...args: any[]) => any) | undefined;
10
- onStatRemoved?: ((...args: any[]) => any) | undefined;
11
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
7
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
12
8
  export default _default;
@@ -1,26 +1,20 @@
1
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
- statDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
3
- onStatAdded?: ((...args: any[]) => any) | undefined;
4
- onStatEdited?: ((...args: any[]) => any) | undefined;
5
- onStatRemoved?: ((...args: any[]) => any) | undefined;
6
- }>, {
2
+ statDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
3
+ saveStat: (stat: any) => Promise<void>;
4
+ removeStat: (id: string) => Promise<void>;
5
+ }> & Readonly<{}>, {
7
6
  openDialog: (stat?: any) => void;
8
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
9
- statAdded: (...args: any[]) => void;
10
- statEdited: (...args: any[]) => void;
11
- statRemoved: (...args: any[]) => void;
12
- }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
7
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
13
8
  P: {};
14
9
  B: {};
15
10
  D: {};
16
11
  C: {};
17
12
  M: {};
18
13
  Defaults: {};
19
- }, Readonly<{}> & Readonly<{
20
- onStatAdded?: ((...args: any[]) => any) | undefined;
21
- onStatEdited?: ((...args: any[]) => any) | undefined;
22
- onStatRemoved?: ((...args: any[]) => any) | undefined;
23
- }>, {
14
+ }, Readonly<{
15
+ saveStat: (stat: any) => Promise<void>;
16
+ removeStat: (id: string) => Promise<void>;
17
+ }> & Readonly<{}>, {
24
18
  openDialog: (stat?: any) => void;
25
19
  }, {}, {}, {}, {}> | null;
26
20
  }, any>;
@@ -0,0 +1,4 @@
1
+ import { Ref } from 'vue';
2
+ /** One clock per table/preview; suspended in background tabs and disposed on unmount. */
3
+ export declare function provideTableClock(): Ref<number>;
4
+ export declare function useTableClock(): Ref<number>;
@@ -0,0 +1,35 @@
1
+ import { TableColumn, TableDisplayColor, TableValueSource } from './types';
2
+ export declare const DISPLAY_COLOR_CLASSES: Record<TableDisplayColor, {
3
+ badge: string;
4
+ bar: string;
5
+ }>;
6
+ export interface TableCellDisplay {
7
+ kind: 'date' | 'progress' | 'badge' | 'plain';
8
+ text: string;
9
+ secondary?: string;
10
+ color?: TableDisplayColor;
11
+ percent?: number;
12
+ showBar?: boolean;
13
+ state?: 'active' | 'upcoming' | 'overdue' | 'completed' | 'completed-late' | 'unavailable';
14
+ }
15
+ interface DisplayContext {
16
+ now?: number;
17
+ locale?: string;
18
+ timeZone?: string;
19
+ }
20
+ export declare function getTableBadgeOptions(column: Partial<TableColumn>): import('./types').TableBadgeOption[];
21
+ export declare function getTableColumnId(column: Partial<TableColumn>): string;
22
+ export declare function tableTimestamp(value: unknown): number | null;
23
+ export declare function resolveValueSource(row: any, source?: TableValueSource): unknown;
24
+ export declare function getColumnDependencies(column: Partial<TableColumn>): string[];
25
+ /** Persist only the requested display inputs. Counts never require persisting array contents. */
26
+ export declare function projectTableRow(row: any, columns: Partial<TableColumn>[]): {
27
+ [k: string]: unknown;
28
+ };
29
+ export declare function snapshotTableColumn(column: Partial<TableColumn>): TableColumn;
30
+ export declare function getColumnCellValue(row: any, column: Partial<TableColumn>, now?: number): any;
31
+ export declare function formatTableText(value: unknown, column: Partial<TableColumn>, format?: (value: unknown) => string): string;
32
+ export declare function formatTableNumber(value: unknown, column: Partial<TableColumn>, format?: (number: number) => string): string;
33
+ export declare function resolveTableCell(row: any, column: Partial<TableColumn>, context?: DisplayContext): TableCellDisplay;
34
+ export declare function validateColumnDisplay(column: Partial<TableColumn>): string | null;
35
+ export {};
@@ -0,0 +1 @@
1
+ export declare function resolveProperty(object: any, property: string): any;
@@ -0,0 +1,9 @@
1
+ export interface StatCondition {
2
+ id: string;
3
+ field: string;
4
+ condition: string;
5
+ value: string;
6
+ /** Omitted on existing stats, which continue to compare against a fixed value. */
7
+ valueSource?: 'fixed' | 'now';
8
+ }
9
+ export declare function filterStatRows<T>(rows: T[], conditions?: StatCondition[] | null, now?: number): T[];
@@ -1,5 +1,5 @@
1
1
  import { TableColumn, TableRowMatch, TableToolFilter } from './types';
2
- export declare function resolveProperty(object: any, property: string): any;
2
+ export { resolveProperty } from './row-value';
3
3
  export declare function normalizeTableRows(value: any): Record<string, any>[];
4
4
  export declare function normalizeTableColumns(value: any): TableColumn[];
5
5
  export declare function inferTableColumns(rows: any[]): TableColumn[];
@@ -1,10 +1,60 @@
1
- export type TableColumnType = 'text' | 'number' | 'date' | 'datetime' | 'boolean' | 'URL' | 'email' | 'phone' | 'currency' | 'image' | 'array' | 'array-counter' | 'html';
1
+ export type TableColumnType = 'text' | 'number' | 'date' | 'datetime' | 'boolean' | 'URL' | 'email' | 'phone' | 'currency' | 'image' | 'array' | 'array-counter' | 'html' | 'progress' | 'badge';
2
+ export type TableDisplayColor = 'neutral' | 'blue' | 'green' | 'amber' | 'red' | 'purple';
3
+ export interface TableValueSource {
4
+ kind: 'field' | 'fixed' | 'array-count';
5
+ property?: string;
6
+ value?: number | string;
7
+ }
8
+ export interface TableProgressSettings {
9
+ mode: 'numeric' | 'time';
10
+ current?: TableValueSource;
11
+ target?: TableValueSource;
12
+ start?: TableValueSource;
13
+ endMode?: 'deadline' | 'duration';
14
+ deadline?: TableValueSource;
15
+ duration?: TableValueSource;
16
+ durationUnit?: 'minutes' | 'hours' | 'days';
17
+ completedAt?: string;
18
+ display?: 'ratio' | 'percentage' | 'remaining' | 'elapsed';
19
+ showBar?: boolean;
20
+ color?: TableDisplayColor;
21
+ thresholdMetric?: 'percent' | 'remaining';
22
+ /** Ascending percent lower bounds, or remaining-minutes upper bounds. */
23
+ thresholds?: {
24
+ at: number;
25
+ color: TableDisplayColor;
26
+ }[];
27
+ completedColor?: TableDisplayColor;
28
+ overdueColor?: TableDisplayColor;
29
+ sortBy?: 'current' | 'percentage' | 'remaining' | 'deadline';
30
+ }
31
+ export interface TableBadgeOption {
32
+ id: string;
33
+ value: string;
34
+ label: string;
35
+ color: TableDisplayColor;
36
+ }
2
37
  export interface TableColumn {
3
38
  id?: string;
4
39
  property: string;
5
40
  label: string;
6
41
  type: TableColumnType | string;
7
42
  visible: boolean;
43
+ numberDisplay?: {
44
+ prefix?: string;
45
+ };
46
+ textDisplay?: {
47
+ prefix?: string;
48
+ };
49
+ dateDisplay?: {
50
+ relative?: boolean;
51
+ locale?: string;
52
+ timeZone?: string;
53
+ };
54
+ progress?: TableProgressSettings;
55
+ badge?: {
56
+ options: TableBadgeOption[];
57
+ };
8
58
  _remove?: boolean;
9
59
  [key: string]: any;
10
60
  }
@@ -23,10 +73,13 @@ export interface MultiSelectFilterOption {
23
73
  value: string;
24
74
  label: string;
25
75
  checked: boolean;
76
+ color?: TableDisplayColor;
26
77
  }
27
78
  export interface MultiSelectTableFilter extends BaseTableFilter {
28
79
  type: 'multi-select';
29
80
  options: MultiSelectFilterOption[];
81
+ optionSource?: 'custom' | 'column';
82
+ columnId?: string;
30
83
  }
31
84
  export interface NumberRangeTableFilter extends BaseTableFilter {
32
85
  type: 'number-range';
@@ -0,0 +1,4 @@
1
+ import { WhatsAppMessageAnalytics, WhatsAppSection, WhatsAppTemplateAnalytics } from './types';
2
+ export declare function messageAnalytics(raw: Record<string, any>): WhatsAppSection<WhatsAppMessageAnalytics>;
3
+ /** Missing values stay unknown. A real provider zero is preserved as zero. */
4
+ export declare function templateAnalytics(rows: Record<string, any>[], templates: Record<string, any>[], currency: string | null, truncated: boolean): WhatsAppSection<WhatsAppTemplateAnalytics>;
@@ -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
+ type __VLS_Props = {
2
+ canManage: boolean;
3
+ };
4
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
5
+ export default _default;