@capillarytech/creatives-library 8.0.242-alpha.10 → 8.0.242-alpha.11

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 (256) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/config/app.js +1 -1
  4. package/constants/unified.js +2 -2
  5. package/initialReducer.js +0 -2
  6. package/package.json +1 -1
  7. package/services/api.js +5 -10
  8. package/services/tests/api.test.js +0 -18
  9. package/translations/en.json +4 -3
  10. package/utils/common.js +6 -5
  11. package/utils/commonUtils.js +1 -14
  12. package/utils/imageUrlUpload.js +141 -0
  13. package/utils/tests/commonUtil.test.js +0 -224
  14. package/utils/transformTemplateConfig.js +10 -0
  15. package/v2Components/CapDeviceContent/index.js +56 -61
  16. package/v2Components/CapImageUpload/constants.js +2 -0
  17. package/v2Components/CapImageUpload/index.js +65 -16
  18. package/v2Components/CapImageUpload/index.scss +4 -1
  19. package/v2Components/CapImageUpload/messages.js +5 -1
  20. package/v2Components/CapImageUrlUpload/constants.js +26 -0
  21. package/v2Components/CapImageUrlUpload/index.js +365 -0
  22. package/v2Components/CapImageUrlUpload/index.scss +35 -0
  23. package/v2Components/CapImageUrlUpload/messages.js +47 -0
  24. package/v2Components/CapTagList/index.js +1 -6
  25. package/v2Components/CapTagListWithInput/index.js +1 -5
  26. package/v2Components/CapTagListWithInput/messages.js +1 -1
  27. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  28. package/v2Components/ErrorInfoNote/index.js +72 -412
  29. package/v2Components/ErrorInfoNote/messages.js +0 -22
  30. package/v2Components/ErrorInfoNote/style.scss +2 -279
  31. package/v2Components/HtmlEditor/HTMLEditor.js +91 -220
  32. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1132
  33. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +12 -17
  34. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -107
  35. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  36. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -13
  37. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +139 -148
  38. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  39. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  40. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +0 -9
  41. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  42. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  45. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  46. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  47. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  48. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
  49. package/v2Components/HtmlEditor/components/PreviewPane/index.js +11 -10
  50. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  51. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +72 -70
  52. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
  53. package/v2Components/HtmlEditor/constants.js +20 -29
  54. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  55. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  56. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  57. package/v2Components/HtmlEditor/index.js +1 -1
  58. package/v2Components/HtmlEditor/messages.js +85 -95
  59. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +101 -99
  60. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  61. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -34
  62. package/v2Components/MobilePushPreviewV2/index.js +7 -32
  63. package/v2Components/TemplatePreview/_templatePreview.scss +24 -44
  64. package/v2Components/TemplatePreview/index.js +32 -47
  65. package/v2Components/TemplatePreview/messages.js +0 -4
  66. package/v2Components/TestAndPreviewSlidebox/index.js +25 -31
  67. package/v2Containers/App/constants.js +5 -0
  68. package/v2Containers/BeeEditor/index.js +80 -82
  69. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +4 -3
  70. package/v2Containers/CreativesContainer/SlideBoxContent.js +118 -148
  71. package/v2Containers/CreativesContainer/SlideBoxFooter.js +3 -9
  72. package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -2
  73. package/v2Containers/CreativesContainer/constants.js +2 -1
  74. package/v2Containers/CreativesContainer/index.js +41 -173
  75. package/v2Containers/CreativesContainer/messages.js +4 -4
  76. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +210 -0
  77. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +354 -38
  78. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -36
  79. package/v2Containers/Email/actions.js +0 -7
  80. package/v2Containers/Email/constants.js +1 -5
  81. package/v2Containers/Email/index.js +0 -13
  82. package/v2Containers/Email/messages.js +0 -32
  83. package/v2Containers/Email/reducer.js +1 -12
  84. package/v2Containers/Email/sagas.js +6 -41
  85. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  86. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +7 -193
  87. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  88. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  89. package/v2Containers/EmailWrapper/constants.js +0 -2
  90. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +67 -436
  91. package/v2Containers/EmailWrapper/index.js +23 -99
  92. package/v2Containers/EmailWrapper/messages.js +1 -61
  93. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  94. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -111
  95. package/v2Containers/InApp/actions.js +0 -7
  96. package/v2Containers/InApp/constants.js +4 -20
  97. package/v2Containers/InApp/index.js +357 -801
  98. package/v2Containers/InApp/index.scss +3 -4
  99. package/v2Containers/InApp/messages.js +3 -7
  100. package/v2Containers/InApp/reducer.js +3 -21
  101. package/v2Containers/InApp/sagas.js +9 -29
  102. package/v2Containers/InApp/selectors.js +5 -25
  103. package/v2Containers/InApp/tests/index.test.js +50 -154
  104. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  105. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  106. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -12
  107. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
  108. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +100 -77
  109. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +72 -63
  110. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +184 -150
  111. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +16 -12
  112. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +32 -28
  113. package/v2Containers/TagList/index.js +1 -67
  114. package/v2Containers/Templates/ChannelTypeIllustration.js +13 -1
  115. package/v2Containers/Templates/_templates.scss +202 -56
  116. package/v2Containers/Templates/actions.js +2 -1
  117. package/v2Containers/Templates/constants.js +1 -0
  118. package/v2Containers/Templates/index.js +278 -128
  119. package/v2Containers/Templates/messages.js +24 -4
  120. package/v2Containers/Templates/reducer.js +2 -0
  121. package/v2Containers/Templates/tests/index.test.js +10 -0
  122. package/v2Containers/TemplatesV2/index.js +8 -1
  123. package/v2Containers/TemplatesV2/messages.js +4 -0
  124. package/v2Containers/WebPush/Create/components/BrandIconSection.js +108 -0
  125. package/v2Containers/WebPush/Create/components/ButtonForm.js +172 -0
  126. package/v2Containers/WebPush/Create/components/ButtonItem.js +101 -0
  127. package/v2Containers/WebPush/Create/components/ButtonList.js +145 -0
  128. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +164 -0
  129. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +463 -0
  130. package/v2Containers/WebPush/Create/components/FormActions.js +54 -0
  131. package/v2Containers/WebPush/Create/components/FormActions.test.js +163 -0
  132. package/v2Containers/WebPush/Create/components/MediaSection.js +142 -0
  133. package/v2Containers/WebPush/Create/components/MediaSection.test.js +341 -0
  134. package/v2Containers/WebPush/Create/components/MessageSection.js +103 -0
  135. package/v2Containers/WebPush/Create/components/MessageSection.test.js +268 -0
  136. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +87 -0
  137. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +210 -0
  138. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +54 -0
  139. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +143 -0
  140. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +86 -0
  141. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +16 -0
  142. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +41 -0
  143. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +54 -0
  144. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +37 -0
  145. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +21 -0
  146. package/v2Containers/WebPush/Create/components/_buttons.scss +246 -0
  147. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +554 -0
  148. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +607 -0
  149. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +633 -0
  150. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +666 -0
  151. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +74 -0
  152. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +78 -0
  153. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +138 -0
  154. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +406 -0
  155. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +30 -0
  156. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +151 -0
  157. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +104 -0
  158. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +538 -0
  159. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +122 -0
  160. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +633 -0
  161. package/v2Containers/WebPush/Create/index.js +1056 -0
  162. package/v2Containers/WebPush/Create/index.scss +134 -0
  163. package/v2Containers/WebPush/Create/messages.js +203 -0
  164. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +228 -0
  165. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +294 -0
  166. package/v2Containers/WebPush/Create/preview/PreviewContent.js +90 -0
  167. package/v2Containers/WebPush/Create/preview/PreviewControls.js +305 -0
  168. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +23 -0
  169. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +150 -0
  170. package/v2Containers/WebPush/Create/preview/assets/Light.svg +53 -0
  171. package/v2Containers/WebPush/Create/preview/assets/Top.svg +5 -0
  172. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +9 -0
  173. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +9 -0
  174. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  175. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  176. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +106 -0
  177. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +26 -0
  178. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +9 -0
  179. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +9 -0
  180. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +18 -0
  181. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +29 -0
  182. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +9 -0
  183. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +9 -0
  184. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +47 -0
  185. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +141 -0
  186. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +45 -0
  187. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +68 -0
  188. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +61 -0
  189. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +99 -0
  190. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +733 -0
  191. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +571 -0
  192. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +81 -0
  193. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +81 -0
  194. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +50 -0
  195. package/v2Containers/WebPush/Create/preview/constants.js +637 -0
  196. package/v2Containers/WebPush/Create/preview/notification-container.scss +79 -0
  197. package/v2Containers/WebPush/Create/preview/preview.scss +351 -0
  198. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +370 -0
  199. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +12 -0
  200. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +12 -0
  201. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +12 -0
  202. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +47 -0
  203. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +11 -0
  204. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +11 -0
  205. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +11 -0
  206. package/v2Containers/WebPush/Create/preview/styles/_base.scss +207 -0
  207. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +153 -0
  208. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +107 -0
  209. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +101 -0
  210. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +229 -0
  211. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +909 -0
  212. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +1081 -0
  213. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +723 -0
  214. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +943 -0
  215. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +131 -0
  216. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +112 -0
  217. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +144 -0
  218. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +129 -0
  219. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +94 -0
  220. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +390 -0
  221. package/v2Containers/WebPush/Create/utils/previewUtils.js +89 -0
  222. package/v2Containers/WebPush/Create/utils/urlValidation.js +115 -0
  223. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +449 -0
  224. package/v2Containers/WebPush/Create/utils/validation.js +75 -0
  225. package/v2Containers/WebPush/Create/utils/validation.test.js +283 -0
  226. package/v2Containers/WebPush/actions.js +60 -0
  227. package/v2Containers/WebPush/constants.js +128 -0
  228. package/v2Containers/WebPush/index.js +2 -0
  229. package/v2Containers/WebPush/reducer.js +104 -0
  230. package/v2Containers/WebPush/sagas.js +119 -0
  231. package/v2Containers/WebPush/selectors.js +65 -0
  232. package/v2Containers/WebPush/tests/reducer.test.js +863 -0
  233. package/v2Containers/WebPush/tests/sagas.test.js +566 -0
  234. package/v2Containers/WebPush/tests/selectors.test.js +843 -0
  235. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +528 -431
  236. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
  237. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -362
  238. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  239. package/v2Containers/BeePopupEditor/constants.js +0 -10
  240. package/v2Containers/BeePopupEditor/index.js +0 -193
  241. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  242. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1046
  243. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  244. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  245. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  246. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -162
  247. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  248. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -9
  249. package/v2Containers/InAppWrapper/constants.js +0 -16
  250. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  251. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  252. package/v2Containers/InAppWrapper/index.js +0 -148
  253. package/v2Containers/InAppWrapper/messages.js +0 -49
  254. package/v2Containers/InappAdvance/index.js +0 -1099
  255. package/v2Containers/InappAdvance/index.scss +0 -10
  256. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
