@capillarytech/creatives-library 9.0.35 → 9.0.36-alpha.1

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 (40) hide show
  1. package/package.json +1 -1
  2. package/translations/en.json +2 -2
  3. package/utils/permissions.js +59 -0
  4. package/utils/tests/permissions.test.js +116 -0
  5. package/v2Components/AccessForbidden/_accessForbidden.scss +14 -0
  6. package/v2Components/AccessForbidden/index.js +5 -3
  7. package/v2Components/AccessForbidden/messages.js +3 -2
  8. package/v2Components/CommonTestAndPreview/UnifiedPreview/ViberCarouselPreviewCards.js +132 -0
  9. package/v2Components/CommonTestAndPreview/UnifiedPreview/ViberPreviewContent.js +108 -15
  10. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +139 -1
  11. package/v2Components/CommonTestAndPreview/UnifiedPreview/_viberCarouselPreviewCards.scss +131 -0
  12. package/v2Components/CommonTestAndPreview/index.js +240 -26
  13. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/ViberPreviewContent.test.js +364 -0
  14. package/v2Components/NoPermissionWrapper/_noPermissionWrapper.scss +12 -0
  15. package/v2Components/NoPermissionWrapper/index.js +26 -0
  16. package/v2Containers/App/constants.js +5 -0
  17. package/v2Containers/Assets/Gallery/_gallery.scss +6 -0
  18. package/v2Containers/Assets/Gallery/index.js +34 -10
  19. package/v2Containers/Cap/index.js +5 -2
  20. package/v2Containers/Cap/messages.js +4 -0
  21. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +2 -2
  22. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +6 -6
  23. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +4 -4
  24. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +32 -32
  25. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +36 -36
  26. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +118 -118
  27. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +8 -8
  28. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +18 -18
  29. package/v2Containers/Templates/ChannelTypeIllustration.js +13 -2
  30. package/v2Containers/Templates/_templates.scss +201 -0
  31. package/v2Containers/Templates/index.js +244 -110
  32. package/v2Containers/Templates/tests/ChannelTypeIllustration.test.js +1 -1
  33. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +174 -121
  34. package/v2Containers/TemplatesV2/index.js +16 -5
  35. package/v2Containers/Viber/constants.js +21 -0
  36. package/v2Containers/Viber/index.js +719 -49
  37. package/v2Containers/Viber/index.scss +175 -0
  38. package/v2Containers/Viber/messages.js +121 -0
  39. package/v2Containers/Viber/tests/index.test.js +80 -0
  40. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +268 -268
