@capillarytech/creatives-library 8.0.329 → 8.0.330

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 (122) hide show
  1. package/constants/unified.js +0 -14
  2. package/package.json +1 -1
  3. package/services/api.js +0 -17
  4. package/services/tests/api.test.js +0 -85
  5. package/utils/commonUtils.js +0 -10
  6. package/utils/tests/commonUtil.test.js +0 -169
  7. package/v2Components/CapTagList/index.js +0 -10
  8. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +49 -70
  9. package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
  10. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -207
  11. package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
  12. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +10 -85
  13. package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
  14. package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -79
  15. package/v2Components/CommonTestAndPreview/SendTestMessage.js +53 -87
  16. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +1 -20
  17. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +4 -133
  18. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +34 -145
  19. package/v2Components/CommonTestAndPreview/actions.js +0 -10
  20. package/v2Components/CommonTestAndPreview/constants.js +1 -53
  21. package/v2Components/CommonTestAndPreview/index.js +168 -1006
  22. package/v2Components/CommonTestAndPreview/messages.js +3 -147
  23. package/v2Components/CommonTestAndPreview/reducer.js +0 -10
  24. package/v2Components/CommonTestAndPreview/sagas.js +6 -15
  25. package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +286 -328
  26. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
  27. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
  28. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
  29. package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +24 -65
  30. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
  31. package/v2Components/CommonTestAndPreview/tests/constants.test.js +1 -31
  32. package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -168
  33. package/v2Components/CommonTestAndPreview/tests/reducer.test.js +0 -71
  34. package/v2Components/CommonTestAndPreview/tests/sagas.test.js +2 -2
  35. package/v2Components/CommonTestAndPreview/tests/selectors.test.js +0 -17
  36. package/v2Components/FormBuilder/index.js +1 -7
  37. package/v2Components/TestAndPreviewSlidebox/index.js +1 -8
  38. package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
  39. package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
  40. package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -36
  41. package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -10
  42. package/v2Containers/CreativesContainer/SlideBoxHeader.js +4 -29
  43. package/v2Containers/CreativesContainer/constants.js +0 -9
  44. package/v2Containers/CreativesContainer/index.js +93 -286
  45. package/v2Containers/CreativesContainer/index.scss +1 -51
  46. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -78
  47. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
  48. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
  49. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -357
  50. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +10 -20
  51. package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
  52. package/v2Containers/Rcs/constants.js +1 -34
  53. package/v2Containers/Rcs/index.js +884 -999
  54. package/v2Containers/Rcs/index.scss +6 -85
  55. package/v2Containers/Rcs/messages.js +1 -10
  56. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +2453 -41456
  57. package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +5 -0
  58. package/v2Containers/Rcs/tests/index.test.js +38 -41
  59. package/v2Containers/Rcs/tests/mockData.js +0 -38
  60. package/v2Containers/Rcs/tests/utils.test.js +1 -379
  61. package/v2Containers/Rcs/utils.js +10 -358
  62. package/v2Containers/Sms/Create/index.js +38 -100
  63. package/v2Containers/SmsTrai/Create/index.js +4 -9
  64. package/v2Containers/SmsTrai/Edit/constants.js +0 -2
  65. package/v2Containers/SmsTrai/Edit/index.js +128 -609
  66. package/v2Containers/SmsTrai/Edit/messages.js +4 -9
  67. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2600 -4586
  68. package/v2Containers/SmsWrapper/index.js +8 -37
  69. package/v2Containers/TagList/index.js +0 -6
  70. package/v2Containers/Templates/_templates.scss +2 -63
  71. package/v2Containers/Templates/actions.js +0 -11
  72. package/v2Containers/Templates/constants.js +0 -2
  73. package/v2Containers/Templates/index.js +40 -90
  74. package/v2Containers/Templates/sagas.js +12 -57
  75. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1079 -1043
  76. package/v2Containers/Templates/tests/sagas.test.js +123 -193
  77. package/v2Containers/TemplatesV2/TemplatesV2.style.js +1 -72
  78. package/v2Containers/TemplatesV2/index.js +23 -86
  79. package/v2Containers/Whatsapp/index.js +20 -3
  80. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +4872 -5790
  81. package/utils/templateVarUtils.js +0 -172
  82. package/utils/tests/templateVarUtils.test.js +0 -160
  83. package/v2Components/CommonTestAndPreview/AddTestCustomer.js +0 -42
  84. package/v2Components/CommonTestAndPreview/CustomerCreationModal.js +0 -155
  85. package/v2Components/CommonTestAndPreview/ExistingCustomerModal.js +0 -93
  86. package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
  87. package/v2Components/CommonTestAndPreview/tests/AddTestCustomer.test.js +0 -66
  88. package/v2Components/CommonTestAndPreview/tests/CommonTestAndPreview.addTestCustomer.test.js +0 -648
  89. package/v2Components/CommonTestAndPreview/tests/CustomerCreationModal.test.js +0 -174
  90. package/v2Components/CommonTestAndPreview/tests/ExistingCustomerModal.test.js +0 -114
  91. package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
  92. package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -87
  93. package/v2Components/SmsFallback/constants.js +0 -73
  94. package/v2Components/SmsFallback/index.js +0 -955
  95. package/v2Components/SmsFallback/index.scss +0 -265
  96. package/v2Components/SmsFallback/messages.js +0 -78
  97. package/v2Components/SmsFallback/smsFallbackUtils.js +0 -107
  98. package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
  99. package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
  100. package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
  101. package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -197
  102. package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -261
  103. package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
  104. package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
  105. package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
  106. package/v2Components/VarSegmentMessageEditor/index.js +0 -125
  107. package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
  108. package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -43
  109. package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -67
  110. package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
  111. package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
  112. package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
  113. package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -205
  114. package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -251
  115. package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
  116. package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
  117. package/v2Containers/SmsTrai/Edit/index.scss +0 -121
  118. package/v2Containers/Templates/TemplatesActionBar.js +0 -101
  119. package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
  120. package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
  121. package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
  122. package/v2Containers/TemplatesV2/tests/TemplatesV2.localTemplates.test.js +0 -131
