@mantine-vue/whatsapp-inbox 3.2.0

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 (111) hide show
  1. package/README.md +88 -0
  2. package/cjs/index.cjs +11842 -0
  3. package/cjs/index.cjs.map +1 -0
  4. package/esm/index.mjs +11704 -0
  5. package/esm/index.mjs.map +1 -0
  6. package/lib/WhatsAppInbox.context.d.ts +70 -0
  7. package/lib/component-props.d.ts +138 -0
  8. package/lib/components/WhatsAppAttachmentPreview/WhatsAppAttachmentPreview.d.ts +8 -0
  9. package/lib/components/WhatsAppAttachmentPreview/WhatsAppAttachmentPreview.types.d.ts +33 -0
  10. package/lib/components/WhatsAppAttachmentPreview/WhatsAppAttachmentPreview.vue.d.ts +19 -0
  11. package/lib/components/WhatsAppAttachmentPreview/index.d.ts +1 -0
  12. package/lib/components/WhatsAppComposer/WhatsAppComposer.d.ts +10 -0
  13. package/lib/components/WhatsAppComposer/WhatsAppComposer.types.d.ts +173 -0
  14. package/lib/components/WhatsAppComposer/WhatsAppComposer.vue.d.ts +52 -0
  15. package/lib/components/WhatsAppComposer/index.d.ts +1 -0
  16. package/lib/components/WhatsAppContactPanel/WhatsAppContactPanel.d.ts +9 -0
  17. package/lib/components/WhatsAppContactPanel/WhatsAppContactPanel.types.d.ts +40 -0
  18. package/lib/components/WhatsAppContactPanel/WhatsAppContactPanel.vue.d.ts +19 -0
  19. package/lib/components/WhatsAppContactPanel/index.d.ts +1 -0
  20. package/lib/components/WhatsAppConversation/WhatsAppConversation.d.ts +10 -0
  21. package/lib/components/WhatsAppConversation/WhatsAppConversation.types.d.ts +163 -0
  22. package/lib/components/WhatsAppConversation/WhatsAppConversation.vue.d.ts +69 -0
  23. package/lib/components/WhatsAppConversation/index.d.ts +1 -0
  24. package/lib/components/WhatsAppConversationHeader/WhatsAppConversationHeader.d.ts +9 -0
  25. package/lib/components/WhatsAppConversationHeader/WhatsAppConversationHeader.types.d.ts +57 -0
  26. package/lib/components/WhatsAppConversationHeader/WhatsAppConversationHeader.vue.d.ts +23 -0
  27. package/lib/components/WhatsAppConversationHeader/index.d.ts +1 -0
  28. package/lib/components/WhatsAppConversationList/WhatsAppConversationList.d.ts +9 -0
  29. package/lib/components/WhatsAppConversationList/WhatsAppConversationList.types.d.ts +113 -0
  30. package/lib/components/WhatsAppConversationList/WhatsAppConversationList.vue.d.ts +35 -0
  31. package/lib/components/WhatsAppConversationList/index.d.ts +1 -0
  32. package/lib/components/WhatsAppConversationListItem/WhatsAppConversationListItem.d.ts +9 -0
  33. package/lib/components/WhatsAppConversationListItem/WhatsAppConversationListItem.types.d.ts +56 -0
  34. package/lib/components/WhatsAppConversationListItem/WhatsAppConversationListItem.vue.d.ts +21 -0
  35. package/lib/components/WhatsAppConversationListItem/index.d.ts +1 -0
  36. package/lib/components/WhatsAppEmojiPicker/WhatsAppEmojiPicker.d.ts +9 -0
  37. package/lib/components/WhatsAppEmojiPicker/WhatsAppEmojiPicker.types.d.ts +91 -0
  38. package/lib/components/WhatsAppEmojiPicker/WhatsAppEmojiPicker.vue.d.ts +31 -0
  39. package/lib/components/WhatsAppEmojiPicker/index.d.ts +1 -0
  40. package/lib/components/WhatsAppInbox/WhatsAppInbox.d.ts +10 -0
  41. package/lib/components/WhatsAppInbox/WhatsAppInbox.types.d.ts +135 -0
  42. package/lib/components/WhatsAppInbox/WhatsAppInbox.vue.d.ts +84 -0
  43. package/lib/components/WhatsAppInbox/index.d.ts +1 -0
  44. package/lib/components/WhatsAppInboxDrawer/WhatsAppInboxDrawer.d.ts +9 -0
  45. package/lib/components/WhatsAppInboxDrawer/WhatsAppInboxDrawer.types.d.ts +52 -0
  46. package/lib/components/WhatsAppInboxDrawer/WhatsAppInboxDrawer.vue.d.ts +24 -0
  47. package/lib/components/WhatsAppInboxDrawer/index.d.ts +1 -0
  48. package/lib/components/WhatsAppInboxModal/WhatsAppInboxModal.d.ts +9 -0
  49. package/lib/components/WhatsAppInboxModal/WhatsAppInboxModal.types.d.ts +52 -0
  50. package/lib/components/WhatsAppInboxModal/WhatsAppInboxModal.vue.d.ts +28 -0
  51. package/lib/components/WhatsAppInboxModal/index.d.ts +1 -0
  52. package/lib/components/WhatsAppInboxProvider/WhatsAppInboxProvider.d.ts +16 -0
  53. package/lib/components/WhatsAppInboxProvider/WhatsAppInboxProvider.types.d.ts +16 -0
  54. package/lib/components/WhatsAppInboxProvider/WhatsAppInboxProvider.vue.d.ts +11 -0
  55. package/lib/components/WhatsAppInboxProvider/index.d.ts +1 -0
  56. package/lib/components/WhatsAppInteractiveMessageEditor/WhatsAppInteractiveMessageEditor.d.ts +8 -0
  57. package/lib/components/WhatsAppInteractiveMessageEditor/WhatsAppInteractiveMessageEditor.types.d.ts +49 -0
  58. package/lib/components/WhatsAppInteractiveMessageEditor/WhatsAppInteractiveMessageEditor.vue.d.ts +27 -0
  59. package/lib/components/WhatsAppInteractiveMessageEditor/index.d.ts +1 -0
  60. package/lib/components/WhatsAppMediaAttachment/WhatsAppMediaAttachment.d.ts +8 -0
  61. package/lib/components/WhatsAppMediaAttachment/WhatsAppMediaAttachment.types.d.ts +41 -0
  62. package/lib/components/WhatsAppMediaAttachment/WhatsAppMediaAttachment.vue.d.ts +19 -0
  63. package/lib/components/WhatsAppMediaAttachment/index.d.ts +1 -0
  64. package/lib/components/WhatsAppMessage/WhatsAppMessage.d.ts +9 -0
  65. package/lib/components/WhatsAppMessage/WhatsAppMessage.types.d.ts +46 -0
  66. package/lib/components/WhatsAppMessage/WhatsAppMessage.vue.d.ts +25 -0
  67. package/lib/components/WhatsAppMessage/index.d.ts +1 -0
  68. package/lib/components/WhatsAppMessageBubble/WhatsAppMessageBubble.d.ts +9 -0
  69. package/lib/components/WhatsAppMessageBubble/WhatsAppMessageBubble.types.d.ts +77 -0
  70. package/lib/components/WhatsAppMessageBubble/WhatsAppMessageBubble.vue.d.ts +22 -0
  71. package/lib/components/WhatsAppMessageBubble/index.d.ts +1 -0
  72. package/lib/components/WhatsAppMessageList/WhatsAppMessageList.d.ts +10 -0
  73. package/lib/components/WhatsAppMessageList/WhatsAppMessageList.types.d.ts +94 -0
  74. package/lib/components/WhatsAppMessageList/WhatsAppMessageList.vue.d.ts +39 -0
  75. package/lib/components/WhatsAppMessageList/index.d.ts +1 -0
  76. package/lib/components/WhatsAppMessageStatus/WhatsAppMessageStatus.d.ts +7 -0
  77. package/lib/components/WhatsAppMessageStatus/WhatsAppMessageStatus.types.d.ts +30 -0
  78. package/lib/components/WhatsAppMessageStatus/WhatsAppMessageStatus.vue.d.ts +24 -0
  79. package/lib/components/WhatsAppMessageStatus/index.d.ts +1 -0
  80. package/lib/components/WhatsAppMessagingWindowNotice/WhatsAppMessagingWindowNotice.d.ts +9 -0
  81. package/lib/components/WhatsAppMessagingWindowNotice/WhatsAppMessagingWindowNotice.types.d.ts +55 -0
  82. package/lib/components/WhatsAppMessagingWindowNotice/WhatsAppMessagingWindowNotice.vue.d.ts +18 -0
  83. package/lib/components/WhatsAppMessagingWindowNotice/index.d.ts +1 -0
  84. package/lib/components/WhatsAppTemplatePreview/WhatsAppTemplatePreview.d.ts +7 -0
  85. package/lib/components/WhatsAppTemplatePreview/WhatsAppTemplatePreview.types.d.ts +36 -0
  86. package/lib/components/WhatsAppTemplatePreview/WhatsAppTemplatePreview.vue.d.ts +12 -0
  87. package/lib/components/WhatsAppTemplatePreview/index.d.ts +1 -0
  88. package/lib/components/WhatsAppTemplateSelector/WhatsAppTemplateSelector.d.ts +9 -0
  89. package/lib/components/WhatsAppTemplateSelector/WhatsAppTemplateSelector.types.d.ts +106 -0
  90. package/lib/components/WhatsAppTemplateSelector/WhatsAppTemplateSelector.vue.d.ts +33 -0
  91. package/lib/components/WhatsAppTemplateSelector/index.d.ts +1 -0
  92. package/lib/emoji/emoji-data.d.ts +27 -0
  93. package/lib/emoji/emoji-filter.d.ts +49 -0
  94. package/lib/emoji/index.d.ts +4 -0
  95. package/lib/icons/WhatsAppIcon.vue.d.ts +14 -0
  96. package/lib/icons/icon-paths.d.ts +43 -0
  97. package/lib/icons/index.d.ts +3 -0
  98. package/lib/index.d.mts +29 -0
  99. package/lib/index.d.ts +29 -0
  100. package/lib/labels.d.ts +184 -0
  101. package/lib/types.d.ts +777 -0
  102. package/lib/utils/capabilities.d.ts +14 -0
  103. package/lib/utils/format.d.ts +27 -0
  104. package/lib/utils/index.d.ts +9 -0
  105. package/lib/utils/media.d.ts +45 -0
  106. package/lib/utils/messages.d.ts +48 -0
  107. package/lib/utils/phone.d.ts +18 -0
  108. package/lib/utils/templates.d.ts +65 -0
  109. package/package.json +46 -0
  110. package/styles.css +1504 -0
  111. package/styles.layer.css +1506 -0
