@transferwise/components 0.0.0-experimental-4c97d70 → 0.0.0-experimental-a322f91

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 (647) hide show
  1. package/build/accordion/AccordionItem/AccordionItem.js +2 -1
  2. package/build/accordion/AccordionItem/AccordionItem.js.map +1 -1
  3. package/build/accordion/AccordionItem/AccordionItem.mjs +2 -1
  4. package/build/accordion/AccordionItem/AccordionItem.mjs.map +1 -1
  5. package/build/actionButton/ActionButton.js +2 -1
  6. package/build/actionButton/ActionButton.js.map +1 -1
  7. package/build/actionButton/ActionButton.mjs +2 -1
  8. package/build/actionButton/ActionButton.mjs.map +1 -1
  9. package/build/actionOption/ActionOption.js +2 -1
  10. package/build/actionOption/ActionOption.js.map +1 -1
  11. package/build/actionOption/ActionOption.mjs +2 -1
  12. package/build/actionOption/ActionOption.mjs.map +1 -1
  13. package/build/alert/Alert.js +2 -1
  14. package/build/alert/Alert.js.map +1 -1
  15. package/build/alert/Alert.mjs +2 -1
  16. package/build/alert/Alert.mjs.map +1 -1
  17. package/build/alert/inlineMarkdown/InlineMarkdown.js +2 -1
  18. package/build/alert/inlineMarkdown/InlineMarkdown.js.map +1 -1
  19. package/build/alert/inlineMarkdown/InlineMarkdown.mjs +2 -1
  20. package/build/alert/inlineMarkdown/InlineMarkdown.mjs.map +1 -1
  21. package/build/avatar/Avatar.js +2 -1
  22. package/build/avatar/Avatar.js.map +1 -1
  23. package/build/avatar/Avatar.mjs +2 -1
  24. package/build/avatar/Avatar.mjs.map +1 -1
  25. package/build/avatarLayout/AvatarLayout.js +1 -1
  26. package/build/avatarLayout/AvatarLayout.mjs +1 -1
  27. package/build/avatarView/AvatarView.js +2 -1
  28. package/build/avatarView/AvatarView.js.map +1 -1
  29. package/build/avatarView/AvatarView.mjs +2 -1
  30. package/build/avatarView/AvatarView.mjs.map +1 -1
  31. package/build/avatarWrapper/AvatarWrapper.js +2 -1
  32. package/build/avatarWrapper/AvatarWrapper.js.map +1 -1
  33. package/build/avatarWrapper/AvatarWrapper.mjs +2 -1
  34. package/build/avatarWrapper/AvatarWrapper.mjs.map +1 -1
  35. package/build/badge/Badge.js +2 -1
  36. package/build/badge/Badge.js.map +1 -1
  37. package/build/badge/Badge.mjs +2 -1
  38. package/build/badge/Badge.mjs.map +1 -1
  39. package/build/badge/BadgeAssets.js +2 -1
  40. package/build/badge/BadgeAssets.js.map +1 -1
  41. package/build/badge/BadgeAssets.mjs +2 -1
  42. package/build/badge/BadgeAssets.mjs.map +1 -1
  43. package/build/button/Button.js +2 -1
  44. package/build/button/Button.js.map +1 -1
  45. package/build/button/Button.mjs +2 -1
  46. package/build/button/Button.mjs.map +1 -1
  47. package/build/button/LegacyButton.js +2 -1
  48. package/build/button/LegacyButton.js.map +1 -1
  49. package/build/button/LegacyButton.mjs +2 -1
  50. package/build/button/LegacyButton.mjs.map +1 -1
  51. package/build/button/classMap.js +2 -1
  52. package/build/button/classMap.js.map +1 -1
  53. package/build/button/classMap.mjs +2 -1
  54. package/build/button/classMap.mjs.map +1 -1
  55. package/build/button/legacyUtils/legacyUtils.js +2 -1
  56. package/build/button/legacyUtils/legacyUtils.js.map +1 -1
  57. package/build/button/legacyUtils/legacyUtils.mjs +2 -1
  58. package/build/button/legacyUtils/legacyUtils.mjs.map +1 -1
  59. package/build/card/Card.js +2 -1
  60. package/build/card/Card.js.map +1 -1
  61. package/build/card/Card.mjs +2 -1
  62. package/build/card/Card.mjs.map +1 -1
  63. package/build/checkbox/Checkbox.js +2 -1
  64. package/build/checkbox/Checkbox.js.map +1 -1
  65. package/build/checkbox/Checkbox.mjs +2 -1
  66. package/build/checkbox/Checkbox.mjs.map +1 -1
  67. package/build/chevron/Chevron.js +2 -1
  68. package/build/chevron/Chevron.js.map +1 -1
  69. package/build/chevron/Chevron.mjs +2 -1
  70. package/build/chevron/Chevron.mjs.map +1 -1
  71. package/build/chips/Chip.js +2 -1
  72. package/build/chips/Chip.js.map +1 -1
  73. package/build/chips/Chip.mjs +2 -1
  74. package/build/chips/Chip.mjs.map +1 -1
  75. package/build/circularButton/CircularButton.js +3 -2
  76. package/build/circularButton/CircularButton.js.map +1 -1
  77. package/build/circularButton/CircularButton.mjs +3 -2
  78. package/build/circularButton/CircularButton.mjs.map +1 -1
  79. package/build/common/bottomSheet/BottomSheet.js +2 -2
  80. package/build/common/bottomSheet/BottomSheet.js.map +1 -1
  81. package/build/common/bottomSheet/BottomSheet.mjs +2 -2
  82. package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
  83. package/build/common/circle/Circle.js +2 -2
  84. package/build/common/circle/Circle.js.map +1 -1
  85. package/build/common/circle/Circle.mjs +2 -2
  86. package/build/common/circle/Circle.mjs.map +1 -1
  87. package/build/common/hooks/useLayout/useLayout.js +6 -6
  88. package/build/common/hooks/useLayout/useLayout.js.map +1 -1
  89. package/build/common/hooks/useLayout/useLayout.mjs +1 -1
  90. package/build/common/hooks/useLayout/useLayout.mjs.map +1 -1
  91. package/build/common/hooks/useScreenSize.js.map +1 -1
  92. package/build/common/hooks/useScreenSize.mjs.map +1 -1
  93. package/build/common/locale/index.js +9 -4
  94. package/build/common/locale/index.js.map +1 -1
  95. package/build/common/locale/index.mjs +9 -4
  96. package/build/common/locale/index.mjs.map +1 -1
  97. package/build/common/panel/Panel.js +51 -55
  98. package/build/common/panel/Panel.js.map +1 -1
  99. package/build/common/panel/Panel.mjs +56 -60
  100. package/build/common/panel/Panel.mjs.map +1 -1
  101. package/build/common/responsivePanel/ResponsivePanel.js +2 -1
  102. package/build/common/responsivePanel/ResponsivePanel.js.map +1 -1
  103. package/build/common/responsivePanel/ResponsivePanel.mjs +2 -1
  104. package/build/common/responsivePanel/ResponsivePanel.mjs.map +1 -1
  105. package/build/criticalBanner/CriticalCommsBanner.js +2 -1
  106. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  107. package/build/criticalBanner/CriticalCommsBanner.mjs +2 -1
  108. package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
  109. package/build/dateInput/DateInput.js +2 -2
  110. package/build/dateInput/DateInput.mjs +2 -2
  111. package/build/dateLookup/DateLookup.js +3 -3
  112. package/build/dateLookup/DateLookup.js.map +1 -1
  113. package/build/dateLookup/DateLookup.mjs +2 -2
  114. package/build/dateLookup/DateLookup.mjs.map +1 -1
  115. package/build/dateLookup/dateHeader/DateHeader.js +2 -1
  116. package/build/dateLookup/dateHeader/DateHeader.js.map +1 -1
  117. package/build/dateLookup/dateHeader/DateHeader.mjs +2 -1
  118. package/build/dateLookup/dateHeader/DateHeader.mjs.map +1 -1
  119. package/build/dateLookup/dateTrigger/DateTrigger.js +1 -1
  120. package/build/dateLookup/dateTrigger/DateTrigger.mjs +1 -1
  121. package/build/decision/Decision.js +4 -3
  122. package/build/decision/Decision.js.map +1 -1
  123. package/build/decision/Decision.mjs +2 -1
  124. package/build/decision/Decision.mjs.map +1 -1
  125. package/build/definitionList/DefinitionList.js +2 -1
  126. package/build/definitionList/DefinitionList.js.map +1 -1
  127. package/build/definitionList/DefinitionList.mjs +2 -1
  128. package/build/definitionList/DefinitionList.mjs.map +1 -1
  129. package/build/dimmer/Dimmer.js +2 -1
  130. package/build/dimmer/Dimmer.js.map +1 -1
  131. package/build/dimmer/Dimmer.mjs +2 -1
  132. package/build/dimmer/Dimmer.mjs.map +1 -1
  133. package/build/display/Display.js +2 -1
  134. package/build/display/Display.js.map +1 -1
  135. package/build/display/Display.mjs +2 -1
  136. package/build/display/Display.mjs.map +1 -1
  137. package/build/drawer/Drawer.js +2 -1
  138. package/build/drawer/Drawer.js.map +1 -1
  139. package/build/drawer/Drawer.mjs +2 -1
  140. package/build/drawer/Drawer.mjs.map +1 -1
  141. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js +5 -4
  142. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js.map +1 -1
  143. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs +5 -4
  144. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs.map +1 -1
  145. package/build/field/Field.js +6 -6
  146. package/build/field/Field.mjs +6 -6
  147. package/build/flowNavigation/FlowNavigation.js +4 -3
  148. package/build/flowNavigation/FlowNavigation.js.map +1 -1
  149. package/build/flowNavigation/FlowNavigation.mjs +2 -1
  150. package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
  151. package/build/header/Header.js +2 -1
  152. package/build/header/Header.js.map +1 -1
  153. package/build/header/Header.mjs +2 -1
  154. package/build/header/Header.mjs.map +1 -1
  155. package/build/i18n/en.json +0 -2
  156. package/build/i18n/en.json.js +0 -2
  157. package/build/i18n/en.json.js.map +1 -1
  158. package/build/i18n/en.json.mjs +0 -2
  159. package/build/i18n/en.json.mjs.map +1 -1
  160. package/build/image/Image.js +1 -1
  161. package/build/image/Image.mjs +1 -1
  162. package/build/index.js +2 -4
  163. package/build/index.js.map +1 -1
  164. package/build/index.mjs +1 -2
  165. package/build/index.mjs.map +1 -1
  166. package/build/info/Info.js +2 -1
  167. package/build/info/Info.js.map +1 -1
  168. package/build/info/Info.mjs +2 -1
  169. package/build/info/Info.mjs.map +1 -1
  170. package/build/inlineAlert/InlineAlert.js +2 -1
  171. package/build/inlineAlert/InlineAlert.js.map +1 -1
  172. package/build/inlineAlert/InlineAlert.mjs +2 -1
  173. package/build/inlineAlert/InlineAlert.mjs.map +1 -1
  174. package/build/inputs/SearchInput.js +2 -1
  175. package/build/inputs/SearchInput.js.map +1 -1
  176. package/build/inputs/SearchInput.mjs +2 -1
  177. package/build/inputs/SearchInput.mjs.map +1 -1
  178. package/build/inputs/SelectInput/SelectInput.js +2 -2
  179. package/build/inputs/SelectInput/SelectInput.js.map +1 -1
  180. package/build/inputs/SelectInput/SelectInput.mjs +1 -1
  181. package/build/inputs/SelectInput/SelectInput.mjs.map +1 -1
  182. package/build/instructionsList/InstructionsList.js +2 -1
  183. package/build/instructionsList/InstructionsList.js.map +1 -1
  184. package/build/instructionsList/InstructionsList.mjs +2 -1
  185. package/build/instructionsList/InstructionsList.mjs.map +1 -1
  186. package/build/link/Link.js +2 -1
  187. package/build/link/Link.js.map +1 -1
  188. package/build/link/Link.mjs +2 -1
  189. package/build/link/Link.mjs.map +1 -1
  190. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.js +2 -1
  191. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.js.map +1 -1
  192. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.mjs +2 -1
  193. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.mjs.map +1 -1
  194. package/build/listItem/ListItem.js +2 -1
  195. package/build/listItem/ListItem.js.map +1 -1
  196. package/build/listItem/ListItem.mjs +2 -1
  197. package/build/listItem/ListItem.mjs.map +1 -1
  198. package/build/listItem/Prompt/ListItemPrompt.js +6 -6
  199. package/build/listItem/Prompt/ListItemPrompt.mjs +6 -6
  200. package/build/loader/Loader.js +2 -1
  201. package/build/loader/Loader.js.map +1 -1
  202. package/build/loader/Loader.mjs +2 -1
  203. package/build/loader/Loader.mjs.map +1 -1
  204. package/build/logo/Logo.js +1 -1
  205. package/build/logo/Logo.js.map +1 -1
  206. package/build/logo/Logo.mjs +1 -1
  207. package/build/logo/Logo.mjs.map +1 -1
  208. package/build/main.css +351 -418
  209. package/build/markdown/Markdown.js +2 -1
  210. package/build/markdown/Markdown.js.map +1 -1
  211. package/build/markdown/Markdown.mjs +2 -1
  212. package/build/markdown/Markdown.mjs.map +1 -1
  213. package/build/modal/Modal.js +2 -1
  214. package/build/modal/Modal.js.map +1 -1
  215. package/build/modal/Modal.mjs +2 -1
  216. package/build/modal/Modal.mjs.map +1 -1
  217. package/build/moneyInput/MoneyInput.js +29 -13
  218. package/build/moneyInput/MoneyInput.js.map +1 -1
  219. package/build/moneyInput/MoneyInput.mjs +31 -15
  220. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  221. package/build/moneyInput/currencyFormatting.js +8 -2
  222. package/build/moneyInput/currencyFormatting.js.map +1 -1
  223. package/build/moneyInput/currencyFormatting.mjs +5 -4
  224. package/build/moneyInput/currencyFormatting.mjs.map +1 -1
  225. package/build/navigationOption/NavigationOption.js +2 -1
  226. package/build/navigationOption/NavigationOption.js.map +1 -1
  227. package/build/navigationOption/NavigationOption.mjs +2 -1
  228. package/build/navigationOption/NavigationOption.mjs.map +1 -1
  229. package/build/nudge/Nudge.js +2 -1
  230. package/build/nudge/Nudge.js.map +1 -1
  231. package/build/nudge/Nudge.mjs +2 -1
  232. package/build/nudge/Nudge.mjs.map +1 -1
  233. package/build/overlayHeader/OverlayHeader.js +2 -1
  234. package/build/overlayHeader/OverlayHeader.js.map +1 -1
  235. package/build/overlayHeader/OverlayHeader.mjs +2 -1
  236. package/build/overlayHeader/OverlayHeader.mjs.map +1 -1
  237. package/build/phoneNumberInput/PhoneNumberInput.js +2 -1
  238. package/build/phoneNumberInput/PhoneNumberInput.js.map +1 -1
  239. package/build/phoneNumberInput/PhoneNumberInput.mjs +2 -1
  240. package/build/phoneNumberInput/PhoneNumberInput.mjs.map +1 -1
  241. package/build/popover/Popover.js +2 -1
  242. package/build/popover/Popover.js.map +1 -1
  243. package/build/popover/Popover.mjs +2 -1
  244. package/build/popover/Popover.mjs.map +1 -1
  245. package/build/processIndicator/ProcessIndicator.js +2 -1
  246. package/build/processIndicator/ProcessIndicator.js.map +1 -1
  247. package/build/processIndicator/ProcessIndicator.mjs +2 -1
  248. package/build/processIndicator/ProcessIndicator.mjs.map +1 -1
  249. package/build/progressBar/ProgressBar.js +2 -1
  250. package/build/progressBar/ProgressBar.js.map +1 -1
  251. package/build/progressBar/ProgressBar.mjs +2 -1
  252. package/build/progressBar/ProgressBar.mjs.map +1 -1
  253. package/build/promoCard/PromoCard.js +2 -1
  254. package/build/promoCard/PromoCard.js.map +1 -1
  255. package/build/promoCard/PromoCard.mjs +2 -1
  256. package/build/promoCard/PromoCard.mjs.map +1 -1
  257. package/build/promoCard/PromoCardIndicator.js +2 -1
  258. package/build/promoCard/PromoCardIndicator.js.map +1 -1
  259. package/build/promoCard/PromoCardIndicator.mjs +2 -1
  260. package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
  261. package/build/prompt/ActionPrompt/ActionPrompt.js +43 -10
  262. package/build/prompt/ActionPrompt/ActionPrompt.js.map +1 -1
  263. package/build/prompt/ActionPrompt/ActionPrompt.mjs +42 -9
  264. package/build/prompt/ActionPrompt/ActionPrompt.mjs.map +1 -1
  265. package/build/prompt/InfoPrompt/InfoPrompt.js +2 -1
  266. package/build/prompt/InfoPrompt/InfoPrompt.js.map +1 -1
  267. package/build/prompt/InfoPrompt/InfoPrompt.mjs +2 -1
  268. package/build/prompt/InfoPrompt/InfoPrompt.mjs.map +1 -1
  269. package/build/prompt/InlinePrompt/InlinePrompt.js +2 -1
  270. package/build/prompt/InlinePrompt/InlinePrompt.js.map +1 -1
  271. package/build/prompt/InlinePrompt/InlinePrompt.mjs +2 -1
  272. package/build/prompt/InlinePrompt/InlinePrompt.mjs.map +1 -1
  273. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js +0 -2
  274. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
  275. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs +0 -2
  276. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
  277. package/build/provider/Provider.js +1 -1
  278. package/build/provider/Provider.mjs +1 -1
  279. package/build/radio/Radio.js +2 -1
  280. package/build/radio/Radio.js.map +1 -1
  281. package/build/radio/Radio.mjs +2 -1
  282. package/build/radio/Radio.mjs.map +1 -1
  283. package/build/segmentedControl/SegmentedControl.js +2 -1
  284. package/build/segmentedControl/SegmentedControl.js.map +1 -1
  285. package/build/segmentedControl/SegmentedControl.mjs +2 -1
  286. package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
  287. package/build/select/Select.js +3 -2
  288. package/build/select/Select.js.map +1 -1
  289. package/build/select/Select.mjs +3 -2
  290. package/build/select/Select.mjs.map +1 -1
  291. package/build/select/option/Option.js +2 -1
  292. package/build/select/option/Option.js.map +1 -1
  293. package/build/select/option/Option.mjs +2 -1
  294. package/build/select/option/Option.mjs.map +1 -1
  295. package/build/statusIcon/StatusIcon.js +3 -2
  296. package/build/statusIcon/StatusIcon.js.map +1 -1
  297. package/build/statusIcon/StatusIcon.mjs +3 -2
  298. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  299. package/build/stepper/Stepper.js +2 -1
  300. package/build/stepper/Stepper.js.map +1 -1
  301. package/build/stepper/Stepper.mjs +2 -1
  302. package/build/stepper/Stepper.mjs.map +1 -1
  303. package/build/sticky/Sticky.js +2 -1
  304. package/build/sticky/Sticky.js.map +1 -1
  305. package/build/sticky/Sticky.mjs +2 -1
  306. package/build/sticky/Sticky.mjs.map +1 -1
  307. package/build/styles/accordion/Accordion.css +1 -1
  308. package/build/styles/card/Card.css +2 -2
  309. package/build/styles/carousel/Carousel.css +5 -5
  310. package/build/styles/common/Option/Option.css +1 -1
  311. package/build/styles/common/baseCard/BaseCard.css +1 -1
  312. package/build/styles/criticalBanner/CriticalCommsBanner.css +1 -1
  313. package/build/styles/css/accordion.css +4 -4
  314. package/build/styles/css/button-groups.css +6 -6
  315. package/build/styles/css/buttons.css +1 -1
  316. package/build/styles/css/circles.css +1 -1
  317. package/build/styles/css/column-layout.css +4 -4
  318. package/build/styles/css/decision.css +4 -4
  319. package/build/styles/css/dropdowns.css +10 -10
  320. package/build/styles/css/droppable.css +8 -8
  321. package/build/styles/css/flex.css +14 -14
  322. package/build/styles/css/footer.css +3 -3
  323. package/build/styles/css/grid.css +19 -19
  324. package/build/styles/css/input-groups.css +12 -12
  325. package/build/styles/css/list-group.css +8 -8
  326. package/build/styles/css/modals.css +3 -3
  327. package/build/styles/css/navbar.css +62 -62
  328. package/build/styles/css/navs.css +2 -2
  329. package/build/styles/css/neptune.css +280 -269
  330. package/build/styles/css/panels.css +9 -9
  331. package/build/styles/css/popovers.css +13 -13
  332. package/build/styles/css/select.css +1 -1
  333. package/build/styles/css/sequences.css +6 -6
  334. package/build/styles/css/table.css +6 -6
  335. package/build/styles/css/utilities.css +4 -4
  336. package/build/styles/css/wells.css +4 -4
  337. package/build/styles/dateInput/DateInput.css +1 -1
  338. package/build/styles/definitionList/DefinitionList.css +2 -2
  339. package/build/styles/drawer/Drawer.css +1 -1
  340. package/build/styles/inputs/Input.css +3 -3
  341. package/build/styles/inputs/SelectInput/Options/SelectInputOptions.css +2 -2
  342. package/build/styles/inputs/SelectInput/SelectInput.css +2 -2
  343. package/build/styles/inputs/TextArea.css +3 -3
  344. package/build/styles/less/legacy-variables.less +34 -47
  345. package/build/styles/less/neptune-tokens.less +5 -4
  346. package/build/styles/logo/Logo.css +2 -2
  347. package/build/styles/main.css +351 -418
  348. package/build/styles/modal/Modal.css +5 -5
  349. package/build/styles/popover/Popover.css +3 -3
  350. package/build/styles/promoCard/PromoCard.css +1 -1
  351. package/build/styles/prompt/ActionPrompt/ActionPrompt.css +1 -1
  352. package/build/styles/prompt/PrimitivePrompt/PrimitivePrompt.css +1 -1
  353. package/build/styles/props/custom-media.css +23 -11
  354. package/build/styles/props/neptune-tokens.css +3 -2
  355. package/build/styles/select/Select.css +2 -1
  356. package/build/styles/snackbar/Snackbar.css +2 -2
  357. package/build/styles/stepper/Stepper.css +2 -2
  358. package/build/styles/styles/less/accordion.css +4 -4
  359. package/build/styles/styles/less/button-groups.css +6 -6
  360. package/build/styles/styles/less/buttons.css +1 -1
  361. package/build/styles/styles/less/circles.css +1 -1
  362. package/build/styles/styles/less/column-layout.css +4 -4
  363. package/build/styles/styles/less/decision.css +4 -4
  364. package/build/styles/styles/less/dropdowns.css +10 -10
  365. package/build/styles/styles/less/droppable.css +8 -8
  366. package/build/styles/styles/less/flex.css +14 -14
  367. package/build/styles/styles/less/footer.css +3 -3
  368. package/build/styles/styles/less/forms/bootstrap-forms.css +9 -9
  369. package/build/styles/styles/less/grid.css +19 -19
  370. package/build/styles/styles/less/input-groups.css +12 -12
  371. package/build/styles/styles/less/list-group.css +8 -8
  372. package/build/styles/styles/less/modals.css +3 -3
  373. package/build/styles/styles/less/navbar.css +62 -62
  374. package/build/styles/styles/less/navs.css +2 -2
  375. package/build/styles/styles/less/neptune.css +280 -269
  376. package/build/styles/styles/less/panels.css +9 -9
  377. package/build/styles/styles/less/popovers.css +13 -13
  378. package/build/styles/styles/less/select.css +1 -1
  379. package/build/styles/styles/less/sequences.css +6 -6
  380. package/build/styles/styles/less/table.css +6 -6
  381. package/build/styles/styles/less/utilities.css +4 -4
  382. package/build/styles/styles/less/wells.css +4 -4
  383. package/build/styles/styles/props/custom-media.css +1 -11
  384. package/build/styles/table/Table.css +1 -1
  385. package/build/styles/tabs/Tabs.css +2 -2
  386. package/build/styles/typeahead/Typeahead.css +1 -1
  387. package/build/summary/Summary.js +2 -1
  388. package/build/summary/Summary.js.map +1 -1
  389. package/build/summary/Summary.mjs +2 -1
  390. package/build/summary/Summary.mjs.map +1 -1
  391. package/build/table/Table.js +2 -1
  392. package/build/table/Table.js.map +1 -1
  393. package/build/table/Table.mjs +2 -1
  394. package/build/table/Table.mjs.map +1 -1
  395. package/build/table/TableRow.js +2 -1
  396. package/build/table/TableRow.js.map +1 -1
  397. package/build/table/TableRow.mjs +2 -1
  398. package/build/table/TableRow.mjs.map +1 -1
  399. package/build/table/TableStatusText.js +2 -1
  400. package/build/table/TableStatusText.js.map +1 -1
  401. package/build/table/TableStatusText.mjs +2 -1
  402. package/build/table/TableStatusText.mjs.map +1 -1
  403. package/build/tabs/Tabs.js +2 -1
  404. package/build/tabs/Tabs.js.map +1 -1
  405. package/build/tabs/Tabs.mjs +2 -1
  406. package/build/tabs/Tabs.mjs.map +1 -1
  407. package/build/tile/Tile.js +2 -1
  408. package/build/tile/Tile.js.map +1 -1
  409. package/build/tile/Tile.mjs +2 -1
  410. package/build/tile/Tile.mjs.map +1 -1
  411. package/build/title/Title.js +2 -1
  412. package/build/title/Title.js.map +1 -1
  413. package/build/title/Title.mjs +2 -1
  414. package/build/title/Title.mjs.map +1 -1
  415. package/build/tooltip/Tooltip.js +31 -51
  416. package/build/tooltip/Tooltip.js.map +1 -1
  417. package/build/tooltip/Tooltip.mjs +32 -52
  418. package/build/tooltip/Tooltip.mjs.map +1 -1
  419. package/build/typeahead/Typeahead.js +6 -6
  420. package/build/typeahead/Typeahead.mjs +6 -6
  421. package/build/types/badge/BadgeAssets.d.ts.map +1 -1
  422. package/build/types/circularButton/CircularButton.d.ts.map +1 -1
  423. package/build/types/common/bottomSheet/BottomSheet.d.ts.map +1 -1
  424. package/build/types/common/hooks/useScreenSize.d.ts +1 -1
  425. package/build/types/common/hooks/useScreenSize.d.ts.map +1 -1
  426. package/build/types/common/index.d.ts +1 -1
  427. package/build/types/common/index.d.ts.map +1 -1
  428. package/build/types/common/locale/index.d.ts +1 -1
  429. package/build/types/common/locale/index.d.ts.map +1 -1
  430. package/build/types/common/panel/Panel.d.ts.map +1 -1
  431. package/build/types/dateLookup/DateLookup.d.ts.map +1 -1
  432. package/build/types/decision/Decision.d.ts.map +1 -1
  433. package/build/types/expressiveMoneyInput/currencySelector/CurrencySelector.d.ts.map +1 -1
  434. package/build/types/flowNavigation/FlowNavigation.d.ts.map +1 -1
  435. package/build/types/index.d.ts +4 -3
  436. package/build/types/index.d.ts.map +1 -1
  437. package/build/types/logo/Logo.d.ts +1 -1
  438. package/build/types/moneyInput/MoneyInput.d.ts +6 -0
  439. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  440. package/build/types/moneyInput/currencyFormatting.d.ts +4 -3
  441. package/build/types/moneyInput/currencyFormatting.d.ts.map +1 -1
  442. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts +11 -2
  443. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts.map +1 -1
  444. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts +3 -8
  445. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
  446. package/build/types/prompt/index.d.ts +0 -2
  447. package/build/types/prompt/index.d.ts.map +1 -1
  448. package/build/types/statusIcon/StatusIcon.d.ts.map +1 -1
  449. package/build/types/test-utils/index.d.ts +0 -4
  450. package/build/types/test-utils/index.d.ts.map +1 -1
  451. package/build/types/tooltip/Tooltip.d.ts.map +1 -1
  452. package/build/upload/Upload.js +2 -1
  453. package/build/upload/Upload.js.map +1 -1
  454. package/build/upload/Upload.mjs +2 -1
  455. package/build/upload/Upload.mjs.map +1 -1
  456. package/build/upload/steps/completeStep/completeStep.js +2 -1
  457. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  458. package/build/upload/steps/completeStep/completeStep.mjs +2 -1
  459. package/build/upload/steps/completeStep/completeStep.mjs.map +1 -1
  460. package/build/upload/steps/processingStep/processingStep.js +2 -1
  461. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  462. package/build/upload/steps/processingStep/processingStep.mjs +2 -1
  463. package/build/upload/steps/processingStep/processingStep.mjs.map +1 -1
  464. package/build/upload/steps/uploadImageStep/uploadImageStep.js +2 -1
  465. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  466. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +2 -1
  467. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  468. package/build/uploadInput/UploadInput.js +2 -1
  469. package/build/uploadInput/UploadInput.js.map +1 -1
  470. package/build/uploadInput/UploadInput.mjs +2 -1
  471. package/build/uploadInput/UploadInput.mjs.map +1 -1
  472. package/build/uploadInput/uploadButton/UploadButton.js +2 -1
  473. package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
  474. package/build/uploadInput/uploadButton/UploadButton.mjs +2 -1
  475. package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
  476. package/build/uploadInput/uploadButton/defaults.js +2 -1
  477. package/build/uploadInput/uploadButton/defaults.js.map +1 -1
  478. package/build/uploadInput/uploadButton/defaults.mjs +2 -1
  479. package/build/uploadInput/uploadButton/defaults.mjs.map +1 -1
  480. package/build/uploadInput/uploadItem/UploadItem.js +2 -1
  481. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  482. package/build/uploadInput/uploadItem/UploadItem.mjs +2 -1
  483. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  484. package/build/withDisplayFormat/WithDisplayFormat.js +2 -1
  485. package/build/withDisplayFormat/WithDisplayFormat.js.map +1 -1
  486. package/build/withDisplayFormat/WithDisplayFormat.mjs +2 -1
  487. package/build/withDisplayFormat/WithDisplayFormat.mjs.map +1 -1
  488. package/package.json +20 -22
  489. package/src/accordion/Accordion.css +1 -1
  490. package/src/avatarView/AvatarView.story.tsx +1 -1
  491. package/src/avatarView/AvatarView.test.story.tsx +108 -1
  492. package/src/badge/BadgeAssets.tsx +2 -0
  493. package/src/card/Card.css +2 -2
  494. package/src/carousel/Carousel.css +5 -5
  495. package/src/circularButton/CircularButton.tsx +3 -2
  496. package/src/common/Option/Option.css +1 -1
  497. package/src/common/baseCard/BaseCard.css +1 -1
  498. package/src/common/bottomSheet/BottomSheet.tsx +2 -2
  499. package/src/common/circle/Circle.tsx +2 -2
  500. package/src/common/hooks/useLayout/useLayout.ts +1 -1
  501. package/src/common/hooks/useScreenSize.ts +1 -1
  502. package/src/common/index.ts +1 -1
  503. package/src/common/locale/index.test.ts +13 -4
  504. package/src/common/locale/index.ts +9 -3
  505. package/src/common/panel/Panel.tsx +56 -49
  506. package/src/common/responsivePanel/ResponsivePanel.test.js +3 -2
  507. package/src/criticalBanner/CriticalCommsBanner.css +1 -1
  508. package/src/dateInput/DateInput.css +1 -1
  509. package/src/dateLookup/DateLookup.tsx +1 -1
  510. package/src/decision/Decision.test.tsx +2 -1
  511. package/src/decision/Decision.tsx +2 -1
  512. package/src/definitionList/DefinitionList.css +2 -2
  513. package/src/definitionList/DefinitionList.less +2 -2
  514. package/src/drawer/Drawer.css +1 -1
  515. package/src/expressiveMoneyInput/ExpressiveMoneyInput.story.tsx +18 -0
  516. package/src/expressiveMoneyInput/currencySelector/CurrencySelector.test.tsx +119 -1
  517. package/src/expressiveMoneyInput/currencySelector/CurrencySelector.tsx +4 -3
  518. package/src/flowNavigation/FlowNavigation.test.js +1 -1
  519. package/src/flowNavigation/FlowNavigation.tsx +2 -1
  520. package/src/i18n/en.json +0 -2
  521. package/src/index.ts +3 -3
  522. package/src/inputs/Input.css +3 -3
  523. package/src/inputs/SelectInput/Options/SelectInputOptions.css +2 -2
  524. package/src/inputs/SelectInput/SelectInput.css +2 -2
  525. package/src/inputs/SelectInput/SelectInput.tsx +1 -1
  526. package/src/inputs/TextArea.css +3 -3
  527. package/src/logo/Logo.css +2 -2
  528. package/src/logo/Logo.story.tsx +3 -3
  529. package/src/logo/Logo.tsx +1 -1
  530. package/src/main.css +351 -418
  531. package/src/main.less +1 -3
  532. package/src/modal/Modal.css +5 -5
  533. package/src/moneyInput/MoneyInput.story.tsx +10 -1
  534. package/src/moneyInput/MoneyInput.test.story.tsx +141 -1
  535. package/src/moneyInput/MoneyInput.test.tsx +45 -0
  536. package/src/moneyInput/MoneyInput.tsx +27 -3
  537. package/src/moneyInput/currencyFormatting.ts +11 -5
  538. package/src/popover/Popover.css +3 -3
  539. package/src/popover/Popover.test.tsx +2 -1
  540. package/src/promoCard/PromoCard.css +1 -1
  541. package/src/prompt/ActionPrompt/ActionPrompt.css +1 -1
  542. package/src/prompt/ActionPrompt/ActionPrompt.test.tsx +3 -3
  543. package/src/prompt/ActionPrompt/ActionPrompt.tsx +64 -10
  544. package/src/prompt/PrimitivePrompt/PrimitivePrompt.css +1 -1
  545. package/src/prompt/PrimitivePrompt/PrimitivePrompt.tsx +2 -9
  546. package/src/prompt/index.ts +0 -4
  547. package/src/section/Section.story.tsx +2 -8
  548. package/src/select/Select.css +2 -1
  549. package/src/select/Select.less +6 -5
  550. package/src/select/Select.test.story.tsx +59 -0
  551. package/src/select/Select.test.tsx +1 -1
  552. package/src/select/Select.tsx +1 -1
  553. package/src/sentimentSurface/SentimentSurface.story.tsx +17 -43
  554. package/src/snackbar/Snackbar.css +2 -2
  555. package/src/statusIcon/StatusIcon.test.tsx +0 -2
  556. package/src/statusIcon/StatusIcon.tsx +3 -2
  557. package/src/stepper/Stepper.css +2 -2
  558. package/src/styles/less/accordion.css +4 -4
  559. package/src/styles/less/button-groups.css +6 -6
  560. package/src/styles/less/buttons.css +1 -1
  561. package/src/styles/less/circles.css +1 -1
  562. package/src/styles/less/column-layout.css +4 -4
  563. package/src/styles/less/decision.css +4 -4
  564. package/src/styles/less/dropdowns.css +10 -10
  565. package/src/styles/less/droppable.css +8 -8
  566. package/src/styles/less/flex.css +14 -14
  567. package/src/styles/less/footer.css +3 -3
  568. package/src/styles/less/forms/bootstrap-forms.css +9 -9
  569. package/src/styles/less/forms/bootstrap-forms.less +1 -1
  570. package/src/styles/less/grid.css +19 -19
  571. package/src/styles/less/input-groups.css +12 -12
  572. package/src/styles/less/list-group.css +8 -8
  573. package/src/styles/less/modals.css +3 -3
  574. package/src/styles/less/navbar.css +62 -62
  575. package/src/styles/less/navbar.less +2 -2
  576. package/src/styles/less/navs.css +2 -2
  577. package/src/styles/less/neptune.bundle.less +1 -0
  578. package/src/styles/less/neptune.css +280 -269
  579. package/src/styles/less/panels.css +9 -9
  580. package/src/styles/less/popovers.css +13 -13
  581. package/src/styles/less/select.css +1 -1
  582. package/src/styles/less/sequences.css +6 -6
  583. package/src/styles/less/table.css +6 -6
  584. package/src/styles/less/table.less +1 -1
  585. package/src/styles/less/utilities.css +4 -4
  586. package/src/styles/less/wells.css +4 -4
  587. package/src/styles/props/custom-media.css +1 -11
  588. package/src/styles/variables/legacy-variables.less +4 -47
  589. package/src/table/Table.css +1 -1
  590. package/src/tabs/Tabs.css +2 -2
  591. package/src/tooltip/Tooltip.tsx +26 -45
  592. package/src/typeahead/Typeahead.css +1 -1
  593. package/build/common/propsValues/breakpoint.js +0 -12
  594. package/build/common/propsValues/breakpoint.js.map +0 -1
  595. package/build/common/propsValues/breakpoint.mjs +0 -12
  596. package/build/common/propsValues/breakpoint.mjs.map +0 -1
  597. package/build/prompt/CriticalBanner/CriticalBanner.js +0 -143
  598. package/build/prompt/CriticalBanner/CriticalBanner.js.map +0 -1
  599. package/build/prompt/CriticalBanner/CriticalBanner.mjs +0 -141
  600. package/build/prompt/CriticalBanner/CriticalBanner.mjs.map +0 -1
  601. package/build/prompt/CriticalBanner/helpers.js +0 -29
  602. package/build/prompt/CriticalBanner/helpers.js.map +0 -1
  603. package/build/prompt/CriticalBanner/helpers.mjs +0 -26
  604. package/build/prompt/CriticalBanner/helpers.mjs.map +0 -1
  605. package/build/prompt/common/Expander/Expander.js +0 -47
  606. package/build/prompt/common/Expander/Expander.js.map +0 -1
  607. package/build/prompt/common/Expander/Expander.messages.js +0 -17
  608. package/build/prompt/common/Expander/Expander.messages.js.map +0 -1
  609. package/build/prompt/common/Expander/Expander.messages.mjs +0 -13
  610. package/build/prompt/common/Expander/Expander.messages.mjs.map +0 -1
  611. package/build/prompt/common/Expander/Expander.mjs +0 -44
  612. package/build/prompt/common/Expander/Expander.mjs.map +0 -1
  613. package/build/prompt/helpers/promptMedia.js +0 -52
  614. package/build/prompt/helpers/promptMedia.js.map +0 -1
  615. package/build/prompt/helpers/promptMedia.mjs +0 -50
  616. package/build/prompt/helpers/promptMedia.mjs.map +0 -1
  617. package/build/styles/prompt/CriticalBanner/CriticalBanner.css +0 -59
  618. package/build/styles/prompt/common/Expander/Expander.css +0 -8
  619. package/build/types/common/propsValues/breakpoint.d.ts +0 -9
  620. package/build/types/common/propsValues/breakpoint.d.ts.map +0 -1
  621. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts +0 -33
  622. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts.map +0 -1
  623. package/build/types/prompt/CriticalBanner/helpers.d.ts +0 -18
  624. package/build/types/prompt/CriticalBanner/helpers.d.ts.map +0 -1
  625. package/build/types/prompt/CriticalBanner/index.d.ts +0 -3
  626. package/build/types/prompt/CriticalBanner/index.d.ts.map +0 -1
  627. package/build/types/prompt/common/Expander/Expander.d.ts +0 -20
  628. package/build/types/prompt/common/Expander/Expander.d.ts.map +0 -1
  629. package/build/types/prompt/common/Expander/Expander.messages.d.ts +0 -14
  630. package/build/types/prompt/common/Expander/Expander.messages.d.ts.map +0 -1
  631. package/build/types/prompt/helpers/promptMedia.d.ts +0 -22
  632. package/build/types/prompt/helpers/promptMedia.d.ts.map +0 -1
  633. package/src/common/propsValues/breakpoint.ts +0 -8
  634. package/src/prompt/CriticalBanner/CriticalBanner.accessibility.docs.mdx +0 -113
  635. package/src/prompt/CriticalBanner/CriticalBanner.css +0 -59
  636. package/src/prompt/CriticalBanner/CriticalBanner.less +0 -64
  637. package/src/prompt/CriticalBanner/CriticalBanner.story.tsx +0 -632
  638. package/src/prompt/CriticalBanner/CriticalBanner.test.story.tsx +0 -285
  639. package/src/prompt/CriticalBanner/CriticalBanner.tsx +0 -182
  640. package/src/prompt/CriticalBanner/helpers.ts +0 -39
  641. package/src/prompt/CriticalBanner/index.ts +0 -2
  642. package/src/prompt/common/Expander/Expander.css +0 -8
  643. package/src/prompt/common/Expander/Expander.less +0 -9
  644. package/src/prompt/common/Expander/Expander.messages.ts +0 -14
  645. package/src/prompt/common/Expander/Expander.test.tsx +0 -167
  646. package/src/prompt/common/Expander/Expander.tsx +0 -83
  647. package/src/prompt/helpers/promptMedia.tsx +0 -79
