@telus-uds/components-base 1.84.0 → 1.85.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 (471) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/lib/A11yInfoProvider/index.js +8 -10
  3. package/lib/A11yText/index.js +2 -4
  4. package/lib/ActivityIndicator/Spinner.js +3 -4
  5. package/lib/ActivityIndicator/Spinner.native.js +2 -4
  6. package/lib/Autocomplete/Autocomplete.js +13 -17
  7. package/lib/Autocomplete/Loading.js +4 -2
  8. package/lib/Autocomplete/Suggestions.js +2 -4
  9. package/lib/Badge/Badge.js +2 -4
  10. package/lib/BaseProvider/HydrationContext.js +5 -7
  11. package/lib/Box/Box.js +5 -7
  12. package/lib/Button/Button.js +3 -3
  13. package/lib/Button/ButtonBase.js +2 -7
  14. package/lib/Button/ButtonDropdown.js +3 -3
  15. package/lib/Button/ButtonGroup.js +2 -4
  16. package/lib/Button/ButtonLink.js +3 -3
  17. package/lib/Card/Card.js +159 -16
  18. package/lib/Card/CardBase.js +2 -4
  19. package/lib/Card/PressableCardBase.js +3 -5
  20. package/lib/CardGroup/CardGroup.js +220 -0
  21. package/lib/CardGroup/dictionary.js +15 -0
  22. package/lib/CardGroup/index.js +10 -0
  23. package/lib/Carousel/Carousel.js +67 -57
  24. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -4
  25. package/lib/Carousel/CarouselItem/CarouselItem.js +3 -2
  26. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
  27. package/lib/Carousel/CarouselTabs/CarouselTabs.js +2 -4
  28. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -8
  29. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -5
  30. package/lib/Carousel/CarouselThumbnail.js +4 -2
  31. package/lib/Carousel/CarouselThumbnailNavigation.js +2 -4
  32. package/lib/Checkbox/Checkbox.js +2 -4
  33. package/lib/Checkbox/CheckboxButton.js +3 -5
  34. package/lib/Checkbox/CheckboxGroup.js +2 -4
  35. package/lib/Checkbox/CheckboxInput.js +4 -14
  36. package/lib/CheckboxCard/CheckboxCard.js +3 -3
  37. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +3 -3
  38. package/lib/ColourToggle/ColourBubble.js +5 -6
  39. package/lib/ColourToggle/ColourToggle.js +3 -5
  40. package/lib/Divider/Divider.js +2 -4
  41. package/lib/ExpandCollapse/Accordion.js +2 -4
  42. package/lib/ExpandCollapse/Control.js +2 -4
  43. package/lib/ExpandCollapse/ExpandCollapse.js +2 -4
  44. package/lib/ExpandCollapse/Panel.js +3 -5
  45. package/lib/Feedback/Feedback.js +2 -4
  46. package/lib/Fieldset/Fieldset.js +2 -4
  47. package/lib/Fieldset/FieldsetContainer.js +2 -4
  48. package/lib/Fieldset/FieldsetContainer.native.js +2 -4
  49. package/lib/Fieldset/Legend.js +2 -4
  50. package/lib/Fieldset/Legend.native.js +2 -4
  51. package/lib/FlexGrid/Col/Col.js +3 -5
  52. package/lib/FlexGrid/FlexGrid.js +2 -4
  53. package/lib/FlexGrid/Row/Row.js +2 -4
  54. package/lib/Footnote/Footnote.js +9 -9
  55. package/lib/Footnote/FootnoteLink.js +5 -3
  56. package/lib/HorizontalScroll/HorizontalScroll.js +8 -10
  57. package/lib/HorizontalScroll/HorizontalScrollButton.js +2 -4
  58. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -10
  59. package/lib/HorizontalScroll/ScrollViewEnd.native.js +2 -4
  60. package/lib/Icon/Icon.js +2 -4
  61. package/lib/Icon/IconText.js +3 -3
  62. package/lib/IconButton/IconButton.js +2 -4
  63. package/lib/InputLabel/InputLabel.js +2 -4
  64. package/lib/InputLabel/LabelContent.js +2 -4
  65. package/lib/InputLabel/LabelContent.native.js +2 -4
  66. package/lib/InputSupports/InputSupports.js +4 -5
  67. package/lib/Link/ChevronLink.js +2 -4
  68. package/lib/Link/InlinePressable.js +8 -7
  69. package/lib/Link/InlinePressable.native.js +10 -8
  70. package/lib/Link/Link.js +2 -4
  71. package/lib/Link/LinkBase.js +2 -4
  72. package/lib/Link/TextButton.js +2 -4
  73. package/lib/List/List.js +13 -11
  74. package/lib/List/ListItem.js +2 -4
  75. package/lib/List/ListItemBase.js +6 -10
  76. package/lib/List/ListItemContent.js +4 -2
  77. package/lib/List/ListItemMark.js +4 -2
  78. package/lib/List/PressableListItemBase.js +2 -4
  79. package/lib/Listbox/GroupControl.js +4 -2
  80. package/lib/Listbox/Listbox.js +6 -6
  81. package/lib/Listbox/ListboxContext.js +3 -4
  82. package/lib/Listbox/ListboxGroup.js +2 -4
  83. package/lib/Listbox/ListboxItem.js +2 -6
  84. package/lib/Listbox/ListboxOverlay.js +2 -6
  85. package/lib/Listbox/PressableItem.js +2 -6
  86. package/lib/Modal/Modal.js +5 -7
  87. package/lib/Modal/ModalContent.js +7 -7
  88. package/lib/Modal/WebModal.js +16 -9
  89. package/lib/MultiSelectFilter/ModalOverlay.js +2 -4
  90. package/lib/MultiSelectFilter/MultiSelectFilter.js +10 -10
  91. package/lib/Notification/Notification.js +5 -7
  92. package/lib/OrderedList/Item.js +4 -10
  93. package/lib/OrderedList/ItemBase.js +2 -4
  94. package/lib/OrderedList/OrderedList.js +5 -13
  95. package/lib/OrderedList/OrderedListBase.js +2 -4
  96. package/lib/Pagination/PageButton.js +1 -1
  97. package/lib/Pagination/Pagination.js +1 -1
  98. package/lib/Pagination/SideButton.js +2 -4
  99. package/lib/PriceLockup/PriceLockup.js +5 -5
  100. package/lib/ProductCard/ProductCard.js +3 -2
  101. package/lib/ProductCardGroup/ProductCardGroup.js +5 -6
  102. package/lib/Progress/Progress.js +2 -4
  103. package/lib/Progress/ProgressBar.js +2 -4
  104. package/lib/Progress/ProgressBarBackground.js +2 -4
  105. package/lib/QuickLinks/QuickLinks.js +2 -4
  106. package/lib/QuickLinks/QuickLinksCard.js +4 -2
  107. package/lib/QuickLinks/QuickLinksItem.js +2 -4
  108. package/lib/QuickLinksFeature/QuickLinksFeature.js +9 -7
  109. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +10 -12
  110. package/lib/Radio/Radio.js +3 -3
  111. package/lib/Radio/RadioButton.js +61 -15
  112. package/lib/Radio/RadioGroup.js +2 -4
  113. package/lib/Radio/RadioInput.js +6 -18
  114. package/lib/RadioCard/RadioCard.js +3 -3
  115. package/lib/RadioCard/RadioCardGroup.js +3 -3
  116. package/lib/Responsive/Responsive.js +3 -2
  117. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  118. package/lib/Search/Search.js +2 -4
  119. package/lib/Select/Group.js +4 -2
  120. package/lib/Select/Item.js +4 -2
  121. package/lib/Select/Picker.js +2 -4
  122. package/lib/Select/Picker.native.js +3 -5
  123. package/lib/Select/Select.js +4 -6
  124. package/lib/SideNav/Item.js +2 -4
  125. package/lib/SideNav/ItemContent.js +4 -2
  126. package/lib/SideNav/ItemsGroup.js +2 -4
  127. package/lib/SideNav/SideNav.js +2 -2
  128. package/lib/Skeleton/Skeleton.js +2 -4
  129. package/lib/SkipLink/SkipLink.js +2 -4
  130. package/lib/Spacer/Spacer.js +2 -4
  131. package/lib/StackView/StackView.js +2 -4
  132. package/lib/StackView/StackWrap.js +3 -5
  133. package/lib/StackView/StackWrapBox.js +2 -4
  134. package/lib/StackView/StackWrapGap.js +2 -4
  135. package/lib/StackView/getStackedContent.js +3 -3
  136. package/lib/StepTracker/Step.js +4 -2
  137. package/lib/StepTracker/StepTracker.js +2 -4
  138. package/lib/Tabs/Tabs.js +4 -4
  139. package/lib/Tabs/TabsItem.js +3 -5
  140. package/lib/Tags/Tags.js +2 -4
  141. package/lib/TextInput/TextArea.js +3 -5
  142. package/lib/TextInput/TextInput.js +2 -4
  143. package/lib/TextInput/TextInputBase.js +7 -9
  144. package/lib/ThemeProvider/ThemeProvider.js +5 -7
  145. package/lib/Timeline/Timeline.js +2 -4
  146. package/lib/ToggleSwitch/ToggleSwitch.js +2 -4
  147. package/lib/ToggleSwitch/ToggleSwitchGroup.js +2 -4
  148. package/lib/Tooltip/Tooltip.js +6 -8
  149. package/lib/Tooltip/Tooltip.native.js +12 -14
  150. package/lib/TooltipButton/TooltipButton.js +4 -2
  151. package/lib/Typography/Typography.js +2 -4
  152. package/lib/Validator/Validator.js +11 -13
  153. package/lib/ViewportProvider/ViewportProvider.js +2 -4
  154. package/lib/index.js +8 -0
  155. package/lib/utils/BaseView/BaseView.js +2 -4
  156. package/lib/utils/children.js +4 -6
  157. package/lib/utils/withLinkRouter.js +3 -5
  158. package/lib-module/A11yInfoProvider/index.js +8 -8
  159. package/lib-module/A11yText/index.js +2 -2
  160. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  161. package/lib-module/ActivityIndicator/Spinner.native.js +2 -2
  162. package/lib-module/Autocomplete/Autocomplete.js +13 -14
  163. package/lib-module/Autocomplete/Loading.js +4 -2
  164. package/lib-module/Autocomplete/Suggestions.js +2 -2
  165. package/lib-module/Badge/Badge.js +2 -2
  166. package/lib-module/BaseProvider/HydrationContext.js +5 -5
  167. package/lib-module/Box/Box.js +5 -5
  168. package/lib-module/Button/Button.js +2 -2
  169. package/lib-module/Button/ButtonBase.js +2 -5
  170. package/lib-module/Button/ButtonDropdown.js +2 -2
  171. package/lib-module/Button/ButtonGroup.js +2 -2
  172. package/lib-module/Button/ButtonLink.js +2 -2
  173. package/lib-module/Card/Card.js +159 -14
  174. package/lib-module/Card/CardBase.js +2 -2
  175. package/lib-module/Card/PressableCardBase.js +4 -4
  176. package/lib-module/CardGroup/CardGroup.js +210 -0
  177. package/lib-module/CardGroup/dictionary.js +8 -0
  178. package/lib-module/CardGroup/index.js +2 -0
  179. package/lib-module/Carousel/Carousel.js +67 -55
  180. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -2
  181. package/lib-module/Carousel/CarouselItem/CarouselItem.js +3 -2
  182. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
  183. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +2 -2
  184. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -6
  185. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -3
  186. package/lib-module/Carousel/CarouselThumbnail.js +4 -2
  187. package/lib-module/Carousel/CarouselThumbnailNavigation.js +2 -2
  188. package/lib-module/Checkbox/Checkbox.js +2 -2
  189. package/lib-module/Checkbox/CheckboxButton.js +3 -3
  190. package/lib-module/Checkbox/CheckboxGroup.js +2 -2
  191. package/lib-module/Checkbox/CheckboxInput.js +4 -12
  192. package/lib-module/CheckboxCard/CheckboxCard.js +2 -2
  193. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +2 -2
  194. package/lib-module/ColourToggle/ColourBubble.js +5 -4
  195. package/lib-module/ColourToggle/ColourToggle.js +3 -3
  196. package/lib-module/Divider/Divider.js +2 -2
  197. package/lib-module/ExpandCollapse/Accordion.js +2 -2
  198. package/lib-module/ExpandCollapse/Control.js +2 -2
  199. package/lib-module/ExpandCollapse/ExpandCollapse.js +2 -2
  200. package/lib-module/ExpandCollapse/Panel.js +3 -3
  201. package/lib-module/Feedback/Feedback.js +2 -2
  202. package/lib-module/Fieldset/Fieldset.js +2 -2
  203. package/lib-module/Fieldset/FieldsetContainer.js +2 -2
  204. package/lib-module/Fieldset/FieldsetContainer.native.js +2 -2
  205. package/lib-module/Fieldset/Legend.js +2 -2
  206. package/lib-module/Fieldset/Legend.native.js +2 -2
  207. package/lib-module/FlexGrid/Col/Col.js +3 -3
  208. package/lib-module/FlexGrid/FlexGrid.js +2 -2
  209. package/lib-module/FlexGrid/Row/Row.js +2 -2
  210. package/lib-module/Footnote/Footnote.js +9 -7
  211. package/lib-module/Footnote/FootnoteLink.js +5 -4
  212. package/lib-module/HorizontalScroll/HorizontalScroll.js +8 -8
  213. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +2 -2
  214. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -8
  215. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +2 -2
  216. package/lib-module/Icon/Icon.js +2 -2
  217. package/lib-module/Icon/IconText.js +2 -2
  218. package/lib-module/IconButton/IconButton.js +2 -2
  219. package/lib-module/InputLabel/InputLabel.js +2 -2
  220. package/lib-module/InputLabel/LabelContent.js +2 -2
  221. package/lib-module/InputLabel/LabelContent.native.js +2 -2
  222. package/lib-module/InputSupports/InputSupports.js +4 -3
  223. package/lib-module/Link/ChevronLink.js +2 -2
  224. package/lib-module/Link/InlinePressable.js +10 -4
  225. package/lib-module/Link/InlinePressable.native.js +12 -6
  226. package/lib-module/Link/Link.js +2 -2
  227. package/lib-module/Link/LinkBase.js +2 -2
  228. package/lib-module/Link/TextButton.js +2 -2
  229. package/lib-module/List/List.js +13 -9
  230. package/lib-module/List/ListItem.js +2 -2
  231. package/lib-module/List/ListItemBase.js +6 -8
  232. package/lib-module/List/ListItemContent.js +4 -2
  233. package/lib-module/List/ListItemMark.js +4 -2
  234. package/lib-module/List/PressableListItemBase.js +2 -2
  235. package/lib-module/Listbox/GroupControl.js +4 -2
  236. package/lib-module/Listbox/Listbox.js +7 -7
  237. package/lib-module/Listbox/ListboxContext.js +2 -2
  238. package/lib-module/Listbox/ListboxGroup.js +2 -2
  239. package/lib-module/Listbox/ListboxItem.js +2 -3
  240. package/lib-module/Listbox/ListboxOverlay.js +2 -3
  241. package/lib-module/Listbox/PressableItem.js +2 -3
  242. package/lib-module/Modal/Modal.js +5 -5
  243. package/lib-module/Modal/ModalContent.js +7 -5
  244. package/lib-module/Modal/WebModal.js +16 -9
  245. package/lib-module/MultiSelectFilter/ModalOverlay.js +2 -2
  246. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +10 -8
  247. package/lib-module/Notification/Notification.js +5 -5
  248. package/lib-module/OrderedList/Item.js +4 -8
  249. package/lib-module/OrderedList/ItemBase.js +2 -2
  250. package/lib-module/OrderedList/OrderedList.js +6 -12
  251. package/lib-module/OrderedList/OrderedListBase.js +2 -2
  252. package/lib-module/Pagination/PageButton.js +2 -2
  253. package/lib-module/Pagination/Pagination.js +2 -2
  254. package/lib-module/Pagination/SideButton.js +2 -2
  255. package/lib-module/PriceLockup/PriceLockup.js +5 -5
  256. package/lib-module/ProductCard/ProductCard.js +3 -2
  257. package/lib-module/ProductCardGroup/ProductCardGroup.js +5 -4
  258. package/lib-module/Progress/Progress.js +2 -2
  259. package/lib-module/Progress/ProgressBar.js +2 -2
  260. package/lib-module/Progress/ProgressBarBackground.js +2 -2
  261. package/lib-module/QuickLinks/QuickLinks.js +2 -2
  262. package/lib-module/QuickLinks/QuickLinksCard.js +4 -2
  263. package/lib-module/QuickLinks/QuickLinksItem.js +2 -2
  264. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +9 -5
  265. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +10 -10
  266. package/lib-module/Radio/Radio.js +2 -2
  267. package/lib-module/Radio/RadioButton.js +62 -14
  268. package/lib-module/Radio/RadioGroup.js +2 -2
  269. package/lib-module/Radio/RadioInput.js +6 -16
  270. package/lib-module/RadioCard/RadioCard.js +2 -2
  271. package/lib-module/RadioCard/RadioCardGroup.js +2 -2
  272. package/lib-module/Responsive/Responsive.js +3 -2
  273. package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  274. package/lib-module/Search/Search.js +2 -2
  275. package/lib-module/Select/Group.js +4 -2
  276. package/lib-module/Select/Item.js +4 -2
  277. package/lib-module/Select/Picker.js +2 -2
  278. package/lib-module/Select/Picker.native.js +3 -3
  279. package/lib-module/Select/Select.js +4 -4
  280. package/lib-module/SideNav/Item.js +2 -2
  281. package/lib-module/SideNav/ItemContent.js +4 -2
  282. package/lib-module/SideNav/ItemsGroup.js +2 -2
  283. package/lib-module/SideNav/SideNav.js +3 -3
  284. package/lib-module/Skeleton/Skeleton.js +2 -2
  285. package/lib-module/SkipLink/SkipLink.js +2 -2
  286. package/lib-module/Spacer/Spacer.js +2 -2
  287. package/lib-module/StackView/StackView.js +2 -2
  288. package/lib-module/StackView/StackWrap.js +3 -3
  289. package/lib-module/StackView/StackWrapBox.js +2 -2
  290. package/lib-module/StackView/StackWrapGap.js +2 -2
  291. package/lib-module/StackView/getStackedContent.js +4 -4
  292. package/lib-module/StepTracker/Step.js +4 -2
  293. package/lib-module/StepTracker/StepTracker.js +2 -2
  294. package/lib-module/Tabs/Tabs.js +3 -3
  295. package/lib-module/Tabs/TabsItem.js +3 -3
  296. package/lib-module/Tags/Tags.js +2 -2
  297. package/lib-module/TextInput/TextArea.js +3 -3
  298. package/lib-module/TextInput/TextInput.js +2 -2
  299. package/lib-module/TextInput/TextInputBase.js +7 -7
  300. package/lib-module/ThemeProvider/ThemeProvider.js +5 -5
  301. package/lib-module/Timeline/Timeline.js +2 -2
  302. package/lib-module/ToggleSwitch/ToggleSwitch.js +2 -2
  303. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +2 -2
  304. package/lib-module/Tooltip/Tooltip.js +6 -6
  305. package/lib-module/Tooltip/Tooltip.native.js +12 -12
  306. package/lib-module/TooltipButton/TooltipButton.js +4 -2
  307. package/lib-module/Typography/Typography.js +2 -2
  308. package/lib-module/Validator/Validator.js +11 -11
  309. package/lib-module/ViewportProvider/ViewportProvider.js +2 -2
  310. package/lib-module/index.js +1 -0
  311. package/lib-module/utils/BaseView/BaseView.js +2 -2
  312. package/lib-module/utils/children.js +4 -4
  313. package/lib-module/utils/withLinkRouter.js +3 -3
  314. package/package.json +2 -2
  315. package/src/A11yInfoProvider/index.jsx +8 -8
  316. package/src/A11yText/index.jsx +2 -2
  317. package/src/ActivityIndicator/Spinner.jsx +2 -2
  318. package/src/ActivityIndicator/Spinner.native.jsx +2 -2
  319. package/src/Autocomplete/Autocomplete.jsx +15 -14
  320. package/src/Autocomplete/Loading.jsx +6 -3
  321. package/src/Autocomplete/Suggestions.jsx +2 -2
  322. package/src/Badge/Badge.jsx +2 -2
  323. package/src/BaseProvider/HydrationContext.jsx +5 -5
  324. package/src/Box/Box.jsx +5 -5
  325. package/src/Button/Button.jsx +11 -9
  326. package/src/Button/ButtonBase.jsx +2 -3
  327. package/src/Button/ButtonDropdown.jsx +2 -2
  328. package/src/Button/ButtonGroup.jsx +2 -2
  329. package/src/Button/ButtonLink.jsx +2 -2
  330. package/src/Card/Card.jsx +151 -11
  331. package/src/Card/CardBase.jsx +2 -2
  332. package/src/Card/PressableCardBase.jsx +18 -4
  333. package/src/CardGroup/CardGroup.jsx +249 -0
  334. package/src/CardGroup/dictionary.js +8 -0
  335. package/src/CardGroup/index.js +3 -0
  336. package/src/Carousel/Carousel.jsx +69 -53
  337. package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
  338. package/src/Carousel/CarouselItem/CarouselItem.jsx +19 -17
  339. package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +5 -3
  340. package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
  341. package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +6 -6
  342. package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
  343. package/src/Carousel/CarouselThumbnail.jsx +6 -2
  344. package/src/Carousel/CarouselThumbnailNavigation.jsx +2 -2
  345. package/src/Checkbox/Checkbox.jsx +2 -2
  346. package/src/Checkbox/CheckboxButton.jsx +5 -7
  347. package/src/Checkbox/CheckboxGroup.jsx +2 -2
  348. package/src/Checkbox/CheckboxInput.jsx +15 -12
  349. package/src/CheckboxCard/CheckboxCard.jsx +2 -2
  350. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +2 -2
  351. package/src/ColourToggle/ColourBubble.jsx +5 -4
  352. package/src/ColourToggle/ColourToggle.jsx +3 -3
  353. package/src/Divider/Divider.jsx +2 -2
  354. package/src/ExpandCollapse/Accordion.jsx +4 -2
  355. package/src/ExpandCollapse/Control.jsx +2 -2
  356. package/src/ExpandCollapse/ExpandCollapse.jsx +2 -2
  357. package/src/ExpandCollapse/Panel.jsx +3 -3
  358. package/src/Feedback/Feedback.jsx +2 -2
  359. package/src/Fieldset/Fieldset.jsx +2 -2
  360. package/src/Fieldset/FieldsetContainer.jsx +2 -2
  361. package/src/Fieldset/FieldsetContainer.native.jsx +2 -2
  362. package/src/Fieldset/Legend.jsx +2 -2
  363. package/src/Fieldset/Legend.native.jsx +2 -2
  364. package/src/FlexGrid/Col/Col.jsx +3 -3
  365. package/src/FlexGrid/FlexGrid.jsx +2 -2
  366. package/src/FlexGrid/Row/Row.jsx +2 -2
  367. package/src/Footnote/Footnote.jsx +111 -98
  368. package/src/Footnote/FootnoteLink.jsx +35 -31
  369. package/src/HorizontalScroll/HorizontalScroll.jsx +8 -8
  370. package/src/HorizontalScroll/HorizontalScrollButton.jsx +2 -2
  371. package/src/HorizontalScroll/ScrollViewEnd.jsx +4 -8
  372. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +2 -2
  373. package/src/Icon/Icon.jsx +2 -2
  374. package/src/Icon/IconText.jsx +2 -2
  375. package/src/IconButton/IconButton.jsx +2 -2
  376. package/src/InputLabel/InputLabel.jsx +2 -2
  377. package/src/InputLabel/LabelContent.jsx +2 -2
  378. package/src/InputLabel/LabelContent.native.jsx +2 -2
  379. package/src/InputSupports/InputSupports.jsx +4 -3
  380. package/src/Link/ChevronLink.jsx +2 -2
  381. package/src/Link/InlinePressable.jsx +22 -15
  382. package/src/Link/InlinePressable.native.jsx +12 -6
  383. package/src/Link/Link.jsx +2 -2
  384. package/src/Link/LinkBase.jsx +2 -2
  385. package/src/Link/TextButton.jsx +2 -2
  386. package/src/List/List.jsx +15 -7
  387. package/src/List/ListItem.jsx +2 -2
  388. package/src/List/ListItemBase.jsx +6 -12
  389. package/src/List/ListItemContent.jsx +5 -2
  390. package/src/List/ListItemMark.jsx +5 -3
  391. package/src/List/PressableListItemBase.jsx +2 -2
  392. package/src/Listbox/GroupControl.jsx +5 -2
  393. package/src/Listbox/Listbox.jsx +7 -7
  394. package/src/Listbox/ListboxContext.js +2 -2
  395. package/src/Listbox/ListboxGroup.jsx +2 -2
  396. package/src/Listbox/ListboxItem.jsx +2 -3
  397. package/src/Listbox/ListboxOverlay.jsx +2 -3
  398. package/src/Listbox/PressableItem.jsx +2 -3
  399. package/src/Modal/Modal.jsx +5 -5
  400. package/src/Modal/ModalContent.jsx +132 -125
  401. package/src/Modal/WebModal.jsx +13 -8
  402. package/src/MultiSelectFilter/ModalOverlay.jsx +2 -2
  403. package/src/MultiSelectFilter/MultiSelectFilter.jsx +263 -252
  404. package/src/Notification/Notification.jsx +5 -5
  405. package/src/OrderedList/Item.jsx +4 -6
  406. package/src/OrderedList/ItemBase.jsx +2 -2
  407. package/src/OrderedList/OrderedList.jsx +4 -7
  408. package/src/OrderedList/OrderedListBase.jsx +2 -2
  409. package/src/Pagination/PageButton.jsx +2 -2
  410. package/src/Pagination/Pagination.jsx +2 -2
  411. package/src/Pagination/SideButton.jsx +2 -2
  412. package/src/PriceLockup/PriceLockup.jsx +93 -88
  413. package/src/ProductCard/ProductCard.jsx +90 -84
  414. package/src/ProductCardGroup/ProductCardGroup.jsx +5 -5
  415. package/src/Progress/Progress.jsx +2 -2
  416. package/src/Progress/ProgressBar.jsx +2 -2
  417. package/src/Progress/ProgressBarBackground.jsx +4 -2
  418. package/src/QuickLinks/QuickLinks.jsx +2 -2
  419. package/src/QuickLinks/QuickLinksCard.jsx +9 -3
  420. package/src/QuickLinks/QuickLinksItem.jsx +2 -2
  421. package/src/QuickLinksFeature/QuickLinksFeature.jsx +31 -27
  422. package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +3 -3
  423. package/src/Radio/Radio.jsx +2 -2
  424. package/src/Radio/RadioButton.jsx +58 -6
  425. package/src/Radio/RadioGroup.jsx +2 -2
  426. package/src/Radio/RadioInput.jsx +15 -14
  427. package/src/RadioCard/RadioCard.jsx +2 -2
  428. package/src/RadioCard/RadioCardGroup.jsx +2 -2
  429. package/src/Responsive/Responsive.jsx +8 -3
  430. package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +23 -16
  431. package/src/Search/Search.jsx +2 -2
  432. package/src/Select/Group.jsx +9 -3
  433. package/src/Select/Item.jsx +7 -1
  434. package/src/Select/Picker.jsx +2 -2
  435. package/src/Select/Picker.native.jsx +3 -3
  436. package/src/Select/Select.jsx +4 -4
  437. package/src/SideNav/Item.jsx +2 -2
  438. package/src/SideNav/ItemContent.jsx +7 -3
  439. package/src/SideNav/ItemsGroup.jsx +2 -2
  440. package/src/SideNav/SideNav.jsx +3 -3
  441. package/src/Skeleton/Skeleton.jsx +2 -2
  442. package/src/SkipLink/SkipLink.jsx +2 -2
  443. package/src/Spacer/Spacer.jsx +2 -2
  444. package/src/StackView/StackView.jsx +2 -2
  445. package/src/StackView/StackWrap.jsx +3 -3
  446. package/src/StackView/StackWrapBox.jsx +2 -2
  447. package/src/StackView/StackWrapGap.jsx +2 -2
  448. package/src/StackView/getStackedContent.jsx +4 -4
  449. package/src/StepTracker/Step.jsx +75 -67
  450. package/src/StepTracker/StepTracker.jsx +2 -2
  451. package/src/Tabs/Tabs.jsx +3 -3
  452. package/src/Tabs/TabsItem.jsx +3 -3
  453. package/src/Tags/Tags.jsx +2 -2
  454. package/src/TextInput/TextArea.jsx +3 -3
  455. package/src/TextInput/TextInput.jsx +2 -2
  456. package/src/TextInput/TextInputBase.jsx +7 -7
  457. package/src/ThemeProvider/ThemeProvider.jsx +5 -5
  458. package/src/Timeline/Timeline.jsx +2 -2
  459. package/src/ToggleSwitch/ToggleSwitch.jsx +2 -2
  460. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
  461. package/src/Tooltip/Tooltip.jsx +6 -6
  462. package/src/Tooltip/Tooltip.native.jsx +12 -12
  463. package/src/TooltipButton/TooltipButton.jsx +5 -2
  464. package/src/Typography/Typography.jsx +2 -2
  465. package/src/Validator/Validator.jsx +11 -11
  466. package/src/ViewportProvider/ViewportProvider.jsx +2 -2
  467. package/src/index.js +1 -0
  468. package/src/utils/BaseView/BaseView.jsx +2 -2
  469. package/src/utils/children.jsx +4 -4
  470. package/src/utils/withLinkRouter.jsx +3 -3
  471. package/types/ExpandCollapse.d.ts +1 -1
