@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
@@ -4,30 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
8
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
-
12
9
  var _utils = require("../utils");
13
-
14
10
  var _InputSupports = _interopRequireDefault(require("../InputSupports"));
15
-
16
11
  var _TextInputBase = _interopRequireDefault(require("./TextInputBase"));
17
-
18
12
  var _ThemeProvider = require("../ThemeProvider");
19
-
20
13
  var _propTypes = _interopRequireDefault(require("./propTypes"));
21
-
22
14
  var _jsxRuntime = require("react/jsx-runtime");
23
-
24
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
-
28
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
-
30
18
  const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.focusHandlerProps, _utils.inputSupportsProps, _utils.textInputHandlerProps, _utils.textInputProps, _utils.viewProps]);
19
+
31
20
  /**
32
21
  * Use to collect long-form information such as product feedback or support queries.
33
22
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -52,7 +41,6 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
52
41
  * or an indicator that the field is optional.
53
42
  * It is a more usable and accessible option than the HTML `placeholder` attribute.
54
43
  */
55
-
56
44
  const TextArea = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
57
45
  let {
58
46
  tokens,
@@ -60,8 +48,9 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
60
48
  ...rest
61
49
  } = _ref;
62
50
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('TextArea', tokens, variant);
63
- const [inputHeight, setInputHeight] = (0, _react.useState)(); // adjust the text area's height as new lines are added to the content
51
+ const [inputHeight, setInputHeight] = (0, _react.useState)();
64
52
 
53
+ // adjust the text area's height as new lines are added to the content
65
54
  const onHeightChange = _ref2 => {
66
55
  let {
67
56
  nativeEvent: {
@@ -70,19 +59,19 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
70
59
  }
71
60
  }
72
61
  } = _ref2;
73
-
74
62
  // on native this is happens out of the box
75
63
  if (_Platform.default.OS === 'web') {
76
64
  setInputHeight(height);
77
65
  }
78
66
  };
79
-
80
67
  const {
81
68
  supportsProps,
82
69
  ...selectedProps
83
70
  } = selectProps(rest);
84
- const inputProps = { ...selectedProps,
85
- variant: { ...variant,
71
+ const inputProps = {
72
+ ...selectedProps,
73
+ variant: {
74
+ ...variant,
86
75
  validation: supportsProps.validation
87
76
  },
88
77
  multiline: true,
@@ -90,7 +79,8 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
90
79
  height: inputHeight,
91
80
  tokens: themeTokens
92
81
  };
93
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, { ...supportsProps,
82
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, {
83
+ ...supportsProps,
94
84
  children: _ref3 => {
95
85
  let {
96
86
  inputId,
@@ -106,7 +96,8 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
106
96
  });
107
97
  });
108
98
  TextArea.displayName = 'TextArea';
109
- TextArea.propTypes = { ...selectedSystemPropTypes,
99
+ TextArea.propTypes = {
100
+ ...selectedSystemPropTypes,
110
101
  ..._propTypes.default,
111
102
  tokens: (0, _utils.getTokensPropType)('TextArea', 'TextInput'),
112
103
  // TODO: support both TextArea and TextInput tokens
@@ -4,28 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
9
  var _utils = require("../utils");
13
-
14
10
  var _InputSupports = _interopRequireDefault(require("../InputSupports"));
15
-
16
11
  var _TextInputBase = _interopRequireDefault(require("./TextInputBase"));
17
-
18
12
  var _propTypes2 = _interopRequireDefault(require("./propTypes"));
19
-
20
13
  var _jsxRuntime = require("react/jsx-runtime");
21
-
22
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
-
28
17
  const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.focusHandlerProps, _utils.inputSupportsProps, _utils.textInputHandlerProps, _utils.textInputProps, _utils.viewProps]);
18
+
29
19
  /**
30
20
  * A basic text input component. Use in forms or individually to receive user's input.
31
21
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -44,7 +34,6 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
44
34
  * supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
45
35
  * their implementation on the web.
46
36
  */
47
-
48
37
  const TextInput = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
49
38
  let {
50
39
  tokens,
@@ -56,9 +45,11 @@ const TextInput = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
56
45
  supportsProps,
57
46
  ...selectedProps
58
47
  } = selectProps(rest);
59
- const inputProps = { ...selectedProps,
48
+ const inputProps = {
49
+ ...selectedProps,
60
50
  tokens,
61
- variant: { ...variant,
51
+ variant: {
52
+ ...variant,
62
53
  validation: supportsProps.validation
63
54
  }
64
55
  };
@@ -82,9 +73,9 @@ const TextInput = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
82
73
  });
83
74
  });
