@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.
- package/css/blau.css +50 -0
- package/css/community/cyber.css +89 -23
- package/css/esimflag.css +50 -0
- package/css/mistica-common.css +10 -0
- package/css/mistica.css +1 -1
- package/css/movistar.css +50 -0
- package/css/o2.css +51 -0
- package/css/telefonica.css +60 -8
- package/css/vivo-evolution.css +60 -2
- package/css/vivo.css +50 -0
- package/dist/accordion.css-mistica.js +8 -8
- package/dist/accordion.js +67 -74
- package/dist/align.css-mistica.js +1 -1
- package/dist/autocomplete.css-mistica.js +4 -4
- package/dist/avatar.css-mistica.js +3 -3
- package/dist/badge.css-mistica.js +3 -3
- package/dist/box.css-mistica.js +13 -13
- package/dist/boxed.css-mistica.js +24 -24
- package/dist/boxed.d.ts +2 -2
- package/dist/boxed.js +27 -27
- package/dist/button-group.css-mistica.js +3 -3
- package/dist/button-layout.css-mistica.js +15 -15
- package/dist/button.css-mistica.js +64 -64
- package/dist/callout.css-mistica.js +11 -11
- package/dist/card-internal.css-mistica.js +34 -34
- package/dist/carousel.css-mistica.js +35 -35
- package/dist/checkbox.css-mistica.js +15 -15
- package/dist/chip.css-mistica.js +20 -20
- package/dist/circle.css-mistica.js +1 -1
- package/dist/community/advanced-data-card.css-mistica.js +18 -18
- package/dist/community/ai-card.css-mistica.js +13 -13
- package/dist/community/blocks.css-mistica.js +3 -3
- package/dist/community/cyber/example-component.css-mistica.js +1 -1
- package/dist/community/example-component.css-mistica.js +2 -2
- package/dist/community/skins/cyber-skin.js +68 -4
- package/dist/counter.css-mistica.js +7 -7
- package/dist/cover-hero.css-mistica.js +13 -13
- package/dist/credit-card-number-field.css-mistica.js +5 -5
- package/dist/date-field.css-mistica.js +1 -1
- package/dist/date-time-picker.css-mistica.js +1 -1
- package/dist/dialog.css-mistica.js +8 -8
- package/dist/divider.css-mistica.js +5 -5
- package/dist/double-field.css-mistica.js +4 -4
- package/dist/drawer.css-mistica.js +10 -10
- package/dist/empty-state-card.css-mistica.js +1 -1
- package/dist/empty-state.css-mistica.js +12 -12
- package/dist/fade-in.css-mistica.js +1 -1
- package/dist/fade-out.css-mistica.js +1 -1
- package/dist/feedback.css-mistica.js +3 -3
- package/dist/feedback.js +123 -123
- package/dist/file-upload.css-mistica.js +12 -12
- package/dist/fixed-footer-layout.css-mistica.js +5 -5
- package/dist/form.css-mistica.js +1 -1
- package/dist/grid-layout.css-mistica.js +3 -3
- package/dist/grid.css-mistica.js +120 -120
- package/dist/header.css-mistica.js +1 -1
- package/dist/hero.css-mistica.js +9 -9
- package/dist/horizontal-scroll.css-mistica.js +1 -1
- package/dist/icon-button.css-mistica.js +58 -58
- package/dist/icons/icon-chevron.css-mistica.js +2 -2
- package/dist/icons/icon-error.css-mistica.js +1 -1
- package/dist/icons/icon-error.js +51 -31
- package/dist/icons/icon-info.js +42 -10
- package/dist/icons/icon-stepper-success-vivo.d.ts +7 -0
- package/dist/icons/icon-stepper-success-vivo.js +78 -0
- package/dist/icons/icon-success-vivo-new.d.ts +1 -0
- package/dist/icons/icon-success-vivo.d.ts +1 -0
- package/dist/icons/icon-success.js +137 -58
- package/dist/image.css-mistica.js +6 -6
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/inline.css-mistica.js +11 -11
- package/dist/list.css-mistica.js +49 -37
- package/dist/list.css.d.ts +4 -0
- package/dist/list.js +167 -160
- package/dist/loading-bar.css-mistica.js +1 -1
- package/dist/loading-screen.css-mistica.js +9 -9
- package/dist/logo.css-mistica.js +5 -5
- package/dist/menu.css-mistica.js +12 -12
- package/dist/message.css-mistica.js +172 -0
- package/dist/message.css.d.ts +40 -0
- package/dist/message.d.ts +48 -0
- package/dist/message.js +389 -0
- package/dist/mosaic.css-mistica.js +1 -1
- package/dist/navigation-bar.css-mistica.js +20 -20
- package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
- package/dist/navigation-shared.css-mistica.js +18 -18
- package/dist/package-version.js +1 -1
- package/dist/pagination.css-mistica.js +30 -29
- package/dist/pagination.css.d.ts +1 -2
- package/dist/pagination.d.ts +0 -16
- package/dist/pagination.js +108 -115
- package/dist/pin-field.css-mistica.js +8 -8
- package/dist/popover.css-mistica.js +1 -1
- package/dist/progress-bar.css-mistica.js +7 -7
- package/dist/radio-button.css-mistica.js +32 -32
- package/dist/rating.css-mistica.js +4 -4
- package/dist/responsive-layout.css-mistica.js +6 -6
- package/dist/screen-reader-only.css-mistica.js +1 -1
- package/dist/select.css-mistica.js +22 -22
- package/dist/sheet-action-row.css-mistica.js +2 -2
- package/dist/sheet-common.css-mistica.js +9 -9
- package/dist/sheet-info.css-mistica.js +3 -3
- package/dist/sidenav-bar-layout.css-mistica.js +2 -2
- package/dist/sidenav-bar.css-mistica.js +107 -107
- package/dist/skeletons.css-mistica.js +10 -10
- package/dist/skins/blau.js +52 -0
- package/dist/skins/defaults.js +32 -0
- package/dist/skins/esimflag.js +52 -0
- package/dist/skins/movistar.js +52 -0
- package/dist/skins/o2.d.ts +1 -0
- package/dist/skins/o2.js +53 -0
- package/dist/skins/skin-contract.css-mistica.js +775 -741
- package/dist/skins/skin-contract.css.d.ts +34 -0
- package/dist/skins/telefonica.js +60 -8
- package/dist/skins/types/colors.d.ts +10 -0
- package/dist/skins/types/index.d.ts +3 -0
- package/dist/skins/vivo-evolution.js +54 -2
- package/dist/skins/vivo.js +52 -0
- package/dist/skip-link.css-mistica.js +2 -2
- package/dist/slider.css-mistica.js +27 -27
- package/dist/snackbar.css-mistica.js +17 -17
- package/dist/spinner.css-mistica.js +5 -5
- package/dist/square.css-mistica.js +1 -1
- package/dist/stack.css-mistica.js +5 -5
- package/dist/stacking-group.css-mistica.js +2 -2
- package/dist/stepper.css-mistica.js +10 -10
- package/dist/stepper.js +31 -25
- package/dist/switch-component.css-mistica.js +39 -39
- package/dist/table.css-mistica.js +9 -9
- package/dist/tabs.css-mistica.js +19 -19
- package/dist/tag.css-mistica.js +1 -1
- package/dist/text-field-base.css-mistica.js +26 -26
- package/dist/text-field-components.css-mistica.js +12 -12
- package/dist/text-link.css-mistica.js +6 -6
- package/dist/text-tokens.d.ts +2 -0
- package/dist/text-tokens.js +46 -30
- package/dist/text.css-mistica.js +6 -6
- package/dist/timeline.css-mistica.js +13 -13
- package/dist/timer.css-mistica.js +8 -8
- package/dist/tooltip.css-mistica.js +3 -3
- package/dist/tooltip.js +88 -88
- package/dist/touchable.css-mistica.js +5 -5
- package/dist/utils/aspect-ratio-support.css-mistica.js +4 -4
- package/dist/video.css-mistica.js +2 -2
- package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
- package/dist-es/accordion.css-mistica.js +7 -7
- package/dist-es/accordion.js +104 -111
- package/dist-es/align.css-mistica.js +1 -1
- package/dist-es/autocomplete.css-mistica.js +2 -2
- package/dist-es/avatar.css-mistica.js +2 -2
- package/dist-es/badge.css-mistica.js +2 -2
- package/dist-es/box.css-mistica.js +13 -13
- package/dist-es/boxed.css-mistica.js +23 -23
- package/dist-es/boxed.js +34 -34
- package/dist-es/button-group.css-mistica.js +2 -2
- package/dist-es/button-layout.css-mistica.js +15 -15
- package/dist-es/button.css-mistica.js +43 -43
- package/dist-es/callout.css-mistica.js +11 -11
- package/dist-es/card-internal.css-mistica.js +23 -23
- package/dist-es/carousel.css-mistica.js +10 -10
- package/dist-es/checkbox.css-mistica.js +13 -13
- package/dist-es/chip.css-mistica.js +17 -17
- package/dist-es/circle.css-mistica.js +1 -1
- package/dist-es/community/advanced-data-card.css-mistica.js +9 -9
- package/dist-es/community/ai-card.css-mistica.js +4 -4
- package/dist-es/community/blocks.css-mistica.js +2 -2
- package/dist-es/community/cyber/example-component.css-mistica.js +1 -1
- package/dist-es/community/example-component.css-mistica.js +2 -2
- package/dist-es/community/skins/cyber-skin.js +68 -4
- package/dist-es/counter.css-mistica.js +2 -2
- package/dist-es/cover-hero.css-mistica.js +3 -3
- package/dist-es/credit-card-number-field.css-mistica.js +4 -4
- package/dist-es/date-field.css-mistica.js +1 -1
- package/dist-es/date-time-picker.css-mistica.js +1 -1
- package/dist-es/dialog.css-mistica.js +5 -5
- package/dist-es/divider.css-mistica.js +5 -5
- package/dist-es/double-field.css-mistica.js +4 -4
- package/dist-es/drawer.css-mistica.js +2 -2
- package/dist-es/empty-state-card.css-mistica.js +1 -1
- package/dist-es/empty-state.css-mistica.js +7 -7
- package/dist-es/fade-in.css-mistica.js +1 -1
- package/dist-es/fade-out.css-mistica.js +1 -1
- package/dist-es/feedback.css-mistica.js +2 -2
- package/dist-es/feedback.js +158 -158
- package/dist-es/file-upload.css-mistica.js +8 -8
- package/dist-es/fixed-footer-layout.css-mistica.js +3 -3
- package/dist-es/form.css-mistica.js +1 -1
- package/dist-es/grid-layout.css-mistica.js +3 -3
- package/dist-es/grid.css-mistica.js +120 -120
- package/dist-es/header.css-mistica.js +1 -1
- package/dist-es/hero.css-mistica.js +3 -3
- package/dist-es/horizontal-scroll.css-mistica.js +1 -1
- package/dist-es/icon-button.css-mistica.js +56 -56
- package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
- package/dist-es/icons/icon-error.css-mistica.js +1 -1
- package/dist-es/icons/icon-error.js +55 -35
- package/dist-es/icons/icon-info.js +53 -21
- package/dist-es/icons/icon-stepper-success-vivo.js +69 -0
- package/dist-es/icons/icon-success.js +112 -74
- package/dist-es/image.css-mistica.js +3 -3
- package/dist-es/index.js +2355 -2354
- package/dist-es/inline.css-mistica.js +11 -11
- package/dist-es/list.css-mistica.js +8 -8
- package/dist-es/list.js +230 -223
- package/dist-es/loading-bar.css-mistica.js +1 -1
- package/dist-es/loading-screen.css-mistica.js +5 -5
- package/dist-es/logo.css-mistica.js +5 -5
- package/dist-es/menu.css-mistica.js +12 -12
- package/dist-es/message.css-mistica.js +41 -0
- package/dist-es/message.js +334 -0
- package/dist-es/mosaic.css-mistica.js +1 -1
- package/dist-es/navigation-bar.css-mistica.js +10 -10
- package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
- package/dist-es/navigation-shared.css-mistica.js +10 -10
- package/dist-es/package-version.js +1 -1
- package/dist-es/pagination.css-mistica.js +23 -19
- package/dist-es/pagination.js +137 -141
- package/dist-es/pin-field.css-mistica.js +2 -2
- package/dist-es/popover.css-mistica.js +1 -1
- package/dist-es/progress-bar.css-mistica.js +7 -7
- package/dist-es/radio-button.css-mistica.js +24 -24
- package/dist-es/rating.css-mistica.js +4 -4
- package/dist-es/responsive-layout.css-mistica.js +6 -6
- package/dist-es/screen-reader-only.css-mistica.js +1 -1
- package/dist-es/select.css-mistica.js +18 -18
- package/dist-es/sheet-action-row.css-mistica.js +2 -2
- package/dist-es/sheet-common.css-mistica.js +2 -2
- package/dist-es/sheet-info.css-mistica.js +2 -2
- package/dist-es/sidenav-bar-layout.css-mistica.js +2 -2
- package/dist-es/sidenav-bar.css-mistica.js +72 -72
- package/dist-es/skeletons.css-mistica.js +7 -7
- package/dist-es/skins/blau.js +52 -0
- package/dist-es/skins/defaults.js +32 -0
- package/dist-es/skins/esimflag.js +52 -0
- package/dist-es/skins/movistar.js +52 -0
- package/dist-es/skins/o2.js +53 -0
- package/dist-es/skins/skin-contract.css-mistica.js +775 -741
- package/dist-es/skins/telefonica.js +60 -8
- package/dist-es/skins/vivo-evolution.js +54 -2
- package/dist-es/skins/vivo.js +52 -0
- package/dist-es/skip-link.css-mistica.js +2 -2
- package/dist-es/slider.css-mistica.js +20 -20
- package/dist-es/snackbar.css-mistica.js +5 -5
- package/dist-es/spinner.css-mistica.js +2 -2
- package/dist-es/square.css-mistica.js +1 -1
- package/dist-es/stack.css-mistica.js +5 -5
- package/dist-es/stacking-group.css-mistica.js +2 -2
- package/dist-es/stepper.css-mistica.js +4 -4
- package/dist-es/stepper.js +60 -54
- package/dist-es/style.css +1 -1
- package/dist-es/switch-component.css-mistica.js +37 -37
- package/dist-es/table.css-mistica.js +9 -9
- package/dist-es/tabs.css-mistica.js +18 -18
- package/dist-es/tag.css-mistica.js +1 -1
- package/dist-es/text-field-base.css-mistica.js +17 -17
- package/dist-es/text-field-components.css-mistica.js +4 -4
- package/dist-es/text-link.css-mistica.js +6 -6
- package/dist-es/text-tokens.js +26 -16
- package/dist-es/text.css-mistica.js +6 -6
- package/dist-es/timeline.css-mistica.js +10 -10
- package/dist-es/timer.css-mistica.js +7 -7
- package/dist-es/tooltip.css-mistica.js +2 -2
- package/dist-es/tooltip.js +109 -109
- package/dist-es/touchable.css-mistica.js +2 -2
- package/dist-es/utils/aspect-ratio-support.css-mistica.js +3 -3
- package/dist-es/video.css-mistica.js +2 -2
- package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
- package/doc/layout.md +30 -0
- package/package.json +1 -1
- package/src/accordion.tsx +1 -21
- package/src/boxed.tsx +6 -2
- package/src/community/skins/cyber-skin.tsx +41 -4
- package/src/feedback.tsx +36 -29
- package/src/icons/icon-error.tsx +17 -1
- package/src/icons/icon-info.tsx +22 -1
- package/src/icons/icon-stepper-success-vivo.tsx +58 -0
- package/src/icons/icon-success-vivo-new.tsx +1 -0
- package/src/icons/icon-success-vivo.tsx +1 -0
- package/src/icons/icon-success.tsx +56 -37
- package/src/index.tsx +4 -0
- package/src/list.css.ts +20 -0
- package/src/list.tsx +9 -3
- package/src/message.css.ts +148 -0
- package/src/message.tsx +303 -0
- package/src/package-version.tsx +1 -1
- package/src/pagination.css.ts +15 -18
- package/src/pagination.tsx +100 -102
- package/src/skins/blau.tsx +31 -0
- package/src/skins/defaults.tsx +11 -0
- package/src/skins/esimflag.tsx +31 -0
- package/src/skins/movistar.tsx +31 -0
- package/src/skins/o2.tsx +32 -0
- package/src/skins/skin-contract.css.ts +13 -0
- package/src/skins/telefonica.tsx +39 -8
- package/src/skins/types/colors.tsx +10 -0
- package/src/skins/types/index.tsx +3 -0
- package/src/skins/vivo-evolution.tsx +33 -2
- package/src/skins/vivo.tsx +31 -0
- package/src/stepper.tsx +16 -6
- package/src/text-tokens.tsx +14 -0
- 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.
|
|
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.
|
|
532
|
-
textLinkNeutralBrand: palette.
|
|
533
|
-
textLinkNeutralNegative: palette.
|
|
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 {
|
|
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
|
|
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={
|
|
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
|
-
<
|
|
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
|
-
<
|
|
98
|
+
<Text
|
|
99
|
+
{...getTextSizesWithWeight({
|
|
100
|
+
textPreset: descriptionPreset,
|
|
101
|
+
})}
|
|
102
|
+
color={vars.colors.textSecondary}
|
|
103
|
+
>
|
|
92
104
|
{normalizedDescription}
|
|
93
|
-
</
|
|
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 {
|
|
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={
|
|
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 {
|
|
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,
|
package/src/icons/icon-error.tsx
CHANGED
|
@@ -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
|
}
|
package/src/icons/icon-info.tsx
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
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
|
|
70
|
-
<
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
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
|
) : (
|