@telus-uds/components-base 1.75.0 → 1.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +31 -2
  2. package/lib/Box/Box.js +112 -7
  3. package/lib/Box/backgroundImageStylesMap.js +101 -0
  4. package/lib/Carousel/CarouselThumbnail.js +10 -4
  5. package/lib/Carousel/CarouselThumbnailNavigation.js +3 -3
  6. package/lib/ExpandCollapse/Panel.js +21 -10
  7. package/lib/Footnote/Footnote.js +9 -13
  8. package/lib/Link/ChevronLink.js +2 -0
  9. package/lib/Link/InlinePressable.js +15 -2
  10. package/lib/Link/LinkBase.js +1 -0
  11. package/lib/OrderedList/OrderedList.js +21 -20
  12. package/lib/PriceLockup/PriceLockup.js +220 -0
  13. package/lib/PriceLockup/index.js +10 -0
  14. package/lib/PriceLockup/utils/renderFootnoteContent.js +93 -0
  15. package/lib/PriceLockup/utils/renderFootnoteLinks.js +36 -0
  16. package/lib/PriceLockup/utils/renderPrice.js +147 -0
  17. package/lib/PriceLockup/utils/renderTypography.js +31 -0
  18. package/lib/Skeleton/Skeleton.js +6 -3
  19. package/lib/index.js +8 -0
  20. package/lib-module/Box/Box.js +115 -9
  21. package/lib-module/Box/backgroundImageStylesMap.js +94 -0
  22. package/lib-module/Carousel/CarouselThumbnail.js +10 -4
  23. package/lib-module/Carousel/CarouselThumbnailNavigation.js +3 -3
  24. package/lib-module/ExpandCollapse/Panel.js +21 -10
  25. package/lib-module/Footnote/Footnote.js +9 -13
  26. package/lib-module/Link/ChevronLink.js +2 -0
  27. package/lib-module/Link/InlinePressable.js +16 -2
  28. package/lib-module/Link/LinkBase.js +1 -0
  29. package/lib-module/OrderedList/OrderedList.js +21 -20
  30. package/lib-module/PriceLockup/PriceLockup.js +214 -0
  31. package/lib-module/PriceLockup/index.js +2 -0
  32. package/lib-module/PriceLockup/utils/renderFootnoteContent.js +87 -0
  33. package/lib-module/PriceLockup/utils/renderFootnoteLinks.js +28 -0
  34. package/lib-module/PriceLockup/utils/renderPrice.js +141 -0
  35. package/lib-module/PriceLockup/utils/renderTypography.js +23 -0
  36. package/lib-module/Skeleton/Skeleton.js +6 -3
  37. package/lib-module/index.js +1 -0
  38. package/package.json +2 -2
  39. package/src/Box/Box.jsx +120 -9
  40. package/src/Box/backgroundImageStylesMap.js +21 -0
  41. package/src/Carousel/CarouselThumbnail.jsx +8 -6
  42. package/src/Carousel/CarouselThumbnailNavigation.jsx +3 -4
  43. package/src/ExpandCollapse/Panel.jsx +16 -10
  44. package/src/Footnote/Footnote.jsx +3 -6
  45. package/src/Link/ChevronLink.jsx +5 -1
  46. package/src/Link/InlinePressable.jsx +36 -15
  47. package/src/Link/LinkBase.jsx +1 -0
  48. package/src/OrderedList/OrderedList.jsx +17 -20
  49. package/src/PriceLockup/PriceLockup.jsx +218 -0
  50. package/src/PriceLockup/index.js +3 -0
  51. package/src/PriceLockup/utils/renderFootnoteContent.jsx +77 -0
  52. package/src/PriceLockup/utils/renderFootnoteLinks.jsx +38 -0
  53. package/src/PriceLockup/utils/renderPrice.jsx +201 -0
  54. package/src/PriceLockup/utils/renderTypography.jsx +13 -0
  55. package/src/Skeleton/Skeleton.jsx +8 -3
  56. package/src/index.js +1 -0
  57. package/types/Typography.d.ts +1 -0
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
9
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _Divider = _interopRequireDefault(require("../Divider"));
12
+ var _ViewportProvider = require("../ViewportProvider");
13
+ var _ThemeProvider = require("../ThemeProvider");
14
+ var _utils = require("../utils");
15
+ var _renderFootnoteContent = _interopRequireDefault(require("./utils/renderFootnoteContent"));
16
+ var _renderPrice = _interopRequireDefault(require("./utils/renderPrice"));
17
+ var _renderTypography = _interopRequireDefault(require("./utils/renderTypography"));
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.htmlAttrs, _utils.viewProps]);
21
+ const selectTopTextTypographyTokens = _ref => {
22
+ let {
23
+ topTextFontSize,
24
+ topTextLineHeight
25
+ } = _ref;
26
+ return {
27
+ fontSize: topTextFontSize,
28
+ lineHeight: topTextLineHeight
29
+ };
30
+ };
31
+ const selectCurrencySymbolTypographyTokens = _ref2 => {
32
+ let {
33
+ currencySymbolFontSize,
34
+ currencySymbolLineHeight,
35
+ currencySymbolFontWeight
36
+ } = _ref2;
37
+ return {
38
+ fontSize: currencySymbolFontSize,
39
+ lineHeight: currencySymbolLineHeight,
40
+ fontWeight: currencySymbolFontWeight
41
+ };
42
+ };
43
+ const selectAmountTypographyTokens = _ref3 => {
44
+ let {
45
+ amountFontSize,
46
+ amountLineHeight,
47
+ amountLetterSpacing,
48
+ amountFontWeight,
49
+ fontColor
50
+ } = _ref3;
51
+ // This is used to apply the proper line height to the amount
52
+ const lineHeightMultiplier = 1.18;
53
+ return {
54
+ color: fontColor,
55
+ fontSize: amountFontSize,
56
+ lineHeight: amountLineHeight * lineHeightMultiplier,
57
+ letterSpacing: amountLetterSpacing,
58
+ fontWeight: amountFontWeight
59
+ };
60
+ };
61
+ const selectCentsTypographyTokens = _ref4 => {
62
+ let {
63
+ centsFontSize,
64
+ centsLineHeight,
65
+ centsFontWeight
66
+ } = _ref4;
67
+ return {
68
+ fontSize: centsFontSize,
69
+ lineHeight: centsLineHeight,
70
+ fontWeight: centsFontWeight
71
+ };
72
+ };
73
+ const selectRateTypographyTokens = _ref5 => {
74
+ let {
75
+ rateFontSize,
76
+ rateLineHeight,
77
+ rateFontWeight
78
+ } = _ref5;
79
+ return {
80
+ fontSize: rateFontSize,
81
+ lineHeight: rateLineHeight,
82
+ fontWeight: rateFontWeight
83
+ };
84
+ };
85
+ const selectBottomTextTypographyTokens = _ref6 => {
86
+ let {
87
+ bottomTextFontSize,
88
+ bottomTextLineHeight
89
+ } = _ref6;
90
+ return {
91
+ fontSize: bottomTextFontSize,
92
+ lineHeight: bottomTextLineHeight
93
+ };
94
+ };
95
+ const PriceLockup = _ref7 => {
96
+ let {
97
+ size = 'medium',
98
+ signDirection = 'left',
99
+ footnoteLinks,
100
+ topText,
101
+ price,
102
+ currencySymbol = '$',
103
+ rateText,
104
+ ratePosition = 'right',
105
+ bottomText,
106
+ onClickFootnote,
107
+ strikeThrough,
108
+ a11yText,
109
+ tokens: priceLockupTokens,
110
+ variant = {},
111
+ ...rest
112
+ } = _ref7;
113
+ const viewport = (0, _ViewportProvider.useViewport)();
114
+ const {
115
+ footnoteMarginTop,
116
+ footnoteGap,
117
+ bottomTextMarginTop,
118
+ priceMarginBottom,
119
+ bottomLinksMarginLeft,
120
+ topTextMarginBottom,
121
+ fontColor,
122
+ dividerColor,
123
+ ...themeTokens
124
+ } = (0, _ThemeProvider.useThemeTokens)('PriceLockup', priceLockupTokens, {
125
+ ...variant,
126
+ size
127
+ }, {
128
+ viewport,
129
+ strikeThrough
130
+ });
131
+ const currencySymbolTypographyTokens = selectCurrencySymbolTypographyTokens(themeTokens);
132
+ const amountTypographyTokens = selectAmountTypographyTokens(themeTokens);
133
+ const centsTypographyTokens = selectCentsTypographyTokens(themeTokens);
134
+ const rateTypographyTokens = selectRateTypographyTokens(themeTokens);
135
+ const topTextTypographyTokens = selectTopTextTypographyTokens(themeTokens);
136
+ const bottomTextTypographyTokens = selectBottomTextTypographyTokens(themeTokens);
137
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
138
+ style: [staticStyles.priceLockupContainer, {
139
+ ...selectProps(rest)
140
+ }],
141
+ children: [topText ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
142
+ children: (0, _renderTypography.default)(topText, topTextTypographyTokens)
143
+ }) : null, (0, _renderPrice.default)(price, rateText, ratePosition, signDirection, currencySymbol, currencySymbolTypographyTokens, amountTypographyTokens, centsTypographyTokens, rateTypographyTokens, fontColor, strikeThrough, a11yText, bottomText, bottomLinksMarginLeft, footnoteLinks, onClickFootnote, themeTokens), bottomText ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
144
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {
145
+ testID: "price-lockup-divider",
146
+ role: "separator",
147
+ tokens: {
148
+ color: dividerColor
149
+ }
150
+ }), (0, _renderFootnoteContent.default)(footnoteMarginTop, bottomTextMarginTop, bottomText, bottomTextTypographyTokens, fontColor, footnoteLinks, bottomLinksMarginLeft, onClickFootnote, themeTokens)]
151
+ }) : null]
152
+ });
153
+ };
154
+ PriceLockup.displayName = 'PriceLockup';
155
+ PriceLockup.propTypes = {
156
+ ...selectedSystemPropTypes,
157
+ /**
158
+ * Size of the component
159
+ *
160
+ * Small for pricing in product catalogue pages, medium for pricing in product comparison cards.
161
+ */
162
+ size: _propTypes.default.oneOf(['small', 'medium']),
163
+ /**
164
+ * If currency symbol other than `$` to be used
165
+ */
166
+ currencySymbol: _propTypes.default.string,
167
+ /**
168
+ * Shows additional info above the price
169
+ */
170
+ topText: _propTypes.default.string,
171
+ /**
172
+ * Monetary value (including decimals separated by ".")
173
+ */
174
+ price: _propTypes.default.string.isRequired,
175
+ /**
176
+ * Shows month/year unit
177
+ */
178
+ rateText: _propTypes.default.string,
179
+ /**
180
+ * Shows additional info below the price with a `Divider`
181
+ */
182
+ bottomText: _propTypes.default.string,
183
+ /**
184
+ * Displays which side the currency should appear (left, right)
185
+ */
186
+ signDirection: _propTypes.default.oneOf(['right', 'left']),
187
+ /**
188
+ * Displays where the rate should appear (bottom, right)
189
+ */
190
+ ratePosition: _propTypes.default.oneOf(['right', 'bottom']),
191
+ /**
192
+ * Shows additional link for context
193
+ */
194
+ footnoteLinks: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])),
195
+ /**
196
+ * Function to be called when a footnote link is clicked
197
+ */
198
+ onClickFootnote: _propTypes.default.func,
199
+ /**
200
+ * To show price savings comparison
201
+ */
202
+ strikeThrough: _propTypes.default.bool,
203
+ /**
204
+ * To provide a11y text for `PriceLockup` component
205
+ *
206
+ * **Note:** a11yText will override strikethrough price, so it must include price (ie. "was 50 dollars per month")
207
+ */
208
+ a11yText: _propTypes.default.string,
209
+ /**
210
+ * `PriceLockup` tokens
211
+ */
212
+ tokens: (0, _utils.getTokensPropType)('PriceLockup')
213
+ };
214
+ var _default = PriceLockup;
215
+ exports.default = _default;
216
+ const staticStyles = _StyleSheet.default.create({
217
+ priceLockupContainer: {
218
+ alignSelf: 'flex-start'
219
+ }
220
+ });
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _PriceLockup = _interopRequireDefault(require("./PriceLockup"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ var _default = _PriceLockup.default;
10
+ exports.default = _default;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
9
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
10
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
11
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
12
+ var _renderTypography = _interopRequireDefault(require("./renderTypography"));
13
+ var _renderFootnoteLinks = _interopRequireDefault(require("./renderFootnoteLinks"));
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ const selectFootnoteContainer = _ref => {
17
+ let {
18
+ footnoteMarginTop
19
+ } = _ref;
20
+ return {
21
+ marginTop: footnoteMarginTop
22
+ };
23
+ };
24
+ const selectFootnoteBottomTextContainer = _ref2 => {
25
+ let {
26
+ bottomTextMarginTop
27
+ } = _ref2;
28
+ return {
29
+ marginTop: bottomTextMarginTop
30
+ };
31
+ };
32
+ const selectFootnoteLinksStyles = _ref3 => {
33
+ let {
34
+ bottomLinksMarginLeft
35
+ } = _ref3;
36
+ return {
37
+ marginLeft: bottomLinksMarginLeft
38
+ };
39
+ };
40
+ const renderFootnoteContent = (footnoteMarginTop, bottomTextMarginTop, bottomText, bottomTextTypographyTokens, fontColor, footnoteLinks, bottomLinksMarginLeft, onClickFootnote, themeTokens) => {
41
+ const MAX_FOOTNOTE_LINKS_ALLOWED = 3;
42
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
43
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
44
+ style: [staticStyles.footnoteContainer, selectFootnoteContainer({
45
+ footnoteMarginTop
46
+ })],
47
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Text.default, {
48
+ style: selectFootnoteBottomTextContainer({
49
+ bottomTextMarginTop
50
+ }),
51
+ children: [(0, _renderTypography.default)(bottomText, bottomTextTypographyTokens, undefined, fontColor), ' ']
52
+ }), footnoteLinks.length <= MAX_FOOTNOTE_LINKS_ALLOWED ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
53
+ style: [staticStyles.footnoteLinkContainer, selectFootnoteLinksStyles({
54
+ bottomLinksMarginLeft
55
+ })],
56
+ children: (0, _renderFootnoteLinks.default)(footnoteLinks, themeTokens, onClickFootnote)
57
+ }) : null]
58
+ }), footnoteLinks.length > MAX_FOOTNOTE_LINKS_ALLOWED ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
59
+ style: staticStyles.verticalFootnoteLinkContainer,
60
+ children: (0, _renderFootnoteLinks.default)(footnoteLinks, themeTokens, onClickFootnote)
61
+ }) : null]
62
+ });
63
+ };
64
+ var _default = renderFootnoteContent;
65
+ exports.default = _default;
66
+ const staticStyles = _StyleSheet.default.create({
67
+ footnoteContainer: {
68
+ flexDirection: 'row'
69
+ },
70
+ footnoteLinkContainer: {
71
+ flexDirection: 'row',
72
+ ..._Platform.default.select({
73
+ ios: {
74
+ alignSelf: 'flex-end',
75
+ top: 2
76
+ },
77
+ android: {
78
+ alignSelf: 'center',
79
+ top: -8
80
+ }
81
+ })
82
+ },
83
+ verticalFootnoteLinkContainer: {
84
+ ..._Platform.default.select({
85
+ ios: {
86
+ top: 10
87
+ },
88
+ android: {
89
+ top: -2
90
+ }
91
+ })
92
+ }
93
+ });
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _FootnoteLink = _interopRequireDefault(require("../../Footnote/FootnoteLink"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const selectFootnoteLinkStyles = (_ref, footnoteLinks) => {
12
+ let {
13
+ footnoteLinkColor,
14
+ footnoteLinkFontName,
15
+ footnoteLinkFontWeight,
16
+ footnoteLinkLineHeight,
17
+ footnoteLinkFontSize
18
+ } = _ref;
19
+ // This is used to apply the proper line height when there is 4 or more footnote links
20
+ const MAX_FOOTNOTE_LINKS_ALLOWED = 3;
21
+ const lineHeight = footnoteLinks.length > MAX_FOOTNOTE_LINKS_ALLOWED ? footnoteLinkFontSize * footnoteLinkLineHeight : undefined;
22
+ return {
23
+ color: footnoteLinkColor,
24
+ fontName: footnoteLinkFontName,
25
+ fontWeight: footnoteLinkFontWeight,
26
+ lineHeight,
27
+ fontSize: footnoteLinkFontSize
28
+ };
29
+ };
30
+ const renderFootnoteLinks = (footnoteLinks, themeTokens, onClickFootnote) => footnoteLinks && footnoteLinks.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_FootnoteLink.default, {
31
+ tokens: selectFootnoteLinkStyles(themeTokens, footnoteLinks),
32
+ content: footnoteLinks,
33
+ onClick: onClickFootnote
34
+ }) : null;
35
+ var _default = renderFootnoteLinks;
36
+ exports.default = _default;
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
9
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
10
+ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
11
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
12
+ var _A11yText = _interopRequireDefault(require("../../A11yText"));
13
+ var _renderTypography = _interopRequireDefault(require("./renderTypography"));
14
+ var _renderFootnoteLinks = _interopRequireDefault(require("./renderFootnoteLinks"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ const selectStrikeThroughStyles = _ref => {
18
+ let {
19
+ strikeThroughColor
20
+ } = _ref;
21
+ return {
22
+ textDecorationColor: strikeThroughColor
23
+ };
24
+ };
25
+ const selectFootnoteLinksStyles = _ref2 => {
26
+ let {
27
+ bottomLinksMarginLeft
28
+ } = _ref2;
29
+ return {
30
+ marginLeft: bottomLinksMarginLeft
31
+ };
32
+ };
33
+ const renderCurrencySymbol = (currencySymbol, currencySymbolTypographyTokens, ratePosition, fontColor) => (0, _renderTypography.default)(`${currencySymbol}`, currencySymbolTypographyTokens, ratePosition, fontColor);
34
+ const renderAmount = (amount, amountTypographyTokens, strikeThrough, a11yText, fontColor, themeTokens) => {
35
+ const amountText = (0, _renderTypography.default)(amount, amountTypographyTokens, undefined, fontColor); // undefined is ratePosition
36
+ if (strikeThrough) {
37
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
38
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_A11yText.default, {
39
+ text: a11yText
40
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
41
+ style: [staticStyles.strikeThroughContainer, selectStrikeThroughStyles(themeTokens)],
42
+ children: amountText
43
+ })]
44
+ });
45
+ }
46
+ return amountText;
47
+ };
48
+ const renderPrice = (price, rateText, ratePosition, signDirection, currencySymbol, currencySymbolTypographyTokens, amountTypographyTokens, centsTypographyTokens, rateTypographyTokens, fontColor, strikeThrough, a11yText, bottomText, bottomLinksMarginLeft, footnoteLinks, onClickFootnote, themeTokens) => {
49
+ const priceString = price;
50
+ const lastDotPosition = priceString.lastIndexOf('.');
51
+ const lastCommaPosition = priceString.lastIndexOf(',');
52
+ const [separator, separatorPosition] = lastDotPosition > lastCommaPosition ? ['.', lastDotPosition] : [',', lastCommaPosition];
53
+
54
+ // If the separator is at the fourth character from the end of the string or more, it's most probably
55
+ // a part of the amount, and the cents are not included in the price string
56
+ const EXCLUDE_CENTS = 3;
57
+ const hasCents = separatorPosition !== -1 && separatorPosition >= priceString.length - EXCLUDE_CENTS;
58
+ const amount = hasCents ? priceString.substring(0, separatorPosition) : priceString;
59
+ const cents = hasCents ? priceString.substring(separatorPosition + 1) : null;
60
+ const footnoteLinkPositionStyles = rateText ? staticStyles.footnoteLinksWithoutBottomText : staticStyles.footnoteLinksWithoutBottomTextAndRateText;
61
+ const MAX_FOOTNOTE_LINKS_ALLOWED = 3;
62
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
63
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
64
+ style: ratePosition === 'bottom' ? staticStyles.priceContainerColumn : staticStyles.priceContainerRow,
65
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
66
+ style: staticStyles.priceContainer,
67
+ children: [signDirection === 'left' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
68
+ children: renderCurrencySymbol(currencySymbol, currencySymbolTypographyTokens, ratePosition, fontColor)
69
+ }) : null, renderAmount(amount, amountTypographyTokens, strikeThrough, a11yText, fontColor, themeTokens), cents ? (0, _renderTypography.default)(`${separator}${cents}`, centsTypographyTokens, undefined, fontColor) : null, signDirection === 'right' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
70
+ style: staticStyles.currencySymbol,
71
+ children: renderCurrencySymbol(currencySymbol, currencySymbolTypographyTokens, ratePosition, fontColor)
72
+ }) : null]
73
+ }), rateText ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
74
+ style: ratePosition === 'bottom' ? staticStyles.rateTextVerticalPosition : [staticStyles.rateTextPosition, staticStyles.rateTextVerticalPosition],
75
+ children: (0, _renderTypography.default)(rateText, rateTypographyTokens, ratePosition, fontColor)
76
+ }) : null, !bottomText && footnoteLinks.length <= MAX_FOOTNOTE_LINKS_ALLOWED ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
77
+ style: [footnoteLinkPositionStyles, selectFootnoteLinksStyles({
78
+ bottomLinksMarginLeft
79
+ })],
80
+ children: (0, _renderFootnoteLinks.default)(footnoteLinks, themeTokens, onClickFootnote)
81
+ }) : null]
82
+ }), !bottomText && footnoteLinks.length > MAX_FOOTNOTE_LINKS_ALLOWED ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
83
+ style: staticStyles.verticalFootnoteLinkContainer,
84
+ children: (0, _renderFootnoteLinks.default)(footnoteLinks, themeTokens, onClickFootnote)
85
+ }) : null]
86
+ });
87
+ };
88
+ var _default = renderPrice;
89
+ exports.default = _default;
90
+ const staticStyles = _StyleSheet.default.create({
91
+ priceContainerRow: {
92
+ flexDirection: 'row'
93
+ },
94
+ priceContainerColumn: {
95
+ flexDirection: 'column'
96
+ },
97
+ priceContainer: {
98
+ flexDirection: 'row',
99
+ alignSelf: 'flex-start',
100
+ marginTop: 4
101
+ },
102
+ currencySymbol: {
103
+ paddingLeft: 4
104
+ },
105
+ verticalFootnoteLinkContainer: {
106
+ ..._Platform.default.select({
107
+ ios: {
108
+ top: 10
109
+ },
110
+ android: {
111
+ top: -2
112
+ }
113
+ })
114
+ },
115
+ footnoteLinksWithoutBottomText: {
116
+ ..._Platform.default.select({
117
+ ios: {
118
+ alignSelf: 'flex-end',
119
+ top: -10
120
+ },
121
+ android: {
122
+ alignSelf: 'center',
123
+ top: -14
124
+ }
125
+ })
126
+ },
127
+ footnoteLinksWithoutBottomTextAndRateText: {
128
+ ..._Platform.default.select({
129
+ ios: {
130
+ alignSelf: 'center'
131
+ },
132
+ android: {
133
+ alignSelf: 'flex-start'
134
+ }
135
+ })
136
+ },
137
+ strikeThroughContainer: {
138
+ textDecorationLine: 'line-through',
139
+ textDecorationThickness: '1px'
140
+ },
141
+ rateTextPosition: {
142
+ alignSelf: 'flex-end'
143
+ },
144
+ rateTextVerticalPosition: {
145
+ top: -8
146
+ }
147
+ });
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Typography = _interopRequireDefault(require("../../Typography"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const renderTypography = (value, themeTokens, ratePosition, fontColor) => {
12
+ const customProps = ratePosition === 'bottom' ? {
13
+ variant: {
14
+ size: 'micro'
15
+ },
16
+ tokens: {
17
+ color: fontColor
18
+ }
19
+ } : {
20
+ tokens: {
21
+ ...themeTokens,
22
+ color: fontColor
23
+ }
24
+ };
25
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
26
+ ...customProps,
27
+ children: value
28
+ });
29
+ };
30
+ var _default = renderTypography;
31
+ exports.default = _default;
@@ -34,11 +34,13 @@ const selectSkeletonStyles = _ref => {
34
34
  const selectLineStyles = _ref2 => {
35
35
  let {
36
36
  skeletonHeight,
37
- lineWidth
37
+ lineWidth,
38
+ radius
38
39
  } = _ref2;
39
40
  return {
40
41
  width: lineWidth,
41
- height: skeletonHeight
42
+ height: skeletonHeight,
43
+ borderRadius: radius
42
44
  };
43
45
  };
44
46
  const selectShapeStyles = _ref3 => {
@@ -121,7 +123,8 @@ const Skeleton = /*#__PURE__*/(0, _react.forwardRef)((_ref5, ref) => {
121
123
  }
122
124
  return selectLineStyles({
123
125
  skeletonHeight,
124
- lineWidth: getLineWidth()
126
+ lineWidth: getLineWidth(),
127
+ radius: themeTokens.lineRadius
125
128
  });
126
129
  };
127
130
  const renderSkeleton = function () {
package/lib/index.js CHANGED
@@ -36,6 +36,7 @@ var _exportNames = {
36
36
  Notification: true,
37
37
  OrderedList: true,
38
38
  Pagination: true,
39
+ PriceLockup: true,
39
40
  Progress: true,
40
41
  QuickLinks: true,
41
42
  QuickLinksFeature: true,
@@ -285,6 +286,12 @@ Object.defineProperty(exports, "PressableCardBase", {
285
286
  return _Card.PressableCardBase;
286
287
  }
287
288
  });
289
+ Object.defineProperty(exports, "PriceLockup", {
290
+ enumerable: true,
291
+ get: function () {
292
+ return _PriceLockup.default;
293
+ }
294
+ });
288
295
  Object.defineProperty(exports, "Progress", {
289
296
  enumerable: true,
290
297
  get: function () {
@@ -592,6 +599,7 @@ var _MultiSelectFilter = _interopRequireDefault(require("./MultiSelectFilter"));
592
599
  var _Notification = _interopRequireDefault(require("./Notification"));
593
600
  var _OrderedList = _interopRequireDefault(require("./OrderedList"));
594
601
  var _Pagination = _interopRequireDefault(require("./Pagination"));
602
+ var _PriceLockup = _interopRequireDefault(require("./PriceLockup"));
595
603
  var _Progress = _interopRequireDefault(require("./Progress"));
596
604
  var _QuickLinks = _interopRequireDefault(require("./QuickLinks"));
597
605
  var _QuickLinksFeature = _interopRequireDefault(require("./QuickLinksFeature"));