84
75
  TextInput.displayName = 'TextInput';
85
- TextInput.propTypes = { ...selectedSystemPropTypes,
76
+ TextInput.propTypes = {
77
+ ...selectedSystemPropTypes,
86
78
  ..._propTypes2.default,
87
-
88
79
  /**
89
80
  * A callback which if provided will get a clear button rendered and will be called whenever that button gets pressed.
90
81
  */
@@ -4,40 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
9
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
13
-
14
10
  var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
15
-
16
11
  var _TextInput = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TextInput"));
17
-
18
12
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
19
-
20
13
  var _ThemeProvider = require("../ThemeProvider");
21
-
22
14
  var _StackView = _interopRequireDefault(require("../StackView"));
23
-
24
15
  var _IconButton = _interopRequireDefault(require("../IconButton"));
25
-
16
+ var _Icon = _interopRequireDefault(require("../Icon"));
26
17
  var _utils = require("../utils");
27
-
28
18
  var _dictionary = _interopRequireDefault(require("./dictionary"));
29
-
30
19
  var _jsxRuntime = require("react/jsx-runtime");
31
-
32
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
-
34
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
-
36
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
-
38
23
  const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.textInputHandlerProps, _utils.textInputProps, _utils.viewProps]);
39
-
40
- const selectInputStyles = (_ref, themeOptions, inactive) => {
24
+ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
41
25
  let {
42
26
  backgroundColor,
43
27
  color,
@@ -59,11 +43,9 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
59
43
  width,
60
44
  height
61
45
  } = _ref;
62
-
63
46
  // Subtract border width from padding so overall input width/height doesn't
64
47
  // jump around if the border width changes (avoiding NaN and negative padding)
65
48
  const offsetBorder = value => typeof value === 'number' ? Math.max(0, value - borderWidth) : value;
66
-
67
49
  const textStyles = (0, _ThemeProvider.applyTextStyles)({
68
50
  fontName,
69
51
  fontSize,
@@ -71,23 +53,19 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
71
53
  fontWeight,
72
54
  themeOptions
73
55
  });
74
-
75
56
  function linesToHeight(lines) {
76
57
  const {
77
58
  lineHeight: absoluteLineHeight
78
59
  } = textStyles;
79
60
  return lines !== undefined ? lines * absoluteLineHeight + paddingTop + paddingBottom : undefined;
80
61
  }
81
-
82
62
  const minHeight = linesToHeight(minLines);
83
63
  const maxHeight = linesToHeight(maxLines);
84
-
85
64
  const webStyles = _Platform.default.select({
86
65
  web: {
87
66
  outline: 'none',
88
67
  cursor: inactive ? 'not-allowed' : undefined,
89
68
  resize: minHeight !== maxHeight ? 'vertical' : 'none' // does nothing for an input, only needed for textarea
90
-
91
69
  }
92
70
  });
93
71
 
@@ -98,7 +76,7 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
98
76
  borderWidth,
99
77
  borderColor,
100
78
  borderRadius,
101
- paddingLeft: offsetBorder(paddingLeft),
79
+ paddingLeft: type === 'card' ? offsetBorder(paddingLeft + 34) : offsetBorder(paddingLeft),
102
80
  paddingRight: icon ? offsetBorder(paddingWithIcon) : offsetBorder(paddingRight),
103
81
  paddingTop: offsetBorder(paddingTop),
104
82
  paddingBottom: offsetBorder(paddingBottom),
@@ -110,7 +88,6 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
110
88
  ...webStyles
111
89
  };
112
90
  };
113
-
114
91
  const selectOuterBorderStyles = _ref2 => {
115
92
  let {
116
93
  outerBackgroundColor,
@@ -127,7 +104,6 @@ const selectOuterBorderStyles = _ref2 => {
127
104
  })
128
105
  };
129
106
  };
