@telus-uds/components-base 3.29.0 → 3.30.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 (105) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/jest.config.cjs +1 -0
  3. package/lib/cjs/ActionCard/ActionCard.js +4 -4
  4. package/lib/cjs/ActivityIndicator/Dots.native.js +1 -2
  5. package/lib/cjs/ActivityIndicator/Spinner.native.js +1 -2
  6. package/lib/cjs/Box/Box.js +1 -2
  7. package/lib/cjs/Button/Button.js +1 -2
  8. package/lib/cjs/Button/ButtonBase.js +8 -8
  9. package/lib/cjs/Button/ButtonDropdown.js +1 -2
  10. package/lib/cjs/Button/ButtonGroup.js +1 -2
  11. package/lib/cjs/Button/ButtonLink.js +1 -2
  12. package/lib/cjs/Card/Card.js +1 -2
  13. package/lib/cjs/Card/PressableCardBase.js +1 -2
  14. package/lib/cjs/Card/index.js +1 -2
  15. package/lib/cjs/CardGroup/CardGroup.js +1 -2
  16. package/lib/cjs/Carousel/Carousel.js +12 -7
  17. package/lib/cjs/Carousel/CarouselThumbnail.js +123 -31
  18. package/lib/cjs/Carousel/CarouselThumbnailNavigation.js +8 -1
  19. package/lib/cjs/CheckboxCard/CheckboxCard.js +1 -2
  20. package/lib/cjs/CheckboxCardGroup/CheckboxCardGroup.js +1 -2
  21. package/lib/cjs/Footnote/FootnoteLink.js +18 -17
  22. package/lib/cjs/HorizontalScroll/index.js +1 -2
  23. package/lib/cjs/Icon/IconText.js +1 -2
  24. package/lib/cjs/Icon/index.js +1 -2
  25. package/lib/cjs/InputSupports/InputSupports.js +1 -2
  26. package/lib/cjs/InputSupports/useInputSupports.js +1 -3
  27. package/lib/cjs/Link/MobileIconTextContent.js +1 -2
  28. package/lib/cjs/Listbox/Listbox.js +1 -2
  29. package/lib/cjs/Modal/Modal.js +1 -1
  30. package/lib/cjs/Pagination/PageButton.js +1 -2
  31. package/lib/cjs/Pagination/Pagination.js +1 -2
  32. package/lib/cjs/Progress/Progress.js +30 -5
  33. package/lib/cjs/QuickLinks/QuickLinks.js +7 -0
  34. package/lib/cjs/Radio/Radio.js +1 -2
  35. package/lib/cjs/RadioCard/RadioCard.js +1 -2
  36. package/lib/cjs/RadioCard/RadioCardGroup.js +1 -2
  37. package/lib/cjs/Scroll/Scroll.js +466 -0
  38. package/lib/cjs/Scroll/ScrollContext.js +55 -0
  39. package/lib/cjs/Scroll/ScrollItem.js +103 -0
  40. package/lib/cjs/Scroll/ScrollProgress.js +99 -0
  41. package/lib/cjs/Scroll/dictionary.js +18 -0
  42. package/lib/cjs/Scroll/index.js +29 -0
  43. package/lib/cjs/Shortcuts/Shortcuts.js +1 -2
  44. package/lib/cjs/SideNav/SideNav.js +1 -2
  45. package/lib/cjs/StackView/StackWrapBox.js +9 -1
  46. package/lib/cjs/StackView/StackWrapGap.js +3 -1
  47. package/lib/cjs/StackView/getStackedContent.js +21 -12
  48. package/lib/cjs/Tabs/Tabs.js +1 -2
  49. package/lib/cjs/Tooltip/Tooltip.native.js +2 -2
  50. package/lib/cjs/index.js +16 -2
  51. package/lib/cjs/utils/animation/index.js +7 -0
  52. package/lib/cjs/utils/animation/useAnimatedValue.js +46 -0
  53. package/lib/cjs/utils/children.js +2 -1
  54. package/lib/cjs/utils/index.js +1 -2
  55. package/lib/esm/ActionCard/ActionCard.js +4 -4
  56. package/lib/esm/Button/ButtonBase.js +8 -8
  57. package/lib/esm/Carousel/Carousel.js +12 -7
  58. package/lib/esm/Carousel/CarouselThumbnail.js +124 -32
  59. package/lib/esm/Carousel/CarouselThumbnailNavigation.js +8 -1
  60. package/lib/esm/Footnote/FootnoteLink.js +18 -17
  61. package/lib/esm/InputSupports/InputSupports.js +1 -2
  62. package/lib/esm/InputSupports/useInputSupports.js +1 -3
  63. package/lib/esm/Modal/Modal.js +1 -1
  64. package/lib/esm/Progress/Progress.js +30 -5
  65. package/lib/esm/QuickLinks/QuickLinks.js +7 -0
  66. package/lib/esm/Scroll/Scroll.js +459 -0
  67. package/lib/esm/Scroll/ScrollContext.js +47 -0
  68. package/lib/esm/Scroll/ScrollItem.js +96 -0
  69. package/lib/esm/Scroll/ScrollProgress.js +92 -0
  70. package/lib/esm/Scroll/dictionary.js +12 -0
  71. package/lib/esm/Scroll/index.js +4 -0
  72. package/lib/esm/StackView/StackWrapBox.js +9 -1
  73. package/lib/esm/StackView/StackWrapGap.js +3 -1
  74. package/lib/esm/StackView/getStackedContent.js +20 -10
  75. package/lib/esm/Tooltip/Tooltip.native.js +2 -2
  76. package/lib/esm/index.js +1 -0
  77. package/lib/esm/utils/animation/index.js +1 -1
  78. package/lib/esm/utils/animation/useAnimatedValue.js +39 -0
  79. package/lib/esm/utils/children.js +2 -1
  80. package/lib/package.json +2 -2
  81. package/package.json +2 -2
  82. package/src/Carousel/Carousel.jsx +6 -1
  83. package/src/Carousel/CarouselThumbnail.jsx +153 -64
  84. package/src/Carousel/CarouselThumbnailNavigation.jsx +8 -2
  85. package/src/Footnote/FootnoteLink.jsx +17 -12
  86. package/src/InputSupports/InputSupports.jsx +1 -6
  87. package/src/InputSupports/useInputSupports.js +1 -1
  88. package/src/Modal/Modal.jsx +1 -1
  89. package/src/Progress/Progress.jsx +22 -3
  90. package/src/QuickLinks/QuickLinks.jsx +8 -0
  91. package/src/Scroll/Scroll.jsx +488 -0
  92. package/src/Scroll/ScrollContext.jsx +41 -0
  93. package/src/Scroll/ScrollItem.jsx +89 -0
  94. package/src/Scroll/ScrollProgress.jsx +75 -0
  95. package/src/Scroll/dictionary.js +12 -0
  96. package/src/Scroll/index.js +5 -0
  97. package/src/StackView/StackWrapBox.jsx +13 -1
  98. package/src/StackView/StackWrapGap.jsx +2 -1
  99. package/src/StackView/getStackedContent.jsx +22 -8
  100. package/src/index.js +1 -0
  101. package/src/utils/animation/index.js +1 -1
  102. package/src/utils/animation/useAnimatedValue.js +37 -0
  103. package/src/utils/children.jsx +4 -1
  104. package/types/Scroll.d.ts +66 -0
  105. package/types/index.d.ts +9 -0
