@capillarytech/creatives-library 8.0.317 → 8.0.319

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 (38) hide show
  1. package/constants/unified.js +1 -0
  2. package/package.json +1 -1
  3. package/services/api.js +6 -0
  4. package/services/tests/api.test.js +7 -0
  5. package/utils/common.js +6 -1
  6. package/v2Containers/CommunicationFlow/CommunicationFlow.js +291 -0
  7. package/v2Containers/CommunicationFlow/CommunicationFlow.scss +25 -0
  8. package/v2Containers/CommunicationFlow/Tests/CommunicationFlow.test.js +255 -0
  9. package/v2Containers/CommunicationFlow/constants.js +200 -0
  10. package/v2Containers/CommunicationFlow/index.js +102 -0
  11. package/v2Containers/CommunicationFlow/messages.js +346 -0
  12. package/v2Containers/CommunicationFlow/steps/ChannelSelectionStep/ChannelSelectionStep.js +522 -0
  13. package/v2Containers/CommunicationFlow/steps/ChannelSelectionStep/ChannelSelectionStep.scss +170 -0
  14. package/v2Containers/CommunicationFlow/steps/ChannelSelectionStep/Tests/ChannelSelectionStep.test.js +796 -0
  15. package/v2Containers/CommunicationFlow/steps/ChannelSelectionStep/index.js +5 -0
  16. package/v2Containers/CommunicationFlow/steps/CommunicationStrategyStep/CommunicationStrategyStep.js +95 -0
  17. package/v2Containers/CommunicationFlow/steps/CommunicationStrategyStep/Tests/CommunicationStrategyStep.test.js +133 -0
  18. package/v2Containers/CommunicationFlow/steps/CommunicationStrategyStep/index.js +5 -0
  19. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/DeliverySettingsSection.js +289 -0
  20. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/DeliverySettingsSection.scss +70 -0
  21. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/SenderDetails.js +319 -0
  22. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/SenderDetails.scss +69 -0
  23. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/Tests/DeliverySettingsSection.test.js +616 -0
  24. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/Tests/SenderDetails.test.js +577 -0
  25. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/Tests/deliverySettingsConfig.test.js +1111 -0
  26. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/deliverySettingsConfig.js +696 -0
  27. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/index.js +7 -0
  28. package/v2Containers/CommunicationFlow/steps/DynamicControlsStep/DynamicControlsStep.js +102 -0
  29. package/v2Containers/CommunicationFlow/steps/DynamicControlsStep/DynamicControlsStep.scss +36 -0
  30. package/v2Containers/CommunicationFlow/steps/DynamicControlsStep/Tests/DynamicControlsStep.test.js +91 -0
  31. package/v2Containers/CommunicationFlow/steps/DynamicControlsStep/index.js +5 -0
  32. package/v2Containers/CommunicationFlow/steps/MessageTypeStep/MessageTypeStep.js +86 -0
  33. package/v2Containers/CommunicationFlow/steps/MessageTypeStep/Tests/MessageTypeStep.test.js +100 -0
  34. package/v2Containers/CommunicationFlow/steps/MessageTypeStep/index.js +5 -0
  35. package/v2Containers/CommunicationFlow/utils/getEnabledSteps.js +30 -0
  36. package/v2Containers/CreativesContainer/constants.js +3 -0
  37. package/v2Containers/CreativesContainer/index.js +1 -1
  38. package/v2Containers/Rcs/index.js +4 -2