130
-
131
107
  const selectIconTokens = _ref3 => {
132
108
  let {
133
109
  iconSize,
@@ -138,7 +114,6 @@ const selectIconTokens = _ref3 => {
138
114
  color: iconColor
139
115
  };
140
116
  };
141
-
142
117
  const selectIconContainerStyles = (_ref4, buttonCount) => {
143
118
  let {
144
119
  buttonSize,
@@ -151,17 +126,61 @@ const selectIconContainerStyles = (_ref4, buttonCount) => {
151
126
  paddingBottom
152
127
  };
153
128
  };
154
-
155
- const selectButtonsContainerStyle = _ref5 => {
129
+ const selectLeftIconContainerStyles = _ref5 => {
156
130
  let {
157
- buttonsPaddingRight
131
+ leftIconPaddingBottom
158
132
  } = _ref5;
133
+ return {
134
+ // not tokenizing paddingLeft as it remains same across brands for now
135
+ paddingLeft: 10,
136
+ paddingBottom: leftIconPaddingBottom
137
+ };
138
+ };
139
+ const selectButtonsContainerStyle = _ref6 => {
140
+ let {
141
+ buttonsPaddingRight
142
+ } = _ref6;
159
143
  return {
160
144
  paddingRight: buttonsPaddingRight
161
145
  };
162
146
  };
163
-
164
- const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
147
+ const getIcon = function () {
148
+ let cardNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
149
+ let {
150
+ defaultCreditIcon,
151
+ amexIcon,
152
+ visaIcon,
153
+ masterCardIcon
154
+ } = arguments.length > 1 ? arguments[1] : undefined;
155
+ const cardType = {
156
+ 1: {
157
+ icon: visaIcon,
158
+ testID: 'visa'
159
+ },
160
+ 2: {
161
+ icon: amexIcon,
162
+ testID: 'amex'
163
+ },
164
+ 4: {
165
+ icon: masterCardIcon,
166
+ testID: 'mastercard'
167
+ }
168
+ };
169
+ const firstDigit = cardNumber ? cardNumber[0] : '';
170
+ const defaultIcon = {
171
+ icon: defaultCreditIcon,
172
+ testID: 'default'
173
+ };
174
+ const selectedIcon = cardNumber.length > 4 ? cardType[firstDigit] || defaultIcon : defaultIcon;
175
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
176
+ icon: selectedIcon.icon,
177
+ variant: {
178
+ size: 'large'
179
+ },
180
+ testID: selectedIcon.testID
181
+ });
182
+ };
183
+ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref7, ref) => {
165
184
  let {
166
185
  buttons = [],
167
186
  copy = 'en',
@@ -180,33 +199,28 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
180
199
  tokens,
181
200
  value,
182
201
  variant = {},
202
+ type,
183
203
  ...rest
184
- } = _ref6;
204
+ } = _ref7;
185
205
  const [isFocused, setIsFocused] = (0, _react.useState)(false);
186
206
  const [showPassword, setShowPassword] = (0, _react.useState)(false);
187
-
188
207
  const handleFocus = event => {
189
208
  setIsFocused(true);
190
209
  if (typeof onFocus === 'function') onFocus(event);
191
210
  };
192
-
193
211
  const handleBlur = event => {
194
212
  setIsFocused(false);
195
213
  if (typeof onBlur === 'function') onBlur(event);
196
214
  };
197
-
198
215
  const [isHovered, setIsHovered] = (0, _react.useState)(false);
199
-
200
216
  const handleMouseOver = event => {
201
217
  setIsHovered(true);
202
218
  if (typeof onMouseOver === 'function') onMouseOver(event);
203
219
  };
204
-
205
220
  const handleMouseOut = event => {
206
221
  setIsHovered(false);
207
222
  if (typeof onMouseOut === 'function') onMouseOut(event);
208
223
  };
209
-
210
224
  const defaultRef = (0, _react.useRef)();
211
225
  const inputRef = ref ?? defaultRef;
212
226
  const {
@@ -222,6 +236,12 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
222
236
  onChange,
223
237
  readOnly
224
238
  });
239
+ const {
240
+ password,
241
+ numeric
242
+ } = variant;
243
+ const isNumeric = numeric || type === 'card' || type === 'number';
244
+ const isPassword = password || type === 'password';
225
245
  const element = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current;
226
246
  (0, _react.useEffect)(() => {
227
247
  if (_Platform.default.OS === 'web' && pattern && element) {
@@ -230,44 +250,44 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
230
250
  element.pattern = pattern;
231
251
  }
232
252
  }, [element, pattern]);
233
-
234
253
  const handleChangeText = event => {
235
254
  var _event$nativeEvent, _event$target;
236
-
237
- const {
238
- numeric
239
- } = variant;
240
255
  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);