@@ -5,12 +5,9 @@
5
5
  */
6
6
  @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
7
7
 
8
- /* All ant overrides scoped under wrapper to avoid affecting other modals. */
8
+ /* All ant overrides scoped under wrapper to avoid affecting other modals. */
9
9
  .common-test-preview-modal-wrap {
10
- z-index: 10000;
11
- display: flex;
12
- justify-content: center;
13
- align-items: center;
10
+ z-index: 10000 !important;
14
11
  }
15
12
 
16
13
  /* Lookup spinner overlay above test-customers dropdown. */
@@ -25,23 +22,19 @@
25
22
 
26
23
  /* When customer lookup is loading, dropdown renders inside .send-test-section; lower it so spinner is on top. */
27
24
  .common-test-preview-customer-loading .test-customers-tree-select-dropdown {
28
- z-index: 0;
25
+ z-index: 0 !important;
29
26
  }
30
27
 
31
28
  /* Customer creation modal content – avoid inline styles */
32
- .common-test-preview-modal.common-test-preview-modal {
33
- color: $CAP_G01;
34
- width: 32.571em;
35
- margin-left: auto;
36
- margin-right: auto;
37
- max-width: 32.571em;
38
-
29
+ .common-test-preview-modal {
30
+ color: $CAP_G01 !important;
31
+ .ant-modal-content {
32
+ width: 28.5rem; /* 456px at 16px root */
33
+ }
39
34
  .ant-modal-footer {
40
35
  text-align: left;
41
- margin-left: 0.625rem;
42
- /* 10px at 16px root */
43
- margin-top: 0.9375rem;
44
- /* 15px at 16px root */
36
+ margin-left: 0.625rem; /* 10px at 16px root */
37
+ margin-top: 0.9375rem; /* 15px at 16px root */
45
38
  }
46
39
 
47
40
  .customer-creation-modal-row {
@@ -70,72 +63,22 @@
70
63
  font-weight: normal;
71
64
  }
72
65
 
73
- /* Input text color and font to match standalone (lib mode can lose host styles) */
74
66
  .customer-creation-modal-input {
75
- /* Sizes in em for 14px base: same px as .5rem 2.5rem 1.5rem .875rem at 16px (8px, 40px, 24px, 14px) */
76
- .ant-input {
77
- color: $CAP_G01;
78
- font-size: $FONT_SIZE_M;
79
- font-weight: normal;
80
- padding: 0.571em;
81
- /* 8px */
82
- height: 2.857em;
83
- /* 40px */
84
- line-height: 1.714em;
85
- /* 24px */
86
- }
87
-
88
- .ant-input:hover,
89
- .ant-input:focus {
90
- border: 1px solid $CAP_G01;
91
- }
92
-
93
- .ant-input::placeholder {
94
- color: $CAP_G06;
95
- }
96
-
97
- /* Error state: single clean red border, no double line or focus ring */
98
- &.has-input-error {
99
- .ant-input-affix-wrapper {
100
- border: 1px solid $CAP_COLOR_03;
101
- border-radius: $CAP_SPACE_04;
102
- }
103
-
104
- .ant-input-affix-wrapper:hover,
105
- .ant-input-affix-wrapper:focus,
106
- .ant-input-affix-wrapper-focused {
107
- border: 1px solid $CAP_COLOR_03;
108
- }
67
+ width: 100%;
68
+ color: $CAP_G01;
109
69
 
110
- .ant-input-affix-wrapper .ant-input {
111
- border: none !important;
70
+ &.has-error {
71
+ color: $CAP_COLOR_03 !important;
72
+ .ant-input {
73
+ border-color: $CAP_COLOR_03 !important;
112
74
  }
113
75
  }
114
76
  }
115
77
 
116
- /* Error message only – no extra border/line below the input */
117
78
  .customer-creation-modal-validation-error {
118
79
  color: $CAP_COLOR_03;
119
80
  font-size: $FONT_SIZE_S;
120
81
  margin-top: $CAP_SPACE_04;
121
- border: none;
122
- border-top: none;
123
- box-shadow: none;
124
-
125
- &::before,
126
- &::after {
127
- display: none;
128
- content: none;
129
- border: none;
130
- }
131
- }
132
-
133
- /* Lookup loading: make Email and Mobile fields look disabled (wrapper-only) */
134
- .customer-creation-modal--lookup-loading .customer-creation-modal-row--email .customer-creation-modal-input,
135
- .customer-creation-modal--lookup-loading .customer-creation-modal-row--last .customer-creation-modal-input {
136
- opacity: 0.65;
137
- cursor: not-allowed;
138
- background-color: $CAP_G09;
139
82
  }
140
83
 
141
84
  /* Existing customer modal content */
@@ -144,17 +87,13 @@
144
87
  margin-bottom: $CAP_SPACE_16;
145
88
  }
146
89
 
147
- .ant-card.cap-card-v2 {
148
- border: none
149
- }
150
-
151
90
  .ant-card-body {
152
91
  padding: 1rem;
153
- border-radius: $CAP_SPACE_08;
154
- border: $CAP_SPACE_01 solid $CAP_G06;
155
92
  }
156
93
 
157
94
  &-card {
95
+ border-radius: $CAP_SPACE_08;
96
+ border: $CAP_SPACE_01 solid $CAP_G06;
158
97
  padding: 0;
159
98
  }
160
99
 
@@ -165,11 +104,9 @@
165
104
  }
166
105
 
167
106
  &-avatar {
168
- width: 3rem;
169
- /* 48px at 16px root */
107
+ width: 3rem; /* 48px at 16px root */
170
108
  height: 3rem;
171
- border-radius: 1.25rem;
172
- /* 20px at 16px root */
109
+ border-radius: 1.25rem; /* 20px at 16px root */
173
110
  background-color: $CAP_G07;
174
111
  display: flex;
175
112
  align-items: center;
@@ -213,11 +150,10 @@
213
150
  margin-right: 0.5rem;
214
151
  }
215
152
 
216
- .cap-slide-box-v2.common-test-and-preview-slidebox .cap-slide-box-v2-container {
217
- z-index: 10030;
218
- }
219
-
220
153
  .common-test-and-preview-slidebox {
154
+ .common-test-preview-modal-wrap {
155
+ z-index: 10003;
156
+ }
221
157
 
222
158
  .ant-modal-mask,
223
159
  .ant-modal-wrap {
@@ -260,7 +196,6 @@
260
196
 
261
197
  .tag-input-field {
262
198
  width: 14.714rem;
263
-
264
199
  .input {
265
200
  height: $CAP_SPACE_40;
266
201
  }
@@ -273,16 +208,12 @@
273
208
 
274
209
  .left-panel {
275
210
  width: 40%;
276
- min-width: 20rem;
277
- /* Consistent width in campaigns/library mode so test customer dropdown matches creatives */
278
211
  padding-right: 1rem;
279
212
  border-right: $CAP_SPACE_01 solid $CAP_G12;
280
213
  overflow-y: auto;
281
-
282
214
  .panel-divider {
283
215
  margin: 0;
284
216
  }
285
-
286
217
  .no-tags-extracted-info-note {
287
218
  .note-text {
288
219
  white-space: unset;
@@ -331,7 +262,6 @@
331
262
  .values-missing-message {
332
263
  margin: $CAP_SPACE_16 0;
333
264
  }
334
-
335
265
  .editor-header {
336
266
  display: flex;
337
267
  justify-content: flex-end;
@@ -415,7 +345,7 @@
415
345
  align-items: center;
416
346
  min-height: $CAP_SPACE_20;
417
347
  padding-left: $CAP_SPACE_08;
418
-
348
+
419
349
  &:hover {
420
350
  background-color: #f5f5f5;
421
351
  }
@@ -481,7 +411,6 @@
481
411
  color: #bfbfbf;
482
412
  font-style: italic;
483
413
  }
484
-
485
414
  .ant-input {
486
415
  margin: $CAP_SPACE_06 0;
487
416
  height: $CAP_SPACE_36;
@@ -490,13 +419,6 @@
490
419
  }
491
420
  }
492
421
 
493
- .tags-section-title {
494
- margin: $CAP_SPACE_12 0;
495
- display: block;
496
- color: $CAP_G01;
497
- font-weight: $FONT_WEIGHT_MEDIUM;
498
- }
499
-
500
422
  .values-table {
501
423
  margin-bottom: $CAP_SPACE_16;
502
424
  border: $CAP_SPACE_01 solid $CAP_G12;
@@ -549,11 +471,10 @@
549
471
  justify-content: space-between;
550
472
  margin-bottom: $CAP_SPACE_16;
551
473
  }
552
-
553
474
  .editor-actions::before,
554
475
  .editor-actions::after {
555
- content: none;
556
- display: none;
476
+ content: none;
477
+ display: none;
557
478
  }
558
479
 
559
480
  .optional-tags-section {
@@ -562,10 +483,9 @@
562
483
  color: #666;
563
484
  }
564
485
 
565
- z-index: -1;
566
-
486
+ z-index: -1;
567
487
  .optional-tags-content {
568
- padding: $CAP_SPACE_16;
488
+ padding: $CAP_SPACE_16;
569
489
  background: #f5f5f5;
570
490
  border-radius: $CAP_SPACE_04;
571
491
  }
@@ -591,40 +511,31 @@
591
511
  margin-bottom: $CAP_SPACE_16;
592
512
  color: #666;
593
513
  }
594
-
595
514
  .ant-collapse-header {
596
515
  padding-left: 0;
597
516
  }
598
-
599
517
  .ant-collapse-content-box {
600
518
  padding-left: 0 !important;
601
519
  }
602
-
603
520
  .send-test-content {
604
521
  flex-direction: column;
605
522
  align-items: stretch;
606
523
  gap: 0;
607
524
  }
608
-
609
525
  .test-customers-tree-select {
610
526
  width: 100%;
611
- min-width: 18rem;
612
- /* Consistent dropdown width in campaigns and creatives */
613
527
  min-height: $CAP_SPACE_40;
614
528
  margin: $CAP_SPACE_12 0 $CAP_SPACE_08;
615
-
616
529
  .ant-select-selection,
617
530
  .ant-select-selector {
618
531
  min-height: $CAP_SPACE_40;
619
532
  height: auto !important;
620
533
  }
621
534
  }
622
-
623
535
  .send-test-content .ant-btn {
624
536
  margin-top: $CAP_SPACE_04;
625
537
  flex-shrink: 0;
626
538
  }
627
-
628
539
  .ant-select-selection__choice {
629
540
  background-color: $CAP_G08;
630
541
  border-radius: $CAP_SPACE_04;
@@ -634,11 +545,8 @@
634
545
 
635
546
  // Test customers TreeSelect dropdown: limit height and make scrollable (dropdown renders in portal)
636
547
  .test-customers-tree-select-dropdown {
637
- min-width: 18rem;
638
- max-height: 20rem;
639
- /* 320px */
640
- overflow-y: auto;
641
-
548
+ max-height: 20rem !important; /* 320px */
549
+ overflow-y: auto !important;
642
550
  .ant-select-tree-list-holder-inner {
643
551
  overflow: visible;
644
552
  }
@@ -646,10 +554,8 @@
646
554
 
647
555
  .test-customer-add-btn {
648
556
  width: 100%;
649
- &.ant-btn.cap-button-v2.flat-btn {
650
- background-color: transparent;
651
- color: $FONT_COLOR_05;
652
- }
557
+ background-color: transparent !important;
558
+ color: $FONT_COLOR_05 !important;
653
559
  white-space: normal;
654
560
  word-break: normal;
655
561
  overflow-wrap: break-word;
@@ -677,7 +583,7 @@
677
583
  padding-bottom: $CAP_SPACE_16;
678
584
  margin-bottom: $CAP_SPACE_16;
679
585
  }
680
-
586
+
681
587
  .right-panel {
682
588
  padding-left: 0;
683
589
  padding-top: $CAP_SPACE_16;
@@ -693,7 +599,6 @@
693
599
  .preview-divider {
694
600
  margin: 0;
695
601
  }
696
-
697
602
  .preview-header {
698
603
  display: flex;
699
604
  justify-content: space-between;
@@ -705,7 +610,6 @@
705
610
  font-size: $FONT_SIZE_M;
706
611
  color: #595959;
707
612
  gap: $CAP_SPACE_04;
708
-
709
613
  b {
710
614
  color: #262626;
711
615
  margin-left: $CAP_SPACE_04;
@@ -736,12 +640,10 @@
736
640
 
737
641
  .preview-body {
738
642
  border-radius: $CAP_SPACE_08;
739
- box-shadow: 0 $CAP_SPACE_04 $CAP_SPACE_12 rgba(0, 0, 0, 0.1);
740
-
643
+ box-shadow: 0 $CAP_SPACE_04 $CAP_SPACE_12 rgba(0,0,0,0.1);
741
644
  &.mobile {
742
645
  width: 26.786rem;
743
646
  margin: 0 auto;
744
-
745
647
  .browser-bar {
746
648
  background: $CAP_G08;
747
649
  }
@@ -757,16 +659,13 @@
757
659
  display: flex;
758
660
  gap: $CAP_SPACE_08;
759
661
  color: $CAP_G06;
760
-
761
662
  .refresh-icon {
762
663
  margin-top: $CAP_SPACE_04;
763
-
764
664
  svg path {
765
665
  fill: $CAP_G06;
766
666
  }
767
667
  }
768
668
  }
769
-
770
669
  .address-bar {
771
670
  flex-grow: 1;
772
671
  background: $CAP_WHITE;
@@ -776,16 +675,13 @@
776
675
  color: #595959;
777
676
  text-align: center;
778
677
  border: $CAP_SPACE_01 solid $CAP_G07;
779
-
780
678
  .address-bar-label {
781
679
  float: left;
782
680
  }
783
-
784
681
  .browser-address-bar-icon {
785
682
  float: right;
786
683
  }
787
684
  }
788
-
789
685
  .browser-actions {
790
686
  color: #8c8c8c;
791
687
  }
@@ -796,11 +692,9 @@
796
692
  align-items: center;
797
693
  padding: $CAP_SPACE_16;
798
694
  gap: $CAP_SPACE_16;
799
-
800
695
  .back-arrow {
801
696
  font-size: $CAP_SPACE_16;
802
697
  }
803
-
804
698
  .email-meta {
805
699
  margin-left: auto;
806
700
  display: flex;
@@ -808,7 +702,6 @@
808
702
  gap: $CAP_SPACE_08;
809
703
  font-size: $FONT_SIZE_S;
810
704
  color: #8c8c8c;
811
-
812
705
  .dots {
813
706
  width: $CAP_SPACE_06;
814
707
  height: $CAP_SPACE_06;
@@ -823,19 +716,16 @@
823
716
  align-items: center;
824
717
  padding: 0 $CAP_SPACE_16 $CAP_SPACE_16;
825
718
  gap: $CAP_SPACE_12;
826
-
827
719
  .sender-avatar {
828
720
  width: $CAP_SPACE_40;
829
721
  height: $CAP_SPACE_40;
830
722
  border-radius: 50%;
831
723
  background: $CAP_G12;
832
724
  }
833
-
834
725
  .sender-info {
835
726
  .sender-name {
836
727
  font-weight: 500;
837
728
  }
838
-
839
729
  .recipient-info {
840
730
  font-size: $FONT_SIZE_S;
841
731
  color: #8c8c8c;
@@ -846,7 +736,6 @@
846
736
  .email-content {
847
737
  border-top: $CAP_SPACE_01 solid $CAP_G12;
848
738
  padding: 0 $CAP_SPACE_16;
849
-
850
739
  iframe {
851
740
  border: none;
852
741
  }
@@ -20,7 +20,6 @@ import {
20
20
  CLEAR_PREVIEW_ERRORS,
21
21
  GET_SENDER_DETAILS_REQUESTED,
22
22
  GET_WECRM_ACCOUNTS_REQUESTED,
23
- ADD_TEST_CUSTOMER,
24
23
  } from './constants';
25
24
 
26
25
  // ============================================
@@ -93,15 +92,6 @@ export const getTestGroupsRequested = () => ({
93
92
  type: GET_TEST_GROUPS_REQUESTED,
94
93
  });
95
94
 
96
- /**
97
- * Add a test customer to the list (e.g. after adding existing customer so tree shows name)
98
- * @param {Object} customer - { userId, customerId, name, email, mobile }
99
- */
100
- export const addTestCustomer = (customer) => ({
101
- type: ADD_TEST_CUSTOMER,
102
- payload: { customer },
103
- });
104
-
105
95
  /**
106
96
  * Create or update message meta configuration
107
97
  * @param {Object} payload - Message meta payload
@@ -33,7 +33,6 @@ export const SEND_TEST_MESSAGE_FAILURE = 'app/CommonTestAndPreview/SEND_TEST_MES
33
33
  export const GET_TEST_CUSTOMERS_REQUESTED = 'app/CommonTestAndPreview/GET_TEST_CUSTOMERS_REQUESTED';
34
34
  export const GET_TEST_CUSTOMERS_SUCCESS = 'app/CommonTestAndPreview/GET_TEST_CUSTOMERS_SUCCESS';
35
35
  export const GET_TEST_CUSTOMERS_FAILURE = 'app/CommonTestAndPreview/GET_TEST_CUSTOMERS_FAILURE';
36
- export const ADD_TEST_CUSTOMER = 'app/CommonTestAndPreview/ADD_TEST_CUSTOMER';
37
36
 
38
37
  // Test Groups
39
38
  export const GET_TEST_GROUPS_REQUESTED = 'app/CommonTestAndPreview/GET_TEST_GROUPS_REQUESTED';
@@ -66,12 +65,6 @@ export const GET_WECRM_ACCOUNTS_REQUESTED = 'app/CommonTestAndPreview/GET_WECRM_
66
65
  export const GET_WECRM_ACCOUNTS_SUCCESS = 'app/CommonTestAndPreview/GET_WECRM_ACCOUNTS_SUCCESS';
67
66
  export const GET_WECRM_ACCOUNTS_FAILURE = 'app/CommonTestAndPreview/GET_WECRM_ACCOUNTS_FAILURE';
68
67
 
69
- // ============================================
70
- // CUSTOMER MODAL TYPE (test customer addition)
71
- // ============================================
72
- export const CUSTOMER_MODAL_NEW = 'new';
73
- export const CUSTOMER_MODAL_EXISTING = 'existing';
74
-
75
68
  // ============================================
76
69
  // CHANNEL CONSTANTS
77
70
  // ============================================
@@ -86,44 +79,6 @@ export const CHANNELS = {
86
79
  ZALO: 'ZALO',
87
80
  };
88
81
 
89
- /** Unified preview tab keys when RCS shows RCS + SMS fallback panes. */
90
- export const PREVIEW_TAB_RCS = 'rcs';
91
- export const PREVIEW_TAB_SMS_FALLBACK = 'smsFallback';
92
- export const PREVIEW_TAB_KEYS = [PREVIEW_TAB_RCS, PREVIEW_TAB_SMS_FALLBACK];
93
-
94
- /** Channels whose Test & Preview defaults to Android/iOS device frame (not desktop). */
95
- export const CHANNELS_USING_ANDROID_PREVIEW_DEVICE = [
96
- CHANNELS.SMS,
97
- CHANNELS.WHATSAPP,
98
- CHANNELS.RCS,
99
- CHANNELS.INAPP,
100
- CHANNELS.MOBILEPUSH,
101
- CHANNELS.VIBER,
102
- ];
103
-
104
- /** RCS createMessageMeta test payload — rich card envelope literals. */
105
- export const RCS_TEST_META_CONTENT_TYPE_RICHCARD = 'RICHCARD';
106
- export const RCS_TEST_META_CARD_TYPE_STANDALONE = 'STANDALONE';
107
- export const RCS_TEST_META_CARD_ORIENTATION_VERTICAL = 'VERTICAL';
108
- export const RCS_TEST_META_CARD_WIDTH_SMALL = 'SMALL';
109
-
110
- /** React key fallback when a custom-values section has no `key` or title id. */
111
- export const CUSTOM_VALUES_EDITOR_SECTION_FALLBACK_KEY = 'section';
112
-
113
- /**
114
- * Matches at least one `{{variableName}}` token in SMS / RCS fallback template text.
115
- */
116
- export const SMS_MUSTACHE_TAG_PATTERN = /\{\{[^}]+\}\}/;
117
-
118
- /** TRAI DLT `{#…#}` placeholders (same idea as `COMBINED_SMS_TEMPLATE_VAR_REGEX` in unified constants). */
119
- export const SMS_DLT_HASH_TAG_PATTERN = /\{\#[^#]*\#\}/;
120
-
121
- /**
122
- * Key on `smsFallbackContent` passed into Test & Preview — RCS slot map from SmsTraiEdit
123
- * (`onRcsFallbackEditorStateChange`), merged before tag extraction like the embedded SMS editor.
124
- */
125
- export const RCS_SMS_FALLBACK_VAR_MAPPED_PROP = 'rcsSmsFallbackVarMapped';
126
-
127
82
  // ============================================
128
83
  // DEVICE CONSTANTS
129
84
  // ============================================
@@ -145,21 +100,14 @@ export const CLIENT_NAME_CREATIVES = 'CREATIVES';
145
100
  // Note: API uses "PUSH" instead of "MOBILEPUSH" for MobilePush channel
146
101
  export const API_CHANNEL_PUSH = 'PUSH';
147
102
 
148
- // ============================================
149
- // VALIDATION REGEX (shared with commonUtils for email/mobile validation)
150
- // ============================================
151
- export const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
152
- export const PHONE_REGEX = /^[1-9]\d{7,14}$/;
153
-
154
103
  // ============================================
155
104
  // IDENTIFIER TYPE CONSTANTS
156
105
  // ============================================
157
- export const IDENTIFIER_TYPE_EMAIL = 'email';
158
106
  export const IDENTIFIER_TYPE_MOBILE = 'mobile';
159
107
  export const IDENTIFIER_TYPE_PHONE = 'phone';
160
108
 
161
109
  // Customer creation modal – input error state class suffix (used with customer-creation-modal-input)
162
- export const INPUT_HAS_ERROR_CLASS = ' has-input-error';
110
+ export const INPUT_HAS_ERROR_CLASS = ' has-error';
163
111
 
164
112
  // ============================================
165
113
  // CHANNEL NAME CONSTANTS (for CDN and other utilities)