@telus-uds/components-web 2.33.2 → 2.34.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 (192) hide show
  1. package/CHANGELOG.md +20 -3
  2. package/lib/Badge/Badge.js +4 -2
  3. package/lib/BlockQuote/BlockQuote.js +4 -2
  4. package/lib/Breadcrumbs/Breadcrumbs.js +7 -5
  5. package/lib/Breadcrumbs/Item/Item.js +2 -13
  6. package/lib/Callout/Callout.js +4 -2
  7. package/lib/Card/Card.js +3 -5
  8. package/lib/Card/CardContent.js +4 -2
  9. package/lib/Countdown/Countdown.js +2 -6
  10. package/lib/Countdown/Segment.js +4 -2
  11. package/lib/DatePicker/CalendarContainer.js +2 -2
  12. package/lib/DatePicker/DatePicker.js +21 -35
  13. package/lib/Disclaimer/Disclaimer.js +4 -2
  14. package/lib/ExpandCollapseMini/ExpandCollapseMini.js +5 -11
  15. package/lib/ExpandCollapseMini/ExpandCollapseMiniControl.js +4 -2
  16. package/lib/Footnote/Footnote.js +32 -37
  17. package/lib/Footnote/FootnoteLink.js +5 -6
  18. package/lib/IconButton/IconButton.js +4 -11
  19. package/lib/Image/Image.js +5 -3
  20. package/lib/List/ListItem.js +2 -7
  21. package/lib/NavigationBar/NavigationBar.js +8 -18
  22. package/lib/NavigationBar/NavigationItem.js +4 -9
  23. package/lib/NavigationBar/NavigationSubMenu.js +8 -7
  24. package/lib/NavigationBar/index.js +2 -0
  25. package/lib/OptimizeImage/OptimizeImage.js +8 -8
  26. package/lib/OrderedList/Item.js +3 -9
  27. package/lib/OrderedList/OrderedList.js +5 -13
  28. package/lib/OrderedList/OrderedListBase.js +3 -8
  29. package/lib/Paragraph/Paragraph.js +5 -3
  30. package/lib/PreviewCard/PreviewCard.js +3 -5
  31. package/lib/PriceLockup/PriceLockup.js +4 -2
  32. package/lib/Progress/ProgressBar.js +4 -2
  33. package/lib/QuantitySelector/QuantitySelector.js +21 -24
  34. package/lib/QuantitySelector/SideButton.js +12 -20
  35. package/lib/ResponsiveImage/ResponsiveImage.js +4 -2
  36. package/lib/Ribbon/Ribbon.js +4 -2
  37. package/lib/SkeletonProvider/SkeletonImage.js +5 -3
  38. package/lib/SkeletonProvider/SkeletonProvider.js +3 -5
  39. package/lib/SkeletonProvider/SkeletonTypography.js +5 -3
  40. package/lib/Span/Span.js +5 -3
  41. package/lib/Spinner/Spinner.js +4 -2
  42. package/lib/Spinner/SpinnerContent.js +4 -2
  43. package/lib/StoryCard/StoryCard.js +3 -5
  44. package/lib/Table/Body.js +4 -2
  45. package/lib/Table/Cell.js +5 -3
  46. package/lib/Table/Header.js +6 -6
  47. package/lib/Table/Row.js +6 -6
  48. package/lib/Table/SubHeading.js +6 -6
  49. package/lib/Table/Table.js +6 -8
  50. package/lib/TermsAndConditions/ExpandCollapse.js +2 -7
  51. package/lib/TermsAndConditions/TermsAndConditions.js +5 -14
  52. package/lib/Testimonial/Testimonial.js +4 -2
  53. package/lib/Toast/Toast.js +4 -2
  54. package/lib/Video/Video.js +19 -55
  55. package/lib/VideoPicker/VideoPicker.js +38 -9
  56. package/lib/VideoPicker/VideoPickerPlayer.js +4 -2
  57. package/lib/VideoPicker/VideoPickerThumbnail.js +4 -2
  58. package/lib/VideoPicker/VideoSlider.js +7 -7
  59. package/lib/WaffleGrid/WaffleGrid.js +4 -2
  60. package/lib/WebVideo/WebVideo.js +51 -13
  61. package/lib/WebVideo/utils/index.js +58 -0
  62. package/lib/baseExports.js +6 -0
  63. package/lib/utils/theming/with-client-theme.js +1 -1
  64. package/lib/utils/theming/with-server-theme.js +1 -1
  65. package/lib-module/Badge/Badge.js +4 -2
  66. package/lib-module/BlockQuote/BlockQuote.js +4 -2
  67. package/lib-module/Breadcrumbs/Breadcrumbs.js +7 -5
  68. package/lib-module/Breadcrumbs/Item/Item.js +2 -11
  69. package/lib-module/Callout/Callout.js +4 -2
  70. package/lib-module/Card/Card.js +2 -3
  71. package/lib-module/Card/CardContent.js +4 -2
  72. package/lib-module/Countdown/Countdown.js +2 -3
  73. package/lib-module/Countdown/Segment.js +4 -2
  74. package/lib-module/DatePicker/CalendarContainer.js +2 -2
  75. package/lib-module/DatePicker/DatePicker.js +21 -33
  76. package/lib-module/Disclaimer/Disclaimer.js +4 -2
  77. package/lib-module/ExpandCollapseMini/ExpandCollapseMini.js +5 -9
  78. package/lib-module/ExpandCollapseMini/ExpandCollapseMiniControl.js +4 -2
  79. package/lib-module/Footnote/Footnote.js +31 -36
  80. package/lib-module/Footnote/FootnoteLink.js +5 -7
  81. package/lib-module/IconButton/IconButton.js +4 -9
  82. package/lib-module/Image/Image.js +5 -3
  83. package/lib-module/List/ListItem.js +2 -5
  84. package/lib-module/NavigationBar/NavigationBar.js +9 -17
  85. package/lib-module/NavigationBar/NavigationItem.js +5 -8
  86. package/lib-module/NavigationBar/NavigationSubMenu.js +9 -6
  87. package/lib-module/NavigationBar/index.js +2 -0
  88. package/lib-module/OptimizeImage/OptimizeImage.js +8 -6
  89. package/lib-module/OrderedList/Item.js +3 -7
  90. package/lib-module/OrderedList/OrderedList.js +6 -12
  91. package/lib-module/OrderedList/OrderedListBase.js +3 -6
  92. package/lib-module/Paragraph/Paragraph.js +6 -4
  93. package/lib-module/PreviewCard/PreviewCard.js +2 -3
  94. package/lib-module/PriceLockup/PriceLockup.js +4 -2
  95. package/lib-module/Progress/ProgressBar.js +4 -2
  96. package/lib-module/QuantitySelector/QuantitySelector.js +22 -23
  97. package/lib-module/QuantitySelector/SideButton.js +13 -21
  98. package/lib-module/ResponsiveImage/ResponsiveImage.js +4 -2
  99. package/lib-module/Ribbon/Ribbon.js +4 -2
  100. package/lib-module/SkeletonProvider/SkeletonImage.js +5 -3
  101. package/lib-module/SkeletonProvider/SkeletonProvider.js +3 -3
  102. package/lib-module/SkeletonProvider/SkeletonTypography.js +5 -3
  103. package/lib-module/Span/Span.js +6 -4
  104. package/lib-module/Spinner/Spinner.js +4 -2
  105. package/lib-module/Spinner/SpinnerContent.js +4 -2
  106. package/lib-module/StoryCard/StoryCard.js +2 -3
  107. package/lib-module/Table/Body.js +4 -2
  108. package/lib-module/Table/Cell.js +5 -3
  109. package/lib-module/Table/Header.js +6 -4
  110. package/lib-module/Table/Row.js +6 -4
  111. package/lib-module/Table/SubHeading.js +6 -4
  112. package/lib-module/Table/Table.js +6 -6
  113. package/lib-module/TermsAndConditions/ExpandCollapse.js +2 -5
  114. package/lib-module/TermsAndConditions/TermsAndConditions.js +5 -12
  115. package/lib-module/Testimonial/Testimonial.js +4 -2
  116. package/lib-module/Toast/Toast.js +4 -2
  117. package/lib-module/Video/Video.js +19 -53
  118. package/lib-module/VideoPicker/VideoPicker.js +37 -8
  119. package/lib-module/VideoPicker/VideoPickerPlayer.js +4 -2
  120. package/lib-module/VideoPicker/VideoPickerThumbnail.js +4 -2
  121. package/lib-module/VideoPicker/VideoSlider.js +7 -5
  122. package/lib-module/WaffleGrid/WaffleGrid.js +4 -2
  123. package/lib-module/WebVideo/WebVideo.js +51 -11
  124. package/lib-module/WebVideo/utils/index.js +50 -0
  125. package/lib-module/baseExports.js +1 -1
  126. package/lib-module/utils/theming/with-client-theme.js +2 -2
  127. package/lib-module/utils/theming/with-server-theme.js +2 -2
  128. package/package.json +3 -3
  129. package/src/Badge/Badge.jsx +5 -2
  130. package/src/BlockQuote/BlockQuote.jsx +120 -112
  131. package/src/Breadcrumbs/Breadcrumbs.jsx +84 -77
  132. package/src/Breadcrumbs/Item/Item.jsx +2 -9
  133. package/src/Callout/Callout.jsx +37 -40
  134. package/src/Card/Card.jsx +2 -3
  135. package/src/Card/CardContent.jsx +19 -14
  136. package/src/Countdown/Countdown.jsx +72 -71
  137. package/src/Countdown/Segment.jsx +40 -28
  138. package/src/DatePicker/CalendarContainer.jsx +2 -2
  139. package/src/DatePicker/DatePicker.jsx +21 -34
  140. package/src/Disclaimer/Disclaimer.jsx +5 -3
  141. package/src/ExpandCollapseMini/ExpandCollapseMini.jsx +37 -40
  142. package/src/ExpandCollapseMini/ExpandCollapseMiniControl.jsx +52 -44
  143. package/src/Footnote/Footnote.jsx +32 -38
  144. package/src/Footnote/FootnoteLink.jsx +41 -49
  145. package/src/IconButton/IconButton.jsx +19 -20
  146. package/src/Image/Image.jsx +40 -43
  147. package/src/List/ListItem.jsx +3 -5
  148. package/src/NavigationBar/NavigationBar.jsx +9 -18
  149. package/src/NavigationBar/NavigationItem.jsx +6 -5
  150. package/src/NavigationBar/NavigationSubMenu.jsx +104 -88
  151. package/src/NavigationBar/index.js +3 -0
  152. package/src/OptimizeImage/OptimizeImage.jsx +48 -41
  153. package/src/OrderedList/Item.jsx +34 -35
  154. package/src/OrderedList/OrderedList.jsx +4 -6
  155. package/src/OrderedList/OrderedListBase.jsx +2 -3
  156. package/src/Paragraph/Paragraph.jsx +21 -16
  157. package/src/PreviewCard/PreviewCard.jsx +2 -3
  158. package/src/PriceLockup/PriceLockup.jsx +143 -136
  159. package/src/Progress/ProgressBar.jsx +11 -3
  160. package/src/QuantitySelector/QuantitySelector.jsx +162 -154
  161. package/src/QuantitySelector/SideButton.jsx +52 -56
  162. package/src/ResponsiveImage/ResponsiveImage.jsx +16 -22
  163. package/src/Ribbon/Ribbon.jsx +85 -83
  164. package/src/SkeletonProvider/SkeletonImage.jsx +24 -15
  165. package/src/SkeletonProvider/SkeletonProvider.jsx +3 -3
  166. package/src/SkeletonProvider/SkeletonTypography.jsx +18 -13
  167. package/src/Span/Span.jsx +7 -5
  168. package/src/Spinner/Spinner.jsx +86 -79
  169. package/src/Spinner/SpinnerContent.jsx +31 -33
  170. package/src/StoryCard/StoryCard.jsx +2 -3
  171. package/src/Table/Body.jsx +5 -3
  172. package/src/Table/Cell.jsx +77 -67
  173. package/src/Table/Header.jsx +7 -5
  174. package/src/Table/Row.jsx +7 -5
  175. package/src/Table/SubHeading.jsx +7 -5
  176. package/src/Table/Table.jsx +6 -6
  177. package/src/TermsAndConditions/ExpandCollapse.jsx +2 -6
  178. package/src/TermsAndConditions/TermsAndConditions.jsx +5 -13
  179. package/src/Testimonial/Testimonial.jsx +148 -137
  180. package/src/Toast/Toast.jsx +68 -63
  181. package/src/Video/Video.jsx +25 -45
  182. package/src/VideoPicker/VideoPicker.jsx +114 -75
  183. package/src/VideoPicker/VideoPickerPlayer.jsx +13 -9
  184. package/src/VideoPicker/VideoPickerThumbnail.jsx +102 -94
  185. package/src/VideoPicker/VideoSlider.jsx +8 -6
  186. package/src/WaffleGrid/WaffleGrid.jsx +36 -40
  187. package/src/WebVideo/WebVideo.jsx +114 -60
  188. package/src/WebVideo/utils/index.js +56 -0
  189. package/src/baseExports.js +1 -0
  190. package/src/utils/theming/with-client-theme.jsx +2 -2
  191. package/src/utils/theming/with-server-theme.jsx +2 -2
  192. package/types/WebVideo.d.ts +2 -1
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { selectSystemProps } from '@telus-uds/components-base';
4
4
  import ResponsiveImage from '../ResponsiveImage';