@@ -9,23 +9,19 @@ import { render, screen, waitFor } from '@testing-library/react';
9
9
  import '@testing-library/jest-dom';
10
10
 
11
11
  // Mock CapSpin before importing the component
12
- jest.mock('@capillarytech/cap-ui-library/CapSpin', () => function MockCapSpin({ size }) {
13
- 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
+ };
14
16
  });
15
17
 
16
18
  // Mock the HTMLEditor component
17
19
  jest.mock('../HTMLEditor', () => {
18
- const MockHTMLEditor = function MockHTMLEditor(props) {
19
- return (
20
- <div data-testid="html-editor">
21
- Mock HTML Editor -
22
- {props.variant}
23
- </div>
24
- );
25
- };
26
20
  return {
27
21
  __esModule: true,
28
- default: MockHTMLEditor,
22
+ default: function MockHTMLEditor(props) {
23
+ return <div data-testid="html-editor">Mock HTML Editor - {props.variant}</div>;
24
+ }
29
25
  };
30
26
  });
31
27
 
@@ -117,8 +113,7 @@ describe('index.lazy.js', () => {
117
113
  expect(screen.getByTestId('html-editor')).toBeInTheDocument();
118
114
  });
119
115
 
120
- const editor = screen.getByTestId('html-editor');
121
- expect(editor.textContent).toBe('Mock HTML Editor -email');
116
+ expect(screen.getByText(/Mock HTML Editor - email/)).toBeInTheDocument();
122
117
  });