241
- const filteredText = numeric ? text.replace(/[^\d]/g, '') : text;
256
+ let filteredText = isNumeric ? text === null || text === void 0 ? void 0 : text.replace(/[^\d]/g, '') : text;
257
+ if (type === 'card' && filteredText) {
258
+ const formattedValue = filteredText.replace(/[^a-zA-Z0-9]/g, '');
259
+ const regex = new RegExp(`([a-zA-Z0-9]{4})(?=[a-zA-Z0-9])`, 'g');
260
+ // Add a space every 4 digits starting from the 5th position
261
+ filteredText = formattedValue.replace(regex, '$1 ').trim();
262
+ }
242
263
  setValue(filteredText, event);
243
264
  if (typeof onChangeText === 'function') onChangeText(filteredText, event);
244
265
  };
245
-
246
266
  const states = {
247
267
  focus: isFocused,
248
268
  hover: isHovered,
249
269
  inactive
250
270
  };
251
271
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('TextInput', tokens, variant, states);
252
-
253
272
  const handleClear = event => {
254
273
  var _inputRef$current;
255
-
256
274
  onClear === null || onClear === void 0 ? void 0 : onClear(event);
257
275
  resetValue(event);
258
276
  inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
259
277
  };
260
-
261
278
  const handleShowOrHide = () => {
262
279
  if (!variant.inactive) setShowPassword(!showPassword);
263
280
  };
264
-
265
281
  const {
266
282
  buttonsGap,
267
283
  clearButtonIcon: ClearButtonIcon,
268
284
  icon: IconComponent,
269
285
  passwordShowButtonIcon,
270
- passwordHideButtonIcon
286
+ passwordHideButtonIcon,
287
+ defaultCreditIcon,
288
+ amexIcon,
289
+ visaIcon,
290
+ masterCardIcon
271
291
  } = themeTokens;
272
292
  const buttonsGapSize = (0, _utils.useSpacingScale)(buttonsGap);
273
293
  const getCopy = (0, _utils.useCopy)({
@@ -275,7 +295,6 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
275
295
  copy
276
296
  });
277
297
  const textInputButtons = buttons;
278
-
279
298
  if (onClear && isDirty) {
280
299
  textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
281
300
  accessibilityLabel: getCopy('clearButtonAccessibilityLabel'),
@@ -286,8 +305,7 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
286
305
  }
287
306
  }, "clear"));
288
307
  }
289
-
290
- if (variant.password) {
308
+ if (isPassword) {
291
309
  textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
292
310
  accessibilityLabel: !showPassword ? getCopy('hidePasswordAccessibilityLabel') : getCopy('showPasswordAccessibilityLabel'),
293
311
  icon: !showPassword ? passwordShowButtonIcon : passwordHideButtonIcon,
@@ -304,8 +322,8 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
304
322
  }
305
323
  }, !showPassword ? 'hide' : 'show'));
306
324
  }
