@transferwise/components 46.77.0 → 46.79.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 (503) hide show
  1. package/build/accordion/AccordionItem/AccordionItem.js +22 -3
  2. package/build/accordion/AccordionItem/AccordionItem.js.map +1 -1
  3. package/build/accordion/AccordionItem/AccordionItem.mjs +22 -3
  4. package/build/accordion/AccordionItem/AccordionItem.mjs.map +1 -1
  5. package/build/actionButton/ActionButton.js +22 -1
  6. package/build/actionButton/ActionButton.js.map +1 -1
  7. package/build/actionButton/ActionButton.mjs +22 -1
  8. package/build/actionButton/ActionButton.mjs.map +1 -1
  9. package/build/actionOption/ActionOption.js +24 -2
  10. package/build/actionOption/ActionOption.js.map +1 -1
  11. package/build/actionOption/ActionOption.mjs +24 -2
  12. package/build/actionOption/ActionOption.mjs.map +1 -1
  13. package/build/alert/Alert.js +22 -6
  14. package/build/alert/Alert.js.map +1 -1
  15. package/build/alert/Alert.mjs +22 -6
  16. package/build/alert/Alert.mjs.map +1 -1
  17. package/build/alert/inlineMarkdown/InlineMarkdown.js +25 -2
  18. package/build/alert/inlineMarkdown/InlineMarkdown.js.map +1 -1
  19. package/build/alert/inlineMarkdown/InlineMarkdown.mjs +25 -2
  20. package/build/alert/inlineMarkdown/InlineMarkdown.mjs.map +1 -1
  21. package/build/avatar/Avatar.js +25 -9
  22. package/build/avatar/Avatar.js.map +1 -1
  23. package/build/avatar/Avatar.mjs +25 -9
  24. package/build/avatar/Avatar.mjs.map +1 -1
  25. package/build/avatarWrapper/AvatarWrapper.js +23 -3
  26. package/build/avatarWrapper/AvatarWrapper.js.map +1 -1
  27. package/build/avatarWrapper/AvatarWrapper.mjs +23 -3
  28. package/build/avatarWrapper/AvatarWrapper.mjs.map +1 -1
  29. package/build/badge/Badge.js +24 -12
  30. package/build/badge/Badge.js.map +1 -1
  31. package/build/badge/Badge.mjs +24 -12
  32. package/build/badge/Badge.mjs.map +1 -1
  33. package/build/button/Button.js +22 -6
  34. package/build/button/Button.js.map +1 -1
  35. package/build/button/Button.messages.js.map +1 -1
  36. package/build/button/Button.messages.mjs.map +1 -1
  37. package/build/button/Button.mjs +22 -6
  38. package/build/button/Button.mjs.map +1 -1
  39. package/build/button/classMap.js +24 -0
  40. package/build/button/classMap.js.map +1 -1
  41. package/build/button/classMap.mjs +24 -0
  42. package/build/button/classMap.mjs.map +1 -1
  43. package/build/button/legacyUtils/legacyUtils.js +30 -7
  44. package/build/button/legacyUtils/legacyUtils.js.map +1 -1
  45. package/build/button/legacyUtils/legacyUtils.mjs +30 -7
  46. package/build/button/legacyUtils/legacyUtils.mjs.map +1 -1
  47. package/build/card/Card.js +23 -3
  48. package/build/card/Card.js.map +1 -1
  49. package/build/card/Card.mjs +23 -3
  50. package/build/card/Card.mjs.map +1 -1
  51. package/build/checkbox/Checkbox.js +23 -1
  52. package/build/checkbox/Checkbox.js.map +1 -1
  53. package/build/checkbox/Checkbox.mjs +23 -1
  54. package/build/checkbox/Checkbox.mjs.map +1 -1
  55. package/build/checkboxOption/CheckboxOption.js +1 -1
  56. package/build/checkboxOption/CheckboxOption.mjs +1 -1
  57. package/build/chevron/Chevron.js +21 -1
  58. package/build/chevron/Chevron.js.map +1 -1
  59. package/build/chevron/Chevron.mjs +21 -1
  60. package/build/chevron/Chevron.mjs.map +1 -1
  61. package/build/chips/Chip.js +19 -1
  62. package/build/chips/Chip.js.map +1 -1
  63. package/build/chips/Chip.mjs +19 -1
  64. package/build/chips/Chip.mjs.map +1 -1
  65. package/build/circularButton/CircularButton.js +24 -5
  66. package/build/circularButton/CircularButton.js.map +1 -1
  67. package/build/circularButton/CircularButton.mjs +24 -5
  68. package/build/circularButton/CircularButton.mjs.map +1 -1
  69. package/build/common/bottomSheet/BottomSheet.js +3 -2
  70. package/build/common/bottomSheet/BottomSheet.js.map +1 -1
  71. package/build/common/bottomSheet/BottomSheet.mjs +3 -2
  72. package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
  73. package/build/common/circle/Circle.js +15 -2
  74. package/build/common/circle/Circle.js.map +1 -1
  75. package/build/common/circle/Circle.mjs +15 -2
  76. package/build/common/circle/Circle.mjs.map +1 -1
  77. package/build/common/hooks/useHasIntersected/useHasIntersected.js +10 -10
  78. package/build/common/hooks/useHasIntersected/useHasIntersected.js.map +1 -1
  79. package/build/common/hooks/useHasIntersected/useHasIntersected.mjs +10 -10
  80. package/build/common/hooks/useHasIntersected/useHasIntersected.mjs.map +1 -1
  81. package/build/common/locale/index.js +24 -0
  82. package/build/common/locale/index.js.map +1 -1
  83. package/build/common/locale/index.mjs +24 -0
  84. package/build/common/locale/index.mjs.map +1 -1
  85. package/build/common/panel/Panel.js +23 -2
  86. package/build/common/panel/Panel.js.map +1 -1
  87. package/build/common/panel/Panel.mjs +23 -2
  88. package/build/common/panel/Panel.mjs.map +1 -1
  89. package/build/common/responsivePanel/ResponsivePanel.js +27 -3
  90. package/build/common/responsivePanel/ResponsivePanel.js.map +1 -1
  91. package/build/common/responsivePanel/ResponsivePanel.mjs +27 -3
  92. package/build/common/responsivePanel/ResponsivePanel.mjs.map +1 -1
  93. package/build/criticalBanner/CriticalCommsBanner.js +22 -3
  94. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  95. package/build/criticalBanner/CriticalCommsBanner.mjs +22 -3
  96. package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
  97. package/build/dateInput/DateInput.js +22 -5
  98. package/build/dateInput/DateInput.js.map +1 -1
  99. package/build/dateInput/DateInput.mjs +22 -5
  100. package/build/dateInput/DateInput.mjs.map +1 -1
  101. package/build/dateLookup/DateLookup.js +24 -6
  102. package/build/dateLookup/DateLookup.js.map +1 -1
  103. package/build/dateLookup/DateLookup.mjs +24 -6
  104. package/build/dateLookup/DateLookup.mjs.map +1 -1
  105. package/build/dateLookup/dateHeader/DateHeader.js +26 -5
  106. package/build/dateLookup/dateHeader/DateHeader.js.map +1 -1
  107. package/build/dateLookup/dateHeader/DateHeader.mjs +26 -5
  108. package/build/dateLookup/dateHeader/DateHeader.mjs.map +1 -1
  109. package/build/dateLookup/dateTrigger/DateTrigger.js +19 -3
  110. package/build/dateLookup/dateTrigger/DateTrigger.js.map +1 -1
  111. package/build/dateLookup/dateTrigger/DateTrigger.mjs +19 -3
  112. package/build/dateLookup/dateTrigger/DateTrigger.mjs.map +1 -1
  113. package/build/decision/Decision.js +24 -3
  114. package/build/decision/Decision.js.map +1 -1
  115. package/build/decision/Decision.mjs +24 -3
  116. package/build/decision/Decision.mjs.map +1 -1
  117. package/build/definitionList/DefinitionList.js +23 -1
  118. package/build/definitionList/DefinitionList.js.map +1 -1
  119. package/build/definitionList/DefinitionList.mjs +23 -1
  120. package/build/definitionList/DefinitionList.mjs.map +1 -1
  121. package/build/dimmer/Dimmer.js +24 -2
  122. package/build/dimmer/Dimmer.js.map +1 -1
  123. package/build/dimmer/Dimmer.mjs +24 -2
  124. package/build/dimmer/Dimmer.mjs.map +1 -1
  125. package/build/display/Display.js +23 -1
  126. package/build/display/Display.js.map +1 -1
  127. package/build/display/Display.mjs +23 -1
  128. package/build/display/Display.mjs.map +1 -1
  129. package/build/drawer/Drawer.js +23 -4
  130. package/build/drawer/Drawer.js.map +1 -1
  131. package/build/drawer/Drawer.mjs +23 -4
  132. package/build/drawer/Drawer.mjs.map +1 -1
  133. package/build/field/Field.js +23 -2
  134. package/build/field/Field.js.map +1 -1
  135. package/build/field/Field.mjs +23 -2
  136. package/build/field/Field.mjs.map +1 -1
  137. package/build/flowNavigation/FlowNavigation.js +19 -2
  138. package/build/flowNavigation/FlowNavigation.js.map +1 -1
  139. package/build/flowNavigation/FlowNavigation.mjs +19 -2
  140. package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
  141. package/build/header/Header.js +24 -2
  142. package/build/header/Header.js.map +1 -1
  143. package/build/header/Header.mjs +24 -2
  144. package/build/header/Header.mjs.map +1 -1
  145. package/build/i18n/de.json +5 -0
  146. package/build/i18n/de.json.js +5 -0
  147. package/build/i18n/de.json.js.map +1 -1
  148. package/build/i18n/de.json.mjs +5 -0
  149. package/build/i18n/de.json.mjs.map +1 -1
  150. package/build/i18n/es.json +5 -0
  151. package/build/i18n/es.json.js +5 -0
  152. package/build/i18n/es.json.js.map +1 -1
  153. package/build/i18n/es.json.mjs +5 -0
  154. package/build/i18n/es.json.mjs.map +1 -1
  155. package/build/i18n/fr.json +5 -0
  156. package/build/i18n/fr.json.js +5 -0
  157. package/build/i18n/fr.json.js.map +1 -1
  158. package/build/i18n/fr.json.mjs +5 -0
  159. package/build/i18n/fr.json.mjs.map +1 -1
  160. package/build/i18n/hu.json +5 -0
  161. package/build/i18n/hu.json.js +5 -0
  162. package/build/i18n/hu.json.js.map +1 -1
  163. package/build/i18n/hu.json.mjs +5 -0
  164. package/build/i18n/hu.json.mjs.map +1 -1
  165. package/build/i18n/id.json +5 -0
  166. package/build/i18n/id.json.js +5 -0
  167. package/build/i18n/id.json.js.map +1 -1
  168. package/build/i18n/id.json.mjs +5 -0
  169. package/build/i18n/id.json.mjs.map +1 -1
  170. package/build/i18n/it.json +5 -0
  171. package/build/i18n/it.json.js +5 -0
  172. package/build/i18n/it.json.js.map +1 -1
  173. package/build/i18n/it.json.mjs +5 -0
  174. package/build/i18n/it.json.mjs.map +1 -1
  175. package/build/i18n/ja.json +5 -0
  176. package/build/i18n/ja.json.js +5 -0
  177. package/build/i18n/ja.json.js.map +1 -1
  178. package/build/i18n/ja.json.mjs +5 -0
  179. package/build/i18n/ja.json.mjs.map +1 -1
  180. package/build/i18n/pl.json +5 -0
  181. package/build/i18n/pl.json.js +5 -0
  182. package/build/i18n/pl.json.js.map +1 -1
  183. package/build/i18n/pl.json.mjs +5 -0
  184. package/build/i18n/pl.json.mjs.map +1 -1
  185. package/build/i18n/pt.json +5 -0
  186. package/build/i18n/pt.json.js +5 -0
  187. package/build/i18n/pt.json.js.map +1 -1
  188. package/build/i18n/pt.json.mjs +5 -0
  189. package/build/i18n/pt.json.mjs.map +1 -1
  190. package/build/i18n/ro.json +5 -0
  191. package/build/i18n/ro.json.js +5 -0
  192. package/build/i18n/ro.json.js.map +1 -1
  193. package/build/i18n/ro.json.mjs +5 -0
  194. package/build/i18n/ro.json.mjs.map +1 -1
  195. package/build/i18n/ru.json +5 -0
  196. package/build/i18n/ru.json.js +5 -0
  197. package/build/i18n/ru.json.js.map +1 -1
  198. package/build/i18n/ru.json.mjs +5 -0
  199. package/build/i18n/ru.json.mjs.map +1 -1
  200. package/build/i18n/tr.json +5 -0
  201. package/build/i18n/tr.json.js +5 -0
  202. package/build/i18n/tr.json.js.map +1 -1
  203. package/build/i18n/tr.json.mjs +5 -0
  204. package/build/i18n/tr.json.mjs.map +1 -1
  205. package/build/image/Image.js +4 -1
  206. package/build/image/Image.js.map +1 -1
  207. package/build/image/Image.mjs +4 -1
  208. package/build/image/Image.mjs.map +1 -1
  209. package/build/index.js +69 -62
  210. package/build/index.js.map +1 -1
  211. package/build/index.mjs +27 -20
  212. package/build/index.mjs.map +1 -1
  213. package/build/info/Info.js +21 -3
  214. package/build/info/Info.js.map +1 -1
  215. package/build/info/Info.mjs +21 -3
  216. package/build/info/Info.mjs.map +1 -1
  217. package/build/inlineAlert/InlineAlert.js +24 -3
  218. package/build/inlineAlert/InlineAlert.js.map +1 -1
  219. package/build/inlineAlert/InlineAlert.mjs +24 -3
  220. package/build/inlineAlert/InlineAlert.mjs.map +1 -1
  221. package/build/inputs/SearchInput.js +23 -2
  222. package/build/inputs/SearchInput.js.map +1 -1
  223. package/build/inputs/SearchInput.mjs +23 -2
  224. package/build/inputs/SearchInput.mjs.map +1 -1
  225. package/build/instructionsList/InstructionsList.js +22 -1
  226. package/build/instructionsList/InstructionsList.js.map +1 -1
  227. package/build/instructionsList/InstructionsList.mjs +22 -1
  228. package/build/instructionsList/InstructionsList.mjs.map +1 -1
  229. package/build/loader/Loader.js +22 -1
  230. package/build/loader/Loader.js.map +1 -1
  231. package/build/loader/Loader.mjs +22 -1
  232. package/build/loader/Loader.mjs.map +1 -1
  233. package/build/main.css +46 -22
  234. package/build/markdown/Markdown.js +24 -1
  235. package/build/markdown/Markdown.js.map +1 -1
  236. package/build/markdown/Markdown.mjs +24 -1
  237. package/build/markdown/Markdown.mjs.map +1 -1
  238. package/build/modal/Modal.js +22 -5
  239. package/build/modal/Modal.js.map +1 -1
  240. package/build/modal/Modal.mjs +22 -5
  241. package/build/modal/Modal.mjs.map +1 -1
  242. package/build/moneyInput/MoneyInput.js +22 -3
  243. package/build/moneyInput/MoneyInput.js.map +1 -1
  244. package/build/moneyInput/MoneyInput.mjs +22 -3
  245. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  246. package/build/navigationOption/NavigationOption.js +23 -2
  247. package/build/navigationOption/NavigationOption.js.map +1 -1
  248. package/build/navigationOption/NavigationOption.mjs +23 -2
  249. package/build/navigationOption/NavigationOption.mjs.map +1 -1
  250. package/build/nudge/Nudge.js +19 -1
  251. package/build/nudge/Nudge.js.map +1 -1
  252. package/build/nudge/Nudge.mjs +19 -1
  253. package/build/nudge/Nudge.mjs.map +1 -1
  254. package/build/overlayHeader/OverlayHeader.js +19 -1
  255. package/build/overlayHeader/OverlayHeader.js.map +1 -1
  256. package/build/overlayHeader/OverlayHeader.mjs +19 -1
  257. package/build/overlayHeader/OverlayHeader.mjs.map +1 -1
  258. package/build/phoneNumberInput/PhoneNumberInput.js +23 -2
  259. package/build/phoneNumberInput/PhoneNumberInput.js.map +1 -1
  260. package/build/phoneNumberInput/PhoneNumberInput.mjs +23 -2
  261. package/build/phoneNumberInput/PhoneNumberInput.mjs.map +1 -1
  262. package/build/popover/Popover.js +24 -4
  263. package/build/popover/Popover.js.map +1 -1
  264. package/build/popover/Popover.mjs +24 -4
  265. package/build/popover/Popover.mjs.map +1 -1
  266. package/build/processIndicator/ProcessIndicator.js +22 -1
  267. package/build/processIndicator/ProcessIndicator.js.map +1 -1
  268. package/build/processIndicator/ProcessIndicator.mjs +22 -1
  269. package/build/processIndicator/ProcessIndicator.mjs.map +1 -1
  270. package/build/progressBar/ProgressBar.js +24 -2
  271. package/build/progressBar/ProgressBar.js.map +1 -1
  272. package/build/progressBar/ProgressBar.mjs +24 -2
  273. package/build/progressBar/ProgressBar.mjs.map +1 -1
  274. package/build/promoCard/PromoCard.js +22 -2
  275. package/build/promoCard/PromoCard.js.map +1 -1
  276. package/build/promoCard/PromoCard.mjs +22 -2
  277. package/build/promoCard/PromoCard.mjs.map +1 -1
  278. package/build/promoCard/PromoCardIndicator.js +22 -1
  279. package/build/promoCard/PromoCardIndicator.js.map +1 -1
  280. package/build/promoCard/PromoCardIndicator.mjs +22 -1
  281. package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
  282. package/build/provider/Provider.js +25 -2
  283. package/build/provider/Provider.js.map +1 -1
  284. package/build/provider/Provider.mjs +25 -2
  285. package/build/provider/Provider.mjs.map +1 -1
  286. package/build/radio/Radio.js +24 -2
  287. package/build/radio/Radio.js.map +1 -1
  288. package/build/radio/Radio.mjs +24 -2
  289. package/build/radio/Radio.mjs.map +1 -1
  290. package/build/segmentedControl/SegmentedControl.js +22 -1
  291. package/build/segmentedControl/SegmentedControl.js.map +1 -1
  292. package/build/segmentedControl/SegmentedControl.mjs +22 -1
  293. package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
  294. package/build/select/Select.js +26 -4
  295. package/build/select/Select.js.map +1 -1
  296. package/build/select/Select.mjs +26 -4
  297. package/build/select/Select.mjs.map +1 -1
  298. package/build/select/option/Option.js +22 -1
  299. package/build/select/option/Option.js.map +1 -1
  300. package/build/select/option/Option.mjs +22 -1
  301. package/build/select/option/Option.mjs.map +1 -1
  302. package/build/selectOption/SelectOption.js +24 -6
  303. package/build/selectOption/SelectOption.js.map +1 -1
  304. package/build/selectOption/SelectOption.mjs +24 -6
  305. package/build/selectOption/SelectOption.mjs.map +1 -1
  306. package/build/statusIcon/StatusIcon.js +26 -8
  307. package/build/statusIcon/StatusIcon.js.map +1 -1
  308. package/build/statusIcon/StatusIcon.mjs +26 -8
  309. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  310. package/build/stepper/Stepper.js +25 -3
  311. package/build/stepper/Stepper.js.map +1 -1
  312. package/build/stepper/Stepper.mjs +25 -3
  313. package/build/stepper/Stepper.mjs.map +1 -1
  314. package/build/stepper/deviceDetection.js +2 -3
  315. package/build/stepper/deviceDetection.js.map +1 -1
  316. package/build/stepper/deviceDetection.mjs +2 -3
  317. package/build/stepper/deviceDetection.mjs.map +1 -1
  318. package/build/sticky/Sticky.js +25 -2
  319. package/build/sticky/Sticky.js.map +1 -1
  320. package/build/sticky/Sticky.mjs +25 -2
  321. package/build/sticky/Sticky.mjs.map +1 -1
  322. package/build/styles/avatar/Avatar.css +29 -0
  323. package/build/styles/badge/Badge.css +6 -0
  324. package/build/styles/circularButton/CircularButton.css +2 -2
  325. package/build/styles/common/circle/Circle.css +4 -0
  326. package/build/styles/main.css +46 -22
  327. package/build/styles/statusIcon/StatusIcon.css +0 -20
  328. package/build/summary/Summary.js +21 -5
  329. package/build/summary/Summary.js.map +1 -1
  330. package/build/summary/Summary.mjs +21 -5
  331. package/build/summary/Summary.mjs.map +1 -1
  332. package/build/tabs/Tabs.js +23 -3
  333. package/build/tabs/Tabs.js.map +1 -1
  334. package/build/tabs/Tabs.mjs +23 -3
  335. package/build/tabs/Tabs.mjs.map +1 -1
  336. package/build/tile/Tile.js +24 -2
  337. package/build/tile/Tile.js.map +1 -1
  338. package/build/tile/Tile.mjs +24 -2
  339. package/build/tile/Tile.mjs.map +1 -1
  340. package/build/title/Title.js +23 -1
  341. package/build/title/Title.js.map +1 -1
  342. package/build/title/Title.mjs +23 -1
  343. package/build/title/Title.mjs.map +1 -1
  344. package/build/tooltip/Tooltip.js +22 -1
  345. package/build/tooltip/Tooltip.js.map +1 -1
  346. package/build/tooltip/Tooltip.mjs +22 -1
  347. package/build/tooltip/Tooltip.mjs.map +1 -1
  348. package/build/typeahead/Typeahead.js +22 -4
  349. package/build/typeahead/Typeahead.js.map +1 -1
  350. package/build/typeahead/Typeahead.mjs +22 -4
  351. package/build/typeahead/Typeahead.mjs.map +1 -1
  352. package/build/types/avatar/Avatar.d.ts.map +1 -1
  353. package/build/types/badge/Badge.d.ts.map +1 -1
  354. package/build/types/button/Button.d.ts.map +1 -1
  355. package/build/types/button/Button.messages.d.ts +7 -7
  356. package/build/types/button/Button.messages.d.ts.map +1 -1
  357. package/build/types/button/classMap.d.ts +10 -10
  358. package/build/types/button/classMap.d.ts.map +1 -1
  359. package/build/types/button/legacyUtils/index.d.ts +1 -1
  360. package/build/types/button/legacyUtils/index.d.ts.map +1 -1
  361. package/build/types/button/legacyUtils/legacyUtils.d.ts +20 -6
  362. package/build/types/button/legacyUtils/legacyUtils.d.ts.map +1 -1
  363. package/build/types/checkboxButton/index.d.ts +1 -1
  364. package/build/types/checkboxButton/index.d.ts.map +1 -1
  365. package/build/types/common/circle/Circle.d.ts +1 -1
  366. package/build/types/common/circle/Circle.d.ts.map +1 -1
  367. package/build/types/common/fakeEvents.d.ts +23 -0
  368. package/build/types/common/fakeEvents.d.ts.map +1 -0
  369. package/build/types/common/hooks/index.d.ts +4 -4
  370. package/build/types/common/hooks/index.d.ts.map +1 -1
  371. package/build/types/common/hooks/useConditionalListener/index.d.ts +1 -1
  372. package/build/types/common/hooks/useConditionalListener/index.d.ts.map +1 -1
  373. package/build/types/common/hooks/useDirection/index.d.ts +1 -1
  374. package/build/types/common/hooks/useDirection/index.d.ts.map +1 -1
  375. package/build/types/common/hooks/useHasIntersected/index.d.ts +1 -1
  376. package/build/types/common/hooks/useHasIntersected/index.d.ts.map +1 -1
  377. package/build/types/common/hooks/useHasIntersected/useHasIntersected.d.ts +15 -4
  378. package/build/types/common/hooks/useHasIntersected/useHasIntersected.d.ts.map +1 -1
  379. package/build/types/common/index.d.ts +28 -28
  380. package/build/types/common/index.d.ts.map +1 -1
  381. package/build/types/common/responsivePanel/index.d.ts +1 -1
  382. package/build/types/common/responsivePanel/index.d.ts.map +1 -1
  383. package/build/types/index.d.ts +1 -0
  384. package/build/types/index.d.ts.map +1 -1
  385. package/build/types/navigationOption/NavigationOption.d.ts +1 -0
  386. package/build/types/navigationOption/NavigationOption.d.ts.map +1 -1
  387. package/build/types/statusIcon/StatusIcon.d.ts +7 -3
  388. package/build/types/statusIcon/StatusIcon.d.ts.map +1 -1
  389. package/build/types/stepper/deviceDetection.d.ts +1 -1
  390. package/build/types/stepper/deviceDetection.d.ts.map +1 -1
  391. package/build/types/test-utils/style-mock.d.ts +1 -0
  392. package/build/types/test-utils/style-mock.d.ts.map +1 -0
  393. package/build/types/utilities/deprecatedProperty/deprecatedProperty.d.ts +8 -6
  394. package/build/types/utilities/deprecatedProperty/deprecatedProperty.d.ts.map +1 -1
  395. package/build/types/utilities/deprecatedProperty/index.d.ts +1 -1
  396. package/build/types/utilities/deprecatedProperty/index.d.ts.map +1 -1
  397. package/build/types/utilities/index.d.ts +2 -2
  398. package/build/types/utilities/index.d.ts.map +1 -1
  399. package/build/types/utilities/logActionRequired.d.ts +2 -2
  400. package/build/types/utilities/logActionRequired.d.ts.map +1 -1
  401. package/build/upload/Upload.js +21 -2
  402. package/build/upload/Upload.js.map +1 -1
  403. package/build/upload/Upload.mjs +21 -2
  404. package/build/upload/Upload.mjs.map +1 -1
  405. package/build/upload/steps/processingStep/processingStep.js +25 -3
  406. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  407. package/build/upload/steps/processingStep/processingStep.mjs +25 -3
  408. package/build/upload/steps/processingStep/processingStep.mjs.map +1 -1
  409. package/build/upload/steps/uploadImageStep/uploadImageStep.js +23 -3
  410. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  411. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +23 -3
  412. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  413. package/build/uploadInput/UploadInput.js +22 -3
  414. package/build/uploadInput/UploadInput.js.map +1 -1
  415. package/build/uploadInput/UploadInput.mjs +22 -3
  416. package/build/uploadInput/UploadInput.mjs.map +1 -1
  417. package/build/uploadInput/uploadButton/UploadButton.js +21 -2
  418. package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
  419. package/build/uploadInput/uploadButton/UploadButton.mjs +21 -2
  420. package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
  421. package/build/uploadInput/uploadButton/defaults.js +24 -0
  422. package/build/uploadInput/uploadButton/defaults.js.map +1 -1
  423. package/build/uploadInput/uploadButton/defaults.mjs +24 -0
  424. package/build/uploadInput/uploadButton/defaults.mjs.map +1 -1
  425. package/build/uploadInput/uploadItem/UploadItem.js +21 -4
  426. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  427. package/build/uploadInput/uploadItem/UploadItem.mjs +21 -4
  428. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  429. package/build/utilities/logActionRequired.js.map +1 -1
  430. package/build/utilities/logActionRequired.mjs.map +1 -1
  431. package/build/withDisplayFormat/WithDisplayFormat.js +25 -1
  432. package/build/withDisplayFormat/WithDisplayFormat.js.map +1 -1
  433. package/build/withDisplayFormat/WithDisplayFormat.mjs +25 -1
  434. package/build/withDisplayFormat/WithDisplayFormat.mjs.map +1 -1
  435. package/package.json +3 -3
  436. package/src/avatar/Avatar.css +29 -0
  437. package/src/avatar/Avatar.less +12 -0
  438. package/src/avatar/Avatar.tsx +4 -8
  439. package/src/avatarWrapper/__snapshots__/AvatarWrapper.spec.tsx.snap +11 -22
  440. package/src/badge/Badge.css +6 -0
  441. package/src/badge/Badge.less +6 -0
  442. package/src/badge/Badge.tsx +1 -11
  443. package/src/button/Button.tsx +0 -3
  444. package/src/button/legacyUtils/legacyUtils.ts +74 -0
  445. package/src/circularButton/CircularButton.css +2 -2
  446. package/src/circularButton/CircularButton.less +1 -1
  447. package/src/circularButton/CircularButton.story.tsx +3 -0
  448. package/src/circularButton/CircularButton.tsx +1 -1
  449. package/src/circularButton/__snapshots__/CircularButton.spec.tsx.snap +10 -10
  450. package/src/common/circle/Circle.css +4 -0
  451. package/src/common/circle/Circle.less +6 -0
  452. package/src/common/circle/Circle.story.tsx +2 -2
  453. package/src/common/circle/Circle.tsx +25 -2
  454. package/src/common/{fakeEvents.js → fakeEvents.ts} +1 -1
  455. package/src/common/hooks/useHasIntersected/{useHasIntersected.js → useHasIntersected.ts} +20 -11
  456. package/src/flowNavigation/{FlowNavigation.story.js → FlowNavigation.story.tsx} +34 -16
  457. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +4 -8
  458. package/src/i18n/de.json +5 -0
  459. package/src/i18n/es.json +5 -0
  460. package/src/i18n/fr.json +5 -0
  461. package/src/i18n/hu.json +5 -0
  462. package/src/i18n/id.json +5 -0
  463. package/src/i18n/it.json +5 -0
  464. package/src/i18n/ja.json +5 -0
  465. package/src/i18n/pl.json +5 -0
  466. package/src/i18n/pt.json +5 -0
  467. package/src/i18n/ro.json +5 -0
  468. package/src/i18n/ru.json +5 -0
  469. package/src/i18n/tr.json +5 -0
  470. package/src/index.ts +1 -0
  471. package/src/inputWithDisplayFormat/InputWithDisplayFormat.story.tsx +78 -0
  472. package/src/main.css +46 -22
  473. package/src/navigationOption/{NavigationOption.story.js → NavigationOption.story.tsx} +23 -5
  474. package/src/navigationOption/NavigationOption.tsx +1 -1
  475. package/src/overlayHeader/__snapshots__/OverlayHeader.spec.tsx.snap +2 -4
  476. package/src/promoCard/PromoCard.spec.tsx +1 -1
  477. package/src/radio/__snapshots__/Radio.rtl.spec.tsx.snap +2 -4
  478. package/src/select/{Select.story.js → Select.story.tsx} +97 -47
  479. package/src/statusIcon/StatusIcon.css +0 -20
  480. package/src/statusIcon/StatusIcon.less +0 -17
  481. package/src/statusIcon/StatusIcon.spec.tsx +2 -21
  482. package/src/statusIcon/StatusIcon.story.tsx +32 -1
  483. package/src/statusIcon/StatusIcon.tsx +11 -10
  484. package/src/stepper/{deviceDetection.js → deviceDetection.ts} +2 -6
  485. package/src/utilities/deprecatedProperty/{deprecatedProperty.spec.js → deprecatedProperty.spec.ts} +7 -13
  486. package/src/utilities/deprecatedProperty/{deprecatedProperty.js → deprecatedProperty.ts} +23 -4
  487. package/src/utilities/{logActionRequired.js → logActionRequired.ts} +2 -2
  488. package/src/button/legacyUtils/legacyUtils.js +0 -54
  489. package/src/common/requirements.js +0 -440
  490. package/src/inputWithDisplayFormat/InputWithDisplayFormat.story.js +0 -85
  491. /package/src/button/{Button.messages.js → Button.messages.ts} +0 -0
  492. /package/src/button/{classMap.js → classMap.ts} +0 -0
  493. /package/src/button/legacyUtils/{index.js → index.ts} +0 -0
  494. /package/src/checkboxButton/{index.js → index.ts} +0 -0
  495. /package/src/common/hooks/{index.js → index.ts} +0 -0
  496. /package/src/common/hooks/useConditionalListener/{index.js → index.ts} +0 -0
  497. /package/src/common/hooks/useDirection/{index.js → index.ts} +0 -0
  498. /package/src/common/hooks/useHasIntersected/{index.js → index.ts} +0 -0
  499. /package/src/common/{index.js → index.ts} +0 -0
  500. /package/src/common/responsivePanel/{index.js → index.ts} +0 -0
  501. /package/src/test-utils/{style-mock.js → style-mock.ts} +0 -0
  502. /package/src/utilities/deprecatedProperty/{index.js → index.ts} +0 -0
  503. /package/src/utilities/{index.js → index.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"WithDisplayFormat.mjs","sources":["../../src/withDisplayFormat/WithDisplayFormat.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { HistoryNavigator } from '../common';\nimport {\n formatWithPattern,\n getCountOfSymbolsInSelection,\n getCursorPositionAfterKeystroke,\n unformatWithPattern,\n getDistanceToPreviousSymbol,\n getDistanceToNextSymbol,\n} from '../common/textFormat';\nimport { InputProps } from '../inputs/Input';\nimport { TextAreaProps } from '../inputs/TextArea';\n\ntype HTMLTextElement = HTMLInputElement | HTMLTextAreaElement;\ntype TextElementProps = InputProps | TextAreaProps;\n\nexport type EventType =\n | 'KeyDown'\n | 'Paste'\n | 'Cut'\n | 'Undo'\n | 'Redo'\n | 'Backspace'\n | 'Delete'\n | 'Initial';\n\ninterface WithDisplayFormatState {\n value: string;\n historyNavigator: HistoryNavigator;\n prevDisplayPattern: string;\n triggerType: EventType;\n triggerEvent: React.KeyboardEvent<HTMLTextElement> | null;\n pastedLength: number;\n selectionStart: number;\n selectionEnd: number;\n}\n\nexport interface WithDisplayFormatProps<T extends TextElementProps = TextElementProps>\n extends Pick<\n TextElementProps,\n | 'className'\n | 'disabled'\n | 'id'\n | 'maxLength'\n | 'minLength'\n | 'name'\n | 'placeholder'\n | 'readOnly'\n | 'required'\n | 'inputMode'\n > {\n value?: string;\n displayPattern: string;\n /**\n * autocomplete hides our form help so we need to disable it when help text\n * is present. Chrome ignores autocomplete=off, the only way to disable it is\n * to provide an 'invalid' value, for which 'disabled' serves.\n */\n autoComplete?: TextElementProps['autoComplete'] | 'disabled';\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n onFocus?: (value: string) => void;\n render: (renderProps: T) => React.JSX.Element;\n}\n\nclass WithDisplayFormat<T extends TextElementProps> extends React.Component<\n WithDisplayFormatProps<T>,\n WithDisplayFormatState\n> {\n declare props: WithDisplayFormatProps<T> &\n Required<Pick<WithDisplayFormatProps<T>, keyof typeof WithDisplayFormat.defaultProps>>;\n static defaultProps = {\n autoComplete: 'off',\n displayPattern: '',\n value: '',\n };\n\n constructor(props: WithDisplayFormatProps) {\n super(props);\n const unformattedValue = unformatWithPattern(props.value ?? '', props.displayPattern);\n this.state = {\n value: formatWithPattern(unformattedValue, props.displayPattern),\n historyNavigator: new HistoryNavigator(),\n prevDisplayPattern: props.displayPattern,\n triggerType: 'Initial',\n triggerEvent: null,\n selectionStart: 0,\n selectionEnd: 0,\n pastedLength: 0,\n };\n }\n\n static getDerivedStateFromProps(\n { displayPattern }: WithDisplayFormatProps,\n { prevDisplayPattern = displayPattern, value, historyNavigator }: WithDisplayFormatState,\n ) {\n if (prevDisplayPattern !== displayPattern) {\n const unFormattedValue = unformatWithPattern(value, prevDisplayPattern);\n historyNavigator.reset();\n\n return {\n prevDisplayPattern: displayPattern,\n value: formatWithPattern(unFormattedValue, displayPattern),\n triggerType: null,\n triggerEvent: null,\n pastedLength: 0,\n };\n }\n return null;\n }\n\n getUserAction = (unformattedValue: string): EventType | string => {\n const { triggerEvent, triggerType, value } = this.state;\n const { displayPattern } = this.props;\n\n if (triggerEvent) {\n const charCode = String.fromCharCode(triggerEvent.which).toLowerCase();\n\n if (triggerType === 'Paste' || triggerType === 'Cut') {\n return triggerType;\n }\n\n if ((triggerEvent.ctrlKey || triggerEvent.metaKey) && charCode === 'z') {\n return triggerEvent.shiftKey ? 'Redo' : 'Undo';\n }\n // Detect mouse event redo\n if (triggerEvent.ctrlKey && charCode === 'd') {\n return 'Delete';\n }\n\n // Android Fix.\n if (\n typeof triggerEvent.key === 'undefined' &&\n unformattedValue.length <= unformatWithPattern(value, displayPattern).length\n ) {\n return 'Backspace';\n }\n return triggerEvent.key;\n }\n // triggerEvent can be null only in case of \"autofilling\" (via password manager extension or browser build-in one) events\n return 'Paste';\n };\n\n resetEvent = () => {\n this.setState({\n triggerType: 'Initial',\n triggerEvent: null,\n pastedLength: 0,\n });\n };\n\n detectUndoRedo = (event: React.KeyboardEvent<HTMLTextElement>) => {\n const charCode = String.fromCharCode(event.which).toLowerCase();\n if ((event.ctrlKey || event.metaKey) && charCode === 'z') {\n return event.shiftKey ? 'Redo' : 'Undo';\n }\n return null;\n };\n\n handleOnKeyDown: React.KeyboardEventHandler<HTMLTextElement> = (event) => {\n event.persist();\n const { selectionStart, selectionEnd } = event.currentTarget;\n const { historyNavigator } = this.state;\n const { displayPattern } = this.props;\n\n // Unfortunately Undo and Redo don't trigger OnChange event so we need to handle some value logic here.\n let newFormattedValue = '';\n\n if (this.detectUndoRedo(event) === 'Undo') {\n newFormattedValue = formatWithPattern(historyNavigator.undo().toString(), displayPattern);\n this.setState({ value: newFormattedValue, triggerType: 'Undo' });\n } else if (this.detectUndoRedo(event) === 'Redo') {\n newFormattedValue = formatWithPattern(historyNavigator.redo().toString(), displayPattern);\n this.setState({ value: newFormattedValue, triggerType: 'Redo' });\n } else {\n this.setState({\n triggerEvent: event,\n triggerType: 'KeyDown',\n selectionStart: selectionStart ?? 0,\n selectionEnd: selectionEnd ?? 0,\n });\n }\n };\n\n handleOnPaste: React.ClipboardEventHandler<HTMLTextElement> = (event) => {\n const { displayPattern } = this.props;\n const pastedLength = unformatWithPattern(\n event.clipboardData.getData('Text'),\n displayPattern,\n ).length;\n\n this.setState({ triggerType: 'Paste', pastedLength });\n };\n\n handleOnCut: React.ClipboardEventHandler<HTMLTextElement> = () => {\n this.setState({ triggerType: 'Cut' });\n };\n\n isKeyAllowed = (action: EventType | string) => {\n const { displayPattern } = this.props;\n const symbolsInPattern = displayPattern.split('').filter((character) => character !== '*');\n\n return !symbolsInPattern.includes(action);\n };\n\n handleOnChange: React.ChangeEventHandler<HTMLTextElement> = (event) => {\n const { historyNavigator, triggerType } = this.state;\n const { displayPattern, onChange } = this.props;\n const { value } = event.target;\n let unformattedValue = unformatWithPattern(value, displayPattern);\n const action = this.getUserAction(unformattedValue);\n if (!this.isKeyAllowed(action) || triggerType === 'Undo' || triggerType === 'Redo') {\n return;\n }\n\n if (action === 'Backspace' || action === 'Delete') {\n unformattedValue = this.handleDelete(unformattedValue, action);\n }\n\n const newFormattedValue = formatWithPattern(unformattedValue, displayPattern);\n historyNavigator.add(unformattedValue);\n\n this.handleCursorPositioning(action);\n\n this.setState({ value: newFormattedValue }, () => {\n this.resetEvent();\n if (onChange) {\n const broadcastValue = unformatWithPattern(newFormattedValue, displayPattern);\n onChange(broadcastValue);\n }\n });\n };\n\n handleOnBlur: React.FocusEventHandler<HTMLTextElement> = (event) => {\n this.props.onBlur?.(unformatWithPattern(event.target.value, this.props.displayPattern));\n };\n\n handleOnFocus: React.FocusEventHandler<HTMLTextElement> = (event) => {\n const { displayPattern, onFocus } = this.props;\n if (onFocus) {\n this.handleOnChange(event);\n onFocus(unformatWithPattern(event.target.value, displayPattern));\n }\n };\n\n handleDelete = (unformattedValue: string, action: EventType) => {\n const { displayPattern } = this.props;\n const { selectionStart, selectionEnd } = this.state;\n const newStack = [...unformattedValue];\n if (selectionStart === selectionEnd) {\n let startPosition =\n selectionStart - getCountOfSymbolsInSelection(0, selectionStart, displayPattern);\n let toDelete = 0;\n\n let count = getDistanceToNextSymbol(selectionStart, displayPattern);\n if (action === 'Backspace') {\n startPosition -= 1;\n count = getDistanceToPreviousSymbol(selectionStart, displayPattern);\n }\n\n if (startPosition >= 0 && count) {\n toDelete = 1;\n }\n\n newStack.splice(startPosition, toDelete);\n }\n\n return newStack.join('');\n };\n\n handleCursorPositioning = (action: string) => {\n const { displayPattern } = this.props;\n const { triggerEvent, selectionStart, selectionEnd, pastedLength } = this.state;\n const target = triggerEvent?.currentTarget;\n\n const cursorPosition = getCursorPositionAfterKeystroke(\n action,\n selectionStart,\n selectionEnd,\n displayPattern,\n pastedLength,\n );\n\n setTimeout(() => {\n target?.setSelectionRange(cursorPosition, cursorPosition);\n this.setState({ selectionStart: cursorPosition, selectionEnd: cursorPosition });\n }, 0);\n };\n\n render() {\n const {\n inputMode,\n className,\n id,\n name,\n placeholder,\n readOnly,\n required,\n minLength,\n maxLength,\n disabled,\n autoComplete,\n } = this.props;\n const { value } = this.state;\n const renderProps: TextElementProps = {\n inputMode,\n className,\n id,\n name,\n placeholder,\n readOnly,\n required,\n minLength,\n maxLength,\n disabled,\n autoComplete,\n value,\n onFocus: this.handleOnFocus,\n onBlur: this.handleOnBlur,\n onPaste: this.handleOnPaste,\n onKeyDown: this.handleOnKeyDown,\n onChange: this.handleOnChange,\n onCut: this.handleOnCut,\n };\n return this.props.render(renderProps as T);\n }\n}\n\nexport default WithDisplayFormat;\n"],"names":["WithDisplayFormat","React","Component","defaultProps","autoComplete","displayPattern","value","constructor","props","unformattedValue","unformatWithPattern","state","formatWithPattern","historyNavigator","HistoryNavigator","prevDisplayPattern","triggerType","triggerEvent","selectionStart","selectionEnd","pastedLength","getDerivedStateFromProps","unFormattedValue","reset","getUserAction","charCode","String","fromCharCode","which","toLowerCase","ctrlKey","metaKey","shiftKey","key","length","resetEvent","setState","detectUndoRedo","event","handleOnKeyDown","persist","currentTarget","newFormattedValue","undo","toString","redo","handleOnPaste","clipboardData","getData","handleOnCut","isKeyAllowed","action","symbolsInPattern","split","filter","character","includes","handleOnChange","onChange","target","handleDelete","add","handleCursorPositioning","broadcastValue","handleOnBlur","onBlur","handleOnFocus","onFocus","newStack","startPosition","getCountOfSymbolsInSelection","toDelete","count","getDistanceToNextSymbol","getDistanceToPreviousSymbol","splice","join","cursorPosition","getCursorPositionAfterKeystroke","setTimeout","setSelectionRange","render","inputMode","className","id","name","placeholder","readOnly","required","minLength","maxLength","disabled","renderProps","onPaste","onKeyDown","onCut"],"mappings":"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"}
