@telefonica/mistica 17.8.0 → 17.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/css/blau.css +50 -0
  2. package/css/community/cyber.css +89 -23
  3. package/css/esimflag.css +50 -0
  4. package/css/mistica-common.css +10 -0
  5. package/css/mistica.css +1 -1
  6. package/css/movistar.css +50 -0
  7. package/css/o2.css +51 -0
  8. package/css/telefonica.css +60 -8
  9. package/css/vivo-evolution.css +60 -2
  10. package/css/vivo.css +50 -0
  11. package/dist/accordion.css-mistica.js +8 -8
  12. package/dist/accordion.js +67 -74
  13. package/dist/align.css-mistica.js +1 -1
  14. package/dist/autocomplete.css-mistica.js +4 -4
  15. package/dist/avatar.css-mistica.js +3 -3
  16. package/dist/badge.css-mistica.js +3 -3
  17. package/dist/box.css-mistica.js +13 -13
  18. package/dist/boxed.css-mistica.js +24 -24
  19. package/dist/boxed.d.ts +2 -2
  20. package/dist/boxed.js +27 -27
  21. package/dist/button-group.css-mistica.js +3 -3
  22. package/dist/button-layout.css-mistica.js +15 -15
  23. package/dist/button.css-mistica.js +64 -64
  24. package/dist/callout.css-mistica.js +11 -11
  25. package/dist/card-internal.css-mistica.js +34 -34
  26. package/dist/carousel.css-mistica.js +35 -35
  27. package/dist/checkbox.css-mistica.js +15 -15
  28. package/dist/chip.css-mistica.js +20 -20
  29. package/dist/circle.css-mistica.js +1 -1
  30. package/dist/community/advanced-data-card.css-mistica.js +18 -18
  31. package/dist/community/ai-card.css-mistica.js +13 -13
  32. package/dist/community/blocks.css-mistica.js +3 -3
  33. package/dist/community/cyber/example-component.css-mistica.js +1 -1
  34. package/dist/community/example-component.css-mistica.js +2 -2
  35. package/dist/community/skins/cyber-skin.js +68 -4
  36. package/dist/counter.css-mistica.js +7 -7
  37. package/dist/cover-hero.css-mistica.js +13 -13
  38. package/dist/credit-card-number-field.css-mistica.js +5 -5
  39. package/dist/date-field.css-mistica.js +1 -1
  40. package/dist/date-time-picker.css-mistica.js +1 -1
  41. package/dist/dialog.css-mistica.js +8 -8
  42. package/dist/divider.css-mistica.js +5 -5
  43. package/dist/double-field.css-mistica.js +4 -4
  44. package/dist/drawer.css-mistica.js +10 -10
  45. package/dist/empty-state-card.css-mistica.js +1 -1
  46. package/dist/empty-state.css-mistica.js +12 -12
  47. package/dist/fade-in.css-mistica.js +1 -1
  48. package/dist/fade-out.css-mistica.js +1 -1
  49. package/dist/feedback.css-mistica.js +3 -3
  50. package/dist/feedback.js +123 -123
  51. package/dist/file-upload.css-mistica.js +12 -12
  52. package/dist/fixed-footer-layout.css-mistica.js +5 -5
  53. package/dist/form.css-mistica.js +1 -1
  54. package/dist/grid-layout.css-mistica.js +3 -3
  55. package/dist/grid.css-mistica.js +120 -120
  56. package/dist/header.css-mistica.js +1 -1
  57. package/dist/hero.css-mistica.js +9 -9
  58. package/dist/horizontal-scroll.css-mistica.js +1 -1
  59. package/dist/icon-button.css-mistica.js +58 -58
  60. package/dist/icons/icon-chevron.css-mistica.js +2 -2
  61. package/dist/icons/icon-error.css-mistica.js +1 -1
  62. package/dist/icons/icon-error.js +51 -31
  63. package/dist/icons/icon-info.js +42 -10
  64. package/dist/icons/icon-stepper-success-vivo.d.ts +7 -0
  65. package/dist/icons/icon-stepper-success-vivo.js +78 -0
  66. package/dist/icons/icon-success-vivo-new.d.ts +1 -0
  67. package/dist/icons/icon-success-vivo.d.ts +1 -0
  68. package/dist/icons/icon-success.js +137 -58
  69. package/dist/image.css-mistica.js +6 -6
  70. package/dist/index.d.ts +4 -0
  71. package/dist/index.js +4 -0
  72. package/dist/inline.css-mistica.js +11 -11
  73. package/dist/list.css-mistica.js +49 -37
  74. package/dist/list.css.d.ts +4 -0
  75. package/dist/list.js +167 -160
  76. package/dist/loading-bar.css-mistica.js +1 -1
  77. package/dist/loading-screen.css-mistica.js +9 -9
  78. package/dist/logo.css-mistica.js +5 -5
  79. package/dist/menu.css-mistica.js +12 -12
  80. package/dist/message.css-mistica.js +172 -0
  81. package/dist/message.css.d.ts +40 -0
  82. package/dist/message.d.ts +48 -0
  83. package/dist/message.js +389 -0
  84. package/dist/mosaic.css-mistica.js +1 -1
  85. package/dist/navigation-bar.css-mistica.js +20 -20
  86. package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
  87. package/dist/navigation-shared.css-mistica.js +18 -18
  88. package/dist/package-version.js +1 -1
  89. package/dist/pagination.css-mistica.js +30 -29
  90. package/dist/pagination.css.d.ts +1 -2
  91. package/dist/pagination.d.ts +0 -16
  92. package/dist/pagination.js +108 -115
  93. package/dist/pin-field.css-mistica.js +8 -8
  94. package/dist/popover.css-mistica.js +1 -1
  95. package/dist/progress-bar.css-mistica.js +7 -7
  96. package/dist/radio-button.css-mistica.js +32 -32
  97. package/dist/rating.css-mistica.js +4 -4
  98. package/dist/responsive-layout.css-mistica.js +6 -6
  99. package/dist/screen-reader-only.css-mistica.js +1 -1
  100. package/dist/select.css-mistica.js +22 -22
  101. package/dist/sheet-action-row.css-mistica.js +2 -2
  102. package/dist/sheet-common.css-mistica.js +9 -9
  103. package/dist/sheet-info.css-mistica.js +3 -3
  104. package/dist/sidenav-bar-layout.css-mistica.js +2 -2
  105. package/dist/sidenav-bar.css-mistica.js +107 -107
  106. package/dist/skeletons.css-mistica.js +10 -10
  107. package/dist/skins/blau.js +52 -0
  108. package/dist/skins/defaults.js +32 -0
  109. package/dist/skins/esimflag.js +52 -0
  110. package/dist/skins/movistar.js +52 -0
  111. package/dist/skins/o2.d.ts +1 -0
  112. package/dist/skins/o2.js +53 -0
  113. package/dist/skins/skin-contract.css-mistica.js +775 -741
  114. package/dist/skins/skin-contract.css.d.ts +34 -0
  115. package/dist/skins/telefonica.js +60 -8
  116. package/dist/skins/types/colors.d.ts +10 -0
  117. package/dist/skins/types/index.d.ts +3 -0
  118. package/dist/skins/vivo-evolution.js +54 -2
  119. package/dist/skins/vivo.js +52 -0
  120. package/dist/skip-link.css-mistica.js +2 -2
  121. package/dist/slider.css-mistica.js +27 -27
  122. package/dist/snackbar.css-mistica.js +17 -17
  123. package/dist/spinner.css-mistica.js +5 -5
  124. package/dist/square.css-mistica.js +1 -1
  125. package/dist/stack.css-mistica.js +5 -5
  126. package/dist/stacking-group.css-mistica.js +2 -2
  127. package/dist/stepper.css-mistica.js +10 -10
  128. package/dist/stepper.js +31 -25
  129. package/dist/switch-component.css-mistica.js +39 -39
  130. package/dist/table.css-mistica.js +9 -9
  131. package/dist/tabs.css-mistica.js +19 -19
  132. package/dist/tag.css-mistica.js +1 -1
  133. package/dist/text-field-base.css-mistica.js +26 -26
  134. package/dist/text-field-components.css-mistica.js +12 -12
  135. package/dist/text-link.css-mistica.js +6 -6
  136. package/dist/text-tokens.d.ts +2 -0
  137. package/dist/text-tokens.js +46 -30
  138. package/dist/text.css-mistica.js +6 -6
  139. package/dist/timeline.css-mistica.js +13 -13
  140. package/dist/timer.css-mistica.js +8 -8
  141. package/dist/tooltip.css-mistica.js +3 -3
  142. package/dist/tooltip.js +88 -88
  143. package/dist/touchable.css-mistica.js +5 -5
  144. package/dist/utils/aspect-ratio-support.css-mistica.js +4 -4
  145. package/dist/video.css-mistica.js +2 -2
  146. package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  147. package/dist-es/accordion.css-mistica.js +7 -7
  148. package/dist-es/accordion.js +104 -111
  149. package/dist-es/align.css-mistica.js +1 -1
  150. package/dist-es/autocomplete.css-mistica.js +2 -2
  151. package/dist-es/avatar.css-mistica.js +2 -2
  152. package/dist-es/badge.css-mistica.js +2 -2
  153. package/dist-es/box.css-mistica.js +13 -13
  154. package/dist-es/boxed.css-mistica.js +23 -23
  155. package/dist-es/boxed.js +34 -34
  156. package/dist-es/button-group.css-mistica.js +2 -2
  157. package/dist-es/button-layout.css-mistica.js +15 -15
  158. package/dist-es/button.css-mistica.js +43 -43
  159. package/dist-es/callout.css-mistica.js +11 -11
  160. package/dist-es/card-internal.css-mistica.js +23 -23
  161. package/dist-es/carousel.css-mistica.js +10 -10
  162. package/dist-es/checkbox.css-mistica.js +13 -13
  163. package/dist-es/chip.css-mistica.js +17 -17
  164. package/dist-es/circle.css-mistica.js +1 -1
  165. package/dist-es/community/advanced-data-card.css-mistica.js +9 -9
  166. package/dist-es/community/ai-card.css-mistica.js +4 -4
  167. package/dist-es/community/blocks.css-mistica.js +2 -2
  168. package/dist-es/community/cyber/example-component.css-mistica.js +1 -1
  169. package/dist-es/community/example-component.css-mistica.js +2 -2
  170. package/dist-es/community/skins/cyber-skin.js +68 -4
  171. package/dist-es/counter.css-mistica.js +2 -2
  172. package/dist-es/cover-hero.css-mistica.js +3 -3
  173. package/dist-es/credit-card-number-field.css-mistica.js +4 -4
  174. package/dist-es/date-field.css-mistica.js +1 -1
  175. package/dist-es/date-time-picker.css-mistica.js +1 -1
  176. package/dist-es/dialog.css-mistica.js +5 -5
  177. package/dist-es/divider.css-mistica.js +5 -5
  178. package/dist-es/double-field.css-mistica.js +4 -4
  179. package/dist-es/drawer.css-mistica.js +2 -2
  180. package/dist-es/empty-state-card.css-mistica.js +1 -1
  181. package/dist-es/empty-state.css-mistica.js +7 -7
  182. package/dist-es/fade-in.css-mistica.js +1 -1
  183. package/dist-es/fade-out.css-mistica.js +1 -1
  184. package/dist-es/feedback.css-mistica.js +2 -2
  185. package/dist-es/feedback.js +158 -158
  186. package/dist-es/file-upload.css-mistica.js +8 -8
  187. package/dist-es/fixed-footer-layout.css-mistica.js +3 -3
  188. package/dist-es/form.css-mistica.js +1 -1
  189. package/dist-es/grid-layout.css-mistica.js +3 -3
  190. package/dist-es/grid.css-mistica.js +120 -120
  191. package/dist-es/header.css-mistica.js +1 -1
  192. package/dist-es/hero.css-mistica.js +3 -3
  193. package/dist-es/horizontal-scroll.css-mistica.js +1 -1
  194. package/dist-es/icon-button.css-mistica.js +56 -56
  195. package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
  196. package/dist-es/icons/icon-error.css-mistica.js +1 -1
  197. package/dist-es/icons/icon-error.js +55 -35
  198. package/dist-es/icons/icon-info.js +53 -21
  199. package/dist-es/icons/icon-stepper-success-vivo.js +69 -0
  200. package/dist-es/icons/icon-success.js +112 -74
  201. package/dist-es/image.css-mistica.js +3 -3
  202. package/dist-es/index.js +2355 -2354
  203. package/dist-es/inline.css-mistica.js +11 -11
  204. package/dist-es/list.css-mistica.js +8 -8
  205. package/dist-es/list.js +230 -223
  206. package/dist-es/loading-bar.css-mistica.js +1 -1
  207. package/dist-es/loading-screen.css-mistica.js +5 -5
  208. package/dist-es/logo.css-mistica.js +5 -5
  209. package/dist-es/menu.css-mistica.js +12 -12
  210. package/dist-es/message.css-mistica.js +41 -0
  211. package/dist-es/message.js +334 -0
  212. package/dist-es/mosaic.css-mistica.js +1 -1
  213. package/dist-es/navigation-bar.css-mistica.js +10 -10
  214. package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
  215. package/dist-es/navigation-shared.css-mistica.js +10 -10
  216. package/dist-es/package-version.js +1 -1
  217. package/dist-es/pagination.css-mistica.js +23 -19
  218. package/dist-es/pagination.js +137 -141
  219. package/dist-es/pin-field.css-mistica.js +2 -2
  220. package/dist-es/popover.css-mistica.js +1 -1
  221. package/dist-es/progress-bar.css-mistica.js +7 -7
  222. package/dist-es/radio-button.css-mistica.js +24 -24
  223. package/dist-es/rating.css-mistica.js +4 -4
  224. package/dist-es/responsive-layout.css-mistica.js +6 -6
  225. package/dist-es/screen-reader-only.css-mistica.js +1 -1
  226. package/dist-es/select.css-mistica.js +18 -18
  227. package/dist-es/sheet-action-row.css-mistica.js +2 -2
  228. package/dist-es/sheet-common.css-mistica.js +2 -2
  229. package/dist-es/sheet-info.css-mistica.js +2 -2
  230. package/dist-es/sidenav-bar-layout.css-mistica.js +2 -2
  231. package/dist-es/sidenav-bar.css-mistica.js +72 -72
  232. package/dist-es/skeletons.css-mistica.js +7 -7
  233. package/dist-es/skins/blau.js +52 -0
  234. package/dist-es/skins/defaults.js +32 -0
  235. package/dist-es/skins/esimflag.js +52 -0
  236. package/dist-es/skins/movistar.js +52 -0
  237. package/dist-es/skins/o2.js +53 -0
  238. package/dist-es/skins/skin-contract.css-mistica.js +775 -741
  239. package/dist-es/skins/telefonica.js +60 -8
  240. package/dist-es/skins/vivo-evolution.js +54 -2
  241. package/dist-es/skins/vivo.js +52 -0
  242. package/dist-es/skip-link.css-mistica.js +2 -2
  243. package/dist-es/slider.css-mistica.js +20 -20
  244. package/dist-es/snackbar.css-mistica.js +5 -5
  245. package/dist-es/spinner.css-mistica.js +2 -2
  246. package/dist-es/square.css-mistica.js +1 -1
  247. package/dist-es/stack.css-mistica.js +5 -5
  248. package/dist-es/stacking-group.css-mistica.js +2 -2
  249. package/dist-es/stepper.css-mistica.js +4 -4
  250. package/dist-es/stepper.js +60 -54
  251. package/dist-es/style.css +1 -1
  252. package/dist-es/switch-component.css-mistica.js +37 -37
  253. package/dist-es/table.css-mistica.js +9 -9
  254. package/dist-es/tabs.css-mistica.js +18 -18
  255. package/dist-es/tag.css-mistica.js +1 -1
  256. package/dist-es/text-field-base.css-mistica.js +17 -17
  257. package/dist-es/text-field-components.css-mistica.js +4 -4
  258. package/dist-es/text-link.css-mistica.js +6 -6
  259. package/dist-es/text-tokens.js +26 -16
  260. package/dist-es/text.css-mistica.js +6 -6
  261. package/dist-es/timeline.css-mistica.js +10 -10
  262. package/dist-es/timer.css-mistica.js +7 -7
  263. package/dist-es/tooltip.css-mistica.js +2 -2
  264. package/dist-es/tooltip.js +109 -109
  265. package/dist-es/touchable.css-mistica.js +2 -2
  266. package/dist-es/utils/aspect-ratio-support.css-mistica.js +3 -3
  267. package/dist-es/video.css-mistica.js +2 -2
  268. package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  269. package/doc/layout.md +30 -0
  270. package/package.json +1 -1
  271. package/src/accordion.tsx +1 -21
  272. package/src/boxed.tsx +6 -2
  273. package/src/community/skins/cyber-skin.tsx +41 -4
  274. package/src/feedback.tsx +36 -29
  275. package/src/icons/icon-error.tsx +17 -1
  276. package/src/icons/icon-info.tsx +22 -1
  277. package/src/icons/icon-stepper-success-vivo.tsx +58 -0
  278. package/src/icons/icon-success-vivo-new.tsx +1 -0
  279. package/src/icons/icon-success-vivo.tsx +1 -0
  280. package/src/icons/icon-success.tsx +56 -37
  281. package/src/index.tsx +4 -0
  282. package/src/list.css.ts +20 -0
  283. package/src/list.tsx +9 -3
  284. package/src/message.css.ts +148 -0
  285. package/src/message.tsx +303 -0
  286. package/src/package-version.tsx +1 -1
  287. package/src/pagination.css.ts +15 -18
  288. package/src/pagination.tsx +100 -102
  289. package/src/skins/blau.tsx +31 -0
  290. package/src/skins/defaults.tsx +11 -0
  291. package/src/skins/esimflag.tsx +31 -0
  292. package/src/skins/movistar.tsx +31 -0
  293. package/src/skins/o2.tsx +32 -0
  294. package/src/skins/skin-contract.css.ts +13 -0
  295. package/src/skins/telefonica.tsx +39 -8
  296. package/src/skins/types/colors.tsx +10 -0
  297. package/src/skins/types/index.tsx +3 -0
  298. package/src/skins/vivo-evolution.tsx +33 -2
  299. package/src/skins/vivo.tsx +31 -0
  300. package/src/stepper.tsx +16 -6
  301. package/src/text-tokens.tsx +14 -0
  302. package/src/tooltip.tsx +5 -2
