@telus-uds/components-base 0.0.2-prerelease.9 → 1.0.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 (282) hide show
  1. package/.eslintrc.js +9 -0
  2. package/.ultra.cache.json +1 -1
  3. package/CHANGELOG.md +32 -0
  4. package/README.md +4 -2
  5. package/__fixtures__/test-utils.js +25 -0
  6. package/__fixtures__/testTheme.js +4 -2
  7. package/__tests__/Button/ButtonGroup.test.jsx +4 -5
  8. package/__tests__/Checkbox/Checkbox.test.jsx +2 -2
  9. package/__tests__/Checkbox/CheckboxGroup.test.jsx +4 -5
  10. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
  11. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
  12. package/__tests__/Link/LinkBase.test.jsx +0 -14
  13. package/__tests__/Radio/Radio.test.jsx +2 -2
  14. package/__tests__/Radio/RadioGroup.test.jsx +4 -5
  15. package/__tests__/RadioCard/RadioCard.test.jsx +2 -2
  16. package/__tests__/RadioCard/RadioCardGroup.test.jsx +4 -5
  17. package/__tests__/Search/Search.test.jsx +9 -8
  18. package/__tests__/Select/Select.test.jsx +3 -2
  19. package/__tests__/Tabs/Tabs.test.jsx +1 -161
  20. package/__tests__/Tags/Tags.test.jsx +4 -5
  21. package/__tests__/TextInput/TextArea.test.jsx +3 -2
  22. package/__tests__/TextInput/TextInputBase.test.jsx +10 -5
  23. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
  24. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +9 -5
  25. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
  26. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
  27. package/__tests__/utils/children.test.jsx +128 -0
  28. package/__tests__/utils/input.test.js +1 -1
  29. package/__tests__/utils/semantics.test.jsx +43 -0
  30. package/lib/A11yText/index.js +10 -5
  31. package/lib/ActivityIndicator/Spinner.js +16 -13
  32. package/lib/ActivityIndicator/Spinner.native.js +12 -8
  33. package/lib/Box/Box.js +102 -8
  34. package/lib/Button/Button.js +9 -8
  35. package/lib/Button/ButtonBase.js +14 -7
  36. package/lib/Button/ButtonGroup.js +25 -10
  37. package/lib/Button/ButtonLink.js +10 -7
  38. package/lib/Card/Card.js +2 -0
  39. package/lib/Card/CardBase.js +12 -5
  40. package/lib/Card/PressableCardBase.js +12 -8
  41. package/lib/Checkbox/Checkbox.js +25 -14
  42. package/lib/Checkbox/CheckboxGroup.js +22 -12
  43. package/lib/Divider/Divider.js +12 -7
  44. package/lib/ExpandCollapse/Accordion.js +10 -4
  45. package/lib/ExpandCollapse/Control.js +12 -6
  46. package/lib/ExpandCollapse/ExpandCollapse.js +10 -5
  47. package/lib/ExpandCollapse/Panel.js +8 -7
  48. package/lib/Feedback/Feedback.js +10 -5
  49. package/lib/Fieldset/Fieldset.js +10 -5
  50. package/lib/Fieldset/FieldsetContainer.js +10 -5
  51. package/lib/Fieldset/FieldsetContainer.native.js +10 -5
  52. package/lib/Fieldset/Legend.js +10 -5
  53. package/lib/Fieldset/Legend.native.js +10 -5
  54. package/lib/FlexGrid/Col/Col.js +8 -5
  55. package/lib/FlexGrid/FlexGrid.js +31 -6
  56. package/lib/FlexGrid/Row/Row.js +12 -5
  57. package/lib/{Tabs → HorizontalScroll}/HorizontalScroll.js +5 -4
  58. package/lib/{Tabs/TabsScrollButton.js → HorizontalScroll/HorizontalScrollButton.js} +14 -8
  59. package/lib/{Tabs → HorizontalScroll}/ScrollViewEnd.js +0 -0
  60. package/lib/{Tabs → HorizontalScroll}/ScrollViewEnd.native.js +0 -0
  61. package/lib/{Tabs → HorizontalScroll}/dictionary.js +0 -0
  62. package/lib/HorizontalScroll/index.js +35 -0
  63. package/lib/{Tabs → HorizontalScroll}/itemPositions.js +0 -0
  64. package/lib/Icon/Icon.js +16 -9
  65. package/lib/Icon/IconText.js +8 -7
  66. package/lib/IconButton/IconButton.js +10 -5
  67. package/lib/InputLabel/InputLabel.js +33 -5
  68. package/lib/InputLabel/LabelContent.js +22 -12
  69. package/lib/InputLabel/LabelContent.native.js +23 -5
  70. package/lib/InputSupports/InputSupports.js +10 -5
  71. package/lib/Link/ChevronLink.js +12 -5
  72. package/lib/Link/InlinePressable.js +10 -4
  73. package/lib/Link/InlinePressable.native.js +5 -4
  74. package/lib/Link/Link.js +12 -5
  75. package/lib/Link/LinkBase.js +12 -5
  76. package/lib/Link/TextButton.js +10 -5
  77. package/lib/List/List.js +5 -4
  78. package/lib/List/ListItem.js +16 -8
  79. package/lib/Modal/Modal.js +10 -5
  80. package/lib/Notification/Notification.js +21 -5
  81. package/lib/Pagination/PageButton.js +21 -10
  82. package/lib/Pagination/Pagination.js +12 -7
  83. package/lib/Pagination/SideButton.js +12 -7
  84. package/lib/Pagination/usePagination.js +2 -2
  85. package/lib/Progress/Progress.js +10 -5
  86. package/lib/Progress/ProgressBar.js +21 -10
  87. package/lib/Progress/ProgressBarBackground.js +12 -8
  88. package/lib/Radio/Radio.js +14 -13
  89. package/lib/Radio/RadioButton.js +20 -9
  90. package/lib/Radio/RadioGroup.js +24 -13
  91. package/lib/RadioCard/RadioCard.js +14 -10
  92. package/lib/RadioCard/RadioCardGroup.js +13 -12
  93. package/lib/Search/Search.js +29 -18
  94. package/lib/Select/Picker.js +11 -6
  95. package/lib/Select/Picker.native.js +21 -6
  96. package/lib/Select/Select.js +46 -4
  97. package/lib/SideNav/Item.js +10 -5
  98. package/lib/SideNav/ItemsGroup.js +10 -5
  99. package/lib/SideNav/SideNav.js +11 -7
  100. package/lib/Skeleton/Skeleton.js +15 -15
  101. package/lib/Skeleton/skeletonWebAnimation.js +1 -1
  102. package/lib/Spacer/Spacer.js +19 -7
  103. package/lib/StackView/StackView.js +25 -7
  104. package/lib/StackView/StackWrap.js +16 -9
  105. package/lib/StackView/StackWrapBox.js +33 -8
  106. package/lib/StackView/StackWrapGap.js +16 -7
  107. package/lib/StackView/common.js +4 -2
  108. package/lib/StackView/getStackedContent.js +2 -2
  109. package/lib/StepTracker/StepTracker.js +10 -5
  110. package/lib/Tabs/Tabs.js +26 -19
  111. package/lib/Tabs/TabsItem.js +16 -12
  112. package/lib/Tags/Tags.js +27 -11
  113. package/lib/TextInput/TextArea.js +7 -5
  114. package/lib/TextInput/TextInput.js +12 -6
  115. package/lib/TextInput/TextInputBase.js +12 -8
  116. package/lib/ThemeProvider/ThemeProvider.js +14 -10
  117. package/lib/ThemeProvider/useSetTheme.js +6 -1
  118. package/lib/ThemeProvider/utils/styles.js +2 -2
  119. package/lib/ThemeProvider/utils/theme-tokens.js +39 -8
  120. package/lib/ToggleSwitch/ToggleSwitch.js +11 -6
  121. package/lib/Tooltip/Backdrop.js +10 -2
  122. package/lib/Tooltip/Tooltip.js +5 -4
  123. package/lib/Typography/Typography.js +40 -24
  124. package/lib/index.js +21 -0
  125. package/lib/utils/a11y/index.js +13 -0
  126. package/lib/utils/a11y/semantics.js +173 -0
  127. package/lib/utils/animation/useVerticalExpandAnimation.js +1 -1
  128. package/lib/utils/children.js +55 -8
  129. package/lib/utils/input.js +27 -17
  130. package/lib/utils/propTypes.js +82 -29
  131. package/lib/utils/useCopy.js +1 -1
  132. package/lib/utils/useHash.js +8 -4
  133. package/lib/utils/useSpacingScale.js +1 -3
  134. package/lib/utils/useUniqueId.js +1 -1
  135. package/package.json +9 -5
  136. package/release-context.json +4 -4
  137. package/src/A11yText/index.jsx +6 -4
  138. package/src/ActivityIndicator/Spinner.jsx +5 -3
  139. package/src/ActivityIndicator/Spinner.native.jsx +5 -3
  140. package/src/Box/Box.jsx +124 -39
  141. package/src/Button/Button.jsx +7 -4
  142. package/src/Button/ButtonBase.jsx +86 -77
  143. package/src/Button/ButtonGroup.jsx +81 -69
  144. package/src/Button/ButtonLink.jsx +18 -13
  145. package/src/Card/Card.jsx +2 -2
  146. package/src/Card/CardBase.jsx +5 -4
  147. package/src/Card/PressableCardBase.jsx +71 -64
  148. package/src/Checkbox/Checkbox.jsx +118 -108
  149. package/src/Checkbox/CheckboxGroup.jsx +72 -62
  150. package/src/Divider/Divider.jsx +7 -4
  151. package/src/ExpandCollapse/Accordion.jsx +3 -2
  152. package/src/ExpandCollapse/Control.jsx +40 -43
  153. package/src/ExpandCollapse/ExpandCollapse.jsx +26 -23
  154. package/src/ExpandCollapse/Panel.jsx +69 -63
  155. package/src/Feedback/Feedback.jsx +36 -33
  156. package/src/Fieldset/Fieldset.jsx +63 -56
  157. package/src/Fieldset/FieldsetContainer.jsx +14 -5
  158. package/src/Fieldset/FieldsetContainer.native.jsx +7 -4
  159. package/src/Fieldset/Legend.jsx +7 -2
  160. package/src/Fieldset/Legend.native.jsx +7 -2
  161. package/src/FlexGrid/Col/Col.jsx +139 -132
  162. package/src/FlexGrid/FlexGrid.jsx +79 -51
  163. package/src/FlexGrid/Row/Row.jsx +55 -48
  164. package/src/HorizontalScroll/HorizontalScroll.jsx +168 -0
  165. package/src/HorizontalScroll/HorizontalScrollButton.jsx +105 -0
  166. package/src/{Tabs → HorizontalScroll}/ScrollViewEnd.jsx +0 -0
  167. package/src/{Tabs → HorizontalScroll}/ScrollViewEnd.native.jsx +0 -0
  168. package/src/{Tabs → HorizontalScroll}/dictionary.js +0 -0
  169. package/src/HorizontalScroll/index.js +17 -0
  170. package/src/{Tabs → HorizontalScroll}/itemPositions.js +0 -0
  171. package/src/Icon/Icon.jsx +37 -35
  172. package/src/Icon/IconText.jsx +22 -17
  173. package/src/IconButton/IconButton.jsx +49 -42
  174. package/src/InputLabel/InputLabel.jsx +53 -38
  175. package/src/InputLabel/LabelContent.jsx +14 -6
  176. package/src/InputLabel/LabelContent.native.jsx +11 -2
  177. package/src/InputSupports/InputSupports.jsx +29 -34
  178. package/src/Link/ChevronLink.jsx +26 -16
  179. package/src/Link/InlinePressable.jsx +5 -3
  180. package/src/Link/InlinePressable.native.jsx +5 -3
  181. package/src/Link/Link.jsx +22 -16
  182. package/src/Link/LinkBase.jsx +67 -58
  183. package/src/Link/TextButton.jsx +30 -23
  184. package/src/List/List.jsx +5 -4
  185. package/src/List/ListItem.jsx +77 -82
  186. package/src/Modal/Modal.jsx +9 -4
  187. package/src/Notification/Notification.jsx +58 -43
  188. package/src/Pagination/PageButton.jsx +42 -35
  189. package/src/Pagination/Pagination.jsx +88 -92
  190. package/src/Pagination/SideButton.jsx +44 -41
  191. package/src/Progress/Progress.jsx +5 -4
  192. package/src/Progress/ProgressBar.jsx +42 -29
  193. package/src/Progress/ProgressBarBackground.jsx +5 -3
  194. package/src/Radio/Radio.jsx +85 -78
  195. package/src/Radio/RadioButton.jsx +54 -43
  196. package/src/Radio/RadioGroup.jsx +74 -63
  197. package/src/RadioCard/RadioCard.jsx +75 -68
  198. package/src/RadioCard/RadioCardGroup.jsx +82 -75
  199. package/src/Search/Search.jsx +127 -106
  200. package/src/Select/Picker.jsx +49 -42
  201. package/src/Select/Picker.native.jsx +56 -49
  202. package/src/Select/Select.jsx +115 -72
  203. package/src/SideNav/Item.jsx +53 -46
  204. package/src/SideNav/ItemsGroup.jsx +50 -43
  205. package/src/SideNav/SideNav.jsx +68 -60
  206. package/src/Skeleton/Skeleton.jsx +9 -13
  207. package/src/Spacer/Spacer.jsx +11 -4
  208. package/src/StackView/StackView.jsx +46 -23
  209. package/src/StackView/StackWrap.jsx +7 -6
  210. package/src/StackView/StackWrapBox.jsx +61 -28
  211. package/src/StackView/StackWrapGap.jsx +46 -24
  212. package/src/StackView/common.jsx +3 -2
  213. package/src/StepTracker/StepTracker.jsx +73 -62
  214. package/src/Tabs/Tabs.jsx +70 -62
  215. package/src/Tabs/TabsItem.jsx +111 -103
  216. package/src/Tags/Tags.jsx +114 -102
  217. package/src/TextInput/TextArea.jsx +5 -4
  218. package/src/TextInput/TextInput.jsx +5 -4
  219. package/src/TextInput/TextInputBase.jsx +84 -77
  220. package/src/ThemeProvider/ThemeProvider.jsx +11 -7
  221. package/src/ThemeProvider/useSetTheme.js +4 -0
  222. package/src/ThemeProvider/utils/theme-tokens.js +28 -0
  223. package/src/ToggleSwitch/ToggleSwitch.jsx +49 -50
  224. package/src/Tooltip/Tooltip.jsx +134 -130
  225. package/src/Typography/Typography.jsx +67 -44
  226. package/src/index.js +2 -0
  227. package/src/utils/a11y/index.js +1 -0
  228. package/src/utils/a11y/semantics.js +162 -0
  229. package/src/utils/children.jsx +60 -7
  230. package/src/utils/input.js +20 -17
  231. package/src/utils/propTypes.js +101 -39
  232. package/src/utils/useCopy.js +1 -1
  233. package/src/utils/useHash.js +8 -3
  234. package/stories/A11yText/A11yText.stories.jsx +2 -2
  235. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +1 -1
  236. package/stories/Box/Box.stories.jsx +1 -1
  237. package/stories/Button/Button.stories.jsx +2 -2
  238. package/stories/Button/ButtonGroup.stories.jsx +1 -1
  239. package/stories/Button/ButtonLink.stories.jsx +1 -1
  240. package/stories/Card/Card.stories.jsx +1 -1
  241. package/stories/Checkbox/Checkbox.stories.jsx +1 -1
  242. package/stories/Divider/Divider.stories.jsx +1 -1
  243. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
  244. package/stories/Feedback/Feedback.stories.jsx +1 -1
  245. package/stories/FlexGrid/01 FlexGrid.stories.jsx +1 -1
  246. package/stories/FlexGrid/02 Row.stories.jsx +1 -1
  247. package/stories/FlexGrid/03 Col.stories.jsx +1 -1
  248. package/stories/Icon/Icon.stories.jsx +1 -1
  249. package/stories/IconButton/IconButton.stories.jsx +1 -1
  250. package/stories/InputLabel/InputLabel.stories.jsx +1 -1
  251. package/stories/Link/ChevronLink.stories.jsx +1 -1
  252. package/stories/Link/Link.stories.jsx +1 -1
  253. package/stories/Link/TextButton.stories.jsx +1 -1
  254. package/stories/List/List.stories.jsx +1 -1
  255. package/stories/Modal/Modal.stories.jsx +1 -1
  256. package/stories/Notification/Notification.stories.jsx +1 -1
  257. package/stories/Pagination/Pagination.stories.jsx +1 -1
  258. package/stories/Progress/Progress.stories.jsx +1 -1
  259. package/stories/Radio/Radio.stories.jsx +1 -1
  260. package/stories/RadioCard/RadioCard.stories.jsx +1 -1
  261. package/stories/Search/Search.stories.jsx +1 -1
  262. package/stories/Select/Select.stories.jsx +1 -1
  263. package/stories/SideNav/SideNav.stories.jsx +1 -1
  264. package/stories/SideNav/SideNavItem.stories.jsx +1 -1
  265. package/stories/SideNav/SideNavItemsGroup.stories.jsx +1 -1
  266. package/stories/Skeleton/Skeleton.stories.jsx +2 -2
  267. package/stories/Spacer/Spacer.stories.jsx +1 -1
  268. package/stories/StackView/StackView.stories.jsx +1 -1
  269. package/stories/StackView/StackWrap.stories.jsx +1 -1
  270. package/stories/StepTracker/StepTracker.stories.jsx +1 -1
  271. package/stories/Tabs/Tabs.stories.jsx +1 -1
  272. package/stories/Tags/Tags.stories.jsx +1 -1
  273. package/stories/TextInput/TextArea.stories.jsx +1 -1
  274. package/stories/TextInput/TextInput.stories.jsx +1 -1
  275. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +1 -1
  276. package/stories/Tooltip/Tooltip.stories.jsx +1 -1
  277. package/stories/TooltipButton/TooltipButton.stories.jsx +1 -1
  278. package/stories/Typography/Typography.stories.jsx +1 -1
  279. package/stories/platform-supports.jsx +1 -1
  280. package/stories/supports.jsx +2 -2
  281. package/src/Tabs/HorizontalScroll.jsx +0 -165
  282. package/src/Tabs/TabsScrollButton.jsx +0 -100
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
@@ -25,6 +25,10 @@ var _jsxRuntime = require("react/jsx-runtime");
25
25
 
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
28
32
  const offsetSides = {
29
33
  row: 'marginBottom',
30
34
  column: 'marginRight'
@@ -50,22 +54,25 @@ const spaceSides = {
50
54
  * between the container and the stacked children, and requires a negative margin on the container.
51
55
  */
52
56
 
53
- const StackWrapBox = ({
57
+ const StackWrapBox = /*#__PURE__*/(0, _react.forwardRef)(({
54
58
  space = 1,
55
59
  gap = space,
56
60
  direction: directionProp = 'row',
57
61
  children,
58
62
  tokens,
59
63
  variant,
64
+ tag,
65
+ accessibilityRole,
60
66
  ...rest
61
- }) => {
67
+ }, ref) => {
62
68
  const viewport = (0, _ViewportProvider.useViewport)();
63
69
  const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
64
70
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
65
71
  viewport
66
72
  });
67
73
  const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
68
- const props = { ..._utils.a11yProps.select(rest),
74
+ const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
75
+ ..._utils.a11yProps.select(rest),
69
76
  ..._utils.viewProps.select(rest)
70
77
  }; // Mimic CSS `gap` using box spacing on the side after a wrapped row then offsetting it on the last row.
71
78
 
@@ -82,13 +89,16 @@ const StackWrapBox = ({
82
89
  space: 0,
83
90
  box: boxProps
84
91
  });
85
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, { ...props,
92
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
93
+ ref: ref,
94
+ ...props,
86
95
  style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], offsetStyle],
87
96
  children: content
88
97
  });