package/src/main.less CHANGED
@@ -66,9 +66,6 @@
66
66
  @import "./prompt/PrimitivePrompt/PrimitivePrompt.less";
67
67
  @import "./prompt/InlinePrompt/InlinePrompt.less";
68
68
  @import "./prompt/InfoPrompt/InfoPrompt.less";
69
- @import "./prompt/ActionPrompt/ActionPrompt.less";
70
- @import "./prompt/CriticalBanner/CriticalBanner.less";
71
- @import "./prompt/common/Expander/Expander.less";
72
69
  @import "./radioGroup/RadioGroup.less";
73
70
  @import "./section/Section.less";
74
71
  @import "./slidingPanel/SlidingPanel.less";
@@ -93,6 +90,7 @@
93
90
  @import "./progress/Progress.less";
94
91
  @import "./progressBar/ProgressBar.less";
95
92
  @import "./legacylistItem/LegacyListItem.less";
93
+ @import "./prompt/ActionPrompt/ActionPrompt.less";
96
94
 
97
95
  // List all less files in src in alphabetical order: find -s src -type f -name '*.less' ! -name 'main.less'
98
96
  // Make sure you are not referencing main.less itself in this file!
@@ -41,7 +41,7 @@
41
41
  padding-bottom: 12px;
42
42
  padding-bottom: var(--size-12);
