@telus-uds/components-base 1.83.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 (474) hide show
  1. package/CHANGELOG.md +36 -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 +11 -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 +308 -129
  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 +20 -13
  44. package/lib/ExpandCollapse/Panel.js +15 -5
  45. package/lib/ExpandCollapse/dictionary.js +17 -0
  46. package/lib/Feedback/Feedback.js +2 -4
  47. package/lib/Fieldset/Fieldset.js +2 -4
  48. package/lib/Fieldset/FieldsetContainer.js +2 -4
  49. package/lib/Fieldset/FieldsetContainer.native.js +2 -4
  50. package/lib/Fieldset/Legend.js +2 -4
  51. package/lib/Fieldset/Legend.native.js +2 -4
  52. package/lib/FlexGrid/Col/Col.js +3 -5
  53. package/lib/FlexGrid/FlexGrid.js +2 -4
  54. package/lib/FlexGrid/Row/Row.js +2 -4
  55. package/lib/Footnote/Footnote.js +9 -9
  56. package/lib/Footnote/FootnoteLink.js +5 -3
  57. package/lib/HorizontalScroll/HorizontalScroll.js +8 -10
  58. package/lib/HorizontalScroll/HorizontalScrollButton.js +2 -4
  59. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -10
  60. package/lib/HorizontalScroll/ScrollViewEnd.native.js +2 -4
  61. package/lib/Icon/Icon.js +2 -4
  62. package/lib/Icon/IconText.js +6 -6
  63. package/lib/IconButton/IconButton.js +2 -4
  64. package/lib/InputLabel/InputLabel.js +2 -4
  65. package/lib/InputLabel/LabelContent.js +2 -4
  66. package/lib/InputLabel/LabelContent.native.js +2 -4
  67. package/lib/InputSupports/InputSupports.js +4 -5
  68. package/lib/Link/ChevronLink.js +2 -4
  69. package/lib/Link/InlinePressable.js +8 -7
  70. package/lib/Link/InlinePressable.native.js +10 -8
  71. package/lib/Link/Link.js +2 -4
  72. package/lib/Link/LinkBase.js +2 -4
  73. package/lib/Link/TextButton.js +2 -4
  74. package/lib/List/List.js +13 -11
  75. package/lib/List/ListItem.js +2 -4
  76. package/lib/List/ListItemBase.js +6 -10
  77. package/lib/List/ListItemContent.js +4 -2
  78. package/lib/List/ListItemMark.js +4 -2
  79. package/lib/List/PressableListItemBase.js +2 -4
  80. package/lib/Listbox/GroupControl.js +4 -2
  81. package/lib/Listbox/Listbox.js +6 -6
  82. package/lib/Listbox/ListboxContext.js +3 -4
  83. package/lib/Listbox/ListboxGroup.js +2 -4
  84. package/lib/Listbox/ListboxItem.js +2 -6
  85. package/lib/Listbox/ListboxOverlay.js +2 -6
  86. package/lib/Listbox/PressableItem.js +2 -6
  87. package/lib/Modal/Modal.js +5 -7
  88. package/lib/Modal/ModalContent.js +7 -7
  89. package/lib/Modal/WebModal.js +19 -10
  90. package/lib/MultiSelectFilter/ModalOverlay.js +2 -4
  91. package/lib/MultiSelectFilter/MultiSelectFilter.js +10 -10
  92. package/lib/Notification/Notification.js +5 -7
  93. package/lib/OrderedList/Item.js +4 -10
  94. package/lib/OrderedList/ItemBase.js +2 -4
  95. package/lib/OrderedList/OrderedList.js +5 -13
  96. package/lib/OrderedList/OrderedListBase.js +2 -4
  97. package/lib/Pagination/PageButton.js +1 -1
  98. package/lib/Pagination/Pagination.js +1 -1
  99. package/lib/Pagination/SideButton.js +2 -4
  100. package/lib/PriceLockup/PriceLockup.js +5 -5
  101. package/lib/ProductCard/ProductCard.js +3 -2
  102. package/lib/ProductCardGroup/ProductCardGroup.js +5 -6
  103. package/lib/Progress/Progress.js +2 -4
  104. package/lib/Progress/ProgressBar.js +2 -4
  105. package/lib/Progress/ProgressBarBackground.js +2 -4
  106. package/lib/QuickLinks/QuickLinks.js +2 -4
  107. package/lib/QuickLinks/QuickLinksCard.js +4 -2
  108. package/lib/QuickLinks/QuickLinksItem.js +2 -4
  109. package/lib/QuickLinksFeature/QuickLinksFeature.js +9 -7
  110. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +10 -12
  111. package/lib/Radio/Radio.js +3 -3
  112. package/lib/Radio/RadioButton.js +61 -15
  113. package/lib/Radio/RadioGroup.js +2 -4
  114. package/lib/Radio/RadioInput.js +6 -18
  115. package/lib/RadioCard/RadioCard.js +3 -3
  116. package/lib/RadioCard/RadioCardGroup.js +3 -3
  117. package/lib/Responsive/Responsive.js +3 -2
  118. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  119. package/lib/Search/Search.js +2 -4
  120. package/lib/Select/Group.js +4 -2
  121. package/lib/Select/Item.js +4 -2
  122. package/lib/Select/Picker.js +2 -4
  123. package/lib/Select/Picker.native.js +3 -5
  124. package/lib/Select/Select.js +4 -6
  125. package/lib/SideNav/Item.js +2 -4
  126. package/lib/SideNav/ItemContent.js +4 -2
  127. package/lib/SideNav/ItemsGroup.js +2 -4
  128. package/lib/SideNav/SideNav.js +2 -2
  129. package/lib/Skeleton/Skeleton.js +2 -4
  130. package/lib/SkipLink/SkipLink.js +2 -4
  131. package/lib/Spacer/Spacer.js +2 -4
  132. package/lib/StackView/StackView.js +2 -4
  133. package/lib/StackView/StackWrap.js +3 -5
  134. package/lib/StackView/StackWrapBox.js +2 -4
  135. package/lib/StackView/StackWrapGap.js +2 -4
  136. package/lib/StackView/getStackedContent.js +3 -3
  137. package/lib/StepTracker/Step.js +4 -2
  138. package/lib/StepTracker/StepTracker.js +2 -4
  139. package/lib/Tabs/Tabs.js +4 -4
  140. package/lib/Tabs/TabsItem.js +3 -5
  141. package/lib/Tags/Tags.js +2 -4
  142. package/lib/TextInput/TextArea.js +3 -5
  143. package/lib/TextInput/TextInput.js +2 -4
  144. package/lib/TextInput/TextInputBase.js +7 -9
  145. package/lib/ThemeProvider/ThemeProvider.js +5 -7
  146. package/lib/Timeline/Timeline.js +2 -4
  147. package/lib/ToggleSwitch/ToggleSwitch.js +2 -4
  148. package/lib/ToggleSwitch/ToggleSwitchGroup.js +2 -4
  149. package/lib/Tooltip/Tooltip.js +6 -8
  150. package/lib/Tooltip/Tooltip.native.js +12 -14
  151. package/lib/TooltipButton/TooltipButton.js +4 -2
  152. package/lib/Typography/Typography.js +2 -4
  153. package/lib/Validator/Validator.js +11 -13
  154. package/lib/ViewportProvider/ViewportProvider.js +2 -4
  155. package/lib/index.js +8 -0
  156. package/lib/utils/BaseView/BaseView.js +2 -4
  157. package/lib/utils/children.js +4 -6
  158. package/lib/utils/withLinkRouter.js +3 -5
  159. package/lib-module/A11yInfoProvider/index.js +8 -8
  160. package/lib-module/A11yText/index.js +2 -2
  161. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  162. package/lib-module/ActivityIndicator/Spinner.native.js +2 -2
  163. package/lib-module/Autocomplete/Autocomplete.js +13 -14
  164. package/lib-module/Autocomplete/Loading.js +4 -2
  165. package/lib-module/Autocomplete/Suggestions.js +2 -2
  166. package/lib-module/Badge/Badge.js +2 -2
  167. package/lib-module/BaseProvider/HydrationContext.js +5 -5
  168. package/lib-module/Box/Box.js +5 -5
  169. package/lib-module/Button/Button.js +2 -2
  170. package/lib-module/Button/ButtonBase.js +2 -5
  171. package/lib-module/Button/ButtonDropdown.js +2 -2
  172. package/lib-module/Button/ButtonGroup.js +11 -2
  173. package/lib-module/Button/ButtonLink.js +2 -2
  174. package/lib-module/Card/Card.js +159 -14
  175. package/lib-module/Card/CardBase.js +2 -2
  176. package/lib-module/Card/PressableCardBase.js +4 -4
  177. package/lib-module/CardGroup/CardGroup.js +210 -0
  178. package/lib-module/CardGroup/dictionary.js +8 -0
  179. package/lib-module/CardGroup/index.js +2 -0
  180. package/lib-module/Carousel/Carousel.js +308 -129
  181. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -2
  182. package/lib-module/Carousel/CarouselItem/CarouselItem.js +3 -2
  183. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
  184. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +2 -2
  185. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -6
  186. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -3
  187. package/lib-module/Carousel/CarouselThumbnail.js +4 -2
  188. package/lib-module/Carousel/CarouselThumbnailNavigation.js +2 -2
  189. package/lib-module/Checkbox/Checkbox.js +2 -2
  190. package/lib-module/Checkbox/CheckboxButton.js +3 -3
  191. package/lib-module/Checkbox/CheckboxGroup.js +2 -2
  192. package/lib-module/Checkbox/CheckboxInput.js +4 -12
  193. package/lib-module/CheckboxCard/CheckboxCard.js +2 -2
  194. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +2 -2
  195. package/lib-module/ColourToggle/ColourBubble.js +5 -4
  196. package/lib-module/ColourToggle/ColourToggle.js +3 -3
  197. package/lib-module/Divider/Divider.js +2 -2
  198. package/lib-module/ExpandCollapse/Accordion.js +2 -2
  199. package/lib-module/ExpandCollapse/Control.js +2 -2
  200. package/lib-module/ExpandCollapse/ExpandCollapse.js +20 -11
  201. package/lib-module/ExpandCollapse/Panel.js +16 -4
  202. package/lib-module/ExpandCollapse/dictionary.js +10 -0
  203. package/lib-module/Feedback/Feedback.js +2 -2
  204. package/lib-module/Fieldset/Fieldset.js +2 -2
  205. package/lib-module/Fieldset/FieldsetContainer.js +2 -2
  206. package/lib-module/Fieldset/FieldsetContainer.native.js +2 -2
  207. package/lib-module/Fieldset/Legend.js +2 -2
  208. package/lib-module/Fieldset/Legend.native.js +2 -2
  209. package/lib-module/FlexGrid/Col/Col.js +3 -3
  210. package/lib-module/FlexGrid/FlexGrid.js +2 -2
  211. package/lib-module/FlexGrid/Row/Row.js +2 -2
  212. package/lib-module/Footnote/Footnote.js +9 -7
  213. package/lib-module/Footnote/FootnoteLink.js +5 -4
  214. package/lib-module/HorizontalScroll/HorizontalScroll.js +8 -8
  215. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +2 -2
  216. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -8
  217. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +2 -2
  218. package/lib-module/Icon/Icon.js +2 -2
  219. package/lib-module/Icon/IconText.js +5 -5
  220. package/lib-module/IconButton/IconButton.js +2 -2
  221. package/lib-module/InputLabel/InputLabel.js +2 -2
  222. package/lib-module/InputLabel/LabelContent.js +2 -2
  223. package/lib-module/InputLabel/LabelContent.native.js +2 -2
  224. package/lib-module/InputSupports/InputSupports.js +4 -3
  225. package/lib-module/Link/ChevronLink.js +2 -2
  226. package/lib-module/Link/InlinePressable.js +10 -4
  227. package/lib-module/Link/InlinePressable.native.js +12 -6
  228. package/lib-module/Link/Link.js +2 -2
  229. package/lib-module/Link/LinkBase.js +2 -2
  230. package/lib-module/Link/TextButton.js +2 -2
  231. package/lib-module/List/List.js +13 -9
  232. package/lib-module/List/ListItem.js +2 -2
  233. package/lib-module/List/ListItemBase.js +6 -8
  234. package/lib-module/List/ListItemContent.js +4 -2
  235. package/lib-module/List/ListItemMark.js +4 -2
  236. package/lib-module/List/PressableListItemBase.js +2 -2
  237. package/lib-module/Listbox/GroupControl.js +4 -2
  238. package/lib-module/Listbox/Listbox.js +7 -7
  239. package/lib-module/Listbox/ListboxContext.js +2 -2
  240. package/lib-module/Listbox/ListboxGroup.js +2 -2
  241. package/lib-module/Listbox/ListboxItem.js +2 -3
  242. package/lib-module/Listbox/ListboxOverlay.js +2 -3
  243. package/lib-module/Listbox/PressableItem.js +2 -3
  244. package/lib-module/Modal/Modal.js +5 -5
  245. package/lib-module/Modal/ModalContent.js +7 -5
  246. package/lib-module/Modal/WebModal.js +19 -10
  247. package/lib-module/MultiSelectFilter/ModalOverlay.js +2 -2
  248. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +10 -8
  249. package/lib-module/Notification/Notification.js +5 -5
  250. package/lib-module/OrderedList/Item.js +4 -8
  251. package/lib-module/OrderedList/ItemBase.js +2 -2
  252. package/lib-module/OrderedList/OrderedList.js +6 -12
  253. package/lib-module/OrderedList/OrderedListBase.js +2 -2
  254. package/lib-module/Pagination/PageButton.js +2 -2
  255. package/lib-module/Pagination/Pagination.js +2 -2
  256. package/lib-module/Pagination/SideButton.js +2 -2
  257. package/lib-module/PriceLockup/PriceLockup.js +5 -5
  258. package/lib-module/ProductCard/ProductCard.js +3 -2
  259. package/lib-module/ProductCardGroup/ProductCardGroup.js +5 -4
  260. package/lib-module/Progress/Progress.js +2 -2
  261. package/lib-module/Progress/ProgressBar.js +2 -2
  262. package/lib-module/Progress/ProgressBarBackground.js +2 -2
  263. package/lib-module/QuickLinks/QuickLinks.js +2 -2
  264. package/lib-module/QuickLinks/QuickLinksCard.js +4 -2
  265. package/lib-module/QuickLinks/QuickLinksItem.js +2 -2
  266. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +9 -5
  267. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +10 -10
  268. package/lib-module/Radio/Radio.js +2 -2
  269. package/lib-module/Radio/RadioButton.js +62 -14
  270. package/lib-module/Radio/RadioGroup.js +2 -2
  271. package/lib-module/Radio/RadioInput.js +6 -16
  272. package/lib-module/RadioCard/RadioCard.js +2 -2
  273. package/lib-module/RadioCard/RadioCardGroup.js +2 -2
  274. package/lib-module/Responsive/Responsive.js +3 -2
  275. package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  276. package/lib-module/Search/Search.js +2 -2
  277. package/lib-module/Select/Group.js +4 -2
  278. package/lib-module/Select/Item.js +4 -2
  279. package/lib-module/Select/Picker.js +2 -2
  280. package/lib-module/Select/Picker.native.js +3 -3
  281. package/lib-module/Select/Select.js +4 -4
  282. package/lib-module/SideNav/Item.js +2 -2
  283. package/lib-module/SideNav/ItemContent.js +4 -2
  284. package/lib-module/SideNav/ItemsGroup.js +2 -2
  285. package/lib-module/SideNav/SideNav.js +3 -3
  286. package/lib-module/Skeleton/Skeleton.js +2 -2
  287. package/lib-module/SkipLink/SkipLink.js +2 -2
  288. package/lib-module/Spacer/Spacer.js +2 -2
  289. package/lib-module/StackView/StackView.js +2 -2
  290. package/lib-module/StackView/StackWrap.js +3 -3
  291. package/lib-module/StackView/StackWrapBox.js +2 -2
  292. package/lib-module/StackView/StackWrapGap.js +2 -2
  293. package/lib-module/StackView/getStackedContent.js +4 -4
  294. package/lib-module/StepTracker/Step.js +4 -2
  295. package/lib-module/StepTracker/StepTracker.js +2 -2
  296. package/lib-module/Tabs/Tabs.js +3 -3
  297. package/lib-module/Tabs/TabsItem.js +3 -3
  298. package/lib-module/Tags/Tags.js +2 -2
  299. package/lib-module/TextInput/TextArea.js +3 -3
  300. package/lib-module/TextInput/TextInput.js +2 -2
  301. package/lib-module/TextInput/TextInputBase.js +7 -7
  302. package/lib-module/ThemeProvider/ThemeProvider.js +5 -5
  303. package/lib-module/Timeline/Timeline.js +2 -2
  304. package/lib-module/ToggleSwitch/ToggleSwitch.js +2 -2
  305. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +2 -2
  306. package/lib-module/Tooltip/Tooltip.js +6 -6
  307. package/lib-module/Tooltip/Tooltip.native.js +12 -12
  308. package/lib-module/TooltipButton/TooltipButton.js +4 -2
  309. package/lib-module/Typography/Typography.js +2 -2
  310. package/lib-module/Validator/Validator.js +11 -11
  311. package/lib-module/ViewportProvider/ViewportProvider.js +2 -2
  312. package/lib-module/index.js +1 -0
  313. package/lib-module/utils/BaseView/BaseView.js +2 -2
  314. package/lib-module/utils/children.js +4 -4
  315. package/lib-module/utils/withLinkRouter.js +3 -3
  316. package/package.json +2 -2
  317. package/src/A11yInfoProvider/index.jsx +8 -8
  318. package/src/A11yText/index.jsx +2 -2
  319. package/src/ActivityIndicator/Spinner.jsx +2 -2
  320. package/src/ActivityIndicator/Spinner.native.jsx +2 -2
  321. package/src/Autocomplete/Autocomplete.jsx +15 -14
  322. package/src/Autocomplete/Loading.jsx +6 -3
  323. package/src/Autocomplete/Suggestions.jsx +2 -2
  324. package/src/Badge/Badge.jsx +2 -2
  325. package/src/BaseProvider/HydrationContext.jsx +5 -5
  326. package/src/Box/Box.jsx +5 -5
  327. package/src/Button/Button.jsx +11 -9
  328. package/src/Button/ButtonBase.jsx +2 -3
  329. package/src/Button/ButtonDropdown.jsx +2 -2
  330. package/src/Button/ButtonGroup.jsx +11 -2
  331. package/src/Button/ButtonLink.jsx +2 -2
  332. package/src/Card/Card.jsx +151 -11
  333. package/src/Card/CardBase.jsx +2 -2
  334. package/src/Card/PressableCardBase.jsx +18 -4
  335. package/src/CardGroup/CardGroup.jsx +249 -0
  336. package/src/CardGroup/dictionary.js +8 -0
  337. package/src/CardGroup/index.js +3 -0
  338. package/src/Carousel/Carousel.jsx +338 -117
  339. package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
  340. package/src/Carousel/CarouselItem/CarouselItem.jsx +19 -17
  341. package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +5 -3
  342. package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
  343. package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +6 -6
  344. package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
  345. package/src/Carousel/CarouselThumbnail.jsx +6 -2
  346. package/src/Carousel/CarouselThumbnailNavigation.jsx +2 -2
  347. package/src/Checkbox/Checkbox.jsx +2 -2
  348. package/src/Checkbox/CheckboxButton.jsx +5 -7
  349. package/src/Checkbox/CheckboxGroup.jsx +2 -2
  350. package/src/Checkbox/CheckboxInput.jsx +15 -12
  351. package/src/CheckboxCard/CheckboxCard.jsx +2 -2
  352. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +2 -2
  353. package/src/ColourToggle/ColourBubble.jsx +5 -4
  354. package/src/ColourToggle/ColourToggle.jsx +3 -3
  355. package/src/Divider/Divider.jsx +2 -2
  356. package/src/ExpandCollapse/Accordion.jsx +4 -2
  357. package/src/ExpandCollapse/Control.jsx +2 -2
  358. package/src/ExpandCollapse/ExpandCollapse.jsx +15 -7
  359. package/src/ExpandCollapse/Panel.jsx +30 -8
  360. package/src/ExpandCollapse/dictionary.js +10 -0
  361. package/src/Feedback/Feedback.jsx +2 -2
  362. package/src/Fieldset/Fieldset.jsx +2 -2
  363. package/src/Fieldset/FieldsetContainer.jsx +2 -2
  364. package/src/Fieldset/FieldsetContainer.native.jsx +2 -2
  365. package/src/Fieldset/Legend.jsx +2 -2
  366. package/src/Fieldset/Legend.native.jsx +2 -2
  367. package/src/FlexGrid/Col/Col.jsx +3 -3
  368. package/src/FlexGrid/FlexGrid.jsx +2 -2
  369. package/src/FlexGrid/Row/Row.jsx +2 -2
  370. package/src/Footnote/Footnote.jsx +111 -98
  371. package/src/Footnote/FootnoteLink.jsx +35 -31
  372. package/src/HorizontalScroll/HorizontalScroll.jsx +8 -8
  373. package/src/HorizontalScroll/HorizontalScrollButton.jsx +2 -2
  374. package/src/HorizontalScroll/ScrollViewEnd.jsx +4 -8
  375. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +2 -2
  376. package/src/Icon/Icon.jsx +2 -2
  377. package/src/Icon/IconText.jsx +7 -5
  378. package/src/IconButton/IconButton.jsx +2 -2
  379. package/src/InputLabel/InputLabel.jsx +2 -2
  380. package/src/InputLabel/LabelContent.jsx +2 -2
  381. package/src/InputLabel/LabelContent.native.jsx +2 -2
  382. package/src/InputSupports/InputSupports.jsx +4 -3
  383. package/src/Link/ChevronLink.jsx +2 -2
  384. package/src/Link/InlinePressable.jsx +22 -15
  385. package/src/Link/InlinePressable.native.jsx +12 -6
  386. package/src/Link/Link.jsx +2 -2
  387. package/src/Link/LinkBase.jsx +2 -2
  388. package/src/Link/TextButton.jsx +2 -2
  389. package/src/List/List.jsx +15 -7
  390. package/src/List/ListItem.jsx +2 -2
  391. package/src/List/ListItemBase.jsx +6 -12
  392. package/src/List/ListItemContent.jsx +5 -2
  393. package/src/List/ListItemMark.jsx +5 -3
  394. package/src/List/PressableListItemBase.jsx +2 -2
  395. package/src/Listbox/GroupControl.jsx +5 -2
  396. package/src/Listbox/Listbox.jsx +7 -7
  397. package/src/Listbox/ListboxContext.js +2 -2
  398. package/src/Listbox/ListboxGroup.jsx +2 -2
  399. package/src/Listbox/ListboxItem.jsx +2 -3
  400. package/src/Listbox/ListboxOverlay.jsx +2 -3
  401. package/src/Listbox/PressableItem.jsx +2 -3
  402. package/src/Modal/Modal.jsx +5 -5
  403. package/src/Modal/ModalContent.jsx +132 -125
  404. package/src/Modal/WebModal.jsx +17 -8
  405. package/src/MultiSelectFilter/ModalOverlay.jsx +2 -2
  406. package/src/MultiSelectFilter/MultiSelectFilter.jsx +263 -252
  407. package/src/Notification/Notification.jsx +5 -5
  408. package/src/OrderedList/Item.jsx +4 -6
  409. package/src/OrderedList/ItemBase.jsx +2 -2
  410. package/src/OrderedList/OrderedList.jsx +4 -7
  411. package/src/OrderedList/OrderedListBase.jsx +2 -2
  412. package/src/Pagination/PageButton.jsx +2 -2
  413. package/src/Pagination/Pagination.jsx +2 -2
  414. package/src/Pagination/SideButton.jsx +2 -2
  415. package/src/PriceLockup/PriceLockup.jsx +93 -88
  416. package/src/ProductCard/ProductCard.jsx +90 -84
  417. package/src/ProductCardGroup/ProductCardGroup.jsx +5 -5
  418. package/src/Progress/Progress.jsx +2 -2
  419. package/src/Progress/ProgressBar.jsx +2 -2
  420. package/src/Progress/ProgressBarBackground.jsx +4 -2
  421. package/src/QuickLinks/QuickLinks.jsx +2 -2
  422. package/src/QuickLinks/QuickLinksCard.jsx +9 -3
  423. package/src/QuickLinks/QuickLinksItem.jsx +2 -2
  424. package/src/QuickLinksFeature/QuickLinksFeature.jsx +31 -27
  425. package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +3 -3
  426. package/src/Radio/Radio.jsx +2 -2
  427. package/src/Radio/RadioButton.jsx +58 -6
  428. package/src/Radio/RadioGroup.jsx +2 -2
  429. package/src/Radio/RadioInput.jsx +15 -14
  430. package/src/RadioCard/RadioCard.jsx +2 -2
  431. package/src/RadioCard/RadioCardGroup.jsx +2 -2
  432. package/src/Responsive/Responsive.jsx +8 -3
  433. package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +23 -16
  434. package/src/Search/Search.jsx +2 -2
  435. package/src/Select/Group.jsx +9 -3
  436. package/src/Select/Item.jsx +7 -1
  437. package/src/Select/Picker.jsx +2 -2
  438. package/src/Select/Picker.native.jsx +3 -3
  439. package/src/Select/Select.jsx +4 -4
  440. package/src/SideNav/Item.jsx +2 -2
  441. package/src/SideNav/ItemContent.jsx +7 -3
  442. package/src/SideNav/ItemsGroup.jsx +2 -2
  443. package/src/SideNav/SideNav.jsx +3 -3
  444. package/src/Skeleton/Skeleton.jsx +2 -2
  445. package/src/SkipLink/SkipLink.jsx +2 -2
  446. package/src/Spacer/Spacer.jsx +2 -2
  447. package/src/StackView/StackView.jsx +2 -2
  448. package/src/StackView/StackWrap.jsx +3 -3
  449. package/src/StackView/StackWrapBox.jsx +2 -2
  450. package/src/StackView/StackWrapGap.jsx +2 -2
  451. package/src/StackView/getStackedContent.jsx +4 -4
  452. package/src/StepTracker/Step.jsx +75 -67
  453. package/src/StepTracker/StepTracker.jsx +2 -2
  454. package/src/Tabs/Tabs.jsx +3 -3
  455. package/src/Tabs/TabsItem.jsx +3 -3
  456. package/src/Tags/Tags.jsx +2 -2
  457. package/src/TextInput/TextArea.jsx +3 -3
  458. package/src/TextInput/TextInput.jsx +2 -2
  459. package/src/TextInput/TextInputBase.jsx +7 -7
  460. package/src/ThemeProvider/ThemeProvider.jsx +5 -5
  461. package/src/Timeline/Timeline.jsx +2 -2
  462. package/src/ToggleSwitch/ToggleSwitch.jsx +2 -2
  463. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
  464. package/src/Tooltip/Tooltip.jsx +6 -6
  465. package/src/Tooltip/Tooltip.native.jsx +12 -12
  466. package/src/TooltipButton/TooltipButton.jsx +5 -2
  467. package/src/Typography/Typography.jsx +2 -2
  468. package/src/Validator/Validator.jsx +11 -11
  469. package/src/ViewportProvider/ViewportProvider.jsx +2 -2
  470. package/src/index.js +1 -0
  471. package/src/utils/BaseView/BaseView.jsx +2 -2
  472. package/src/utils/children.jsx +4 -4
  473. package/src/utils/withLinkRouter.jsx +3 -3
  474. package/types/ExpandCollapse.d.ts +1 -1