@@ -1,7 +1,7 @@
1
- import React, { forwardRef, Children, cloneElement } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { StackWrap } from '../StackView'
4
-
4
+ import { useViewport } from '../ViewportProvider'
5
5
  import { useThemeTokens } from '../ThemeProvider'
6
6
  import { a11yProps, getTokensPropType, selectSystemProps, variantProp, viewProps } from '../utils'
7
7
 
@@ -17,34 +17,38 @@ const isQuickListItem = (element) => {
17
17
  * QuickLinksFeature renders a list of interactive items.
18
18
  * - This is the base component that is used as a wrapper and accepts a List of `QuickLinksFeature.Item`
19
19
  */
20
- const QuickLinksFeature = forwardRef(({ tokens, variant, tag = 'ul', children, ...rest }, ref) => {
21
- const { stackGap, stackJustify, stackSpace } = useThemeTokens(
22
- 'QuickLinksFeature',
23
- tokens,
24
- variant
25
- )
20
+ const QuickLinksFeature = React.forwardRef(
21
+ ({ tokens, variant, tag = 'ul', children, ...rest }, ref) => {
22
+ const viewport = useViewport()
23
+ const { stackGap, stackJustify, stackSpace } = useThemeTokens(
24
+ 'QuickLinksFeature',
25
+ tokens,
26
+ variant,
27
+ { viewport }
28
+ )
26
29
 
27
- const items = Children.map(children, (child) => {
28
- if (isQuickListItem(child)) {
29
- return cloneElement(child, child.props)
30
- }
30
+ const items = React.Children.map(children, (child) => {
31
+ if (isQuickListItem(child)) {
32
+ return React.cloneElement(child, child.props)
33
+ }
31
34
 
32
- return null
33
- })
35
+ return null
36
+ })
34
37
 
35
- return (
36
- <StackWrap
37
- space={stackSpace}
38
- gap={stackGap}
39
- tokens={{ justifyContent: stackJustify }}
40
- tag={tag}
41
- ref={ref}
42
- {...selectProps(rest)}
43
- >
44
- {items}
45
- </StackWrap>
46
- )
47
- })
38
+ return (
39
+ <StackWrap
40
+ space={stackSpace}
41
+ gap={stackGap}
42
+ tokens={{ justifyContent: stackJustify }}
43
+ tag={tag}
44
+ ref={ref}
45
+ {...selectProps(rest)}
46
+ >
47
+ {items}
48
+ </StackWrap>
49
+ )
50
+ }
51
+ )
48
52
 
49
53
  QuickLinksFeature.displayName = 'QuickLinksFeature'
50
54
 
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import { Image, Platform, Text, View } from 'react-native'
@@ -48,7 +48,7 @@ const selectLinkToken = ({ outerBorderColor }) => ({ outerBorderColor })
48
48
  *
49
49
  * It will receive a image source and a accessibility label and will render a link accordingly with the theme tokens
50
50
  */
51
- const QuickLinksFeatureItem = forwardRef(
51
+ const QuickLinksFeatureItem = React.forwardRef(
52
52
  ({ tokens, variant, children, imageAccessibilityLabel, imageSource, ...rest }, ref) => {
53
53
  const viewport = useViewport()
54
54
  const getTokens = useThemeTokensCallback('QuickLinksFeatureItem', tokens, variant)
@@ -86,8 +86,8 @@ const QuickLinksFeatureItem = forwardRef(
86
86
  source={imageSource}
87
87
  style={selectImageStyle(imageDimension)}
88
88
  />
89
+ <Text style={textStyle}>{children}</Text>
89
90
  </View>
90
- <Text style={textStyle}>{children}</Text>
91
91
  </StackWrap>
92
92
  </View>
93
93
  )
@@ -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 { Pressable, StyleSheet, Text, View } from 'react-native'
4
4
 
@@ -111,7 +111,7 @@ const selectLabelStyles = ({
111
111
  * or the internal state in case of uncontrolled radio button.
112
112
  *
113
113
  */
114
- const Radio = forwardRef(
114
+ const Radio = React.forwardRef(
115
115
  (
116
116
  {
117
117
  checked,
@@ -1,9 +1,15 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { Platform, StyleSheet, View } from 'react-native'
4
4
 
5
5
  import RadioInput from './RadioInput'
6
- import { applyOuterBorder, resolveThemeTokens, validateThemeTokens } from '../ThemeProvider'
6
+ import {
7
+ applyOuterBorder,
8
+ applyShadowToken,
9
+ resolveThemeTokens,
10
+ validateThemeTokens,
11
+ useThemeTokens
12
+ } from '../ThemeProvider'
7
13
  import {
8
14
  a11yProps,
9
15
  getTokensSetPropType,
@@ -43,6 +49,32 @@ const selectCheckedStyles = ({ checkedBackgroundColor, checkedSize }) => ({
43
49
  width: checkedSize
44
50
  })
45
51
 
52
+ const selectIconTokens = ({ icon, iconColor, checkedSize }) => ({
53
+ icon,
54
+ color: iconColor,
55
+ size: checkedSize
56
+ })
57
+
58
+ const selectInputIconStyles = (
59
+ {
60
+ iconBackgroundColor,
61
+ inputBackgroundColor,
62
+ inputBorderColor,
63
+ inputBorderWidth,
64
+ inputSize,
65
+ containerShadow
66
+ },
67
+ isChecked
68
+ ) => ({
69
+ borderColor: inputBorderColor,
70
+ borderRadius: getBorderRadius(inputSize),
71
+ borderWidth: inputBorderWidth,
72
+ backgroundColor: isChecked ? iconBackgroundColor : inputBackgroundColor,
73
+ height: inputSize,
74
+ width: inputSize,
75
+ ...applyShadowToken(containerShadow)
76
+ })
77
+
46
78
  const selectInputStyles = ({
47
79
  inputBackgroundColor,
48
80
  inputBorderColor,
@@ -84,7 +116,7 @@ const selectOuterBorderStyles = ({
84
116
  * The visual toggle of a radio input. Is not interactive on its own, should be used inside
85
117
  * an interactive parent that passes down props when interacted with.
86
118
  */
87
- const RadioButton = forwardRef(
119
+ const RadioButton = React.forwardRef(
88
120
  (
89
121
  {
90
122
  isChecked,
@@ -96,20 +128,40 @@ const RadioButton = forwardRef(
96
128
  handleChange,
97
129
  name: inputName,
98
130
  value,
131
+ testID = 'Radio-Checked',
99
132
  ...rest
100
133
  },
101
134
  ref
102
135
  ) => {
136
+ const radioTokens = useThemeTokens('Radio', tokens, {
137
+ checked: isChecked
138
+ })
139
+ const { icon: IconComponent, ...iconTokens } = selectIconTokens(radioTokens)
103
140
  const themeTokens = validateThemeTokens(
104
- resolveThemeTokens(tokens, { checked: isChecked }),
141
+ resolveThemeTokens(IconComponent ? radioTokens : tokens, {
142
+ checked: isChecked
143
+ }),
105
144
  getTokensSetPropType(tokenKeys),
106
145
  'RadioButton'
107
146
  )
108
147
 
148
+ const getCheckedInput = (checked) => {
149
+ if (!checked) return null
150
+ if (!IconComponent) {
151
+ return <View style={selectCheckedStyles(themeTokens)} testID={testID} />
152
+ }
153
+ return <IconComponent {...iconTokens} />
154
+ }
155
+
109
156
  return (
110
157
  <View style={selectOuterBorderStyles(themeTokens)} {...selectProps(rest)}>
111
158
  <View
112
- style={[staticStyles.defaultInputStyles, selectInputStyles(themeTokens, isChecked)]}
159
+ style={[
160
+ staticStyles.defaultInputStyles,
161
+ IconComponent
162
+ ? selectInputIconStyles(themeTokens, isChecked)
163
+ : selectInputStyles(themeTokens)
164
+ ]}
113
165
  testID="Radio-Input"
114
166
  >
115
167
  {/* Add a real input on Web, skip on native platforms */}
@@ -124,7 +176,7 @@ const RadioButton = forwardRef(
124
176
  name={inputName}
125
177
  value={value}
126
178
  />
127
- {isChecked && <View style={selectCheckedStyles(themeTokens)} testID="Radio-Checked" />}
179
+ {getCheckedInput(isChecked)}
128
180
  </View>
129
181
  </View>
130
182
  )
@@ -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 ABBPropTypes from 'airbnb-prop-types'
4
4
 
@@ -73,7 +73,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
73
73
  * />
74
74
  * ```
75
75
  */
76
- const RadioGroup = forwardRef(
76
+ const RadioGroup = React.forwardRef(
77
77
  (
78
78
  {
79
79
  copy = 'en',
@@ -1,11 +1,23 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  /**
5
5
  * On Web we need to include an actual input but hide it.
6
6
  */
7
- const RadioInput = forwardRef(
8
- ({ checked, defaultChecked, disabled, id, isControlled, name, onChange, value }, ref) => {
7
+ const RadioInput = React.forwardRef(
8
+ (
9
+ {
10
+ checked,
11
+ defaultChecked,
12
+ disabled = false,
13
+ id = null,
14
+ isControlled = false,
15
+ name,
16
+ onChange = () => {},
17
+ value
18
+ },
19
+ ref
20
+ ) => {
9
21
  const handleClick = (event) => {
10
22
  // Cancel the click dispatched via the label tag, since it's already wrapped
11
23
  // in <Pressable>
@@ -43,15 +55,4 @@ RadioInput.propTypes = {
43
55
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool])
44
56
  }
45
57
 
46
- RadioInput.defaultProps = {
47
- checked: undefined,
48
- defaultChecked: undefined,
49
- disabled: false,
50
- id: null,
51
- isControlled: false,
52
- name: undefined,
53
- onChange: () => {},
54
- value: undefined
55
- }
56
-
57
58
  export default RadioInput
@@ -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 { StyleSheet, Text, View } from 'react-native'
4
4
 
@@ -59,7 +59,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([
59
59
  * accessibility role `'radio'` and accessibility state that depends on the other props (`checked`, `inactive`)
60
60
  * or the internal state in case of uncontrolled radio button.
61
61
  */
62
- const RadioCard = forwardRef(
62
+ const RadioCard = React.forwardRef(
63
63
  (
64
64
  {
65
65
  tokens,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import { useViewport } from '../ViewportProvider'
@@ -74,7 +74,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
74
74
  * />
75
75
  * ```
76
76
  */
77
- const RadioCardGroup = forwardRef(
77
+ const RadioCardGroup = React.forwardRef(
78
78
  (
79
79
  {
80
80
  copy = 'en',
@@ -17,13 +17,18 @@ import ResponsiveWithMediaQueryStyleSheet from './ResponsiveWithMediaQueryStyleS
17
17
  * is used to hide and show children of `Responsive` within a View.
18
18
  */
19
19
 
20
- const Responsive = ({ min = 'xs', max, inheritedStyles = [], children }) => {
20
+ const Responsive = React.forwardRef(({ min = 'xs', max, inheritedStyles = [], children }, ref) => {
21
21
  const {
22
22
  themeOptions: { enableMediaQueryStyleSheet }
23
23
  } = useTheme()
24
24
  if (enableMediaQueryStyleSheet) {
25
25
  return (
26
- <ResponsiveWithMediaQueryStyleSheet inheritedStyles={inheritedStyles} min={min} max={max}>
26
+ <ResponsiveWithMediaQueryStyleSheet
27
+ inheritedStyles={inheritedStyles}
28
+ min={min}
29
+ max={max}
30
+ ref={ref}
31
+ >
27
32
  {children}
28
33
  </ResponsiveWithMediaQueryStyleSheet>
29
34
  )
@@ -33,7 +38,7 @@ const Responsive = ({ min = 'xs', max, inheritedStyles = [], children }) => {
33
38
  {children}
34
39
  </ResponsiveProp>
35
40
  )
36
- }
41
+ })
37
42
 
38
43
  Responsive.displayName = 'Responsive'
39
44
 
@@ -25,22 +25,29 @@ function generateResponsiveStyles(min, max) {
25
25
  })
26
26
  return createMediaQueryStyles(styles, false)
27
27
  }
28
- const ResponsiveWithMediaQueryStyleSheet = ({ min, max, inheritedStyles = [], children }) => {
29
- const { ids, styles } = StyleSheet.create({
30
- responsive: {
31
- ...inheritedStyles.reduce((acc, prop) => {
32
- acc[prop] = 'inherit'
33
- return acc
34
- }, {}),
35
- ...generateResponsiveStyles(min, max)
36
- }
37
- })
38
- return (
39
- <BaseView style={styles.responsive} dataSet={ids.responsive && { media: ids.responsive }}>
40
- {children}
41
- </BaseView>
42
- )
43
- }
28
+
29
+ const ResponsiveWithMediaQueryStyleSheet = React.forwardRef(
30
+ ({ min, max, inheritedStyles = [], children }, ref) => {
31
+ const { ids, styles } = StyleSheet.create({
32
+ responsive: {
33
+ ...inheritedStyles.reduce((acc, prop) => {
34
+ acc[prop] = 'inherit'
35
+ return acc
36
+ }, {}),
37
+ ...generateResponsiveStyles(min, max)
38
+ }
39
+ })
40
+ return (
41
+ <BaseView
42
+ style={styles.responsive}
43
+ dataSet={ids.responsive && { media: ids.responsive }}
44
+ ref={ref}
45
+ >
46
+ {children}
47
+ </BaseView>
48
+ )
49
+ }
50
+ )
44
51
 
45
52
  ResponsiveWithMediaQueryStyleSheet.displayName = 'Responsive'
46
53
 
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { View } from 'react-native'
3
3
 
4
4
  import PropTypes from 'prop-types'
@@ -56,7 +56,7 @@ const selectIconTokens = ({ iconSize, iconColor }) => ({ color: iconColor, size:
56
56
  * Use the following props to supply additional accessibility labels for the input - `accessibilityLabel`,
57
57
  * clear button - `clearButtonAccessibilityLabel`, and submit button - `submitButtonAccessibilityLabel`.
58
58
  */
59
- const Search = forwardRef(
59
+ const Search = React.forwardRef(
60
60
  (
61
61
  {
62
62
  initialValue,
@@ -3,9 +3,15 @@ import PropTypes from 'prop-types'
3
3
 
4
4
  import { componentPropType } from '../utils'
5
5
 
6
- const Group = ({ children, label }) => {
7
- return <optgroup label={label}>{children}</optgroup>
8
- }
6
+ const Group = React.forwardRef(({ children, label }, ref) => {
7
+ return (
8
+ <optgroup label={label} ref={ref}>
9
+ {children}
10
+ </optgroup>
11
+ )
12
+ })
13
+
14
+ Group.displayName = 'Group'
9
15
 
10
16
  export default Group
11
17
 
@@ -1,7 +1,13 @@
1
1
  import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
- const Item = ({ children, value }) => <option value={value}>{children}</option>
4
+ const Item = React.forwardRef(({ children, value }, ref) => (
5
+ <option value={value} ref={ref}>
6
+ {children}
7
+ </option>
8
+ ))
9
+
10
+ Item.displayName = 'Item'
5
11
 
6
12
  export default Item
7
13
 
@@ -1,9 +1,9 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
 
3
3
  import PropTypes from 'prop-types'
4
4
  import { componentPropType } from '../utils'
5
5
 
6
- const Picker = forwardRef(
6
+ const Picker = React.forwardRef(
7
7
  (
8
8
  {
9
9
  value,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, Children } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { View, Platform } from 'react-native'
4
4
  import NativePicker from 'react-native-picker-select'
@@ -40,10 +40,10 @@ const selectAndroidContainerStyles = ({
40
40
  height: rest.height + ANDROID_HEIGHT_OFFSET
41
41
  })
42
42
 
43
- const Picker = forwardRef(
43
+ const Picker = React.forwardRef(
44
44
  ({ value, onChange, onFocus, onBlur, style, inactive, children, placeholder, ...rest }, ref) => {
45
45
  // Ungroup items, since there's no way to support groups on native
46
- const flatChildren = Children.toArray(children).flatMap((child) => {
46
+ const flatChildren = React.Children.toArray(children).flatMap((child) => {
47
47
  if (child.type === Group) {
48
48
  return child.props.children
49
49
  }
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from 'react'
1
+ import React from 'react'
2
2
 
3
3
  import { View, Platform, StyleSheet } from 'react-native'
4
4
  import PropTypes from 'prop-types'
@@ -179,7 +179,7 @@ const selectCustomFeedbackStyles = ({ feedbackBackgroundColor }) => ({
179
179
  * NOTE: this does not work on native platforms - the grouped items will be shown at the same level as the non-grouped items.
180
180
  *
181
181
  */
182
- const Select = forwardRef(
182
+ const Select = React.forwardRef(
183
183
  (
184
184
  {
185
185
  value,
@@ -204,11 +204,11 @@ const Select = forwardRef(
204
204
  readOnly
205
205
  })
206
206
 
207
- const [isFocused, setIsFocused] = useState(false)
207
+ const [isFocused, setIsFocused] = React.useState(false)
208
208
  const handleFocus = () => setIsFocused(true)
209
209
  const handleBlur = () => setIsFocused(false)
210
210
 
211
- const [isHovered, setIsHovered] = useState(false)
211
+ const [isHovered, setIsHovered] = React.useState(false)
212
212
  const handleMouseOver = () => setIsHovered(true)
213
213
  const handleMouseOut = () => setIsHovered(false)
214
214
 
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { Pressable, Platform } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
  import {
@@ -46,7 +46,7 @@ function selectItemStyles({
46
46
 
47
47
  This component can only be accessed as a name-spaced component: `SideNav.Item`.
48
48
  */
49
- const Item = forwardRef(
49
+ const Item = React.forwardRef(
50
50
  (
51
51
  {
52
52
  children,
@@ -19,16 +19,20 @@ export function selectAccentStyles(tokens) {
19
19
  /**
20
20
  * Content inside an item or control in a SideNav, themed by the SideNavItem theme
21
21
  */
22
- const ItemContent = ({ children, tokens }) => {
22
+ const ItemContent = React.forwardRef(({ children, tokens }, ref) => {
23
23
  const typographyTokens = selectTokens('Typography', tokens)
24
24
 
25
25
  return (
26
26
  <>
27
- <Typography tokens={typographyTokens}>{children}</Typography>
27
+ <Typography tokens={typographyTokens} ref={ref}>
28
+ {children}
29
+ </Typography>
28
30
  <View style={[staticStyles.absolute, selectAccentStyles(tokens)]} />
29
31
  </>
30
32
  )
31
- }
33
+ })
34
+
35
+ ItemContent.displayName = 'ItemContent'
32
36
 
33
37
  ItemContent.propTypes = {
34
38
  tokens: getTokensPropType('SideNavItem'),
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import ItemContent from './ItemContent'
@@ -16,7 +16,7 @@ import { useThemeTokensCallback } from '../ThemeProvider'
16
16
  ## Usage Criteria
17
17
  - Use `SideNav.ItemsGroup` with large pages that have multiple sections
18
18
  */
19
- const ItemsGroup = forwardRef(
19
+ const ItemsGroup = React.forwardRef(
20
20
  (
21
21
  {
22
22
  children,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import ExpandCollapse from '../ExpandCollapse'
@@ -29,10 +29,10 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
29
29
  - Use in conjunction with a large amount of educational / informational content
30
30
  - Allow the user to navigate between options frequently and efficiently
31
31
  */
32
- const SideNav = forwardRef(
32
+ const SideNav = React.forwardRef(
33
33
  ({ children, variant = {}, tokens, accordion = true, itemTokens, groupTokens, ...rest }, ref) => {
34
34
  const themeTokens = useThemeTokens('SideNav', tokens, variant)
35
- const [active, setActive] = useState({ groupId: undefined, itemId: undefined })
35
+ const [active, setActive] = React.useState({ groupId: undefined, itemId: undefined })
36
36
 
37
37
  const onItemPress = (itemId, groupId) => {
38
38
  setActive({ itemId, groupId })
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { Animated, Platform, StyleSheet, View } from 'react-native'
3
3
  import propTypes from 'prop-types'
4
4
  import StackView from '../StackView'
@@ -40,7 +40,7 @@ const selectSquareStyles = ({ radius }) => ({
40
40
  borderRadius: radius
41
41
  })
42
42
 
43
- const Skeleton = forwardRef(
43
+ const Skeleton = React.forwardRef(
44
44
  (
45
45
  {
46
46
  tokens,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { Platform, Pressable, StyleSheet, Text } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
 
@@ -100,7 +100,7 @@ const selectTextStyles = ({ color, textLine, fontName, fontSize, fontWeight, lin
100
100
  *
101
101
  * Skip link supports all the common a11y and link props.
102
102
  */
103
- const SkipLink = forwardRef(({ tokens, variant, href, children, ...rawRest }, ref) => {
103
+ const SkipLink = React.forwardRef(({ tokens, variant, href, children, ...rawRest }, ref) => {
104
104
  const { onPress, ...rest } = clickProps.toPressProps(rawRest)
105
105
 
106
106
  const getTokens = useThemeTokensCallback('SkipLink', tokens, variant)
@@ -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 { StyleSheet, View } from 'react-native'
4
4
  import { a11yProps, selectSystemProps, spacingProps, useSpacingScale, viewProps } from '../utils'
@@ -56,7 +56,7 @@ const selectSizeStyle = (size, direction) => ({
56
56
  * Spacer has no content and is ignored by tools such as screen readers. Use `Divider` for
57
57
  * separations between elements that may be treated as semantically meaningful on web.
58
58
  */
59
- const Spacer = forwardRef(({ space = 1, direction = 'column', ...rest }, ref) => {
59
+ const Spacer = React.forwardRef(({ space = 1, direction = 'column', ...rest }, ref) => {
60
60
  const size = useSpacingScale(space)
61
61
  const sizeStyle = selectSizeStyle(size, direction)
62
62
 
@@ -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 { View } from 'react-native'
4
4
 
@@ -64,7 +64,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
64
64
  * It applies no accessibility props of its own, unless `divider` prop is passed (`Divider` has a
65
65
  * semantic role but only on web, not within native apps).
66
66
  */
67
- const StackView = forwardRef(
67
+ const StackView = React.forwardRef(
68
68
  (
69
69
  {
70
70
  space = 0,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from 'react'
1
+ import React from 'react'
2
2
  import { Platform } from 'react-native'
3
3
 
4
4
  import useSafeLayoutEffect from '../utils/useSafeLayoutEffect'
@@ -23,8 +23,8 @@ const exampleGapValue = '1px'
23
23
  * wrapped lines of items. By default, this `gap` is the same as the gap between spaced items.
24
24
  * If a different spacing is desired between wrapped lines, pass a spacing value to the `gap` prop.
25
25
  */
26
- const StackWrap = forwardRef((props, ref) => {
27
- const [canUseCSSGap, setCanUseCSSGap] = useState(false)
26
+ const StackWrap = React.forwardRef((props, ref) => {
27
+ const [canUseCSSGap, setCanUseCSSGap] = React.useState(false)
28
28
  const { space } = props
29
29
  // Don't apply separate gap if `null` or `undefined`, so can be unset in Storybook etc
30
30
  const gap = props.gap ?? space