@@ -112,8 +112,8 @@ exports[`Creatives SmsTraiCreate test/> done button should be disabled if blank
112
112
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
113
113
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
114
114
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
115
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
116
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
115
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
116
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
117
117
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
118
118
  "creatives.components.CapTagList.Cancel": "Cancel",
119
119
  "creatives.components.CapTagList.Ok": "Ok",
@@ -3273,8 +3273,8 @@ exports[`Creatives SmsTraiCreate test/> invalid file drop 1`] = `
3273
3273
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
3274
3274
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
3275
3275
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
3276
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
3277
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
3276
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
3277
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
3278
3278
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
3279
3279
  "creatives.components.CapTagList.Cancel": "Cancel",
3280
3280
  "creatives.components.CapTagList.Ok": "Ok",
@@ -6417,8 +6417,8 @@ exports[`Creatives SmsTraiCreate test/> renders UI 1`] = `
6417
6417
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
6418
6418
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
6419
6419
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
6420
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
6421
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
6420
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
6421
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
6422
6422
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
6423
6423
  "creatives.components.CapTagList.Cancel": "Cancel",
6424
6424
  "creatives.components.CapTagList.Ok": "Ok",
@@ -9578,8 +9578,8 @@ exports[`Creatives SmsTraiCreate test/> valid file drop 1`] = `
9578
9578
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
9579
9579
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
9580
9580
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
9581
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
9582
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
9581
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
9582
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
9583
9583
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
9584
9584
  "creatives.components.CapTagList.Cancel": "Cancel",
9585
9585
  "creatives.components.CapTagList.Ok": "Ok",
@@ -87,8 +87,8 @@ exports[`Creatives SmsTraiEdit test/> should render 1`] = `
87
87
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
88
88
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
89
89
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
90
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
91
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
90
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
91
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
92
92
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
93
93
  "creatives.components.CapTagList.Cancel": "Cancel",
94
94
  "creatives.components.CapTagList.Ok": "Ok",
@@ -7411,8 +7411,8 @@ FREE GIFTS-
7411
7411
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
7412
7412
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
7413
7413
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
7414
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
7415
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
7414
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
7415
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
7416
7416
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
7417
7417
  "creatives.components.CapTagList.Cancel": "Cancel",
7418
7418
  "creatives.components.CapTagList.Ok": "Ok",
@@ -9749,8 +9749,8 @@ FREE GIFTS-
9749
9749
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
9750
9750
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
9751
9751
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
9752
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
9753
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
9752
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
9753
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
9754
9754
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
9755
9755
  "creatives.components.CapTagList.Cancel": "Cancel",
9756
9756
  "creatives.components.CapTagList.Ok": "Ok",
@@ -12238,8 +12238,8 @@ exports[`Creatives SmsTraiEdit test/> should render 2`] = `
12238
12238
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
12239
12239
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
12240
12240
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
12241
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
12242
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
12241
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
12242
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
12243
12243
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
12244
12244
  "creatives.components.CapTagList.Cancel": "Cancel",
12245
12245
  "creatives.components.CapTagList.Ok": "Ok",
@@ -20936,8 +20936,8 @@ FREE GIFTS-
20936
20936
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
20937
20937
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
20938
20938
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
20939
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
20940
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
20939
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
20940
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
20941
20941
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
20942
20942
  "creatives.components.CapTagList.Cancel": "Cancel",
20943
20943
  "creatives.components.CapTagList.Ok": "Ok",
@@ -23274,8 +23274,8 @@ FREE GIFTS-
23274
23274
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
23275
23275
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
23276
23276
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
23277
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
23278
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
23277
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
23278
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
23279
23279
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
23280
23280
  "creatives.components.CapTagList.Cancel": "Cancel",
23281
23281
  "creatives.components.CapTagList.Ok": "Ok",
@@ -25763,8 +25763,8 @@ exports[`Creatives SmsTraiEdit test/> should save 1`] = `
25763
25763
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
25764
25764
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
25765
25765
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
25766
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
25767
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
25766
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
25767
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
25768
25768
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
25769
25769
  "creatives.components.CapTagList.Cancel": "Cancel",
25770
25770
  "creatives.components.CapTagList.Ok": "Ok",
@@ -33087,8 +33087,8 @@ FREE GIFTS-
33087
33087
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
33088
33088
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
33089
33089
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
33090
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
33091
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
33090
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
33091
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
33092
33092
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
33093
33093
  "creatives.components.CapTagList.Cancel": "Cancel",
33094
33094
  "creatives.components.CapTagList.Ok": "Ok",
@@ -35425,8 +35425,8 @@ FREE GIFTS-
35425
35425
  "app.v2containers.SmsTrai.Edit.traiEditTitle": "Message",
35426
35426
  "app.v2containers.SmsTrai.Edit.unicodeLabel": "Allow unicode characters",
35427
35427
  "app.v2containers.SmsTrai.Edit.unsupportedTagsValidationError": "Unsupported tags: {unsupportedTags}. Please remove them from this message.",
35428
- "creatives.components.AccessForbidden.forbiddenDesc": "This page access has not been provided to you.",
35429
- "creatives.components.AccessForbidden.forbiddenHeader": "Access Forbidden",
35428
+ "creatives.components.AccessForbidden.forbiddenDesc": "Please contact your organisation administrator to request access.",
35429
+ "creatives.components.AccessForbidden.forbiddenHeader": "You don't have permission to view this page.",
35430
35430
  "creatives.components.BreadCrumbs.header": "This is the BreadCrumbs component !",
35431
35431
  "creatives.components.CapTagList.Cancel": "Cancel",
35432
35432
  "creatives.components.CapTagList.Ok": "Ok",
@@ -2,8 +2,9 @@ import React, { useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import zaloillustration from '@capillarytech/cap-ui-library/assets/images/featureUiNotEnabledIllustration.svg';
4
4
  import inAppIllustration from '@capillarytech/cap-ui-library/assets/images/featureUiNotEnabledIllustration.svg';
5
- import { FormattedMessage } from 'react-intl';
5
+ import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
6
6
  import { CapIllustration } from "@capillarytech/cap-ui-library";
7
+ import globalMessages from '../Cap/messages';
7
8
  import emailIllustration from '../Assets/images/emailIllustration.svg';
8
9
  import smsIllustration from '../Assets/images/smsIllustration.svg';
9
10
  import pushIllustration from '../Assets/images/pushIllustration.svg';
@@ -80,11 +81,13 @@ const CHANNEL_CONFIG = {
80
81
 
81
82
  function ChannelTypeIllustration(props) {
82
83
  const {
84
+ intl,
83
85
  isFullMode,
84
86
  createTemplate,
85
87
  currentChannel,
86
88
  hostName,
87
89
  isArchivedMode,
90
+ canCreate = true,
88
91
  } = props;
89
92
 
90
93
  const templateText = useMemo(() => {
@@ -183,6 +186,11 @@ function ChannelTypeIllustration(props) {
183
186
  if (config.hasButton) {
184
187
  result.buttonLabel = <FormattedMessage {...config.buttonMessage} values={{ template: templateText }} />;
185
188
  result.onClick = createTemplate;
189
+ // RBAC: gray out + disable the create button for users without create permission.
190
+ if (!canCreate) {
191
+ result.disabled = true;
192
+ result.buttonTooltip = intl.formatMessage(globalMessages.noPermissionAction);
193
+ }
186
194
  }
187
195
 
188
196
  if (config.descriptionMessage) {
@@ -208,10 +216,13 @@ function ChannelTypeIllustration(props) {
208
216
  );
209
217
  }
210
218
  ChannelTypeIllustration.propTypes = {
219
+ intl: intlShape.isRequired,
211
220
  isFullMode: PropTypes.bool,
212
221
  createTemplate: PropTypes.func.isRequired,
213
222
  currentChannel: PropTypes.string,
214
223
  hostName: PropTypes.string,
215
224
  isArchivedMode: PropTypes.bool,
225
+ canCreate: PropTypes.bool,
216
226
  };
217
- export default ChannelTypeIllustration;
227
+ export { ChannelTypeIllustration };
228
+ export default injectIntl(ChannelTypeIllustration);
@@ -160,6 +160,102 @@
160
160
  line-clamp: 3;
161
161
  }
162
162
  }
163
+ .viber-carousel-static-content {
164
+ width: 100%;
165
+ overflow: visible;
166
+ display: flex;
167
+ flex-direction: column;
168
+ .viber-carousel-static-message-box {
169
+ width: 100%;
170
+ height: auto;
171
+ border-radius: $CAP_SPACE_04;
172
+ background: $CAP_WHITE;
173
+ margin-bottom: $CAP_SPACE_08;
174
+ display: flex;
175
+ align-items: flex-start;
176
+ }
177
+ .viber-carousel-static-message {
178
+ display: -webkit-box;
179
+ width: 100%;
180
+ color: $CAP_G01;
181
+ line-height: 1.3;
182
+ overflow: hidden;
183
+ text-overflow: ellipsis;
184
+ -webkit-line-clamp: 2;
185
+ line-clamp: 2;
186
+ -webkit-box-orient: vertical;
187
+ white-space: normal;
188
+ word-break: break-word;
189
+ }
190
+ .viber-carousel-static-cards {
191
+ display: flex;
192
+ gap: $CAP_SPACE_08;
193
+ overflow: visible;
194
+ }
195
+ .viber-carousel-static-card {
196
+ flex: 1;
197
+ min-width: 0;
198
+ width: 100%;
199
+ background: $CAP_WHITE;
200
+ border-radius: $CAP_SPACE_04;
201
+ overflow: visible;
202
+ display: flex;
203
+ flex-direction: column;
204
+ }
205
+ .viber-carousel-static-image {
206
+ width: 100%;
207
+ max-height: 11rem;
208
+ margin-bottom: $CAP_SPACE_04;
209
+ border-radius: $CAP_SPACE_04;
210
+ display: block;
211
+ flex-shrink: 0;
212
+ }
213
+ .viber-carousel-static-image-placeholder {
214
+ width: 100%;
215
+ height: 7.143rem;
216
+ border-radius: $CAP_SPACE_04;
217
+ }
218
+ .viber-carousel-static-image-placeholder {
219
+ background: $CAP_G07;
220
+ }
221
+ .viber-carousel-static-text {
222
+ display: block;
223
+ color: $CAP_G01;
224
+ margin: $CAP_SPACE_04 0;
225
+ line-height: 1.3;
226
+ overflow: hidden;
227
+ text-overflow: ellipsis;
228
+ white-space: normal;
229
+ -webkit-line-clamp: 2;
230
+ line-clamp: 2;
231
+ -webkit-box-orient: vertical;
232
+ display: -webkit-box;
233
+ flex-shrink: 0;
234
+ }
235
+ .viber-carousel-static-buttons {
236
+ display: flex;
237
+ flex-direction: column;
238
+ gap: $CAP_SPACE_04;
239
+ flex-shrink: 0;
240
+ width: 100%;
241
+ }
242
+ .viber-carousel-static-button {
243
+ display: block;
244
+ min-height: 1.5rem;
245
+ border-radius: $CAP_SPACE_12;
246
+ background: $CAP_PURPLE01;
247
+ color: $CAP_WHITE;
248
+ text-align: center;
249
+ padding: 0.179rem $CAP_SPACE_08;
250
+ white-space: normal;
251
+ }
252
+ .viber-carousel-static-button-secondary {
253
+ color: $CAP_PURPLE01;
254
+ background: transparent;
255
+ border: none;
256
+ box-shadow: none;
257
+ }
258
+ }
163
259
 
164
260
  }
165
261
 
@@ -168,6 +264,44 @@
168
264
  word-wrap: break-word;
169
265
  }
170
266
  }
267
+
268
+ &.viber-carousel-static {
269
+ height: auto;
270
+ min-height: 21.125rem;
271
+ overflow: visible;
272
+
273
+ .ant-card-body {
274
+ height: auto;
275
+ overflow: visible;
276
+ padding-bottom: $CAP_SPACE_12;
277
+
278
+ .ant-card-meta,
279
+ .ant-card-meta-detail,
280
+ .ant-card-meta-description {
281
+ height: auto;
282
+ max-height: none;
283
+ overflow: visible;
284
+ }
285
+
286
+ .truncate-text-viber {
287
+ .ant-card-meta-description {
288
+ display: block;
289
+ overflow: visible;
290
+ max-height: none;
291
+ -webkit-box-orient: unset;
292
+ -webkit-line-clamp: unset;
293
+ line-clamp: unset;
294
+ }
295
+ }
296
+
297
+ .viber-carousel-static-content,
298
+ .viber-carousel-static-cards,
299
+ .viber-carousel-static-card {
300
+ overflow: visible;
301
+ height: auto;
302
+ }
303
+ }
304
+ }
171
305
 
172
306
 
173
307
  &.carousel-img-section {
@@ -1222,6 +1356,67 @@
1222
1356
  max-height: 11rem;
1223
1357
  margin-bottom: $CAP_SPACE_04;
1224
1358
  }
1359
+
1360
+ /* Listing carousel preview: always grow with content so title + buttons stay visible for any image */
1361
+ .cap-custom-card.ant-card.VIBER.viber-carousel-static {
1362
+ height: auto;
1363
+ min-height: 21.125rem;
1364
+ overflow: visible;
1365
+
1366
+ > .ant-card-body {
1367
+ height: auto;
1368
+ max-height: none;
1369
+ overflow: visible;
1370
+ padding-bottom: $CAP_SPACE_12;
1371
+ }
1372
+
1373
+ .ant-card-meta,
1374
+ .ant-card-meta-detail,
1375
+ .ant-card-meta-description,
1376
+ .truncate-text-viber,
1377
+ .truncate-text-viber .ant-card-meta-description {
1378
+ height: auto;
1379
+ max-height: none;
1380
+ overflow: visible;
1381
+ display: block;
1382
+ -webkit-line-clamp: unset;
1383
+ line-clamp: unset;
1384
+ -webkit-box-orient: unset;
1385
+ }
1386
+
1387
+ .viber-carousel-static-content,
1388
+ .viber-carousel-static-card,
1389
+ .viber-carousel-static-buttons {
1390
+ display: flex;
1391
+ flex-direction: column;
1392
+ width: 100%;
1393
+ }
1394
+
1395
+ .viber-carousel-static-content,
1396
+ .viber-carousel-static-cards,
1397
+ .viber-carousel-static-card {
1398
+ overflow: visible;
1399
+ height: auto;
1400
+ }
1401
+
1402
+ .viber-carousel-static-cards {
1403
+ width: 100%;
1404
+ }
1405
+
1406
+ .viber-carousel-static-image {
1407
+ width: 100%;
1408
+ max-height: 11rem;
1409
+ display: block;
1410
+ flex-shrink: 0;
1411
+ }
1412
+
1413
+ .viber-carousel-static-text,
1414
+ .viber-carousel-static-buttons {
1415
+ width: 100%;
1416
+ flex-shrink: 0;
1417
+ visibility: visible;
1418
+ }
1419
+ }
1225
1420
  .whatsapp-doc {
1226
1421
  width: 100%;
1227
1422
  max-height: 123px;
@@ -1473,3 +1668,9 @@
1473
1668
  min-width: 0;
1474
1669
  }
1475
1670
  }
1671
+
1672
+ // RBAC: dim + block a control the user lacks permission for (used with CapTooltip).
1673
+ .rbac-disabled {
1674
+ opacity: 0.4;
1675
+ cursor: not-allowed;
1676
+ }