@@ -125,6 +125,16 @@ export const getCyberSkin = (): Skin => {
125
125
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.17),
126
126
  backgroundDropZoneMediaHover: applyAlpha(palette.brand80, 0.2),
127
127
  backgroundDropZoneMediaDragover: applyAlpha(palette.brand80, 0.4),
128
+ messageBubbleBackgroundOutgoing: palette.brand15,
129
+ messageBubbleBackgroundOutgoingBrand: palette.brand15,
130
+ messageBubbleBackgroundOutgoingAlternative: palette.brand15,
131
+ messageBubbleBackgroundOutgoingNegative: palette.brand15,
132
+ messageBubbleBackgroundOutgoingMedia: palette.brand15,
133
+ messageBubbleBackgroundIncoming: palette.brand10,
134
+ messageBubbleBackgroundIncomingBrand: palette.white,
135
+ messageBubbleBackgroundIncomingAlternative: palette.white,
136
+ messageBubbleBackgroundIncomingNegative: palette.white,
137
+ messageBubbleBackgroundIncomingMedia: palette.white,
128
138
  skeletonWave: palette.grey100,
129
139
  borderLow: palette.grey15,
130
140
  border: palette.grey100,
@@ -222,7 +232,7 @@ export const getCyberSkin = (): Skin => {
222
232
  textLinkNeutral: palette.grey900,
223
233
  textLinkNeutralBrand: palette.white,
224
234
  textLinkNeutralNegative: palette.white,
225
- textLinkNeutralAlternative: palette.grey500,
235
+ textLinkNeutralAlternative: palette.grey900,
226
236
  textLinkNeutralMedia: palette.white,
227
237
  textActivated: palette.brand70,
228
238
  textBrand: palette.brand70,
@@ -434,6 +444,16 @@ export const getCyberSkin = (): Skin => {
434
444
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.05),
435
445
  backgroundDropZoneMediaHover: applyAlpha(palette.white, 0.03),
436
446
  backgroundDropZoneMediaDragover: applyAlpha(palette.white, 0.05),
447
+ messageBubbleBackgroundOutgoing: palette.brandDark,
448
+ messageBubbleBackgroundOutgoingBrand: palette.brandDark,
449
+ messageBubbleBackgroundOutgoingAlternative: palette.brandDark,
450
+ messageBubbleBackgroundOutgoingNegative: palette.brandDark,
451
+ messageBubbleBackgroundOutgoingMedia: palette.brandDark,
452
+ messageBubbleBackgroundIncoming: palette.darkModeGrey,
453
+ messageBubbleBackgroundIncomingBrand: palette.darkModeGrey,
454
+ messageBubbleBackgroundIncomingAlternative: palette.darkModeGrey,
455
+ messageBubbleBackgroundIncomingNegative: palette.darkModeGrey,
456
+ messageBubbleBackgroundIncomingMedia: palette.darkModeGrey,
437
457
  skeletonWave: palette.grey700,
438
458
  borderLow: palette.darkModeBlack,
439
459
  border: palette.grey800,
@@ -528,9 +548,10 @@ export const getCyberSkin = (): Skin => {
528
548
  textLinkDanger: palette.red30,
529
549
  textLinkDangerMedia: palette.red50,
530
550
  textLinkSnackbar: palette.darkModeBrand,
531
- textLinkNeutral: palette.grey100,
532
- textLinkNeutralBrand: palette.white,
533
- textLinkNeutralNegative: palette.white,
551
+ textLinkNeutral: palette.brand10,
552
+ textLinkNeutralBrand: palette.brand10,
553
+ textLinkNeutralNegative: palette.brand10,
554
+ textLinkNeutralAlternative: palette.brand10,
534
555
  textLinkNeutralMedia: palette.white,
535
556
  textActivated: palette.darkModeBrand,
536
557
  textBrand: palette.brand30,
@@ -738,6 +759,21 @@ export const getCyberSkin = (): Skin => {
738
759
  size: {desktop: 28, mobile: 20},
739
760
  weight: 'regular',
740
761
  },
762
+ feedbackScreenDescription: {
763
+ lineHeight: {desktop: 24, mobile: 24},
764
+ size: {desktop: 18, mobile: 16},
765
+ weight: 'regular',
766
+ },
767
+ feedbackScreenTitle: {
768
+ lineHeight: {desktop: 40, mobile: 32},
769
+ size: {desktop: 32, mobile: 24},
770
+ weight: 'regular',
771
+ },
772
+ headerPretitle: {
773
+ lineHeight: {desktop: 24, mobile: 24},
774
+ size: {desktop: 18, mobile: 16},
775
+ weight: 'regular',
776
+ },
741
777
  indicator: {weight: 'medium'},
742
778
  inputHelperText: {lineHeight: {desktop: 20, mobile: 16}, size: {desktop: 14, mobile: 12}},
743
779
  inputLabel: {lineHeight: {desktop: 20, mobile: 16}, size: {desktop: 14, mobile: 12}},
@@ -845,6 +881,7 @@ export const getCyberSkin = (): Skin => {
845
881
  right: {mobile: 16, desktop: 40},
846
882
  },
847
883
  boxedDefaultPadding: {left: {mobile: 16, desktop: 16}, right: {mobile: 16, desktop: 16}},
884
+ boxedSmallPadding: {top: {mobile: 8, desktop: 8}, bottom: {mobile: 8, desktop: 8}},
848
885
  responsiveLayoutMargin: {mobile: 16, desktop: 48},
849
886
  },
850
887
  };