123
118
 
124
119
  it('shows fallback while loading', async () => {
@@ -139,7 +134,7 @@ describe('index.lazy.js', () => {
139
134
  <HTMLEditorLazy
140
135
  variant="inapp"
141
136
  onSave={mockOnSave}
142
- readOnly
137
+ readOnly={true}
143
138
  className="custom-class"
144
139
  />
145
140
  );
@@ -148,8 +143,7 @@ describe('index.lazy.js', () => {
148
143
  expect(screen.getByTestId('html-editor')).toBeInTheDocument();
149
144
  });
150
145
 
151
- const editor = screen.getByTestId('html-editor');
152
- expect(editor.textContent).toBe('Mock HTML Editor -inapp');
146
+ expect(screen.getByText(/Mock HTML Editor - inapp/)).toBeInTheDocument();
153
147
  });
154
148
 
155
149
  it('has correct display name', async () => {
@@ -221,7 +215,7 @@ describe('index.lazy.js', () => {
221
215
  render(
222
216
  <HTMLEditorLazy
223
217
  className="custom-editor"
224
- readOnly
218
+ readOnly={true}
225
219
  showFullscreenButton={false}
226
220
  autoSave={false}
227
221
  autoSaveInterval={60000}
@@ -535,3 +529,4 @@ describe('index.lazy.js', () => {
535
529
  });
536
530
  });
537
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,46 +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
- max-height: calc(95vh - 5%); // Same as editor pane
234
+ max-height: 65vh; // Account for modal header
284
235
  }
285
236
 
286
237
  iframe {
287
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
288
- max-height: calc(95vh - 5%);
238
+ height: 60vh; // Larger iframe in fullscreen
239
+ max-height: 60vh;
289
240
  }
290
241
  }
291
242
  }
292
243
  }