@@ -0,0 +1,200 @@
1
+ /**
2
+ * CommunicationFlow Constants
3
+ */
4
+ import React from 'react';
5
+ import { FormattedMessage } from 'react-intl';
6
+ import messages from './messages';
7
+
8
+ // Step identifiers
9
+ export const STEPS = {
10
+ MESSAGE_TYPE: 'messageType',
11
+ COMMUNICATION_STRATEGY: 'communicationStrategy',
12
+ CHANNEL_SELECTION: 'channelSelection',
13
+ INCENTIVES: 'incentives',
14
+ DELIVERY_SETTINGS: 'deliverySettings',
15
+ DYNAMIC_CONTROLS: 'dynamicControls',
16
+ };
17
+
18
+ // Message Type values
19
+ export const MESSAGE_TYPES_OPTIONS = [
20
+ { value: 'promotional', label: <FormattedMessage {...messages.promotional} />, disabled: false },
21
+ { value: 'transactional', label: <FormattedMessage {...messages.transactional} />, disabled: false },
22
+ ];
23
+
24
+ // Communication Strategy values
25
+ export const COMMUNICATION_STRATEGIES_OPTIONS = [
26
+ {
27
+ value: 'SINGLE_TEMPLATE', label: <FormattedMessage {...messages.singleTemplate} />, disabled: false, isMultiChannel: false,
28
+ },
29
+ {
30
+ value: 'CHANNEL_PRIORITY', label: <FormattedMessage {...messages.channelPriority} />, disabled: false, isMultiChannel: true,
31
+ },
32
+ {
33
+ value: 'AB_TEST', label: <FormattedMessage {...messages.abTest} />, disabled: false, isMultiChannel: true,
34
+ },
35
+ ];
36
+
37
+ export const CHANNEL_PRIORITY = 'CHANNEL_PRIORITY';
38
+ export const AB_TEST = 'AB_TEST';
39
+ export const SINGLE_TEMPLATE = 'SINGLE_TEMPLATE';
40
+
41
+ // Channel config - single source of truth for CreativesContainer and TemplatesV2
42
+ // paneKey: TemplatesV2 defaultPanes object key (for channelsToHide)
43
+ // channelProp: CreativesContainer channel prop (must match pane.key for tab to be active)
44
+ export const CHANNELS = [
45
+ {
46
+ value: 'SMS',
47
+ label: <FormattedMessage {...messages.sms} />,
48
+ iconType: 'sms',
49
+ isActive: true,
50
+ paneKey: 'sms',
51
+ channelProp: 'sms',
52
+ },
53
+ {
54
+ value: 'EMAIL',
55
+ label: <FormattedMessage {...messages.email} />,
56
+ iconType: 'email',
57
+ isActive: true,
58
+ paneKey: 'email',
59
+ channelProp: 'email',
60
+ },
61
+ {
62
+ value: 'MOBILEPUSH',
63
+ label: <FormattedMessage {...messages.mobilePush} />,
64
+ iconType: 'mpush',
65
+ isActive: true,
66
+ paneKey: 'mPush',
67
+ channelProp: 'mobilepush',
68
+ },
69
+ {
70
+ value: 'INAPP',
71
+ label: <FormattedMessage {...messages.inApp} />,
72
+ iconType: 'mpush',
73
+ isActive: true,
74
+ paneKey: 'inApp',
75
+ channelProp: 'inapp',
76
+ requiresEnableNewChannels: true,
77
+ },
78
+ {
79
+ value: 'WHATSAPP',
80
+ label: <FormattedMessage {...messages.whatsApp} />,
81
+ iconType: 'whatsapp',
82
+ isActive: true,
83
+ paneKey: 'whatsapp',
84
+ channelProp: 'whatsapp',
85
+ requiresEnableNewChannels: true,
86
+ },
87
+ {
88
+ value: 'WECHAT',
89
+ label: <FormattedMessage {...messages.weChat} />,
90
+ iconType: 'wechat',
91
+ isActive: false,
92
+ paneKey: 'weChat',
93
+ channelProp: 'wechat',
94
+ },
95
+ {
96
+ value: 'LINE',
97
+ label: <FormattedMessage {...messages.line} />,
98
+ iconType: 'line',
99
+ isActive: true,
100
+ paneKey: 'line',
101
+ channelProp: 'line',
102
+ },
103
+ {
104
+ value: 'VIBER',
105
+ label: <FormattedMessage {...messages.viber} />,
106
+ iconType: 'viber',
107
+ isActive: true,
108
+ paneKey: 'viber',
109
+ channelProp: 'viber',
110
+ },
111
+ {
112
+ value: 'FACEBOOK',
113
+ label: <FormattedMessage {...messages.facebook} />,
114
+ iconType: 'facebook',
115
+ isActive: true,
116
+ paneKey: 'facebook',
117
+ channelProp: 'facebook',
118
+ },
119
+ {
120
+ value: 'RCS',
121
+ label: <FormattedMessage {...messages.rcs} />,
122
+ iconType: 'rcs',
123
+ isActive: true,
124
+ paneKey: 'rcs',
125
+ channelProp: 'rcs',
126
+ requiresEnableNewChannels: true,
127
+ },
128
+ {
129
+ value: 'ZALO',
130
+ label: <FormattedMessage {...messages.zalo} />,
131
+ iconType: 'zalo',
132
+ isActive: true,
133
+ paneKey: 'zalo',
134
+ channelProp: 'zalo',
135
+ requiresEnableNewChannels: true,
136
+ },
137
+ {
138
+ value: 'WEBPUSH',
139
+ label: <FormattedMessage {...messages.webPush} />,
140
+ iconType: 'webpush',
141
+ isActive: true,
142
+ paneKey: 'webpush',
143
+ channelProp: 'webpush',
144
+ },
145
+ {
146
+ value: 'CALLTASK',
147
+ label: <FormattedMessage {...messages.callTask} />,
148
+ iconType: 'call',
149
+ isActive: true,
150
+ paneKey: 'callTask',
151
+ channelProp: 'call_task', // Must match TemplatesV2 pane.key
152
+ },
153
+ ];
154
+
155
+ // Delivery settings - channels that show/hide sender details
156
+ export const CHANNELS_WITHOUT_DELIVERY = ['MPUSH', 'MOBILEPUSH', 'INAPP', 'WEBPUSH'];
157
+ export const SENDER_ID_CHANNELS = ['SMS', 'EMAIL', 'VIBER', 'ZALO', 'LINE'];
158
+ export const SENDER_NUMBER_CHANNELS = ['WHATSAPP', 'RCS'];
159
+
160
+ // Dynamic Controls — default config for the Other Controls section.
161
+ // label and description are resolved via FormattedMessage so consumers
162
+ // get translated strings without needing to hardcode copy in their config.
163
+ export const DYNAMIC_CONTROLS_CONFIG = [
164
+ {
165
+ key: 'sendToControlCustomers',
166
+ label: <FormattedMessage {...messages.sendToControlCustomers} />,
167
+ },
168
+ {
169
+ key: 'sendToBrandPocs',
170
+ label: <FormattedMessage {...messages.sendToBrandPocs} />,
171
+ },
172
+ {
173
+ key: 'useTinyUrl',
174
+ label: <FormattedMessage {...messages.useTinyUrl} />,
175
+ },
176
+ {
177
+ key: 'overrideDailyLimit',
178
+ label: <FormattedMessage {...messages.overrideDailyLimit} />,
179
+ description: <FormattedMessage {...messages.overrideDailyLimitDesc} />,
180
+ },
181
+ ];
182
+
183
+ // Incentive types
184
+ export const INCENTIVE_TYPES = [
185
+ {
186
+ value: 'coupons', label: <FormattedMessage {...messages.coupons} />, isActive: true, disabled: false,
187
+ },
188
+ {
189
+ value: 'points', label: <FormattedMessage {...messages.points} />, isActive: true, disabled: false,
190
+ },
191
+ {
192
+ value: 'promotions', label: <FormattedMessage {...messages.promotions} />, isActive: true, disabled: false,
193
+ },
194
+ {
195
+ value: 'giftVouchers', label: <FormattedMessage {...messages.giftVouchers} />, isActive: false, disabled: false,
196
+ },
197
+ {
198
+ value: 'badges', label: <FormattedMessage {...messages.badges} />, isActive: false, disabled: false,
199
+ },
200
+ ];
@@ -0,0 +1,102 @@
1
+ /**
2
+ * CommunicationFlow - Public Entry Point
3
+ *
4
+ * Single entry for consumers. Wires config + callbacks and renders
5
+ * the CommunicationFlow orchestrator component.
6
+ *
7
+ */
8
+
9
+ import React from 'react';
10
+ import PropTypes from 'prop-types';
11
+ import CommunicationFlow from './CommunicationFlow';
12
+ import { hasSupportEngagementModule } from '../../utils/common';
13
+
14
+ const CommunicationFlowContainer = ({
15
+ config,
16
+ initialData,
17
+ onSave,
18
+ onCancel,
19
+ onChange,
20
+ ...otherProps
21
+ }) => {
22
+ if (!hasSupportEngagementModule()) {
23
+ return null;
24
+ }
25
+
26
+ return (
27
+ <CommunicationFlow
28
+ config={config}
29
+ initialData={initialData}
30
+ onSave={onSave}
31
+ onCancel={onCancel}
32
+ onChange={onChange}
33
+ {...otherProps}
34
+ />
35
+ );
36
+ };
37
+
38
+ CommunicationFlowContainer.propTypes = {
39
+ config: PropTypes.shape({
40
+ consumer: PropTypes.oneOf(['campaigns', 'loyalty', 'adiona']).isRequired,
41
+ channel: PropTypes.string, // optional if channel step is skipped
42
+ mode: PropTypes.oneOf(['create', 'edit', 'preview']).isRequired,
43
+ channelsToHide: PropTypes.arrayOf(PropTypes.string),
44
+ channelsToDisable: PropTypes.arrayOf(PropTypes.string),
45
+ features: PropTypes.shape({
46
+ messageTypeData: PropTypes.shape({
47
+ options: PropTypes.arrayOf(PropTypes.shape({
48
+ value: PropTypes.string.isRequired,
49
+ label: PropTypes.string.isRequired,
50
+ })),
51
+ defaultOption: PropTypes.shape({
52
+ value: PropTypes.string.isRequired,
53
+ label: PropTypes.string.isRequired,
54
+ }),
55
+ required: PropTypes.bool,
56
+ }),
57
+ communicationStrategyData: PropTypes.shape({
58
+ options: PropTypes.arrayOf(PropTypes.shape({
59
+ value: PropTypes.string.isRequired,
60
+ label: PropTypes.string.isRequired,
61
+ })),
62
+ defaultOption: PropTypes.shape({
63
+ value: PropTypes.string.isRequired,
64
+ label: PropTypes.string.isRequired,
65
+ }),
66
+ required: PropTypes.bool,
67
+ disabled: PropTypes.bool,
68
+ }),
69
+ contentTemplateData: PropTypes.shape({
70
+ required: PropTypes.bool,
71
+ channels: PropTypes.array,
72
+ channelsToHide: PropTypes.arrayOf(PropTypes.string),
73
+ channelsToDisable: PropTypes.arrayOf(PropTypes.string),
74
+ }),
75
+ incentivesData: PropTypes.shape({
76
+ required: PropTypes.bool,
77
+ types: PropTypes.arrayOf(PropTypes.shape({
78
+ value: PropTypes.string.isRequired,
79
+ label: PropTypes.string.isRequired,
80
+ isActive: PropTypes.bool,
81
+ })),
82
+ }),
83
+ deliverySettingsData: PropTypes.object,
84
+ dynamicControlsData: PropTypes.shape({
85
+ required: PropTypes.bool,
86
+ controls: PropTypes.array,
87
+ }),
88
+ }),
89
+ context: PropTypes.object, // ouId, campaignId, programId, etc.
90
+ }).isRequired,
91
+ initialData: PropTypes.object, // for edit/preview mode
92
+ onSave: PropTypes.func.isRequired, // (data) => void - called when user saves
93
+ onCancel: PropTypes.func.isRequired, // () => void - called when user cancels
94
+ onChange: PropTypes.func, // (data) => void - optional, called on data changes
95
+ };
96
+
97
+ CommunicationFlowContainer.defaultProps = {
98
+ initialData: null,
99
+ onChange: null,
100
+ };
101
+
102
+ export default CommunicationFlowContainer;
@@ -0,0 +1,346 @@
1
+ /**
2
+ * CommunicationFlow Messages (i18n)
3
+ */
4
+
5
+ const prefix = 'creatives.v2Containers.CommunicationFlow';
6
+
7
+ export default {
8
+ // Step titles
9
+ stepMessageType: {
10
+ id: `${prefix}.stepMessageType`,
11
+ defaultMessage: 'Message Type',
12
+ },
13
+ stepCommunicationStrategy: {
14
+ id: `${prefix}.stepCommunicationStrategy`,
15
+ defaultMessage: 'Communication Strategy',
16
+ },
17
+ stepChannelSelection: {
18
+ id: `${prefix}.stepChannelSelection`,
19
+ defaultMessage: 'Channel Selection',
20
+ },
21
+ stepIncentives: {
22
+ id: `${prefix}.stepIncentives`,
23
+ defaultMessage: 'Incentives',
24
+ },
25
+ stepDeliverySettings: {
26
+ id: `${prefix}.stepDeliverySettings`,
27
+ defaultMessage: 'Delivery Settings',
28
+ },
29
+ stepOtherSettings: {
30
+ id: `${prefix}.stepOtherSettings`,
31
+ defaultMessage: 'Other Settings',
32
+ },
33
+
34
+ // Validation messages
35
+ messageTypeRequired: {
36
+ id: `${prefix}.messageTypeRequired`,
37
+ defaultMessage: 'Message type is required',
38
+ },
39
+ communicationStrategyRequired: {
40
+ id: `${prefix}.communicationStrategyRequired`,
41
+ defaultMessage: 'Communication strategy is required',
42
+ },
43
+ channelSelectionRequired: {
44
+ id: `${prefix}.channelSelectionRequired`,
45
+ defaultMessage: 'Channel selection is required',
46
+ },
47
+
48
+ // Action buttons
49
+ next: {
50
+ id: `${prefix}.next`,
51
+ defaultMessage: 'Next',
52
+ },
53
+ back: {
54
+ id: `${prefix}.back`,
55
+ defaultMessage: 'Back',
56
+ },
57
+ cancel: {
58
+ id: `${prefix}.cancel`,
59
+ defaultMessage: 'Cancel',
60
+ },
61
+ save: {
62
+ id: `${prefix}.save`,
63
+ defaultMessage: 'Save',
64
+ },
65
+
66
+ // Slidebox header
67
+ addMessage: {
68
+ id: `${prefix}.addMessage`,
69
+ defaultMessage: 'Add message',
70
+ },
71
+
72
+ // Step prompts
73
+ messageTypeHeading: {
74
+ id: `${prefix}.messageTypeHeading`,
75
+ defaultMessage: 'Message type',
76
+ },
77
+ communicationStrategyHeading: {
78
+ id: `${prefix}.communicationStrategyHeading`,
79
+ defaultMessage: 'Communication strategy',
80
+ },
81
+ communicationStrategyPlaceholder: {
82
+ id: `${prefix}.communicationStrategyPlaceholder`,
83
+ defaultMessage: 'Select strategy',
84
+ },
85
+ promotional: {
86
+ id: `${prefix}.promotional`,
87
+ defaultMessage: 'Promotional',
88
+ },
89
+ transactional: {
90
+ id: `${prefix}.transactional`,
91
+ defaultMessage: 'Transactional',
92
+ },
93
+ singleTemplate: {
94
+ id: `${prefix}.singleTemplate`,
95
+ defaultMessage: 'Single template',
96
+ },
97
+ channelPriority: {
98
+ id: `${prefix}.channelPriority`,
99
+ defaultMessage: 'Channel priority',
100
+ },
101
+ abTest: {
102
+ id: `${prefix}.abTest`,
103
+ defaultMessage: 'A/B Test',
104
+ },
105
+ singleChannel: {
106
+ id: `${prefix}.singleChannel`,
107
+ defaultMessage: 'Single channel',
108
+ },
109
+ multipleChannel: {
110
+ id: `${prefix}.multipleChannel`,
111
+ defaultMessage: 'Multiple channel',
112
+ },
113
+ incentivesPrompt: {
114
+ id: `${prefix}.incentivesPrompt`,
115
+ defaultMessage: 'Incentives',
116
+ },
117
+ incentivesPlaceholder: {
118
+ id: `${prefix}.incentivesPlaceholder`,
119
+ defaultMessage: 'Select incentives',
120
+ },
121
+ deliverySettingsPrompt: {
122
+ id: `${prefix}.deliverySettingsPrompt`,
123
+ defaultMessage: 'Delivery settings',
124
+ },
125
+ deliverySettingsPlaceholder: {
126
+ id: `${prefix}.deliverySettingsPlaceholder`,
127
+ defaultMessage: 'Select delivery settings',
128
+ },
129
+ otherSettingsPrompt: {
130
+ id: `${prefix}.otherSettingsPrompt`,
131
+ defaultMessage: 'Other settings',
132
+ },
133
+ otherSettingsPlaceholder: {
134
+ id: `${prefix}.otherSettingsPlaceholder`,
135
+ defaultMessage: 'Select other settings',
136
+ },
137
+ addMessageContentAndIncentive: {
138
+ id: `${prefix}.addMessageContentAndIncentive`,
139
+ defaultMessage: 'Add message content and incentive',
140
+ },
141
+ contentTemplate: {
142
+ id: `${prefix}.contentTemplate`,
143
+ defaultMessage: 'Content template',
144
+ },
145
+ addedContent: {
146
+ id: `${prefix}.addedContent`,
147
+ defaultMessage: 'Added content',
148
+ },
149
+ addContentTemplate: {
150
+ id: `${prefix}.addContentTemplate`,
151
+ defaultMessage: 'Content template',
152
+ },
153
+ edit: {
154
+ id: `${prefix}.edit`,
155
+ defaultMessage: 'Edit',
156
+ },
157
+ delete: {
158
+ id: `${prefix}.delete`,
159
+ defaultMessage: 'Delete',
160
+ },
161
+ previewAndTest: {
162
+ id: `${prefix}.previewAndTest`,
163
+ defaultMessage: 'Preview and Test',
164
+ },
165
+ remove: {
166
+ id: `${prefix}.remove`,
167
+ defaultMessage: 'Remove',
168
+ },
169
+ senderDetails: {
170
+ id: `${prefix}.senderDetails`,
171
+ defaultMessage: 'Sender details',
172
+ },
173
+ saveChanges: {
174
+ id: `${prefix}.saveChanges`,
175
+ defaultMessage: 'Save changes',
176
+ },
177
+ senderIdLabel: {
178
+ id: `${prefix}.senderIdLabel`,
179
+ defaultMessage: 'Sender ID',
180
+ },
181
+ senderNumberLabel: {
182
+ id: `${prefix}.senderNumberLabel`,
183
+ defaultMessage: 'Sender number',
184
+ },
185
+ viberAccountLabel: {
186
+ id: `${prefix}.viberAccountLabel`,
187
+ defaultMessage: 'Viber account',
188
+ },
189
+ accountLabel: {
190
+ id: `${prefix}.accountLabel`,
191
+ defaultMessage: 'Account',
192
+ },
193
+ smsDomain: {
194
+ id: `${prefix}.smsDomain`,
195
+ defaultMessage: 'SMS Domain',
196
+ },
197
+ emailDomainLabel: {
198
+ id: `${prefix}.emailDomainLabel`,
199
+ defaultMessage: 'Email Domain',
200
+ },
201
+ emailSenderName: {
202
+ id: `${prefix}.emailSenderName`,
203
+ defaultMessage: 'Sender name',
204
+ },
205
+ emailReplyToId: {
206
+ id: `${prefix}.emailReplyToId`,
207
+ defaultMessage: 'Reply-to ID',
208
+ },
209
+ reset: {
210
+ id: `${prefix}.reset`,
211
+ defaultMessage: 'Reset',
212
+ },
213
+ select: {
214
+ id: `${prefix}.select`,
215
+ defaultMessage: 'Select',
216
+ },
217
+ addIncentive: {
218
+ id: `${prefix}.addIncentive`,
219
+ defaultMessage: 'Add incentive',
220
+ },
221
+ optional: {
222
+ id: `${prefix}.optional`,
223
+ defaultMessage: '(Optional)',
224
+ },
225
+ sms: {
226
+ id: `${prefix}.sms`,
227
+ defaultMessage: 'SMS',
228
+ },
229
+ email: {
230
+ id: `${prefix}.email`,
231
+ defaultMessage: 'Email',
232
+ },
233
+ mobilePush: {
234
+ id: `${prefix}.mobilePush`,
235
+ defaultMessage: 'Mobile push',
236
+ },
237
+ inApp: {
238
+ id: `${prefix}.inApp`,
239
+ defaultMessage: 'In-app',
240
+ },
241
+ whatsApp: {
242
+ id: `${prefix}.whatsApp`,
243
+ defaultMessage: 'WhatsApp',
244
+ },
245
+ weChat: {
246
+ id: `${prefix}.weChat`,
247
+ defaultMessage: 'WeChat',
248
+ },
249
+ line: {
250
+ id: `${prefix}.line`,
251
+ defaultMessage: 'Line',
252
+ },
253
+ viber: {
254
+ id: `${prefix}.viber`,
255
+ defaultMessage: 'Viber',
256
+ },
257
+ facebook: {
258
+ id: `${prefix}.facebook`,
259
+ defaultMessage: 'Facebook',
260
+ },
261
+ rcs: {
262
+ id: `${prefix}.rcs`,
263
+ defaultMessage: 'RCS',
264
+ },
265
+ zalo: {
266
+ id: `${prefix}.zalo`,
267
+ defaultMessage: 'Zalo',
268
+ },
269
+ callTask: {
270
+ id: `${prefix}.callTask`,
271
+ defaultMessage: 'Call task',
272
+ },
273
+ webPush: {
274
+ id: `${prefix}.webPush`,
275
+ defaultMessage: 'Web push',
276
+ },
277
+ incentives: {
278
+ id: `${prefix}.incentives`,
279
+ defaultMessage: 'Incentives',
280
+ },
281
+ coupons: {
282
+ id: `${prefix}.coupons`,
283
+ defaultMessage: 'Coupons',
284
+ },
285
+ points: {
286
+ id: `${prefix}.points`,
287
+ defaultMessage: 'Points',
288
+ },
289
+ promotions: {
290
+ id: `${prefix}.promotions`,
291
+ defaultMessage: 'Promotions',
292
+ },
293
+ giftVouchers: {
294
+ id: `${prefix}.giftVouchers`,
295
+ defaultMessage: 'Gift vouchers',
296
+ },
297
+ badges: {
298
+ id: `${prefix}.badges`,
299
+ defaultMessage: 'Badges',
300
+ },
301
+ dynamicControlsTitle: {
302
+ id: `${prefix}.dynamicControlsTitle`,
303
+ defaultMessage: 'Other controls',
304
+ },
305
+ whatsappBusinessAccount: {
306
+ id: `${prefix}.whatsappBusinessAccount`,
307
+ defaultMessage: 'WhatsApp Business account',
308
+ },
309
+ whatsappAccountTooltip: {
310
+ id: `${prefix}.whatsappAccountTooltip`,
311
+ defaultMessage: 'Message template selected belongs to this account',
312
+ },
313
+ rcsAccountLabel: {
314
+ id: `${prefix}.rcsAccountLabel`,
315
+ defaultMessage: 'RCS account',
316
+ },
317
+ // Dynamic Controls toggle labels and descriptions
318
+ sendToControlCustomers: {
319
+ id: `${prefix}.sendToControlCustomers`,
320
+ defaultMessage: 'Send to control customers',
321
+ },
322
+ sendToBrandPocs: {
323
+ id: `${prefix}.sendToBrandPocs`,
324
+ defaultMessage: 'Send to brand POCs',
325
+ },
326
+ useTinyUrl: {
327
+ id: `${prefix}.useTinyUrl`,
328
+ defaultMessage: 'Use tiny URL',
329
+ },
330
+ overrideDailyLimit: {
331
+ id: `${prefix}.overrideDailyLimit`,
332
+ defaultMessage: 'Override daily communication limit',
333
+ },
334
+ overrideDailyLimitDesc: {
335
+ id: `${prefix}.overrideDailyLimitDesc`,
336
+ defaultMessage: "Customers will still receive this message even if they've already reached their daily message limit",
337
+ },
338
+ domainGatewayError: {
339
+ id: `${prefix}.domainGatewayError`,
340
+ defaultMessage: 'Domain gateway id is not found for the selected channel. Please contact the gateway team to register them with Capillary.',
341
+ },
342
+ senderNotConfiguredError: {
343
+ id: `${prefix}.senderNotConfiguredError`,
344
+ defaultMessage: 'Selected domain gateway id is not correct. Please change the domain id or contact the gateway team to register them with Capillary.',
345
+ },
346
+ };