@capillarytech/creatives-library 8.0.340-0 → 8.0.340-beta.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 (134) hide show
  1. package/app.js +8 -1
  2. package/global-styles.js +4 -0
  3. package/package.json +2 -2
  4. package/styles/components/navigation/_leftnav.scss +1 -1
  5. package/v2Components/AccessForbidden/index.js +1 -1
  6. package/v2Components/CapActionButton/index.js +5 -5
  7. package/v2Components/CapCustomSkeleton/index.js +1 -1
  8. package/v2Components/CapDeviceContent/index.js +5 -5
  9. package/v2Components/CapDocumentUpload/index.js +1 -1
  10. package/v2Components/CapImageUpload/index.js +1 -1
  11. package/v2Components/CapInAppCTA/index.js +118 -112
  12. package/v2Components/CapMpushCTA/index.js +72 -66
  13. package/v2Components/CapTagList/index.js +5 -5
  14. package/v2Components/CapVideoUpload/index.js +1 -1
  15. package/v2Components/CapWhatsappCTA/index.js +128 -124
  16. package/v2Components/CapWhatsappCarouselButton/index.js +27 -29
  17. package/v2Components/CapWhatsappQuickReply/index.js +7 -7
  18. package/v2Components/Carousel/index.js +1 -1
  19. package/v2Components/CommonTestAndPreview/AddTestCustomer.js +1 -1
  20. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +3 -3
  21. package/v2Components/CommonTestAndPreview/CustomerCreationModal.js +1 -1
  22. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +4 -4
  23. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +1 -1
  24. package/v2Components/CommonTestAndPreview/ExistingCustomerModal.js +6 -6
  25. package/v2Components/CommonTestAndPreview/LeftPanelContent.js +5 -5
  26. package/v2Components/CommonTestAndPreview/PreviewSection.js +1 -1
  27. package/v2Components/CommonTestAndPreview/UnifiedPreview/DeviceFrame.js +1 -1
  28. package/v2Components/CommonTestAndPreview/UnifiedPreview/EmailPreviewContent.js +8 -8
  29. package/v2Components/CommonTestAndPreview/UnifiedPreview/InAppPreviewContent.js +14 -13
  30. package/v2Components/CommonTestAndPreview/UnifiedPreview/MobilePushPreviewContent.js +22 -21
  31. package/v2Components/CommonTestAndPreview/UnifiedPreview/RcsPreviewContent.js +9 -9
  32. package/v2Components/CommonTestAndPreview/UnifiedPreview/SmsPreviewContent.js +8 -8
  33. package/v2Components/CommonTestAndPreview/UnifiedPreview/ViberPreviewContent.js +10 -10
  34. package/v2Components/CommonTestAndPreview/UnifiedPreview/WhatsAppPreviewContent.js +13 -12
  35. package/v2Components/CommonTestAndPreview/UnifiedPreview/ZaloPreviewContent.js +4 -3
  36. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +10 -5
  37. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +1 -1
  38. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +3 -4
  39. package/v2Components/CommonTestAndPreview/index.js +1 -1
  40. package/v2Components/CustomerSearchSection/_customerSearch.scss +2 -1
  41. package/v2Components/CustomerSearchSection/index.js +9 -9
  42. package/v2Components/EmailMobilePreview/index.js +1 -1
  43. package/v2Components/ErrorInfoNote/index.js +13 -11
  44. package/v2Components/ErrorInfoNote/style.scss +1 -1
  45. package/v2Components/FormBuilder/_formBuilder.scss +1 -0
  46. package/v2Components/FormBuilder/index.js +32 -40
  47. package/v2Components/HtmlEditor/HTMLEditor.js +4 -4
  48. package/v2Components/HtmlEditor/_htmlEditor.scss +2 -1
  49. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +1 -1
  50. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +2 -2
  51. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +2 -2
  52. package/v2Components/HtmlEditor/components/EditorToolbar/PreviewModeGroup.js +2 -2
  53. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +2 -2
  54. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +1 -0
  55. package/v2Components/HtmlEditor/components/PreviewPane/index.js +2 -2
  56. package/v2Components/HtmlEditor/components/SplitContainer/SplitContainer.js +2 -2
  57. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +2 -1
  58. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +6 -9
  59. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +2 -2
  60. package/v2Components/NavigationBar/index.js +7 -1
  61. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +3 -4
  62. package/v2Components/TemplatePreview/_templatePreview.scss +5 -3
  63. package/v2Components/TemplatePreview/index.js +11 -9
  64. package/v2Components/TestAndPreviewSlidebox/CustomValuesEditor.js +3 -3
  65. package/v2Components/TestAndPreviewSlidebox/LeftPanelContent.js +5 -5
  66. package/v2Components/TestAndPreviewSlidebox/PreviewSection.js +3 -3
  67. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +4 -2
  68. package/v2Containers/BeePopupEditor/index.js +1 -1
  69. package/v2Containers/CommunicationFlow/CommunicationFlow.js +5 -5
  70. package/v2Containers/CommunicationFlow/steps/ChannelSelectionStep/ChannelSelectionStep.js +4 -3
  71. package/v2Containers/CommunicationFlow/steps/CommunicationStrategyStep/CommunicationStrategyStep.js +2 -2
  72. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/DeliverySettingsSection.js +3 -2
  73. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/SenderDetails.js +7 -7
  74. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/SenderDetails.scss +0 -5
  75. package/v2Containers/CommunicationFlow/steps/DynamicControlsStep/DynamicControlsStep.js +2 -2
  76. package/v2Containers/CommunicationFlow/steps/MessageTypeStep/MessageTypeStep.js +2 -2
  77. package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -1
  78. package/v2Containers/CreativesContainer/index.js +1 -1
  79. package/v2Containers/Ebill/index.js +10 -9
  80. package/v2Containers/Email/index.js +7 -7
  81. package/v2Containers/Email/initialSchema.js +1 -1
  82. package/v2Containers/FTP/index.js +1 -1
  83. package/v2Containers/Facebook/Advertisement/index.js +4 -4
  84. package/v2Containers/Facebook/index.js +2 -2
  85. package/v2Containers/InApp/index.js +21 -16
  86. package/v2Containers/InApp/index.scss +0 -7
  87. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +2 -2
  88. package/v2Containers/InappAdvance/index.js +4 -4
  89. package/v2Containers/LanguageProvider/index.js +3 -3
  90. package/v2Containers/LanguageProvider/tests/index.test.js +3 -3
  91. package/v2Containers/Line/Container/Image/index.js +1 -1
  92. package/v2Containers/Line/Container/ImageCarousel/Content.js +1 -1
  93. package/v2Containers/Line/Container/ImageCarousel/index.js +5 -5
  94. package/v2Containers/Line/Container/ImageMap/index.js +3 -3
  95. package/v2Containers/Line/Container/Sticker/index.js +2 -2
  96. package/v2Containers/Line/Container/Sticker/utils.js +1 -1
  97. package/v2Containers/Line/Container/Video/index.js +1 -1
  98. package/v2Containers/Line/Container/Wrapper/index.js +3 -3
  99. package/v2Containers/Line/Container/Wrapper/style.js +1 -5
  100. package/v2Containers/Line/Container/index.js +2 -2
  101. package/v2Containers/Login/components/LoginForm/index.js +34 -47
  102. package/v2Containers/Login/index.js +5 -5
  103. package/v2Containers/MobilePushNew/components/CtaButtons.js +2 -2
  104. package/v2Containers/MobilePushNew/components/MediaUploaders.js +9 -9
  105. package/v2Containers/MobilePushNew/components/PlatformContentFields.js +4 -4
  106. package/v2Containers/MobilePushNew/index.js +2 -2
  107. package/v2Containers/MobilePushNew/index.scss +6 -3
  108. package/v2Containers/Rcs/index.js +24 -19
  109. package/v2Containers/Rcs/index.scss +0 -7
  110. package/v2Containers/SmsTrai/Edit/index.js +3 -2
  111. package/v2Containers/Templates/index.js +16 -16
  112. package/v2Containers/Viber/constants.js +0 -8
  113. package/v2Containers/Viber/index.js +19 -19
  114. package/v2Containers/Viber/index.scss +0 -7
  115. package/v2Containers/Viber/reducer.js +21 -44
  116. package/v2Containers/Viber/sagas.js +21 -62
  117. package/v2Containers/Viber/tests/index.test.js +0 -80
  118. package/v2Containers/Viber/tests/saga.test.js +40 -365
  119. package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +1 -1
  120. package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +2 -2
  121. package/v2Containers/WebPush/Create/components/BrandIconSection.js +1 -1
  122. package/v2Containers/WebPush/Create/components/ButtonForm.js +2 -2
  123. package/v2Containers/WebPush/Create/components/ButtonList.js +4 -4
  124. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +4 -4
  125. package/v2Containers/WebPush/Create/components/FormActions.js +3 -3
  126. package/v2Containers/WebPush/Create/components/MessageSection.js +2 -2
  127. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +2 -2
  128. package/v2Containers/WebPush/Create/components/_buttons.scss +2 -2
  129. package/v2Containers/WebPush/Create/index.scss +6 -3
  130. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +1 -1
  131. package/v2Containers/Whatsapp/index.js +28 -28
  132. package/v2Containers/Zalo/index.js +3 -3
  133. package/.npmrc copy +0 -2
  134. package/v2Containers/Viber/tests/reducer.test.js +0 -297
