@telus-uds/components-base 1.65.0 → 1.67.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 (487) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/lib/A11yInfoProvider/index.js +5 -20
  3. package/lib/A11yText/index.js +3 -17
  4. package/lib/ActivityIndicator/Spinner.js +2 -9
  5. package/lib/ActivityIndicator/Spinner.native.js +4 -27
  6. package/lib/ActivityIndicator/index.js +1 -13
  7. package/lib/ActivityIndicator/shared.js +0 -3
  8. package/lib/Autocomplete/Autocomplete.js +34 -85
  9. package/lib/Autocomplete/Loading.js +0 -10
  10. package/lib/Autocomplete/Suggestions.js +0 -11
  11. package/lib/Autocomplete/index.js +0 -3
  12. package/lib/BaseProvider/HydrationContext.js +4 -18
  13. package/lib/BaseProvider/index.js +0 -12
  14. package/lib/Box/Box.js +10 -35
  15. package/lib/Box/index.js +0 -3
  16. package/lib/Button/Button.js +4 -13
  17. package/lib/Button/ButtonBase.js +23 -55
  18. package/lib/Button/ButtonDropdown.js +7 -32
  19. package/lib/Button/ButtonGroup.js +15 -48
  20. package/lib/Button/ButtonLink.js +3 -17
  21. package/lib/Button/index.js +0 -5
  22. package/lib/Button/propTypes.js +0 -15
  23. package/lib/Card/Card.js +3 -14
  24. package/lib/Card/CardBase.js +5 -16
  25. package/lib/Card/PressableCardBase.js +7 -30
  26. package/lib/Card/index.js +0 -7
  27. package/lib/Carousel/Carousel.js +22 -115
  28. package/lib/Carousel/CarouselContext.js +0 -14
  29. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +6 -18
  30. package/lib/Carousel/CarouselItem/CarouselItem.js +5 -20
  31. package/lib/Carousel/CarouselItem/index.js +0 -3
  32. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -9
  33. package/lib/Carousel/CarouselStepTracker/index.js +0 -3
  34. package/lib/Carousel/CarouselTabs/CarouselTabs.js +5 -15
  35. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -16
  36. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -22
  37. package/lib/Carousel/CarouselTabs/index.js +0 -3
  38. package/lib/Carousel/CarouselThumbnail.js +1 -16
  39. package/lib/Carousel/CarouselThumbnailNavigation.js +0 -15
  40. package/lib/Carousel/index.js +0 -5
  41. package/lib/Checkbox/Checkbox.js +5 -44
  42. package/lib/Checkbox/CheckboxButton.js +7 -33
  43. package/lib/Checkbox/CheckboxGroup.js +5 -37
  44. package/lib/Checkbox/CheckboxInput.js +1 -11
  45. package/lib/Checkbox/CheckboxInput.native.js +0 -2
  46. package/lib/Checkbox/index.js +0 -4
  47. package/lib/CheckboxCard/CheckboxCard.js +4 -37
  48. package/lib/CheckboxCard/index.js +0 -3
  49. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +215 -0
  50. package/lib/CheckboxCardGroup/index.js +10 -0
  51. package/lib/Divider/Divider.js +13 -24
  52. package/lib/Divider/index.js +0 -3
  53. package/lib/ExpandCollapse/Accordion.js +1 -9
  54. package/lib/ExpandCollapse/Control.js +10 -32
  55. package/lib/ExpandCollapse/ExpandCollapse.js +3 -19
  56. package/lib/ExpandCollapse/Panel.js +13 -38
  57. package/lib/ExpandCollapse/index.js +0 -5
  58. package/lib/Feedback/Feedback.js +13 -30
  59. package/lib/Feedback/index.js +0 -3
  60. package/lib/Fieldset/Fieldset.js +6 -37
  61. package/lib/Fieldset/FieldsetContainer.js +1 -10
  62. package/lib/Fieldset/FieldsetContainer.native.js +0 -8
  63. package/lib/Fieldset/Legend.js +1 -10
  64. package/lib/Fieldset/Legend.native.js +1 -13
  65. package/lib/Fieldset/index.js +0 -3
  66. package/lib/FlexGrid/Col/Col.js +10 -53
  67. package/lib/FlexGrid/Col/index.js +0 -3
  68. package/lib/FlexGrid/FlexGrid.js +3 -34
  69. package/lib/FlexGrid/Row/Row.js +0 -38
  70. package/lib/FlexGrid/Row/index.js +0 -3
  71. package/lib/FlexGrid/helpers/index.js +0 -4
  72. package/lib/FlexGrid/index.js +0 -3
  73. package/lib/FlexGrid/providers/GutterContext.js +0 -4
  74. package/lib/HorizontalScroll/HorizontalScroll.js +17 -45
  75. package/lib/HorizontalScroll/HorizontalScrollButton.js +1 -17
  76. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -13
  77. package/lib/HorizontalScroll/ScrollViewEnd.native.js +1 -10
  78. package/lib/HorizontalScroll/index.js +0 -7
  79. package/lib/HorizontalScroll/itemPositions.js +8 -19
  80. package/lib/Icon/Icon.js +4 -17
  81. package/lib/Icon/IconText.js +5 -25
  82. package/lib/Icon/index.js +0 -6
  83. package/lib/IconButton/IconButton.js +5 -37
  84. package/lib/IconButton/index.js +0 -3
  85. package/lib/InputLabel/InputLabel.js +4 -28
  86. package/lib/InputLabel/LabelContent.js +2 -8
  87. package/lib/InputLabel/LabelContent.native.js +0 -8
  88. package/lib/InputLabel/index.js +0 -3
  89. package/lib/InputSupports/InputSupports.js +0 -21
  90. package/lib/InputSupports/index.js +0 -3
  91. package/lib/InputSupports/useInputSupports.js +2 -6
  92. package/lib/Link/ChevronLink.js +7 -18
  93. package/lib/Link/InlinePressable.js +0 -10
  94. package/lib/Link/InlinePressable.native.js +5 -18
  95. package/lib/Link/Link.js +0 -8
  96. package/lib/Link/LinkBase.js +17 -47
  97. package/lib/Link/TextButton.js +3 -16
  98. package/lib/Link/index.js +0 -5
  99. package/lib/List/List.js +5 -21
  100. package/lib/List/ListItem.js +1 -11
  101. package/lib/List/ListItemBase.js +5 -34
  102. package/lib/List/ListItemContent.js +1 -14
  103. package/lib/List/ListItemMark.js +3 -23
  104. package/lib/List/PressableListItemBase.js +2 -28
  105. package/lib/List/index.js +0 -4
  106. package/lib/Listbox/GroupControl.js +0 -14
  107. package/lib/Listbox/Listbox.js +15 -40
  108. package/lib/Listbox/ListboxContext.js +0 -7
  109. package/lib/Listbox/ListboxGroup.js +7 -19
  110. package/lib/Listbox/ListboxItem.js +3 -17
  111. package/lib/Listbox/ListboxOverlay.js +4 -20
  112. package/lib/Listbox/PressableItem.js +3 -18
  113. package/lib/Listbox/index.js +0 -3
  114. package/lib/Modal/Modal.js +94 -45
  115. package/lib/Modal/ModalContent.js +184 -0
  116. package/lib/Modal/index.js +0 -3
  117. package/lib/MultiSelectFilter/ModalOverlay.js +1 -20
  118. package/lib/MultiSelectFilter/MultiSelectFilter.js +20 -69
  119. package/lib/MultiSelectFilter/index.js +0 -3
  120. package/lib/Notification/Notification.js +11 -38
  121. package/lib/Notification/index.js +0 -3
  122. package/lib/Pagination/PageButton.js +2 -22
  123. package/lib/Pagination/Pagination.js +21 -42
  124. package/lib/Pagination/SideButton.js +0 -24
  125. package/lib/Pagination/index.js +0 -3
  126. package/lib/Pagination/usePagination.js +4 -9
  127. package/lib/Progress/Progress.js +3 -17
  128. package/lib/Progress/ProgressBar.js +3 -25
  129. package/lib/Progress/ProgressBarBackground.js +0 -12
  130. package/lib/Progress/index.js +0 -4
  131. package/lib/QuickLinks/QuickLinks.js +1 -18
  132. package/lib/QuickLinks/QuickLinksCard.js +1 -11
  133. package/lib/QuickLinks/QuickLinksItem.js +3 -17
  134. package/lib/QuickLinks/index.js +0 -4
  135. package/lib/QuickLinksFeature/QuickLinksFeature.js +3 -20
  136. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +7 -30
  137. package/lib/QuickLinksFeature/index.js +0 -4
  138. package/lib/Radio/Radio.js +5 -39
  139. package/lib/Radio/RadioButton.js +7 -26
  140. package/lib/Radio/RadioGroup.js +6 -39
  141. package/lib/Radio/RadioInput.js +1 -11
  142. package/lib/Radio/RadioInput.native.js +0 -2
  143. package/lib/Radio/index.js +0 -4
  144. package/lib/RadioCard/RadioCard.js +5 -38
  145. package/lib/RadioCard/RadioCardGroup.js +7 -38
  146. package/lib/RadioCard/index.js +0 -4
  147. package/lib/Responsive/Responsive.js +1 -14
  148. package/lib/Responsive/index.js +0 -3
  149. package/lib/Search/Search.js +22 -45
  150. package/lib/Search/index.js +0 -3
  151. package/lib/Select/Group.js +0 -8
  152. package/lib/Select/Group.native.js +0 -6
  153. package/lib/Select/Item.js +0 -7
  154. package/lib/Select/Item.native.js +0 -2
  155. package/lib/Select/Picker.js +0 -8
  156. package/lib/Select/Picker.native.js +6 -22
  157. package/lib/Select/Select.js +9 -52
  158. package/lib/Select/index.js +0 -5
  159. package/lib/SideNav/Item.js +5 -29
  160. package/lib/SideNav/ItemContent.js +1 -14
  161. package/lib/SideNav/ItemsGroup.js +9 -31
  162. package/lib/SideNav/SideNav.js +9 -33
  163. package/lib/SideNav/index.js +0 -2
  164. package/lib/Skeleton/Skeleton.js +10 -42
  165. package/lib/Skeleton/index.js +0 -3
  166. package/lib/Skeleton/skeletonWebAnimation.js +0 -2
  167. package/lib/Skeleton/useSkeletonNativeAnimation.js +1 -9
  168. package/lib/SkipLink/SkipLink.js +7 -27
  169. package/lib/SkipLink/index.js +0 -3
  170. package/lib/Spacer/Spacer.js +4 -20
  171. package/lib/Spacer/index.js +0 -3
  172. package/lib/StackView/StackView.js +3 -21
  173. package/lib/StackView/StackWrap.js +11 -21
  174. package/lib/StackView/StackWrap.native.js +0 -3
  175. package/lib/StackView/StackWrapBox.js +5 -21
  176. package/lib/StackView/StackWrapGap.js +1 -14
  177. package/lib/StackView/common.js +0 -6
  178. package/lib/StackView/getStackedContent.js +10 -21
  179. package/lib/StackView/index.js +0 -5
  180. package/lib/StepTracker/Step.js +3 -27
  181. package/lib/StepTracker/StepTracker.js +5 -32
  182. package/lib/StepTracker/index.js +0 -3
  183. package/lib/Tabs/Tabs.js +7 -30
  184. package/lib/Tabs/TabsItem.js +13 -38
  185. package/lib/Tabs/index.js +0 -3
  186. package/lib/Tags/Tags.js +9 -42
  187. package/lib/Tags/index.js +0 -3
  188. package/lib/TextInput/TextArea.js +11 -20
  189. package/lib/TextInput/TextInput.js +7 -16
  190. package/lib/TextInput/TextInputBase.js +106 -69
  191. package/lib/TextInput/index.js +0 -3
  192. package/lib/TextInput/propTypes.js +4 -7
  193. package/lib/ThemeProvider/ThemeProvider.js +10 -18
  194. package/lib/ThemeProvider/index.js +0 -9
  195. package/lib/ThemeProvider/useSetTheme.js +6 -9
  196. package/lib/ThemeProvider/useTheme.js +2 -7
  197. package/lib/ThemeProvider/useThemeTokens.js +1 -9
  198. package/lib/ThemeProvider/utils/index.js +0 -4
  199. package/lib/ThemeProvider/utils/styles.js +14 -35
  200. package/lib/ThemeProvider/utils/theme-tokens.js +15 -43
  201. package/lib/Timeline/Timeline.js +11 -27
  202. package/lib/Timeline/index.js +0 -3
  203. package/lib/ToggleSwitch/ToggleSwitch.js +12 -43
  204. package/lib/ToggleSwitch/ToggleSwitchGroup.js +4 -38
  205. package/lib/ToggleSwitch/index.js +0 -3
  206. package/lib/Tooltip/Backdrop.js +4 -11
  207. package/lib/Tooltip/Backdrop.native.js +1 -14
  208. package/lib/Tooltip/Tooltip.js +9 -37
  209. package/lib/Tooltip/Tooltip.native.js +14 -45
  210. package/lib/Tooltip/getTooltipPosition.js +26 -31
  211. package/lib/Tooltip/index.js +0 -5
  212. package/lib/Tooltip/shared.js +0 -10
  213. package/lib/TooltipButton/TooltipButton.js +5 -20
  214. package/lib/TooltipButton/index.js +0 -3
  215. package/lib/Typography/Typography.js +15 -38
  216. package/lib/Typography/index.js +0 -3
  217. package/lib/Validator/Validator.js +10 -58
  218. package/lib/Validator/index.js +0 -3
  219. package/lib/ViewportProvider/ViewportProvider.js +1 -13
  220. package/lib/ViewportProvider/index.js +0 -5
  221. package/lib/ViewportProvider/useViewport.js +0 -4
  222. package/lib/ViewportProvider/useViewportListener.js +3 -12
  223. package/lib/index.js +8 -71
  224. package/lib/utils/BaseView/BaseView.js +3 -17
  225. package/lib/utils/BaseView/BaseView.native.js +0 -3
  226. package/lib/utils/BaseView/index.js +0 -3
  227. package/lib/utils/a11y/index.js +0 -4
  228. package/lib/utils/a11y/semantics.js +14 -32
  229. package/lib/utils/a11y/textSize.js +1 -8
  230. package/lib/utils/animation/index.js +0 -2
  231. package/lib/utils/animation/useVerticalExpandAnimation.js +5 -18
  232. package/lib/utils/children.js +16 -28
  233. package/lib/utils/containUniqueFields.js +2 -5
  234. package/lib/utils/floating-ui/index.js +0 -1
  235. package/lib/utils/floating-ui/index.native.js +0 -1
  236. package/lib/utils/hasOwnProperty.js +0 -1
  237. package/lib/utils/htmlAttrs.js +2 -4
  238. package/lib/utils/index.js +0 -31
  239. package/lib/utils/info/index.js +0 -4
  240. package/lib/utils/info/platform/index.js +0 -4
  241. package/lib/utils/info/versions.js +0 -3
  242. package/lib/utils/input.js +12 -24
  243. package/lib/utils/pressability.js +7 -21
  244. package/lib/utils/props/a11yProps.js +19 -25
  245. package/lib/utils/props/clickProps.js +0 -4
  246. package/lib/utils/props/componentPropType.js +0 -14
  247. package/lib/utils/props/copyPropTypes.js +0 -4
  248. package/lib/utils/props/getPropSelector.js +11 -12
  249. package/lib/utils/props/handlerProps.js +2 -23
  250. package/lib/utils/props/hrefAttrsProp.js +0 -4
  251. package/lib/utils/props/index.js +0 -22
  252. package/lib/utils/props/inputSupportsProps.js +0 -9
  253. package/lib/utils/props/linkProps.js +2 -12
  254. package/lib/utils/props/paddingProp.js +0 -3
  255. package/lib/utils/props/pressProps.js +2 -8
  256. package/lib/utils/props/rectProp.js +0 -3
  257. package/lib/utils/props/responsiveProps.js +1 -5
  258. package/lib/utils/props/selectSystemProps.js +4 -6
  259. package/lib/utils/props/spacingProps.js +3 -10
  260. package/lib/utils/props/textInputProps.js +11 -31
  261. package/lib/utils/props/textProps.js +6 -11
  262. package/lib/utils/props/tokens.js +7 -26
  263. package/lib/utils/props/variantProp.js +0 -3
  264. package/lib/utils/props/viewProps.js +0 -5
  265. package/lib/utils/ssr.js +13 -33
  266. package/lib/utils/useCopy.js +3 -6
  267. package/lib/utils/useHash.js +5 -10
  268. package/lib/utils/useHash.native.js +0 -2
  269. package/lib/utils/useOverlaidPosition.js +6 -29
  270. package/lib/utils/useResponsiveProp.js +6 -13
  271. package/lib/utils/useSafeLayoutEffect.js +5 -10
  272. package/lib/utils/useScrollBlocking.js +3 -11
  273. package/lib/utils/useScrollBlocking.native.js +0 -2
  274. package/lib/utils/useSpacingScale.js +5 -8
  275. package/lib/utils/useUniqueId.js +0 -4
  276. package/lib/utils/withLinkRouter.js +13 -18
  277. package/lib-module/A11yInfoProvider/index.js +5 -9
  278. package/lib-module/A11yText/index.js +3 -4
  279. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  280. package/lib-module/ActivityIndicator/Spinner.native.js +4 -6
  281. package/lib-module/ActivityIndicator/index.js +1 -5
  282. package/lib-module/ActivityIndicator/shared.js +2 -1
  283. package/lib-module/Autocomplete/Autocomplete.js +34 -59
  284. package/lib-module/Autocomplete/Loading.js +0 -2
  285. package/lib-module/BaseProvider/HydrationContext.js +4 -7
  286. package/lib-module/BaseProvider/index.js +0 -3
  287. package/lib-module/Box/Box.js +10 -24
  288. package/lib-module/Button/Button.js +4 -2
  289. package/lib-module/Button/ButtonBase.js +23 -35
  290. package/lib-module/Button/ButtonDropdown.js +7 -16
  291. package/lib-module/Button/ButtonGroup.js +15 -32
  292. package/lib-module/Button/ButtonLink.js +3 -2
  293. package/lib-module/Button/propTypes.js +0 -7
  294. package/lib-module/Card/Card.js +3 -2
  295. package/lib-module/Card/CardBase.js +5 -4
  296. package/lib-module/Card/PressableCardBase.js +7 -11
  297. package/lib-module/Carousel/Carousel.js +22 -60
  298. package/lib-module/Carousel/CarouselContext.js +0 -5
  299. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +7 -5
  300. package/lib-module/Carousel/CarouselItem/CarouselItem.js +5 -11
  301. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -2
  302. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +3 -4
  303. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -6
  304. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -10
  305. package/lib-module/Carousel/CarouselThumbnail.js +1 -7
  306. package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -2
  307. package/lib-module/Checkbox/Checkbox.js +5 -23
  308. package/lib-module/Checkbox/CheckboxButton.js +7 -17
  309. package/lib-module/Checkbox/CheckboxGroup.js +5 -23
  310. package/lib-module/Checkbox/CheckboxInput.js +1 -3
  311. package/lib-module/Checkbox/CheckboxInput.native.js +0 -1
  312. package/lib-module/CheckboxCard/CheckboxCard.js +4 -21
  313. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +205 -0
  314. package/lib-module/CheckboxCardGroup/index.js +2 -0
  315. package/lib-module/Divider/Divider.js +13 -11
  316. package/lib-module/ExpandCollapse/Accordion.js +1 -1
  317. package/lib-module/ExpandCollapse/Control.js +10 -17
  318. package/lib-module/ExpandCollapse/ExpandCollapse.js +3 -9
  319. package/lib-module/ExpandCollapse/Panel.js +13 -23
  320. package/lib-module/Feedback/Feedback.js +13 -16
  321. package/lib-module/Fieldset/Fieldset.js +6 -25
  322. package/lib-module/Fieldset/FieldsetContainer.js +1 -1
  323. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -1
  324. package/lib-module/Fieldset/Legend.js +1 -1
  325. package/lib-module/Fieldset/Legend.native.js +1 -1
  326. package/lib-module/FlexGrid/Col/Col.js +10 -37
  327. package/lib-module/FlexGrid/FlexGrid.js +3 -17
  328. package/lib-module/FlexGrid/Row/Row.js +0 -25
  329. package/lib-module/FlexGrid/helpers/index.js +0 -3
  330. package/lib-module/HorizontalScroll/HorizontalScroll.js +17 -27
  331. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +1 -3
  332. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -4
  333. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -1
  334. package/lib-module/HorizontalScroll/itemPositions.js +11 -10
  335. package/lib-module/Icon/Icon.js +4 -8
  336. package/lib-module/Icon/IconText.js +6 -17
  337. package/lib-module/IconButton/IconButton.js +7 -20
  338. package/lib-module/InputLabel/InputLabel.js +4 -13
  339. package/lib-module/InputLabel/LabelContent.js +2 -1
  340. package/lib-module/InputLabel/LabelContent.native.js +0 -1
  341. package/lib-module/InputSupports/InputSupports.js +0 -9
  342. package/lib-module/InputSupports/useInputSupports.js +2 -4
  343. package/lib-module/Link/ChevronLink.js +7 -7
  344. package/lib-module/Link/InlinePressable.js +0 -2
  345. package/lib-module/Link/InlinePressable.native.js +4 -12
  346. package/lib-module/Link/LinkBase.js +17 -25
  347. package/lib-module/Link/TextButton.js +3 -5
  348. package/lib-module/List/List.js +5 -9
  349. package/lib-module/List/ListItem.js +1 -1
  350. package/lib-module/List/ListItemBase.js +5 -17
  351. package/lib-module/List/ListItemContent.js +1 -4
  352. package/lib-module/List/ListItemMark.js +3 -16
  353. package/lib-module/List/PressableListItemBase.js +2 -6
  354. package/lib-module/Listbox/GroupControl.js +0 -2
  355. package/lib-module/Listbox/Listbox.js +15 -23
  356. package/lib-module/Listbox/ListboxContext.js +0 -2
  357. package/lib-module/Listbox/ListboxGroup.js +6 -4
  358. package/lib-module/Listbox/ListboxItem.js +2 -1
  359. package/lib-module/Listbox/ListboxOverlay.js +3 -4
  360. package/lib-module/Listbox/PressableItem.js +2 -7
  361. package/lib-module/Modal/Modal.js +94 -25
  362. package/lib-module/Modal/ModalContent.js +175 -0
  363. package/lib-module/MultiSelectFilter/ModalOverlay.js +1 -4
  364. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +20 -42
  365. package/lib-module/Notification/Notification.js +11 -22
  366. package/lib-module/Pagination/PageButton.js +2 -6
  367. package/lib-module/Pagination/Pagination.js +21 -21
  368. package/lib-module/Pagination/SideButton.js +3 -8
  369. package/lib-module/Pagination/usePagination.js +4 -8
  370. package/lib-module/Progress/Progress.js +3 -7
  371. package/lib-module/Progress/ProgressBar.js +3 -11
  372. package/lib-module/Progress/ProgressBarBackground.js +0 -2
  373. package/lib-module/QuickLinks/QuickLinks.js +1 -6
  374. package/lib-module/QuickLinks/QuickLinksCard.js +1 -3
  375. package/lib-module/QuickLinks/QuickLinksItem.js +3 -2
  376. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +5 -9
  377. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +9 -13
  378. package/lib-module/Radio/Radio.js +5 -22
  379. package/lib-module/Radio/RadioButton.js +8 -10
  380. package/lib-module/Radio/RadioGroup.js +6 -25
  381. package/lib-module/Radio/RadioInput.js +1 -3
  382. package/lib-module/Radio/RadioInput.native.js +0 -1
  383. package/lib-module/RadioCard/RadioCard.js +5 -21
  384. package/lib-module/RadioCard/RadioCardGroup.js +7 -25
  385. package/lib-module/Responsive/Responsive.js +1 -6
  386. package/lib-module/Search/Search.js +22 -31
  387. package/lib-module/Select/Group.js +0 -3
  388. package/lib-module/Select/Group.native.js +0 -3
  389. package/lib-module/Select/Item.js +0 -3
  390. package/lib-module/Select/Item.native.js +0 -1
  391. package/lib-module/Select/Picker.native.js +8 -10
  392. package/lib-module/Select/Select.js +10 -35
  393. package/lib-module/SideNav/Item.js +5 -16
  394. package/lib-module/SideNav/ItemContent.js +1 -2
  395. package/lib-module/SideNav/ItemsGroup.js +9 -19
  396. package/lib-module/SideNav/SideNav.js +9 -22
  397. package/lib-module/Skeleton/Skeleton.js +10 -25
  398. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -1
  399. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +1 -3
  400. package/lib-module/SkipLink/SkipLink.js +7 -9
  401. package/lib-module/Spacer/Spacer.js +4 -7
  402. package/lib-module/StackView/StackView.js +3 -7
  403. package/lib-module/StackView/StackWrap.js +13 -13
  404. package/lib-module/StackView/StackWrap.native.js +2 -1
  405. package/lib-module/StackView/StackWrapBox.js +5 -8
  406. package/lib-module/StackView/StackWrapGap.js +1 -1
  407. package/lib-module/StackView/getStackedContent.js +10 -10
  408. package/lib-module/StepTracker/Step.js +3 -14
  409. package/lib-module/StepTracker/StepTracker.js +5 -13
  410. package/lib-module/Tabs/Tabs.js +7 -16
  411. package/lib-module/Tabs/TabsItem.js +13 -16
  412. package/lib-module/Tags/Tags.js +9 -26
  413. package/lib-module/TextInput/TextArea.js +11 -8
  414. package/lib-module/TextInput/TextInput.js +7 -5
  415. package/lib-module/TextInput/TextInputBase.js +107 -51
  416. package/lib-module/TextInput/propTypes.js +7 -6
  417. package/lib-module/ThemeProvider/ThemeProvider.js +10 -9
  418. package/lib-module/ThemeProvider/useSetTheme.js +6 -7
  419. package/lib-module/ThemeProvider/useTheme.js +2 -5
  420. package/lib-module/ThemeProvider/useThemeTokens.js +1 -2
  421. package/lib-module/ThemeProvider/utils/styles.js +15 -27
  422. package/lib-module/ThemeProvider/utils/theme-tokens.js +15 -20
  423. package/lib-module/Timeline/Timeline.js +11 -17
  424. package/lib-module/ToggleSwitch/ToggleSwitch.js +13 -26
  425. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +4 -23
  426. package/lib-module/Tooltip/Backdrop.js +4 -7
  427. package/lib-module/Tooltip/Backdrop.native.js +1 -4
  428. package/lib-module/Tooltip/Tooltip.js +9 -18
  429. package/lib-module/Tooltip/Tooltip.native.js +14 -23
  430. package/lib-module/Tooltip/getTooltipPosition.js +26 -30
  431. package/lib-module/Tooltip/shared.js +0 -6
  432. package/lib-module/TooltipButton/TooltipButton.js +5 -8
  433. package/lib-module/Typography/Typography.js +14 -22
  434. package/lib-module/Validator/Validator.js +10 -42
  435. package/lib-module/ViewportProvider/ViewportProvider.js +1 -3
  436. package/lib-module/ViewportProvider/useViewportListener.js +6 -8
  437. package/lib-module/index.js +1 -0
  438. package/lib-module/utils/BaseView/BaseView.js +3 -4
  439. package/lib-module/utils/BaseView/BaseView.native.js +0 -1
  440. package/lib-module/utils/a11y/semantics.js +14 -27
  441. package/lib-module/utils/a11y/textSize.js +1 -2
  442. package/lib-module/utils/animation/useVerticalExpandAnimation.js +8 -11
  443. package/lib-module/utils/children.js +17 -19
  444. package/lib-module/utils/containUniqueFields.js +2 -4
  445. package/lib-module/utils/htmlAttrs.js +2 -1
  446. package/lib-module/utils/info/index.js +2 -1
  447. package/lib-module/utils/info/platform/index.js +4 -1
  448. package/lib-module/utils/info/versions.js +2 -1
  449. package/lib-module/utils/input.js +11 -19
  450. package/lib-module/utils/pressability.js +8 -7
  451. package/lib-module/utils/props/a11yProps.js +22 -20
  452. package/lib-module/utils/props/clickProps.js +0 -1
  453. package/lib-module/utils/props/componentPropType.js +0 -13
  454. package/lib-module/utils/props/getPropSelector.js +12 -8
  455. package/lib-module/utils/props/handlerProps.js +2 -19
  456. package/lib-module/utils/props/hrefAttrsProp.js +2 -2
  457. package/lib-module/utils/props/inputSupportsProps.js +0 -6
  458. package/lib-module/utils/props/linkProps.js +2 -3
  459. package/lib-module/utils/props/pressProps.js +2 -2
  460. package/lib-module/utils/props/responsiveProps.js +1 -3
  461. package/lib-module/utils/props/selectSystemProps.js +4 -5
  462. package/lib-module/utils/props/spacingProps.js +4 -3
  463. package/lib-module/utils/props/textInputProps.js +14 -27
  464. package/lib-module/utils/props/textProps.js +9 -7
  465. package/lib-module/utils/props/tokens.js +10 -13
  466. package/lib-module/utils/props/variantProp.js +1 -1
  467. package/lib-module/utils/props/viewProps.js +0 -1
  468. package/lib-module/utils/ssr.js +14 -18
  469. package/lib-module/utils/useCopy.js +3 -5
  470. package/lib-module/utils/useHash.js +5 -9
  471. package/lib-module/utils/useHash.native.js +0 -1
  472. package/lib-module/utils/useOverlaidPosition.js +6 -25
  473. package/lib-module/utils/useResponsiveProp.js +6 -7
  474. package/lib-module/utils/useSafeLayoutEffect.js +5 -7
  475. package/lib-module/utils/useScrollBlocking.js +3 -10
  476. package/lib-module/utils/useSpacingScale.js +4 -4
  477. package/lib-module/utils/useUniqueId.js +0 -2
  478. package/lib-module/utils/withLinkRouter.js +13 -10
  479. package/package.json +2 -2
  480. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +230 -0
  481. package/src/CheckboxCardGroup/index.js +3 -0
  482. package/src/Modal/Modal.jsx +98 -5
  483. package/src/Modal/ModalContent.jsx +171 -0
  484. package/src/TextInput/TextInputBase.jsx +67 -12
  485. package/src/TextInput/propTypes.js +4 -0
  486. package/src/index.js +1 -0
  487. package/src/utils/props/textInputProps.js +1 -0