@@ -0,0 +1,91 @@
1
+ import type { VNodeChild } from 'vue';
2
+ import type { BoxProps, Factory } from '@mantine-vue/core';
3
+ import type { StylesApiProps } from '@mantine-vue/core/styles-api';
4
+ import type { WhatsAppEmoji, WhatsAppEmojiFilterOptions, WhatsAppEmojiGroupId } from '../../emoji';
5
+ import type { WhatsAppInboxLabelsOverride } from '../../labels';
6
+ export type WhatsAppEmojiPickerStylesNames = 'emojiPickerRoot' | 'emojiPickerSearch' | 'emojiPickerTabs' | 'emojiPickerTab' | 'emojiPickerBody' | 'emojiPickerGroup' | 'emojiPickerGroupLabel' | 'emojiPickerGrid' | 'emojiPickerItem' | 'emojiPickerEmpty' | 'emojiPickerPreview' | 'emojiPickerPreviewEmoji' | 'emojiPickerPreviewName';
7
+ export interface WhatsAppEmojiPickerSlots {
8
+ /** Replaces the empty state shown when a search matches nothing. */
9
+ emptyEmojis?: (props: {
10
+ search: string;
11
+ }) => VNodeChild;
12
+ /** Rendered under the grid, in place of the hovered-emoji preview. */
13
+ emojiPickerFooter?: (props: {
14
+ emoji: WhatsAppEmoji | null;
15
+ }) => VNodeChild;
16
+ }
17
+ /**
18
+ * Props declared by `WhatsAppEmojiPicker` itself.
19
+ *
20
+ * The filter options are spread onto the props rather than nested, so a template can set
21
+ * `:exclude-groups="['flags']"` without building an object.
22
+ */
23
+ export interface WhatsAppEmojiPickerOwnProps extends StylesApiProps<WhatsAppEmojiPickerFactory>, WhatsAppEmojiFilterOptions {
24
+ /** Controlled search query. */
25
+ search?: string;
26
+ /** Uncontrolled initial search query. */
27
+ defaultSearch?: string;
28
+ /**
29
+ * Recently used characters, most recent first. Bind it to persist them; leave it alone and the
30
+ * picker keeps its own list for the lifetime of the component.
31
+ */
32
+ recentEmojis?: string[];
33
+ /** Uncontrolled initial recently-used characters. */
34
+ defaultRecentEmojis?: string[];
35
+ /**
36
+ * Largest number of recently-used emoji kept.
37
+ * @default 24
38
+ */
39
+ recentLimit?: number;
40
+ /**
41
+ * Renders the recently-used category.
42
+ * @default true
43
+ */
44
+ withRecent?: boolean;
45
+ /**
46
+ * Renders the search field.
47
+ * @default true
48
+ */
49
+ withSearch?: boolean;
50
+ /**
51
+ * Renders the category tab strip.
52
+ * @default true
53
+ */
54
+ withTabs?: boolean;
55
+ /**
56
+ * Renders the preview of the hovered or focused emoji under the grid.
57
+ * @default true
58
+ */
59
+ withPreview?: boolean;
60
+ /**
61
+ * Number of emoji per row. Also the step the up and down arrow keys move by.
62
+ * @default 8
63
+ */
64
+ columns?: number;
65
+ /** Height of the scrollable grid, any valid CSS length. */
66
+ height?: string | number;
67
+ /** Width of the picker, any valid CSS length. */
68
+ width?: string | number;
69
+ /** Label overrides. */
70
+ labels?: WhatsAppInboxLabelsOverride;
71
+ }
72
+ export interface WhatsAppEmojiPickerProps extends Omit<BoxProps, keyof WhatsAppEmojiPickerOwnProps>, WhatsAppEmojiPickerOwnProps {
73
+ }
74
+ export interface WhatsAppEmojiPickerEmits {
75
+ /** Emitted when an emoji is picked. */
76
+ select: [emoji: WhatsAppEmoji];
77
+ /** Emitted when the search query changes. */
78
+ 'update:search': [search: string];
79
+ /** Emitted with the new recently-used list after a pick. */
80
+ 'update:recentEmojis': [recentEmojis: string[]];
81
+ /** Emitted when the visible category changes, by tab or by scrolling. */
82
+ groupChange: [group: WhatsAppEmojiGroupId];
83
+ }
84
+ export type WhatsAppEmojiPickerFactory = Factory<{
85
+ props: Omit<WhatsAppEmojiPickerProps, 'rootRef'>;
86
+ slots: WhatsAppEmojiPickerSlots;
87
+ emits: WhatsAppEmojiPickerEmits;
88
+ ref: HTMLDivElement;
89
+ element: 'div';
90
+ stylesNames: WhatsAppEmojiPickerStylesNames;
91
+ }>;
@@ -0,0 +1,31 @@
1
+ import { type WhatsAppEmoji, type WhatsAppEmojiGroupId } from '../../emoji';
2
+ import type { WhatsAppEmojiPickerOwnProps, WhatsAppEmojiPickerSlots } from './WhatsAppEmojiPicker.types';
3
+ declare const defaultProps: {
4
+ readonly recentLimit: 24;
5
+ readonly withRecent: true;
6
+ readonly withSearch: true;
7
+ readonly withTabs: true;
8
+ readonly withPreview: true;
9
+ readonly columns: 8;
10
+ };
11
+ declare function toCssLength(value: string | number | undefined): string | undefined;
12
+ declare const varsResolver: (theme: import("@mantine-vue/core").MantineTheme, props: any, ctx: Record<string, any>) => Record<string, Record<string, string | undefined>>;
13
+ export { defaultProps, toCssLength, varsResolver };
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
16
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<WhatsAppEmojiPickerOwnProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ select: (emoji: WhatsAppEmoji) => any;
18
+ "update:search": (search: string) => any;
19
+ "update:recentEmojis": (recentEmojis: string[]) => any;
20
+ groupChange: (group: WhatsAppEmojiGroupId) => any;
21
+ }, string, import("vue").PublicProps, Readonly<WhatsAppEmojiPickerOwnProps> & Readonly<{
22
+ onSelect?: ((emoji: WhatsAppEmoji) => any) | undefined;
23
+ "onUpdate:search"?: ((search: string) => any) | undefined;
24
+ "onUpdate:recentEmojis"?: ((recentEmojis: string[]) => any) | undefined;
25
+ onGroupChange?: ((group: WhatsAppEmojiGroupId) => any) | undefined;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, WhatsAppEmojiPickerSlots>;
27
+ type __VLS_WithSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -0,0 +1 @@
1
+ export * from './WhatsAppEmojiPicker';
@@ -0,0 +1,10 @@
1
+ export declare const WhatsAppInbox: import("@mantine-vue/core").MantineComponent<{
2
+ props: Omit<import("./WhatsAppInbox.types").WhatsAppInboxProps, "rootRef">;
3
+ slots: import("./WhatsAppInbox.types").WhatsAppInboxSlots;
4
+ emits: import("./WhatsAppInbox.types").WhatsAppInboxEmits;
5
+ exposed: import("./WhatsAppInbox.types").WhatsAppInboxExposed;
6
+ ref: HTMLDivElement;
7
+ element: "div";
8
+ stylesNames: import("./WhatsAppInbox.types").WhatsAppInboxStylesNames;
9
+ }>;
10
+ export type { WhatsAppInboxConversationProps, WhatsAppInboxEmits, WhatsAppInboxExposed, WhatsAppInboxFactory, WhatsAppInboxLayout, WhatsAppInboxOwnProps, WhatsAppInboxProps, WhatsAppInboxSlots, WhatsAppInboxStylesNames, } from './WhatsAppInbox.types';
@@ -0,0 +1,135 @@
1
+ import type { BoxProps, Factory } from '@mantine-vue/core';
2
+ import type { StylesApiProps } from '@mantine-vue/core/styles-api';
3
+ import type { ForwardedProps, MessageRenderers, WhatsAppContactPanelSlots, WhatsAppConversationListSlots, WhatsAppConversationSlots } from '../../component-props';
4
+ import type { WhatsAppInboxLabelsOverride } from '../../labels';
5
+ import type { WhatsAppConversationData, WhatsAppConversationSummary, WhatsAppInboxFilters, WhatsAppInboxFiltersConfig, WhatsAppLoadMorePayload, WhatsAppNewConversationPayload, WhatsAppPaginationState } from '../../types';
6
+ import type { WhatsAppContactPanelProps, WhatsAppContactPanelStylesNames } from '../WhatsAppContactPanel';
7
+ import type { WhatsAppConversationEmits, WhatsAppConversationOwnProps, WhatsAppConversationStylesNames } from '../WhatsAppConversation';
8
+ import type { WhatsAppConversationListProps, WhatsAppConversationListStylesNames, WhatsAppConversationOrder } from '../WhatsAppConversationList';
9
+ export type WhatsAppInboxStylesNames = 'inboxRoot' | 'inboxSidebar' | 'inboxMain' | 'inboxPanel' | WhatsAppConversationListStylesNames | WhatsAppConversationStylesNames | WhatsAppContactPanelStylesNames;
10
+ /**
11
+ * How the three panes are arranged.
12
+ *
13
+ * `auto` measures the component itself rather than the viewport, so an inbox embedded in a
14
+ * narrow column collapses to a single pane even on a wide screen.
15
+ */
16
+ export type WhatsAppInboxLayout = 'auto' | 'split' | 'single';
17
+ export interface WhatsAppInboxSlots extends WhatsAppConversationListSlots, WhatsAppConversationSlots, WhatsAppContactPanelSlots {
18
+ }
19
+ /**
20
+ * Props of the conversation pane that `WhatsAppInbox` forwards.
21
+ *
22
+ * The list-related props are declared by the inbox itself, so the conversation props it accepts
23
+ * are everything except the ones it owns.
24
+ */
25
+ export type WhatsAppInboxConversationProps = Omit<WhatsAppConversationOwnProps, 'conversation' | 'conversationId' | 'withBack' | 'withContactToggle' | 'contactPanelOpened' | 'labels' | 'classNames' | 'styles' | 'vars' | 'unstyled'>;
26
+ export interface WhatsAppInboxOwnProps extends StylesApiProps<WhatsAppInboxFactory>, WhatsAppInboxConversationProps, MessageRenderers {
27
+ /** Conversations shown in the sidebar. */
28
+ conversations?: WhatsAppConversationSummary[];
29
+ /** Controlled id of the selected conversation. */
30
+ selectedConversationId?: string | null;
31
+ /** Uncontrolled initial selection. */
32
+ defaultSelectedConversationId?: string | null;
33
+ /**
34
+ * The opened conversation, with its capabilities. Falls back to the matching entry of
35
+ * `conversations`, which is enough when the summary already carries everything.
36
+ */
37
+ conversation?: WhatsAppConversationData;
38
+ /** Controlled filter state. */
39
+ filters?: WhatsAppInboxFilters;
40
+ /** Uncontrolled initial filter state. */
41
+ defaultFilters?: WhatsAppInboxFilters;
42
+ /** Which filter controls the sidebar renders. */
43
+ filtersConfig?: WhatsAppInboxFiltersConfig;
44
+ /** Whether the initial conversation list load is in flight. */
45
+ conversationsLoading?: boolean;
46
+ /** Failure of the last conversation list load. */
47
+ conversationsError?: string | null;
48
+ /** Cursor state of the conversation list pagination. */
49
+ conversationsPagination?: WhatsAppPaginationState;
50
+ /**
51
+ * Display order of the supplied conversations.
52
+ * @default 'none'
53
+ */
54
+ order?: WhatsAppConversationOrder;
55
+ /**
56
+ * Pane arrangement.
57
+ * @default 'auto'
58
+ */
59
+ layout?: WhatsAppInboxLayout;
60
+ /**
61
+ * Width below which `layout: 'auto'` collapses to a single pane, in pixels.
62
+ * @default 720
63
+ */
64
+ narrowBreakpoint?: number;
65
+ /** Width of the conversation list pane, any valid CSS length. */
66
+ sidebarWidth?: string | number;
67
+ /** Width of the contact panel, any valid CSS length. */
68
+ contactPanelWidth?: string | number;
69
+ /**
70
+ * Renders the contact panel and the header control that toggles it.
71
+ * @default false
72
+ */
73
+ withContactPanel?: boolean;
74
+ /** Controlled opened state of the contact panel. */
75
+ contactPanelOpened?: boolean;
76
+ /** Uncontrolled initial opened state of the contact panel. */
77
+ defaultContactPanelOpened?: boolean;
78
+ /** Props passed to the underlying `WhatsAppConversationList`. */
79
+ conversationListProps?: ForwardedProps<WhatsAppConversationListProps>;
80
+ /** Props passed to the underlying `WhatsAppContactPanel`. */
81
+ contactPanelProps?: ForwardedProps<WhatsAppContactPanelProps>;
82
+ /**
83
+ * Renders the control that starts a conversation with a number that is not in the list yet.
84
+ * @default false
85
+ */
86
+ withNewConversation?: boolean;
87
+ /** Controlled opened state of the new-conversation form. */
88
+ newConversationOpened?: boolean;
89
+ /** Whether the consumer is still creating or looking up the conversation. */
90
+ newConversationCreating?: boolean;
91
+ /** Failure of the last new-conversation attempt, rendered inside the form. */
92
+ newConversationError?: string | null;
93
+ /** Validates the phone number before `newConversation` is emitted. */
94
+ validatePhoneNumber?: (phoneNumber: string) => string | null;
95
+ /** Label overrides. */
96
+ labels?: WhatsAppInboxLabelsOverride;
97
+ }
98
+ export interface WhatsAppInboxProps extends Omit<BoxProps, keyof WhatsAppInboxOwnProps>, WhatsAppInboxOwnProps {
99
+ }
100
+ export interface WhatsAppInboxEmits extends WhatsAppConversationEmits {
101
+ /** Emitted when the selected conversation changes. */
102
+ 'update:selectedConversationId': [conversationId: string | null];
103
+ /** Emitted when any filter changes. */
104
+ 'update:filters': [filters: WhatsAppInboxFilters];
105
+ /** Emitted when the contact panel is opened or closed. */
106
+ 'update:contactPanelOpened': [opened: boolean];
107
+ /** Emitted when a conversation is picked, with the full record. */
108
+ selectConversation: [conversation: WhatsAppConversationSummary];
109
+ /** Emitted when the next page of conversations should be fetched. */
110
+ loadMoreConversations: [payload: WhatsAppLoadMorePayload];
111
+ /** Emitted when the retry action of the conversation list error state is used. */
112
+ retryLoadConversations: [];
113
+ /** Emitted when the opened state of the new-conversation form changes. */
114
+ 'update:newConversationOpened': [opened: boolean];
115
+ /**
116
+ * Emitted when the user submits a phone number to start a conversation with. Create or look up
117
+ * the conversation, then select it by updating `selectedConversationId`.
118
+ */
119
+ newConversation: [payload: WhatsAppNewConversationPayload];
120
+ }
121
+ export interface WhatsAppInboxExposed {
122
+ /** Moves focus to the composer input. */
123
+ focusComposer: () => void;
124
+ /** Scrolls the history to the newest message. */
125
+ scrollToBottom: (behavior?: ScrollBehavior) => void;
126
+ }
127
+ export type WhatsAppInboxFactory = Factory<{
128
+ props: Omit<WhatsAppInboxProps, 'rootRef'>;
129
+ slots: WhatsAppInboxSlots;
130
+ emits: WhatsAppInboxEmits;
131
+ exposed: WhatsAppInboxExposed;
132
+ ref: HTMLDivElement;
133
+ element: 'div';
134
+ stylesNames: WhatsAppInboxStylesNames;
135
+ }>;
@@ -0,0 +1,84 @@
1
+ import type { WhatsAppAttachment, WhatsAppConversationSummary, WhatsAppMessageData } from '../../types';
2
+ import type { WhatsAppInboxOwnProps, WhatsAppInboxSlots } from './WhatsAppInbox.types';
3
+ declare const defaultProps: {
4
+ readonly layout: "auto";
5
+ readonly narrowBreakpoint: 720;
6
+ readonly order: "none";
7
+ readonly withContactPanel: false;
8
+ };
9
+ declare function toCssWidth(value: string | number | undefined): string | undefined;
10
+ declare const varsResolver: (theme: import("@mantine-vue/core").MantineTheme, props: any, ctx: Record<string, any>) => Record<string, Record<string, string | undefined>>;
11
+ export { defaultProps, toCssWidth, varsResolver };
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<WhatsAppInboxOwnProps, {
15
+ focusComposer: () => void;
16
+ scrollToBottom: (behavior?: ScrollBehavior) => void;
17
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
+ send: (payload: import("../..").WhatsAppOutgoingMessage) => any;
19
+ validationError: (message: string) => any;
20
+ newConversation: (payload: import("../..").WhatsAppNewConversationPayload) => any;
21
+ loadMoreConversations: (payload: import("../..").WhatsAppLoadMorePayload) => any;
22
+ loadOlderMessages: (payload: import("../..").WhatsAppLoadMorePayload) => any;
23
+ retrySend: () => any;
24
+ typing: (value: string) => any;
25
+ back: () => any;
26
+ "update:replyTo": (replyTo: import("../..").WhatsAppMessageReference | null) => any;
27
+ attachmentsAdd: (payload: import("../..").WhatsAppAttachmentsAddPayload) => any;
28
+ attachmentsReject: (rejected: import("../..").WhatsAppRejectedFile[]) => any;
29
+ attachmentRemove: (upload: import("../..").WhatsAppUpload) => any;
30
+ attachmentRetry: (upload: import("../..").WhatsAppUpload) => any;
31
+ attachmentCancel: (upload: import("../..").WhatsAppUpload) => any;
32
+ templatesRetryLoad: () => any;
33
+ toggleContactPanel: (opened: boolean) => any;
34
+ contactClick: (conversation: import("../..").WhatsAppConversationData) => any;
35
+ mediaDownload: (attachment: WhatsAppAttachment, message: WhatsAppMessageData) => any;
36
+ mediaPreview: (attachment: WhatsAppAttachment, message: WhatsAppMessageData) => any;
37
+ retryMessage: (message: WhatsAppMessageData) => any;
38
+ atBottomChange: (atBottom: boolean) => any;
39
+ "update:draft": (draft: string) => any;
40
+ "update:drafts": (drafts: Record<string, string>) => any;
41
+ retryLoadMessages: () => any;
42
+ "update:selectedConversationId": (conversationId: string | null) => any;
43
+ "update:filters": (filters: import("../..").WhatsAppInboxFilters) => any;
44
+ "update:newConversationOpened": (opened: boolean) => any;
45
+ "update:contactPanelOpened": (opened: boolean) => any;
46
+ selectConversation: (conversation: WhatsAppConversationSummary) => any;
47
+ retryLoadConversations: () => any;
48
+ }, string, import("vue").PublicProps, Readonly<WhatsAppInboxOwnProps> & Readonly<{
49
+ onSend?: ((payload: import("../..").WhatsAppOutgoingMessage) => any) | undefined;
50
+ onValidationError?: ((message: string) => any) | undefined;
51
+ onNewConversation?: ((payload: import("../..").WhatsAppNewConversationPayload) => any) | undefined;
52
+ onLoadMoreConversations?: ((payload: import("../..").WhatsAppLoadMorePayload) => any) | undefined;
53
+ onLoadOlderMessages?: ((payload: import("../..").WhatsAppLoadMorePayload) => any) | undefined;
54
+ onRetrySend?: (() => any) | undefined;
55
+ onTyping?: ((value: string) => any) | undefined;
56
+ onBack?: (() => any) | undefined;
57
+ "onUpdate:replyTo"?: ((replyTo: import("../..").WhatsAppMessageReference | null) => any) | undefined;
58
+ onAttachmentsAdd?: ((payload: import("../..").WhatsAppAttachmentsAddPayload) => any) | undefined;
59
+ onAttachmentsReject?: ((rejected: import("../..").WhatsAppRejectedFile[]) => any) | undefined;
60
+ onAttachmentRemove?: ((upload: import("../..").WhatsAppUpload) => any) | undefined;
61
+ onAttachmentRetry?: ((upload: import("../..").WhatsAppUpload) => any) | undefined;
62
+ onAttachmentCancel?: ((upload: import("../..").WhatsAppUpload) => any) | undefined;
63
+ onTemplatesRetryLoad?: (() => any) | undefined;
64
+ onToggleContactPanel?: ((opened: boolean) => any) | undefined;
65
+ onContactClick?: ((conversation: import("../..").WhatsAppConversationData) => any) | undefined;
66
+ onMediaDownload?: ((attachment: WhatsAppAttachment, message: WhatsAppMessageData) => any) | undefined;
67
+ onMediaPreview?: ((attachment: WhatsAppAttachment, message: WhatsAppMessageData) => any) | undefined;
68
+ onRetryMessage?: ((message: WhatsAppMessageData) => any) | undefined;
69
+ onAtBottomChange?: ((atBottom: boolean) => any) | undefined;
70
+ "onUpdate:draft"?: ((draft: string) => any) | undefined;
71
+ "onUpdate:drafts"?: ((drafts: Record<string, string>) => any) | undefined;
72
+ onRetryLoadMessages?: (() => any) | undefined;
73
+ "onUpdate:selectedConversationId"?: ((conversationId: string | null) => any) | undefined;
74
+ "onUpdate:filters"?: ((filters: import("../..").WhatsAppInboxFilters) => any) | undefined;
75
+ "onUpdate:newConversationOpened"?: ((opened: boolean) => any) | undefined;
76
+ "onUpdate:contactPanelOpened"?: ((opened: boolean) => any) | undefined;
77
+ onSelectConversation?: ((conversation: WhatsAppConversationSummary) => any) | undefined;
78
+ onRetryLoadConversations?: (() => any) | undefined;
79
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, WhatsAppInboxSlots>;
80
+ type __VLS_WithSlots<T, S> = T & {
81
+ new (): {
82
+ $slots: S;
83
+ };
84
+ };
@@ -0,0 +1 @@
1
+ export * from './WhatsAppInbox';
@@ -0,0 +1,9 @@
1
+ export declare const WhatsAppInboxDrawer: import("@mantine-vue/core").MantineComponent<{
2
+ props: Omit<import("./WhatsAppInboxDrawer.types").WhatsAppInboxDrawerProps, "rootRef">;
3
+ slots: import("../../component-props.js").WhatsAppConversationSlots;
4
+ emits: import("./WhatsAppInboxDrawer.types").WhatsAppInboxDrawerEmits;
5
+ ref: HTMLDivElement;
6
+ element: "div";
7
+ stylesNames: import("./WhatsAppInboxDrawer.types").WhatsAppInboxDrawerStylesNames;
8
+ }>;
9
+ export type { WhatsAppInboxDrawerConversationProps, WhatsAppInboxDrawerEmits, WhatsAppInboxDrawerFactory, WhatsAppInboxDrawerOwnProps, WhatsAppInboxDrawerProps, WhatsAppInboxDrawerStylesNames, } from './WhatsAppInboxDrawer.types';
@@ -0,0 +1,52 @@
1
+ import type { BoxProps, DrawerProps, Factory } from '@mantine-vue/core';
2
+ import type { StylesApiProps } from '@mantine-vue/core/styles-api';
3
+ import type { ForwardedProps, WhatsAppConversationSlots } from '../../component-props';
4
+ import type { WhatsAppInboxLabelsOverride } from '../../labels';
5
+ import type { WhatsAppConversationEmits, WhatsAppConversationOwnProps, WhatsAppConversationStylesNames } from '../WhatsAppConversation';
6
+ export type WhatsAppInboxDrawerStylesNames = 'drawerRoot' | 'drawerContent' | 'drawerBody' | WhatsAppConversationStylesNames;
7
+ /** Conversation props the drawer forwards. */
8
+ export type WhatsAppInboxDrawerConversationProps = Omit<WhatsAppConversationOwnProps, 'classNames' | 'styles' | 'vars' | 'unstyled' | 'labels'>;
9
+ export interface WhatsAppInboxDrawerOwnProps extends StylesApiProps<WhatsAppInboxDrawerFactory>, WhatsAppInboxDrawerConversationProps {
10
+ /** Whether the drawer is open. Bind it with `v-model:opened`. */
11
+ opened?: boolean;
12
+ /**
13
+ * Side the drawer slides in from.
14
+ * @default 'right'
15
+ */
16
+ position?: DrawerProps['position'];
17
+ /**
18
+ * Width of the drawer.
19
+ * @default 'md'
20
+ */
21
+ size?: DrawerProps['size'];
22
+ /**
23
+ * Title of the drawer. Falls back to the contact name, so the drawer always has an accessible
24
+ * name even when nothing is passed.
25
+ */
26
+ title?: string;
27
+ /**
28
+ * Moves focus to the composer when the drawer opens.
29
+ * @default true
30
+ */
31
+ focusComposerOnOpen?: boolean;
32
+ /** Props passed to the underlying `Drawer`. */
33
+ drawerProps?: ForwardedProps<DrawerProps>;
34
+ /** Label overrides. */
35
+ labels?: WhatsAppInboxLabelsOverride;
36
+ }
37
+ export interface WhatsAppInboxDrawerProps extends Omit<BoxProps, keyof WhatsAppInboxDrawerOwnProps>, WhatsAppInboxDrawerOwnProps {
38
+ }
39
+ export interface WhatsAppInboxDrawerEmits extends WhatsAppConversationEmits {
40
+ /** Emitted when the opened state changes. */
41
+ 'update:opened': [opened: boolean];
42
+ /** Emitted when the drawer is dismissed. */
43
+ close: [];
44
+ }
45
+ export type WhatsAppInboxDrawerFactory = Factory<{
46
+ props: Omit<WhatsAppInboxDrawerProps, 'rootRef'>;
47
+ slots: WhatsAppConversationSlots;
48
+ emits: WhatsAppInboxDrawerEmits;
49
+ ref: HTMLDivElement;
50
+ element: 'div';
51
+ stylesNames: WhatsAppInboxDrawerStylesNames;
52
+ }>;
@@ -0,0 +1,24 @@
1
+ import type { WhatsAppConversationSlots } from '../../component-props';
2
+ import type { WhatsAppInboxDrawerOwnProps } from './WhatsAppInboxDrawer.types';
3
+ declare const defaultProps: {
4
+ readonly opened: false;
5
+ readonly position: "right";
6
+ readonly size: "md";
7
+ readonly focusComposerOnOpen: true;
8
+ };
9
+ declare const DRAWER_OWN_PROPS: Set<string>;
10
+ export { defaultProps, DRAWER_OWN_PROPS };
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<WhatsAppInboxDrawerOwnProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ close: () => any;
15
+ "update:opened": (opened: boolean) => any;
16
+ }, string, import("vue").PublicProps, Readonly<WhatsAppInboxDrawerOwnProps> & Readonly<{
17
+ onClose?: (() => any) | undefined;
18
+ "onUpdate:opened"?: ((opened: boolean) => any) | undefined;
19
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, WhatsAppConversationSlots>;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1 @@
1
+ export * from './WhatsAppInboxDrawer';
@@ -0,0 +1,9 @@
1
+ export declare const WhatsAppInboxModal: import("@mantine-vue/core").MantineComponent<{
2
+ props: Omit<import("./WhatsAppInboxModal.types").WhatsAppInboxModalProps, "rootRef">;
3
+ slots: import("../../component-props.js").WhatsAppConversationSlots;
4
+ emits: import("./WhatsAppInboxModal.types").WhatsAppInboxModalEmits;
5
+ ref: HTMLDivElement;
6
+ element: "div";
7
+ stylesNames: import("./WhatsAppInboxModal.types").WhatsAppInboxModalStylesNames;
8
+ }>;
9
+ export type { WhatsAppInboxModalConversationProps, WhatsAppInboxModalEmits, WhatsAppInboxModalFactory, WhatsAppInboxModalOwnProps, WhatsAppInboxModalProps, WhatsAppInboxModalStylesNames, } from './WhatsAppInboxModal.types';
@@ -0,0 +1,52 @@
1
+ import type { BoxProps, Factory, ModalProps } from '@mantine-vue/core';
2
+ import type { StylesApiProps } from '@mantine-vue/core/styles-api';
3
+ import type { ForwardedProps, WhatsAppConversationSlots } from '../../component-props';
4
+ import type { WhatsAppInboxLabelsOverride } from '../../labels';
5
+ import type { WhatsAppConversationEmits, WhatsAppConversationOwnProps, WhatsAppConversationStylesNames } from '../WhatsAppConversation';
6
+ export type WhatsAppInboxModalStylesNames = 'modalRoot' | 'modalContent' | 'modalBody' | WhatsAppConversationStylesNames;
7
+ /**
8
+ * Conversation props the modal forwards.
9
+ *
10
+ * The Styles API members are re-declared by the modal itself so its own `classNames` keys cover
11
+ * both the dialog and the conversation inside it.
12
+ */
13
+ export type WhatsAppInboxModalConversationProps = Omit<WhatsAppConversationOwnProps, 'classNames' | 'styles' | 'vars' | 'unstyled' | 'labels' | 'withBack'>;
14
+ export interface WhatsAppInboxModalOwnProps extends StylesApiProps<WhatsAppInboxModalFactory>, WhatsAppInboxModalConversationProps {
15
+ /** Whether the modal is open. Bind it with `v-model:opened`. */
16
+ opened?: boolean;
17
+ /**
18
+ * Title of the dialog. Falls back to the contact name, so the modal always has an accessible
19
+ * name even when nothing is passed.
20
+ */
21
+ title?: string;
22
+ /**
23
+ * Height of the conversation inside the dialog, any valid CSS length.
24
+ * @default '70vh'
25
+ */
26
+ height?: string | number;
27
+ /**
28
+ * Moves focus to the composer when the modal opens.
29
+ * @default true
30
+ */
31
+ focusComposerOnOpen?: boolean;
32
+ /** Props passed to the underlying `Modal`. */
33
+ modalProps?: ForwardedProps<ModalProps>;
34
+ /** Label overrides. */
35
+ labels?: WhatsAppInboxLabelsOverride;
36
+ }
37
+ export interface WhatsAppInboxModalProps extends Omit<BoxProps, keyof WhatsAppInboxModalOwnProps>, WhatsAppInboxModalOwnProps {
38
+ }
39
+ export interface WhatsAppInboxModalEmits extends WhatsAppConversationEmits {
40
+ /** Emitted when the opened state changes. */
41
+ 'update:opened': [opened: boolean];
42
+ /** Emitted when the modal is dismissed. */
43
+ close: [];
44
+ }
45
+ export type WhatsAppInboxModalFactory = Factory<{
46
+ props: Omit<WhatsAppInboxModalProps, 'rootRef'>;
47
+ slots: WhatsAppConversationSlots;
48
+ emits: WhatsAppInboxModalEmits;
49
+ ref: HTMLDivElement;
50
+ element: 'div';
51
+ stylesNames: WhatsAppInboxModalStylesNames;
52
+ }>;
@@ -0,0 +1,28 @@
1
+ import type { WhatsAppConversationSlots } from '../../component-props';
2
+ import type { WhatsAppInboxModalOwnProps } from './WhatsAppInboxModal.types';
3
+ declare const defaultProps: {
4
+ readonly opened: false;
5
+ readonly height: "70vh";
6
+ readonly focusComposerOnOpen: true;
7
+ };
8
+ /**
9
+ * Props the modal keeps for itself. Everything else is forwarded to the conversation, so the
10
+ * wrapper does not have to re-declare the whole conversation API every time it grows.
11
+ */
12
+ declare const MODAL_OWN_PROPS: Set<string>;
13
+ declare const varsResolver: (theme: import("@mantine-vue/core").MantineTheme, props: any, ctx: Record<string, any>) => Record<string, Record<string, string | undefined>>;
14
+ export { defaultProps, MODAL_OWN_PROPS, varsResolver };
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<WhatsAppInboxModalOwnProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
+ close: () => any;
19
+ "update:opened": (opened: boolean) => any;
20
+ }, string, import("vue").PublicProps, Readonly<WhatsAppInboxModalOwnProps> & Readonly<{
21
+ onClose?: (() => any) | undefined;
22
+ "onUpdate:opened"?: ((opened: boolean) => any) | undefined;
23
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, WhatsAppConversationSlots>;
24
+ type __VLS_WithSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
@@ -0,0 +1 @@
1
+ export * from './WhatsAppInboxModal';
@@ -0,0 +1,16 @@
1
+ export declare const WhatsAppInboxProvider: {
2
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("./WhatsAppInboxProvider.types").WhatsAppInboxProviderProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
3
+ P: {};
4
+ B: {};
5
+ D: {};
6
+ C: {};
7
+ M: {};
8
+ Defaults: {};
9
+ }, Readonly<import("./WhatsAppInboxProvider.types").WhatsAppInboxProviderProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
10
+ __isFragment?: never;
11
+ __isTeleport?: never;
12
+ __isSuspense?: never;
13
+ } & import("vue").ComponentOptionsBase<Readonly<import("./WhatsAppInboxProvider.types").WhatsAppInboxProviderProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
14
+ $slots: import("./WhatsAppInboxProvider.types").WhatsAppInboxProviderSlots;
15
+ });
16
+ export type { WhatsAppInboxProviderProps, WhatsAppInboxProviderSlots, } from './WhatsAppInboxProvider.types';
@@ -0,0 +1,16 @@
1
+ import type { VNodeChild } from 'vue';
2
+ import type { WhatsAppInboxFormatters } from '../../WhatsAppInbox.context';
3
+ import type { WhatsAppInboxLabelsOverride } from '../../labels';
4
+ /** Props accepted by `WhatsAppInboxProvider`. */
5
+ export interface WhatsAppInboxProviderProps {
6
+ /** Overrides for the built-in labels, applied to every component below the provider. */
7
+ labels?: WhatsAppInboxLabelsOverride;
8
+ /** BCP 47 locale used by the built-in date and time formatters. */
9
+ locale?: string;
10
+ /** Replaces individual formatters, for example to render times in the contact's timezone. */
11
+ formatters?: Partial<WhatsAppInboxFormatters>;
12
+ }
13
+ export interface WhatsAppInboxProviderSlots {
14
+ /** Subtree the configuration applies to. */
15
+ default?: () => VNodeChild;
16
+ }
@@ -0,0 +1,11 @@
1
+ import type { WhatsAppInboxProviderProps, WhatsAppInboxProviderSlots } from './WhatsAppInboxProvider.types';
2
+ type __VLS_Slots = WhatsAppInboxProviderSlots;
3
+ declare const __VLS_base: import("vue").DefineComponent<WhatsAppInboxProviderProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<WhatsAppInboxProviderProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
4
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
7
+ type __VLS_WithSlots<T, S> = T & {
8
+ new (): {
9
+ $slots: S;
10
+ };
11
+ };
@@ -0,0 +1 @@
1
+ export * from './WhatsAppInboxProvider';
@@ -0,0 +1,8 @@
1
+ export declare const WhatsAppInteractiveMessageEditor: import("@mantine-vue/core").MantineComponent<{
2
+ props: Omit<import("./WhatsAppInteractiveMessageEditor.types").WhatsAppInteractiveMessageEditorProps, "rootRef">;
3
+ emits: import("./WhatsAppInteractiveMessageEditor.types").WhatsAppInteractiveMessageEditorEmits;
4
+ ref: HTMLDivElement;
5
+ element: "div";
6
+ stylesNames: import("./WhatsAppInteractiveMessageEditor.types").WhatsAppInteractiveMessageEditorStylesNames;
7
+ }>;
8
+ export type { WhatsAppInteractiveMessageEditorEmits, WhatsAppInteractiveMessageEditorFactory, WhatsAppInteractiveMessageEditorOwnProps, WhatsAppInteractiveMessageEditorProps, WhatsAppInteractiveMessageEditorStylesNames, } from './WhatsAppInteractiveMessageEditor.types';