@@ -6,7 +6,7 @@ import { hasWebpSupport, getImageUrls } from './utils';
6
6
  import { htmlAttrs } from '../utils';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs]);
9
- const OptimizeImage = _ref => {
9
+ const OptimizeImage = /*#__PURE__*/React.forwardRef((_ref, ref) => {
10
10
  let {
11
11
  contentfulAssetUrl,
12
12
  alt,
@@ -23,8 +23,8 @@ const OptimizeImage = _ref => {
23
23
  // `useHeight` is a deprecated TDS prop, replaced by `sizeByHeight`
24
24
  const dimension = sizeByHeight || rest.useHeight ? 'h' : 'w';
25
25
  // by default assuming webP support for SSR
26
- const [imgUrls, setImgUrls] = useState(getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, true));
27
- useEffect(() => {
26
+ const [imgUrls, setImgUrls] = React.useState(getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, true));
27
+ React.useEffect(() => {
28
28
  // Checking for webP support for CSR
29
29
  hasWebpSupport().then(supportsWebp => {
30
30
  const imageUrls = getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, supportsWebp);
@@ -35,9 +35,11 @@ const OptimizeImage = _ref => {
35
35
  return /*#__PURE__*/_jsx(ResponsiveImage, {
36
36
  ...imgUrls,
37
37
  alt: alt,
38
- ...selectProps(rest)
38
+ ...selectProps(rest),
39
+ ref: ref
39
40
  });
40
- };
41
+ });
42
+ OptimizeImage.displayName = 'OptimizeImage';
41
43
  OptimizeImage.propTypes = {
42
44
  ...selectedSystemPropTypes,
43
45
  /**
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
4
  import { applyTextStyles, getTokensPropType, selectSystemProps, StackView, Typography, useTheme, useThemeTokens, wrapStringsInText } from '@telus-uds/components-base';
@@ -69,12 +69,12 @@ const ItemContent = /*#__PURE__*/styled.div.withConfig({
69
69
  })({
70
70
  flex: 1
71
71
  });
72
- const Item = /*#__PURE__*/forwardRef((_ref3, ref) => {
72
+ const Item = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
73
73
  let {
74
74
  children,
75
75
  counterName,
76
76
  title,
77
- tokens,
77
+ tokens = {},
78
78
  variant,
79
79
  ...rest
80
80
  } = _ref3;
@@ -133,8 +133,4 @@ Item.propTypes = {
133
133
  */
134
134
  tokens: getTokensPropType('List')
135
135
  };
136
- Item.defaultProps = {
137
- title: undefined,
138
- tokens: {}
139
- };
140
136
  export default Item;
@@ -1,7 +1,7 @@
1
- import React, { forwardRef, useMemo } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
- import { selectSystemProps, getTokensPropType, variantProp } from '@telus-uds/components-base';
4
+ import { selectSystemProps, variantProp } from '@telus-uds/components-base';
5
5
  import { htmlAttrs } from '../utils';
6
6
  import OrderedListBase from './OrderedListBase';
7
7
  import Item from './Item';
@@ -25,18 +25,18 @@ const StyledOrderedListBase = /*#__PURE__*/styled(OrderedListBase).withConfig({
25
25
  /**
26
26
  * Themed semantic ordered list.
27
27
  */
28
- const OrderedList = /*#__PURE__*/forwardRef((_ref2, ref) => {
28
+ const OrderedList = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
29
29
  let {
30
30
  children,
31
- start,
32
- variant,
31
+ start = 1,
32
+ variant = {},
33
33
  ...rest
34
34
  } = _ref2;
35
35
  // Check if children is an array
36
36
  const isChildrenArray = Array.isArray(children);
37
37
 
38
38
  // Pass any variants "OrderedList" receives down to the individual list items.
39
- const childrenWithParentVariants = useMemo(() => {
39
+ const childrenWithParentVariants = React.useMemo(() => {
40
40
  const addVariantToProps = child => {
41
41
  var _child$props;
42
42
  const existingChildVariants = ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.variant) ?? {};
@@ -65,7 +65,6 @@ const OrderedList = /*#__PURE__*/forwardRef((_ref2, ref) => {
65
65
  OrderedList.displayName = 'OrderedList';
66
66
  OrderedList.propTypes = {
67
67
  ...selectedSystemPropTypes,
68
- tokens: getTokensPropType('OrderedList'),
69
68
  /**
70
69
  * A list of ordered items wrapped in `OrderedList.Item`.
71
70
  */
@@ -76,10 +75,5 @@ OrderedList.propTypes = {
76
75
  start: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
77
76
  variant: variantProp.propType
78
77
  };
79
- OrderedList.defaultProps = {
80
- start: 1,
81
- tokens: {},
82
- variant: {}
83
- };
84
78
  OrderedList.Item = Item;
85
79
  export default OrderedList;
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
4
  import ItemBase from './ItemBase';
@@ -17,10 +17,10 @@ const StyledList = /*#__PURE__*/styled.ol.withConfig({
17
17
  /**
18
18
  * Semantic ordered list.
19
19
  */
20
- const OrderedListBase = /*#__PURE__*/forwardRef((_ref, ref) => {
20
+ const OrderedListBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
21
21
  let {
22
22
  children,
23
- start,
23
+ start = 1,
24
24
  ...rest
25
25
  } = _ref;
26
26
  return /*#__PURE__*/_jsx(StyledList, {
@@ -41,8 +41,5 @@ OrderedListBase.propTypes = {
41
41
  */
42
42
  start: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
43
43
  };
44
- OrderedListBase.defaultProps = {
45
- start: 1
46
- };
47
44
  OrderedListBase.Item = ItemBase;
48
45
  export default OrderedListBase;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
- import { selectSystemProps } from '@telus-uds/components-base';
4
+ import { getTokensPropType, selectSystemProps } from '@telus-uds/components-base';
5
5
  import { htmlAttrs, useTypographyTheme } from '../utils';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs]);
@@ -33,7 +33,7 @@ const StyledParagraph = /*#__PURE__*/styled.p.withConfig({
33
33
  contrast.
34
34
  * - All Allium Typography variants other than header size variants are supported.
35
35
  */
36
- const Paragraph = _ref3 => {
36
+ const Paragraph = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
37
37
  let {
38
38
  children,
39
39
  variant,
@@ -45,6 +45,7 @@ const Paragraph = _ref3 => {
45
45
  } = _ref3;
46
46
  const style = useTypographyTheme(variant, tokens);
47
47
  return /*#__PURE__*/_jsx(StyledParagraph, {
48
+ ref: ref,
48
49
  linesBetween: linesBetween,
49
50
  "data-testid": testID,
50
51
  align: align,
@@ -52,7 +53,8 @@ const Paragraph = _ref3 => {
52
53
  ...selectProps(rest),
53
54
  children: children
54
55
  });
55
- };
56
+ });
57
+ Paragraph.displayName = 'Paragraph';
56
58
  Paragraph.propTypes = {
57
59
  ...selectedSystemPropTypes,
58
60
  children: PropTypes.node.isRequired,
@@ -74,7 +76,7 @@ Paragraph.propTypes = {
74
76
  /**
75
77
  * Paragraph takes the same tokens overrides as Typography
76
78
  */
77
- tokens: PropTypes.oneOf([PropTypes.object, PropTypes.func]),
79
+ tokens: getTokensPropType('Typography'),
78
80
  /**
79
81
  * Paragraph takes any of Typography's theme variants except for header sizes
80
82
  */
@@ -1,5 +1,4 @@
1
- /* eslint-disable react/require-default-props */
2
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
3
2
  import PropTypes from 'prop-types';
4
3
  import omit from 'lodash.omit';
5
4
  import { Box, getThemeTokens, hrefAttrsProp, PressableCardBase, selectSystemProps, Spacer, StackView, Typography, a11yProps, focusHandlerProps, viewProps, withLinkRouter, useTheme, getTokensPropType } from '@telus-uds/components-base';
@@ -58,7 +57,7 @@ const defaultTokens = {
58
57
  * - Use `href` to set the target URL
59
58
  * - Use `fullBleedContent` to set the thumbnail image
60
59
  */
61
- const PreviewCard = /*#__PURE__*/forwardRef((_ref3, ref) => {
60
+ const PreviewCard = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
62
61
  let {
63
62
  tag,
64
63
  title,
@@ -130,7 +130,7 @@ const selectStrikeThroughTokens = _ref13 => {
130
130
  strikeThroughColor
131
131
  };
132
132
  };
133
- const PriceLockup = _ref14 => {
133
+ const PriceLockup = /*#__PURE__*/React.forwardRef((_ref14, ref) => {
134
134
  let {
135
135
  size = 'medium',
136
136
  signDirection = 'left',
@@ -252,6 +252,7 @@ const PriceLockup = _ref14 => {
252
252
  }
253
253
  return /*#__PURE__*/_jsxs(PriceLockupContainer, {
254
254
  ...selectProps(rest),
255
+ ref: ref,
255
256
  children: [topText && /*#__PURE__*/_jsx(TopTextContainer, {
256
257
  topTextMarginBottom: `${topTextMarginBottom}px`,
257
258
  children: renderTypography(topText, typographyTokens.topText)
@@ -263,7 +264,8 @@ const PriceLockup = _ref14 => {
263
264
  }
264
265
  }), bottomText && renderFootnoteContent()]
265
266
  });
266
- };
267
+ });
268
+ PriceLockup.displayName = 'PriceLockup';
267
269
  PriceLockup.propTypes = {
268
270
  ...selectedSystemPropTypes,
269
271
  /**
@@ -44,7 +44,7 @@ const Gradient = /*#__PURE__*/styled.div.attrs({
44
44
  * `gradient` is being used here to provide gradient filling.
45
45
  *
46
46
  */
47
- const ProgressBar = _ref2 => {
47
+ const ProgressBar = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
48
48
  let {
49
49
  percentage,
50
50
  tokens,
@@ -57,13 +57,15 @@ const ProgressBar = _ref2 => {
57
57
  percentage: percentage,
58
58
  tokens: tokens,
59
59
  variant: variant,
60
+ ref: ref,
60
61
  ...selectedProps,
61
62
  children: themeTokens.gradient && /*#__PURE__*/_jsx(Gradient, {
62
63
  ...themeTokens,
63
64
  percentage: percentage
64
65
  })
65
66
  });
66
- };
67
+ });
68
+ ProgressBar.displayName = 'ProgressBar';
67
69
  ProgressBar.propTypes = {
68
70
  ...selectedSystemPropTypes,
69
71
  /**
@@ -1,6 +1,7 @@
1
- import React, { useState } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Box, TextInput, Spacer, Feedback, InputLabel, useInputValue, useCopy, useThemeTokensCallback } from '@telus-uds/components-base';
3
+ import { Box, TextInput, Spacer, Feedback, InputLabel, useInputValue, useCopy, useThemeTokensCallback, getTokensPropType, selectSystemProps, a11yProps } from '@telus-uds/components-base';
4
+ import { htmlAttrs } from '../utils';
4
5
  import { InputField, InputWrapper } from './styles';
5
6
  import defaultDictionary from './dictionary';
6
7
  import SideButton from './SideButton';
@@ -12,29 +13,33 @@ const {
12
13
  const isNumber = value => {
13
14
  return typeof value === 'number' && !isNaN(value);
14
15
  };
15
- const QuantitySelector = _ref => {
16
+ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, htmlAttrs]);
17
+ const QuantitySelector = /*#__PURE__*/React.forwardRef((_ref, ref) => {
16
18
  let {
17
- id,
19
+ id = 'quantity-selector',
18
20
  minNumber,
19
21
  maxNumber,
20
22
  defaultValue,
21
23
  value,
22
24
  label,
23
25
  hint,
24
- hintPosition,
26
+ hintPosition = 'inline',
25
27
  tooltip,
26
28
  onChange,
27
29
  dictionary = defaultDictionary,
28
30
  accessibilityLabel,
29
- copy,
30
- variant,
31
+ copy = 'en',
32
+ variant = {
33
+ alternative: false
34
+ },
31
35
  tokens,
32
- testID
36
+ testID = 'quantity-selector-testid',
37
+ ...rest
33
38
  } = _ref;
34
39
  const {
35
40
  disabled
36
41
  } = variant;
37
- const [error, setError] = useState('');
42
+ const [error, setError] = React.useState('');
38
43
  const getCopy = useCopy({
39
44
  dictionary,
40
45
  copy
@@ -93,12 +98,12 @@ const QuantitySelector = _ref => {
93
98
  inputBorderColor,
94
99
  textColor,
95
100
  inputBackgroundColor,
96
- ...rest
101
+ ...restOfTokens
97
102
  } = getTokens({
98
103
  ...textInputState
99
104
  });
100
105
  return {
101
- ...rest,
106
+ ...restOfTokens,
102
107
  order: 1,
103
108
  borderWidth: inputBorderWidth,
104
109
  backgroundColor: inputBackgroundColor,
@@ -124,8 +129,9 @@ const QuantitySelector = _ref => {
124
129
  order
125
130
  });
126
131
  return /*#__PURE__*/_jsxs(Box, {
127
- space: 2,
128
132
  testID: testID,
133
+ ref: ref,
134
+ ...selectProps(rest),
129
135
  children: [renderLabel(), /*#__PURE__*/_jsx(Spacer, {
130
136
  space: 2
131
137
  }), /*#__PURE__*/_jsxs(InputWrapper, {
@@ -168,7 +174,7 @@ const QuantitySelector = _ref => {
168
174
  })
169
175
  }) : null]
170
176
  });
171
- };
177
+ });
172
178
 
173
179
  // If a language dictionary entry is provided, it must contain every key
174
180
  const dictionaryContentShape = PropTypes.shape({
@@ -183,7 +189,9 @@ const dictionaryContentShape = PropTypes.shape({
183
189
  invalidCharacters: PropTypes.string.isRequired
184
190
  }).isRequired
185
191
  });
192
+ QuantitySelector.displayName = 'QuantitySelector';
186
193
  QuantitySelector.propTypes = {
194
+ ...selectedSystemPropTypes,
187
195
  /**
188
196
  * The id of the input field
189
197
  */
@@ -244,19 +252,10 @@ QuantitySelector.propTypes = {
244
252
  alternative: PropTypes.bool,
245
253
  disabled: PropTypes.bool
246
254
  }),
247
- tokens: PropTypes.oneOf([PropTypes.object, PropTypes.func]),
255
+ tokens: getTokensPropType('QuantitySelector'),
248
256
  /**
249
257
  * Sets `data-testid` attribute on the input field for testing purposes.
250
258
  */
251
259
  testID: PropTypes.string
252
260
  };
253
- QuantitySelector.defaultProps = {
254
- id: 'quantity-selector',
255
- hintPosition: 'inline',
256
- copy: 'en',
257
- variant: {
258
- alternative: false
259
- },
260
- testID: 'quantity-selector-testid'
261
- };
262
261
  export default QuantitySelector;
@@ -1,16 +1,16 @@
1
- import { IconButton, useThemeTokensCallback } from '@telus-uds/components-base';
1
+ import { IconButton, getTokensPropType, useThemeTokensCallback } from '@telus-uds/components-base';
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
- const SideButton = _ref => {
5
+ const SideButton = /*#__PURE__*/React.forwardRef((_ref, ref) => {
6
6
  let {
7
- isEnabled,
8
- onPress,
9
- onDoubleClick,
10
- accessibilityLabel,
11
- accessibilityDisabled,
12
- tokens,
13
- variant
7
+ isEnabled = true,
8
+ onPress = () => {},
9
+ onDoubleClick = () => {},
10
+ accessibilityLabel = '',
11
+ accessibilityDisabled = false,
12
+ tokens = {},
13
+ variant = {}
14
14
  } = _ref;
15
15
  const getTokens = useThemeTokensCallback('QuantitySelectorSideButton', tokens, variant);
16
16
  const getButtonTokens = _ref2 => {
@@ -53,26 +53,18 @@ const SideButton = _ref => {
53
53
  onPress: onPress,
54
54
  onDoubleClick: onDoubleClick,
55
55
  accessibilityLabel: accessibilityLabel,
56
- accessibilityDisabled: accessibilityDisabled
56
+ accessibilityDisabled: accessibilityDisabled,
57
+ ref: ref
57
58
  });
58
- };
59
+ });
59
60
  SideButton.displayName = 'QuantitySelectorSideButton';
60
- SideButton.defaultProps = {
61
- isEnabled: true,
62
- onPress: () => {},
63
- onDoubleClick: () => {},
64
- accessibilityLabel: '',
65
- accessibilityDisabled: false,
66
- tokens: {},
67
- variant: {}
68
- };
69
61
  SideButton.propTypes = {
70
62
  isEnabled: PropTypes.bool,
71
63
  onPress: PropTypes.func,
72
64
  onDoubleClick: PropTypes.func,
73
65
  accessibilityLabel: PropTypes.string,
74
66
  accessibilityDisabled: PropTypes.bool,
75
- tokens: PropTypes.object,
67
+ tokens: getTokensPropType('QuantitySelectorSideButton'),
76
68
  variant: PropTypes.object
77
69
  };
78
70
  export default SideButton;
@@ -16,7 +16,7 @@ const staticStyles = {
16
16
  /**
17
17
  * Provide different image sources for different screen sizes.
18
18
  */
19
- const ResponsiveImage = _ref => {
19
+ const ResponsiveImage = /*#__PURE__*/React.forwardRef((_ref, ref) => {
20
20
  let {
21
21
  xsSrc,
22
22
  smSrc,
@@ -30,6 +30,7 @@ const ResponsiveImage = _ref => {
30
30
  } = _ref;
31
31
  return /*#__PURE__*/_jsxs("picture", {
32
32
  ...selectProps(rest),
33
+ ref: ref,
33
34
  children: [/*#__PURE__*/_jsx("source", {
34
35
  srcSet: xlSrc,
35
36
  media: `(min-width: ${viewports.map.get(viewports.xl)}px)`
@@ -52,7 +53,8 @@ const ResponsiveImage = _ref => {
52
53
  loading: loading
53
54
  })]
54
55
  });
55
- };
56
+ });
57
+ ResponsiveImage.displayName = 'ResponsiveImage';
56
58
  ResponsiveImage.propTypes = {
57
59
  ...selectedSystemPropTypes,
58
60
  /**
@@ -105,7 +105,7 @@ const RibbonCurve = /*#__PURE__*/styled.div.withConfig({
105
105
  } = _ref17;
106
106
  return curveAfterWidth;
107
107
  });
108
- const Ribbon = _ref18 => {
108
+ const Ribbon = /*#__PURE__*/React.forwardRef((_ref18, ref) => {
109
109
  let {
110
110
  children,
111
111
  tokens,
@@ -161,6 +161,7 @@ const Ribbon = _ref18 => {
161
161
  left: left,
162
162
  top: top,
163
163
  "data-testid": "ribbon-wrapper",
164
+ ref: ref,
164
165
  ...selectProps(rest),
165
166
  children: [/*#__PURE__*/_jsx(RibbonContainer, {
166
167
  shouldWrap: shouldWrap,
@@ -197,7 +198,8 @@ const Ribbon = _ref18 => {
197
198
  curveAfterBackgroundColor: curveAfterBackgroundColor
198
199
  })]
199
200
  });
200
- };
201
+ });
202
+ Ribbon.displayName = 'Ribbon';
201
203
  Ribbon.propTypes = {
202
204
  ...selectedSystemPropTypes,
203
205
  tokens: getTokensPropType('Ribbon'),
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { Skeleton } from '@telus-uds/components-base';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
- const SkeletonImage = _ref => {
6
+ const SkeletonImage = /*#__PURE__*/React.forwardRef((_ref, ref) => {
7
7
  let {
8
8
  rounded,
9
9
  imgHeight,
@@ -22,9 +22,11 @@ const SkeletonImage = _ref => {
22
22
  size: size,
23
23
  sizePixels: sizePixels,
24
24
  sizeIndex: sizeIndex,
25
- shape: shape
25
+ shape: shape,
26
+ ref: ref
26
27
  });
27
- };
28
+ });
29
+ SkeletonImage.displayName = 'SkeletonImage';
28
30
  SkeletonImage.propTypes = {
29
31
  imgHeight: PropTypes.number,
30
32
  rounded: PropTypes.oneOf(['circle', 'corners']),
@@ -1,4 +1,4 @@
1
- import React, { Children, cloneElement } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { Typography } from '@telus-uds/components-base';
4
4
  import Image from '../Image';
@@ -24,7 +24,7 @@ const SkeletonProvider = _ref => {
24
24
  children: elementChildren
25
25
  } = childElement.props;
26
26
  const mappedChildren = Array.isArray(elementChildren) ? elementChildren.map(mapChild) : mapChild(elementChildren);
27
- childElement = /*#__PURE__*/cloneElement(childElement, {
27
+ childElement = /*#__PURE__*/React.cloneElement(childElement, {
28
28
  children: mappedChildren
29
29
  });
30
30
  }
@@ -47,7 +47,7 @@ const SkeletonProvider = _ref => {
47
47
  return childElement;
48
48
  };
49
49
  return /*#__PURE__*/_jsx(_Fragment, {
50
- children: Children.map(children, mapChild)
50
+ children: React.Children.map(children, mapChild)
51
51
  });
52
52
  };
53
53
  SkeletonProvider.propTypes = {
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { Skeleton } from '@telus-uds/components-base';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
- const SkeletonTypography = _ref => {
6
+ const SkeletonTypography = /*#__PURE__*/React.forwardRef((_ref, ref) => {
7
7
  let {
8
8
  show,
9
9
  size,
@@ -21,9 +21,11 @@ const SkeletonTypography = _ref => {
21
21
  sizeIndex: sizeIndex,
22
22
  sizePixels: sizePixels,
23
23
  characters: characters,
24
- lines: lines
24
+ lines: lines,
25
+ ref: ref
25
26
  });
26
- };
27
+ });
28
+ SkeletonTypography.displayName = 'SkeletonTypography';
27
29
  SkeletonTypography.propTypes = {
28
30
  show: PropTypes.bool.isRequired,
29
31
  children: PropTypes.node,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
- import { selectSystemProps } from '@telus-uds/components-base';
4
+ import { getTokensPropType, selectSystemProps } from '@telus-uds/components-base';
5
5
  import { htmlAttrs, useTypographyTheme } from '../utils';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs]);
@@ -21,7 +21,7 @@ const StyledSpan = /*#__PURE__*/styled.span.withConfig({
21
21
  * Span may be used in cases where an inline span or direct access to HTML attributes is required.
22
22
  * In most cases, `Typography` should be used for text, or Paragraph for body text.
23
23
  */
24
- const Span = _ref2 => {
24
+ const Span = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
25
25
  let {
26
26
  children,
27
27
  variant,
@@ -35,10 +35,12 @@ const Span = _ref2 => {
35
35
  "data-testid": testID,
36
36
  flex: flex,
37
37
  style: style,
38
+ ref: ref,
38
39
  ...selectProps(rest),
39
40
  children: children
40
41
  });
41
- };
42
+ });
43
+ Span.displayName = 'Span';
42
44
  Span.propTypes = {
43
45
  ...selectedSystemPropTypes,
44
46
  children: PropTypes.node.isRequired,
@@ -54,7 +56,7 @@ Span.propTypes = {
54
56
  /**
55
57
  * Span takes the same tokens overrides as Typography
56
58
  */
57
- tokens: PropTypes.oneOf([PropTypes.object, PropTypes.func]),
59
+ tokens: getTokensPropType('Typography'),
58
60
  /**
59
61
  * Span can take any of Typography's theme variants
60
62
  */
@@ -78,7 +78,7 @@ const recursiveMap = (children, fn) => React.Children.map(children, child => {
78
78
  /**
79
79
  * Loading indicator.
80
80
  */
81
- const Spinner = _ref3 => {
81
+ const Spinner = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
82
82
  let {
83
83
  children,
84
84
  fullScreen = false,
@@ -159,6 +159,7 @@ const Spinner = _ref3 => {
159
159
 
160
160
  // Standalone spinner
161
161
  return /*#__PURE__*/_jsx(SpinnerContainer, {
162
+ ref: ref,
162
163
  ...selectProps(rest),
163
164
  children: /*#__PURE__*/_jsx(SpinnerContent, {
164
165
  label: label,
@@ -169,7 +170,8 @@ const Spinner = _ref3 => {
169
170
  isStatic: isStatic
170
171
  })
171
172
  });
172
- };
173
+ });
174
+ Spinner.displayName = 'Spinner';
173
175
  Spinner.propTypes = {
174
176
  ...selectedSystemPropTypes,
175
177
  tokens: getTokensPropType('Spinner'),
@@ -27,7 +27,7 @@ const Container = /*#__PURE__*/styled.div.withConfig({
27
27
  })
28
28
  };
29
29
  });
30
- const SpinnerContent = _ref2 => {
30
+ const SpinnerContent = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
31
31
  let {
32
32
  label,
33
33
  labelPosition,
@@ -46,6 +46,7 @@ const SpinnerContent = _ref2 => {
46
46
  };
47
47
  return /*#__PURE__*/_jsx(Container, {
48
48
  overlay: overlay,
49
+ ref: ref,
49
50
  children: /*#__PURE__*/_jsxs(StackView, {
50
51
  space: 3,
51
52
  tokens: {
@@ -65,7 +66,8 @@ const SpinnerContent = _ref2 => {
65
66
  })]
66
67
  })
67
68
  });
68
- };
69
+ });
70
+ SpinnerContent.displayName = 'SpinnerContent';
69
71
  SpinnerContent.propTypes = {
70
72
  ...selectedSystemPropTypes,
71
73
  /**
@@ -1,5 +1,4 @@
1
- /* eslint-disable react/require-default-props */
2
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
3
2
  import PropTypes from 'prop-types';
4
3
  import { Box, Divider, PressableCardBase, selectSystemProps, Spacer, StackView, StackWrap, Typography, hrefAttrsProp, a11yProps, focusHandlerProps, viewProps, withLinkRouter, useThemeTokens, useThemeTokensCallback, getTokensPropType } from '@telus-uds/components-base';
5
4
  import styled from 'styled-components';
@@ -48,7 +47,7 @@ const FullBleedOffsetInner = /*#__PURE__*/styled.div.withConfig({
48
47
  * - Use `href` to set the target URL
49
48
  * - Use `fullBleedContent` to set the thumbnail image
50
49
  */
51
- const StoryCard = /*#__PURE__*/forwardRef((_ref3, ref) => {
50
+ const StoryCard = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
52
51
  let {
53
52
  tag,
54
53
  date,