@capillarytech/creatives-library 8.0.208 → 8.0.209
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.
- package/assets/Android.png +0 -0
- package/assets/iOS.png +0 -0
- package/config/app.js +1 -2
- package/package.json +16 -2
- package/services/api.js +0 -2
- package/v2Components/HtmlEditor/HTMLEditor.js +508 -0
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +1809 -0
- package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +532 -0
- package/v2Components/HtmlEditor/_htmlEditor.scss +304 -0
- package/v2Components/HtmlEditor/_index.lazy.scss +26 -0
- package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +376 -0
- package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +331 -0
- package/v2Components/HtmlEditor/components/DeviceToggle/__tests__/index.test.js +314 -0
- package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +244 -0
- package/v2Components/HtmlEditor/components/DeviceToggle/index.js +111 -0
- package/v2Components/HtmlEditor/components/EditorToolbar/PreviewModeGroup.js +72 -0
- package/v2Components/HtmlEditor/components/EditorToolbar/__tests__/PreviewModeGroup.test.js +1594 -0
- package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +113 -0
- package/v2Components/HtmlEditor/components/EditorToolbar/_previewModeGroup.scss +82 -0
- package/v2Components/HtmlEditor/components/EditorToolbar/index.js +115 -0
- package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +57 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/ContentOverlay.js +90 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +60 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/LayoutSelector.js +58 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/ContentOverlay.test.js +389 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +424 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/LayoutSelector.test.js +248 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +253 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +104 -0
- package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +179 -0
- package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +220 -0
- package/v2Components/HtmlEditor/components/PreviewPane/index.js +229 -0
- package/v2Components/HtmlEditor/components/SplitContainer/SplitContainer.js +276 -0
- package/v2Components/HtmlEditor/components/SplitContainer/__tests__/SplitContainer.test.js +295 -0
- package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +257 -0
- package/v2Components/HtmlEditor/components/SplitContainer/index.js +7 -0
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/_validationErrorDisplay.scss +31 -0
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +70 -0
- package/v2Components/HtmlEditor/components/ValidationPanel/__tests__/index.test.js +98 -0
- package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +311 -0
- package/v2Components/HtmlEditor/components/ValidationPanel/index.js +297 -0
- package/v2Components/HtmlEditor/components/ValidationPanel/messages.js +57 -0
- package/v2Components/HtmlEditor/components/common/EditorContext.js +84 -0
- package/v2Components/HtmlEditor/components/common/__tests__/EditorContext.test.js +660 -0
- package/v2Components/HtmlEditor/constants.js +241 -0
- package/v2Components/HtmlEditor/hooks/__tests__/useEditorContent.test.js +450 -0
- package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +785 -0
- package/v2Components/HtmlEditor/hooks/__tests__/useLayoutState.test.js +580 -0
- package/v2Components/HtmlEditor/hooks/__tests__/useValidation.enhanced.test.js +768 -0
- package/v2Components/HtmlEditor/hooks/__tests__/useValidation.test.js +590 -0
- package/v2Components/HtmlEditor/hooks/useEditorContent.js +274 -0
- package/v2Components/HtmlEditor/hooks/useInAppContent.js +407 -0
- package/v2Components/HtmlEditor/hooks/useLayoutState.js +247 -0
- package/v2Components/HtmlEditor/hooks/useValidation.js +325 -0
- package/v2Components/HtmlEditor/index.js +29 -0
- package/v2Components/HtmlEditor/index.lazy.js +114 -0
- package/v2Components/HtmlEditor/messages.js +389 -0
- package/v2Components/HtmlEditor/utils/__tests__/contentSanitizer.test.js +741 -0
- package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +1042 -0
- package/v2Components/HtmlEditor/utils/__tests__/liquidTemplateSupport.test.js +515 -0
- package/v2Components/HtmlEditor/utils/__tests__/properSyntaxHighlighting.test.js +473 -0
- package/v2Components/HtmlEditor/utils/__tests__/simplePerformance.test.js +1109 -0
- package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +240 -0
- package/v2Components/HtmlEditor/utils/contentSanitizer.js +433 -0
- package/v2Components/HtmlEditor/utils/htmlValidator.js +508 -0
- package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +524 -0
- package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +163 -0
- package/v2Components/HtmlEditor/utils/simplePerformance.js +145 -0
- package/v2Components/HtmlEditor/utils/validationAdapter.js +130 -0
- package/v2Containers/CreativesContainer/SlideBoxContent.js +0 -2
- package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +200 -0
- package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +545 -0
- package/v2Containers/EmailWrapper/index.js +8 -1
- package/v2Containers/Templates/constants.js +8 -0
- package/v2Containers/Templates/index.js +56 -28
- package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +5 -14
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML Editor Messages
|
|
3
|
+
*
|
|
4
|
+
* Internationalization messages for the HTML Editor component
|
|
5
|
+
* Following project conventions for message structure
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { defineMessages } from 'react-intl';
|
|
9
|
+
|
|
10
|
+
export const scope = 'app.components.HtmlEditor';
|
|
11
|
+
|
|
12
|
+
export default defineMessages({
|
|
13
|
+
// Main component messages
|
|
14
|
+
initializing: {
|
|
15
|
+
id: `${scope}.initializing`,
|
|
16
|
+
defaultMessage: 'Initializing HTML Editor...'
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
// Label insertion messages
|
|
20
|
+
addLabel: {
|
|
21
|
+
id: `${scope}.addLabel`,
|
|
22
|
+
defaultMessage: 'Add label'
|
|
23
|
+
},
|
|
24
|
+
labelInserted: {
|
|
25
|
+
id: `${scope}.labelInserted`,
|
|
26
|
+
defaultMessage: 'Label inserted successfully'
|
|
27
|
+
},
|
|
28
|
+
labelInsertedDescription: {
|
|
29
|
+
id: `${scope}.labelInsertedDescription`,
|
|
30
|
+
defaultMessage: 'The label "{label}" has been inserted at the cursor position'
|
|
31
|
+
},
|
|
32
|
+
labelInsertError: {
|
|
33
|
+
id: `${scope}.labelInsertError`,
|
|
34
|
+
defaultMessage: 'Failed to insert label'
|
|
35
|
+
},
|
|
36
|
+
editorNotReady: {
|
|
37
|
+
id: `${scope}.editorNotReady`,
|
|
38
|
+
defaultMessage: 'Editor is not ready. Please try again.'
|
|
39
|
+
},
|
|
40
|
+
editorMethodNotAvailable: {
|
|
41
|
+
id: `${scope}.editorMethodNotAvailable`,
|
|
42
|
+
defaultMessage: 'Editor method not available. Please refresh and try again.'
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
// Save messages
|
|
46
|
+
contentSaved: {
|
|
47
|
+
id: `${scope}.contentSaved`,
|
|
48
|
+
defaultMessage: 'Content saved successfully'
|
|
49
|
+
},
|
|
50
|
+
saveError: {
|
|
51
|
+
id: `${scope}.saveError`,
|
|
52
|
+
defaultMessage: 'Failed to save content'
|
|
53
|
+
},
|
|
54
|
+
autoSaveEnabled: {
|
|
55
|
+
id: `${scope}.autoSaveEnabled`,
|
|
56
|
+
defaultMessage: 'Auto-save is enabled'
|
|
57
|
+
},
|
|
58
|
+
autoSaveDisabled: {
|
|
59
|
+
id: `${scope}.autoSaveDisabled`,
|
|
60
|
+
defaultMessage: 'Auto-save is disabled'
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
// Editor toolbar messages
|
|
64
|
+
htmlEditor: {
|
|
65
|
+
id: `${scope}.htmlEditor`,
|
|
66
|
+
defaultMessage: 'Email content'
|
|
67
|
+
},
|
|
68
|
+
desktop: {
|
|
69
|
+
id: `${scope}.desktop`,
|
|
70
|
+
defaultMessage: 'Desktop'
|
|
71
|
+
},
|
|
72
|
+
mobile: {
|
|
73
|
+
id: `${scope}.mobile`,
|
|
74
|
+
defaultMessage: 'Mobile'
|
|
75
|
+
},
|
|
76
|
+
mobileDevice: {
|
|
77
|
+
id: `${scope}.mobileDevice`,
|
|
78
|
+
defaultMessage: 'Mobile Device'
|
|
79
|
+
},
|
|
80
|
+
htmlPreview: {
|
|
81
|
+
id: `${scope}.htmlPreview`,
|
|
82
|
+
defaultMessage: 'HTML Preview'
|
|
83
|
+
},
|
|
84
|
+
startTypingHtml: {
|
|
85
|
+
id: `${scope}.startTypingHtml`,
|
|
86
|
+
defaultMessage: 'Start typing HTML to see the preview'
|
|
87
|
+
},
|
|
88
|
+
previewMode: {
|
|
89
|
+
id: `${scope}.previewMode`,
|
|
90
|
+
defaultMessage: 'Preview Mode'
|
|
91
|
+
},
|
|
92
|
+
fullscreen: {
|
|
93
|
+
id: `${scope}.fullscreen`,
|
|
94
|
+
defaultMessage: 'Fullscreen'
|
|
95
|
+
},
|
|
96
|
+
enterFullscreen: {
|
|
97
|
+
id: `${scope}.enterFullscreen`,
|
|
98
|
+
defaultMessage: 'Enter Fullscreen'
|
|
99
|
+
},
|
|
100
|
+
exitFullscreen: {
|
|
101
|
+
id: `${scope}.exitFullscreen`,
|
|
102
|
+
defaultMessage: 'Exit Fullscreen'
|
|
103
|
+
},
|
|
104
|
+
save: {
|
|
105
|
+
id: `${scope}.save`,
|
|
106
|
+
defaultMessage: 'Save'
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
// Editor tabs messages
|
|
110
|
+
htmlTab: {
|
|
111
|
+
id: `${scope}.htmlTab`,
|
|
112
|
+
defaultMessage: 'HTML'
|
|
113
|
+
},
|
|
114
|
+
cssTab: {
|
|
115
|
+
id: `${scope}.cssTab`,
|
|
116
|
+
defaultMessage: 'CSS'
|
|
117
|
+
},
|
|
118
|
+
javascriptTab: {
|
|
119
|
+
id: `${scope}.javascriptTab`,
|
|
120
|
+
defaultMessage: 'JavaScript'
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
// Preview messages
|
|
124
|
+
previewTitle: {
|
|
125
|
+
id: `${scope}.previewTitle`,
|
|
126
|
+
defaultMessage: 'Preview'
|
|
127
|
+
},
|
|
128
|
+
previewLoading: {
|
|
129
|
+
id: `${scope}.previewLoading`,
|
|
130
|
+
defaultMessage: 'Loading preview...'
|
|
131
|
+
},
|
|
132
|
+
previewError: {
|
|
133
|
+
id: `${scope}.previewError`,
|
|
134
|
+
defaultMessage: 'Preview error'
|
|
135
|
+
},
|
|
136
|
+
previewEmpty: {
|
|
137
|
+
id: `${scope}.previewEmpty`,
|
|
138
|
+
defaultMessage: 'Start typing HTML to see the preview'
|
|
139
|
+
},
|
|
140
|
+
refreshPreview: {
|
|
141
|
+
id: `${scope}.refreshPreview`,
|
|
142
|
+
defaultMessage: 'Refresh Preview'
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
// Mobile device preview messages
|
|
146
|
+
android: {
|
|
147
|
+
id: `${scope}.android`,
|
|
148
|
+
defaultMessage: 'Android'
|
|
149
|
+
},
|
|
150
|
+
ios: {
|
|
151
|
+
id: `${scope}.ios`,
|
|
152
|
+
defaultMessage: 'iOS'
|
|
153
|
+
},
|
|
154
|
+
devicePreview: {
|
|
155
|
+
id: `${scope}.devicePreview`,
|
|
156
|
+
defaultMessage: 'Device Preview'
|
|
157
|
+
},
|
|
158
|
+
|
|
159
|
+
// InApp variant messages
|
|
160
|
+
inAppEditor: {
|
|
161
|
+
id: `${scope}.inAppEditor`,
|
|
162
|
+
defaultMessage: 'In-app content'
|
|
163
|
+
},
|
|
164
|
+
keepContentSameForBoth: {
|
|
165
|
+
id: `${scope}.keepContentSameForBoth`,
|
|
166
|
+
defaultMessage: 'Keep content same for both'
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
// Validation messages
|
|
170
|
+
validationErrors: {
|
|
171
|
+
id: `${scope}.validationErrors`,
|
|
172
|
+
defaultMessage: '{count} validation {count, plural, one {error} other {errors}}'
|
|
173
|
+
},
|
|
174
|
+
validationWarnings: {
|
|
175
|
+
id: `${scope}.validationWarnings`,
|
|
176
|
+
defaultMessage: '{count} validation {count, plural, one {warning} other {warnings}}'
|
|
177
|
+
},
|
|
178
|
+
noValidationIssues: {
|
|
179
|
+
id: `${scope}.noValidationIssues`,
|
|
180
|
+
defaultMessage: 'No validation issues'
|
|
181
|
+
},
|
|
182
|
+
showProblems: {
|
|
183
|
+
id: `${scope}.showProblems`,
|
|
184
|
+
defaultMessage: 'Show Problems'
|
|
185
|
+
},
|
|
186
|
+
hideProblems: {
|
|
187
|
+
id: `${scope}.hideProblems`,
|
|
188
|
+
defaultMessage: 'Hide Problems'
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
// Error messages
|
|
192
|
+
securityError: {
|
|
193
|
+
id: `${scope}.securityError`,
|
|
194
|
+
defaultMessage: 'Security Error'
|
|
195
|
+
},
|
|
196
|
+
runtimeError: {
|
|
197
|
+
id: `${scope}.runtimeError`,
|
|
198
|
+
defaultMessage: 'Runtime Error'
|
|
199
|
+
},
|
|
200
|
+
renderError: {
|
|
201
|
+
id: `${scope}.renderError`,
|
|
202
|
+
defaultMessage: 'Render Error'
|
|
203
|
+
},
|
|
204
|
+
clearErrors: {
|
|
205
|
+
id: `${scope}.clearErrors`,
|
|
206
|
+
defaultMessage: 'Clear Errors'
|
|
207
|
+
},
|
|
208
|
+
copyError: {
|
|
209
|
+
id: `${scope}.copyError`,
|
|
210
|
+
defaultMessage: 'Copy Error Details'
|
|
211
|
+
},
|
|
212
|
+
errorCopied: {
|
|
213
|
+
id: `${scope}.errorCopied`,
|
|
214
|
+
defaultMessage: 'Error details copied to clipboard'
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
// Accessibility messages
|
|
218
|
+
codeEditor: {
|
|
219
|
+
id: `${scope}.codeEditor`,
|
|
220
|
+
defaultMessage: 'Email Editor'
|
|
221
|
+
},
|
|
222
|
+
previewPanel: {
|
|
223
|
+
id: `${scope}.previewPanel`,
|
|
224
|
+
defaultMessage: 'Preview Panel'
|
|
225
|
+
},
|
|
226
|
+
resizeHandle: {
|
|
227
|
+
id: `${scope}.resizeHandle`,
|
|
228
|
+
defaultMessage: 'Drag to resize panels'
|
|
229
|
+
},
|
|
230
|
+
splitPanels: {
|
|
231
|
+
id: `${scope}.splitPanels`,
|
|
232
|
+
defaultMessage: 'Split panels - code editor and preview'
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
// Performance messages
|
|
236
|
+
optimizing: {
|
|
237
|
+
id: `${scope}.optimizing`,
|
|
238
|
+
defaultMessage: 'Optimizing performance...'
|
|
239
|
+
},
|
|
240
|
+
performanceWarning: {
|
|
241
|
+
id: `${scope}.performanceWarning`,
|
|
242
|
+
defaultMessage: 'Large content detected. Performance may be affected.'
|
|
243
|
+
},
|
|
244
|
+
|
|
245
|
+
// Feature messages
|
|
246
|
+
autoSave: {
|
|
247
|
+
id: `${scope}.autoSave`,
|
|
248
|
+
defaultMessage: 'Auto-save'
|
|
249
|
+
},
|
|
250
|
+
lastSaved: {
|
|
251
|
+
id: `${scope}.lastSaved`,
|
|
252
|
+
defaultMessage: 'Last saved: {time}'
|
|
253
|
+
},
|
|
254
|
+
unsavedChanges: {
|
|
255
|
+
id: `${scope}.unsavedChanges`,
|
|
256
|
+
defaultMessage: 'You have unsaved changes'
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
// Content Sanitizer messages
|
|
260
|
+
sanitizer: {
|
|
261
|
+
invalidInput: {
|
|
262
|
+
id: `${scope}.sanitizer.invalidInput`,
|
|
263
|
+
defaultMessage: 'Invalid input: HTML content must be a string'
|
|
264
|
+
},
|
|
265
|
+
invalidInputNonEmpty: {
|
|
266
|
+
id: `${scope}.sanitizer.invalidInputNonEmpty`,
|
|
267
|
+
defaultMessage: 'Invalid input: HTML content must be a non-empty string'
|
|
268
|
+
},
|
|
269
|
+
sanitizationFailed: {
|
|
270
|
+
id: `${scope}.sanitizer.sanitizationFailed`,
|
|
271
|
+
defaultMessage: 'Sanitization failed: {error}'
|
|
272
|
+
},
|
|
273
|
+
dangerousProtocolDetected: {
|
|
274
|
+
id: `${scope}.sanitizer.dangerousProtocolDetected`,
|
|
275
|
+
defaultMessage: 'Dangerous protocol detected'
|
|
276
|
+
},
|
|
277
|
+
|
|
278
|
+
// Email compatibility warnings
|
|
279
|
+
emailMultimediaNotSupported: {
|
|
280
|
+
id: `${scope}.sanitizer.emailMultimediaNotSupported`,
|
|
281
|
+
defaultMessage: 'Video/audio/canvas elements may not be supported in email clients'
|
|
282
|
+
},
|
|
283
|
+
emailPositioningNotSupported: {
|
|
284
|
+
id: `${scope}.sanitizer.emailPositioningNotSupported`,
|
|
285
|
+
defaultMessage: 'Fixed/sticky positioning may not work in email clients'
|
|
286
|
+
},
|
|
287
|
+
emailModernCssLimited: {
|
|
288
|
+
id: `${scope}.sanitizer.emailModernCssLimited`,
|
|
289
|
+
defaultMessage: 'CSS Grid and Flexbox have limited support in email clients'
|
|
290
|
+
},
|
|
291
|
+
emailViewportUnitsNotSupported: {
|
|
292
|
+
id: `${scope}.sanitizer.emailViewportUnitsNotSupported`,
|
|
293
|
+
defaultMessage: 'Viewport units and rem may not be supported in all email clients'
|
|
294
|
+
},
|
|
295
|
+
|
|
296
|
+
// Mobile optimization warnings
|
|
297
|
+
mobileTablesNotFriendly: {
|
|
298
|
+
id: `${scope}.sanitizer.mobileTablesNotFriendly`,
|
|
299
|
+
defaultMessage: 'Tables may not be mobile-friendly - consider using flexbox or grid'
|
|
300
|
+
},
|
|
301
|
+
mobileRelativeFontSizes: {
|
|
302
|
+
id: `${scope}.sanitizer.mobileRelativeFontSizes`,
|
|
303
|
+
defaultMessage: 'Consider using relative font sizes (em, rem, %) for better mobile scaling'
|
|
304
|
+
},
|
|
305
|
+
mobileFixedWidthsProblematic: {
|
|
306
|
+
id: `${scope}.sanitizer.mobileFixedWidthsProblematic`,
|
|
307
|
+
defaultMessage: 'Large fixed widths may not work well on mobile devices'
|
|
308
|
+
},
|
|
309
|
+
mobileRelativeUnits: {
|
|
310
|
+
id: `${scope}.sanitizer.mobileRelativeUnits`,
|
|
311
|
+
defaultMessage: 'Consider using relative units (rem, em, %) for better mobile responsiveness'
|
|
312
|
+
},
|
|
313
|
+
|
|
314
|
+
// Production recommendations
|
|
315
|
+
productionValidHtml: {
|
|
316
|
+
id: `${scope}.sanitizer.productionValidHtml`,
|
|
317
|
+
defaultMessage: 'Provide valid HTML content before deploying to production'
|
|
318
|
+
},
|
|
319
|
+
productionSanitized: {
|
|
320
|
+
id: `${scope}.sanitizer.productionSanitized`,
|
|
321
|
+
defaultMessage: 'Content has been sanitized for security - review changes before deploying'
|
|
322
|
+
},
|
|
323
|
+
productionInlineCss: {
|
|
324
|
+
id: `${scope}.sanitizer.productionInlineCss`,
|
|
325
|
+
defaultMessage: 'Consider inlining CSS for better email client compatibility'
|
|
326
|
+
},
|
|
327
|
+
productionLargeContent: {
|
|
328
|
+
id: `${scope}.sanitizer.productionLargeContent`,
|
|
329
|
+
defaultMessage: 'Content is large ({size} characters) - consider optimizing for mobile performance'
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
|
|
333
|
+
// HTML Validator messages
|
|
334
|
+
validator: {
|
|
335
|
+
// General validation messages
|
|
336
|
+
validationFailed: {
|
|
337
|
+
id: `${scope}.validator.validationFailed`,
|
|
338
|
+
defaultMessage: 'Validation failed: {error}'
|
|
339
|
+
},
|
|
340
|
+
liquidValidationFailed: {
|
|
341
|
+
id: `${scope}.validator.liquidValidationFailed`,
|
|
342
|
+
defaultMessage: 'Liquid validation failed'
|
|
343
|
+
},
|
|
344
|
+
|
|
345
|
+
// Security validation messages
|
|
346
|
+
unsafeProtocolDetected: {
|
|
347
|
+
id: `${scope}.validator.unsafeProtocolDetected`,
|
|
348
|
+
defaultMessage: 'Potentially unsafe protocol detected: {protocol}'
|
|
349
|
+
},
|
|
350
|
+
scriptTagsDetected: {
|
|
351
|
+
id: `${scope}.validator.scriptTagsDetected`,
|
|
352
|
+
defaultMessage: 'Script tags detected - may be filtered in production'
|
|
353
|
+
},
|
|
354
|
+
|
|
355
|
+
// Email-specific validation messages
|
|
356
|
+
outlookIncompatible: {
|
|
357
|
+
id: `${scope}.validator.outlookIncompatible`,
|
|
358
|
+
defaultMessage: 'Element may not be supported in Outlook: {element}'
|
|
359
|
+
},
|
|
360
|
+
emailCssUnsupported: {
|
|
361
|
+
id: `${scope}.validator.emailCssUnsupported`,
|
|
362
|
+
defaultMessage: 'CSS feature may not be supported in email clients'
|
|
363
|
+
},
|
|
364
|
+
|
|
365
|
+
// Mobile/InApp validation messages
|
|
366
|
+
mobileIncompatible: {
|
|
367
|
+
id: `${scope}.validator.mobileIncompatible`,
|
|
368
|
+
defaultMessage: 'Element may not be supported on mobile: {element}'
|
|
369
|
+
},
|
|
370
|
+
largeImageDetected: {
|
|
371
|
+
id: `${scope}.validator.largeImageDetected`,
|
|
372
|
+
defaultMessage: 'Large image dimensions detected - consider mobile optimization'
|
|
373
|
+
},
|
|
374
|
+
|
|
375
|
+
// CSS validation messages
|
|
376
|
+
unclosedCssRule: {
|
|
377
|
+
id: `${scope}.validator.unclosedCssRule`,
|
|
378
|
+
defaultMessage: 'Unclosed CSS rule detected'
|
|
379
|
+
},
|
|
380
|
+
emptyCssRule: {
|
|
381
|
+
id: `${scope}.validator.emptyCssRule`,
|
|
382
|
+
defaultMessage: 'Empty CSS rule detected'
|
|
383
|
+
},
|
|
384
|
+
cssValidationFailed: {
|
|
385
|
+
id: `${scope}.validator.cssValidationFailed`,
|
|
386
|
+
defaultMessage: 'CSS validation failed: {error}'
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
});
|