307
-
308
- const inputProps = { ...selectProps(rest),
325
+ const inputProps = {
326
+ ...selectProps(rest),
309
327
  editable: !inactive,
310
328
  onFocus: handleFocus,
311
329
  onBlur: handleBlur,
@@ -313,30 +331,43 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
313
331
  onMouseOut: handleMouseOut,
314
332
  onChange: handleChangeText,
315
333
  defaultValue: initialValue,
334
+ maxLength: type === 'card' ? 19 : undefined,
316
335
  value: isControlled ? currentValue : undefined
317
336
  };
318
337
  const {
319
338
  themeOptions
320
339
  } = (0, _ThemeProvider.useTheme)();
321
- const nativeInputStyle = selectInputStyles({ ...themeTokens,
340
+ const nativeInputStyle = selectInputStyles({
341
+ ...themeTokens,
322
342
  height
323
- }, themeOptions, inactive);
343
+ }, themeOptions, inactive, type);
324
344
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
325
345
  style: selectOuterBorderStyles(themeTokens),
326
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInput.default, {
346
+ children: [type === 'card' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
347
+ pointerEvents: "none",
348
+ style: [staticStyles.leftIconContainer, selectLeftIconContainerStyles(themeTokens)],
349
+ children: getIcon(currentValue, {
350
+ defaultCreditIcon,
351
+ amexIcon,
352
+ visaIcon,
353
+ masterCardIcon
354
+ })
355
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInput.default, {
327
356
  ref: inputRef,
328
- keyboardType: variant.numeric && 'numeric',
329
- inputMode: variant.numeric && 'numeric',
357
+ keyboardType: isNumeric && 'numeric',
358
+ inputMode: isNumeric && 'numeric',
330
359
  style: nativeInputStyle,
331
- secureTextEntry: variant.password && !showPassword,
360
+ secureTextEntry: isPassword && !showPassword,
332
361
  ...inputProps
333
362
  }), IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
334
363
  pointerEvents: "none" // avoid hijacking input press events
335
364
  ,
336
- style: [staticStyles.iconContainer, selectIconContainerStyles({ ...themeTokens,
365
+ style: [staticStyles.rightIconContainer, selectIconContainerStyles({
366
+ ...themeTokens,
337
367
  buttonsGapSize
338
368
  }, buttons === null || buttons === void 0 ? void 0 : buttons.length)],
339
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, { ...selectIconTokens(themeTokens)
369
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
370
+ ...selectIconTokens(themeTokens)
340
371
  })
341
372
  }), (buttons === null || buttons === void 0 ? void 0 : buttons.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
342
373
  style: [staticStyles.buttonsContainer, selectButtonsContainerStyle(themeTokens)],
@@ -349,9 +380,9 @@ const TextInputBase = /*#__PURE__*/(0, _react.forwardRef)((_ref6, ref) => {
349
380
  });
350
381
  });
351
382
  TextInputBase.displayName = 'TextInputBase';
352
- TextInputBase.propTypes = { ...selectedSystemPropTypes,
383
+ TextInputBase.propTypes = {
384
+ ...selectedSystemPropTypes,
353
385
  buttons: _propTypes.default.arrayOf(_propTypes.default.node),
354
-
355
386
  /**
356
387
  * Select English or French copy for the accessible labels.
357
388
  * You may also pass in a custom dictionary object.
@@ -359,6 +390,7 @@ TextInputBase.propTypes = { ...selectedSystemPropTypes,
359
390
  copy: _propTypes.default.oneOfType([_propTypes.default.oneOf(['en', 'fr']), _propTypes.default.shape({
360
391
  clearButtonAccessibilityLabel: _propTypes.default.string
361
392
  })]),
393
+ type: _propTypes.default.oneOfType([_propTypes.default.oneOf(['password', 'card', 'number'])]),
362
394
  height: _propTypes.default.number,
363
395
  inactive: _propTypes.default.bool,
364
396
  initialValue: _propTypes.default.string,
@@ -376,7 +408,6 @@ TextInputBase.propTypes = { ...selectedSystemPropTypes,
376
408
  };
377
409
  var _default = TextInputBase;
378
410
  exports.default = _default;
379
-
380
411
  const staticStyles = _StyleSheet.default.create({
381
412
  buttonsContainer: {
382
413
  position: 'absolute',
@@ -387,9 +418,15 @@ const staticStyles = _StyleSheet.default.create({
387
418
  bottom: 0,
388
419
  justifyContent: 'center'
389
420
  },
390
- iconContainer: {
421
+ rightIconContainer: {
391
422
  position: 'absolute',
392
423
  right: 0,
393
424
  bottom: 0
425
+ },
426
+ leftIconContainer: {
427
+ position: 'absolute',
428
+ left: 0,
429
+ bottom: 0,
430
+ zIndex: 1
394
431
  }
395
432
  });
@@ -15,9 +15,6 @@ Object.defineProperty(exports, "TextInput", {
15
15
  return _TextInput.default;
16
16
  }
17
17
  });
18
-
19
18
  var _TextInput = _interopRequireDefault(require("./TextInput"));
20
-
21
19
  var _TextArea = _interopRequireDefault(require("./TextArea"));
22
-
23
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  // These are prop types specific to UDS TextInput; see also ../utils/props/textInputProps
13
10
  // for generic React Native props and HTML input attrs that are passed through.
14
11
  const textInputPropTypes = {
@@ -17,23 +14,23 @@ const textInputPropTypes = {
17
14
  * together with the `onChange` to pass down and update the lifted state.
18
15
  */
19
16
  value: _propTypes.default.string,
20
-
17
+ /**
18
+ * Use this to set the type of the input. Defaults to `text`.
19
+ */
20
+ type: _propTypes.default.string,
21
21
  /**
22
22
  * Use this to set the initial value of an uncontrolled input.
23
23
  * Updating `initialValue` will **not** update the actual value.
24
24
  */
25
25
  initialValue: _propTypes.default.string,
26
-
27
26
  /**
28
27
  * Disables all user interactions with the input.
29
28
  */
30
29
  inactive: _propTypes.default.bool,
31
-
32
30
  /**
33
31
  * Makes it impossible to change the input's value.
34
32
  */
35
33
  readOnly: _propTypes.default.bool,
36
-
37
34
  /**
38
35
  * Use to react upon input's value changes. Required when the `value` prop is set.
39
36
  * Will receive the input's value as an argument.