43
43
  }
44
- @media (min-width: 576px) {
44
+ @media (min-width: 600px) {
45
45
  .tw-modal .tw-modal-content .tw-modal-header,
46
46
  .tw-modal .tw-modal-content .tw-modal-footer {
47
47
  padding: 24px;
@@ -52,12 +52,12 @@
52
52
  padding: 0 var(--size-24);
53
53
  }
54
54
  }
55
- @media (min-width: 480px) {
55
+ @media (min-width: 320px) {
56
56
  .tw-modal-dialog.tw-modal-sm {
57
57
  width: 300px;
58
58
  }
59
59
  }
60
- @media (min-width: 576px) {
60
+ @media (min-width: 600px) {
61
61
  .tw-modal {
62
62
  padding: 40px;
63
63
  padding: var(--size-40);
@@ -70,12 +70,12 @@
70
70
  width: 540px;
71
71
  }
72
72
  }
73
- @media (min-width: 768px) {
73
+ @media (min-width: 840px) {
74
74
  .tw-modal-dialog.tw-modal-lg {
75
75
  width: 720px;
76
76
  }
77
77
  }
78
- @media (min-width: 992px) {
78
+ @media (min-width: 1160px) {
79
79
  .tw-modal-dialog.tw-modal-xl {
80
80
  width: 1000px;
81
81
  }
@@ -1,5 +1,5 @@
1
1
  import { Meta, StoryObj } from '@storybook/react-webpack5';
2
- import { within, userEvent } from 'storybook/test';
2
+ import { within, userEvent, expect } from 'storybook/test';
3
3
  import { Lock } from '@transferwise/icons';
4
4
  import { useState } from 'react';
5
5
 
@@ -155,6 +155,15 @@ export const BalanceCurrencies: Story = {
155
155
  },
156
156
  };
157
157
 
158
+ export const WithDecimals: Story = {
159
+ args: {
160
+ currencies: [],
161
+ selectedCurrency: exampleCurrency.eur,
162
+ decimals: 4,
163
+ amount: 1234.1412,
164
+ },
165
+ };
166
+
158
167
  export const OpenedInput: Story = {
159
168
  ...MultipleCurrencies,
160
169
  play: async ({ canvasElement }) => {
@@ -1,5 +1,5 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
- import { within, fireEvent } from 'storybook/test';
2
+ import { within, userEvent, fireEvent, expect } from 'storybook/test';
3
3
  import { allModes } from '../../.storybook/modes';
4
4
  import { lorem500 } from '../test-utils';
5
5
  import { Field } from '../field/Field';
@@ -102,3 +102,143 @@ export const SmoothScrollReset: Story = {
102
102
  },
103
103
  },
104
104
  };
105
+
106
+ export const WithDecimals: Story = {
107
+ args: {
108
+ currencies: [],
109
+ decimals: 4,
110
+ amount: 1234.5678,
111
+ },
112
+ play: async ({ canvas }) => {
113
+ const input = canvas.getByRole('textbox');
114
+ await expect(input).toHaveValue('1,234.5678');
115
+ await userEvent.clear(input);
116
+ await userEvent.type(input, '99.123456789');
117
+ await userEvent.tab();
118
+ await expect(input).toHaveValue('99.1235');
119
+ },
120
+ };
121
+
122
+ const eur = {
123
+ value: 'EUR',
124
+ label: 'EUR',
125
+ note: 'Euro',
126
+ currency: 'eur',
127
+ } as const;
128
+
129
+ const bhd = {
130
+ value: 'BHD',
131
+ label: 'BHD',
132
+ note: 'Bahraini dinar',
133
+ currency: 'bhd',
134
+ } as const;
135
+
136
+ const jpy = {
137
+ value: 'JPY',
138
+ label: 'JPY',
139
+ note: 'Japanese yen',
140
+ currency: 'jpy',
141
+ } as const;
142
+
143
+ const sharedProps = {
144
+ currencies: [],
145
+ onAmountChange: () => {},
146
+ onCurrencyChange: () => {},
147
+ } as const;
148
+
149
+ function Row({
150
+ label,
151
+ amount,
152
+ currency,
153
+ decimals,
154
+ }: {
155
+ label: string;
156
+ amount: number;
157
+ currency: { value: string; label: string; note: string; currency: string };
158
+ decimals: number;
159
+ }) {
160
+ return (
161
+ <div
162
+ style={{
163
+ display: 'grid',
164
+ gridTemplateColumns: '240px 1fr 1fr',
165
+ gap: 12,
166
+ alignItems: 'center',
167
+ }}
168
+ >
169
+ <Body as="span" style={{ fontSize: 13, color: '#6b7280' }}>
170
+ {label}
171
+ </Body>
172
+ <Field label={`No decimals prop (${currency.value})`}>
173
+ <MoneyInput {...sharedProps} selectedCurrency={currency} amount={amount} />
174
+ </Field>
175
+ <Field label={`decimals={${decimals}} (${currency.value})`}>
176
+ <MoneyInput
177
+ {...sharedProps}
178
+ selectedCurrency={currency}
179
+ amount={amount}
180
+ decimals={decimals}
181
+ />
182
+ </Field>
183
+ </div>
184
+ );
185
+ }
186
+
187
+ /**
188
+ * Side-by-side comparison of formatAmount (no decimals prop) vs formatNumber (with decimals prop)
189
+ * when decimals matches the currency default. Differences indicate a formatting parity issue.
190
+ *
191
+ * Problem 1: Trailing zero stripping — formatAmount strips ".00" for whole numbers,
192
+ * formatNumber always pads to the requested precision.
193
+ *
194
+ * Problem 2: BHD decimal count — formatAmount renders 2 fractional digits for BHD,
195
+ * but the currencyDecimals map says BHD has 3. formatNumber with decimals=3 shows 3.
196
+ */
197
+ export const DecimalsFormatParity: Story = {
198
+ render: () => (
199
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
200
+ <Body as="p" style={{ fontWeight: 600, marginTop: 8 }}>
201
+ EUR — whole numbers (trailing zero stripping)
202
+ </Body>
203
+ <Row label="amount=0" amount={0} currency={eur} decimals={2} />
204
+ <Row label="amount=1" amount={1} currency={eur} decimals={2} />
205
+ <Row label="amount=42" amount={42} currency={eur} decimals={2} />
206
+ <Row label="amount=100" amount={100} currency={eur} decimals={2} />
207
+ <Row label="amount=1000" amount={1000} currency={eur} decimals={2} />
208
+ <Row label="amount=9999999" amount={9999999} currency={eur} decimals={2} />
209
+
210
+ <Body as="p" style={{ fontWeight: 600, marginTop: 8 }}>
211
+ EUR — fractional amounts (should match)
212
+ </Body>
213
+ <Row label="amount=0.01" amount={0.01} currency={eur} decimals={2} />
214
+ <Row label="amount=0.1" amount={0.1} currency={eur} decimals={2} />
215
+ <Row label="amount=99.9" amount={99.9} currency={eur} decimals={2} />
216
+ <Row label="amount=1234567.89" amount={1234567.89} currency={eur} decimals={2} />
217
+
218
+ <Body as="p" style={{ fontWeight: 600, marginTop: 8 }}>
219
+ BHD — all amounts (formatAmount uses 2 digits, formatNumber uses 3)
220
+ </Body>
221
+ <Row label="amount=0" amount={0} currency={bhd} decimals={3} />
222
+ <Row label="amount=0.001" amount={0.001} currency={bhd} decimals={3} />
223
+ <Row label="amount=0.01" amount={0.01} currency={bhd} decimals={3} />
224
+ <Row label="amount=0.1" amount={0.1} currency={bhd} decimals={3} />
225
+ <Row label="amount=42" amount={42} currency={bhd} decimals={3} />
226
+ <Row label="amount=99.9" amount={99.9} currency={bhd} decimals={3} />
227
+ <Row label="amount=999.99" amount={999.99} currency={bhd} decimals={3} />
228
+ <Row label="amount=1234567.89" amount={1234567.89} currency={bhd} decimals={3} />
229
+
230
+ <Body as="p" style={{ fontWeight: 600, marginTop: 8 }}>
231
+ JPY — zero-decimal currency (should always match)
232
+ </Body>
233
+ <Row label="amount=0" amount={0} currency={jpy} decimals={0} />
234
+ <Row label="amount=1" amount={1} currency={jpy} decimals={0} />
235
+ <Row label="amount=1000" amount={1000} currency={jpy} decimals={0} />
236
+ <Row label="amount=1234567" amount={1234567} currency={jpy} decimals={0} />
237
+ </div>
238
+ ),
239
+ parameters: {
240
+ chromatic: {
241
+ disableSnapshot: true,
242
+ },
243
+ },
244
+ };
@@ -253,6 +253,45 @@ describe('Money Input', () => {
253
253
  await userEvent.tab();
254
254
  expect(input).toHaveValue('1,234,567.65');
255
255
  });
256
+
257
+ it('uses custom decimals when specified', async () => {
258
+ customRender({ decimals: 4 });
259
+ const input = getInput();
260
+ await userEvent.clear(input);
261
+ await userEvent.type(input, '1234.56789');
262
+ await userEvent.tab();
263
+ expect(input).toHaveValue('1,234.5679');
264
+ });
265
+
266
+ it('uses custom decimals of 0', async () => {
267
+ customRender({ decimals: 0 });
268
+ const input = getInput();
269
+ await userEvent.clear(input);
270
+ await userEvent.type(input, '1234.56');
271
+ await userEvent.tab();
272
+ expect(input).toHaveValue('1,235');
273
+ });
274
+
275
+ it('ignores custom decimals override for zero-decimal currencies like JPY', async () => {
276
+ const jpyCurrency: CurrencyOptionItem = {
277
+ value: 'JPY',
278
+ label: 'JPY',
279
+ note: 'Japanese yen',
280
+ currency: 'jpy',
281
+ };
282
+ customRender({
283
+ decimals: 4,
284
+ selectedCurrency: jpyCurrency,
285
+ currencies: [jpyCurrency],
286
+ amount: 1234,
287
+ });
288
+ const input = getInput();
289
+ expect(input).toHaveValue('1,234');
290
+ await userEvent.clear(input);
291
+ await userEvent.type(input, '5678.9999');
292
+ await userEvent.tab();
293
+ expect(input).toHaveValue('5,679');
294
+ });
256
295
  });
257
296
 
258
297
  it('calls onAmountChange with parsed and formatted value', async () => {
@@ -263,6 +302,12 @@ describe('Money Input', () => {
263
302
  expect(initialProps.onAmountChange).toHaveBeenCalledWith(1000.65);
264
303
  });
265
304
 
305
+ it('calls onAmountChange with value rounded to custom decimals', async () => {
306
+ customRender({ decimals: 4, amount: null });
307
+ await userEvent.type(getInput(), '12.34567');
308
+ expect(initialProps.onAmountChange).toHaveBeenCalledWith(12.3457);
309
+ });
310
+
266
311
  it('calls onAmountChange when input value is empty', async () => {
267
312
  customRender();
268
313
  await userEvent.clear(getInput());
@@ -24,7 +24,7 @@ import {
24
24
  import Title from '../title';
25
25
 
26
26
  import messages from './MoneyInput.messages';
27
- import { formatAmount, parseAmount } from './currencyFormatting';
27
+ import { formatAmount, formatNumber, getCurrencyDecimals, parseAmount } from './currencyFormatting';
28
28
  import withId from '../withId';
29
29
 
30
30
  export interface CurrencyOptionItem {
@@ -48,24 +48,34 @@ const formatAmountIfSet = ({
48
48
  amount,
49
49
  currency,
50
50
  locale,
51
+ decimals,
51
52
  }: {
52
53
  amount: number | null | undefined;
53
54
  currency: string;
54
55
  locale: string;
56
+ decimals?: number;
55
57
  }) => {
56
- return typeof amount === 'number' ? formatAmount(amount, currency, locale) : '';
58
+ if (typeof amount !== 'number') {
59
+ return '';
60
+ }
61
+ if (decimals != null && getCurrencyDecimals(currency) !== 0) {
62
+ return formatNumber(amount, locale, decimals);
63
+ }
64
+ return formatAmount(amount, currency, locale);
57
65
  };
58
66
 
59
67
  const parseNumber = ({
60
68
  amount,
61
69
  currency,
62
70
  locale,
71
+ decimals,
63
72
  }: {
64
73
  amount: string;
65
74
  currency: string;
66
75
  locale: string;
76
+ decimals?: number;
67
77
  }) => {
68
- return parseAmount(amount, currency, locale);
78
+ return parseAmount(amount, currency, locale, decimals);
69
79
  };
70
80
 
71
81
  const allowedInputKeys = new Set([
@@ -102,6 +112,12 @@ export interface MoneyInputProps extends WrappedComponentProps {
102
112
  onCustomAction?: () => void;
103
113
  classNames?: Record<string, string>;
104
114
  selectProps?: Partial<SelectInputProps<CurrencyOptionItem>>;
115
+ /**
116
+ * Specify the number of decimal places to format the amount. When not specified, the number of
117
+ * decimals is determined by the selected currency (e.g. 2 for EUR, 0 for JPY, 3 for BHD).
118
+ * This override is ignored for zero-decimal currencies (e.g. JPY, KRW, HUF), which always use 0.
119
+ */
120
+ decimals?: number;
105
121
  }
106
122
 
107
123
  export type MoneyInputPropsWithInputAttributes = MoneyInputProps &
@@ -133,6 +149,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
133
149
  amount: props.amount,
134
150
  currency: props.selectedCurrency.currency,
135
151
  locale: props.intl.locale,
152
+ decimals: props.decimals,
136
153
  }),
137
154
  locale: props.intl.locale,
138
155
  };
@@ -147,6 +164,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
147
164
  amount: nextProps.amount,
148
165
  currency: nextProps.selectedCurrency.currency,
149
166
  locale: nextProps.intl.locale,
167
+ decimals: nextProps.decimals,
150
168
  }),
151
169
  });
152
170
  }
@@ -174,6 +192,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
174
192
  amount: paste,
175
193
  currency: this.props.selectedCurrency.currency,
176
194
  locale,
195
+ decimals: this.props.decimals,
177
196
  });
178
197
 
179
198
  if (isNumberOrNull(parsed)) {
@@ -182,6 +201,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
182
201
  amount: parsed,
183
202
  currency: this.props.selectedCurrency.currency,
184
203
  locale,
204
+ decimals: this.props.decimals,
185
205
  }),