@@ -0,0 +1,99 @@
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 _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
10
+ var _utils = require("../utils");
11
+ var _Progress = _interopRequireDefault(require("../Progress"));
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ const MAX_PERCENTAGE = 100;
15
+ const BORDER_RADIUS_DIVISOR = 2;
16
+ const staticProgressTokens = {
17
+ borderWidth: 0,
18
+ borderColor: 'transparent'
19
+ };
20
+ const staticProgressBarTokens = {
21
+ gradient: null,
22
+ outlineWidth: 0
23
+ };
24
+ const selectProgressTokens = _ref => {
25
+ let {
26
+ progressTrackHeight,
27
+ progressBarHeight,
28
+ progressTrackColor
29
+ } = _ref;
30
+ return {
31
+ height: progressTrackHeight,
32
+ barHeight: progressBarHeight,
33
+ backgroundColor: progressTrackColor,
34
+ borderRadius: progressTrackHeight / BORDER_RADIUS_DIVISOR
35
+ };
36
+ };
37
+ const selectBarTokens = _ref2 => {
38
+ let {
39
+ progressBarColor,
40
+ progressBarHeight
41
+ } = _ref2;
42
+ return {
43
+ backgroundColor: progressBarColor,
44
+ borderRadius: progressBarHeight / BORDER_RADIUS_DIVISOR
45
+ };
46
+ };
47
+ const ScrollProgress = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
48
+ let {
49
+ pressableState,
50
+ getTokens,
51
+ thumbWrapperStyle,
52
+ getCopy
53
+ } = _ref3;
54
+ const state = (0, _utils.resolvePressableState)(pressableState);
55
+ const themeTokens = getTokens(state);
56
+ const animatedBarHeight = (0, _utils.useAnimatedValue)(themeTokens.progressBarHeight);
57
+ const animatedTokens = {
58
+ ...themeTokens,
59
+ progressBarHeight: animatedBarHeight
60
+ };
61
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Progress.default, {
62
+ tokens: {
63
+ ...staticProgressTokens,
64
+ ...selectProgressTokens(animatedTokens)
65
+ },
66
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
67
+ ref: ref,
68
+ style: thumbWrapperStyle,
69
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Progress.default.Bar, {
70
+ percentage: MAX_PERCENTAGE,
71
+ tokens: {
72
+ ...staticProgressBarTokens,
73
+ ...selectBarTokens(animatedTokens)
74
+ },
75
+ accessibilityLabel: getCopy('progressBarLabel')
76
+ })
77
+ })
78
+ });
79
+ });
80
+ ScrollProgress.displayName = 'ScrollProgress';
81
+ ScrollProgress.propTypes = {
82
+ /**
83
+ * State object from Pressable's render callback containing hovered, pressed, and focused states
84
+ */
85
+ pressableState: _propTypes.default.object.isRequired,
86
+ /**
87
+ * Theme token resolver callback from useThemeTokensCallback that accepts appearance state
88
+ */
89
+ getTokens: _propTypes.default.func.isRequired,
90
+ /**
91
+ * Style array for the thumb wrapper containing static and dynamic position styles
92
+ */
93
+ thumbWrapperStyle: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.array]).isRequired,
94
+ /**
95
+ * Copy resolver function from useCopy for retrieving localized strings
96
+ */
97
+ getCopy: _propTypes.default.func.isRequired
98
+ };
99
+ var _default = exports.default = ScrollProgress;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = exports.default = {
8
+ en: {
9
+ accessibilityLabel: 'Scrollable content',
10
+ instructionText: 'Use Tab, arrow keys, or space bar to navigate',
11
+ progressBarLabel: 'Scroll position'
12
+ },
13
+ fr: {
14
+ accessibilityLabel: 'Contenu défilable',
15
+ instructionText: "Utilisez Tab, les touches fléchées ou la barre d'espace pour naviguer",
16
+ progressBarLabel: 'Position de défilement'
17
+ }
18
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ScrollItem", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _ScrollItem.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ScrollProvider", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _ScrollContext.ScrollProvider;
16
+ }
17
+ });
18
+ exports.default = void 0;
19
+ Object.defineProperty(exports, "useScroll", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _ScrollContext.useScroll;
23
+ }
24
+ });
25
+ var _Scroll = _interopRequireDefault(require("./Scroll"));
26
+ var _ScrollItem = _interopRequireDefault(require("./ScrollItem"));
27
+ var _ScrollContext = require("./ScrollContext");
28
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
+ var _default = exports.default = _Scroll.default;
@@ -15,8 +15,7 @@ var _ViewportProvider = require("../ViewportProvider");
15
15
  var _utils = require("../utils");