89
- };
90
-
98
+ });
99
+ StackWrapBox.displayName = 'StackWrapBox';
91
100
  StackWrapBox.propTypes = { ..._utils.a11yProps.propTypes,
101
+ tokens: (0, _utils.getTokensPropType)('StackView'),
92
102
 
93
103
  /**
94
104
  * Sets the `flexDirection` of the container
@@ -96,12 +106,27 @@ StackWrapBox.propTypes = { ..._utils.a11yProps.propTypes,
96
106
  direction: _utils.responsiveProps.getTypeOptionallyByViewport(_propTypes.default.oneOf(['column', 'row', 'row-reverse', 'column-reverse'])),
97
107
 
98
108
  /**
99
- * The size of the spacer according to the theme's spacing scale.
109
+ * The size of the space between items according to the theme's spacing scale.
100
110
  * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
101
111
  * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
102
112
  */
103
113
  space: _utils.spacingProps.types.spacingValue,
104
114
 
115
+ /**
116
+ * The size of the space between lines of content, according to the theme's spacing scale. By default, matches `space`.
117
+ * Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
118
+ * or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
119
+ */
120
+ gap: _utils.spacingProps.types.spacingValue,
121
+
122
+ /**
123
+ * Optional semantic HTML tag, to apply to the container on web. Does not change styling.
124
+ *
125
+ * In native apps, if a header tag is provided ("h1", "h2" etc) and accessibilityRole prop
126
+ * is not defined, the accessibilityRole will default to "heading".
127
+ */
128
+ tag: _propTypes.default.oneOf(_utils.layoutTags),
129
+
105
130
  /**
106
131
  * A StackWrap may take any children, but will have no effect if it is only passed one child or is passed children
107
132
  * wrapped in a component. If necessary, children may be wrapped in one React Fragment.
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
11
11
 
@@ -25,6 +25,10 @@ var _jsxRuntime = require("react/jsx-runtime");
25
25
 
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
28
32
  /**
29
33
  * The primary implementation of StackWrap.
30
34
  *
@@ -35,21 +39,24 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
35
39
  * - The `space` between items is the same as the `gap` between wrapped rows (this is the
36
40
  * default if `gap` prop is undefined)
37
41
  */
38
- const StackWrapGap = ({
42
+ const StackWrapGap = /*#__PURE__*/(0, _react.forwardRef)(({
39
43
  space = 1,
40
44
  tokens,
41
45
  variant,
42
46
  direction: directionProp = 'row',
43
47
  children,
48
+ tag,
49
+ accessibilityRole,
44
50
  ...rest
45
- }) => {
51
+ }, ref) => {
46
52
  const viewport = (0, _ViewportProvider.useViewport)();
47
53
  const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
48
54
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
49
55
  viewport
50
56
  });
51
57
  const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
52
- const props = { ..._utils.a11yProps.select(rest),
58
+ const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
59
+ ..._utils.a11yProps.select(rest),
53
60
  ..._utils.viewProps.select(rest)
54
61
  };
55
62
  const size = (0, _utils.useSpacingScale)(space);
@@ -60,12 +67,14 @@ const StackWrapGap = ({
60
67
  direction,
61
68
  space: 0
62
69
  });
63
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, { ...props,
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
71
+ ref: ref,
72
+ ...props,
64
73
  style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], gapStyle],
65
74
  children: content
66
75
  });