@@ -8,6 +8,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
8
8
  import { Fragment as _Fragment } from "react/jsx-runtime";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, inputSupportsProps, textInputHandlerProps, textInputProps, viewProps]);
11
+
11
12
  /**
12
13
  * A basic text input component. Use in forms or individually to receive user's input.
13
14
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -26,7 +27,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, foc
26
27
  * supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
27
28
  * their implementation on the web.
28
29
  */
29
-
30
30
  const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
31
31
  let {
32
32
  tokens,
@@ -38,9 +38,11 @@ const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
38
38
  supportsProps,
39
39
  ...selectedProps
40
40
  } = selectProps(rest);
41
- const inputProps = { ...selectedProps,
41
+ const inputProps = {
42
+ ...selectedProps,
42
43
  tokens,
43
- variant: { ...variant,
44
+ variant: {
45
+ ...variant,
44
46
  validation: supportsProps.validation
45
47
  }
46
48
  };
@@ -64,9 +66,9 @@ const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
64
66
  });
65
67
  });
66
68
  TextInput.displayName = 'TextInput';
67
- TextInput.propTypes = { ...selectedSystemPropTypes,
69
+ TextInput.propTypes = {
70
+ ...selectedSystemPropTypes,
68
71
  ...textInputPropTypes,
69
-
70
72
  /**
71
73
  * A callback which if provided will get a clear button rendered and will be called whenever that button gets pressed.
72
74
  */
@@ -7,13 +7,13 @@ import View from "react-native-web/dist/exports/View";
7
7
  import { applyTextStyles, useTheme, useThemeTokens, applyOuterBorder } from '../ThemeProvider';
8
8
  import StackView from '../StackView';
9
9
  import IconButton from '../IconButton';
10
+ import Icon from '../Icon';
10
11
  import { a11yProps, getTokensPropType, selectSystemProps, textInputHandlerProps, textInputProps, useCopy, useInputValue, useSpacingScale, variantProp, viewProps } from '../utils';
11
12
  import dictionary from './dictionary';
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
13
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
15
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, textInputHandlerProps, textInputProps, viewProps]);
15
-
16
- const selectInputStyles = (_ref, themeOptions, inactive) => {
16
+ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
17
17
  let {
18
18
  backgroundColor,
19
19
  color,
@@ -35,11 +35,9 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
35
35
  width,
36
36
  height
37
37
  } = _ref;
38
-
39
38
  // Subtract border width from padding so overall input width/height doesn't
40
39
  // jump around if the border width changes (avoiding NaN and negative padding)
41
40
  const offsetBorder = value => typeof value === 'number' ? Math.max(0, value - borderWidth) : value;
42
-
43
41
  const textStyles = applyTextStyles({
44
42
  fontName,
45
43
  fontSize,
@@ -47,14 +45,12 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
47
45
  fontWeight,
48
46
  themeOptions
49
47
  });
50
-
51
48
  function linesToHeight(lines) {
52
49
  const {
53
50
  lineHeight: absoluteLineHeight
54
51
  } = textStyles;
55
52
  return lines !== undefined ? lines * absoluteLineHeight + paddingTop + paddingBottom : undefined;
56
53
  }
57
-
58
54
  const minHeight = linesToHeight(minLines);
59
55
  const maxHeight = linesToHeight(maxLines);
60
56
  const webStyles = Platform.select({
@@ -62,9 +58,9 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
62
58
  outline: 'none',
63
59
  cursor: inactive ? 'not-allowed' : undefined,
64
60
  resize: minHeight !== maxHeight ? 'vertical' : 'none' // does nothing for an input, only needed for textarea
65
-
66
61
  }
67
62
  });