293
244
 
294
- // Fullscreen modal library mode styles (outside .html-editor block since fullscreen is a separate element)
295
- .html-editor-fullscreen--library-mode {
296
- .preview-pane {
297
- max-height: calc(95vh - 5%);
298
-
299
- &__content {
300
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
301
- max-height: calc(95vh - 50%);
302
- }
303
-
304
- iframe {
305
- height: calc(95vh - 5%); // Same as editor pane - maximize to full available height
306
- max-height: calc(95vh - 50%);
307
- }
308
- }
309
- }
310
-
311
245
  // Animation classes for smooth transitions
312
246
  .html-editor-transition {
313
247
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
@@ -333,6 +267,10 @@
333
267
 
334
268
  // Focus states and accessibility
335
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
+ }
336
274
 
337
275
  // High contrast mode support
338
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,7 +113,7 @@
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
 
@@ -57,17 +130,6 @@
57
130
  }
58
131
  }
59
132
 
60
- // Add Label button visibility: 50% opacity while typing, 100% on hover
61
- .code-editor-pane__actions {
62
- opacity: 0.5; // 50% transparent while typing
63
- pointer-events: auto; // Always clickable
64
- transition: opacity 0.2s ease;
65
-
66
- &:hover {
67
- opacity: 1; // Fully visible on hover
68
- }
69
- }
70
-
71
133
  .cm-foldGutter {
72
134
  width: 1rem;
73
135
 
@@ -161,7 +223,7 @@
161
223
  .codemirror-wrapper {
162
224
  position: relative;
163
225
  height: 100%;
164
- max-height: 34.25rem;
226
+ max-height: 31.25rem;
165
227
  background-color: $CAP_G01;
166
228
  border-radius: 0;
167
229
  overflow: hidden;
@@ -172,6 +234,31 @@
172
234
  top: 0.5rem;
173
235
  right: 0.5rem;
174
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
+ }
175
262
  }
176
263
 
177
264
  .codemirror-editor {
@@ -209,6 +296,7 @@
209
296
  }
210
297
 
211
298
  .cm-gutters {
299
+ background-color: var(--editor-gutter-bg, $CAP_G02);
212
300
  border-right: 0.0625rem solid var(--editor-border, $CAP_G04);
213
301
  color: var(--editor-gutter-foreground, $FONT_COLOR_02);
214
302
  }