@@ -1,8 +1,8 @@
1
- import React, { createContext, useContext, useEffect, useState } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Platform from "react-native-web/dist/exports/Platform";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
- const HydrationContext = /*#__PURE__*/createContext();
5
+ const HydrationContext = /*#__PURE__*/React.createContext();
6
6
  const isSSR = typeof window === 'undefined';
7
7
  const hasWebStyleTag = () => {
8
8
  var _document;
@@ -19,7 +19,7 @@ const hasWebStyleTag = () => {
19
19
  * during the very first client-side render or hydration, but not available on the server,
20
20
  * to ensure no changes happen until the original SSR DOM has been hydrated.
21
21
  */
22
- export const useHydrationContext = () => useContext(HydrationContext);
22
+ export const useHydrationContext = () => React.useContext(HydrationContext);
23
23
 
24
24
  /**
25
25
  * Allows components and hooks to observe if SSR hydration is currently in progress
@@ -29,8 +29,8 @@ export const HydrationProvider = _ref => {
29
29
  let {
30
30
  children
31
31
  } = _ref;
32
- const [hasMounted, setHasMounted] = useState(false);
33
- useEffect(() => {
32
+ const [hasMounted, setHasMounted] = React.useState(false);
33
+ React.useEffect(() => {
34
34
  setHasMounted(true);
35
35
  }, []);
36
36
 
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useEffect, useState } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import View from "react-native-web/dist/exports/View";
4
4
  import ScrollView from "react-native-web/dist/exports/ScrollView";
@@ -170,7 +170,7 @@ const setBackgroundImage = _ref2 => {
170
170
  * text content is inside a scrollable box, as screens are not scrollable by default and even very
171
171
  * short text will require scrolling on small devices at the highest accessibility text scaling settings.
172
172
  */
173
- const Box = /*#__PURE__*/forwardRef((_ref3, ref) => {
173
+ const Box = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
174
174
  let {
175
175
  space,
176
176
  horizontal = space,
@@ -218,8 +218,8 @@ const Box = /*#__PURE__*/forwardRef((_ref3, ref) => {
218
218
  const backgroundImageResizeMode = useResponsiveProp(resizeMode, 'cover');
219
219
  const backgroundImagePosition = useResponsiveProp(position, 'none');
220
220
  const backgroundImageAlign = useResponsiveProp(align, 'stretch');
221
- const [backgroundImageWidth, setBackgroundImageWidth] = useState(0);
222
- const [backgroundImageHeight, setBackgroundImageHeight] = useState(0);
221
+ const [backgroundImageWidth, setBackgroundImageWidth] = React.useState(0);
222
+ const [backgroundImageHeight, setBackgroundImageHeight] = React.useState(0);
223
223
  if (backgroundImage) content = setBackgroundImage({
224
224
  src,
225
225
  alt,
@@ -230,7 +230,7 @@ const Box = /*#__PURE__*/forwardRef((_ref3, ref) => {
230
230
  backgroundImageHeight,
231
231
  content
232
232
  });
233
- useEffect(() => {
233
+ React.useEffect(() => {
234
234
  if (backgroundImage && backgroundImageWidth === 0 && backgroundImageHeight === 0) {
235
235
  Image.getSize(src, (width, height) => {
236
236
  // Only update the state if the size has changed
@@ -1,11 +1,11 @@
1
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
2
2
  import ButtonBase from './ButtonBase';
3
3
  import buttonPropTypes, { textAndA11yText } from './propTypes';
4
4
  import { useThemeTokensCallback } from '../ThemeProvider';
5
5
  import { a11yProps } from '../utils/props';
6
6
  import { useViewport } from '../ViewportProvider';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
- const Button = /*#__PURE__*/forwardRef((_ref, ref) => {
8
+ const Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {
9
9
  let {
10
10
  accessibilityRole = 'button',
11
11
  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
  import Pressable from "react-native-web/dist/exports/Pressable";
4
4
  import View from "react-native-web/dist/exports/View";
@@ -218,7 +218,7 @@ const selectItemIconTokens = _ref10 => {
218
218
  color: iconColor || color
219
219
  };
220
220
  };
221
- const ButtonBase = /*#__PURE__*/forwardRef((_ref11, ref) => {
221
+ const ButtonBase = /*#__PURE__*/React.forwardRef((_ref11, ref) => {
222
222
  let {
223
223
  id,
224
224
  href,
@@ -321,9 +321,6 @@ ButtonBase.propTypes = {
321
321
  ...selectedSystemPropTypes,
322
322
  ...buttonPropTypes
323
323
  };
324
- ButtonBase.defaultProps = {
325
- id: undefined
326
- };
327
324
  const staticStyles = StyleSheet.create({
328
325
  row: {
329
326
  // Apply all button alignment horizontally; no vertical stacking within a button
@@ -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 Platform from "react-native-web/dist/exports/Platform";
4
4
  import Text from "react-native-web/dist/exports/Text";
@@ -49,7 +49,7 @@ const selectIconTokens = _ref => {
49
49
  }
50
50
  };
51
51
  };
52
- const ButtonDropdown = /*#__PURE__*/forwardRef((_ref2, ref) => {
52
+ const ButtonDropdown = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
53
53
  let {
54
54
  value,
55
55
  initialValue,
@@ -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
  import Platform from "react-native-web/dist/exports/Platform";
@@ -12,9 +12,10 @@ import { getPressHandlersWithArgs } from '../utils/pressability';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
14
14
  const [selectItemProps, selectedItemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, pressProps, viewProps]);
15
- const ButtonGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
15
+ const ButtonGroup = /*#__PURE__*/React.forwardRef((_ref, ref) => {
16
16
  let {
17
17
  variant,
18
+ buttonVariant,
18
19
  tokens,
19
20
  items = [],
20
21
  values,
@@ -127,6 +128,7 @@ const ButtonGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
127
128
  // "radio" if it's a direct child of "radiogroup", even if aria-posinset etc exists
128
129
  return /*#__PURE__*/_jsx(ButtonBase, {
129
130
  ref: itemRef,
131
+ variant: buttonVariant,
130
132
  ...pressHandlers,
131
133
  onPress: handlePress,
132
134
  tokens: getButtonTokens,
@@ -148,6 +150,13 @@ ButtonGroup.displayName = 'ButtonGroup';
148
150
  ButtonGroup.propTypes = {
149
151
  ...selectedSystemPropTypes,
150
152
  tokens: getTokensPropType('ButtonGroup'),
153
+ /**
154
+ * To allow Button specific variant
155
+ */
156
+ buttonVariant: variantProp.propType,
157
+ /**
158
+ * Default variant prop
159
+ */
151
160
  variant: variantProp.propType,
152
161
  /**
153
162
  * The maximum number of items a user may select at once. Defaults to 1 and behaves
@@ -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 ButtonBase from './ButtonBase';
4
4
  import buttonPropTypes, { textAndA11yText } from './propTypes';
@@ -11,7 +11,7 @@ import { useViewport } from '../ViewportProvider';
11
11
  * ButtonLink is a block-level component and should not be used inline.
12
12
  */
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
- const ButtonLink = /*#__PURE__*/forwardRef((_ref, ref) => {
14
+ const ButtonLink = /*#__PURE__*/React.forwardRef((_ref, ref) => {
15
15
  let {
16
16
  accessibilityRole = 'link',
17
17
  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
  import View from "react-native-web/dist/exports/View";
4
4
  import { useThemeTokens, useThemeTokensCallback, useResponsiveThemeTokens, useTheme } from '../ThemeProvider';
@@ -7,10 +7,52 @@ import { useViewport } from '../ViewportProvider';
7
7
  import { a11yProps, selectSystemProps, viewProps } from '../utils/props';
8
8
  import CardBase from './CardBase';
9
9
  import PressableCardBase from './PressableCardBase';
10
+ import CheckboxButton from '../Checkbox/CheckboxButton';
11
+ import RadioButton from '../Radio/RadioButton';
10
12
  import { jsx as _jsx } from "react/jsx-runtime";
11
13
  import { Fragment as _Fragment } from "react/jsx-runtime";
12
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
13
15
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
16
+ const SelectionType = {
17
+ Checkbox: 'checkbox',
18
+ Radio: 'radiogroup',
19
+ None: undefined
20
+ };
21
+ const selectInputStyle = _ref => {
22
+ let {
23
+ paddingTop,
24
+ paddingRight
25
+ } = _ref;
26
+ return {
27
+ position: 'absolute',
28
+ top: paddingTop,
29
+ right: paddingRight
30
+ };
31
+ };
32
+ const getInputProps = _ref2 => {
33
+ let {
34
+ id,
35
+ checkColor,
36
+ boxBackgroundColor,
37
+ checkBackgroundColor,
38
+ isControlled,
39
+ isChecked,
40
+ isInactive,
41
+ handleChange
42
+ } = _ref2;
43
+ return {
44
+ inputId: id,
45
+ tokens: {
46
+ iconColor: checkColor,
47
+ inputBackgroundColor: boxBackgroundColor,
48
+ iconBackgroundColor: checkBackgroundColor
49
+ },
50
+ isControlled,
51
+ isChecked,
52
+ inactive: isInactive,
53
+ handleChange
54
+ };
55
+ };
14
56
 
15
57
  /**
16
58
  * A basic card component, unstyled by default.
@@ -60,16 +102,18 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
60
102
  * you automatically make inaccessible its children, which may or may not be appropriate
61
103
  * depending on what you are trying to achieve.
62
104
  */
63
- const Card = /*#__PURE__*/forwardRef((_ref, ref) => {
105
+ const Card = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
106
+ var _interactiveCard$vari, _interactiveCard$vari2;
64
107
  let {
65
108
  children,
66
109
  tokens,
67
110
  variant,
68
111
  dataSet,
69
112
  onPress,
113
+ id,
70
114
  interactiveCard,
71
115
  ...rest
72
- } = _ref;
116
+ } = _ref3;
73
117
  const viewport = useViewport();
74
118
  const {
75
119
  themeOptions
@@ -81,6 +125,9 @@ const Card = /*#__PURE__*/forwardRef((_ref, ref) => {
81
125
  const themeTokens = useTokens('Card', tokens, variant, !enableMediaQueryStyleSheet && {
82
126
  viewport
83
127
  });
128
+ const selected = interactiveCard === null || interactiveCard === void 0 ? void 0 : (_interactiveCard$vari = interactiveCard.variant) === null || _interactiveCard$vari === void 0 ? void 0 : _interactiveCard$vari.selected;
129
+ const inactive = interactiveCard === null || interactiveCard === void 0 ? void 0 : (_interactiveCard$vari2 = interactiveCard.variant) === null || _interactiveCard$vari2 === void 0 ? void 0 : _interactiveCard$vari2.inactive;
130
+ const selectionType = interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.selectionType;
84
131
  const getThemeTokens = useThemeTokensCallback('Card', interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.tokens, {
85
132
  interactive: true,
86
133
  ...((interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.variant) || {})
@@ -93,7 +140,45 @@ const Card = /*#__PURE__*/forwardRef((_ref, ref) => {
93
140
  paddingLeft,
94
141
  paddingRight,
95
142
  ...restOfTokens
96
- } = themeTokens;
143
+ } = selectionType ? getThemeTokens() : themeTokens;
144
+ const {
145
+ inputBackgroundColor,
146
+ iconBackgroundColor,
147
+ iconColor,
148
+ icon,
149
+ inputBorderRadius,
150
+ inputHeight,
151
+ inputWidth,
152
+ iconSize,
153
+ inputShadow,
154
+ inputBorderWidth,
155
+ inputBorderColor
156
+ } = getThemeTokens();
157
+ const checkboxTokens = {
158
+ inputBackgroundColor,
159
+ iconBackgroundColor,
160
+ icon,
161
+ iconColor,
162
+ inputBorderRadius,
163
+ inputHeight,
164
+ inputWidth,
165
+ iconSize,
166
+ inputShadow,
167
+ inputBorderWidth,
168
+ inputBorderColor
169
+ };
170
+ const radioTokens = {
171
+ iconBackgroundColor,
172
+ iconColor,
173
+ containerShadow: inputShadow,
174
+ icon,
175
+ inputBackgroundColor,
176
+ inputBorderRadius,
177
+ inputSize: inputHeight,
178
+ checkedSize: iconSize,
179
+ inputBorderWidth,
180
+ inputBorderColor
181
+ };
97
182
  let cardStyles;
98
183
  let mediaIds;
99
184
  if (enableMediaQueryStyleSheet) {
@@ -109,6 +194,43 @@ const Card = /*#__PURE__*/forwardRef((_ref, ref) => {
109
194
  } else {
110
195
  cardStyles = themeTokens;
111
196
  }
197
+ const renderInputPerSelectionType = props => {
198
+ switch (selectionType) {
199
+ case SelectionType.Checkbox:
200
+ return /*#__PURE__*/_jsx(View, {
201
+ style: selectInputStyle(getThemeTokens()),
202
+ children: /*#__PURE__*/_jsx(CheckboxButton, {
203
+ ...props,
204
+ tokens: {
205
+ ...checkboxTokens,
206
+ ...(props === null || props === void 0 ? void 0 : props.tokens)
207
+ }
208
+ })
209
+ });
210
+ case SelectionType.Radio:
211
+ return /*#__PURE__*/_jsx(View, {
212
+ style: selectInputStyle(getThemeTokens()),
213
+ children: /*#__PURE__*/_jsx(RadioButton, {
214
+ ...props,
215
+ tokens: {
216
+ ...radioTokens,
217
+ ...(props === null || props === void 0 ? void 0 : props.tokens)
218
+ }
219
+ })
220
+ });
221
+ default:
222
+ return null;
223
+ }
224
+ };
225
+ const renderNoSelectionView = () => /*#__PURE__*/_jsx(View, {
226
+ style: {
227
+ paddingTop,
228
+ paddingBottom,
229
+ paddingLeft,
230
+ paddingRight
231
+ },
232
+ children: children
233
+ });
112
234
  return /*#__PURE__*/_jsx(_Fragment, {
113
235
  children: /*#__PURE__*/_jsx(CardBase, {
114
236
  ref: ref,
@@ -124,16 +246,31 @@ const Card = /*#__PURE__*/forwardRef((_ref, ref) => {
124
246
  dataSet: dataSet,
125
247
  onPress: onPress,
126
248
  ...selectProps(rest),
127
- children: interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.body
128
- }), children ? /*#__PURE__*/_jsx(View, {
129
- style: {
130
- paddingTop,
131
- paddingBottom,
132
- paddingLeft,
133
- paddingRight
134
- },
135
- children: children
136
- }) : null]
249
+ children: cardState => {
250
+ const {
251
+ iconColor: checkColor,
252
+ inputBackgroundColor: boxBackgroundColor,
253
+ iconBackgroundColor: checkBackgroundColor
254
+ } = getThemeTokens({
255
+ ...cardState,
256
+ selected,
257
+ interactive: true,
258
+ isControl: true
259
+ }, interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.tokens);
260
+ return /*#__PURE__*/_jsxs(_Fragment, {
261
+ children: [renderInputPerSelectionType(getInputProps({
262
+ id,
263
+ checkColor,
264
+ boxBackgroundColor,
265
+ checkBackgroundColor,
266
+ isControlled: true,
267
+ isChecked: selected || (cardState === null || cardState === void 0 ? void 0 : cardState.hover),
268
+ isInactive: inactive,
269
+ onPress
270
+ })), interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.body]
271
+ });
272
+ }
273
+ }), children && selectionType !== SelectionType.None ? renderNoSelectionView() : null]
137
274
  }) : children
138
275
  })
139
276
  });
@@ -158,15 +295,23 @@ Card.propTypes = {
158
295
  * Note: This is only available when `interactiveCard` prop is used.
159
296
  */
160
297
  onPress: PropTypes.func,
298
+ /**
299
+ * Card ID.
300
+ */
301
+ id: PropTypes.string,
161
302
  /**
162
303
  * Object to set interactive card's properties
163
304
  * - body: The body of the interactive card, can be any renderable node
164
305
  * - tokens: The tokens to be used for the interactive card
306
+ * - selectionType: If the card has `isControl` variant set to `true`, the selectionType can have one of the following options:
307
+ - `radiogroup`
308
+ - `checkbox`
165
309
  * - variant: The variant to be used for the interactive card
166
310
  */
167
311
  interactiveCard: PropTypes.shape({
168
312
  body: PropTypes.node,
169
313
  tokens: getTokensPropType('Card'),
314
+ selectionType: PropTypes.oneOf(Object.values(SelectionType)),
170
315
  variant: variantProp.propType
171
316
  })
172
317
  };
@@ -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-web/dist/exports/View";
4
4
  import Platform from "react-native-web/dist/exports/Platform";
@@ -49,7 +49,7 @@ const selectStyles = _ref => {
49
49
  * A themeless base component for Card which components can apply theme tokens to. Not
50
50
  * intended to be used in apps or sites directly: build themed components on top of this.
51
51
  */
52
- const CardBase = /*#__PURE__*/forwardRef((_ref2, ref) => {
52
+ const CardBase = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
53
53
  let {
54
54
  children,
55
55
  tokens,
@@ -1,14 +1,14 @@
1
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Pressable from "react-native-web/dist/exports/Pressable";
4
4
  import Platform from "react-native-web/dist/exports/Platform";
5
5
  import { useViewport } from '../ViewportProvider';
6
6
  import { applyOuterBorder, validateThemeTokens } from '../ThemeProvider';
7
- import { a11yProps, clickProps, focusHandlerProps, getTokenNames, getTokensSetPropType, linkProps, resolvePressableState, resolvePressableTokens, selectSystemProps, selectTokens, variantProp, viewProps, withLinkRouter } from '../utils';
7
+ import { a11yProps, clickProps, focusHandlerProps, getTokensSetPropType, linkProps, resolvePressableState, resolvePressableTokens, selectSystemProps, selectTokens, variantProp, viewProps, withLinkRouter } from '../utils';
8
8
  import CardBase from './CardBase';
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, viewProps]);
11
- const tokenKeys = [...getTokenNames('Card'),
11
+ const tokenKeys = ['flex', 'backgroundColor', 'borderColor', 'gradient', 'borderRadius', 'borderWidth', 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop', 'minWidth', 'shadow', 'contentAlignItems', 'contentJustifyContent', 'contentFlexGrow', 'contentFlexShrink',
12
12
  // Outer border tokens. TODO: centralise common token sets like these as part of
13
13
  // https://github.com/telus/universal-design-system/issues/782
14
14
  'outerBorderColor', 'outerBorderWidth', 'outerBorderGap'];
@@ -19,7 +19,7 @@ export const selectPressableCardTokens = tokens => Object.fromEntries(tokenKeys.
19
19
  * based on these to an outer border and a base Card component. Not intended to be used in
20
20
  * apps or sites directly: build themed components on top of this.
21
21
  */
22
- const PressableCardBase = /*#__PURE__*/forwardRef((_ref, ref) => {
22
+ const PressableCardBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
23
23
  let {
24
24
  children,
25
25
  tokens,
@@ -0,0 +1,210 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { a11yProps, focusHandlerProps, containUniqueFields, selectSystemProps, useMultipleInputValues, useInputValue, useCopy, viewProps, variantProp, getTokensPropType, copyPropTypes } from '../utils';
4
+ import defaultDictionary from './dictionary';
5
+ import { useViewport } from '../ViewportProvider';
6
+ import { useThemeTokens } from '../ThemeProvider';
7
+ import StackView, { StackWrap } from '../StackView';
8
+ import Card from '../Card';
9
+ import Fieldset from '../Fieldset';
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
12
+ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, viewProps]);
13
+ const uniqueFields = ['id'];
14
+ const CardGroup = /*#__PURE__*/React.forwardRef((_ref, ref) => {
15
+ let {
16
+ copy = 'en',
17
+ tokens = {},
18
+ variant = {},
19
+ items = [],
20
+ validation,
21
+ feedback,
22
+ initialCheckedIds,
23
+ checkedIds,
24
+ onChange,
25
+ role = 'radiogroup',
26
+ isInactive,
27
+ name: inputGroupName,
28
+ dictionary = defaultDictionary,
29
+ ...rest
30
+ } = _ref;
31
+ const getCopy = useCopy({
32
+ dictionary,
33
+ copy
34
+ });
35
+ const viewport = useViewport();
36
+ const cardGroupTokens = useThemeTokens('CardGroup', tokens, variant, {
37
+ viewport
38
+ });
39
+ const {
40
+ space,
41
+ fieldSpace,
42
+ direction,
43
+ showIcon,
44
+ outlineWidth,
45
+ borderTopLeftRadius,
46
+ borderTopRightRadius,
47
+ borderBottomLeftRadius,
48
+ borderBottomRightRadius,
49
+ outlineOffset,
50
+ paddingTop,
51
+ paddingBottom,
52
+ paddingLeft,
53
+ paddingRight
54
+ } = cardGroupTokens;
55
+ const borderTokens = {
56
+ outlineWidth,
57
+ borderTopLeftRadius,
58
+ borderTopRightRadius,
59
+ borderBottomLeftRadius,
60
+ borderBottomRightRadius,
61
+ outlineOffset
62
+ };
63
+ const singleSelection = role === 'radiogroup';
64
+ const inputControl = {
65
+ value: checkedIds,
66
+ initialValue: initialCheckedIds,
67
+ onChange,
68
+ readOnly: isInactive
69
+ };
70
+ const singleInputValue = useInputValue(inputControl);
71
+ const multipleInputValues = useMultipleInputValues(inputControl);
72
+ const StackContainer = direction === 'row' ? StackWrap : StackView;
73
+ if (!containUniqueFields(items, uniqueFields)) {
74
+ throw new Error(`CardGroup items must have unique ${uniqueFields.join(', ')}`);
75
+ }
76
+ const handleChange = React.useCallback((checked, event, cardId, itemOnChange) => {
77
+ if (checked && singleSelection) {
78
+ singleInputValue.setValue(cardId, event);
79
+ } else {
80
+ multipleInputValues.toggleOneValue(cardId, event);
81
+ }
82
+ return itemOnChange === null || itemOnChange === void 0 ? void 0 : itemOnChange(checked, event);
83
+ }, [singleInputValue, multipleInputValues, singleSelection]);
84
+ return /*#__PURE__*/_jsx(Fieldset, {
85
+ copy: copy,
86
+ ref: ref,
87
+ name: inputGroupName,
88
+ space: fieldSpace,
89
+ feedback: feedback,
90
+ validation: validation,
91
+ tokens: borderTokens,
92
+ inactive: isInactive,
93
+ showErrorBorder: true,
94
+ showIcon: showIcon,
95
+ accessibilityRole: role,
96
+ ...selectProps(rest),
97
+ children: props => /*#__PURE__*/_jsx(StackContainer, {
98
+ space: space,
99
+ children: items.map((_ref2, index) => {
100
+ let {
101
+ id,
102
+ interactiveCard,
103
+ card,
104
+ onPress: itemOnChange,
105
+ ...itemRest
106
+ } = _ref2;
107
+ const cardId = id || `${getCopy('prefixId')}[${index}]`;
108
+ const itemHandleChange = (checked, event) => handleChange(checked, event, cardId, itemOnChange);
109
+ return /*#__PURE__*/_jsx(Card, {
110
+ id: cardId,
111
+ onPress: itemHandleChange,
112
+ interactiveCard: {
113
+ ...interactiveCard,
114
+ tokens: {
115
+ paddingTop,
116
+ paddingBottom,
117
+ paddingLeft,
118
+ paddingRight,
119
+ ...(interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.tokens)
120
+ },
121
+ variant: {
122
+ isControl: true,
123
+ selected: singleSelection ? singleInputValue.currentValue === cardId : multipleInputValues.currentValues.includes(cardId),
124
+ inactive: isInactive
125
+ },
126
+ selectionType: role
127
+ },
128
+ ...selectItemProps(itemRest),
129
+ ...props,
130
+ children: card === null || card === void 0 ? void 0 : card.body
131
+ }, cardId);
132
+ })
133
+ })
134
+ });
135
+ });
136
+ CardGroup.displayName = 'CardGroup';
137
+ const dictionaryContentShape = PropTypes.shape({
138
+ prefixId: PropTypes.string.isRequired
139
+ });
140
+ CardGroup.propTypes = {
141
+ ...selectedSystemPropTypes,
142
+ copy: copyPropTypes,
143
+ /**
144
+ * Override the default dictionary, by passing the complete dictionary object for `en` and `fr`
145
+ */
146
+ dictionary: PropTypes.shape({
147
+ en: dictionaryContentShape,
148
+ fr: dictionaryContentShape
149
+ }),
150
+ /**
151
+ * Optional theme token overrides for the outer RadioCardGroup component
152
+ */
153
+ tokens: getTokensPropType('CardGroup'),
154
+ /**
155
+ * Theme variants, shared between both RadioCardGroup and RadioCard
156
+ */
157
+ variant: variantProp.propType,
158
+ /**
159
+ * Array of objects containing specifics for each Card to be rendered in the group.
160
+ */
161
+ items: PropTypes.arrayOf(PropTypes.exact({
162
+ ...selectedItemPropTypes,
163
+ id: PropTypes.string,
164
+ interactiveCard: PropTypes.object,
165
+ card: PropTypes.object,
166
+ onPress: PropTypes.func
167
+ })),
168
+ /**
169
+ * Current validation status of the group, passed to the feedback element if there is one.
170
+ */
171
+ validation: PropTypes.oneOf(['error', 'success']),
172
+ /**
173
+ * If provided, a Feedback element is rendered containing this text.
174
+ */
175
+ feedback: PropTypes.string,
176
+ /**
177
+ * If provided, the card with this id is selected on first render.
178
+ * If the role is radiogroup, it's a string
179
+ * If the role is checkbox, it's a array of string.
180
+ * Can have 'null' as value
181
+ */
182
+ initialCheckedIds: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
183
+ /**
184
+ * If not undefined, the card with this id is selected (or none is selected if `null`), and the
185
+ * element's selection state will be controlled by its parent using the `onChange` function.
186
+ * If the role is radiogroup, it's a string
187
+ * If the role is checkbox, it's a array of string.
188
+ * Can have 'null' as value
189
+ */
190
+ checkedIds: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
191
+ /**
192
+ * Function to call on change in selection state. Is required if the selection state is controlled
193
+ * by a parent using checkedId and the input is not readOnly.
194
+ */
195
+ onChange: PropTypes.func,
196
+ /**
197
+ * Renders the card group like a radio card group or a checkbox card group
198
+ */
199
+ role: PropTypes.oneOf(['radiogroup', 'checkbox']),
200
+ /**
201
+ * If true, the card cannot be interacted with, elements are set as `disabled` and if the
202
+ * theme supports `inactive` appearances rules, these are applied.
203
+ */
204
+ isInactive: PropTypes.bool,
205
+ /**
206
+ * On Web, this is passed to the `name` attribute of the fieldset and each input.
207
+ */
208
+ name: PropTypes.string
209
+ };
210
+ export default CardGroup;
@@ -0,0 +1,8 @@
1
+ export default {
2
+ en: {
3
+ prefixId: 'Card'
4
+ },
5
+ fr: {
6
+ prefixId: 'Carte'
7
+ }
8
+ };