63
+
68
64
  const paddingWithIcon = iconSize + paddingRight;
69
65
  return {
70
66
  backgroundColor,
@@ -72,7 +68,7 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
72
68
  borderWidth,
73
69
  borderColor,
74
70
  borderRadius,
75
- paddingLeft: offsetBorder(paddingLeft),
71
+ paddingLeft: type === 'card' ? offsetBorder(paddingLeft + 34) : offsetBorder(paddingLeft),
76
72
  paddingRight: icon ? offsetBorder(paddingWithIcon) : offsetBorder(paddingRight),
77
73
  paddingTop: offsetBorder(paddingTop),
78
74
  paddingBottom: offsetBorder(paddingBottom),
@@ -84,7 +80,6 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
84
80
  ...webStyles
85
81
  };
86
82
  };
87
-
88
83
  const selectOuterBorderStyles = _ref2 => {
89
84
  let {
90
85
  outerBackgroundColor,
@@ -101,7 +96,6 @@ const selectOuterBorderStyles = _ref2 => {
101
96
  })
102
97
  };
103
98
  };
104
-
105
99
  const selectIconTokens = _ref3 => {
106
100
  let {
107
101
  iconSize,
@@ -112,7 +106,6 @@ const selectIconTokens = _ref3 => {
112
106
  color: iconColor
113
107
  };
114
108
  };
115
-
116
109
  const selectIconContainerStyles = (_ref4, buttonCount) => {
117
110
  let {
118
111
  buttonSize,
@@ -125,17 +118,61 @@ const selectIconContainerStyles = (_ref4, buttonCount) => {
125
118
  paddingBottom
126
119
  };
127
120
  };
128
-
129
- const selectButtonsContainerStyle = _ref5 => {
121
+ const selectLeftIconContainerStyles = _ref5 => {
130
122
  let {
131
- buttonsPaddingRight
123
+ leftIconPaddingBottom
132
124
  } = _ref5;
125
+ return {
126
+ // not tokenizing paddingLeft as it remains same across brands for now
127
+ paddingLeft: 10,
128
+ paddingBottom: leftIconPaddingBottom
129
+ };
130
+ };
131
+ const selectButtonsContainerStyle = _ref6 => {
132
+ let {
133
+ buttonsPaddingRight
134
+ } = _ref6;
133
135
  return {
134
136
  paddingRight: buttonsPaddingRight
135
137
  };
136
138
  };
137
-
138
- const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
139
+ const getIcon = function () {
140
+ let cardNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
141
+ let {
142
+ defaultCreditIcon,
143
+ amexIcon,
144
+ visaIcon,
145
+ masterCardIcon
146
+ } = arguments.length > 1 ? arguments[1] : undefined;
147
+ const cardType = {
148
+ 1: {
149
+ icon: visaIcon,
150
+ testID: 'visa'
151
+ },
152
+ 2: {
153
+ icon: amexIcon,
154
+ testID: 'amex'
155
+ },
156
+ 4: {
157
+ icon: masterCardIcon,
158
+ testID: 'mastercard'
159
+ }
160
+ };
161
+ const firstDigit = cardNumber ? cardNumber[0] : '';
162
+ const defaultIcon = {
163
+ icon: defaultCreditIcon,
164
+ testID: 'default'
165
+ };
166
+ const selectedIcon = cardNumber.length > 4 ? cardType[firstDigit] || defaultIcon : defaultIcon;
167
+ return /*#__PURE__*/_jsx(Icon, {
168
+ icon: selectedIcon.icon,
169
+ variant: {
170
+ size: 'large'
171
+ },
172
+ testID: selectedIcon.testID
173
+ });
174
+ };
175
+ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
139
176
  let {
140
177
  buttons = [],
141
178
  copy = 'en',
@@ -154,33 +191,28 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
154
191
  tokens,
155
192
  value,
156
193
  variant = {},
194
+ type,
157
195
  ...rest
158
- } = _ref6;
196
+ } = _ref7;
159
197
  const [isFocused, setIsFocused] = useState(false);
160
198
  const [showPassword, setShowPassword] = useState(false);
161
-
162
199
  const handleFocus = event => {
163
200
  setIsFocused(true);
164
201
  if (typeof onFocus === 'function') onFocus(event);
165
202
  };
166
-
167
203
  const handleBlur = event => {
168
204
  setIsFocused(false);
169
205
  if (typeof onBlur === 'function') onBlur(event);
170
206
  };
171
-
172
207
  const [isHovered, setIsHovered] = useState(false);
173
-
174
208
  const handleMouseOver = event => {
175
209
  setIsHovered(true);
176
210
  if (typeof onMouseOver === 'function') onMouseOver(event);
177
211
  };
178
-
179
212
  const handleMouseOut = event => {
180
213
  setIsHovered(false);
181
214
  if (typeof onMouseOut === 'function') onMouseOut(event);
182
215
  };
183
-
184
216
  const defaultRef = useRef();
185
217
  const inputRef = ref ?? defaultRef;
186
218
  const {
@@ -196,6 +228,12 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
196
228
  onChange,
197
229
  readOnly
198
230
  });
231
+ const {
232
+ password,
233
+ numeric
234
+ } = variant;
235
+ const isNumeric = numeric || type === 'card' || type === 'number';
236
+ const isPassword = password || type === 'password';
199
237
  const element = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current;
200
238
  useEffect(() => {
201
239
  if (Platform.OS === 'web' && pattern && element) {
@@ -204,44 +242,44 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
204
242
  element.pattern = pattern;
205
243
  }
206
244
  }, [element, pattern]);
207
-
208
245
  const handleChangeText = event => {
209
246
  var _event$nativeEvent, _event$target;
210
-
211
- const {
212
- numeric
213
- } = variant;
214
247
  const text = ((_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.text) || ((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value);
215
- const filteredText = numeric ? text.replace(/[^\d]/g, '') : text;
248
+ let filteredText = isNumeric ? text === null || text === void 0 ? void 0 : text.replace(/[^\d]/g, '') : text;
249
+ if (type === 'card' && filteredText) {
250
+ const formattedValue = filteredText.replace(/[^a-zA-Z0-9]/g, '');
251
+ const regex = new RegExp(`([a-zA-Z0-9]{4})(?=[a-zA-Z0-9])`, 'g');
252
+ // Add a space every 4 digits starting from the 5th position
253
+ filteredText = formattedValue.replace(regex, '$1 ').trim();
254
+ }
216
255
  setValue(filteredText, event);
217
256
  if (typeof onChangeText === 'function') onChangeText(filteredText, event);
218
257
  };
219
-
220
258
  const states = {
221
259
  focus: isFocused,
222
260
  hover: isHovered,
223
261
  inactive
224
262
  };
225
263
  const themeTokens = useThemeTokens('TextInput', tokens, variant, states);
226
-
227
264
  const handleClear = event => {
228
265
  var _inputRef$current;
229
-
230
266
  onClear === null || onClear === void 0 ? void 0 : onClear(event);
231
267
  resetValue(event);
232
268
  inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
233
269
  };
234
-
235
270
  const handleShowOrHide = () => {
236
271
  if (!variant.inactive) setShowPassword(!showPassword);
237
272
  };
238
-
239
273
  const {
240
274
  buttonsGap,
241
275
  clearButtonIcon: ClearButtonIcon,
242
276
  icon: IconComponent,
243
277
  passwordShowButtonIcon,
244
- passwordHideButtonIcon
278
+ passwordHideButtonIcon,
279
+ defaultCreditIcon,
280
+ amexIcon,
281
+ visaIcon,
282
+ masterCardIcon
245
283
  } = themeTokens;
246
284
  const buttonsGapSize = useSpacingScale(buttonsGap);
247
285
  const getCopy = useCopy({
@@ -249,7 +287,6 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
249
287
  copy
250
288
  });
251
289
  const textInputButtons = buttons;
252
-
253
290
  if (onClear && isDirty) {
254
291
  textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
255
292
  accessibilityLabel: getCopy('clearButtonAccessibilityLabel'),
@@ -260,8 +297,7 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
260
297
  }
261
298
  }, "clear"));