1
+ {"version":3,"file":"WithDisplayFormat.mjs","sources":["../../src/withDisplayFormat/WithDisplayFormat.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { HistoryNavigator } from '../common';\nimport {\n formatWithPattern,\n getCountOfSymbolsInSelection,\n getCursorPositionAfterKeystroke,\n unformatWithPattern,\n getDistanceToPreviousSymbol,\n getDistanceToNextSymbol,\n} from '../common/textFormat';\nimport { InputProps } from '../inputs/Input';\nimport { TextAreaProps } from '../inputs/TextArea';\n\ntype HTMLTextElement = HTMLInputElement | HTMLTextAreaElement;\ntype TextElementProps = InputProps | TextAreaProps;\n\nexport type EventType =\n | 'KeyDown'\n | 'Paste'\n | 'Cut'\n | 'Undo'\n | 'Redo'\n | 'Backspace'\n | 'Delete'\n | 'Initial';\n\ninterface WithDisplayFormatState {\n value: string;\n historyNavigator: HistoryNavigator;\n prevDisplayPattern: string;\n triggerType: EventType;\n triggerEvent: React.KeyboardEvent<HTMLTextElement> | null;\n pastedLength: number;\n selectionStart: number;\n selectionEnd: number;\n}\n\nexport interface WithDisplayFormatProps<T extends TextElementProps = TextElementProps>\n extends Pick<\n TextElementProps,\n | 'className'\n | 'disabled'\n | 'id'\n | 'maxLength'\n | 'minLength'\n | 'name'\n | 'placeholder'\n | 'readOnly'\n | 'required'\n | 'inputMode'\n > {\n value?: string;\n displayPattern: string;\n /**\n * autocomplete hides our form help so we need to disable it when help text\n * is present. Chrome ignores autocomplete=off, the only way to disable it is\n * to provide an 'invalid' value, for which 'disabled' serves.\n */\n autoComplete?: TextElementProps['autoComplete'] | 'disabled';\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n onFocus?: (value: string) => void;\n render: (renderProps: T) => React.JSX.Element;\n}\n\nclass WithDisplayFormat<T extends TextElementProps> extends React.Component<\n WithDisplayFormatProps<T>,\n WithDisplayFormatState\n> {\n declare props: WithDisplayFormatProps<T> &\n Required<Pick<WithDisplayFormatProps<T>, keyof typeof WithDisplayFormat.defaultProps>>;\n static defaultProps = {\n autoComplete: 'off',\n displayPattern: '',\n value: '',\n };\n\n constructor(props: WithDisplayFormatProps) {\n super(props);\n const unformattedValue = unformatWithPattern(props.value ?? '', props.displayPattern);\n this.state = {\n value: formatWithPattern(unformattedValue, props.displayPattern),\n historyNavigator: new HistoryNavigator(),\n prevDisplayPattern: props.displayPattern,\n triggerType: 'Initial',\n triggerEvent: null,\n selectionStart: 0,\n selectionEnd: 0,\n pastedLength: 0,\n };\n }\n\n static getDerivedStateFromProps(\n { displayPattern }: WithDisplayFormatProps,\n { prevDisplayPattern = displayPattern, value, historyNavigator }: WithDisplayFormatState,\n ) {\n if (prevDisplayPattern !== displayPattern) {\n const unFormattedValue = unformatWithPattern(value, prevDisplayPattern);\n historyNavigator.reset();\n\n return {\n prevDisplayPattern: displayPattern,\n value: formatWithPattern(unFormattedValue, displayPattern),\n triggerType: null,\n triggerEvent: null,\n pastedLength: 0,\n };\n }\n return null;\n }\n\n getUserAction = (unformattedValue: string): EventType | string => {\n const { triggerEvent, triggerType, value } = this.state;\n const { displayPattern } = this.props;\n\n if (triggerEvent) {\n const charCode = String.fromCharCode(triggerEvent.which).toLowerCase();\n\n if (triggerType === 'Paste' || triggerType === 'Cut') {\n return triggerType;\n }\n\n if ((triggerEvent.ctrlKey || triggerEvent.metaKey) && charCode === 'z') {\n return triggerEvent.shiftKey ? 'Redo' : 'Undo';\n }\n // Detect mouse event redo\n if (triggerEvent.ctrlKey && charCode === 'd') {\n return 'Delete';\n }\n\n // Android Fix.\n if (\n typeof triggerEvent.key === 'undefined' &&\n unformattedValue.length <= unformatWithPattern(value, displayPattern).length\n ) {\n return 'Backspace';\n }\n return triggerEvent.key;\n }\n // triggerEvent can be null only in case of \"autofilling\" (via password manager extension or browser build-in one) events\n return 'Paste';\n };\n\n resetEvent = () => {\n this.setState({\n triggerType: 'Initial',\n triggerEvent: null,\n pastedLength: 0,\n });\n };\n\n detectUndoRedo = (event: React.KeyboardEvent<HTMLTextElement>) => {\n const charCode = String.fromCharCode(event.which).toLowerCase();\n if ((event.ctrlKey || event.metaKey) && charCode === 'z') {\n return event.shiftKey ? 'Redo' : 'Undo';\n }\n return null;\n };\n\n handleOnKeyDown: React.KeyboardEventHandler<HTMLTextElement> = (event) => {\n event.persist();\n const { selectionStart, selectionEnd } = event.currentTarget;\n const { historyNavigator } = this.state;\n const { displayPattern } = this.props;\n\n // Unfortunately Undo and Redo don't trigger OnChange event so we need to handle some value logic here.\n let newFormattedValue = '';\n\n if (this.detectUndoRedo(event) === 'Undo') {\n newFormattedValue = formatWithPattern(historyNavigator.undo().toString(), displayPattern);\n this.setState({ value: newFormattedValue, triggerType: 'Undo' });\n } else if (this.detectUndoRedo(event) === 'Redo') {\n newFormattedValue = formatWithPattern(historyNavigator.redo().toString(), displayPattern);\n this.setState({ value: newFormattedValue, triggerType: 'Redo' });\n } else {\n this.setState({\n triggerEvent: event,\n triggerType: 'KeyDown',\n selectionStart: selectionStart ?? 0,\n selectionEnd: selectionEnd ?? 0,\n });\n }\n };\n\n handleOnPaste: React.ClipboardEventHandler<HTMLTextElement> = (event) => {\n const { displayPattern } = this.props;\n const pastedLength = unformatWithPattern(\n event.clipboardData.getData('Text'),\n displayPattern,\n ).length;\n\n this.setState({ triggerType: 'Paste', pastedLength });\n };\n\n handleOnCut: React.ClipboardEventHandler<HTMLTextElement> = () => {\n this.setState({ triggerType: 'Cut' });\n };\n\n isKeyAllowed = (action: EventType | string) => {\n const { displayPattern } = this.props;\n const symbolsInPattern = displayPattern.split('').filter((character) => character !== '*');\n\n return !symbolsInPattern.includes(action);\n };\n\n handleOnChange: React.ChangeEventHandler<HTMLTextElement> = (event) => {\n const { historyNavigator, triggerType } = this.state;\n const { displayPattern, onChange } = this.props;\n const { value } = event.target;\n let unformattedValue = unformatWithPattern(value, displayPattern);\n const action = this.getUserAction(unformattedValue);\n if (!this.isKeyAllowed(action) || triggerType === 'Undo' || triggerType === 'Redo') {\n return;\n }\n\n if (action === 'Backspace' || action === 'Delete') {\n unformattedValue = this.handleDelete(unformattedValue, action);\n }\n\n const newFormattedValue = formatWithPattern(unformattedValue, displayPattern);\n historyNavigator.add(unformattedValue);\n\n this.handleCursorPositioning(action);\n\n this.setState({ value: newFormattedValue }, () => {\n this.resetEvent();\n if (onChange) {\n const broadcastValue = unformatWithPattern(newFormattedValue, displayPattern);\n onChange(broadcastValue);\n }\n });\n };\n\n handleOnBlur: React.FocusEventHandler<HTMLTextElement> = (event) => {\n this.props.onBlur?.(unformatWithPattern(event.target.value, this.props.displayPattern));\n };\n\n handleOnFocus: React.FocusEventHandler<HTMLTextElement> = (event) => {\n const { displayPattern, onFocus } = this.props;\n if (onFocus) {\n this.handleOnChange(event);\n onFocus(unformatWithPattern(event.target.value, displayPattern));\n }\n };\n\n handleDelete = (unformattedValue: string, action: EventType) => {\n const { displayPattern } = this.props;\n const { selectionStart, selectionEnd } = this.state;\n const newStack = [...unformattedValue];\n if (selectionStart === selectionEnd) {\n let startPosition =\n selectionStart - getCountOfSymbolsInSelection(0, selectionStart, displayPattern);\n let toDelete = 0;\n\n let count = getDistanceToNextSymbol(selectionStart, displayPattern);\n if (action === 'Backspace') {\n startPosition -= 1;\n count = getDistanceToPreviousSymbol(selectionStart, displayPattern);\n }\n\n if (startPosition >= 0 && count) {\n toDelete = 1;\n }\n\n newStack.splice(startPosition, toDelete);\n }\n\n return newStack.join('');\n };\n\n handleCursorPositioning = (action: string) => {\n const { displayPattern } = this.props;\n const { triggerEvent, selectionStart, selectionEnd, pastedLength } = this.state;\n const target = triggerEvent?.currentTarget;\n\n const cursorPosition = getCursorPositionAfterKeystroke(\n action,\n selectionStart,\n selectionEnd,\n displayPattern,\n pastedLength,\n );\n\n setTimeout(() => {\n target?.setSelectionRange(cursorPosition, cursorPosition);\n this.setState({ selectionStart: cursorPosition, selectionEnd: cursorPosition });\n }, 0);\n };\n\n render() {\n const {\n inputMode,\n className,\n id,\n name,\n placeholder,\n readOnly,\n required,\n minLength,\n maxLength,\n disabled,\n autoComplete,\n } = this.props;\n const { value } = this.state;\n const renderProps: TextElementProps = {\n inputMode,\n className,\n id,\n name,\n placeholder,\n readOnly,\n required,\n minLength,\n maxLength,\n disabled,\n autoComplete,\n value,\n onFocus: this.handleOnFocus,\n onBlur: this.handleOnBlur,\n onPaste: this.handleOnPaste,\n onKeyDown: this.handleOnKeyDown,\n onChange: this.handleOnChange,\n onCut: this.handleOnCut,\n };\n return this.props.render(renderProps as T);\n }\n}\n\nexport default WithDisplayFormat;\n"],"names":["WithDisplayFormat","React","Component","defaultProps","autoComplete","displayPattern","value","constructor","props","unformattedValue","unformatWithPattern","state","formatWithPattern","historyNavigator","HistoryNavigator","prevDisplayPattern","triggerType","triggerEvent","selectionStart","selectionEnd","pastedLength","getDerivedStateFromProps","unFormattedValue","reset","getUserAction","charCode","String","fromCharCode","which","toLowerCase","ctrlKey","metaKey","shiftKey","key","length","resetEvent","setState","detectUndoRedo","event","handleOnKeyDown","persist","currentTarget","newFormattedValue","undo","toString","redo","handleOnPaste","clipboardData","getData","handleOnCut","isKeyAllowed","action","symbolsInPattern","split","filter","character","includes","handleOnChange","onChange","target","handleDelete","add","handleCursorPositioning","broadcastValue","handleOnBlur","onBlur","handleOnFocus","onFocus","newStack","startPosition","getCountOfSymbolsInSelection","toDelete","count","getDistanceToNextSymbol","getDistanceToPreviousSymbol","splice","join","cursorPosition","getCursorPositionAfterKeystroke","setTimeout","setSelectionRange","render","inputMode","className","id","name","placeholder","readOnly","required","minLength","maxLength","disabled","renderProps","onPaste","onKeyDown","onCut"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "46.77.0",
3
+ "version": "46.79.0",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -92,8 +92,8 @@
92
92
  "rollup-preserve-directives": "^1.1.1",
93
93
  "storybook": "^8.2.2",
94
94
  "@transferwise/neptune-css": "14.19.1",
95
- "@wise/components-theming": "1.6.1",
96
- "@transferwise/less-config": "3.1.0"
95
+ "@transferwise/less-config": "3.1.0",
96
+ "@wise/components-theming": "1.6.1"
97
97
  },
98
98
  "peerDependencies": {
99
99
  "@transferwise/icons": "^3.13.1",
@@ -2,17 +2,26 @@
2
2
  }@media (min-width: 768px) {
3
3
  }.tw-avatar {
4
4
  position: relative;
5
+ border-radius: 50%;
5
6
  -webkit-user-select: none;
6
7
  -moz-user-select: none;
7
8
  user-select: none;
8
9
  box-sizing: border-box;
9
10
  }.tw-avatar .tw-avatar__content {
11
+ align-items: center;
10
12
  background-color: rgba(134,167,189,0.10196);
11
13
  background-color: #86a7bd1a;
12
14
  background-color: var(--color-background-neutral);
15
+ border-radius: 50%;
16
+ color: #37517e;
17
+ color: var(--color-content-primary);
18
+ display: flex;
19
+ height: 100%;
20
+ justify-content: center;
13
21
  max-height: 100%;
14
22
  max-width: 100%;
15
23
  overflow: hidden;
24
+ width: 100%;
16
25
  }.tw-avatar--outlined {
17
26
  border: 1px solid #00a2dd;
18
27
  border: 1px solid var(--color-interactive-accent);
@@ -46,6 +55,10 @@
46
55
  font-feature-settings: "ss01";
47
56
  color: var(--color-dark-charcoal);
48
57
  line-height: 1;
58
+ }.tw-avatar--24 {
59
+ min-width: 24px;
60
+ width: 24px;
61
+ height: 24px;
49
62
  }.tw-avatar--24.tw-avatar--emoji,
50
63
  .tw-avatar--24.tw-avatar--icon {
51
64
  font-size: 12px;
@@ -70,6 +83,10 @@
70
83
  border: 1px solid var(--color-border-overlay);
71
84
  content: "";
72
85
  border-radius: 50%;
86
+ }.tw-avatar--40 {
87
+ min-width: 40px;
88
+ width: 40px;
89
+ height: 40px;
73
90
  }.tw-avatar--40.tw-avatar--emoji,
74
91
  .tw-avatar--40.tw-avatar--icon {
75
92
  font-size: 20px;
@@ -94,6 +111,10 @@
94
111
  border: 1px solid var(--color-border-overlay);
95
112
  content: "";
96
113
  border-radius: 50%;
114
+ }.tw-avatar--48 {
115
+ min-width: 48px;
116
+ width: 48px;
117
+ height: 48px;
97
118
  }.tw-avatar--48.tw-avatar--emoji,
98
119
  .tw-avatar--48.tw-avatar--icon {
99
120
  font-size: 24px;
@@ -118,6 +139,10 @@
118
139
  border: 1px solid var(--color-border-overlay);
119
140
  content: "";
120
141
  border-radius: 50%;
142
+ }.tw-avatar--56 {
143
+ min-width: 56px;
144
+ width: 56px;
145
+ height: 56px;
121
146
  }.tw-avatar--56.tw-avatar--emoji,
122
147
  .tw-avatar--56.tw-avatar--icon {
123
148
  font-size: 28px;
@@ -142,6 +167,10 @@
142
167
  border: 1px solid var(--color-border-overlay);
143
168
  content: "";
144
169
  border-radius: 50%;
170
+ }.tw-avatar--72 {
171
+ min-width: 72px;
172
+ width: 72px;
173
+ height: 72px;
145
174
  }.tw-avatar--72.tw-avatar--emoji,
146
175
  .tw-avatar--72.tw-avatar--icon {
147
176
  font-size: 36px;
@@ -10,15 +10,23 @@
10
10
 
11
11
  .tw-avatar {
12
12
  position: relative;
13
+ border-radius: 50%;
13
14
  user-select: none;
14
15
  box-sizing: border-box;
15
16
 
16
17
  & &__content {
18
+ align-items: center;
17
19
  background-color: #86a7bd1a;
18
20
  background-color: var(--color-background-neutral);
21
+ border-radius: 50%;
22
+ color: var(--color-content-primary);
23
+ display: flex;
24
+ height: 100%;
25
+ justify-content: center;
19
26
  max-height: 100%;
20
27
  max-width: 100%;
21
28
  overflow: hidden;
29
+ width: 100%;
22
30
  }
23
31
 
24
32
  &--outlined {
@@ -109,6 +117,10 @@
109
117
  .avatar-dimension(@avatar-size) {
110
118
  @mask-size: 2px;
111
119
 
120
+ min-width: @avatar-size;
121
+ width: @avatar-size;
122
+ height: @avatar-size;
123
+
112
124
  &.tw-avatar--emoji,
113
125
  &.tw-avatar--icon {
114
126
  font-size: @avatar-size * 0.5;
@@ -65,9 +65,7 @@ const Avatar: React.FC<AvatarProps> = ({
65
65
  const size = backwardsCompatibleSize(sizeFromProps);
66
66
 
67
67
  return (
68
- <Circle
69
- size={size}
70
- fixedSize
68
+ <div
71
69
  className={clsx('tw-avatar', className, `tw-avatar--${size}`, `tw-avatar--${type}`, {
72
70
  'tw-avatar--outlined': outlined,
73
71
  'tw-avatar--branded': Boolean(backgroundColorFromSeed),
@@ -75,17 +73,15 @@ const Avatar: React.FC<AvatarProps> = ({
75
73
  })}
76
74
  aria-label={ariaLabel}
77
75
  >
78
- <Circle
79
- size={size}
80
- fixedSize
76
+ <div
81
77
  className="tw-avatar__content"
82
78
  style={{
83
79
  backgroundColor: backgroundColor || backgroundColorFromSeed,
84
80
  }}
85
81
  >
86
82
  {children}
87
- </Circle>
88
- </Circle>
83
+ </div>
84
+ </div>
89
85
  );
90
86
  };
91
87
 
@@ -2,12 +2,10 @@
2
2
 
3
3
  exports[`FlowNavigationAvatar with a name AND profileType FlowNavigationAvatar with a name AND profileType AND avatar url renders the image 1`] = `
4
4
  <div
5
- class="np-circle d-flex align-items-center justify-content-center tw-avatar tw-avatar--48 tw-avatar--thumbnail"
6
- style="--circle-size: 48px;"
5
+ class="tw-avatar tw-avatar--48 tw-avatar--thumbnail"
7
6
  >
8
7
  <div
9
- class="np-circle d-flex align-items-center justify-content-center tw-avatar__content"
10
- style="--circle-size: 48px;"
8
+ class="tw-avatar__content"
11
9
  >
12
10
  <img
13
11
  alt=""
@@ -19,12 +17,10 @@ exports[`FlowNavigationAvatar with a name AND profileType FlowNavigationAvatar w
19
17
 
20
18
  exports[`FlowNavigationAvatar with a name AND profileType FlowNavigationAvatar with a name AND profileType renders as BUSINESS profile type with an icon 1`] = `
21
19
  <div
22
- class="np-circle d-flex align-items-center justify-content-center tw-avatar tw-avatar--48 tw-avatar--icon"
23
- style="--circle-size: 48px;"
20
+ class="tw-avatar tw-avatar--48 tw-avatar--icon"
24
21
  >
25
22
  <div
26
- class="np-circle d-flex align-items-center justify-content-center tw-avatar__content"
27
- style="--circle-size: 48px;"
23
+ class="tw-avatar__content"
28
24
  >
29
25
  <span
30
26
  class="tw-icon tw-icon-briefcase "
@@ -50,12 +46,10 @@ exports[`FlowNavigationAvatar with a name AND profileType FlowNavigationAvatar w
50
46
 
51
47
  exports[`FlowNavigationAvatar with a name AND profileType FlowNavigationAvatar with a name AND profileType renders as PERSONAL profile type with an icon 1`] = `
52
48
  <div
53
- class="np-circle d-flex align-items-center justify-content-center tw-avatar tw-avatar--48 tw-avatar--icon"
54
- style="--circle-size: 48px;"
49
+ class="tw-avatar tw-avatar--48 tw-avatar--icon"
55
50
  >
56
51
  <div
57
- class="np-circle d-flex align-items-center justify-content-center tw-avatar__content"
58
- style="--circle-size: 48px;"
52
+ class="tw-avatar__content"
59
53
  >
60
54
  <span
61
55
  class="tw-icon tw-icon-person "
@@ -87,12 +81,10 @@ exports[`FlowNavigationAvatar with a name AND profileType with a badge url passe
87
81
  class="tw-badge__children"
88
82
  >
89
83
  <div
90
- class="np-circle d-flex align-items-center justify-content-center tw-avatar tw-avatar--48 tw-avatar--icon"
91
- style="--circle-size: 48px;"
84
+ class="tw-avatar tw-avatar--48 tw-avatar--icon"
92
85
  >
93
86
  <div
94
- class="np-circle d-flex align-items-center justify-content-center tw-avatar__content"
95
- style="--circle-size: 48px;"
87
+ class="tw-avatar__content"
96
88
  >
97
89
  <span
98
90
  class="tw-icon tw-icon-person "
@@ -116,8 +108,7 @@ exports[`FlowNavigationAvatar with a name AND profileType with a badge url passe
116
108
  </div>
117
109
  </div>
118
110
  <div
119
- class="np-circle d-flex align-items-center justify-content-center tw-badge__content"
120
- style="--circle-size: 24px;"
111
+ class="tw-badge__content"
121
112
  >
122
113
  <img
123
114
  alt="badge alt text"
@@ -129,12 +120,10 @@ exports[`FlowNavigationAvatar with a name AND profileType with a badge url passe
129
120
 
130
121
  exports[`FlowNavigationAvatar with a name AND profileType with nothing passed renders a personal icon 1`] = `
131
122
  <div
132
- class="np-circle d-flex align-items-center justify-content-center tw-avatar tw-avatar--48 tw-avatar--icon"
133
- style="--circle-size: 48px;"
123
+ class="tw-avatar tw-avatar--48 tw-avatar--icon"
134
124
  >
135
125
  <div
136
- class="np-circle d-flex align-items-center justify-content-center tw-avatar__content"
137
- style="--circle-size: 48px;"
126
+ class="tw-avatar__content"
138
127
  >
139
128
  <span
140
129
  class="tw-icon tw-icon-person "
@@ -23,10 +23,16 @@
23
23
  }
24
24
  .tw-badge > .tw-badge__content {
25
25
  position: absolute;
26
+ width: var(--badge-size);
27
+ height: var(--badge-size);
26
28
  bottom: 0;
27
29
  right: 0;
28
30
  box-sizing: border-box;
31
+ border-radius: 50%;
29
32
  text-align: center;
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
30
36
  overflow: hidden;
31
37
  -webkit-user-select: none;
32
38
  -moz-user-select: none;
@@ -52,11 +52,17 @@
52
52
 
53
53
  & > &__content {
54
54
  position: absolute;
55
+ width: var(--badge-size);
56
+ height: var(--badge-size);
55
57
  bottom: 0;
56
58
  .right(0);
57
59
 
58
60
  box-sizing: border-box;
61
+ border-radius: 50%;
59
62
  text-align: center;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
60
66
  overflow: hidden;
61
67
  user-select: none;
62
68
 
@@ -11,7 +11,6 @@ import {
11
11
  ThemeLight,
12
12
  CommonProps,
13
13
  } from '../common';
14
- import Circle, { CircleProps } from '../common/circle';
15
14
 
16
15
  /**
17
16
  * @deprecated Use `SizeSmall` or `SizeLarge` instead.
@@ -29,13 +28,6 @@ export type BadgeProps = {
29
28
  'aria-label'?: string;
30
29
  } & CommonProps;
31
30
 
32
- const mapLegacySize = {
33
- [String(Size.SMALL)]: 16,
34
- // medium is deprecated, so we map it to small
35
- [String(Size.MEDIUM)]: 16,
36
- [String(Size.LARGE)]: 24,
37
- } satisfies Record<string, CircleProps['size']>;
38
-
39
31
  const Badge = ({
40
32
  badge,
41
33
  className = undefined,
@@ -58,9 +50,7 @@ const Badge = ({
58
50
  return (
59
51
  <div aria-label={ariaLabel} className={classes}>
60
52
  <div className="tw-badge__children">{children}</div>
61
- <Circle size={mapLegacySize[size]} fixedSize className="tw-badge__content">
62
- {badge}
63
- </Circle>
53
+ <div className="tw-badge__content">{badge}</div>
64
54
  </div>
65
55
  );
66
56
  };
@@ -72,12 +72,9 @@ const Button = forwardRef<ButtonReferenceType, Props>(
72
72
  ) => {
73
73
  const intl = useIntl();
74
74
 
75
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
76
75
  logDeprecationNotices({ size, type });
77
76
 
78
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
79
77
  const newType = establishNewType(type);
80
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
81
78
  const newPriority = establishNewPriority(priority, type);
82
79
 
83
80
  const classes = clsx(
@@ -0,0 +1,74 @@
1
+ import { ControlType, Priority, Size, Type } from '../../common';
2
+ import { logActionRequired, logActionRequiredIf } from '../../utilities';
3
+
4
+ const deprecatedTypeMap: Record<Type, ControlType> = {
5
+ [Type.PRIMARY]: ControlType.ACCENT,
6
+ [Type.SECONDARY]: ControlType.ACCENT,
7
+ [Type.LINK]: ControlType.ACCENT,
8
+ [Type.PAY]: ControlType.POSITIVE,
9
+ [Type.DANGER]: ControlType.NEGATIVE,
10
+ };
11
+
12
+ type OldTypeKeys = Type.DANGER | Type.LINK | Type.SECONDARY;
13
+ const oldTypePriorityMap: Record<OldTypeKeys, Priority> = {
14
+ [Type.DANGER]: Priority.SECONDARY,
15
+ [Type.LINK]: Priority.TERTIARY,
16
+ [Type.SECONDARY]: Priority.SECONDARY,
17
+ };
18
+
19
+ const deprecatedTypeMapMessage = {
20
+ [Type.DANGER]: 'Type.NEGATIVE',
21
+ [Type.LINK]: 'ControlType.ACCENT with priority Priority.TERTIARY',
22
+ [Type.PAY]: 'ControlType.POSITIVE',
23
+ [Type.PRIMARY]: 'ControlType.ACCENT',
24
+ [Type.SECONDARY]: 'ControlType.ACCENT with priority Priority.SECONDARY',
25
+ };
26
+
27
+ const deprecatedTypes = Object.keys(deprecatedTypeMap);
28
+
29
+ type EstablishNewTypeType = (
30
+ originalType: Type | (string & Record<never, never>) | null,
31
+ ) => `${ControlType}` | string | null;
32
+
33
+ export const establishNewType: EstablishNewTypeType = (originalType) =>
34
+ originalType && originalType in deprecatedTypeMap
35
+ ? deprecatedTypeMap[originalType as Type]
36
+ : originalType;
37
+
38
+ type EstablishNewPriorityType = (
39
+ originalPriority?: Priority | (string & Record<never, never>) | null,
40
+ originalType?: OldTypeKeys | (string & Record<never, never>) | null,
41
+ ) => `${ControlType}` | string | null | undefined;
42
+
43
+ export const establishNewPriority: EstablishNewPriorityType = (originalPriority, originalType) => {
44
+ const type = originalType ? establishNewType(originalType) : '';
45
+
46
+ // The old SECONDARY and LINK types now map to priorities. If they're still using one of
47
+ // these old types, ignore whatever priority they've passed and use this instead.
48
+ if (originalType && originalType in oldTypePriorityMap) {
49
+ return oldTypePriorityMap[originalType as OldTypeKeys];
50
+ }
51
+ // Only ControlType.ACCENT supports tertiary styles
52
+ if (originalPriority === Priority.TERTIARY && type !== ControlType.ACCENT) {
53
+ return Priority.SECONDARY;
54
+ }
55
+ return originalPriority;
56
+ };
57
+
58
+ type DeprecatedTypeMapMessageType = keyof typeof deprecatedTypeMapMessage;
59
+ type LogDeprecationNoticesType = (params: {
60
+ size: `${Size}`;
61
+ type: DeprecatedTypeMapMessageType | (string & Record<never, never>) | null;
62
+ }) => void;
63
+ export const logDeprecationNotices: LogDeprecationNoticesType = ({ size, type }) => {
64
+ logActionRequiredIf(
65
+ 'Button has deprecated the `Size.EXTRA_SMALL` value for the `size` prop. Please use Size.SMALL instead.',
66
+ size === Size.EXTRA_SMALL,
67
+ );
68
+
69
+ if (type && deprecatedTypes.includes(type) && type in deprecatedTypeMapMessage) {
70
+ logActionRequired(
71
+ `Button has deprecated the ${type} value for the \`type\` prop. Please update to ${deprecatedTypeMapMessage[type as DeprecatedTypeMapMessageType]}.`,
72
+ );
73
+ }
74
+ };
@@ -23,8 +23,8 @@
23
23
  }
24
24
  @media (max-width: 320px) {
25
25
  .np-circular-btn .tw-icon {
26
- top: 8px;
27
- top: var(--size-8);
26
+ top: 12px;
27
+ top: var(--size-12);
28
28
  }
29
29
  }
30
30
  .np-circular-btn .tw-icon > svg {
@@ -19,7 +19,7 @@
19
19
  .left(0);
20
20
 
21
21
  @media (--screen-400-zoom) {
22
- top: var(--size-8);
22
+ top: var(--size-12);
23
23
  }
24
24
 
25
25
  > svg {
@@ -4,6 +4,7 @@ import { ControlType, Priority } from '../common';
4
4
 
5
5
  import { Meta, StoryObj } from '@storybook/react';
6
6
  import CircularButton from './CircularButton';
7
+ import { storyConfig } from '../test-utils';
7
8
 
8
9
  export default {
9
10
  component: CircularButton,
@@ -64,3 +65,5 @@ export const All: Story = {
64
65
  );
65
66
  },
66
67
  };
68
+
69
+ export const All400Zoom: Story = storyConfig(All, { variants: ['400%'] });
@@ -38,7 +38,7 @@ const CircularButton = ({
38
38
  as="input"
39
39
  // @ts-expect-error it's input[type=button] element
40
40
  type="button"
41
- size={isTinyViewport ? 64 : 56}
41
+ size={isTinyViewport ? 72 : 56}
42
42
  aria-label={children}
43
43
  className={classes}
44
44
  disabled={disabled}
@@ -8,7 +8,7 @@ exports[`CircularButton defaults renders a button of type accent and priority pr
8
8
  <input
9
9
  aria-label="Add money"
10
10
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-accent btn-priority-1"
11
- style="--circle-size: var(--size-56);"
11
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
12
12
  type="button"
13
13
  />
14
14
  <span
@@ -46,7 +46,7 @@ exports[`CircularButton priorities renders primary buttons 1`] = `
46
46
  <input
47
47
  aria-label="Add money"
48
48
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-accent btn-priority-1"
49
- style="--circle-size: var(--size-56);"
49
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
50
50
  type="button"
51
51
  />
52
52
  <span
@@ -84,7 +84,7 @@ exports[`CircularButton priorities renders primary buttons 2`] = `
84
84
  <input
85
85
  aria-label="Add money"
86
86
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-positive btn-priority-1"
87
- style="--circle-size: var(--size-56);"
87
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
88
88
  type="button"
89
89
  />
90
90
  <span
@@ -122,7 +122,7 @@ exports[`CircularButton priorities renders primary buttons 3`] = `
122
122
  <input
123
123
  aria-label="Add money"
124
124
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-negative btn-priority-1"
125
- style="--circle-size: var(--size-56);"
125
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
126
126
  type="button"
127
127
  />
128
128
  <span
@@ -160,7 +160,7 @@ exports[`CircularButton priorities renders secondary buttons 1`] = `
160
160
  <input
161
161
  aria-label="Add money"
162
162
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-accent btn-priority-2"
163
- style="--circle-size: var(--size-56);"
163
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
164
164
  type="button"
165
165
  />
166
166
  <span
@@ -198,7 +198,7 @@ exports[`CircularButton priorities renders secondary buttons 2`] = `
198
198
  <input
199
199
  aria-label="Add money"
200
200
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-positive btn-priority-2"
201
- style="--circle-size: var(--size-56);"
201
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
202
202
  type="button"
203
203
  />
204
204
  <span
@@ -236,7 +236,7 @@ exports[`CircularButton priorities renders secondary buttons 3`] = `
236
236
  <input
237
237
  aria-label="Add money"
238
238
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-negative btn-priority-2"
239
- style="--circle-size: var(--size-56);"
239
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
240
240
  type="button"
241
241
  />
242
242
  <span
@@ -274,7 +274,7 @@ exports[`CircularButton types renders accent buttons 1`] = `
274
274
  <input
275
275
  aria-label="Add money"
276
276
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-accent btn-priority-1"
277
- style="--circle-size: var(--size-56);"
277
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
278
278
  type="button"
279
279
  />
280
280
  <span
@@ -312,7 +312,7 @@ exports[`CircularButton types renders negative buttons 1`] = `
312
312
  <input
313
313
  aria-label="Add money"
314
314
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-negative btn-priority-1"
315
- style="--circle-size: var(--size-56);"
315
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
316
316
  type="button"
317
317
  />
318
318
  <span
@@ -350,7 +350,7 @@ exports[`CircularButton types renders positive buttons 1`] = `
350
350
  <input
351
351
  aria-label="Add money"
352
352
  class="np-circle d-flex align-items-center justify-content-center btn np-btn m-b-1 btn-positive btn-priority-1"
353
- style="--circle-size: var(--size-56);"
353
+ style="--circle-size: var(--size-56); --circle-icon-size: 28px;"
354
354
  type="button"
355
355
  />
356
356
  <span
@@ -5,3 +5,7 @@
5
5
  height: var(--circle-size);
6
6
  flex-shrink: 0;
7
7
  }
8
+ .np-circle .tw-icon > svg {
9
+ height: var(--circle-icon-size);
10
+ width: var(--circle-icon-size);
11
+ }