package/src/feedback.tsx CHANGED
@@ -2,7 +2,6 @@
2
2
  import * as React from 'react';
3
3
  import {useTheme, useScreenSize} from './hooks';
4
4
  import ButtonFixedFooterLayout from './button-fixed-footer-layout';
5
- import {VIVO_EVOLUTION_SKIN, VIVO_SKIN} from './skins/constants';
6
5
  import {useSetOverscrollColor} from './overscroll-color-context';
7
6
  import IconSuccess from './icons/icon-success';
8
7
  import IconError from './icons/icon-error';
@@ -12,7 +11,7 @@ import {
12
11
  requestVibration as requestVibrationNative,
13
12
  } from '@tef-novum/webview-bridge';
14
13
  import {isRunningAcceptanceTest} from './utils/platform';
15
- import {Text6, Text2, Text3} from './text';
14
+ import {getTextSizesWithWeight, Text, Text2} from './text';
16
15
  import Box from './box';
17
16
  import {InternalBoxed} from './boxed';
18
17
  import ResponsiveLayout, {ResetResponsiveLayout} from './responsive-layout';
@@ -21,7 +20,7 @@ import classnames from 'classnames';
21
20
  import ButtonGroup from './button-group';
22
21
  import {vars} from './skins/skin-contract.css';