186
206
  });
187
207
  this.props.onAmountChange?.(parsed);
@@ -201,6 +221,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
201
221
  amount: value,
202
222
  currency: this.props.selectedCurrency.currency,
203
223
  locale: this.state.locale,
224
+ decimals: this.props.decimals,
204
225
  });
205
226
  if (isNumberOrNull(parsed)) {
206
227
  this.props.onAmountChange?.(parsed);
@@ -248,6 +269,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
248
269
  amount: previousState.formattedAmount,
249
270
  currency: this.props.selectedCurrency.currency,
250
271
  locale: previousState.locale,
272
+ decimals: this.props.decimals,
251
273
  });
252
274
  if (!isNumberOrNull(parsed)) {
253
275
  return {
@@ -259,6 +281,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
259
281
  amount: parsed,
260
282
  currency: this.props.selectedCurrency.currency,
261
283
  locale: previousState.locale,
284
+ decimals: this.props.decimals,
262
285
  }),
263
286
  };
264
287
  });
@@ -340,6 +363,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
340
363
  amount: this.props.placeholder,
341
364
  currency: this.props.selectedCurrency.currency,
342
365
  locale: this.state.locale,
366
+ decimals: this.props.decimals,
343
367
  })}
344
368
  autoComplete="off"
345
369
  aria-describedby={selectedCurrencyElementId}