67
- };
68
-
76
+ });
77
+ StackWrapGap.displayName = 'StackWrapGap';
69
78
  StackWrapGap.propTypes = _StackWrapBox.default.propTypes;
70
79
  var _default = StackWrapGap;
71
80
  exports.default = _default;
@@ -12,11 +12,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
12
12
  const selectFlexStyles = ({
13
13
  alignItems,
14
14
  justifyContent,
15
- flexGrow
15
+ flexGrow,
16
+ flexShrink
16
17
  }) => ({
17
18
  alignItems,
18
19
  justifyContent,
19
- flexGrow
20
+ flexGrow,
21
+ flexShrink
20
22
  });
21
23
 
22
24
  exports.selectFlexStyles = selectFlexStyles;
@@ -64,7 +64,7 @@ const getStackedContent = (children, {
64
64
  const validChildren = _react.Children.toArray(topLevelChildren).filter(Boolean);
65
65
 
66
66
  const content = validChildren.reduce((newChildren, child, index) => {
67
- const boxID = "Stack-Box-".concat(index);
67
+ const boxID = `Stack-Box-${index}`;
68
68
  const item = box ?
69
69
  /*#__PURE__*/
70
70
  // If wrapped in Box, that Box needs a key.
@@ -74,7 +74,7 @@ const getStackedContent = (children, {
74
74
  testID: boxID
75
75
  }, child) : child;
76
76
  if (!index || !space && !divider) return [...newChildren, item];
77
- const testID = "Stack-".concat(divider ? 'Divider' : 'Spacer', "-").concat(index);
77
+ const testID = `Stack-${divider ? 'Divider' : 'Spacer'}-${index}`;
78
78
  const commonProps = {
79
79
  testID,
80
80
  key: testID,
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
@@ -35,6 +35,10 @@ var _jsxRuntime = require("react/jsx-runtime");
35
35
 
36
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
37
 
38
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
+
40
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
+
38
42
  const selectContainerStyles = ({
39
43
  containerPaddingBottom,
40
44
  containerPaddingLeft,
@@ -100,7 +104,7 @@ const selectStepTrackerLabelStyles = ({
100
104
  */
101
105
 
102
106
 
103
- const StepTracker = ({
107
+ const StepTracker = /*#__PURE__*/(0, _react.forwardRef)(({
104
108
  current = 0,
105
109
  copy = 'en',
106
110
  dictionary = _dictionary.default,
@@ -108,7 +112,7 @@ const StepTracker = ({
108
112
  tokens,
109
113
  variant,
110
114
  ...rest
111
- }) => {
115
+ }, ref) => {
112
116
  const viewport = (0, _ViewportProvider.useViewport)();
113
117
  const {
114
118
  showStepTrackerLabel,
@@ -135,6 +139,7 @@ const StepTracker = ({
135
139
  ..._propTypes2.a11yProps.select(rest)
136
140
  };
137
141
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
142
+ ref: ref,
138
143
  style: selectContainerStyles(themeTokens),
139
144
  ...accessibilityProps,
140
145
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
@@ -160,8 +165,8 @@ const StepTracker = ({
160
165
  })]
161
166
  })
162
167
  });
163
- };
164
-
168
+ });
169
+ StepTracker.displayName = 'StepTracker';
165
170
  StepTracker.propTypes = {
166
171
  current: _propTypes.default.number,
167
172
  copy: _propTypes.default.oneOf(['en', 'fr']),
package/lib/Tabs/Tabs.js CHANGED
@@ -9,20 +9,18 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
+ var _airbnbPropTypes = _interopRequireDefault(require("airbnb-prop-types"));
13
+
12
14
  var _ThemeProvider = require("../ThemeProvider");
13
15
 
14
16
  var _StackView = _interopRequireDefault(require("../StackView"));
15
17
 
16
18
  var _utils = require("../utils");
17
19
 
18
- var _HorizontalScroll = _interopRequireWildcard(require("./HorizontalScroll"));
20
+ var _HorizontalScroll = _interopRequireWildcard(require("../HorizontalScroll"));
19
21
 
20
22
  var _TabsItem = _interopRequireDefault(require("./TabsItem"));
21
23
 
22
- var _TabsScrollButton = _interopRequireDefault(require("./TabsScrollButton"));
23
-
24
- var _itemPositions = require("./itemPositions");
25
-
26
24
  var _jsxRuntime = require("react/jsx-runtime");
27
25
 
28
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -31,11 +29,16 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
29
 
32
30
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
31
 
32
+ const {
33
+ selectHorizontalScrollTokens,
34
+ useItemPositions
35
+ } = _HorizontalScroll.horizontalScrollUtils;
34
36
  /**
35
37
  * Tabs renders a horizontally-scrolling menu of selectable buttons which may link
36
38
  * to a page or control what content is displayed on this page.
37
39
  */
38
- const Tabs = ({
40
+
41
+ const Tabs = /*#__PURE__*/(0, _react.forwardRef)(({
39
42
  tokens,
40
43
  itemTokens,
41
44
  scrollButtonTokens,
@@ -44,7 +47,7 @@ const Tabs = ({
44
47
  initialValue,
45
48
  onChange,
46
49
  items = []
47
- }) => {
50
+ }, ref) => {
48
51
  const {
49
52
  space,
50
53
  ...themeTokens
@@ -57,18 +60,19 @@ const Tabs = ({
57
60
  initialValue,
58
61
  onChange
59
62
  });
60
- const [itemPositions, isPositioningReady] = (0, _itemPositions.useItemPositions)();
61
- (0, _utils.useHash)((0, _react.useCallback)(hash => {
63
+ const [itemPositions, isPositioningReady] = useItemPositions();
64
+ (0, _utils.useHash)((0, _react.useCallback)((hash, event) => {
62
65
  const hashItem = hash && items.find(({
63
66
  href
64
67
  }) => hash === href);
65
68
  const hashId = hashItem && (hashItem.id || hashItem.label);
66
- if (hashId) setTimeout(setValue(hashId), 500);
69
+ if (hashId) setTimeout(setValue(hashId, event), 500);
67
70
  }, [items, setValue]), isPositioningReady);
68
71
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HorizontalScroll.default, {
69
- ScrollButton: _TabsScrollButton.default,
72
+ ref: ref,
73
+ ScrollButton: _HorizontalScroll.HorizontalScrollButton,
70
74
  itemPositions: itemPositions,
71
- tokens: (0, _HorizontalScroll.selectHorizontalScrollTokens)(themeTokens),
75
+ tokens: selectHorizontalScrollTokens(themeTokens),
72
76
  scrollButtonTokens: scrollButtonTokens,
73
77
  accessibilityRole: "tablist",
74
78
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.default, {
@@ -77,14 +81,16 @@ const Tabs = ({
77
81
  children: items.map(({
78
82
  href,
79
83
  label,
80
- id
84
+ id,
85
+ ref: itemRef
81
86
  }, index) => {
82
- const itemId = id !== null && id !== void 0 ? id : label;
87
+ const itemId = id ?? label;
83
88
  const isSelected = Boolean(currentValue && currentValue === itemId);
84
89
 
85
- const handlePress = () => setValue(itemId);
90
+ const handlePress = event => setValue(itemId, event);
86
91
 
87
92
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabsItem.default, {
93
+ ref: itemRef,
88
94
  href: href,
89
95
  variant: variant,
90
96
  tokens: itemTokens,
@@ -97,20 +103,21 @@ const Tabs = ({
97
103
  })
98
104
  })
99
105
  });
100
- };
101
-
106
+ });
107
+ Tabs.displayName = 'Tabs';
102
108
  Tabs.propTypes = {
103
109
  items: _propTypes.default.arrayOf(_propTypes.default.shape({
104
110
  href: _propTypes.default.string,
105
111
  label: _propTypes.default.string,
106
- id: _propTypes.default.string
112
+ id: _propTypes.default.string,
113
+ ref: _airbnbPropTypes.default.ref()
107
114
  })),
108
115
  value: _propTypes.default.string,
109
116
  initialValue: _propTypes.default.string,
110
117
  onChange: _propTypes.default.func,
111
118
  tokens: (0, _utils.getTokensPropType)('Tabs'),
112
119
  itemTokens: (0, _utils.getTokensPropType)('TabsItem'),
113
- scrollButtonTokens: (0, _utils.getTokensPropType)('TabsScrollButton'),
120
+ scrollButtonTokens: (0, _utils.getTokensPropType)('HorizontalScrollButton'),
114
121
  variant: _utils.variantProp.propType
115
122
  };
116
123
  var _default = Tabs;
@@ -19,15 +19,13 @@ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Te
19
19
 
20
20
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
21
21
 
22
- var _rn = _interopRequireDefault(require("@telus-uds/system-themes/src/tokens/rn"));
23
-
24
22
  var _ThemeProvider = require("../ThemeProvider");
25
23
 
26
24
  var _utils = require("../utils");
27
25
 
28
26
  var _Spacer = _interopRequireDefault(require("../Spacer"));
29
27
 
30
- var _itemPositions = require("./itemPositions");
28
+ var _HorizontalScroll = require("../HorizontalScroll");
31
29
 
32
30
  var _jsxRuntime = require("react/jsx-runtime");
33
31
 
@@ -37,6 +35,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
37
35
 
38
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
37
 
38
+ const {
39
+ itemPositionsPropType,
40
+ getItemPositionLayoutHandler
41
+ } = _HorizontalScroll.horizontalScrollUtils;
42
+
40
43
  const selectHighlightBarStyles = ({
41
44
  highlightColor,
42
45
  highlightBarBorderRadius = 0,
@@ -66,9 +69,9 @@ const selectHighlightTriangleStyles = ({
66
69
  width: 0,
67
70
  borderWidth: highlightTriangleSize,
68
71
  borderTopColor: highlightColor,
69
- borderBottomColor: _rn.default.color.transparent,
70
- borderLeftColor: _rn.default.color.transparent,
71
- borderRightColor: _rn.default.color.transparent
72
+ borderBottomColor: 'transparent',
73
+ borderLeftColor: 'transparent',
74
+ borderRightColor: 'transparent'
72
75
  }
73
76
  });
74
77
 
@@ -95,7 +98,7 @@ const selectContainerStyles = ({
95
98
  */
96
99
 
97
100
 
98
- const TabsItem = ({
101
+ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
99
102
  onPress,
100
103
  href,
101
104
  variant,
@@ -112,7 +115,7 @@ const TabsItem = ({
112
115
  selected
113
116
  },
114
117
  ...rest
115
- }) => {
118
+ }, ref) => {
116
119
  const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('TabsItem', tokens, variant);
117
120
 
118
121
  const resolveTokens = pressableState => (0, _utils.resolvePressableTokens)(getTokens, pressableState, {
@@ -130,7 +133,7 @@ const TabsItem = ({
130
133
  }];
131
134
  };
132
135
 
133
- const handleLayout = (0, _itemPositions.getItemPositionLayoutHandler)(itemPositions.positions, index); // On press, update the selection, call any press handler, and open any href in platform-appropriate way
136
+ const handleLayout = getItemPositionLayoutHandler(itemPositions.positions, index); // On press, update the selection, call any press handler, and open any href in platform-appropriate way
134
137
 
135
138
  const openHref = href && _utils.linkProps.handleHref({
136
139
  href
@@ -160,6 +163,7 @@ const TabsItem = ({
160
163
 
161
164
  }, [selected, index, itemPositions]);
162
165
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
166
+ ref: ref,
163
167
  onPress: handlePress,
164
168
  href: href,
165
169
  style: getPressableStyle,
@@ -200,8 +204,8 @@ const TabsItem = ({
200
204
  });
201
205
  }
202
206
  });
203
- };
204
-
207
+ });
208
+ TabsItem.displayName = 'TabsItem';
205
209
  TabsItem.propTypes = { ..._utils.a11yProps.propTypes,
206
210
  tokens: (0, _utils.getTokensPropType)('TabsItem'),
207
211
  variant: _utils.variantProp.propType,
@@ -209,7 +213,7 @@ TabsItem.propTypes = { ..._utils.a11yProps.propTypes,
209
213
  href: _propTypes.default.string,
210
214
  index: _propTypes.default.number,
211
215
  selected: _propTypes.default.bool,
212
- itemPositions: _itemPositions.itemPositionsPropType,
216
+ itemPositions: itemPositionsPropType,
213
217
  children: _propTypes.default.string
214
218
  };
215
219
 
package/lib/Tags/Tags.js CHANGED
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
+ var _airbnbPropTypes = _interopRequireDefault(require("airbnb-prop-types"));
13
+
12
14
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
13
15
 
14
16
  var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
@@ -35,6 +37,10 @@ var _jsxRuntime = require("react/jsx-runtime");
35
37
 
36
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
39
 
40
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
+
42
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
+
38
44
  const selectIconTextTokens = ({
39
45
  icon,
40
46
  iconPosition,
@@ -71,7 +77,7 @@ const selectIconTextTokens = ({
71
77
  }
72
78
  });
73
79
 
74
- const Tags = ({
80
+ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
75
81
  variant,
76
82
  tokens,
77
83
  items = [],
@@ -86,7 +92,7 @@ const Tags = ({
86
92
  default: 'none'
87
93
  }),
88
94
  ...rest
89
- }) => {
95
+ }, ref) => {
90
96
  const viewport = (0, _ViewportProvider.useViewport)();
91
97
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Tags', tokens, variant, {
92
98
  viewport
@@ -117,14 +123,17 @@ const Tags = ({
117
123
  });
118
124
 
119
125
  const itemA11yRole = 'checkbox';
120
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, { ...a11y,
126
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, {
127
+ ref: ref,
128
+ ...a11y,
121
129
  space: space,
122
130
  direction: direction,
123
131
  tokens: stackTokens,
124
132
  children: items.map(({
125
133
  label,
126
134
  id = label,
127
- accessibilityLabel
135
+ accessibilityLabel,
136
+ ref: itemRef
128
137
  }, index) => {
129
138
  const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
130
139
 
@@ -134,9 +143,9 @@ const Tags = ({
134
143
  currentValues
135
144
  }]);
136
145
 
137
- const handlePress = () => {
146
+ const handlePress = event => {
138
147
  if (pressHandlers.onPress) pressHandlers.onPress();
139
- toggleOneValue(id);
148
+ toggleOneValue(id, event);
140
149
  };
141
150
 
142
151
  const itemA11y = {
@@ -147,7 +156,9 @@ const Tags = ({
147
156
  accessibilityLabel,
148
157
  ..._propTypes2.a11yProps.getPositionInSet(items.length, index)
149
158
  };
150
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, { ...pressHandlers,
159
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
160
+ ref: itemRef,
161
+ ...pressHandlers,
151
162
  onPress: handlePress,
152
163
  tokens: getButtonTokens,
153
164
  selected: isSelected,
@@ -189,8 +200,8 @@ const Tags = ({
189
200
  }, id);
190
201
  })
191
202
  });
192
- };
193
-
203
+ });
204
+ Tags.displayName = 'Tags';
194
205
  Tags.propTypes = { ..._propTypes2.a11yProps.propTypes,
195
206
  ..._propTypes2.pressProps.propTypes,
196
207
  tokens: (0, _propTypes2.getTokensPropType)('Tags'),
@@ -222,7 +233,12 @@ Tags.propTypes = { ..._propTypes2.a11yProps.propTypes,
222
233
  * which will be used in code and passed to any onChange function.
223
234
  * If not provided, the label is used.
224
235
  */
225
- id: _propTypes.default.string
236
+ id: _propTypes.default.string,
237
+
238
+ /**
239
+ * An optional ref for one individual Tag button in the tags
240
+ */
241
+ ref: _airbnbPropTypes.default.ref()
226
242
  })),
227
243
 
228
244
  /**
@@ -53,11 +53,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
53
53
  * or an indicator that the field is optional.
54
54
  * It is a more usable and accessible option than the HTML `placeholder` attribute.
55
55
  */
56
- function TextArea({
56
+ const TextArea = /*#__PURE__*/(0, _react.forwardRef)(({
57
57
  tokens,
58
58
  variant = {},
59
59
  ...remainingProps
60
- }) {
60
+ }, ref) => {
61
61
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('TextArea', tokens, variant);
62
62
  const [inputHeight, setInputHeight] = (0, _react.useState)(); // adjust the text area's height as new lines are added to the content
63
63
 
@@ -92,13 +92,15 @@ function TextArea({
92
92
  children: ({
93
93
  a11yProps,
94
94
  inputId
95
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, { ...inputProps,
95
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
96
+ ref: ref,
97
+ ...inputProps,
96
98
  ...a11yProps,
97
99
  nativeID: inputId
98
100
  })
99
101
  });
100
- }
101
-
102
+ });
103
+ TextArea.displayName = 'TextArea';
102
104
  TextArea.propTypes = { ..._propTypes.default.types,
103
105
  ..._propTypes2.default,
104
106
  tokens: (0, _utils.getTokensPropType)('TextArea', 'TextInput'),
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _utils = require("../utils");
11
11
 
@@ -21,6 +21,10 @@ var _jsxRuntime = require("react/jsx-runtime");
21
21
 
22
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
23
 
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
24
28
  /**
25
29
  * A basic text input component. Use in forms or individually to receive user's input.
26
30
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -39,11 +43,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
39
43
  * supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
40
44
  * their implementation on the web.
41
45
  */
42
- function TextInput({
46
+ const TextInput = /*#__PURE__*/(0, _react.forwardRef)(({
43
47
  tokens,
44
48
  variant = {},
45
49
  ...remainingProps
46
- }) {
50
+ }, ref) => {
47
51
  const {
48
52
  props: supportsProps,
49
53
  rest
@@ -59,13 +63,15 @@ function TextInput({
59
63
  children: ({
60
64
  a11yProps,
61
65
  inputId
62
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, { ...inputProps,
66
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
67
+ ref: ref,
68
+ ...inputProps,
63
69
  ...a11yProps,
64
70
  nativeID: inputId
65
71
  })
66
72
  });
67
- }
68
-
73
+ });
74
+ TextInput.displayName = 'TextInput';
69
75
  TextInput.propTypes = { ..._propTypes.default.types,
70
76
  ..._propTypes2.default,
71
77
  tokens: (0, _utils.getTokensPropType)('TextInput'),