16
16
  var _HorizontalScroll = _interopRequireWildcard(require("../HorizontalScroll"));
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
20
  const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
22
21
  const {
@@ -13,8 +13,7 @@ var _ThemeProvider = require("../ThemeProvider");
13
13
  var _utils = require("../utils");
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
17
  const selectContainerTokens = _ref => {
19
18
  let {
20
19
  borderWidth,
@@ -50,6 +50,7 @@ const StackWrapBox = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
50
50
  variant,
51
51
  tag,
52
52
  accessibilityRole,
53
+ itemAccessibilityRole,
53
54
  ...rest
54
55
  } = _ref;
55
56
  const viewport = (0, _ViewportProvider.useViewport)();
@@ -76,7 +77,8 @@ const StackWrapBox = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
76
77
  const content = (0, _getStackedContent.default)(children, {
77
78
  direction,
78
79
  space: 0,
79
- box: boxProps
80
+ box: boxProps,
81
+ itemAccessibilityRole
80
82
  });
81
83
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
82
84
  ref: ref,
@@ -112,6 +114,12 @@ StackWrapBox.propTypes = {
112
114
  * is not defined, the accessibilityRole will default to "heading".
113
115
  */
114
116
  tag: _propTypes.default.oneOf(_utils.layoutTags),
117
+ /**
118
+ * Optional accessibility role to apply to each item in the stack.
119
+ * On web, items are wrapped (or cloned) with this role, enabling correct list semantics
120
+ * when the container tag is "ul" or "ol".
121
+ */
122
+ itemAccessibilityRole: _propTypes.default.string,
115
123
  /**
116
124
  * A StackWrap may take any children, but will have no effect if it is only passed one child or is passed children
117
125
  * wrapped in a component. If necessary, children may be wrapped in one React Fragment.
@@ -35,6 +35,7 @@ const StackWrapGap = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
35
35
  children,
36
36
  tag,
37
37
  accessibilityRole,
38
+ itemAccessibilityRole,
38
39
  ...rest
39
40
  } = _ref;
40
41
  const viewport = (0, _ViewportProvider.useViewport)();
@@ -54,7 +55,8 @@ const StackWrapGap = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
54
55
  };
55
56
  const content = (0, _getStackedContent.default)(children, {
56
57
  direction,
57
- space: 0
58
+ space: 0,
59
+ itemAccessibilityRole
58
60
  });
59
61
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
60
62
  ref: ref,
@@ -10,8 +10,7 @@ var _Divider = _interopRequireDefault(require("../Divider"));
10
10
  var _Spacer = _interopRequireDefault(require("../Spacer"));
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
14
  /**
16
15
  * @typedef {import('react').ReactChildren} ReactChildren
17
16
  * @typedef {import('react').ReactElement} ReactElement
@@ -43,7 +42,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
43
42
  space,
44
43
  direction = 'column',
45
44
  box,
46
- preserveFragments = false
45
+ preserveFragments = false,
46
+ itemAccessibilityRole
47
47
  } = _ref;
48
48
  const boxProps = box && typeof box === 'object' ? box : {
49
49
  space
@@ -55,15 +55,24 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
55
55
  const validChildren = _react.default.Children.toArray(topLevelChildren).filter(Boolean);
56
56
  const content = validChildren.reduce((newChildren, child, index) => {
57
57
  const boxID = `Stack-Box-${index}`;
58
- const item = box ?
59
- /*#__PURE__*/
60
- // If wrapped in Box, that Box needs a key.
61
- // If possible, use an existing content key; use an index-based key only if necessary.
62
- (0, _react.createElement)(_Box.default, {
63
- ...boxProps,
64
- key: child.key || boxID,
65
- testID: boxID
66
- }, child) : child;
58
+ let item;
59
+ if (box) {
60
+ // If wrapped in Box, that Box needs a key.
61
+ // If possible, use an existing content key; use an index-based key only if necessary.
62
+ item = /*#__PURE__*/(0, _react.createElement)(_Box.default, {
63
+ ...boxProps,
64
+ accessibilityRole: itemAccessibilityRole,
65
+ key: child.key || boxID,
66
+ testID: boxID
67
+ }, child);
68
+ } else if (itemAccessibilityRole) {
69
+ item = /*#__PURE__*/_react.default.cloneElement(child, {
70
+ accessibilityRole: itemAccessibilityRole,
71
+ key: child.key || boxID
72
+ });
73
+ } else {
74
+ item = child;
75
+ }
67
76
  if (!index || !space && !divider) return [...newChildren, item];
68
77
  const testID = `Stack-${divider ? 'Divider' : 'Spacer'}-${index}`;
69
78
  const commonProps = {
@@ -15,8 +15,7 @@ var _HorizontalScroll = _interopRequireWildcard(require("../HorizontalScroll"));
15
15
  var _TabsItem = _interopRequireDefault(require("./TabsItem"));
16
16
  var _TabsDropdown = _interopRequireDefault(require("./TabsDropdown"));
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
20
  const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
22
21
  const [selectItemProps, selectedItemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.focusHandlerProps, _utils.pressProps, _utils.viewProps]);
@@ -213,7 +213,7 @@ const Tooltip = /*#__PURE__*/_react.default.forwardRef((_ref7, ref) => {
213
213
  focus: focused
214
214
  };
215
215
  };
216
- const onTooltipLayout = _ref10 => {
216
+ const onTooltipLayout = _ref0 => {
217
217
  let {
218
218
  nativeEvent: {
219
219
  layout: {
@@ -221,7 +221,7 @@ const Tooltip = /*#__PURE__*/_react.default.forwardRef((_ref7, ref) => {
221
221
  height
222
222
  }
223
223
  }
224
- } = _ref10;
224
+ } = _ref0;
225
225
  if (tooltipDimensions === null || tooltipDimensions.width !== width || tooltipDimensions.height !== height) {
226
226
  setTooltipDimensions({
227
227
  width: _Platform.default.select({
package/lib/cjs/index.js CHANGED
@@ -57,6 +57,8 @@ var _exportNames = {
57
57
  RadioCard: true,
58
58
  RadioCardGroup: true,
59
59
  Responsive: true,
60
+ Scroll: true,
61
+ ScrollItem: true,
60
62
  Search: true,
61
63
  Select: true,
62
64
  Shortcuts: true,
@@ -422,6 +424,18 @@ Object.defineProperty(exports, "Responsive", {
422
424
  return _Responsive.default;
423
425
  }
424
426
  });
427
+ Object.defineProperty(exports, "Scroll", {
428
+ enumerable: true,
429
+ get: function () {
430
+ return _Scroll.default;
431
+ }
432
+ });
433
+ Object.defineProperty(exports, "ScrollItem", {
434
+ enumerable: true,
435
+ get: function () {
436
+ return _Scroll.ScrollItem;
437
+ }
438
+ });
425
439
  Object.defineProperty(exports, "Search", {
426
440
  enumerable: true,
427
441
  get: function () {
@@ -756,6 +770,7 @@ var _QuickLinksFeature = _interopRequireDefault(require("./QuickLinksFeature"));
756
770
  var _Radio = _interopRequireWildcard(require("./Radio"));
757
771
  var _RadioCard = _interopRequireWildcard(require("./RadioCard"));
758
772
  var _Responsive = _interopRequireDefault(require("./Responsive"));
773
+ var _Scroll = _interopRequireWildcard(require("./Scroll"));
759
774
  var _Search = _interopRequireDefault(require("./Search"));
760
775
  var _Select = _interopRequireDefault(require("./Select"));
761
776
  var _Shortcuts = _interopRequireWildcard(require("./Shortcuts"));
@@ -816,6 +831,5 @@ Object.keys(_utils).forEach(function (key) {
816
831
  });
817
832
  });
818
833
  var _Portal = _interopRequireDefault(require("./Portal"));
819
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
820
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
834
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
821
835
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -3,11 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "useAnimatedValue", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useAnimatedValue.default;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "useVerticalExpandAnimation", {
7
13
  enumerable: true,
8
14
  get: function () {
9
15
  return _useVerticalExpandAnimation.default;
10
16
  }
11
17
  });
18
+ var _useAnimatedValue = _interopRequireDefault(require("./useAnimatedValue"));
12
19
  var _useVerticalExpandAnimation = _interopRequireDefault(require("./useVerticalExpandAnimation"));
13
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -0,0 +1,46 @@
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 _Animated = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Animated"));
9
+ var _Easing = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Easing"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const ANIMATION_DURATION = 200;
12
+
13
+ /**
14
+ * Smoothly animates a numeric value to a new target using a quadratic ease-in-out
15
+ * curve. Returns the current interpolated value as a plain number so
16
+ * consumers can use it in non-Animated style props.
17
+ *
18
+ * @param {number} targetValue - The value to animate towards.
19
+ * @param {number} [duration=ANIMATION_DURATION] - Animation duration in ms.
20
+ */
21
+ const useAnimatedValue = function (targetValue) {
22
+ let duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANIMATION_DURATION;
23
+ const [currentValue, setCurrentValue] = _react.default.useState(targetValue);
24
+ const animatedValue = _react.default.useRef(new _Animated.default.Value(targetValue)).current;
25
+ _react.default.useEffect(() => {
26
+ const id = animatedValue.addListener(_ref => {
27
+ let {
28
+ value
29
+ } = _ref;
30
+ return setCurrentValue(value);
31
+ });
32
+ return () => animatedValue.removeListener(id);
33
+ }, [animatedValue]);
34
+ _react.default.useEffect(() => {
35
+ const animation = _Animated.default.timing(animatedValue, {
36
+ toValue: targetValue,
37
+ duration,
38
+ easing: _Easing.default.inOut(_Easing.default.quad),
39
+ useNativeDriver: false
40
+ });
41
+ animation.start();
42
+ return () => animation.stop();
43
+ }, [targetValue, animatedValue, duration]);
44
+ return currentValue;
45
+ };
46
+ var _default = exports.default = useAnimatedValue;
@@ -54,7 +54,8 @@ const unpackFragment = child => {
54
54
  exports.unpackFragment = unpackFragment;
55
55
  const isStringOrNumber = child => typeof child === 'string' || typeof child === 'number';
56
56
  // Wrap an A11yText with neighouring text strings so it doesn't split them into multiple <Text>s
57
- const isWrapable = child => isStringOrNumber(child) || child.type === _A11yText.default || child.type?.name === 'FootnoteLink';
57
+ // Check displayName first as it is explicitly set and reliable regardless of export style (named vs default)
58
+ const isWrapable = child => isStringOrNumber(child) || child.type === _A11yText.default || child.type?.__UDS_COMPONENT_NAME__ === 'FootnoteLink';
58
59
  const combineKeys = childrenArray => childrenArray.reduce((newKey, child) => `${newKey}${child.key || ''}`, '');
59
60
 
60
61
  // Group wrappable children for one `<Text>` parent, merging adjacent text nodes
@@ -280,6 +280,5 @@ var _getSpacingScale = _interopRequireDefault(require("./getSpacingScale"));
280
280
  var _useVariants = _interopRequireDefault(require("./useVariants"));
281
281
  var _isTouchDevice = _interopRequireDefault(require("./isTouchDevice"));
282
282
  var _resolveContentMaxWidth = _interopRequireDefault(require("./resolveContentMaxWidth"));
283
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
284
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
283
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
285
284
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -153,11 +153,11 @@ const selectActionIconStyles = _ref9 => {
153
153
  marginTop: actionIconMarginTop
154
154
  };
155
155
  };
156
- const selectActionIconProps = _ref10 => {
156
+ const selectActionIconProps = _ref0 => {
157
157
  let {
158
158
  actionIcon,
159
159
  actionIconColor
160
- } = _ref10;
160
+ } = _ref0;
161
161
  return {
162
162
  icon: actionIcon,
163
163
  tokens: {
@@ -186,7 +186,7 @@ const ACTION_ICON_ANIMATION_DURATION = 100;
186
186
  * </ActionCard>
187
187
  * )
188
188
  */
189
- const ActionCard = /*#__PURE__*/React.forwardRef((_ref11, ref) => {
189
+ const ActionCard = /*#__PURE__*/React.forwardRef((_ref1, ref) => {
190
190
  let {
191
191
  icon,
192
192
  title,
@@ -197,7 +197,7 @@ const ActionCard = /*#__PURE__*/React.forwardRef((_ref11, ref) => {
197
197
  tokens,
198
198
  variant,
199
199
  ...rest
200
- } = _ref11;
200
+ } = _ref1;
201
201
  const themeTokens = useThemeTokens('ActionCard', tokens, variant);
202
202
  const actionIconAnimation = React.useRef(new Animated.Value(0)).current;
203
203
  const {
@@ -218,27 +218,27 @@ const selectWebOnlyStyles = (inactive, themeTokens, _ref9) => {
218
218
  default: {}
219
219
  });
220
220
  };
221
- const selectButtonStyles = _ref10 => {
221
+ const selectButtonStyles = _ref0 => {
222
222
  let {
223
223
  textAlign
224
- } = _ref10;
224
+ } = _ref0;
225
225
  return {
226
226
  flexDirection: 'row',
227
227
  justifyContent: textAlign
228
228
  };
229
229
  };
230
- const selectItemIconTokens = _ref11 => {
230
+ const selectItemIconTokens = _ref1 => {
231
231
  let {
232
232
  color,
233
233
  iconColor,
234
234
  iconSize
235
- } = _ref11;
235
+ } = _ref1;
236
236
  return {
237
237
  size: iconSize,
238
238
  color: iconColor || color
239
239
  };
240
240
  };
241
- const ButtonBase = /*#__PURE__*/React.forwardRef((_ref12, ref) => {
241
+ const ButtonBase = /*#__PURE__*/React.forwardRef((_ref10, ref) => {
242
242
  let {
243
243
  id,
244
244
  href,
@@ -254,7 +254,7 @@ const ButtonBase = /*#__PURE__*/React.forwardRef((_ref12, ref) => {
254
254
  iconProps,
255
255
  heightFull = true,
256
256
  ...rawRest
257
- } = _ref12;
257
+ } = _ref10;
258
258
  const {
259
259
  themeOptions
260
260
  } = useTheme();
@@ -282,8 +282,8 @@ const ButtonBase = /*#__PURE__*/React.forwardRef((_ref12, ref) => {
282
282
  focused: false
283
283
  };
284
284
  const defaultTokensByViewport = resolveButtonTokens(defaultPressableState);
285
- const layoutTokensByViewport = Object.entries(defaultTokensByViewport).reduce((acc, _ref13) => {
286
- let [vp, viewportTokens] = _ref13;
285
+ const layoutTokensByViewport = Object.entries(defaultTokensByViewport).reduce((acc, _ref11) => {
286
+ let [vp, viewportTokens] = _ref11;
287
287
  const flexAndWidthStyles = viewportTokens.width === '100%' && viewportTokens.flex === 1 ? selectFlexAndWidthStyles(viewportTokens) : {};
288
288
  acc[vp] = {
289
289
  ...staticStyles.row,
@@ -761,7 +761,7 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
761
761
  height
762
762
  }));
763
763
  };
764
- const onHeroContainerLayout = _ref10 => {
764
+ const onHeroContainerLayout = _ref0 => {
765
765
  let {
766
766
  nativeEvent: {
767
767
  layout: {
@@ -771,7 +771,7 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
771
771
  height
772
772
  }
773
773
  }
774
- } = _ref10;
774
+ } = _ref0;
775
775
  return setHeroContainerLayout(prevState => ({
776
776
  ...prevState,
777
777
  x,
@@ -780,17 +780,17 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
780
780
  height
781
781
  }));
782
782
  };
783
- const onPreviousNextNavigationButtonLayout = _ref11 => {
783
+ const onPreviousNextNavigationButtonLayout = _ref1 => {
784
784
  let {
785
785
  nativeEvent: {
786
786
  layout: {
787
787
  width
788
788
  }
789
789
  }
790
- } = _ref11;
790
+ } = _ref1;
791
791
  return setPreviousNextNavigationButtonWidth(width);
792
792
  };
793
- const onRootContainerLayout = _ref12 => {
793
+ const onRootContainerLayout = _ref10 => {
794
794
  let {
795
795
  nativeEvent: {
796
796
  layout: {
@@ -800,7 +800,7 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
800
800
  height
801
801
  }
802
802
  }
803
- } = _ref12;
803
+ } = _ref10;
804
804
  return setRootContainerLayout(prevState => ({
805
805
  ...prevState,
806
806
  x,
@@ -1170,9 +1170,14 @@ Carousel.propTypes = {
1170
1170
  * An array of objects containing information on the thumbnails to be rendered as navigation panel
1171
1171
  */
1172
1172
  thumbnails: PropTypes.arrayOf(PropTypes.shape({
1173
+ /** Accessibility label for the thumbnail image, used by assistive technologies. */
1173
1174
  accessibilityLabel: PropTypes.string,
1175
+ /** Alternative text for the thumbnail image, displayed when the image cannot be rendered. */
1174
1176
  alt: PropTypes.string,
1175
- src: PropTypes.string
1177
+ /** When true, renders a play icon overlay on the thumbnail to indicate that the slide contains a video. */
1178
+ isVideo: PropTypes.bool,
1179
+ /** URL or path of the thumbnail image. When used with `isVideo`, this should be the video's poster/preview image. */
1180
+ src: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1176
1181
  })),
1177
1182
  /**
1178
1183
  * Minimal part of slide width must be swiped for changing index.