23
22
  import * as styles from './feedback.css';
24
- import IconSuccessVivoNew from './icons/icon-success-vivo-new';
23
+ import {ThemeVariant, useThemeVariant} from './theme-variant-context';
25
24
 
26
25
  import type {Theme} from './theme';
27
26
  import type {DataAttributes, IconProps} from './utils/types';
@@ -35,6 +34,8 @@ const checkHasButtons = ({primaryButton, secondaryButton}: FeedbackButtonsProps)
35
34
 
36
35
  type HapticFeedback = 'error' | 'success';
37
36
 
37
+ const successFeedbackAsset = <IconSuccess size="100%" />;
38
+
38
39
  const requestVibration = (type: HapticFeedback) => {
39
40
  if (isWebViewBridgeAvailable()) {
40
41
  requestVibrationNative(type).catch(() => {});
@@ -60,7 +61,11 @@ const useHapticFeedback = (type?: HapticFeedback) => {
60
61
 
61
62
  const renderFeedbackBody = (
62
63
  {asset, title, description, slot}: Pick<FeedbackScreenProps, 'asset' | 'title' | 'description' | 'slot'>,
63
- animateText: boolean
64
+ animateText: boolean,
65
+ {
66
+ feedbackScreenTitle: titlePreset,
67
+ feedbackScreenDescription: descriptionPreset,
68
+ }: Pick<Theme['textPresets'], 'feedbackScreenDescription' | 'feedbackScreenTitle'>
64
69
  ) => {
65
70
  const normalizedDescription =
66
71
  description && Array.isArray(description) ? (
@@ -73,13 +78,15 @@ const renderFeedbackBody = (
73
78
  description
74
79
  );
75
80
  return (
76
- <Stack space={24}>
81
+ <Stack space={40}>
77
82
  <div className={styles.assetContainer} data-testid="icon">
78
83
  {asset}
79
84
  </div>
80
85
  <Stack space={16} className={classnames(styles.feedbackData)}>
81
86
  <div className={classnames(animateText && styles.feedbackTextAppearFast)} data-testid="title">
82
- <Text6 as="h1">{title}</Text6>
87
+ <Text {...getTextSizesWithWeight({textPreset: titlePreset})} as="h1">
88
+ {title}
89
+ </Text>
83
90
  </div>
84
91
 
85
92
  {normalizedDescription && (
@@ -88,9 +95,14 @@ const renderFeedbackBody = (
88
95
  data-testid="description"
89
96
  >
90
97
  {normalizedDescription && (
91
- <Text3 regular color={vars.colors.textSecondary}>
98
+ <Text
99
+ {...getTextSizesWithWeight({
100
+ textPreset: descriptionPreset,
101
+ })}
102
+ color={vars.colors.textSecondary}
103
+ >
92
104
  {normalizedDescription}
93
- </Text3>
105
+ </Text>
94
106
  )}
95
107
  </div>
96
108
  )}
@@ -209,14 +221,15 @@ export const FeedbackScreen = ({
209
221
  dataAttributes,
210
222
  }: FeedbackScreenProps): JSX.Element => {
211
223
  useHapticFeedback(hapticFeedback);
212
- const {platformOverrides, isDarkMode} = useTheme();
224
+ const {platformOverrides, isDarkMode, textPresets} = useTheme();
213
225
  const {isTabletOrSmaller} = useScreenSize();
214
226
 
215
227
  const hasButtons = checkHasButtons({primaryButton, secondaryButton, link});
216
228
 
217
229
  const feedbackBody = renderFeedbackBody(
218
230
  {asset, title, description, slot},
219
- animateText && areAnimationsSupported(platformOverrides)
231
+ animateText && areAnimationsSupported(platformOverrides),
232
+ textPresets
220
233
  );
221
234
 
222
235
  if (!isTabletOrSmaller && unstable_inlineInDesktop) {
@@ -281,7 +294,7 @@ export const FeedbackScreen = ({
281
294
 
282
295
  export const SuccessFeedbackScreen = ({dataAttributes, ...props}: AssetFeedbackProps): JSX.Element => {
283
296
  const {isTabletOrSmaller} = useScreenSize();
284
- const {skinName, themeVariants} = useTheme();
297
+ const {themeVariants} = useTheme();
285
298
 
286
299
  return (
287
300
  <FeedbackScreen
@@ -293,13 +306,7 @@ export const SuccessFeedbackScreen = ({dataAttributes, ...props}: AssetFeedbackP
293
306
  : 'default'
294
307
  }
295
308
  hapticFeedback="success"
296
- asset={
297
- skinName === VIVO_SKIN || skinName === VIVO_EVOLUTION_SKIN ? (
298
- <IconSuccessVivoNew size="100%" />
299
- ) : (
300
- <IconSuccess size="100%" />
301
- )
302
- }
309
+ asset={successFeedbackAsset}
303
310
  animateText
304
311
  imageUrl={props.imageUrl}
305
312
  imageFit={props.imageFit}
@@ -353,13 +360,19 @@ export const InfoFeedbackScreen = ({
353
360
  Icon = IconInfo,
354
361
  ...props
355
362
  }: InfoFeedbackScreenProps): JSX.Element => {
363
+ const themeVariant = useThemeVariant();
364
+
356
365
  return (
357
366
  <FeedbackScreen
358
367
  dataAttributes={{
359
368
  testid: 'InfoFeedbackScreen',
360
369
  ...dataAttributes,
361
370
  }}
362
- asset={<Icon size="100%" color={vars.colors.brand} />}
371
+ asset={
372
+ <ThemeVariant variant={themeVariant}>
373
+ <Icon size="100%" color={vars.colors.brand} />
374
+ </ThemeVariant>
375
+ }
363
376
  {...props}
364
377
  />
365
378
  );
@@ -377,17 +390,11 @@ export const SuccessFeedback = ({
377
390
  dataAttributes,
378
391
  }: AssetFeedbackProps): JSX.Element => {
379
392
  useHapticFeedback('success');
380
- const {skinName, platformOverrides, themeVariants} = useTheme();
381
-
382
- const asset =
383
- skinName === VIVO_SKIN || skinName === VIVO_EVOLUTION_SKIN ? (
384
- <IconSuccessVivoNew size="100%" />
385
- ) : (
386
- <IconSuccess size="100%" />
387
- );
393
+ const {platformOverrides, themeVariants, textPresets} = useTheme();
388
394
  const feedbackBody = renderFeedbackBody(
389
- {asset, title, description, slot},
390
- areAnimationsSupported(platformOverrides)
395
+ {asset: successFeedbackAsset, title, description, slot},
396
+ areAnimationsSupported(platformOverrides),
397
+ textPresets
391
398
  );
392
399
  const inlineFeedbackBody = renderInlineFeedbackBody(feedbackBody, {
393
400
  primaryButton,
@@ -100,6 +100,21 @@ const IconErrorVivo = ({size = 48}: Props): JSX.Element => {
100
100
  );
101
101
  };
102
102
 
103
+ const IconErrorVivoEvolution = ({size = 48}: Props): JSX.Element => {
104
+ return (
105
+ <svg role="presentation" width={size} height={size} viewBox="0 0 48 48" fill="none">
106
+ <path
107
+ d="M0 18C0 8.05888 8.05888 0 18 0H30C39.9411 0 48 8.05888 48 18V30C48 39.9411 39.9411 48 30 48H18C8.05888 48 0 39.9411 0 30V18Z"
108
+ fill={vars.colors.errorLow}
109
+ />
110
+ <path
111
+ d="M23.9948 12.5801C24.1593 12.5795 24.335 12.5865 24.5026 12.6016C25.9418 12.7313 27.318 13.5064 28.1149 14.8243L28.1247 14.8399L35.8552 28.877C36.7357 30.3471 36.7031 32.1087 35.822 33.4893C35.0153 34.753 33.4865 35.418 31.9851 35.418H16.0144C14.513 35.418 12.9841 34.753 12.1774 33.4893C11.2963 32.1087 11.2637 30.3471 12.1442 28.877L19.8747 14.8399L19.8845 14.8243C20.6814 13.5064 22.0576 12.7313 23.4968 12.6016C23.6628 12.5866 23.829 12.5795 23.9948 12.5801ZM23.9909 14.4551C23.8827 14.4546 23.7736 14.459 23.6647 14.4688C22.7771 14.5489 21.9631 15.0211 21.4978 15.7793L13.7683 29.8135L13.7585 29.8301C13.231 30.7026 13.2628 31.7054 13.7575 32.4805C14.1466 33.0901 15.0042 33.543 16.0144 33.543H31.9851C32.9952 33.543 33.8528 33.0901 34.2419 32.4805C34.7366 31.7054 34.7685 30.7026 34.2409 29.8301L34.2311 29.8135L26.5017 15.7793C26.0363 15.0211 25.2224 14.5488 24.3347 14.4688C24.2274 14.4591 24.1094 14.4546 23.9997 14.4551H23.9909ZM23.9997 28.9756C24.5175 28.9756 24.9372 29.3954 24.9372 29.9131C24.9369 30.4307 24.5173 30.8506 23.9997 30.8506C23.4821 30.8506 23.0625 30.4307 23.0622 29.9131C23.0622 29.3954 23.4819 28.9756 23.9997 28.9756ZM23.9997 19.5948C24.5175 19.5948 24.9372 20.0145 24.9372 20.5323V26.7823C24.9371 27.3 24.5174 27.7198 23.9997 27.7198C23.482 27.7198 23.0623 27.3 23.0622 26.7823V20.5323C23.0622 20.0145 23.4819 19.5948 23.9997 19.5948Z"
112
+ fill={vars.colors.errorHigh}
113
+ />
114
+ </svg>
115
+ );
116
+ };
117
+
103
118
  const IconErrorDefault = ({size = 48}: Props): JSX.Element => {
104
119
  const {platformOverrides} = useTheme();
105
120
 
@@ -148,8 +163,9 @@ const IconError = (props: Props): JSX.Element => {
148
163
  case O2_SKIN:
149
164
  return <IconErrorO2 {...props} />;
150
165
  case VIVO_SKIN:
151
- case VIVO_EVOLUTION_SKIN:
152
166
  return <IconErrorVivo {...props} />;
167
+ case VIVO_EVOLUTION_SKIN:
168
+ return <IconErrorVivoEvolution {...props} />;
153
169
  default:
154
170
  return <IconErrorDefault {...props} />;
155
171
  }
@@ -3,6 +3,7 @@ import * as React from 'react';
3
3
  import {useTheme} from '../hooks';
4
4
  import {O2_SKIN, VIVO_SKIN, VIVO_EVOLUTION_SKIN} from '../skins/constants';
5
5
  import {vars} from '../skins/skin-contract.css';
6
+ import {useThemeVariant} from '../theme-variant-context';
6
7
 
7
8
  type Props = {
8
9
  size?: number | string;
@@ -34,6 +35,25 @@ const IconInfoVivo = ({size = 48}: Props): JSX.Element => {
34
35
  );
35
36
  };
36
37
 
38
+ const IconInfoVivoEvolution = ({size = 48}: Props): JSX.Element => {
39
+ const themeVariant = useThemeVariant();
40
+ const isAlternative = themeVariant === 'alternative';
41
+
42
+ return (
43
+ <svg role="presentation" width={size} height={size} viewBox="0 0 48 48" fill="none">
44
+ <path
45
+ d="M0 18C0 8.05888 8.05888 0 18 0H30C39.9411 0 48 8.05888 48 18V30C48 39.9411 39.9411 48 30 48H18C8.05888 48 0 39.9411 0 30V18Z"
46
+ fill={isAlternative ? vars.colors.neutralLowAlternative : vars.colors.neutralLow}
47
+ />
48
+ <g fill={vars.colors.neutralHigh}>
49
+ <path d="M24 21.0453C24.5178 21.0453 24.9375 21.465 24.9375 21.9828V29.8075C24.9375 30.3253 24.5178 30.745 24 30.745C23.4822 30.745 23.0625 30.3253 23.0625 29.8075V21.9828C23.0625 21.465 23.4822 21.0453 24 21.0453Z" />
50
+ <path d="M24 20.0675C24.5178 20.0675 24.9375 19.6478 24.9375 19.13C24.9375 18.6122 24.5178 18.1925 24 18.1925C23.4822 18.1925 23.0625 18.6122 23.0625 19.13C23.0625 19.6478 23.4822 20.0675 24 20.0675Z" />
51
+ <path d="M11.5 21.8125C11.5 16.1171 16.1171 11.5 21.8125 11.5H26.1875C31.8829 11.5 36.5 16.1171 36.5 21.8125V26.1875C36.5 31.8829 31.8829 36.5 26.1875 36.5H21.8125C16.1171 36.5 11.5 31.8829 11.5 26.1875V21.8125ZM21.8125 13.375C17.1526 13.375 13.375 17.1526 13.375 21.8125V26.1875C13.375 30.8474 17.1526 34.625 21.8125 34.625H26.1875C30.8474 34.625 34.625 30.8474 34.625 26.1875V21.8125C34.625 17.1526 30.8474 13.375 26.1875 13.375H21.8125Z" />
52
+ </g>
53
+ </svg>
54
+ );
55
+ };
56
+
37
57
  const IconInfoDefault = ({size = 48}: Props): JSX.Element => {
38
58
  return (
39
59
  <svg role="presentation" width={size} height={size} viewBox="0 0 64 64">
@@ -53,8 +73,9 @@ const IconInfo = (props: Props): JSX.Element => {
53
73
  case O2_SKIN:
54
74
  return <IconInfoO2 {...props} />;
55
75
  case VIVO_SKIN:
56
- case VIVO_EVOLUTION_SKIN:
57
76
  return <IconInfoVivo {...props} />;
77
+ case VIVO_EVOLUTION_SKIN:
78
+ return <IconInfoVivoEvolution {...props} />;
58
79
  default:
59
80
  return <IconInfoDefault {...props} />;
60
81
  }
@@ -0,0 +1,58 @@
1
+ 'use client';
2
+ import * as React from 'react';
3
+ import {useTheme} from '../hooks';
4
+ import {getAnimateDrawLineProps, getAnimateHopInProps, mergeProperties} from '../utils/animation';
5
+ import {useThemeVariant} from '../theme-variant-context';
6
+ import {vars} from '../skins/skin-contract.css';
7
+
8
+ type Props = {
9
+ size?: number | string;
10
+ color?: string;
11
+ skipAnimation?: boolean;
12
+ };
13
+
14
+ const IconStepperSuccessVivo = ({size = 48, color, skipAnimation = false}: Props): JSX.Element => {
15
+ const themeVariant = useThemeVariant();
16
+ const {platformOverrides} = useTheme();
17
+
18
+ const defaultColor =
19
+ themeVariant === 'brand' || themeVariant === 'media'
20
+ ? vars.colors.neutralHighBrand
21
+ : themeVariant === 'negative'
22
+ ? vars.colors.neutralHighNegative
23
+ : vars.colors.brand;
24
+
25
+ return (
26
+ <svg role="presentation" width={size} height={size} viewBox="0 0 64 64">
27
+ <g stroke={color ? undefined : defaultColor}>
28
+ <path
29
+ vectorEffect="non-scaling-stroke"
30
+ fill="none"
31
+ stroke={color}
32
+ strokeWidth="2"
33
+ strokeMiterlimit="10"
34
+ d="M61.4,32c0,19.5-10,29.4-29.4,29.4C12.5,61.4,2.6,51.5,2.6,32S12.5,2.6,32,2.6S61.4,12.5,61.4,32z"
35
+ transform="rotate(90 32 32)"
36
+ {...(!skipAnimation && getAnimateDrawLineProps('202', '0.2s', platformOverrides))}
37
+ />
38
+ <polyline
39
+ vectorEffect="non-scaling-stroke"
40
+ fill="none"
41
+ stroke={color}
42
+ strokeWidth="2"
43
+ strokeMiterlimit="10"
44
+ strokeLinecap="round"
45
+ strokeLinejoin="round"
46
+ points="20,34.9 27.4,44.3 45.6,21"
47
+ {...(!skipAnimation &&
48
+ mergeProperties(
49
+ getAnimateDrawLineProps('44', '0.6s', platformOverrides),
50
+ getAnimateHopInProps('0.6s', platformOverrides)
51
+ ))}
52
+ />
53
+ </g>
54
+ </svg>
55
+ );
56
+ };
57
+
58
+ export default IconStepperSuccessVivo;
@@ -7,6 +7,7 @@ type Props = {
7
7
  size?: number | string;
8
8
  };
9
9
 
10
+ /** @deprecated This legacy Vivo icon is kept for backwards compatibility. */
10
11
  const IconSuccessVivoNew = ({size = 48}: Props): JSX.Element => {
11
12
  const {platformOverrides} = useTheme();
12
13
  const gradientId = React.useId();
@@ -9,6 +9,7 @@ type Props = {
9
9
  size?: number | string;
10
10
  };
11
11
 
12
+ /** @deprecated This legacy Vivo icon is kept for backwards compatibility. */
12
13
  const IconSuccessVivo = ({size = 48}: Props): JSX.Element => {
13
14
  const themeVariant = useThemeVariant();
14
15
  const {platformOverrides} = useTheme();
@@ -1,7 +1,12 @@
1
1
  'use client';
2
2
  import * as React from 'react';
3
3
  import {O2_SKIN, VIVO_SKIN, VIVO_EVOLUTION_SKIN} from '../skins/constants';
4
- import {getAnimateDrawLineProps, getAnimateHopInProps, mergeProperties} from '../utils/animation';
4
+ import {
5
+ getAnimateCircleScaleInProps,
6
+ getAnimateDrawLineProps,
7
+ getAnimateHopInProps,
8
+ mergeProperties,
9
+ } from '../utils/animation';
5
10
  import {useTheme} from '../hooks';
6
11
  import {vars} from '../skins/skin-contract.css';
7
12
  import {useThemeVariant} from '../theme-variant-context';
@@ -54,46 +59,59 @@ const IconSuccessO2 = ({size = 48, color, skipAnimation = false}: Props): JSX.El
54
59
  );
55
60
  };
56
61
 
57
- const IconSuccessVivo = ({size = 48, color, skipAnimation = false}: Props): JSX.Element => {
62
+ const IconSuccessVivo = ({size = 48}: Props): JSX.Element => {
58
63
  const {platformOverrides} = useTheme();
64
+ const gradientId = React.useId();
59
65
 
66
+ return (
67
+ <svg role="presentation" width={size} height={size} viewBox="0 0 64 64" fill="none">
68
+ <circle
69
+ cx="32"
70
+ cy="32"
71
+ r="31"
72
+ stroke={`url(#${gradientId})`}
73
+ {...getAnimateCircleScaleInProps('31', platformOverrides)}
74
+ />
75
+ <polyline
76
+ fill="none"
77
+ stroke="white"
78
+ strokeWidth="1.5"
79
+ strokeLinecap="round"
80
+ strokeLinejoin="round"
81
+ points="24,32.75 30,39 40.5,24.5"
82
+ {...getAnimateDrawLineProps('44', '0.4s', platformOverrides, '0.5 0 0.83 0.83')}
83
+ />
84
+ <defs>
85
+ <linearGradient
86
+ id={gradientId}
87
+ x1="6.66663"
88
+ y1="6.66669"
89
+ x2="58.3441"
90
+ y2="7.98638"
91
+ gradientUnits="userSpaceOnUse"
92
+ >
93
+ <stop stopColor="#E5B9FF" />
94
+ <stop offset="1" stopColor="#FF6ACE" />
95
+ </linearGradient>
96
+ </defs>
97
+ </svg>
98
+ );
99
+ };
100
+
101
+ const IconSuccessVivoEvolution = ({size = 48}: Props): JSX.Element => {
60
102
  const themeVariant = useThemeVariant();
61
- const defaultColor =
62
- themeVariant === 'brand' || themeVariant === 'media'
63
- ? vars.colors.neutralHighBrand
64
- : themeVariant === 'negative'
65
- ? vars.colors.neutralHighNegative
66
- : vars.colors.brand;
103
+ const isBrand = themeVariant === 'brand';
67
104
 
68
105
  return (
69
- <svg role="presentation" width={size} height={size} viewBox="0 0 64 64">
70
- <g stroke={color ? undefined : defaultColor}>
71
- <path
72
- vectorEffect="non-scaling-stroke"
73
- fill="none"
74
- stroke={color ? color : undefined}
75
- strokeWidth="2"
76
- strokeMiterlimit="10"
77
- d="M61.4,32c0,19.5-10,29.4-29.4,29.4C12.5,61.4,2.6,51.5,2.6,32S12.5,2.6,32,2.6S61.4,12.5,61.4,32z"
78
- transform="rotate(90 32 32)"
79
- {...(!skipAnimation && getAnimateDrawLineProps('202', '0.2s', platformOverrides))}
80
- />
81
- <polyline
82
- vectorEffect="non-scaling-stroke"
83
- fill="none"
84
- stroke={color ? color : undefined}
85
- strokeWidth="2"
86
- strokeMiterlimit="10"
87
- strokeLinecap="round"
88
- strokeLinejoin="round"
89
- points="20,34.9 27.4,44.3 45.6,21"
90
- {...(!skipAnimation &&
91
- mergeProperties(
92
- getAnimateDrawLineProps('44', '0.6s', platformOverrides),
93
- getAnimateHopInProps('0.6s', platformOverrides)
94
- ))}
95
- />
96
- </g>
106
+ <svg role="presentation" width={size} height={size} viewBox="0 0 48 48" fill="none">
107
+ <path
108
+ d="M0 18C0 8.05888 8.05888 0 18 0H30C39.9411 0 48 8.05888 48 18V30C48 39.9411 39.9411 48 30 48H18C8.05888 48 0 39.9411 0 30V18Z"
109
+ fill={isBrand ? vars.colors.backgroundBrandSecondary : vars.colors.successLow}
110
+ />
111
+ <path
112
+ d="M34.9092 15.5156C35.2803 15.1548 35.8734 15.1632 36.2344 15.5342C36.5952 15.9053 36.5869 16.4984 36.2158 16.8594L20.1572 32.4844C19.7933 32.8385 19.2135 32.8385 18.8496 32.4844L11.7842 25.6094C11.4132 25.2484 11.4048 24.6553 11.7656 24.2842C12.1266 23.9132 12.7197 23.9048 13.0908 24.2656L19.5039 30.5049L34.9092 15.5156Z"
113
+ fill={isBrand ? vars.colors.neutralHighBrand : vars.colors.successHigh}
114
+ />
97
115
  </svg>
98
116
  );
99
117
  };
@@ -146,8 +164,9 @@ const IconSuccess = ({size, color, skipAnimation}: Props): JSX.Element => {
146
164
  case O2_SKIN:
147
165
  return <IconSuccessO2 size={size} color={color} skipAnimation={skipAnimation} />;
148
166
  case VIVO_SKIN:
149
- case VIVO_EVOLUTION_SKIN:
150
167
  return <IconSuccessVivo size={size} color={color} skipAnimation={skipAnimation} />;
168
+ case VIVO_EVOLUTION_SKIN:
169
+ return <IconSuccessVivoEvolution size={size} color={color} skipAnimation={skipAnimation} />;
151
170
  default:
152
171
  return <IconSuccessDefault size={size} color={color} skipAnimation={skipAnimation} />;
153
172
  }
package/src/index.tsx CHANGED
@@ -17,6 +17,8 @@ export {default as ButtonLayout} from './button-layout';
17
17
  export {default as Counter} from './counter';
18
18
  export {default as FixedFooterLayout} from './fixed-footer-layout';
19
19
  export {default as ButtonFixedFooterLayout} from './button-fixed-footer-layout';
20
+ export {default as Message} from './message';
21
+ export type {MessageProps} from './message';
20
22
  export {default as Snackbar} from './snackbar';
21
23
  export {useSnackbar} from './snackbar-context';
22
24
  export {Portal} from './portal';
@@ -168,7 +170,9 @@ export {default as IconInfo} from './icons/icon-info';
168
170
  export {default as IconChevron} from './icons/icon-chevron';
169
171
  export {default as IconError} from './icons/icon-error';
170
172
  export {default as IconSuccess} from './icons/icon-success';
173
+ /** @deprecated This legacy Vivo icon is kept for backwards compatibility. */
171
174
  export {default as IconSuccessVivo} from './icons/icon-success-vivo';
175
+ /** @deprecated This legacy Vivo icon is kept for backwards compatibility. */
172
176
  export {default as IconSuccessVivoNew} from './icons/icon-success-vivo-new';
173
177
 
174
178
  export {SkeletonCircle, SkeletonRow, SkeletonLine, SkeletonRectangle, SkeletonText} from './skeletons';
package/src/list.css.ts CHANGED
@@ -140,6 +140,21 @@ export const innerContent = style({
140
140
 
141
141
  export const assetContainer = style([sprinkles({paddingRight: 16}), {gridColumn: 1, paddingBottom: 16}]);
142
142
 
143
+ export const contentSmall = style({
144
+ paddingTop: vars.spacing.boxedSmallPadding.top,
145
+ });
146
+
147
+ export const innerContentSmall = style({
148
+ // 48px total row height: border-box makes minHeight include paddingBottom, only the top padding is left out
149
+ boxSizing: 'border-box',
150
+ minHeight: `max(0px, calc(48px - ${vars.spacing.boxedSmallPadding.top}))`,
151
+ paddingBottom: vars.spacing.boxedSmallPadding.bottom,
152
+ });
153
+
154
+ export const assetContainerSmall = style({
155
+ paddingBottom: vars.spacing.boxedSmallPadding.bottom,
156
+ });
157
+
143
158
  export const asset = sprinkles({
144
159
  display: 'flex',
145
160
  flexShrink: 0,
@@ -249,6 +264,11 @@ export const dualActionRight = style([dualActionRightBase, sprinkles({height: '1
249
264
 
250
265
  export const dualActionRightIconButton = style([dualActionRightBase, {paddingTop: 16, paddingBottom: 16}]);
251
266
 
267
+ export const dualActionRightIconButtonSmall = style({
268
+ paddingTop: vars.spacing.boxedSmallPadding.top,
269
+ paddingBottom: vars.spacing.boxedSmallPadding.bottom,
270
+ });
271
+
252
272
  const ulVerticalGap = 8;
253
273
  const ulVerticalGapDesktop = 16;
254
274
 
package/src/list.tsx CHANGED
@@ -123,10 +123,11 @@ export const Content = ({
123
123
  const DetailComponent = small ? Text1 : Text2;
124
124
 
125
125
  return (
126
- <div className={styles.content} id={labelId}>
126
+ <div className={classNames(styles.content, {[styles.contentSmall]: small})} id={labelId}>
127
127
  {asset && (
128
128
  <div
129
129
  className={classNames(styles.assetContainer, {
130
+ [styles.assetContainerSmall]: small,
130
131
  [styles.center]: centerY,
131
132
  [styles.disabled]: disabled,
132
133
  })}
@@ -159,7 +160,7 @@ export const Content = ({
159
160
  </div>
160
161
  </div>
161
162
  )}
162
- <div className={styles.innerContent}>
163
+ <div className={classNames(styles.innerContent, {[styles.innerContentSmall]: small})}>
163
164
  <div
164
165
  className={classNames(styles.rowBody, {[styles.disabled]: disabled})}
165
166
  style={{justifyContent: centerY ? 'center' : 'flex-start'}}
@@ -454,6 +455,7 @@ const RowContent = React.forwardRef<
454
455
  const outsideVariant = useThemeVariant();
455
456
  const isOverBrand =
456
457
  outsideVariant === 'brand' || outsideVariant === 'media' || outsideVariant === 'negative';
458
+ const {small} = React.useContext(ListContext);
457
459
  const {
458
460
  asset,
459
461
  headline,
@@ -756,7 +758,11 @@ const RowContent = React.forwardRef<
756
758
  if (props.iconButton) {
757
759
  return isInteractive
758
760
  ? renderRowWithDoubleInteraction(
759
- <div className={styles.dualActionRightIconButton}>
761
+ <div
762
+ className={classNames(styles.dualActionRightIconButton, {
763
+ [styles.dualActionRightIconButtonSmall]: small,
764
+ })}
765
+ >
760
766
  {props.iconButton.Icon ? (
761
767
  <IconButton {...props.iconButton} disabled={props.disabled} />
762
768
  ) : (