@@ -3,7 +3,8 @@
3
3
  .customer-search-section {
4
4
  margin-top: $CAP_SPACE_08;
5
5
  display: flex;
6
- flex-direction: column;
6
+ flex-direction: column !important;
7
+ flex-flow: column nowrap;
7
8
  gap: $CAP_SPACE_04;
8
9
  padding: 0;
9
10
  position: relative;
@@ -183,9 +183,9 @@ const CustomerSearchSection = ({
183
183
  };
184
184
 
185
185
  return (
186
- <CapRow className="customer-search-section">
186
+ <CapRow useLegacy className="customer-search-section">
187
187
  <div ref={searchContainerRef}>
188
- <CapRow className="search-container">
188
+ <CapRow useLegacy className="search-container">
189
189
  {selectedCustomer ? (
190
190
  <SelectedCustomerView
191
191
  customer={selectedCustomer}
@@ -203,7 +203,7 @@ const CustomerSearchSection = ({
203
203
  />
204
204
  )}
205
205
  {showDropdown && !selectedCustomer && (
206
- <CapRow className="search-dropdown-container">
206
+ <CapRow useLegacy className="search-dropdown-container">
207
207
  <CapRow type="flex" justify="center" align="middle">
208
208
  {(processedSearchData?.length === 0 && customerSearchValue != null && !isSearchingCustomer) && (
209
209
  <CapCard className="validation-card">
@@ -214,7 +214,7 @@ const CustomerSearchSection = ({
214
214
  )}
215
215
  {(isSearchingCustomer) && (
216
216
  <CapCard className="validation-card">
217
- <CapRow className="spin-card-align">
217
+ <CapRow useLegacy className="spin-card-align">
218
218
  <CapSpin />
219
219
  </CapRow>
220
220
  </CapCard>
@@ -232,12 +232,12 @@ const CustomerSearchSection = ({
232
232
  className="search-results-height link-result"
233
233
  title={(
234
234
  <>
235
- <CapRow type="flex" align="middle" gutter={16}>
235
+ <CapRow type="flex" align="middle" gap={16}>
236
236
  <CapColumn data-testid="namingIcon">
237
237
  <CapRow className="customer-common-profile">{getNamingIcon(d?.name)}</CapRow>
238
238
  </CapColumn>
239
239
  <CapColumn>
240
- <CapRow type="flex" gutter={12}>
240
+ <CapRow type="flex" gap={12}>
241
241
  <CapColumn data-testid="searchResultName">
242
242
  <CapHeading className="search-text" type="h4">
243
243
  {d?.name}
@@ -279,7 +279,7 @@ const SearchInput = ({
279
279
  disabled,
280
280
  placeholder,
281
281
  }) => (
282
- <CapRow className="search-input-container">
282
+ <CapRow useLegacy className="search-input-container">
283
283
  <CapInput
284
284
  value={value}
285
285
  onChange={onChange}
@@ -290,7 +290,7 @@ const SearchInput = ({
290
290
  autoComplete="off"
291
291
  />
292
292
  {error && (
293
- <CapRow className="search-error">
293
+ <CapRow useLegacy className="search-error">
294
294
  <CapAlert
295
295
  message={error}
296
296
  type="error"
@@ -304,7 +304,7 @@ const SearchInput = ({
304
304
 
305
305
  const SelectedCustomerView = ({ customer, onClear, showIdentifiers }) => (
306
306
  <div className="selected-customer-view">
307
- <CapRow type="flex" align="middle" gutter={8}>
307
+ <CapRow type="flex" align="middle" gap={8}>
308
308
  <CapColumn>
309
309
  <CapRow className="customer-common-profile">{getNamingIcon(customer?.name)}</CapRow>
310
310
  </CapColumn>
@@ -89,7 +89,7 @@ class EmailMobilePreview extends React.Component {
89
89
  <div className="email-preview-container">
90
90
  {enableShowAllDevices && (
91
91
  <CapButton
92
- type="flat"
92
+ type="link"
93
93
  onClick={this.onClickShowInAllDevices}
94
94
  >
95
95
  View in all devices
@@ -94,7 +94,7 @@ const TabContent = ({ issues, onErrorClick, intl }) => {
94
94
  };
95
95
 
96
96
  return (
97
- <CapRow className="error-info-note__content">
97
+ <CapRow useLegacy className="error-info-note__content">
98
98
  {issues.map((issue, index) => {
99
99
  const { severity, message } = issue;
100
100
  const key = `${message}-${index}`;
@@ -114,10 +114,11 @@ const TabContent = ({ issues, onErrorClick, intl }) => {
114
114
 
115
115
  return (
116
116
  <CapRow
117
+ useLegacy
117
118
  key={key}
118
119
  className={`error-info-note__item error-info-note__item--${severity || 'error'}`}
119
120
  >
120
- <CapRow className="error-info-note__item-content">
121
+ <CapRow useLegacy className="error-info-note__item-content">
121
122
  <CapLabelInline type="label2" className="error-info-note__item-message">
122
123
  {displayMessage}
123
124
  </CapLabelInline>
@@ -149,7 +150,7 @@ const TabContent = ({ issues, onErrorClick, intl }) => {
149
150
  {onErrorClick && (
150
151
  <CapTooltip title={intl?.formatMessage ? intl.formatMessage(messages.navigateToError) : 'Go to error location'}>
151
152
  <CapButton
152
- type="flat"
153
+ type="link"
153
154
  className="error-info-note__item-navigate"
154
155
  onClick={(e) => handleNavigateClick({ ...issue, line, column: char }, e)}
155
156
  aria-label={intl?.formatMessage ? intl.formatMessage(messages.navigateToError) : 'Go to error location'}
@@ -348,7 +349,7 @@ export const ErrorInfoNote = (props) => {
348
349
  }
349
350
 
350
351
  return (
351
- <CapRow className="error-container error-container--tabs">
352
+ <CapRow useLegacy className="error-container error-container--tabs">
352
353
  <CapRow className="error-info-note__header">
353
354
  <CapTab
354
355
  activeKey={activeKey || (tabPanes[0]?.key)}
@@ -356,10 +357,10 @@ export const ErrorInfoNote = (props) => {
356
357
  panes={tabPanes}
357
358
  className="error-info-note__tabs"
358
359
  />
359
- <CapRow className="error-info-note__actions">
360
+ <CapRow useLegacy className="error-info-note__actions">
360
361
  {hasLiquidErrors && (
361
362
  <CapButton
362
- type="flat"
363
+ type="link"
363
364
  className="error-info-note__liquid-doc"
364
365
  onClick={handleLiquidDocClick}
365
366
  >
@@ -369,7 +370,7 @@ export const ErrorInfoNote = (props) => {
369
370
  )}
370
371
  <CapTooltip title={intl?.formatMessage ? intl.formatMessage(messages.closePanel) : 'Close validation panel'}>
371
372
  <CapButton
372
- type="flat"
373
+ type="link"
373
374
  className="error-info-note__close"
374
375
  onClick={handleClose}
375
376
  aria-label={intl?.formatMessage ? intl.formatMessage(messages.closePanel) : 'Close validation panel'}
@@ -393,6 +394,7 @@ const ErrorSection = ({
393
394
  <>
394
395
  {title && (
395
396
  <CapRow
397
+ useLegacy
396
398
  className={`error-header ${
397
399
  !liquidError ? 'standard-error-header' : ''
398
400
  }`}
@@ -404,7 +406,7 @@ const ErrorSection = ({
404
406
  <>
405
407
  {liquidError && (
406
408
  <CapButton
407
- type="flat"
409
+ type="link"
408
410
  className="add-btn"
409
411
  onClick={() => window.open(LIQUID_DOC_URL, '_blank')}
410
412
  >
@@ -416,13 +418,13 @@ const ErrorSection = ({
416
418
  </CapRow>
417
419
  )}
418
420
  {platformLabel && (
419
- <CapRow className="error-header-sub-title">
421
+ <CapRow useLegacy className="error-header-sub-title">
420
422
  <CapLabel type="label2">{platformLabel}</CapLabel>
421
423
  </CapRow>
422
424
  )}
423
- <CapRow className="error-list-legacy">
425
+ <CapRow useLegacy className="error-list-legacy">
424
426
  {(errors || []).map((error) => (
425
- <CapRow key={`${error}`} className="error-list-legacy__item">
427
+ <CapRow useLegacy key={`${error}`} className="error-list-legacy__item">
426
428
  <CapLabel type="label2" className="cap-list-v2-error-item">
427
429
  <CapLabel type="label2">{error}</CapLabel>
428
430
  </CapLabel>
@@ -252,7 +252,7 @@
252
252
  justify-content: space-between;
253
253
  font-weight: $FONT_WEIGHT_MEDIUM;
254
254
 
255
- .ant-btn.cap-button-v2.flat-btn {
255
+ .ant-btn.cap-button-v2.ant-btn-link {
256
256
  display: flex;
257
257
  margin-left: auto;
258
258
  background-color: inherit;
@@ -20,6 +20,7 @@
20
20
  bottom: 4px !important;
21
21
  }
22
22
 
23
+ /* TODO: cap-react-ui-library class removed — review this override */
23
24
  .cap-input {
24
25
  .error-message {
25
26
  margin-left: initial !important;
@@ -10,7 +10,7 @@ import PropTypes from 'prop-types';
10
10
 
11
11
  import React from 'react';
12
12
  import _ from 'lodash';
13
- import { Tabs, Table, Modal} from 'antd';
13
+ import { Table, Modal} from 'antd';
14
14
  import { connect } from 'react-redux';
15
15
  import CapSpin from '@capillarytech/cap-ui-library/CapSpin';
16
16
  import CapDrawer from '@capillarytech/cap-ui-library/CapDrawer';
@@ -24,6 +24,7 @@ import CapSelect from '@capillarytech/cap-ui-library/CapSelect';
24
24
  import CapTable from '@capillarytech/cap-ui-library/CapTable';
25
25
  import CapRow from '@capillarytech/cap-ui-library/CapRow';
26
26
  import CapColumn from '@capillarytech/cap-ui-library/CapColumn';
27
+ import CapTab from '@capillarytech/cap-ui-library/CapTab';
27
28
  import CapNotification from '@capillarytech/cap-ui-library/CapNotification';
28
29
  import CapUploader from '@capillarytech/cap-ui-library/CapUploader';
29
30
  import CapHeading from '@capillarytech/cap-ui-library/CapHeading';
@@ -64,7 +65,6 @@ import { isEmailUnsubscribeTagOptional, isAiContentBotDisabled } from '../../uti
64
65
  import { isUrl } from '../../v2Containers/Line/Container/Wrapper/utils';
65
66
  import { bindActionCreators } from 'redux';
66
67
  import { getChannelData, hasPersonalizationTags, validateLiquidTemplateContent, validateMobilePushContent } from '../../utils/commonUtils';
67
- const TabPane = Tabs.TabPane;
68
68
  const {Column} = Table;
69
69
  const {TextArea} = CapInput;
70
70
  const {CapRadioGroup} = CapRadio;
@@ -3158,7 +3158,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3158
3158
  break;
3159
3159
  }
3160
3160
  row.push(
3161
- <CapRow>
3161
+ <CapRow useLegacy>
3162
3162
  {
3163
3163
  _.forEach(columns, (value) => {
3164
3164
  if (value) {
@@ -3207,7 +3207,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3207
3207
  cols.push(<CapColumn style={childSection.colStyle ? childSection.colStyle : {}}offset={childSection.offset} span={childSection.width}>{renderedChildSection}</CapColumn>);
3208
3208
  return true;
3209
3209
  });
3210
- const row = (<CapRow style={section.rowStyle ? section.rowStyle : {}}>
3210
+ const row = (<CapRow useLegacy style={section.rowStyle ? section.rowStyle : {}}>
3211
3211
  {
3212
3212
  _.forEach(cols, (value) => {
3213
3213
  if (value) {
@@ -3320,7 +3320,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3320
3320
  return (
3321
3321
  <CapButton
3322
3322
  className="dragger-button"
3323
- type="flat"
3323
+ type="link"
3324
3324
  style={{top: 0, position: 'absolute', right: 0, color: FONT_COLOR_05 }}
3325
3325
  onClick={this.onReUpload}
3326
3326
  >
@@ -3329,7 +3329,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3329
3329
  );
3330
3330
  }
3331
3331
  return (
3332
- <CapButton disabled={val.disabled ? val.disabled : false} type="flat" prefix={<CapIcon size="s" type="add-photo" />} onClick={(e) => this.openFileDialog(e, val.id)} style={{float: 'right', color: `${val.disabled ? FONT_COLOR_04 : FONT_COLOR_05}`}}>
3332
+ <CapButton disabled={val.disabled ? val.disabled : false} type="link" prefix={<CapIcon size="s" type="add-photo" />} onClick={(e) => this.openFileDialog(e, val.id)} style={{float: 'right', color: `${val.disabled ? FONT_COLOR_04 : FONT_COLOR_05}`}}>
3333
3333
  {val.label}
3334
3334
  </CapButton>
3335
3335
  );
@@ -4034,7 +4034,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
4034
4034
  return true;
4035
4035
  });
4036
4036
  const row = (
4037
- <CapRow style={field.rowStyle ? field.rowStyle : {}} className={field.rowClassName ? field.rowClassName : ''}>
4037
+ <CapRow useLegacy style={field.rowStyle ? field.rowStyle : {}} className={field.rowClassName ? field.rowClassName : ''}>
4038
4038
  {
4039
4039
  _.forEach(columns, (value) => {
4040
4040
  if (value) {
@@ -4076,7 +4076,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
4076
4076
  }
4077
4077
  });
4078
4078
  const row = (
4079
- <CapRow>
4079
+ <CapRow useLegacy>
4080
4080
  {
4081
4081
  _.forEach(columns, (value) => {
4082
4082
  if (value) {
@@ -4159,31 +4159,30 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
4159
4159
  }
4160
4160
  const isPaneSupported = typeof pane.isSupported === "boolean" ? pane.isSupported : true; // pane.isSupported field exists only in mpush schema, in other channels it is not
4161
4161
  if (isPaneSupported) {
4162
- renderedPanes.push(
4163
- <TabPane
4164
- forceRender
4165
- tab={
4166
- <div className="form-tab-header" onInput={(e) => e.stopPropagation()}>
4167
- { this.state.translationLang !== 'ja-JP' && (
4168
- _.forEach(renderedContentSections, (value) => {
4169
- if (value) {
4170
- return value;
4171
- }
4172
- return value;
4173
- }))
4174
- }
4175
- </div>
4176
- }
4177
- key={paneTabKey && paneTabKey !== '' ? `${paneTabKey}` : index}>
4178
- {
4179
- _.forEach(renderedSections, (value) => {
4162
+ renderedPanes.push({
4163
+ forceRender: true,
4164
+ tab: (
4165
+ <div className="form-tab-header" onInput={(e) => e.stopPropagation()}>
4166
+ { this.state.translationLang !== 'ja-JP' && (
4167
+ _.forEach(renderedContentSections, (value) => {
4180
4168
  if (value) {
4181
4169
  return value;
4182
4170
  }
4183
4171
  return value;
4184
- })
4185
- }
4186
- </TabPane>);
4172
+ }))
4173
+ }
4174
+ </div>
4175
+ ),
4176
+ key: paneTabKey && paneTabKey !== '' ? `${paneTabKey}` : index,
4177
+ content: (
4178
+ _.forEach(renderedSections, (value) => {
4179
+ if (value) {
4180
+ return value;
4181
+ }
4182
+ return value;
4183
+ })
4184
+ ),
4185
+ });
4187
4186
  paneIndex += 1;
4188
4187
  }
4189
4188
  });
@@ -4196,7 +4195,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
4196
4195
  activeTabKey = stateTabKey;
4197
4196
  }
4198
4197
  return (
4199
- <Tabs
4198
+ <CapTab
4200
4199
  className={`cap-tabs-${container.id}`}
4201
4200
  activeKey={activeTabKey && activeTabKey !== '' ? `${activeTabKey}` : '1'}
4202
4201
  defaultActiveKey={activeTabKey && activeTabKey !== '' ? `${activeTabKey}` : '1'}
@@ -4210,16 +4209,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
4210
4209
  }
4211
4210
  return value;
4212
4211
  })
4213
- }>
4214
- {
4215
- _.forEach(renderedPanes, (value) => {
4216
- if (value) {
4217
- return value;
4218
- }
4219
- return value;
4220
- })
4221
4212
  }
4222
- </Tabs>
4213
+ panes={renderedPanes}
4214
+ />
4223
4215
  );
4224
4216
 
4225
4217
  default:
@@ -4273,7 +4265,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
4273
4265
 
4274
4266
  return (
4275
4267
  <CapSpin spinning={Boolean((this.isLiquidFlowSupportedByChannel() && this.props.liquidExtractionInProgress) || this.props.metaDataStatus === REQUEST)} tip={this.props.intl.formatMessage(messages.liquidSpinText)} >
4276
- <CapRow>
4268
+ <CapRow useLegacy>
4277
4269
  {this.props.schema && this.renderForm()}
4278
4270
  <SlideBox
4279
4271
  header={
@@ -609,7 +609,7 @@ const HTMLEditor = forwardRef(({
609
609
  // Loading state
610
610
  if (!content || !layout) {
611
611
  return (
612
- <CapRow className="html-editor-loading">
612
+ <CapRow useLegacy className="html-editor-loading">
613
613
  <CapSpin size="large" tip={intl.formatMessage(messages.initializing)} />
614
614
  </CapRow>
615
615
  );
@@ -633,7 +633,7 @@ const HTMLEditor = forwardRef(({
633
633
  />
634
634
  ) : (
635
635
  /* InApp variant: Device Toggle + Toolbar combined */
636
- <CapRow className="html-editor__header">
636
+ <CapRow useLegacy className="html-editor__header">
637
637
  <DeviceToggle
638
638
  activeDevice={activeDevice}
639
639
  onDeviceChange={switchDevice}
@@ -652,7 +652,7 @@ const HTMLEditor = forwardRef(({
652
652
  )}
653
653
 
654
654
  {/* Main Content Area - Split Container */}
655
- <CapRow className="html-editor-content">
655
+ <CapRow useLegacy className="html-editor-content">
656
656
  <SplitContainer className="html-editor-split-container">
657
657
  {/* Code Editor Pane */}
658
658
  <CodeEditorPane
@@ -691,7 +691,7 @@ const HTMLEditor = forwardRef(({
691
691
  width="93vw"
692
692
  className="html-editor-fullscreen-modal"
693
693
  >
694
- <CapRow className={`html-editor-fullscreen html-editor-fullscreen--${variant} ${isLibraryMode ? 'html-editor-fullscreen--library-mode' : ''}`}>
694
+ <CapRow useLegacy className={`html-editor-fullscreen html-editor-fullscreen--${variant} ${isLibraryMode ? 'html-editor-fullscreen--library-mode' : ''}`}>
695
695
  {/* Editor Toolbar - Conditional based on variant */}
696
696
  {variant === HTML_EDITOR_VARIANTS.EMAIL ? (
697
697
  <EditorToolbar
@@ -130,7 +130,8 @@
130
130
  overflow: hidden;
131
131
  background-color: $CAP_WHITE;
132
132
  display: flex;
133
- flex-direction: column;
133
+ flex-direction: column !important;
134
+ flex-flow: column nowrap;
134
135
  }
135
136
 
136
137
  // Split container - integrated design
@@ -274,7 +274,7 @@ const CodeEditorPaneComponent = ({
274
274
  <div className="codemirror-wrapper">
275
275
  <div ref={editorRef} className="codemirror-editor" />
276
276
  {/* Floating Add Label Button */}
277
- <CapRow className="code-editor-pane__actions">
277
+ <CapRow useLegacy className="code-editor-pane__actions">
278
278
  <TagList
279
279
  key="html-editor-taglist"
280
280
  label={intl.formatMessage(messages.addLabel)}
@@ -41,7 +41,7 @@
41
41
  transition: all 0.2s ease-in-out;
42
42
 
43
43
  // Override any Cap UI button styles with high specificity
44
- &.cap-button,
44
+ &.cap-button-v2,
45
45
  &.ant-btn,
46
46
  &.cap-button-primary,
47
47
  &.cap-button-success,
@@ -94,7 +94,7 @@
94
94
  }
95
95
 
96
96
  // Override Cap UI styles for active state with high specificity
97
- &.cap-button,
97
+ &.cap-button-v2,
98
98
  &.ant-btn,
99
99
  &.cap-button-primary,
100
100
  &.cap-button-success,
@@ -51,7 +51,7 @@ const DeviceToggle = ({
51
51
  return (
52
52
  <CapRow className={`device-toggle ${className}`}>
53
53
  {/* Device Tabs */}
54
- <CapRow className="device-toggle__tabs">
54
+ <CapRow useLegacy className="device-toggle__tabs">
55
55
  {/* Android Tab */}
56
56
  <CapButton
57
57
  type={activeDevice === DEVICE_TYPES.ANDROID ? "primary" : "default"}
@@ -78,7 +78,7 @@ const DeviceToggle = ({
78
78
  </CapRow>
79
79
 
80
80
  {/* Content Sync Checkbox */}
81
- <CapRow className="device-toggle__sync">
81
+ <CapRow useLegacy className="device-toggle__sync">
82
82
  <CapCheckbox
83
83
  checked={keepContentSame}
84
84
  onChange={handleCheckboxChange}
@@ -35,7 +35,7 @@ const PreviewModeGroup = ({
35
35
  return (
36
36
  <div className="preview-mode-group">
37
37
  <CapButton
38
- type="flat"
38
+ type="link"
39
39
  onClick={() => onChange(DESKTOP)}
40
40
  disabled={disabled}
41
41
  className={value === DESKTOP ? 'preview-mode-group__btn preview-mode-group__btn--active' : 'preview-mode-group__btn'}
@@ -45,7 +45,7 @@ const PreviewModeGroup = ({
45
45
  <CapIcon type="desktop" size="m" />
46
46
  </CapButton>
47
47
  <CapButton
48
- type="flat"
48
+ type="link"
49
49
  onClick={() => onChange(MOBILE)}
50
50
  disabled={disabled}
51
51
  className={value === MOBILE ? 'preview-mode-group__btn preview-mode-group__btn--active' : 'preview-mode-group__btn'}
@@ -61,7 +61,7 @@ const EditorToolbar = ({
61
61
  <Header className={`editor-toolbar ${className}`}>
62
62
  {/* Left Section - Title (conditional) */}
63
63
  {showTitle && (
64
- <CapRow className="editor-toolbar__left">
64
+ <CapRow useLegacy className="editor-toolbar__left">
65
65
  <Text strong className="editor-toolbar__title">
66
66
  {variant === HTML_EDITOR_VARIANTS.INAPP
67
67
  ? intl.formatMessage(messages.inAppEditor)
@@ -95,7 +95,7 @@ const EditorToolbar = ({
95
95
  )}
96
96
 
97
97
  {/* Right Section - Actions */}
98
- <CapRow className="editor-toolbar__right">
98
+ <CapRow useLegacy className="editor-toolbar__right">
99
99
  {showFullscreenButton && (
100
100
  <CapButton
101
101
  type="text"
@@ -153,6 +153,7 @@ const InAppPreviewPane = ({
153
153
  onTouchMove={handleTouchMove}
154
154
  >
155
155
  <CapRow
156
+ useLegacy
156
157
  ref={deviceContainerRef}
157
158
  className={getDeviceContainerClasses()}
158
159
  >
@@ -183,14 +183,14 @@ const PreviewPane = ({
183
183
  // Render Email preview for Email variant
184
184
  return (
185
185
  <div className={`preview-pane ${className}`}>
186
- <CapRow className="preview-pane__mode-controls">
186
+ <CapRow useLegacy className="preview-pane__mode-controls">
187
187
  <PreviewModeGroup
188
188
  value={viewMode}
189
189
  onChange={setViewMode}
190
190
  />
191
191
  </CapRow>
192
192
 
193
- <CapRow className="preview-pane__content">
193
+ <CapRow useLegacy className="preview-pane__content">
194
194
  {iframeContent ? renderDeviceFrame() : renderEmptyState()}
195
195
  </CapRow>
196
196
  </div>
@@ -235,7 +235,7 @@ const SplitContainer = ({
235
235
  className={containerClasses}
236
236
  style={containerStyle}
237
237
  >
238
- <CapRow className="split-container__panel split-container__panel--first">
238
+ <CapRow useLegacy className="split-container__panel split-container__panel--first">
239
239
  {children?.[0]}
240
240
  </CapRow>
241
241
 
@@ -256,7 +256,7 @@ const SplitContainer = ({
256
256
  </div>
257
257
  </div>
258
258
 
259
- <CapRow className="split-container__panel split-container__panel--second">
259
+ <CapRow useLegacy className="split-container__panel split-container__panel--second">
260
260
  {children?.[1]}
261
261
  </CapRow>
262
262
  </div>
@@ -47,7 +47,8 @@
47
47
  &__panel {
48
48
  overflow: hidden;
49
49
  display: flex;
50
- flex-direction: column;
50
+ flex-direction: column !important;
51
+ flex-flow: column nowrap;
51
52
  position: relative;
52
53
  min-width: 0; // Prevent flex items from overflowing
53
54
  min-height: 0;
@@ -14,12 +14,9 @@ import Empty from 'antd/lib/empty';
14
14
  import Spin from 'antd/lib/spin';
15
15
 
16
16
  // Import icons individually
17
- import ExclamationCircleOutlined from '@ant-design/icons/ExclamationCircleOutlined';
18
- import WarningOutlined from '@ant-design/icons/WarningOutlined';
19
- import InfoCircleOutlined from '@ant-design/icons/InfoCircleOutlined';
17
+ // TODO: ShieldOutlined, BugOutlined, EyeInvisibleOutlined have no direct CapIcon equivalent — kept for follow-up
20
18
  import ShieldOutlined from '@ant-design/icons/ShieldOutlined';
21
19
  import BugOutlined from '@ant-design/icons/BugOutlined';
22
- import CodeOutlined from '@ant-design/icons/CodeOutlined';
23
20
  import EyeInvisibleOutlined from '@ant-design/icons/EyeInvisibleOutlined';
24
21
  import CapIcon from '@capillarytech/cap-ui-library/CapIcon';
25
22
 
@@ -90,15 +87,15 @@ const ValidationPanel = ({
90
87
  const getSourceIcon = (source) => {
91
88
  switch (source) {
92
89
  case 'htmlhint':
93
- return <CodeOutlined />;
90
+ return <CapIcon type="code" outlined />;
94
91
  case 'css-validator':
95
- return <CodeOutlined />;
92
+ return <CapIcon type="code" outlined />;
96
93
  case 'security':
97
94
  return <ShieldOutlined />;
98
95
  case 'custom':
99
96
  return <BugOutlined />;
100
97
  default:
101
- return <InfoCircleOutlined />;
98
+ return <CapIcon type="info" outlined />;
102
99
  }
103
100
  };
104
101
 
@@ -213,13 +210,13 @@ const ValidationPanel = ({
213
210
  <div className="validation-panel">
214
211
  <div className="validation-panel__summary">
215
212
  <div className="validation-panel__summary-item">
216
- <ExclamationCircleOutlined style={{ color: '#ff4d4f' }} />
213
+ <CapIcon type="exclamation-circle" outlined style={{ color: '#ff4d4f' }} />
217
214
  <span>{validation?.summary?.totalErrors || 0}</span>
218
215
  <FormattedMessage {...messages.errors} />
219
216
  </div>
220
217
 
221
218
  <div className="validation-panel__summary-item">
222
- <WarningOutlined style={{ color: '#faad14' }} />
219
+ <CapIcon type="warning" outlined style={{ color: '#faad14' }} />
223
220
  <span>{validation?.summary?.totalWarnings || 0}</span>
224
221
  <FormattedMessage {...messages.warnings} />
225
222
  </div>
@@ -247,14 +247,14 @@ const ValidationTabs = ({
247
247
 
248
248
  return (
249
249
  <div className={`validation-tabs ${isCollapsed ? 'validation-tabs--collapsed' : ''} ${className || ''}`}>
250
- <CapRow className="validation-tabs__header">
250
+ <CapRow useLegacy className="validation-tabs__header">
251
251
  <StyledCapTab
252
252
  className="validation-tabs__tabs"
253
253
  activeKey={activeKey || (tabPanes[0]?.key)}
254
254
  onChange={setActiveKey}
255
255
  panes={tabPanes}
256
256
  />
257
- <CapRow className="validation-tabs__actions">
257
+ <CapRow useLegacy className="validation-tabs__actions">
258
258
  <CapTooltip title={collapseLabel}>
259
259
  <button
260
260
  type="button"
@@ -35,7 +35,13 @@ const CapWrapper = styled.div`
35
35
  background-color: #ffffff;
36
36
  width: 100%;
37
37
  display: flex;
38
- margin-top: ${(props) => props.isEmbedded ? '0px' : '64px'}
38
+ margin-top: ${(props) => props.isEmbedded ? '0px' : '64px'};
39
+ .sidebar-container {
40
+ margin-right: 10px;
41
+ }
42
+ .ant-collapse {
43
+ background-color: #ffffff;
44
+ }
39
45
  `;
40
46
 
41
47
  const ComponentWrapper = styled.div`