@telefonica/mistica 18.0.0-beta.2 → 18.0.0-beta.3
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 +7 -2
- package/css/community/cyber.css +7 -2
- package/css/esimflag.css +7 -2
- package/css/mistica-common.css +5 -0
- package/css/mistica.css +1 -1
- package/css/movistar.css +5 -0
- package/css/o2.css +7 -2
- package/css/telefonica.css +7 -2
- package/css/vivo-evolution.css +5 -0
- package/css/vivo.css +5 -0
- package/dist/accordion.css-mistica.js +6 -6
- package/dist/align.css-mistica.js +1 -1
- package/dist/autocomplete.css-mistica.js +1 -1
- package/dist/avatar.css-mistica.js +1 -1
- package/dist/badge.css-mistica.js +1 -1
- package/dist/box.css-mistica.js +13 -13
- package/dist/boxed.css-mistica.js +24 -24
- package/dist/button-group.css-mistica.js +1 -1
- package/dist/button-layout.css-mistica.js +14 -14
- package/dist/button.css-mistica.js +34 -34
- package/dist/callout.css-mistica.js +11 -11
- package/dist/card-internal.css-mistica.js +21 -21
- package/dist/carousel.css-mistica.js +8 -8
- package/dist/checkbox.css-mistica.js +11 -11
- package/dist/chip.css-mistica.js +15 -15
- package/dist/chip.js +26 -26
- package/dist/circle.css-mistica.js +1 -1
- package/dist/community/advanced-data-card.css-mistica.js +8 -8
- package/dist/community/ai-card.css-mistica.js +2 -2
- package/dist/community/blocks.css-mistica.js +1 -1
- package/dist/community/cyber/example-component.css-mistica.js +1 -1
- package/dist/community/example-component.css-mistica.js +1 -1
- package/dist/community/skins/cyber-skin.js +12 -1
- package/dist/counter.css-mistica.js +1 -1
- package/dist/cover-hero.css-mistica.js +2 -2
- package/dist/credit-card-number-field.css-mistica.js +3 -3
- package/dist/date-field.css-mistica.js +1 -1
- package/dist/date-time-picker.css-mistica.js +1 -1
- package/dist/date-time-picker.js +5 -2
- package/dist/dialog.css-mistica.js +4 -4
- package/dist/divider.css-mistica.js +5 -5
- package/dist/double-field.css-mistica.js +2 -2
- package/dist/drawer.css-mistica.js +1 -1
- package/dist/empty-state-card.css-mistica.js +1 -1
- package/dist/empty-state.css-mistica.js +5 -5
- package/dist/fade-in.css-mistica.js +1 -1
- package/dist/fade-out.css-mistica.js +1 -1
- package/dist/feedback.css-mistica.js +1 -1
- package/dist/file-upload.css-mistica.js +7 -7
- package/dist/fixed-footer-layout.css-mistica.js +2 -2
- 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 +2 -2
- package/dist/hooks.js +32 -29
- package/dist/horizontal-scroll.css-mistica.js +1 -1
- package/dist/icon-button.css-mistica.js +53 -53
- package/dist/icons/icon-chevron.css-mistica.js +2 -2
- package/dist/icons/icon-error.css-mistica.js +1 -1
- package/dist/image.css-mistica.js +2 -2
- package/dist/inline.css-mistica.js +11 -11
- package/dist/list.css-mistica.js +7 -7
- package/dist/loading-bar.css-mistica.js +1 -1
- package/dist/loading-screen.css-mistica.js +4 -4
- package/dist/logo.css-mistica.js +5 -5
- package/dist/menu.css-mistica.js +12 -12
- package/dist/mosaic.css-mistica.js +1 -1
- package/dist/navigation-bar.css-mistica.js +9 -9
- package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
- package/dist/navigation-shared.css-mistica.js +9 -9
- package/dist/package-version.js +1 -1
- package/dist/pagination.css-mistica.js +18 -18
- package/dist/pin-field.css-mistica.js +1 -1
- package/dist/popover.css-mistica.js +1 -1
- package/dist/progress-bar.css-mistica.js +6 -6
- package/dist/radio-button.css-mistica.js +19 -19
- package/dist/rating.css-mistica.js +2 -2
- 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 +15 -15
- package/dist/sheet-action-row.css-mistica.js +1 -1
- package/dist/sheet-common.css-mistica.js +1 -1
- package/dist/sheet-info.css-mistica.js +1 -1
- package/dist/sidenav-bar-layout.css-mistica.js +1 -1
- package/dist/sidenav-bar.css-mistica.js +71 -71
- package/dist/skeletons.css-mistica.js +6 -6
- package/dist/skins/blau.js +12 -1
- package/dist/skins/defaults.js +11 -0
- package/dist/skins/esimflag.js +12 -1
- package/dist/skins/movistar.js +11 -0
- package/dist/skins/o2.js +12 -1
- package/dist/skins/skin-contract.css-mistica.js +743 -738
- package/dist/skins/skin-contract.css.d.ts +5 -0
- package/dist/skins/telefonica.js +12 -1
- package/dist/skins/types/index.d.ts +1 -0
- package/dist/skins/vivo-evolution.js +11 -0
- package/dist/skins/vivo.js +11 -0
- package/dist/skip-link.css-mistica.js +1 -1
- package/dist/slider.css-mistica.js +18 -18
- package/dist/snackbar.css-mistica.js +4 -4
- package/dist/spinner.css-mistica.js +1 -1
- package/dist/square.css-mistica.js +1 -1
- package/dist/stack.css-mistica.js +5 -5
- package/dist/stacking-group.css-mistica.js +1 -1
- package/dist/stepper.css-mistica.js +2 -2
- package/dist/switch-component.css-mistica.js +35 -35
- package/dist/table.css-mistica.js +9 -9
- package/dist/tabs.css-mistica.js +17 -17
- package/dist/tag.css-mistica.js +1 -1
- package/dist/text-field-base.css-mistica.js +18 -18
- package/dist/text-field-components.css-mistica.js +3 -3
- package/dist/text-link.css-mistica.js +6 -6
- package/dist/text.css-mistica.js +6 -6
- package/dist/theme-context.d.ts +1 -2
- package/dist/theme-context.js +3 -44
- package/dist/theme-variant-context.js +9 -8
- package/dist/timeline.css-mistica.js +9 -9
- package/dist/timer.css-mistica.js +6 -6
- package/dist/tooltip.css-mistica.js +1 -1
- package/dist/touchable.css-mistica.js +1 -1
- package/dist/utils/aspect-ratio-support.css-mistica.js +2 -2
- package/dist/utils/shared-context.d.ts +13 -0
- package/dist/utils/shared-context.js +63 -0
- package/dist/video.css-mistica.js +1 -1
- package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
- package/dist-es/accordion.css-mistica.js +6 -6
- package/dist-es/align.css-mistica.js +1 -1
- package/dist-es/autocomplete.css-mistica.js +1 -1
- package/dist-es/avatar.css-mistica.js +1 -1
- package/dist-es/badge.css-mistica.js +1 -1
- package/dist-es/box.css-mistica.js +13 -13
- package/dist-es/boxed.css-mistica.js +23 -23
- package/dist-es/button-group.css-mistica.js +1 -1
- package/dist-es/button-layout.css-mistica.js +14 -14
- package/dist-es/button.css-mistica.js +34 -34
- package/dist-es/callout.css-mistica.js +11 -11
- package/dist-es/card-internal.css-mistica.js +21 -21
- package/dist-es/carousel.css-mistica.js +8 -8
- package/dist-es/checkbox.css-mistica.js +11 -11
- package/dist-es/chip.css-mistica.js +15 -15
- package/dist-es/chip.js +38 -38
- package/dist-es/circle.css-mistica.js +1 -1
- package/dist-es/community/advanced-data-card.css-mistica.js +8 -8
- package/dist-es/community/ai-card.css-mistica.js +2 -2
- package/dist-es/community/blocks.css-mistica.js +1 -1
- package/dist-es/community/cyber/example-component.css-mistica.js +1 -1
- package/dist-es/community/example-component.css-mistica.js +1 -1
- package/dist-es/community/skins/cyber-skin.js +12 -1
- package/dist-es/counter.css-mistica.js +1 -1
- package/dist-es/cover-hero.css-mistica.js +2 -2
- package/dist-es/credit-card-number-field.css-mistica.js +3 -3
- package/dist-es/date-field.css-mistica.js +1 -1
- package/dist-es/date-time-picker.css-mistica.js +1 -1
- package/dist-es/date-time-picker.js +5 -2
- package/dist-es/dialog.css-mistica.js +4 -4
- package/dist-es/divider.css-mistica.js +5 -5
- package/dist-es/double-field.css-mistica.js +2 -2
- package/dist-es/drawer.css-mistica.js +1 -1
- package/dist-es/empty-state-card.css-mistica.js +1 -1
- package/dist-es/empty-state.css-mistica.js +5 -5
- 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 +1 -1
- package/dist-es/file-upload.css-mistica.js +7 -7
- package/dist-es/fixed-footer-layout.css-mistica.js +2 -2
- 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 +2 -2
- package/dist-es/hooks.js +24 -21
- package/dist-es/horizontal-scroll.css-mistica.js +1 -1
- package/dist-es/icon-button.css-mistica.js +53 -53
- 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/image.css-mistica.js +2 -2
- package/dist-es/inline.css-mistica.js +11 -11
- package/dist-es/list.css-mistica.js +7 -7
- package/dist-es/loading-bar.css-mistica.js +1 -1
- package/dist-es/loading-screen.css-mistica.js +4 -4
- package/dist-es/logo.css-mistica.js +5 -5
- package/dist-es/menu.css-mistica.js +12 -12
- package/dist-es/mosaic.css-mistica.js +1 -1
- package/dist-es/navigation-bar.css-mistica.js +9 -9
- package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
- package/dist-es/navigation-shared.css-mistica.js +9 -9
- package/dist-es/package-version.js +1 -1
- package/dist-es/pagination.css-mistica.js +18 -18
- package/dist-es/pin-field.css-mistica.js +1 -1
- package/dist-es/popover.css-mistica.js +1 -1
- package/dist-es/progress-bar.css-mistica.js +6 -6
- package/dist-es/radio-button.css-mistica.js +19 -19
- package/dist-es/rating.css-mistica.js +2 -2
- 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 +15 -15
- package/dist-es/sheet-action-row.css-mistica.js +1 -1
- package/dist-es/sheet-common.css-mistica.js +1 -1
- package/dist-es/sheet-info.css-mistica.js +1 -1
- package/dist-es/sidenav-bar-layout.css-mistica.js +1 -1
- package/dist-es/sidenav-bar.css-mistica.js +71 -71
- package/dist-es/skeletons.css-mistica.js +6 -6
- package/dist-es/skins/blau.js +12 -1
- package/dist-es/skins/defaults.js +11 -0
- package/dist-es/skins/esimflag.js +12 -1
- package/dist-es/skins/movistar.js +11 -0
- package/dist-es/skins/o2.js +12 -1
- package/dist-es/skins/skin-contract.css-mistica.js +743 -738
- package/dist-es/skins/telefonica.js +12 -1
- package/dist-es/skins/vivo-evolution.js +11 -0
- package/dist-es/skins/vivo.js +11 -0
- package/dist-es/skip-link.css-mistica.js +1 -1
- package/dist-es/slider.css-mistica.js +18 -18
- package/dist-es/snackbar.css-mistica.js +4 -4
- package/dist-es/spinner.css-mistica.js +1 -1
- 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 +1 -1
- package/dist-es/stepper.css-mistica.js +2 -2
- package/dist-es/style.css +1 -1
- package/dist-es/switch-component.css-mistica.js +35 -35
- package/dist-es/table.css-mistica.js +9 -9
- package/dist-es/tabs.css-mistica.js +17 -17
- 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 +3 -3
- package/dist-es/text-link.css-mistica.js +6 -6
- package/dist-es/text.css-mistica.js +6 -6
- package/dist-es/theme-context.js +3 -3
- package/dist-es/theme-variant-context.js +8 -7
- package/dist-es/timeline.css-mistica.js +9 -9
- package/dist-es/timer.css-mistica.js +6 -6
- package/dist-es/tooltip.css-mistica.js +1 -1
- package/dist-es/touchable.css-mistica.js +1 -1
- package/dist-es/utils/aspect-ratio-support.css-mistica.js +2 -2
- package/dist-es/utils/shared-context.js +13 -0
- package/dist-es/video.css-mistica.js +1 -1
- package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
- package/doc/module-federation.md +24 -18
- package/package.json +2 -2
- package/src/chip.tsx +4 -2
- package/src/community/skins/cyber-skin.tsx +7 -2
- package/src/date-time-picker.css.ts +0 -1
- package/src/date-time-picker.tsx +1 -0
- package/src/hooks.tsx +8 -4
- package/src/package-version.tsx +1 -1
- package/src/skins/blau.tsx +7 -2
- package/src/skins/defaults.tsx +6 -1
- package/src/skins/esimflag.tsx +7 -2
- package/src/skins/movistar.tsx +5 -0
- package/src/skins/o2.tsx +7 -2
- package/src/skins/skin-contract.css.ts +1 -0
- package/src/skins/telefonica.tsx +7 -2
- package/src/skins/types/index.tsx +1 -0
- package/src/skins/vivo-evolution.tsx +5 -0
- package/src/skins/vivo.tsx +5 -0
- package/src/theme-context.tsx +2 -2
- package/src/theme-variant-context.tsx +2 -1
- package/src/utils/__tests__/shared-context-test.tsx +48 -0
- package/src/utils/shared-context.tsx +29 -0
package/src/hooks.tsx
CHANGED
|
@@ -6,6 +6,7 @@ import ScreenSizeContext from './screen-size-context';
|
|
|
6
6
|
import {listenResize} from './utils/dom';
|
|
7
7
|
import {isClientSide} from './utils/environment';
|
|
8
8
|
import {isEqual} from './utils/helpers';
|
|
9
|
+
import {isFirefox} from './utils/platform';
|
|
9
10
|
|
|
10
11
|
import type {Theme} from './theme';
|
|
11
12
|
import type {ScreenSizeContextType} from './screen-size-context';
|
|
@@ -43,16 +44,19 @@ export const useDisableBodyScroll = (disable: boolean): void => {
|
|
|
43
44
|
// if the scrollbar is visible, we don't want to hide it because content will be resized
|
|
44
45
|
const overflowY = hasScrollbar ? 'scroll' : 'hidden';
|
|
45
46
|
|
|
47
|
+
// Firefox correctly respects overflow:hidden on body without needing position:fixed.
|
|
48
|
+
// Using position:fixed in Firefox breaks position:sticky elements (e.g. Sidenavbar).
|
|
49
|
+
const fixedPositionStyles = isFirefox()
|
|
50
|
+
? []
|
|
51
|
+
: ['position: fixed;', `top: ${-bodyScrollTop}px;`, 'left: 0px;', 'right: 0px;'];
|
|
52
|
+
|
|
46
53
|
document.body.style.cssText =
|
|
47
54
|
bodyStyles +
|
|
48
55
|
(bodyStyles.endsWith(';') ? '' : ';') +
|
|
49
56
|
[
|
|
50
57
|
'overflow: hidden;',
|
|
51
58
|
`overflow-y: ${overflowY};`,
|
|
52
|
-
|
|
53
|
-
`top: ${-bodyScrollTop}px;`,
|
|
54
|
-
'left: 0px;',
|
|
55
|
-
'right: 0px;',
|
|
59
|
+
...fixedPositionStyles,
|
|
56
60
|
'overscroll-behavior-y: contain;', // disable overscroll
|
|
57
61
|
].join('');
|
|
58
62
|
}
|
package/src/package-version.tsx
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// DO NOT EDIT THIS FILE. It's autogenerated by set-version.js
|
|
2
|
-
export const PACKAGE_VERSION = '18.0.0-beta.
|
|
2
|
+
export const PACKAGE_VERSION = '18.0.0-beta.3' as string;
|
package/src/skins/blau.tsx
CHANGED
|
@@ -699,8 +699,13 @@ export const getBlauSkin: GetKnownSkin = () => {
|
|
|
699
699
|
cardTitleDefault: {lineHeight: {desktop: 28, mobile: 24}, size: {desktop: 20, mobile: 18}},
|
|
700
700
|
cardTitleSnap: {lineHeight: {desktop: 24, mobile: 20}, size: {desktop: 16, mobile: 14}},
|
|
701
701
|
chipLabel: {
|
|
702
|
-
lineHeight: {desktop: 24, mobile:
|
|
703
|
-
size: {desktop: 16, mobile:
|
|
702
|
+
lineHeight: {desktop: 24, mobile: 24},
|
|
703
|
+
size: {desktop: 16, mobile: 16},
|
|
704
|
+
weight: 'medium',
|
|
705
|
+
},
|
|
706
|
+
chipLabelSmall: {
|
|
707
|
+
lineHeight: {desktop: 20, mobile: 20},
|
|
708
|
+
size: {desktop: 14, mobile: 14},
|
|
704
709
|
weight: 'medium',
|
|
705
710
|
},
|
|
706
711
|
drawerTitle: {
|
package/src/skins/defaults.tsx
CHANGED
|
@@ -56,7 +56,12 @@ export const defaultTextPresetsConfig: TextPresetsConfig = {
|
|
|
56
56
|
tabsLabel: {weight: 'medium', size: {mobile: 16, desktop: 18}, lineHeight: {mobile: 24, desktop: 24}},
|
|
57
57
|
chipLabel: {
|
|
58
58
|
lineHeight: {desktop: 24, mobile: 20},
|
|
59
|
-
size: {desktop: 16, mobile:
|
|
59
|
+
size: {desktop: 16, mobile: 16},
|
|
60
|
+
weight: 'medium',
|
|
61
|
+
},
|
|
62
|
+
chipLabelSmall: {
|
|
63
|
+
lineHeight: {desktop: 24, mobile: 20},
|
|
64
|
+
size: {desktop: 14, mobile: 14},
|
|
60
65
|
weight: 'medium',
|
|
61
66
|
},
|
|
62
67
|
inputHelperText: {lineHeight: {desktop: 20, mobile: 16}, size: {desktop: 14, mobile: 12}},
|
package/src/skins/esimflag.tsx
CHANGED
|
@@ -703,8 +703,13 @@ export const getEsimflagSkin: GetKnownSkin = () => {
|
|
|
703
703
|
cardTitleDefault: {lineHeight: {desktop: 28, mobile: 24}, size: {desktop: 20, mobile: 18}},
|
|
704
704
|
cardTitleSnap: {lineHeight: {desktop: 24, mobile: 20}, size: {desktop: 16, mobile: 14}},
|
|
705
705
|
chipLabel: {
|
|
706
|
-
lineHeight: {desktop: 24, mobile:
|
|
707
|
-
size: {desktop: 16, mobile:
|
|
706
|
+
lineHeight: {desktop: 24, mobile: 24},
|
|
707
|
+
size: {desktop: 16, mobile: 16},
|
|
708
|
+
weight: 'medium',
|
|
709
|
+
},
|
|
710
|
+
chipLabelSmall: {
|
|
711
|
+
lineHeight: {desktop: 20, mobile: 20},
|
|
712
|
+
size: {desktop: 14, mobile: 14},
|
|
708
713
|
weight: 'medium',
|
|
709
714
|
},
|
|
710
715
|
drawerTitle: {
|
package/src/skins/movistar.tsx
CHANGED
|
@@ -714,6 +714,11 @@ export const getMovistarSkin: GetKnownSkin = () => {
|
|
|
714
714
|
size: {desktop: 18, mobile: 14},
|
|
715
715
|
weight: 'medium',
|
|
716
716
|
},
|
|
717
|
+
chipLabelSmall: {
|
|
718
|
+
lineHeight: {desktop: 22, mobile: 20},
|
|
719
|
+
size: {desktop: 16, mobile: 14},
|
|
720
|
+
weight: 'medium',
|
|
721
|
+
},
|
|
717
722
|
drawerTitle: {
|
|
718
723
|
lineHeight: {desktop: 26, mobile: 26},
|
|
719
724
|
size: {desktop: 20, mobile: 20},
|
package/src/skins/o2.tsx
CHANGED
|
@@ -706,8 +706,13 @@ export const getO2Skin: GetKnownSkin = () => {
|
|
|
706
706
|
cardTitleDefault: {lineHeight: {desktop: 28, mobile: 24}, size: {desktop: 20, mobile: 18}},
|
|
707
707
|
cardTitleSnap: {lineHeight: {desktop: 24, mobile: 20}, size: {desktop: 16, mobile: 14}},
|
|
708
708
|
chipLabel: {
|
|
709
|
-
lineHeight: {desktop: 24, mobile:
|
|
710
|
-
size: {desktop: 16, mobile:
|
|
709
|
+
lineHeight: {desktop: 24, mobile: 24},
|
|
710
|
+
size: {desktop: 16, mobile: 16},
|
|
711
|
+
weight: 'medium',
|
|
712
|
+
},
|
|
713
|
+
chipLabelSmall: {
|
|
714
|
+
lineHeight: {desktop: 20, mobile: 20},
|
|
715
|
+
size: {desktop: 14, mobile: 14},
|
|
711
716
|
weight: 'medium',
|
|
712
717
|
},
|
|
713
718
|
drawerTitle: {
|
|
@@ -357,6 +357,7 @@ const textPresets: ToThemeTokens<TextPresetsConfig> = {
|
|
|
357
357
|
text9: {weight: '', size: '', lineHeight: ''},
|
|
358
358
|
text10: {weight: '', size: '', lineHeight: ''},
|
|
359
359
|
chipLabel: {weight: '', size: '', lineHeight: ''},
|
|
360
|
+
chipLabelSmall: {weight: '', size: '', lineHeight: ''},
|
|
360
361
|
inputHelperText: {size: '', lineHeight: ''},
|
|
361
362
|
inputLabel: {size: '', lineHeight: ''},
|
|
362
363
|
inputValue: {size: '', lineHeight: ''},
|
package/src/skins/telefonica.tsx
CHANGED
|
@@ -707,8 +707,13 @@ export const getTelefonicaSkin: GetKnownSkin = () => {
|
|
|
707
707
|
cardTitleDefault: {lineHeight: {desktop: 28, mobile: 24}, size: {desktop: 20, mobile: 18}},
|
|
708
708
|
cardTitleSnap: {lineHeight: {desktop: 24, mobile: 20}, size: {desktop: 16, mobile: 14}},
|
|
709
709
|
chipLabel: {
|
|
710
|
-
lineHeight: {desktop: 24, mobile:
|
|
711
|
-
size: {desktop: 16, mobile:
|
|
710
|
+
lineHeight: {desktop: 24, mobile: 24},
|
|
711
|
+
size: {desktop: 16, mobile: 16},
|
|
712
|
+
weight: 'medium',
|
|
713
|
+
},
|
|
714
|
+
chipLabelSmall: {
|
|
715
|
+
lineHeight: {desktop: 20, mobile: 20},
|
|
716
|
+
size: {desktop: 14, mobile: 14},
|
|
712
717
|
weight: 'medium',
|
|
713
718
|
},
|
|
714
719
|
drawerTitle: {
|
|
@@ -67,6 +67,7 @@ export type TextPresetsConfig = {
|
|
|
67
67
|
cardTitleSnap: TextSizeTokenConfig;
|
|
68
68
|
drawerTitle: TextTokenConfig;
|
|
69
69
|
chipLabel: TextTokenConfig;
|
|
70
|
+
chipLabelSmall: TextTokenConfig;
|
|
70
71
|
link: TextWeightTokenConfig<'regular' | 'medium'>;
|
|
71
72
|
loadingScreenTitle: TextSizeTokenConfig;
|
|
72
73
|
title1: TextTokenConfig<'regular' | 'medium'>;
|
|
@@ -744,6 +744,11 @@ export const getVivoEvolutionSkin: GetKnownSkin = () => {
|
|
|
744
744
|
size: {desktop: 16, mobile: 14},
|
|
745
745
|
weight: 'medium',
|
|
746
746
|
},
|
|
747
|
+
chipLabelSmall: {
|
|
748
|
+
lineHeight: {desktop: 24, mobile: 20},
|
|
749
|
+
size: {desktop: 16, mobile: 14},
|
|
750
|
+
weight: 'medium',
|
|
751
|
+
},
|
|
747
752
|
drawerTitle: {
|
|
748
753
|
lineHeight: {desktop: 32, mobile: 24},
|
|
749
754
|
size: {desktop: 28, mobile: 20},
|
package/src/skins/vivo.tsx
CHANGED
|
@@ -700,6 +700,11 @@ export const getVivoSkin: GetKnownSkin = () => {
|
|
|
700
700
|
size: {desktop: 16, mobile: 14},
|
|
701
701
|
weight: 'medium',
|
|
702
702
|
},
|
|
703
|
+
chipLabelSmall: {
|
|
704
|
+
lineHeight: {desktop: 24, mobile: 20},
|
|
705
|
+
size: {desktop: 16, mobile: 14},
|
|
706
|
+
weight: 'medium',
|
|
707
|
+
},
|
|
703
708
|
drawerTitle: {
|
|
704
709
|
lineHeight: {desktop: 32, mobile: 24},
|
|
705
710
|
size: {desktop: 28, mobile: 20},
|
package/src/theme-context.tsx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
2
|
+
import {getSharedContext} from './utils/shared-context';
|
|
3
3
|
|
|
4
4
|
import type {Theme} from './theme';
|
|
5
5
|
|
|
6
|
-
const ThemeContext =
|
|
6
|
+
const ThemeContext = getSharedContext<Theme | null>('theme', null);
|
|
7
7
|
|
|
8
8
|
export default ThemeContext;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import {getSharedContext} from './utils/shared-context';
|
|
3
4
|
|
|
4
5
|
export type NonDeprecatedVariant = 'default' | 'brand' | 'negative' | 'alternative' | 'media';
|
|
5
6
|
|
|
@@ -19,7 +20,7 @@ export const normalizeVariant = <T extends Variant>(variant: T): T extends 'inve
|
|
|
19
20
|
return variant as T extends 'inverse' ? 'brand' : T;
|
|
20
21
|
};
|
|
21
22
|
|
|
22
|
-
const ThemeVariantContext =
|
|
23
|
+
const ThemeVariantContext = getSharedContext<Variant>('theme-variant', 'default');
|
|
23
24
|
|
|
24
25
|
type ThemeVariantProps = {
|
|
25
26
|
variant?: Variant;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import {render, screen} from '@testing-library/react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A federated remote that does not share @telefonica/mistica/icon-runtime evaluates the context
|
|
6
|
+
* modules a second time, but it shares react. Each isolated registry below plays one of those copies.
|
|
7
|
+
*/
|
|
8
|
+
const loadIsolatedCopy = <T,>(modulePath: string): T => {
|
|
9
|
+
let loadedModule: T | undefined;
|
|
10
|
+
jest.isolateModules(() => {
|
|
11
|
+
jest.doMock('react', () => React);
|
|
12
|
+
loadedModule = require(modulePath);
|
|
13
|
+
});
|
|
14
|
+
return loadedModule as T;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
test('two copies of the theme context module share one context', () => {
|
|
18
|
+
const first = loadIsolatedCopy<typeof import('../../theme-context')>('../../theme-context');
|
|
19
|
+
const second = loadIsolatedCopy<typeof import('../../theme-context')>('../../theme-context');
|
|
20
|
+
|
|
21
|
+
expect(second.default).toBe(first.default);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('two copies of the theme variant module read one provider', () => {
|
|
25
|
+
const first = loadIsolatedCopy<typeof import('../../theme-variant-context')>(
|
|
26
|
+
'../../theme-variant-context'
|
|
27
|
+
);
|
|
28
|
+
const second = loadIsolatedCopy<typeof import('../../theme-variant-context')>(
|
|
29
|
+
'../../theme-variant-context'
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const VariantName = () => <span>{second.useThemeVariant()}</span>;
|
|
33
|
+
|
|
34
|
+
render(
|
|
35
|
+
<first.ThemeVariant variant="brand">
|
|
36
|
+
<VariantName />
|
|
37
|
+
</first.ThemeVariant>
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
expect(screen.getByText('brand')).toBeInTheDocument();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('different contexts keep their own identity', () => {
|
|
44
|
+
const themeContext = loadIsolatedCopy<typeof import('../../theme-context')>('../../theme-context');
|
|
45
|
+
const {getSharedContext} = loadIsolatedCopy<typeof import('../shared-context')>('../shared-context');
|
|
46
|
+
|
|
47
|
+
expect(getSharedContext('another-context', null)).not.toBe(themeContext.default);
|
|
48
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import {PACKAGE_VERSION} from '../package-version';
|
|
4
|
+
|
|
5
|
+
type ContextRegistry = Record<symbol, React.Context<any> | undefined>;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A module federation remote, or a page that mixes the CommonJS and the ES builds, can evaluate a
|
|
9
|
+
* module of this package twice. Each evaluation would create its own context, and a consumer of one
|
|
10
|
+
* copy would never see the provider of the other one. The icons of @telefonica/mistica-icons read
|
|
11
|
+
* the theme through @telefonica/mistica/icon-runtime, so they hit this case unless the application
|
|
12
|
+
* shares that entry point.
|
|
13
|
+
*
|
|
14
|
+
* React is always a singleton on the page, so the context lives on it. Apollo Client applies the
|
|
15
|
+
* same pattern. The key holds the version, because the CSS variables of each version have different
|
|
16
|
+
* names, and two versions must not share a theme.
|
|
17
|
+
*/
|
|
18
|
+
export const getSharedContext = <T,>(name: string, defaultValue: T): React.Context<T> => {
|
|
19
|
+
const key = Symbol.for(`@telefonica/mistica/${name}@${PACKAGE_VERSION}`);
|
|
20
|
+
const registry = React.createContext as unknown as ContextRegistry;
|
|
21
|
+
const existingContext = registry[key];
|
|
22
|
+
if (existingContext) {
|
|
23
|
+
return existingContext;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const context = React.createContext<T>(defaultValue);
|
|
27
|
+
Object.defineProperty(registry, key, {value: context, enumerable: false});
|
|
28
|
+
return context;
|
|
29
|
+
};
|