262
299
  }
263
-
264
- if (variant.password) {
300
+ if (isPassword) {
265
301
  textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
266
302
  accessibilityLabel: !showPassword ? getCopy('hidePasswordAccessibilityLabel') : getCopy('showPasswordAccessibilityLabel'),
267
303
  icon: !showPassword ? passwordShowButtonIcon : passwordHideButtonIcon,
@@ -278,8 +314,8 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
278
314
  }
279
315
  }, !showPassword ? 'hide' : 'show'));
280
316
  }
281
-
282
- const inputProps = { ...selectProps(rest),
317
+ const inputProps = {
318
+ ...selectProps(rest),
283
319
  editable: !inactive,
284
320
  onFocus: handleFocus,
285
321
  onBlur: handleBlur,
@@ -287,30 +323,43 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
287
323
  onMouseOut: handleMouseOut,
288
324
  onChange: handleChangeText,
289
325
  defaultValue: initialValue,
326
+ maxLength: type === 'card' ? 19 : undefined,
290
327
  value: isControlled ? currentValue : undefined
291
328
  };
292
329
  const {
293
330
  themeOptions
294
331
  } = useTheme();
295
- const nativeInputStyle = selectInputStyles({ ...themeTokens,
332
+ const nativeInputStyle = selectInputStyles({
333
+ ...themeTokens,
296
334
  height
297
- }, themeOptions, inactive);
335
+ }, themeOptions, inactive, type);
298
336
  return /*#__PURE__*/_jsxs(View, {
299
337
  style: selectOuterBorderStyles(themeTokens),
300
- children: [/*#__PURE__*/_jsx(NativeTextInput, {
338
+ children: [type === 'card' && /*#__PURE__*/_jsx(View, {
339
+ pointerEvents: "none",
340
+ style: [staticStyles.leftIconContainer, selectLeftIconContainerStyles(themeTokens)],
341
+ children: getIcon(currentValue, {
342
+ defaultCreditIcon,
343
+ amexIcon,
344
+ visaIcon,
345
+ masterCardIcon
346
+ })
347
+ }), /*#__PURE__*/_jsx(NativeTextInput, {
301
348
  ref: inputRef,
302
- keyboardType: variant.numeric && 'numeric',
303
- inputMode: variant.numeric && 'numeric',
349
+ keyboardType: isNumeric && 'numeric',
350
+ inputMode: isNumeric && 'numeric',
304
351
  style: nativeInputStyle,
305
- secureTextEntry: variant.password && !showPassword,
352
+ secureTextEntry: isPassword && !showPassword,
306
353
  ...inputProps
307
354
  }), IconComponent && /*#__PURE__*/_jsx(View, {
308
355
  pointerEvents: "none" // avoid hijacking input press events
309
356
  ,
310
- style: [staticStyles.iconContainer, selectIconContainerStyles({ ...themeTokens,
357
+ style: [staticStyles.rightIconContainer, selectIconContainerStyles({
358
+ ...themeTokens,
311
359
  buttonsGapSize
312
360
  }, buttons === null || buttons === void 0 ? void 0 : buttons.length)],
313
- children: /*#__PURE__*/_jsx(IconComponent, { ...selectIconTokens(themeTokens)
361
+ children: /*#__PURE__*/_jsx(IconComponent, {
362
+ ...selectIconTokens(themeTokens)
314
363
  })
315
364
  }), (buttons === null || buttons === void 0 ? void 0 : buttons.length) > 0 && /*#__PURE__*/_jsx(View, {
316
365
  style: [staticStyles.buttonsContainer, selectButtonsContainerStyle(themeTokens)],
@@ -323,9 +372,9 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
323
372
  });
324
373
  });
325
374
  TextInputBase.displayName = 'TextInputBase';
326
- TextInputBase.propTypes = { ...selectedSystemPropTypes,
375
+ TextInputBase.propTypes = {
376
+ ...selectedSystemPropTypes,
327
377
  buttons: PropTypes.arrayOf(PropTypes.node),
328
-
329
378
  /**
330
379
  * Select English or French copy for the accessible labels.
331
380
  * You may also pass in a custom dictionary object.
@@ -333,6 +382,7 @@ TextInputBase.propTypes = { ...selectedSystemPropTypes,
333
382
  copy: PropTypes.oneOfType([PropTypes.oneOf(['en', 'fr']), PropTypes.shape({
334
383
  clearButtonAccessibilityLabel: PropTypes.string
335
384
  })]),
385
+ type: PropTypes.oneOfType([PropTypes.oneOf(['password', 'card', 'number'])]),
336
386
  height: PropTypes.number,
337
387
  inactive: PropTypes.bool,
338
388
  initialValue: PropTypes.string,
@@ -359,9 +409,15 @@ const staticStyles = StyleSheet.create({
359
409
  bottom: 0,
360
410
  justifyContent: 'center'
361
411
  },
362
- iconContainer: {
412
+ rightIconContainer: {
363
413
  position: 'absolute',
364
414
  right: 0,
365
415
  bottom: 0
416
+ },
417
+ leftIconContainer: {
418
+ position: 'absolute',
419
+ left: 0,
420
+ bottom: 0,
421
+ zIndex: 1
366
422
  }
367
423
  });
@@ -1,29 +1,30 @@
1
- import PropTypes from 'prop-types'; // These are prop types specific to UDS TextInput; see also ../utils/props/textInputProps
2
- // for generic React Native props and HTML input attrs that are passed through.
1
+ import PropTypes from 'prop-types';
3
2
 
3
+ // These are prop types specific to UDS TextInput; see also ../utils/props/textInputProps
4
+ // for generic React Native props and HTML input attrs that are passed through.
4
5
  const textInputPropTypes = {
5
6
  /**
6
7
  * If the input's state is to be controlled by a parent component, use this prop
7
8
  * together with the `onChange` to pass down and update the lifted state.
8
9
  */
9
10
  value: PropTypes.string,
10
-
11
+ /**
12
+ * Use this to set the type of the input. Defaults to `text`.
13
+ */
14
+ type: PropTypes.string,
11
15
  /**
12
16
  * Use this to set the initial value of an uncontrolled input.
13
17
  * Updating `initialValue` will **not** update the actual value.
14
18
  */
15
19
  initialValue: PropTypes.string,
16
-
17
20
  /**
18
21
  * Disables all user interactions with the input.
19
22
  */
20
23
  inactive: PropTypes.bool,
21
-
22
24
  /**
23
25
  * Makes it impossible to change the input's value.
24
26
  */
25
27
  readOnly: PropTypes.bool,
26
-
27
28
  /**
28
29
  * Use to react upon input's value changes. Required when the `value` prop is set.
29
30
  * Will receive the input's value as an argument.
@@ -5,9 +5,10 @@ import responsiveProps from '../utils/props/responsiveProps';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  export const uninitialisedError = new Error('Theme context used outside of ThemeProvider');
7
7
  export const ThemeContext = /*#__PURE__*/createContext(uninitialisedError);
8
- export const ThemeSetterContext = /*#__PURE__*/createContext(uninitialisedError); // These options default to `true` in v1.x to match legacy defaults and avoid breaking changes.
9
- // This should change in future major releases to become "opt-in" legacy support.
8
+ export const ThemeSetterContext = /*#__PURE__*/createContext(uninitialisedError);
10
9
 
10
+ // These options default to `true` in v1.x to match legacy defaults and avoid breaking changes.
11
+ // This should change in future major releases to become "opt-in" legacy support.
11
12
  const defaultThemeOptions = {
12
13
  // TODO: switch `forceAbsoluteFontSizing` to be false by default in the next major version
13
14
  forceAbsoluteFontSizing: true,
@@ -16,7 +17,6 @@ const defaultThemeOptions = {
16
17
  // TODO: switch `enableHelmetSSR` to be false by default in the next major version
17
18
  enableHelmetSSR: true
18
19
  };
19
-
20
20
  const ThemeProvider = _ref => {
21
21
  let {
22
22
  children,
@@ -29,24 +29,26 @@ const ThemeProvider = _ref => {
29
29
  setTheme(defaultTheme);
30
30
  }
31
31
  }, [theme.metadata.name, defaultTheme]);
32
- const appliedThemeOptions = { ...defaultThemeOptions,
32
+ const appliedThemeOptions = {
33
+ ...defaultThemeOptions,
33
34
  ...themeOptions
34
- }; // Validate the theme tokens version on every render.
35
+ };
36
+
37
+ // Validate the theme tokens version on every render.
35
38
  // This will intentionally break the application when attempting to use an invalid theme.
36
39
  // This will surface an incompatibility quickly rather than allowing the potential for strange bugs due to missing or incompatible tokens.
37
-
38
40
  validateThemeTokensVersion(theme);
39
41
  return /*#__PURE__*/_jsx(ThemeSetterContext.Provider, {
40
42
  value: setTheme,
41
43
  children: /*#__PURE__*/_jsx(ThemeContext.Provider, {
42
- value: { ...theme,
44
+ value: {
45
+ ...theme,
43
46
  themeOptions: appliedThemeOptions
44
47
  },
45
48
  children: children
46
49
  })
47
50
  });
48
51
  };
49
-
50
52
  ThemeProvider.propTypes = {
51
53
  children: PropTypes.node.isRequired,
52
54
  defaultTheme: PropTypes.shape({
@@ -55,7 +57,6 @@ ThemeProvider.propTypes = {
55
57
  name: PropTypes.string.isRequired
56
58
  }).isRequired
57
59
  }).isRequired,
58
-
59
60
  /**
60
61
  * An object containing options allowing to customize the theming experience:
61
62
  *
@@ -1,18 +1,18 @@
1
1
  import { useCallback, useContext } from 'react';
2
2
  import { ThemeSetterContext } from './ThemeProvider';
3
-
4
3
  const useSetTheme = () => {
5
4
  // Replace current theme with provided object
6
- const setTheme = useContext(ThemeSetterContext); // Fail fast if dev uses useSetTheme outside of ThemeProvider
7
-
5
+ const setTheme = useContext(ThemeSetterContext);
6
+ // Fail fast if dev uses useSetTheme outside of ThemeProvider
8
7
  if (setTheme instanceof Error) {
9
8
  throw setTheme;
10
- } // Merge provided object into current theme
11
-
9
+ }
12
10
 
11
+ // Merge provided object into current theme
13
12
  const editTheme = useCallback(newTheme => setTheme(function () {
14
13
  let oldTheme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
- return { ...oldTheme,
14
+ return {
15
+ ...oldTheme,
16
16
  ...newTheme
17
17
  };
18
18
  }), [setTheme]);
@@ -21,5 +21,4 @@ const useSetTheme = () => {
21
21
  editTheme
22
22
  };
23
23
  };
24
-
25
24
  export default useSetTheme;
@@ -1,14 +1,11 @@
1
1
  import { useContext } from 'react';
2
2
  import { ThemeContext } from './ThemeProvider';
3
-
4
3
  const useTheme = () => {
5
- const theme = useContext(ThemeContext); // Fail fast if dev uses useTheme outside of ThemeProvider
6
-
4
+ const theme = useContext(ThemeContext);
5
+ // Fail fast if dev uses useTheme outside of ThemeProvider
7
6
  if (theme instanceof Error) {
8
7
  throw theme;
9
8
  }
10
-
11
9
  return theme;
12
10
  };
13
-
14
11
  export default useTheme;
@@ -33,7 +33,6 @@ import { getComponentTheme, getThemeTokens, resolveThemeTokens, mergeAppearances
33
33
  * @param {AppearanceSet} [states] - optional object containing current theme appearances dictated by user action or context
34
34
  * @returns {TokensSet} - the currently-applicable resolved set of theme tokens to apply
35
35
  */
36
-
37
36
  export const useThemeTokens = function (componentName) {
38
37
  let tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
39
38
  let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@@ -43,6 +42,7 @@ export const useThemeTokens = function (componentName) {
43
42
  const themeTokens = getThemeTokens(componentTheme, tokens, variants, states);
44
43
  return themeTokens;
45
44
  };
45
+
46
46
  /**
47
47
  * Returns a memoised tokens getter function that gets tokens similar to calling useThemeTokens.
48
48
  * Scenarios where `useThemeTokensCallback` should be used instead of `useThemeTokens` include:
@@ -95,7 +95,6 @@ export const useThemeTokens = function (componentName) {
95
95
  * tokenOverrides in rare cases where tokens overrides are also generated outside hook scope,
96
96
  * e.g. if one theme tokens callback needs to pass certain token overrides to another.
97
97
  */
98
-
99
98
  export const useThemeTokensCallback = function (componentName) {
100
99
  let tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
100
  let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};