@@ -1,8 +1,8 @@
1
- import { formatAmount } from '@transferwise/formatting';
1
+ import { formatAmount, formatNumber } from '@transferwise/formatting';
2
2
 
3
3
  import { DEFAULT_LOCALE } from '../common/locale';
4
4
 
5
- export { formatAmount };
5
+ export { formatAmount, formatNumber };
6
6
 
7
7
  // TODO: do not duplicate this between formatting and components
8
8
  const currencyDecimals: Record<string, number> = {
@@ -52,7 +52,7 @@ function getValidLocale(locale: string) {
52
52
  }
53
53
  }
54
54
 
55
- function getCurrencyDecimals(currency: string) {
55
+ export function getCurrencyDecimals(currency: string) {
56
56
  const upperCaseCurrency = currency.toUpperCase();
57
57
  return currencyDecimals[upperCaseCurrency] ?? DEFAULT_CURRENCY_DECIMALS;
58
58
  }
@@ -61,10 +61,16 @@ function getDecimalSeparator(locale: string) {
61
61
  return isNumberLocaleSupported() ? (1.1).toLocaleString(locale)[1] : '.';
62
62
  }
63
63
 
64
- export function parseAmount(number: string, currency: string, locale = DEFAULT_LOCALE) {
64
+ export function parseAmount(
65
+ number: string,
66
+ currency: string,
67
+ locale = DEFAULT_LOCALE,
68
+ decimals?: number,
69
+ ) {
65
70
  const validLocale = getValidLocale(locale);
66
71
 
67
- const precision = getCurrencyDecimals(currency);
72
+ const currencyDefault = getCurrencyDecimals(currency);
73
+ const precision = currencyDefault === 0 ? 0 : (decimals ?? currencyDefault);
68
74
  const groupSeparator = isNumberLocaleSupported() ? (10000).toLocaleString(validLocale)[2] : ',';
69
75
  const decimalSeparator = getDecimalSeparator(validLocale);
70
76
  const numberWithStandardDecimalSeparator = (number || '')
@@ -41,12 +41,12 @@
41
41
  hyphens: auto;
42
42
  hyphenate-limit-chars: 7 3;
43
43
  }
44
- @media (min-width: 768px) {
44
+ @media (min-width: 840px) {
45
45
  .np-popover__container.np-bottom-sheet .np-popover__title {
46
46
  hyphenate-limit-chars: 8 3;
47
47
  }
48
48
  }
49
- @media (min-width: 992px) {
49
+ @media (min-width: 1160px) {
50
50
  .np-popover__container.np-bottom-sheet .np-popover__title {
51
51
  hyphenate-limit-chars: 10 4 3;
52
52
  }
@@ -58,7 +58,7 @@
58
58
  -webkit-hyphenate-limit-before: 3;
59
59
  -webkit-hyphenate-limit-after: 3;
60
60
  }
61
- @media (min-width: 992px) {
61
+ @media (min-width: 1160px) {
62
62
  .np-popover__container.np-bottom-sheet .np-popover__title {
63
63
  -webkit-hyphenate-limit-before: 4;
64
64
  }
@@ -1,4 +1,5 @@
1
- import { Breakpoint, Position } from '../common';
1
+ import { Breakpoint } from '@transferwise/neptune-tokens';
2
+ import { Position } from '../common';
2
3
  import { render, screen, userEvent, mockMatchMedia } from '../test-utils';
3
4
 
4
5
  import Popover from './Popover';
@@ -176,7 +176,7 @@
176
176
  gap: var(--size-24);
177
177
  width: 100%;
178
178
  }
179
- @media (min-width: 768px) {
179
+ @media (min-width: 840px) {
180
180
  .np-CardGroup {
181
181
  flex-direction: row;
182
182
  }
@@ -12,7 +12,7 @@
12
12
  -o-object-fit: contain;
13
13
  object-fit: contain;
14
14
  }
15
- @media (max-width: 767px) {
15
+ @media (max-width: 839.98px) {
16
16
  .wds-action-prompt--with-two-actions .wds-prompt__actions-wrapper .wds-Button {
17
17
  flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
18
18
  min-width: -moz-fit-content;
@@ -1,7 +1,7 @@
1
- import { Sentiment } from '../../common';
1
+ import { userEvent } from '@testing-library/user-event';
2
+ import { Breakpoint } from '@transferwise/neptune-tokens';
2
3
  import { mockMatchMedia, render, screen } from '../../test-utils';
3
4
  import { ActionPrompt, ActionPromptProps } from './ActionPrompt';
4
- import { userEvent } from '@testing-library/user-event';
5
5
 
6
6
  mockMatchMedia();
7
7
 
@@ -227,7 +227,7 @@ describe('ActionPrompt', () => {
227
227
  // Mock mobile viewport
228
228
  const mockMatchMediaFn = window.matchMedia as jest.Mock;
229
229
  mockMatchMediaFn.mockImplementation((query: string) => ({
230
- matches: query === '(max-width: 768px)',
230
+ matches: query === `(width < ${Breakpoint.MEDIUM}px)`,
231
231
  media: query,
232
232
  onchange: null,
233
233
  addListener: jest.fn(),
@@ -1,19 +1,32 @@
1
1
  import { AriaAttributes, ReactNode, useId } from 'react';
2
+ import { Breakpoint } from '@transferwise/neptune-tokens';
2
3
  import { clsx } from 'clsx';
3
4
 
5
+ import StatusIcon from '../../statusIcon';
4
6
  import Body from '../../body';
5
7
  import Button from '../../button';
6
- import { Breakpoint, Typography } from '../../common';
8
+ import { Typography } from '../../common';
9
+ import AvatarView, { AvatarViewProps } from '../../avatarView';
10
+ import Image from '../../image';
7
11
  import { ButtonProps } from '../../button/Button.types';
8
12
  import { PrimitivePrompt, PrimitivePromptProps } from '../PrimitivePrompt';
13
+ import { BadgeAssetsProps } from '../../badge';
14
+ import { GiftBox } from '@transferwise/icons';
9
15
  import { useScreenSize } from '../../common/hooks/useScreenSize';
10
- import { renderPromptMedia, PromptMedia } from '../helpers/promptMedia';
11
16
 
12
17
  export type ActionPromptProps = {
13
18
  title: ReactNode;
14
19
  description?: ReactNode;
15
20
  /** @default {} */
16
- media?: PromptMedia;
21
+ media?: {
22
+ imgSrc?: string;
23
+ avatar?: Pick<AvatarViewProps, 'imgSrc' | 'profileName' | 'profileType'> & {
24
+ asset?: AvatarViewProps['children'];
25
+ badge?: Pick<BadgeAssetsProps, 'flagCode'>;
26
+ };
27
+ 'aria-label'?: string;
28
+ 'aria-hidden'?: boolean;
29
+ };
17
30
  action: Pick<ButtonProps, 'onClick' | 'href' | 'target'> & {
18
31
  label: ButtonProps['children'];
19
32
  };
@@ -62,13 +75,54 @@ export const ActionPrompt = ({
62
75
  .filter(Boolean)
63
76
  .join(' ');
64
77
 
65
- const renderMedia = () =>
66
- renderPromptMedia({
67
- media,
68
- sentiment,
69
- mediaId,
70
- imgClassName: 'wds-action-prompt--media-image',
71
- });
78
+ const renderMedia = () => {
79
+ if (media?.imgSrc) {
80
+ return (
81
+ <Image
82
+ id={mediaId}
83
+ src={media.imgSrc}
84
+ className="wds-action-prompt--media-image"
85
+ alt={media['aria-label'] ?? ''}
86
+ />
87
+ );
88
+ }
89
+ if (media?.avatar) {
90
+ const badge = media.avatar.badge
91
+ ? media.avatar.badge
92
+ : sentiment === 'proposition'
93
+ ? {}
94
+ : { status: sentiment };
95
+ return (
96
+ <AvatarView
97
+ {...media.avatar}
98
+ badge={badge}
99
+ aria-label={media['aria-label']}
100
+ aria-hidden={media['aria-hidden']}
101
+ id={mediaId}
102
+ size={48}
103
+ >
104
+ {media.avatar.asset}
105
+ </AvatarView>
106
+ );
107
+ }
108
+ return sentiment === 'proposition' ? (
109
+ <AvatarView
110
+ id={mediaId}
111
+ size={48}
112
+ aria-label={media['aria-label']}
113
+ aria-hidden={media['aria-hidden']}
114
+ >
115
+ <GiftBox />
116
+ </AvatarView>
117
+ ) : (
118
+ <StatusIcon
119
+ id={mediaId}
120
+ size={48}
121
+ sentiment={sentiment}
122
+ iconLabel={media['aria-hidden'] ? null : media['aria-label']}
123
+ />
124
+ );
125
+ };
72
126
 
73
127
  return (
74
128
  <PrimitivePrompt
@@ -40,7 +40,7 @@
40
40
  grid-column-start: 2;
41
41
  grid-column-end: 3;
42
42
  }
43
- @media (max-width: 767px) {
43
+ @media (max-width: 839.98px) {
44
44
  .wds-prompt__actions-wrapper {
45
45
  grid-column: span 2;
46
46
  width: 100%;
@@ -1,6 +1,6 @@
1
1
  import { Cross } from '@transferwise/icons';
2
2
  import { clsx } from 'clsx';
3
- import SentimentSurface, { Emphasis, Sentiment } from '../../sentimentSurface';
3
+ import SentimentSurface, { Sentiment } from '../../sentimentSurface';
4
4
  import IconButton from '../../iconButton';
5
5
  import { useIntl } from 'react-intl';
6
6
  import closeBtnMessages from '../../common/closeButton/CloseButton.messages';
@@ -8,15 +8,10 @@ import { HTMLAttributes, ReactNode } from 'react';
8
8
 
9
9
  export type PrimitivePromptProps = HTMLAttributes<HTMLDivElement> & {
10
10
  /**
11
- * The sentiment determines the colour scheme.
11
+ * The sentiment determines the colour scheme
12
12
  * @default success
13
13
  */
14
14
  sentiment?: Sentiment;
15
- /**
16
- * The emphasis level affecting background and text contrast.
17
- * @default 'base
18
- */
19
- emphasis?: Emphasis;
20
15
  /**
21
16
  * Media to be displayed on the prompt (icon/image/etc).
22
17
  */
@@ -40,7 +35,6 @@ export type PrimitivePromptProps = HTMLAttributes<HTMLDivElement> & {
40
35
  * Uses several css variables to handle styling from within the consuming component, e.g. --Prompt-padding. */
41
36
  export const PrimitivePrompt = ({
42
37
  sentiment = 'success',
43
- emphasis = 'base',
44
38
  media,
45
39
  actions,
46
40
  onDismiss,
@@ -53,7 +47,6 @@ export const PrimitivePrompt = ({
53
47
  return (
54
48
  <SentimentSurface
55
49
  sentiment={sentiment}
56
- emphasis={emphasis}
57
50
  className={clsx('wds-prompt', `wds-prompt--${sentiment}`, className)}
58
51
  {...restProps}
59
52
  >
@@ -12,7 +12,3 @@ export { ActionPrompt } from './ActionPrompt';
12
12
  // InfoPrompt
13
13
  export type { InfoPromptProps, InfoPromptAction, InfoPromptMedia } from './InfoPrompt';
14
14
  export { InfoPrompt } from './InfoPrompt';
15
-
16
- // CriticalBanner
17
- export type { CriticalBannerProps } from './CriticalBanner';
18
- export { CriticalBanner } from './CriticalBanner';