@capillarytech/creatives-library 8.0.250-alpha.2 → 8.0.251

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 (276) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/constants/unified.js +1 -3
  4. package/initialReducer.js +0 -2
  5. package/package.json +1 -1
  6. package/services/api.js +0 -15
  7. package/services/tests/api.test.js +0 -34
  8. package/translations/en.json +3 -4
  9. package/utils/common.js +0 -11
  10. package/utils/commonUtils.js +5 -28
  11. package/utils/tests/commonUtil.test.js +0 -224
  12. package/utils/tests/transformerUtils.test.js +0 -297
  13. package/utils/transformTemplateConfig.js +10 -0
  14. package/utils/transformerUtils.js +0 -40
  15. package/v2Components/CapDeviceContent/index.js +56 -61
  16. package/v2Components/CapImageUpload/constants.js +0 -2
  17. package/v2Components/CapImageUpload/index.js +16 -65
  18. package/v2Components/CapImageUpload/index.scss +1 -4
  19. package/v2Components/CapImageUpload/messages.js +1 -5
  20. package/v2Components/CapTagList/index.js +1 -6
  21. package/v2Components/CapTagListWithInput/index.js +1 -5
  22. package/v2Components/CapTagListWithInput/messages.js +1 -1
  23. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  24. package/v2Components/ErrorInfoNote/index.js +72 -455
  25. package/v2Components/ErrorInfoNote/messages.js +6 -36
  26. package/v2Components/ErrorInfoNote/style.scss +4 -280
  27. package/v2Components/FormBuilder/tests/index.test.js +4 -13
  28. package/v2Components/HtmlEditor/HTMLEditor.js +94 -547
  29. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1358
  30. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
  31. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
  32. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  33. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -22
  34. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -146
  35. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  36. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  37. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +0 -9
  38. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  39. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  40. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  41. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  45. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
  46. package/v2Components/HtmlEditor/components/PreviewPane/index.js +34 -24
  47. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  48. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
  49. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
  50. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -50
  51. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +41 -70
  52. package/v2Components/HtmlEditor/constants.js +20 -42
  53. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  54. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  55. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  56. package/v2Components/HtmlEditor/hooks/useValidation.js +53 -189
  57. package/v2Components/HtmlEditor/index.js +1 -1
  58. package/v2Components/HtmlEditor/messages.js +85 -95
  59. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -94
  60. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
  61. package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
  62. package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
  63. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +102 -134
  64. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  65. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
  66. package/v2Components/MobilePushPreviewV2/index.js +7 -32
  67. package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
  68. package/v2Components/TemplatePreview/index.js +32 -47
  69. package/v2Components/TemplatePreview/messages.js +0 -4
  70. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
  71. package/v2Containers/App/constants.js +0 -5
  72. package/v2Containers/BeeEditor/index.js +90 -172
  73. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +3 -4
  74. package/v2Containers/CreativesContainer/SlideBoxContent.js +53 -184
  75. package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
  76. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -3
  77. package/v2Containers/CreativesContainer/constants.js +0 -4
  78. package/v2Containers/CreativesContainer/index.js +46 -407
  79. package/v2Containers/CreativesContainer/messages.js +0 -12
  80. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  81. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
  82. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -342
  83. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -106
  84. package/v2Containers/Email/actions.js +0 -7
  85. package/v2Containers/Email/constants.js +1 -5
  86. package/v2Containers/Email/index.js +29 -234
  87. package/v2Containers/Email/messages.js +0 -32
  88. package/v2Containers/Email/reducer.js +1 -12
  89. package/v2Containers/Email/sagas.js +7 -61
  90. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  91. package/v2Containers/Email/tests/reducer.test.js +0 -46
  92. package/v2Containers/Email/tests/sagas.test.js +29 -320
  93. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +19 -207
  94. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  95. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  96. package/v2Containers/EmailWrapper/constants.js +0 -2
  97. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
  98. package/v2Containers/EmailWrapper/index.js +23 -103
  99. package/v2Containers/EmailWrapper/messages.js +1 -61
  100. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  101. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
  102. package/v2Containers/InApp/actions.js +0 -7
  103. package/v2Containers/InApp/constants.js +4 -20
  104. package/v2Containers/InApp/index.js +359 -802
  105. package/v2Containers/InApp/index.scss +3 -4
  106. package/v2Containers/InApp/messages.js +3 -7
  107. package/v2Containers/InApp/reducer.js +3 -21
  108. package/v2Containers/InApp/sagas.js +9 -29
  109. package/v2Containers/InApp/selectors.js +5 -25
  110. package/v2Containers/InApp/tests/index.test.js +50 -154
  111. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  112. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  113. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +9 -15
  114. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +6 -10
  115. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +75 -102
  116. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +54 -81
  117. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +174 -244
  118. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
  119. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +36 -52
  120. package/v2Containers/TagList/index.js +19 -62
  121. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  122. package/v2Containers/Templates/_templates.scss +1 -265
  123. package/v2Containers/Templates/actions.js +1 -2
  124. package/v2Containers/Templates/constants.js +0 -1
  125. package/v2Containers/Templates/index.js +38 -363
  126. package/v2Containers/Templates/messages.js +0 -28
  127. package/v2Containers/Templates/reducer.js +0 -4
  128. package/v2Containers/Templates/tests/index.test.js +0 -10
  129. package/v2Containers/TemplatesV2/index.js +7 -15
  130. package/v2Containers/TemplatesV2/messages.js +0 -4
  131. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +486 -682
  132. package/utils/imageUrlUpload.js +0 -141
  133. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  134. package/v2Components/CapImageUrlUpload/index.js +0 -365
  135. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  136. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  137. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -874
  138. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
  139. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
  140. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -364
  141. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  142. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.apiErrors.test.js +0 -795
  143. package/v2Components/HtmlEditor/utils/validationConstants.js +0 -40
  144. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
  145. package/v2Containers/BeePopupEditor/constants.js +0 -10
  146. package/v2Containers/BeePopupEditor/index.js +0 -194
  147. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  148. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1285
  149. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -1870
  150. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
  151. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -643
  152. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  153. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  154. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  155. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
  156. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  157. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
  158. package/v2Containers/InAppWrapper/constants.js +0 -16
  159. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  160. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  161. package/v2Containers/InAppWrapper/index.js +0 -148
  162. package/v2Containers/InAppWrapper/messages.js +0 -49
  163. package/v2Containers/InappAdvance/index.js +0 -1099
  164. package/v2Containers/InappAdvance/index.scss +0 -10
  165. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
  166. package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
  167. package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
  168. package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
  169. package/v2Containers/WebPush/Create/components/ButtonList.js +0 -107
  170. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -160
  171. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -476
  172. package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
  173. package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
  174. package/v2Containers/WebPush/Create/components/MediaSection.js +0 -143
  175. package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
  176. package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
  177. package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
  178. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
  179. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
  180. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
  181. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
  182. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -82
  183. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
  184. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
  185. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
  186. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
  187. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
  188. package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
  189. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
  190. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
  191. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -515
  192. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
  193. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
  194. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -46
  195. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -150
  196. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
  197. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
  198. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
  199. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
  200. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
  201. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
  202. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
  203. package/v2Containers/WebPush/Create/index.js +0 -1148
  204. package/v2Containers/WebPush/Create/index.scss +0 -134
  205. package/v2Containers/WebPush/Create/messages.js +0 -203
  206. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
  207. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
  208. package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
  209. package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
  210. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -23
  211. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
  212. package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
  213. package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
  214. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
  215. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
  216. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  217. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  218. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
  219. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
  220. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
  221. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
  222. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
  223. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
  224. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
  225. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
  226. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -47
  227. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -141
  228. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
  229. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
  230. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
  231. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
  232. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
  233. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
  234. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -81
  235. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
  236. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
  237. package/v2Containers/WebPush/Create/preview/constants.js +0 -637
  238. package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
  239. package/v2Containers/WebPush/Create/preview/preview.scss +0 -351
  240. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
  241. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
  242. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
  243. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
  244. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
  245. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
  246. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
  247. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
  248. package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
  249. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
  250. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
  251. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
  252. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
  253. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
  254. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
  255. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
  256. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
  257. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
  258. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
  259. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
  260. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
  261. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
  262. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
  263. package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
  264. package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
  265. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
  266. package/v2Containers/WebPush/Create/utils/validation.js +0 -75
  267. package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
  268. package/v2Containers/WebPush/actions.js +0 -60
  269. package/v2Containers/WebPush/constants.js +0 -132
  270. package/v2Containers/WebPush/index.js +0 -2
  271. package/v2Containers/WebPush/reducer.js +0 -104
  272. package/v2Containers/WebPush/sagas.js +0 -119
  273. package/v2Containers/WebPush/selectors.js +0 -65
  274. package/v2Containers/WebPush/tests/reducer.test.js +0 -863
  275. package/v2Containers/WebPush/tests/sagas.test.js +0 -566
  276. package/v2Containers/WebPush/tests/selectors.test.js +0 -960
