@telefonica/mistica 11.8.0 → 11.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avatar.d.ts +14 -0
- package/dist/avatar.js +239 -0
- package/dist/avatar.js.flow +16 -0
- package/dist/badge.d.ts +2 -0
- package/dist/badge.js +24 -7
- package/dist/badge.js.flow +2 -0
- package/dist/button.js +2 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +27 -13
- package/dist/index.js.flow +4 -2
- package/dist/package-version.js +1 -1
- package/dist/placeholder.d.ts +0 -4
- package/dist/placeholder.js +1 -13
- package/dist/placeholder.js.flow +0 -4
- package/dist/text-link.js +2 -3
- package/dist/text.js +14 -2
- package/dist/theme-context-provider.js +11 -7
- package/dist/theme.d.ts +3 -2
- package/dist/theme.js.flow +3 -2
- package/dist/utils/__tests__/analytics-test.js +74 -0
- package/dist/utils/analytics.d.ts +11 -0
- package/dist/utils/analytics.js +46 -1
- package/dist/utils/analytics.js.flow +11 -0
- package/dist-es/avatar.js +208 -0
- package/dist-es/badge.js +24 -7
- package/dist-es/button.js +3 -3
- package/dist-es/index.js +3 -1
- package/dist-es/package-version.js +1 -1
- package/dist-es/placeholder.js +0 -11
- package/dist-es/text-link.js +3 -4
- package/dist-es/text.js +14 -2
- package/dist-es/theme-context-provider.js +11 -7
- package/dist-es/utils/__tests__/analytics-test.js +47 -0
- package/dist-es/utils/analytics.js +22 -0
- package/package.json +3 -3
package/dist/theme.d.ts
CHANGED
|
@@ -74,6 +74,7 @@ declare type LinkComponent = React.ComponentType<{
|
|
|
74
74
|
}>;
|
|
75
75
|
export declare const AnchorLink: LinkComponent;
|
|
76
76
|
export declare type ColorScheme = 'dark' | 'light' | 'auto';
|
|
77
|
+
export declare type EventFormat = 'universal-analytics' | 'google-analytics-4';
|
|
77
78
|
export declare type ThemeConfig = {
|
|
78
79
|
skin: Readonly<Skin>;
|
|
79
80
|
colorScheme?: ColorScheme;
|
|
@@ -89,7 +90,7 @@ export declare type ThemeConfig = {
|
|
|
89
90
|
texts?: Partial<ThemeTexts>;
|
|
90
91
|
analytics?: {
|
|
91
92
|
logEvent: (trackingEvent: TrackingEvent) => Promise<void>;
|
|
92
|
-
eventFormat?:
|
|
93
|
+
eventFormat?: EventFormat;
|
|
93
94
|
};
|
|
94
95
|
dimensions?: {
|
|
95
96
|
headerMobileHeight: number;
|
|
@@ -118,7 +119,7 @@ export declare type Theme = {
|
|
|
118
119
|
texts: ThemeTexts;
|
|
119
120
|
analytics: {
|
|
120
121
|
logEvent: (trackingEvent: TrackingEvent) => Promise<void>;
|
|
121
|
-
eventFormat:
|
|
122
|
+
eventFormat: EventFormat;
|
|
122
123
|
};
|
|
123
124
|
dimensions: {
|
|
124
125
|
headerMobileHeight: number;
|
package/dist/theme.js.flow
CHANGED
|
@@ -78,6 +78,7 @@ declare type LinkComponent = React.ComponentType<{
|
|
|
78
78
|
}>;
|
|
79
79
|
declare export var AnchorLink: LinkComponent;
|
|
80
80
|
export type ColorScheme = "dark" | "light" | "auto";
|
|
81
|
+
export type EventFormat = "universal-analytics" | "google-analytics-4";
|
|
81
82
|
export type ThemeConfig = {
|
|
82
83
|
skin: $ReadOnly<Skin>,
|
|
83
84
|
colorScheme?: ColorScheme,
|
|
@@ -93,7 +94,7 @@ export type ThemeConfig = {
|
|
|
93
94
|
texts?: $Shape<ThemeTexts>,
|
|
94
95
|
analytics?: {
|
|
95
96
|
logEvent: (trackingEvent: TrackingEvent) => Promise<void>,
|
|
96
|
-
eventFormat?:
|
|
97
|
+
eventFormat?: EventFormat,
|
|
97
98
|
},
|
|
98
99
|
dimensions?: {
|
|
99
100
|
headerMobileHeight: number,
|
|
@@ -122,7 +123,7 @@ export type Theme = {
|
|
|
122
123
|
texts: ThemeTexts,
|
|
123
124
|
analytics: {
|
|
124
125
|
logEvent: (trackingEvent: TrackingEvent) => Promise<void>,
|
|
125
|
-
eventFormat:
|
|
126
|
+
eventFormat: EventFormat,
|
|
126
127
|
},
|
|
127
128
|
dimensions: {
|
|
128
129
|
headerMobileHeight: number,
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
var React = _interopRequireWildcard(require("react"));
|
|
4
|
+
var _themeContextProvider = _interopRequireDefault(require("../../theme-context-provider"));
|
|
5
|
+
var _react = require("@testing-library/react");
|
|
6
|
+
var _testUtils = require("../../__tests__/test-utils");
|
|
7
|
+
var _analytics = require("../analytics");
|
|
8
|
+
function _interopRequireDefault(obj) {
|
|
9
|
+
return obj && obj.__esModule ? obj : {
|
|
10
|
+
default: obj
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function _interopRequireWildcard(obj) {
|
|
14
|
+
if (obj && obj.__esModule) {
|
|
15
|
+
return obj;
|
|
16
|
+
} else {
|
|
17
|
+
var newObj = {};
|
|
18
|
+
if (obj != null) {
|
|
19
|
+
for(var key in obj){
|
|
20
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
21
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
22
|
+
if (desc.get || desc.set) {
|
|
23
|
+
Object.defineProperty(newObj, key, desc);
|
|
24
|
+
} else {
|
|
25
|
+
newObj[key] = obj[key];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
newObj.default = obj;
|
|
31
|
+
return newObj;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
var PrintEventFormat = function PrintEventFormat(param) {
|
|
35
|
+
var prefix = param.prefix;
|
|
36
|
+
var eventFormat = (0, _analytics).useTrackingConfig().eventFormat;
|
|
37
|
+
return /*#__PURE__*/ (0, _jsxRuntime).jsx("div", {
|
|
38
|
+
children: "".concat(prefix, ": ").concat(eventFormat)
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
test("TrackingConfig context providers", function() {
|
|
42
|
+
(0, _react).render(/*#__PURE__*/ (0, _jsxRuntime).jsxs(_themeContextProvider.default, {
|
|
43
|
+
theme: (0, _testUtils).makeTheme({
|
|
44
|
+
analytics: {
|
|
45
|
+
logEvent: function logEvent() {
|
|
46
|
+
return Promise.resolve();
|
|
47
|
+
},
|
|
48
|
+
eventFormat: "google-analytics-4"
|
|
49
|
+
}
|
|
50
|
+
}),
|
|
51
|
+
children: [
|
|
52
|
+
/*#__PURE__*/ (0, _jsxRuntime).jsx(PrintEventFormat, {
|
|
53
|
+
prefix: "test1"
|
|
54
|
+
}),
|
|
55
|
+
/*#__PURE__*/ (0, _jsxRuntime).jsxs(_analytics.TrackingConfig, {
|
|
56
|
+
eventFormat: "universal-analytics",
|
|
57
|
+
children: [
|
|
58
|
+
/*#__PURE__*/ (0, _jsxRuntime).jsx(PrintEventFormat, {
|
|
59
|
+
prefix: "test2"
|
|
60
|
+
}),
|
|
61
|
+
/*#__PURE__*/ (0, _jsxRuntime).jsx(_analytics.TrackingConfig, {
|
|
62
|
+
eventFormat: "google-analytics-4",
|
|
63
|
+
children: /*#__PURE__*/ (0, _jsxRuntime).jsx(PrintEventFormat, {
|
|
64
|
+
prefix: "test3"
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
]
|
|
68
|
+
})
|
|
69
|
+
]
|
|
70
|
+
}));
|
|
71
|
+
expect(_react.screen.getByText("test1: google-analytics-4")).toBeInTheDocument();
|
|
72
|
+
expect(_react.screen.getByText("test2: universal-analytics")).toBeInTheDocument();
|
|
73
|
+
expect(_react.screen.getByText("test3: google-analytics-4")).toBeInTheDocument();
|
|
74
|
+
});
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { EventFormat } from '../theme';
|
|
1
3
|
export declare const eventCategories: {
|
|
2
4
|
readonly userInteraction: "user_interaction";
|
|
3
5
|
};
|
|
@@ -7,3 +9,12 @@ export declare const eventActions: {
|
|
|
7
9
|
export declare const eventNames: {
|
|
8
10
|
readonly userInteraction: "user_interaction";
|
|
9
11
|
};
|
|
12
|
+
declare type TrackingConfigProps = {
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
eventFormat: EventFormat;
|
|
15
|
+
};
|
|
16
|
+
export declare const TrackingConfig: ({ children, eventFormat }: TrackingConfigProps) => JSX.Element;
|
|
17
|
+
export declare const useTrackingConfig: () => {
|
|
18
|
+
eventFormat: EventFormat;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
package/dist/utils/analytics.js
CHANGED
|
@@ -2,7 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.eventNames = exports.eventActions = exports.eventCategories = void 0;
|
|
5
|
+
exports.useTrackingConfig = exports.TrackingConfig = exports.eventNames = exports.eventActions = exports.eventCategories = void 0;
|
|
6
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
function _interopRequireWildcard(obj) {
|
|
9
|
+
if (obj && obj.__esModule) {
|
|
10
|
+
return obj;
|
|
11
|
+
} else {
|
|
12
|
+
var newObj = {};
|
|
13
|
+
if (obj != null) {
|
|
14
|
+
for(var key in obj){
|
|
15
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
16
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
17
|
+
if (desc.get || desc.set) {
|
|
18
|
+
Object.defineProperty(newObj, key, desc);
|
|
19
|
+
} else {
|
|
20
|
+
newObj[key] = obj[key];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
newObj.default = obj;
|
|
26
|
+
return newObj;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
6
29
|
var eventCategories = {
|
|
7
30
|
userInteraction: "user_interaction"
|
|
8
31
|
};
|
|
@@ -15,3 +38,25 @@ var eventNames = {
|
|
|
15
38
|
userInteraction: "user_interaction"
|
|
16
39
|
};
|
|
17
40
|
exports.eventNames = eventNames;
|
|
41
|
+
var TrackingContext = /*#__PURE__*/ React.createContext({
|
|
42
|
+
eventFormat: "universal-analytics"
|
|
43
|
+
});
|
|
44
|
+
var TrackingConfig = function TrackingConfig(param) {
|
|
45
|
+
var children = param.children, eventFormat = param.eventFormat;
|
|
46
|
+
var value = React.useMemo(function() {
|
|
47
|
+
return {
|
|
48
|
+
eventFormat: eventFormat
|
|
49
|
+
};
|
|
50
|
+
}, [
|
|
51
|
+
eventFormat
|
|
52
|
+
]);
|
|
53
|
+
return /*#__PURE__*/ (0, _jsxRuntime).jsx(TrackingContext.Provider, {
|
|
54
|
+
value: value,
|
|
55
|
+
children: children
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
exports.TrackingConfig = TrackingConfig;
|
|
59
|
+
var useTrackingConfig = function useTrackingConfig() {
|
|
60
|
+
return React.useContext(TrackingContext);
|
|
61
|
+
};
|
|
62
|
+
exports.useTrackingConfig = useTrackingConfig;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import type { EventFormat } from "../theme";
|
|
3
5
|
declare export var eventCategories: {
|
|
4
6
|
+userInteraction: "user_interaction",
|
|
5
7
|
};
|
|
@@ -9,3 +11,12 @@ declare export var eventActions: {
|
|
|
9
11
|
declare export var eventNames: {
|
|
10
12
|
+userInteraction: "user_interaction",
|
|
11
13
|
};
|
|
14
|
+
declare type TrackingConfigProps = {
|
|
15
|
+
children: React.Node,
|
|
16
|
+
eventFormat: EventFormat,
|
|
17
|
+
};
|
|
18
|
+
declare export var TrackingConfig: (x: TrackingConfigProps) => React.Node;
|
|
19
|
+
declare export var useTrackingConfig: () => {
|
|
20
|
+
eventFormat: EventFormat,
|
|
21
|
+
};
|
|
22
|
+
declare export {};
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
function _arrayLikeToArray(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _arrayWithHoles(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
9
|
+
function _iterableToArrayLimit(arr, i) {
|
|
10
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
11
|
+
if (_i == null) return;
|
|
12
|
+
var _arr = [];
|
|
13
|
+
var _n = true;
|
|
14
|
+
var _d = false;
|
|
15
|
+
var _s, _e;
|
|
16
|
+
try {
|
|
17
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
18
|
+
_arr.push(_s.value);
|
|
19
|
+
if (i && _arr.length === i) break;
|
|
20
|
+
}
|
|
21
|
+
} catch (err) {
|
|
22
|
+
_d = true;
|
|
23
|
+
_e = err;
|
|
24
|
+
} finally{
|
|
25
|
+
try {
|
|
26
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
27
|
+
} finally{
|
|
28
|
+
if (_d) throw _e;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return _arr;
|
|
32
|
+
}
|
|
33
|
+
function _nonIterableRest() {
|
|
34
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
35
|
+
}
|
|
36
|
+
function _objectWithoutProperties(source, excluded) {
|
|
37
|
+
if (source == null) return {};
|
|
38
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
39
|
+
var key, i;
|
|
40
|
+
if (Object.getOwnPropertySymbols) {
|
|
41
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
42
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
|
43
|
+
key = sourceSymbolKeys[i];
|
|
44
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
45
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
46
|
+
target[key] = source[key];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return target;
|
|
50
|
+
}
|
|
51
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
52
|
+
if (source == null) return {};
|
|
53
|
+
var target = {};
|
|
54
|
+
var sourceKeys = Object.keys(source);
|
|
55
|
+
var key, i;
|
|
56
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
57
|
+
key = sourceKeys[i];
|
|
58
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
59
|
+
target[key] = source[key];
|
|
60
|
+
}
|
|
61
|
+
return target;
|
|
62
|
+
}
|
|
63
|
+
function _slicedToArray(arr, i) {
|
|
64
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
65
|
+
}
|
|
66
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
67
|
+
if (!o) return;
|
|
68
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
69
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
70
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
71
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
72
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
73
|
+
}
|
|
74
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
75
|
+
// https://www.figma.com/file/U4ipIXOk64bdM5tSvaqPKS/%5BREADY%5D--Avatar?node-id=2%3A61
|
|
76
|
+
import * as React from "react";
|
|
77
|
+
import Badge from "./badge";
|
|
78
|
+
import IconUserAccountRegular from "./generated/mistica-icons/icon-user-account-regular";
|
|
79
|
+
import { useTheme } from "./hooks";
|
|
80
|
+
import { createUseStyles } from "./jss";
|
|
81
|
+
import { useIsInverseVariant } from "./theme-variant-context";
|
|
82
|
+
var useStyles = createUseStyles(function() {
|
|
83
|
+
return {
|
|
84
|
+
avatar: {
|
|
85
|
+
borderRadius: "50%",
|
|
86
|
+
display: "flex",
|
|
87
|
+
alignItems: "center",
|
|
88
|
+
justifyContent: "center",
|
|
89
|
+
color: function(param) {
|
|
90
|
+
var textColor = param.textColor;
|
|
91
|
+
return textColor;
|
|
92
|
+
},
|
|
93
|
+
background: function(param) {
|
|
94
|
+
var backgroundColor = param.backgroundColor;
|
|
95
|
+
return backgroundColor;
|
|
96
|
+
},
|
|
97
|
+
width: function(param) {
|
|
98
|
+
var size = param.size;
|
|
99
|
+
return size;
|
|
100
|
+
},
|
|
101
|
+
height: function(param) {
|
|
102
|
+
var size = param.size;
|
|
103
|
+
return size;
|
|
104
|
+
},
|
|
105
|
+
overflow: "hidden"
|
|
106
|
+
},
|
|
107
|
+
image: {
|
|
108
|
+
width: function(param) {
|
|
109
|
+
var size = param.size;
|
|
110
|
+
return size;
|
|
111
|
+
},
|
|
112
|
+
height: function(param) {
|
|
113
|
+
var size = param.size;
|
|
114
|
+
return size;
|
|
115
|
+
},
|
|
116
|
+
objectFit: "cover"
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
/**
|
|
121
|
+
* Returns a right/top distance for the badge.
|
|
122
|
+
* The badge will be placed over the avatar's edge
|
|
123
|
+
* This is calculated using the `radius * (1 - sin(45deg))` distance minus a
|
|
124
|
+
* constant offset that depends on the badge size
|
|
125
|
+
*/ var getBadgeDistance = function(size, badge) {
|
|
126
|
+
if (!badge) {
|
|
127
|
+
return 0;
|
|
128
|
+
}
|
|
129
|
+
var radius = size / 2;
|
|
130
|
+
var badgeOffset = badge === true ? 5 : 10; // badge=true renders a small circle
|
|
131
|
+
return radius * (1 - Math.sin(Math.PI / 4)) - badgeOffset;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Not using TextPresets here because we don't want to scale the avatar text with the device settings
|
|
135
|
+
*/ var renderText = function(size, text) {
|
|
136
|
+
if (!text) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
var fontSize;
|
|
140
|
+
if (size <= 40) {
|
|
141
|
+
fontSize = 14;
|
|
142
|
+
} else if (size <= 64) {
|
|
143
|
+
fontSize = 16;
|
|
144
|
+
} else {
|
|
145
|
+
fontSize = 18;
|
|
146
|
+
}
|
|
147
|
+
return /*#__PURE__*/ _jsx("span", {
|
|
148
|
+
style: {
|
|
149
|
+
fontSize: fontSize,
|
|
150
|
+
textTransform: "uppercase"
|
|
151
|
+
},
|
|
152
|
+
children: text
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
var Avatar = function(_param) {
|
|
156
|
+
var size = _param.size, src = _param.src, _Icon = _param.Icon, Icon = _Icon === void 0 ? IconUserAccountRegular : _Icon, badge = _param.badge, _initials = _param.initials, initials = _initials === void 0 ? "" : _initials, ariaLabel = _param["aria-label"], props = _objectWithoutProperties(_param, [
|
|
157
|
+
"size",
|
|
158
|
+
"src",
|
|
159
|
+
"Icon",
|
|
160
|
+
"badge",
|
|
161
|
+
"initials",
|
|
162
|
+
"aria-label"
|
|
163
|
+
]);
|
|
164
|
+
var colors = useTheme().colors;
|
|
165
|
+
var isInverse = useIsInverseVariant();
|
|
166
|
+
var _backgroundColor;
|
|
167
|
+
var backgroundColor = (_backgroundColor = props.backgroundColor) !== null && _backgroundColor !== void 0 ? _backgroundColor : isInverse ? colors.brandDark : colors.tagBackgroundActive;
|
|
168
|
+
var _textColor;
|
|
169
|
+
var textColor = (_textColor = props.textColor) !== null && _textColor !== void 0 ? _textColor : isInverse ? colors.textPrimaryInverse : colors.textTagActive;
|
|
170
|
+
var ref = _slicedToArray(React.useState(false), 2), imgLoadError = ref[0], setImgLoadError = ref[1];
|
|
171
|
+
var classes = useStyles({
|
|
172
|
+
textColor: textColor,
|
|
173
|
+
backgroundColor: backgroundColor,
|
|
174
|
+
size: size
|
|
175
|
+
});
|
|
176
|
+
React.useEffect(function() {
|
|
177
|
+
setImgLoadError(false); // reset error state when url changes
|
|
178
|
+
}, [
|
|
179
|
+
src
|
|
180
|
+
]);
|
|
181
|
+
var letters = initials.trim().slice(0, 2);
|
|
182
|
+
var badgePosition = getBadgeDistance(size, badge);
|
|
183
|
+
var badgeValue = badge === true ? undefined : badge || 0;
|
|
184
|
+
var shouldRenderImage = !!src && !imgLoadError;
|
|
185
|
+
var iconSize = size <= 40 ? 16 : 24;
|
|
186
|
+
return /*#__PURE__*/ _jsx(Badge, {
|
|
187
|
+
value: badgeValue,
|
|
188
|
+
top: badgePosition,
|
|
189
|
+
right: badgePosition,
|
|
190
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
191
|
+
className: classes.avatar,
|
|
192
|
+
role: "img",
|
|
193
|
+
"aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : initials,
|
|
194
|
+
children: shouldRenderImage ? /*#__PURE__*/ _jsx("img", {
|
|
195
|
+
src: src,
|
|
196
|
+
className: classes.image,
|
|
197
|
+
onError: function() {
|
|
198
|
+
return setImgLoadError(true);
|
|
199
|
+
},
|
|
200
|
+
role: "none"
|
|
201
|
+
}) : renderText(size, letters) || /*#__PURE__*/ _jsx(Icon, {
|
|
202
|
+
size: iconSize,
|
|
203
|
+
color: "currentColor"
|
|
204
|
+
})
|
|
205
|
+
})
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
export default Avatar;
|
package/dist-es/badge.js
CHANGED
|
@@ -26,8 +26,14 @@ var useStyles = createUseStyles(function(theme) {
|
|
|
26
26
|
var hasChildren = param.hasChildren;
|
|
27
27
|
return hasChildren ? "absolute" : "static";
|
|
28
28
|
},
|
|
29
|
-
top:
|
|
30
|
-
|
|
29
|
+
top: function(param) {
|
|
30
|
+
var top = param.top;
|
|
31
|
+
return top !== null && top !== void 0 ? top : -2;
|
|
32
|
+
},
|
|
33
|
+
right: function(param) {
|
|
34
|
+
var right = param.right;
|
|
35
|
+
return right !== null && right !== void 0 ? right : -6;
|
|
36
|
+
},
|
|
31
37
|
width: 8,
|
|
32
38
|
height: 8,
|
|
33
39
|
background: theme.colors.badge,
|
|
@@ -38,8 +44,14 @@ var useStyles = createUseStyles(function(theme) {
|
|
|
38
44
|
display: "flex",
|
|
39
45
|
alignItems: "center",
|
|
40
46
|
justifyContent: "center",
|
|
41
|
-
top:
|
|
42
|
-
|
|
47
|
+
top: function(param) {
|
|
48
|
+
var top = param.top;
|
|
49
|
+
return top !== null && top !== void 0 ? top : -8;
|
|
50
|
+
},
|
|
51
|
+
right: function(param) {
|
|
52
|
+
var right = param.right;
|
|
53
|
+
return right !== null && right !== void 0 ? right : -9;
|
|
54
|
+
},
|
|
43
55
|
width: 18,
|
|
44
56
|
height: 18,
|
|
45
57
|
fontSize: 12,
|
|
@@ -47,7 +59,10 @@ var useStyles = createUseStyles(function(theme) {
|
|
|
47
59
|
color: theme.colors.textPrimaryInverse
|
|
48
60
|
},
|
|
49
61
|
badgeBigNumber: {
|
|
50
|
-
right:
|
|
62
|
+
right: function(param) {
|
|
63
|
+
var right = param.right;
|
|
64
|
+
return right !== null && right !== void 0 ? right : -14;
|
|
65
|
+
},
|
|
51
66
|
width: 24,
|
|
52
67
|
borderRadius: 24
|
|
53
68
|
}
|
|
@@ -63,10 +78,12 @@ var useStyles = createUseStyles(function(theme) {
|
|
|
63
78
|
* </IconButton>
|
|
64
79
|
* </Badge>
|
|
65
80
|
*/ var Badge = function(param) {
|
|
66
|
-
var children = param.children, value = param.value;
|
|
81
|
+
var children = param.children, value = param.value, right = param.right, top = param.top;
|
|
67
82
|
var hasChildren = !!children;
|
|
68
83
|
var classes = useStyles({
|
|
69
|
-
hasChildren: hasChildren
|
|
84
|
+
hasChildren: hasChildren,
|
|
85
|
+
right: right,
|
|
86
|
+
top: top
|
|
70
87
|
});
|
|
71
88
|
if (children && value === 0) {
|
|
72
89
|
return /*#__PURE__*/ _jsx(_Fragment, {
|
package/dist-es/button.js
CHANGED
|
@@ -84,7 +84,7 @@ import { pxToRem } from "./utils/css";
|
|
|
84
84
|
import { Text, Text2, Text3 } from "./text";
|
|
85
85
|
import Box from "./box";
|
|
86
86
|
import { getTextFromChildren } from "./utils/common";
|
|
87
|
-
import { eventActions, eventCategories, eventNames } from "./utils/analytics";
|
|
87
|
+
import { eventActions, eventCategories, eventNames, useTrackingConfig } from "./utils/analytics";
|
|
88
88
|
import { useTheme } from "./hooks";
|
|
89
89
|
export var BUTTON_MIN_WIDTH = 136;
|
|
90
90
|
var transitionTiming = "0.3s cubic-bezier(0.77, 0, 0.175, 1)";
|
|
@@ -273,7 +273,7 @@ var useDangerButtonStyles = createUseStyles(function(theme) {
|
|
|
273
273
|
});
|
|
274
274
|
});
|
|
275
275
|
var Button = function(props) {
|
|
276
|
-
var
|
|
276
|
+
var eventFormat = useTrackingConfig().eventFormat;
|
|
277
277
|
var ref = useForm(), formStatus = ref.formStatus, formId = ref.formId;
|
|
278
278
|
var isInverse = useIsInverseVariant();
|
|
279
279
|
var classes = props.classes, loadingText = props.loadingText;
|
|
@@ -313,7 +313,7 @@ var Button = function(props) {
|
|
|
313
313
|
});
|
|
314
314
|
};
|
|
315
315
|
var createDefaultTrackingEvent = function() {
|
|
316
|
-
if (
|
|
316
|
+
if (eventFormat === "google-analytics-4") {
|
|
317
317
|
return {
|
|
318
318
|
name: eventNames.userInteraction,
|
|
319
319
|
component_type: "".concat(props.type, "_button"),
|
package/dist-es/index.js
CHANGED
|
@@ -36,8 +36,8 @@ export { default as NavigationBreadcrumbs } from "./navigation-breadcrumbs";
|
|
|
36
36
|
export { default as Text, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9, Text10 } from "./text";
|
|
37
37
|
export { default as Tag } from "./tag";
|
|
38
38
|
export { default as SectionTitle } from "./section-title";
|
|
39
|
+
export { Placeholder } from "./placeholder";
|
|
39
40
|
export { Title1, Title2 } from "./title";
|
|
40
|
-
export { Placeholder, AvatarPlaceholder } from "./placeholder";
|
|
41
41
|
export { RowList, Row, BoxedRowList, BoxedRow } from "./list";
|
|
42
42
|
export { default as Switch } from "./switch-component";
|
|
43
43
|
export { default as Checkbox } from "./checkbox";
|
|
@@ -54,6 +54,7 @@ export { default as Menu } from "./menu";
|
|
|
54
54
|
export { default as EmptyState } from "./empty-state";
|
|
55
55
|
export { default as EmptyStateCard } from "./empty-state-card";
|
|
56
56
|
export { default as Callout } from "./callout";
|
|
57
|
+
export { default as Avatar } from "./avatar";
|
|
57
58
|
export { useModalState } from "./modal-context-provider";
|
|
58
59
|
export { NavigationBar, MainNavigationBar, FunnelNavigationBar, NavigationBarActionGroup, NavigationBarAction, NavigationBarLogo } from "./navigation-bar";
|
|
59
60
|
export { default as Image } from "./image";
|
|
@@ -89,6 +90,7 @@ export { default as IconSuccess } from "./icons/icon-success";
|
|
|
89
90
|
export { default as IconSuccessVivo } from "./icons/icon-success-vivo";
|
|
90
91
|
export { default as Circle } from "./circle";
|
|
91
92
|
export { useTheme, useScreenSize, useElementDimensions, useAriaId, useWindowSize, useWindowHeight, useWindowWidth, useIsInViewport } from "./hooks";
|
|
93
|
+
export { TrackingConfig, useTrackingConfig } from "./utils/analytics";
|
|
92
94
|
export { useDocumentVisibility } from "./utils/document-visibility";
|
|
93
95
|
export { ThemeVariant, useIsInverseVariant } from "./theme-variant-context";
|
|
94
96
|
export { VIVO_SKIN, O2_CLASSIC_SKIN, O2_SKIN, MOVISTAR_SKIN, TELEFONICA_SKIN, BLAU_SKIN } from "./skins/constants";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// DO NOT EDIT THIS FILE. It's autogenerated by set-version.js
|
|
2
|
-
export var PACKAGE_VERSION = "11.
|
|
2
|
+
export var PACKAGE_VERSION = "11.10.1";
|
package/dist-es/placeholder.js
CHANGED
|
@@ -2,17 +2,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { applyAlpha } from "./utils/color";
|
|
4
4
|
import { useTheme } from "./hooks";
|
|
5
|
-
export var AvatarPlaceholder = function(param) {
|
|
6
|
-
var _size = param.size, size = _size === void 0 ? "100%" : _size;
|
|
7
|
-
return /*#__PURE__*/ _jsx("div", {
|
|
8
|
-
style: {
|
|
9
|
-
width: size,
|
|
10
|
-
height: size,
|
|
11
|
-
borderRadius: "50%",
|
|
12
|
-
background: "gray"
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
5
|
export var Placeholder = function(param) {
|
|
17
6
|
var _width = param.width, width = _width === void 0 ? "auto" : _width, _height = param.height, height = _height === void 0 ? 120 : _height;
|
|
18
7
|
var colors = useTheme().colors;
|
package/dist-es/text-link.js
CHANGED
|
@@ -61,8 +61,7 @@ import classnames from "classnames";
|
|
|
61
61
|
import { useIsInverseVariant } from "./theme-variant-context";
|
|
62
62
|
import { useForm } from "./form-context";
|
|
63
63
|
import { getTextFromChildren } from "./utils/common";
|
|
64
|
-
import { eventActions, eventCategories, eventNames } from "./utils/analytics";
|
|
65
|
-
import { useTheme } from "./hooks";
|
|
64
|
+
import { eventActions, eventCategories, eventNames, useTrackingConfig } from "./utils/analytics";
|
|
66
65
|
var useStyles = createUseStyles(function(theme) {
|
|
67
66
|
var _obj;
|
|
68
67
|
return {
|
|
@@ -97,9 +96,9 @@ var TextLink = function(_param) {
|
|
|
97
96
|
var classes = useStyles();
|
|
98
97
|
var isInverse = useIsInverseVariant();
|
|
99
98
|
var formStatus = useForm().formStatus;
|
|
100
|
-
var
|
|
99
|
+
var eventFormat = useTrackingConfig().eventFormat;
|
|
101
100
|
var createDefaultTrackingEvent = function() {
|
|
102
|
-
if (
|
|
101
|
+
if (eventFormat === "google-analytics-4") {
|
|
103
102
|
return {
|
|
104
103
|
name: eventNames.userInteraction,
|
|
105
104
|
component_type: "link",
|
package/dist-es/text.js
CHANGED
|
@@ -85,6 +85,12 @@ var useStyles = createUseStyles(function(theme) {
|
|
|
85
85
|
var wordBreak = param.wordBreak;
|
|
86
86
|
return wordBreak ? "anywhere" : "inherit";
|
|
87
87
|
},
|
|
88
|
+
"@supports not (overflow-wrap: anywhere)": {
|
|
89
|
+
wordBreak: function(param) {
|
|
90
|
+
var wordBreak = param.wordBreak;
|
|
91
|
+
return wordBreak ? "break-all" : "normal";
|
|
92
|
+
}
|
|
93
|
+
},
|
|
88
94
|
// Needed to reset the default browser margin that adds to p, h1, h2... elements.
|
|
89
95
|
margin: 0
|
|
90
96
|
}, theme.mq.tabletOrSmaller, {
|
|
@@ -101,8 +107,14 @@ var useStyles = createUseStyles(function(theme) {
|
|
|
101
107
|
"-webkit-line-clamp": lineClamp,
|
|
102
108
|
lineClamp: lineClamp,
|
|
103
109
|
wordBreak: function(param) {
|
|
104
|
-
var
|
|
105
|
-
return
|
|
110
|
+
var wordBreak = param.wordBreak;
|
|
111
|
+
return wordBreak ? "break-all" : "normal";
|
|
112
|
+
},
|
|
113
|
+
"@supports (overflow-wrap: anywhere)": {
|
|
114
|
+
wordBreak: function(param) {
|
|
115
|
+
var truncate = param.truncate;
|
|
116
|
+
return truncate === 1 || truncate === true ? "break-all" : "normal";
|
|
117
|
+
}
|
|
106
118
|
},
|
|
107
119
|
display: "box",
|
|
108
120
|
boxOrient: "vertical",
|
|
@@ -91,6 +91,7 @@ import TabFocus from "./tab-focus";
|
|
|
91
91
|
import ModalContextProvider from "./modal-context-provider";
|
|
92
92
|
import { DocumentVisibilityProvider } from "./utils/document-visibility";
|
|
93
93
|
import { AspectRatioSupportProvider } from "./utils/aspect-ratio-support";
|
|
94
|
+
import { TrackingConfig } from "./utils/analytics";
|
|
94
95
|
var darkModeMedia = "(prefers-color-scheme: dark)";
|
|
95
96
|
export var useIsOsDarkModeEnabled = function() {
|
|
96
97
|
var ref = _slicedToArray(React.useState(false), 2), isDarkMode = ref[0], setIsDarkMode = ref[1];
|
|
@@ -197,13 +198,16 @@ var ThemeContextProvider = function(param) {
|
|
|
197
198
|
children: /*#__PURE__*/ _jsx(ModalContextProvider, {
|
|
198
199
|
children: /*#__PURE__*/ _jsx(ThemeContext.Provider, {
|
|
199
200
|
value: contextTheme,
|
|
200
|
-
children: /*#__PURE__*/ _jsx(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
children: /*#__PURE__*/ _jsx(
|
|
205
|
-
|
|
206
|
-
|
|
201
|
+
children: /*#__PURE__*/ _jsx(TrackingConfig, {
|
|
202
|
+
eventFormat: contextTheme.analytics.eventFormat,
|
|
203
|
+
children: /*#__PURE__*/ _jsx(AspectRatioSupportProvider, {
|
|
204
|
+
children: /*#__PURE__*/ _jsx(DocumentVisibilityProvider, {
|
|
205
|
+
children: /*#__PURE__*/ _jsx(AriaIdGetterContext.Provider, {
|
|
206
|
+
value: getAriaId,
|
|
207
|
+
children: /*#__PURE__*/ _jsx(ScreenSizeContextProvider, {
|
|
208
|
+
children: /*#__PURE__*/ _jsx(DialogRoot, {
|
|
209
|
+
children: children
|
|
210
|
+
})
|
|
207
211
|
})
|
|
208
212
|
})
|
|
209
213
|
})
|