@@ -5,31 +5,23 @@
5
5
  */
6
6
 
7
7
  import React from 'react';
8
- import {
9
- render, screen, waitFor, act,
10
- } from '@testing-library/react';
8
+ import { render, screen, waitFor } from '@testing-library/react';
11
9
  import '@testing-library/jest-dom';
12
10
 
13
11
  // Mock CapSpin before importing the component
14
- jest.mock('@capillarytech/cap-ui-library/CapSpin', () => function MockCapSpin({ size }) {
15
- return <div data-testid="cap-spin" data-size={size}>Loading...</div>;
12
+ jest.mock('@capillarytech/cap-ui-library/CapSpin', () => {
13
+ return function MockCapSpin({ size }) {
14
+ return <div data-testid="cap-spin" data-size={size}>Loading...</div>;
15
+ };
16
16
  });
17
17
 
18
18
  // Mock the HTMLEditor component
19
- // Note: React.lazy() expects a function that returns a promise
20
- // The mock needs to be set up before the lazy import happens
21
19
  jest.mock('../HTMLEditor', () => {
22
- const MockHTMLEditor = function MockHTMLEditor(props) {
23
- return (
24
- <div data-testid="html-editor">
25
- Mock HTML Editor -
26
- {props.variant}
27
- </div>
28
- );
29
- };
30
20
  return {
31
21
  __esModule: true,
32
- default: MockHTMLEditor,
22
+ default: function MockHTMLEditor(props) {
23
+ return <div data-testid="html-editor">Mock HTML Editor - {props.variant}</div>;
24
+ }
33
25
  };
34
26
  });
35
27
 
@@ -114,17 +106,14 @@ describe('index.lazy.js', () => {
114
106
  it('renders the lazy loaded component', async () => {
115
107
  const HTMLEditorLazy = (await import('../index.lazy')).default;
116
108
 
117
- await act(async () => {
118
- render(<HTMLEditorLazy variant="email" />);
119
- });
109
+ render(<HTMLEditorLazy variant="email" />);
120
110
 
121
- // Wait for lazy component to load - increase timeout and wait for Suspense to resolve
111
+ // Wait for lazy component to load
122
112
  await waitFor(() => {
123
113
  expect(screen.getByTestId('html-editor')).toBeInTheDocument();
124
- }, { timeout: 3000 });
114
+ });
125
115
 
126
- const editor = screen.getByTestId('html-editor');
127
- expect(editor.textContent).toBe('Mock HTML Editor -email');
116
+ expect(screen.getByText(/Mock HTML Editor - email/)).toBeInTheDocument();
128
117
  });
129
118
 
130
119
  it('shows fallback while loading', async () => {
@@ -145,7 +134,7 @@ describe('index.lazy.js', () => {
145
134
  <HTMLEditorLazy
146
135
  variant="inapp"
147
136
  onSave={mockOnSave}
148
- readOnly
137
+ readOnly={true}
149
138
  className="custom-class"
150
139
  />
151
140
  );
@@ -154,8 +143,7 @@ describe('index.lazy.js', () => {
154
143
  expect(screen.getByTestId('html-editor')).toBeInTheDocument();
155
144
  });
156
145
 
157
- const editor = screen.getByTestId('html-editor');
158
- expect(editor.textContent).toBe('Mock HTML Editor -inapp');
146
+ expect(screen.getByText(/Mock HTML Editor - inapp/)).toBeInTheDocument();
159
147
  });
160
148
 
161
149
  it('has correct display name', async () => {
@@ -227,7 +215,7 @@ describe('index.lazy.js', () => {
227
215
  render(
228
216
  <HTMLEditorLazy
229
217
  className="custom-editor"
230
- readOnly
218
+ readOnly={true}
231
219
  showFullscreenButton={false}
232
220
  autoSave={false}
233
221
  autoSaveInterval={60000}
@@ -541,3 +529,4 @@ describe('index.lazy.js', () => {
541
529
  });
542
530
  });
543
531
  });
532
+
@@ -5,71 +5,38 @@
5
5
  */
6
6
 
7
7
  // Import Cap UI variables (correct path)
8
- @import "~@capillarytech/cap-ui-library/styles/_variables.scss";
8
+ @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
9
9
 
10
10
  // Fullscreen modal header styling - using proper CSS specificity instead of !important
11
11
  .html-editor-fullscreen {
12
- // INAPP variant only: Fullscreen header styling
13
- &--inapp {
14
- .html-editor__header--fullscreen {
15
- display: flex;
16
- align-items: center;
17
- background-color: $CAP_G10;
18
- border-bottom: 0.0625rem solid $CAP_G08;
19
- padding-right: 1rem;
20
-
21
- // Device toggle takes available space
22
- .device-toggle {
23
- flex: 1;
24
- }
25
-
26
- // Toolbar styling in fullscreen mode - INAPP variant only
27
- .editor-toolbar {
28
- background-color: transparent;
29
- border-bottom: none;
30
- padding: 0;
31
- min-height: 3.25rem;
32
- height: 3.25rem;
33
- position: relative;
12
+ .html-editor__header--fullscreen {
13
+ display: flex;
14
+ align-items: center;
15
+ background-color: $CAP_G10;
16
+ border-bottom: 0.0625rem solid $CAP_G08;
17
+ padding-right: 1rem;
34
18
 
35
- // Right-align toolbar actions
36
- &__right {
37
- margin-left: auto;
38
- }
39
- }
19
+ // Device toggle takes available space
20
+ .device-toggle {
21
+ flex: 1;
40
22
  }
41
23
 
42
- // Library mode: Position absolute for toolbar in fullscreen (INAPP variant only)
43
- // Using higher specificity to override _fullscreenModal.scss styles
44
- &.html-editor-fullscreen--library-mode {
45
- .html-editor__header--fullscreen {
46
- .editor-toolbar,
47
- .editor-toolbar.editor-toolbar,
48
- .ant-layout-header.editor-toolbar {
49
- position: absolute;
50
- }
24
+ // Toolbar styling in fullscreen mode
25
+ .editor-toolbar {
26
+ background-color: transparent;
27
+ border-bottom: none;
28
+ padding: 0;
29
+ min-height: 3.25rem;
30
+ height: 3.25rem;
31
+
32
+ // Right-align toolbar actions
33
+ &__right {
34
+ margin-left: auto;
51
35
  }
52
36
  }
53
37
  }
54
38
  }
55
39
 
56
- // Additional library mode overrides for fullscreen with maximum specificity
57
- // These match the high-specificity selectors in _fullscreenModal.scss
58
- .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar,
59
- .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar.editor-toolbar,
60
- .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .ant-layout-header.editor-toolbar,
61
- .html-editor.html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar,
62
- .html-editor.html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar.editor-toolbar,
63
- .html-editor.html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .ant-layout-header.editor-toolbar,
64
- .ant-modal .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar,
65
- .ant-modal .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar.editor-toolbar,
66
- .ant-modal .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .ant-layout-header.editor-toolbar,
67
- .ant-modal-content .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar,
68
- .ant-modal-content .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .editor-toolbar.editor-toolbar,
69
- .ant-modal-content .html-editor-fullscreen--inapp.html-editor-fullscreen--library-mode .html-editor__header--fullscreen .ant-layout-header.editor-toolbar {
70
- position: absolute;
71
- }
72
-
73
40
  .html-editor {
74
41
  height: 37.5rem; // Fixed height instead of 100vh (600px = 37.5rem)
75
42
  max-height: 80vh; // Responsive maximum height
@@ -81,23 +48,6 @@
81
48
  border-radius: 0.25rem;
82
49
  overflow: hidden;
83
50
 
84
- // Library mode: Apply specific styles when isFullMode is false
85
- &.html-editor--library-mode {
86
- .preview-pane {
87
- max-height: calc(95vh - 5%);
88
-
89
- &__content {
90
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
91
- max-height: calc(95vh - 50%);
92
- }
93
-
94
- iframe {
95
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
96
- max-height: calc(95vh - 50%);
97
- }
98
- }
99
- }
100
-
101
51
  &.fullscreen {
102
52
  position: fixed;
103
53
  top: 0;
@@ -133,6 +83,19 @@
133
83
  flex-direction: column;
134
84
  }
135
85
 
86
+ // Validation Error Display - Full Width Below Split Container
87
+ &-validation {
88
+ margin-top: 1rem; // 16px = 1rem
89
+
90
+ // Ensure ErrorInfoNote fits well in the editor layout
91
+ .error-container {
92
+ width: 100%; // Full width instead of max-content
93
+ margin-top: 0;
94
+ margin-bottom: 0;
95
+ border-radius: 0.25rem;
96
+ }
97
+ }
98
+
136
99
  // Split container - integrated design
137
100
  &-split-container {
138
101
  flex: 1;
@@ -165,7 +128,6 @@
165
128
  padding: 0;
166
129
  min-height: 3.25rem; // 52px = 3.25rem
167
130
  height: 3.25rem;
168
- position: relative;
169
131
 
170
132
  // Right-align toolbar actions
171
133
  &__right {
@@ -173,20 +135,9 @@
173
135
  }
174
136
  }
175
137
  }
176
-
177
- // Library mode: Position absolute for toolbar in InApp variant
178
- // Using higher specificity to override default position: relative
179
- &.html-editor--library-mode {
180
- .html-editor__header {
181
- .editor-toolbar,
182
- .editor-toolbar.editor-toolbar,
183
- .ant-layout-header.editor-toolbar {
184
- position: absolute;
185
- }
186
- }
187
- }
188
138
  }
189
139
 
140
+
190
141
  // Responsive design
191
142
  @media (max-width: 768px) {
192
143
  height: 31.25rem; // 500px = 31.25rem - Smaller height on tablets
@@ -268,47 +219,29 @@
268
219
  .code-editor-pane {
269
220
  .codemirror-wrapper {
270
221
  height: 100%;
271
- max-height: calc(95vh - 5%); // 95% of viewport height with 5% gap
222
+ max-height: 70vh; // Larger height in fullscreen
272
223
  }
273
224
 
274
225
  &__content {
275
- max-height: calc(95vh - 5%); // 95% of viewport height with 5% gap
226
+ max-height: 70vh; // Larger height in fullscreen
276
227
  }
277
228
  }
278
229
 
279
230
  .preview-pane {
280
- max-height: calc(95vh - 5%); // Same as editor pane - 95% of viewport height with 5% gap
231
+ max-height: 70vh; // Larger height in fullscreen
281
232
 
282
233
  &__content {
283
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
284
- max-height: calc(95vh - 50%);
234
+ max-height: 65vh; // Account for modal header
285
235
  }
286
236
 
287
237
  iframe {
288
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
289
- max-height: calc(95vh - 50%);
238
+ height: 60vh; // Larger iframe in fullscreen
239
+ max-height: 60vh;
290
240
  }
291
241
  }
292
242
  }
293
243
  }
294
244
 
295
- // Fullscreen modal library mode styles (outside .html-editor block since fullscreen is a separate element)
296
- .html-editor-fullscreen--library-mode {
297
- .preview-pane {
298
- max-height: calc(95vh - 5%);
299
-
300
- &__content {
301
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
302
- max-height: calc(95vh - 50%);
303
- }
304
-
305
- iframe {
306
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
307
- max-height: calc(95vh - 50%);
308
- }
309
- }
310
- }
311
-
312
245
  // Animation classes for smooth transitions
313
246
  .html-editor-transition {
314
247
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
@@ -334,6 +267,10 @@
334
267
 
335
268
  // Focus states and accessibility
336
269
  .html-editor {
270
+ &:focus-within {
271
+ outline: 0.125rem solid map-get($CAP_PRIMARY, base); // 2px = 0.125rem
272
+ outline-offset: -0.125rem; // -2px = -0.125rem
273
+ }
337
274
 
338
275
  // High contrast mode support
339
276
  @media (prefers-contrast: high) {
@@ -13,7 +13,7 @@
13
13
  align-items: center;
14
14
  min-height: 25rem; // 400px = 25rem
15
15
  background: $CAP_G11; // Light background similar to #fafbfc
16
- // border: 0.0625rem solid $CAP_G07; // 1px border similar to #dfe2e7
16
+ border: 0.0625rem solid $CAP_G07; // 1px border similar to #dfe2e7
17
17
  border-radius: 0.5rem; // 8px = 0.5rem
18
18
  flex-direction: column;
19
19
  gap: 1rem; // 16px = 1rem
@@ -31,6 +31,79 @@
31
31
  display: flex;
32
32
  align-items: center;
33
33
  gap: 0.5rem;
34
+
35
+ .cap-button,
36
+ .ant-btn,
37
+ button {
38
+ color: map-get($CAP_PRIMARY, base);
39
+ border: none;
40
+ background: $CAP_WHITE;
41
+ border-radius: 0.25rem;
42
+ padding: 0.375rem 0.5rem;
43
+ font-size: 0.875rem;
44
+ font-family: $FONT_FAMILY;
45
+ font-weight: 500;
46
+ height: auto;
47
+ min-width: 5.9375rem;
48
+ display: flex;
49
+ align-items: center;
50
+ gap: 0.25rem;
51
+ box-shadow: 0 0 0.0625rem 0 rgba(9, 30, 66, 0.31), 0 0.25rem 0.5rem -0.125rem rgba(9, 30, 66, 0.25);
52
+ line-height: 1.25rem;
53
+ text-align: left;
54
+
55
+ &:hover {
56
+ background: $CAP_G09;
57
+ box-shadow: 0 0 0.0625rem 0 rgba(9, 30, 66, 0.31), 0 0.375rem 0.75rem -0.125rem rgba(9, 30, 66, 0.25);
58
+ color: map-get($CAP_PRIMARY, base);
59
+ border: none;
60
+ }
61
+
62
+ &:active,
63
+ &:focus {
64
+ background: $CAP_G08;
65
+ box-shadow: 0 0 0.0625rem 0 rgba(9, 30, 66, 0.31), 0 0.125rem 0.25rem -0.125rem rgba(9, 30, 66, 0.25);
66
+ color: map-get($CAP_PRIMARY, base);
67
+ border: none;
68
+ }
69
+
70
+ .anticon,
71
+ .cap-icon {
72
+ font-size: 1rem;
73
+ color: map-get($CAP_PRIMARY, base);
74
+ }
75
+
76
+ span {
77
+ font-size: 0.875rem;
78
+ font-weight: 500;
79
+ line-height: 1.25rem;
80
+ color: map-get($CAP_PRIMARY, base);
81
+ white-space: nowrap;
82
+ }
83
+
84
+ &:before,
85
+ &:after {
86
+ display: none;
87
+ }
88
+ }
89
+
90
+ .tooltip-add-label-container {
91
+
92
+ .cap-button,
93
+ .ant-btn {
94
+ color: map-get($CAP_PRIMARY, base);
95
+ background: $CAP_WHITE;
96
+ border: none;
97
+ box-shadow: 0 0 0.0625rem 0 rgba(9, 30, 66, 0.31), 0 0.25rem 0.5rem -0.125rem rgba(9, 30, 66, 0.25);
98
+ }
99
+ }
100
+
101
+ .cap-button-flat,
102
+ .cap-button-add {
103
+ background: $CAP_WHITE;
104
+ color: map-get($CAP_PRIMARY, base);
105
+ border: none;
106
+ }
34
107
  }
35
108
 
36
109
  &__content {
@@ -40,17 +113,10 @@
40
113
  overflow: auto;
41
114
  position: relative;
42
115
  height: 100%;
43
- max-height: 34.25rem;
116
+ max-height: 31.25rem;
44
117
  background-color: $CAP_G01;
45
118
  }
46
119
 
47
- &__wrapper {
48
- display: flex;
49
- flex-direction: column;
50
- height: 100%;
51
- width: 100%;
52
- }
53
-
54
120
  &__validation {
55
121
  border-top: 0.0625rem solid $CAP_G04;
56
122
  background: $CAP_G03;
@@ -64,17 +130,6 @@
64
130
  }
65
131
  }
66
132
 
67
- // Add Label button visibility: 50% opacity while typing, 100% on hover
68
- .code-editor-pane__actions {
69
- opacity: 0.5; // 50% transparent while typing
70
- pointer-events: auto; // Always clickable
71
- transition: opacity 0.2s ease;
72
-
73
- &:hover {
74
- opacity: 1; // Fully visible on hover
75
- }
76
- }
77
-
78
133
  .cm-foldGutter {
79
134
  width: 1rem;
80
135
 
@@ -168,19 +223,42 @@
168
223
  .codemirror-wrapper {
169
224
  position: relative;
170
225
  height: 100%;
171
- max-height: 34.25rem;
226
+ max-height: 31.25rem;
172
227
  background-color: $CAP_G01;
173
228
  border-radius: 0;
174
229
  overflow: hidden;
175
230
  display: flex;
176
- flex: 1 1 auto;
177
- min-height: 0;
178
231
 
179
232
  .code-editor-pane__actions {
180
233
  position: absolute;
181
234
  top: 0.5rem;
182
235
  right: 0.5rem;
183
236
  z-index: 20;
237
+
238
+ .cap-button,
239
+ .ant-btn,
240
+ button {
241
+ background: $CAP_WHITE;
242
+ color: map-get($CAP_PRIMARY, base);
243
+ border: none;
244
+ border-radius: 0.25rem;
245
+ padding: 0.375rem 0.5rem;
246
+ font-size: 0.875rem;
247
+ font-family: $FONT_FAMILY;
248
+ font-weight: 500;
249
+ min-width: 5.9375rem;
250
+ box-shadow: 0 0 0.0625rem 0 rgba(9, 30, 66, 0.31), 0 0.25rem 0.5rem -0.125rem rgba(9, 30, 66, 0.25);
251
+
252
+ &:hover {
253
+ background: $CAP_G09;
254
+ color: map-get($CAP_PRIMARY, base);
255
+ }
256
+
257
+ &:active {
258
+ background: $CAP_G08;
259
+ color: map-get($CAP_PRIMARY, base);
260
+ }
261
+ }
184
262
  }
185
263
 
186
264
  .codemirror-editor {
@@ -218,6 +296,7 @@
218
296
  }
219
297
 
220
298
  .cm-gutters {
299
+ background-color: var(--editor-gutter-bg, $CAP_G02);
221
300
  border-right: 0.0625rem solid var(--editor-border, $CAP_G04);
222
301
  color: var(--editor-gutter-foreground, $FONT_COLOR_02);
223
302
  }