@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
@@ -6,8 +6,8 @@ var React = require('react');
6
6
  var historyNavigator = require('../common/historyNavigator/historyNavigator.js');
7
7
  require('../common/theme.js');
8
8
  require('../common/direction.js');
9
+ require('@transferwise/neptune-tokens');
9
10
  require('../common/propsValues/control.js');
10
- require('../common/propsValues/breakpoint.js');
11
11
  require('../common/propsValues/size.js');
12
12
  require('../common/propsValues/typography.js');
13
13
  require('../common/propsValues/width.js');
@@ -23,6 +23,7 @@ require('../common/propsValues/variant.js');
23
23
  require('../common/propsValues/scroll.js');
24
24
  require('../common/propsValues/markdownNodeType.js');
25
25
  require('../common/fileType.js');
26
+ require('@transferwise/formatting');
26
27
  require('@transferwise/icons');
27
28
  require('clsx');
28
29
  require('react-intl');
@@ -1 +1 @@
1
- {"version":3,"file":"WithDisplayFormat.js","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> 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 /** @default '' */\n value?: string;\n /** @default '' */\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 * @default 'off'\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 if (triggerType === 'Paste' || triggerType === 'Cut') {\n return triggerType;\n }\n\n if ((triggerEvent.ctrlKey || triggerEvent.metaKey) && triggerEvent.key === 'z') {\n return triggerEvent.shiftKey ? 'Redo' : 'Undo';\n }\n\n // Detect mouse event redo\n if (triggerEvent.ctrlKey && triggerEvent.key === '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 if ((event.ctrlKey || event.metaKey) && event.key === '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 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\n const cursorPosition = getCursorPositionAfterKeystroke(\n action,\n selectionStart,\n selectionEnd,\n displayPattern,\n pastedLength,\n );\n\n setTimeout(() => {\n if (triggerEvent) {\n (triggerEvent.target as HTMLTextElement).setSelectionRange(cursorPosition, cursorPosition);\n }\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","ctrlKey","metaKey","key","shiftKey","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.js","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> 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 /** @default '' */\n value?: string;\n /** @default '' */\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 * @default 'off'\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 if (triggerType === 'Paste' || triggerType === 'Cut') {\n return triggerType;\n }\n\n if ((triggerEvent.ctrlKey || triggerEvent.metaKey) && triggerEvent.key === 'z') {\n return triggerEvent.shiftKey ? 'Redo' : 'Undo';\n }\n\n // Detect mouse event redo\n if (triggerEvent.ctrlKey && triggerEvent.key === '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 if ((event.ctrlKey || event.metaKey) && event.key === '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 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\n const cursorPosition = getCursorPositionAfterKeystroke(\n action,\n selectionStart,\n selectionEnd,\n displayPattern,\n pastedLength,\n );\n\n setTimeout(() => {\n if (triggerEvent) {\n (triggerEvent.target as HTMLTextElement).setSelectionRange(cursorPosition, cursorPosition);\n }\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","ctrlKey","metaKey","key","shiftKey","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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"}
@@ -2,8 +2,8 @@ import * as React from 'react';
2
2
  import HistoryNavigator from '../common/historyNavigator/historyNavigator.mjs';
3
3
  import '../common/theme.mjs';
4
4
  import '../common/direction.mjs';
5
+ import '@transferwise/neptune-tokens';
5
6
  import '../common/propsValues/control.mjs';
6
- import '../common/propsValues/breakpoint.mjs';
7
7
  import '../common/propsValues/size.mjs';
8
8
  import '../common/propsValues/typography.mjs';
9
9
  import '../common/propsValues/width.mjs';
@@ -19,6 +19,7 @@ import '../common/propsValues/variant.mjs';
19
19
  import '../common/propsValues/scroll.mjs';
20
20
  import '../common/propsValues/markdownNodeType.mjs';
21
21
  import '../common/fileType.mjs';
22
+ import '@transferwise/formatting';
22
23
  import '@transferwise/icons';
23
24
  import 'clsx';
24
25
  import 'react-intl';
@@ -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> 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 /** @default '' */\n value?: string;\n /** @default '' */\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 * @default 'off'\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 if (triggerType === 'Paste' || triggerType === 'Cut') {\n return triggerType;\n }\n\n if ((triggerEvent.ctrlKey || triggerEvent.metaKey) && triggerEvent.key === 'z') {\n return triggerEvent.shiftKey ? 'Redo' : 'Undo';\n }\n\n // Detect mouse event redo\n if (triggerEvent.ctrlKey && triggerEvent.key === '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 if ((event.ctrlKey || event.metaKey) && event.key === '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 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\n const cursorPosition = getCursorPositionAfterKeystroke(\n action,\n selectionStart,\n selectionEnd,\n displayPattern,\n pastedLength,\n );\n\n setTimeout(() => {\n if (triggerEvent) {\n (triggerEvent.target as HTMLTextElement).setSelectionRange(cursorPosition, cursorPosition);\n }\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","ctrlKey","metaKey","key","shiftKey","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> 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 /** @default '' */\n value?: string;\n /** @default '' */\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 * @default 'off'\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 if (triggerType === 'Paste' || triggerType === 'Cut') {\n return triggerType;\n }\n\n if ((triggerEvent.ctrlKey || triggerEvent.metaKey) && triggerEvent.key === 'z') {\n return triggerEvent.shiftKey ? 'Redo' : 'Undo';\n }\n\n // Detect mouse event redo\n if (triggerEvent.ctrlKey && triggerEvent.key === '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 if ((event.ctrlKey || event.metaKey) && event.key === '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 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\n const cursorPosition = getCursorPositionAfterKeystroke(\n action,\n selectionStart,\n selectionEnd,\n displayPattern,\n pastedLength,\n );\n\n setTimeout(() => {\n if (triggerEvent) {\n (triggerEvent.target as HTMLTextElement).setSelectionRange(cursorPosition, cursorPosition);\n }\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","ctrlKey","metaKey","key","shiftKey","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": "0.0.0-experimental-4c97d70",
3
+ "version": "0.0.0-experimental-a322f91",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -40,25 +40,25 @@
40
40
  "devDependencies": {
41
41
  "@babel/core": "^7.29.0",
42
42
  "@babel/plugin-transform-runtime": "^7.29.0",
43
- "@babel/preset-env": "^7.29.0",
43
+ "@babel/preset-env": "^7.29.2",
44
44
  "@babel/preset-react": "^7.28.5",
45
45
  "@babel/preset-typescript": "^7.28.5",
46
- "@formatjs/cli": "^6.13.1",
46
+ "@formatjs/cli": "^6.14.1",
47
47
  "@rollup/plugin-babel": "^6.1.0",
48
48
  "@rollup/plugin-json": "^6.1.0",
49
49
  "@rollup/plugin-node-resolve": "^16.0.3",
50
50
  "@rollup/plugin-typescript": "^12.3.0",
51
51
  "@rollup/plugin-url": "^8.0.2",
52
- "@storybook/addon-a11y": "^10.3.3",
53
- "@storybook/addon-docs": "^10.3.3",
52
+ "@storybook/addon-a11y": "^10.3.5",
53
+ "@storybook/addon-docs": "^10.3.5",
54
54
  "@storybook/addon-mcp": "^0.4.1",
55
- "@storybook/addon-webpack5-compiler-babel": "^4.0.0",
56
- "@storybook/react-webpack5": "^10.3.3",
55
+ "@storybook/addon-webpack5-compiler-babel": "^4.0.1",
56
+ "@storybook/react-webpack5": "^10.3.5",
57
57
  "@testing-library/dom": "^10.4.1",
58
58
  "@testing-library/jest-dom": "^6.9.1",
59
59
  "@testing-library/react": "^16.3.2",
60
60
  "@testing-library/user-event": "^14.6.1",
61
- "@transferwise/icons": "^4.0.2",
61
+ "@transferwise/icons": "^4.4.3",
62
62
  "@tsconfig/recommended": "^1.0.13",
63
63
  "@types/babel__core": "^7.20.5",
64
64
  "@types/commonmark": "^0.27.10",
@@ -69,11 +69,11 @@
69
69
  "@types/react": "^18.3.28",
70
70
  "@types/react-dom": "^18.3.7",
71
71
  "@types/react-transition-group": "4.4.12",
72
- "@wise/art": "^2.26.0",
72
+ "@wise/art": "^2.30.1",
73
73
  "@wise/eslint-config": "^13.3.0",
74
74
  "babel-plugin-formatjs": "^10.5.41",
75
75
  "eslint": "^9.39.4",
76
- "eslint-plugin-storybook": "^10.3.3",
76
+ "eslint-plugin-storybook": "^10.3.5",
77
77
  "gulp": "^5.0.1",
78
78
  "jest": "^30.3.0",
79
79
  "jest-environment-jsdom": "^29.7.0",
@@ -81,13 +81,13 @@
81
81
  "jsdom-testing-mocks": "^1.16.0",
82
82
  "lodash.times": "^4.3.2",
83
83
  "react-intl": "^7.1.14",
84
- "rollup": "^4.57.1",
84
+ "rollup": "^4.60.1",
85
85
  "rollup-preserve-directives": "^1.1.3",
86
- "storybook": "^10.3.3",
86
+ "storybook": "^10.3.5",
87
87
  "storybook-addon-tag-badges": "^3.1.0",
88
88
  "storybook-addon-test-codegen": "^3.0.1",
89
89
  "@transferwise/less-config": "3.1.2",
90
- "@transferwise/neptune-css": "14.27.1",
90
+ "@transferwise/neptune-css": "0.0.0-experimental-a322f91",
91
91
  "@wise/components-theming": "1.10.1",
92
92
  "@wise/wds-configs": "0.0.0"
93
93
  },
@@ -101,25 +101,23 @@
101
101
  "react-intl": "^5.10.0 || ^6 || ^7"
102
102
  },
103
103
  "dependencies": {
104
- "@babel/runtime": "^7.28.6",
104
+ "@babel/runtime": "^7.29.2",
105
105
  "@floating-ui/react": "^0.27.19",
106
- "@headlessui/react": "^2.2.9",
107
- "@popperjs/core": "^2.11.8",
106
+ "@headlessui/react": "^2.2.10",
108
107
  "@react-aria/focus": "^3.21.5",
109
108
  "@react-aria/overlays": "^3.31.2",
110
- "@transferwise/formatting": "^2.13.7",
109
+ "@transferwise/formatting": "^2.14.0",
110
+ "@transferwise/neptune-tokens": "0.0.0-experimental-7f32632",
111
111
  "@transferwise/neptune-validation": "^3.3.3",
112
112
  "clsx": "^2.1.1",
113
113
  "commonmark": "^0.31.2",
114
- "core-js": "^3.48.0",
115
- "framer-motion": "^12.36.0",
114
+ "core-js": "^3.49.0",
115
+ "framer-motion": "^12.38.0",
116
116
  "lodash.clamp": "^4.0.3",
117
117
  "lodash.debounce": "^4.0.8",
118
118
  "merge-props": "^6.0.0",
119
- "react-popper": "^2.3.0",
120
119
  "react-transition-group": "^4.4.5",
121
- "virtua": "^0.48.8",
122
- "@transferwise/neptune-tokens": "^8.20.3"
120
+ "virtua": "^0.48.8"
123
121
  },
124
122
  "publishConfig": {
125
123
  "access": "public",
@@ -18,7 +18,7 @@
18
18
  border-bottom: 1px solid rgba(0,0,0,0.10196);
19
19
  border-bottom: 1px solid var(--color-border-neutral);
20
20
  }
21
- @media (min-width: 480px) {
21
+ @media (min-width: 320px) {
22
22
  .np-accordion-item__content.has-icon {
23
23
  padding-left: 68px;
24
24
  }
@@ -207,7 +207,7 @@ export const Badge: Story = {
207
207
  className="d-flex align-items-center justify-content-center"
208
208
  style={{
209
209
  backgroundColor: 'var(--color-bright-pink)',
210
- color: 'var(--color-interactive-primary)',
210
+ color: 'var(--color-dark-maroon)',
211
211
  width: '100%',
212
212
  height: '100%',
213
213
  }}
@@ -1,8 +1,18 @@
1
1
  import { Meta, StoryObj } from '@storybook/react-webpack5';
2
- import { Graph, Money, PlusCircle, Rewards } from '@transferwise/icons';
2
+ import {
3
+ Camera,
4
+ Convert,
5
+ FastFlag,
6
+ Graph,
7
+ Leaf,
8
+ Money,
9
+ PlusCircle,
10
+ Rewards,
11
+ } from '@transferwise/icons';
3
12
  import AvatarView from '.';
4
13
  import { getBrandColorFromSeed, getInitials, ProfileType } from '../common';
5
14
  import Display from '../display';
15
+ import { withVariantConfig } from '../../.storybook/helpers';
6
16
 
7
17
  const meta: Meta<typeof AvatarView> = {
8
18
  component: AvatarView,
@@ -112,3 +122,100 @@ export const ProfileBrokenImageFallback: Story = {
112
122
  );
113
123
  },
114
124
  };
125
+
126
+ /** Badge types across default and dark themes to verify icon color visibility. */
127
+ export const BadgeVariants: Story = {
128
+ render: function Render() {
129
+ return (
130
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>
131
+ <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>
132
+ <AvatarView size={32} badge={{ type: 'action' }}>
133
+ <Money />
134
+ </AvatarView>
135
+ <AvatarView size={48} badge={{ type: 'action' }}>
136
+ <Money />
137
+ </AvatarView>
138
+ <AvatarView size={32} badge={{ type: 'action', icon: <Camera /> }}>
139
+ <Money />
140
+ </AvatarView>
141
+ <AvatarView
142
+ size={48}
143
+ imgSrc="../avatar-square-dude.webp"
144
+ badge={{ type: 'action', icon: <Camera /> }}
145
+ />
146
+ </div>
147
+ <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>
148
+ <AvatarView size={32} badge={{ type: 'reference' }}>
149
+ <Money />
150
+ </AvatarView>
151
+ <AvatarView size={48} badge={{ type: 'reference' }}>
152
+ <Money />
153
+ </AvatarView>
154
+ <AvatarView size={32} badge={{ type: 'reference', icon: <Convert /> }}>
155
+ <Money />
156
+ </AvatarView>
157
+ <AvatarView
158
+ size={48}
159
+ imgSrc="../avatar-square-dude.webp"
160
+ badge={{ type: 'reference', icon: <Convert /> }}
161
+ />
162
+ </div>
163
+ <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>
164
+ <AvatarView size={32} badge={{ icon: <FastFlag /> }}>
165
+ <Money />
166
+ </AvatarView>
167
+ <AvatarView size={48} badge={{ icon: <FastFlag /> }}>
168
+ <Money />
169
+ </AvatarView>
170
+ <AvatarView size={32} badge={{ status: 'warning' }}>
171
+ <Money />
172
+ </AvatarView>
173
+ <AvatarView size={48} badge={{ status: 'negative' }}>
174
+ <Money />
175
+ </AvatarView>
176
+ </div>
177
+ <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>
178
+ <AvatarView
179
+ size={32}
180
+ imgSrc="../avatar-square-dude.webp"
181
+ badge={{
182
+ asset: (
183
+ <div
184
+ className="d-flex align-items-center justify-content-center"
185
+ style={{
186
+ backgroundColor: 'var(--color-bright-pink)',
187
+ color: 'var(--color-dark-maroon)',
188
+ width: '100%',
189
+ height: '100%',
190
+ }}
191
+ >
192
+ <Leaf />
193
+ </div>
194
+ ),
195
+ }}
196
+ />
197
+ <AvatarView
198
+ size={48}
199
+ imgSrc="../avatar-square-dude.webp"
200
+ badge={{
201
+ asset: (
202
+ <div
203
+ className="d-flex align-items-center justify-content-center"
204
+ style={{
205
+ backgroundColor: 'var(--color-bright-pink)',
206
+ color: 'var(--color-dark-maroon)',
207
+ width: '100%',
208
+ height: '100%',
209
+ }}
210
+ >
211
+ <Leaf />
212
+ </div>
213
+ ),
214
+ }}
215
+ />
216
+ </div>
217
+ </div>
218
+ );
219
+ },
220
+ ...withVariantConfig(['default', 'dark']),
221
+ };
@@ -51,6 +51,8 @@ export default function BadgeAssets({
51
51
  type === 'action'
52
52
  ? 'var(--color-interactive-accent)'
53
53
  : 'var(--color-background-neutral)',
54
+ color:
55
+ type === 'action' ? 'var(--color-interactive-control)' : 'var(--color-content-primary)',
54
56
  }}
55
57
  >
56
58
  {icon ?? <Plus />}
package/src/card/Card.css CHANGED
@@ -24,13 +24,13 @@
24
24
  .np-card--inactive .decision {
25
25
  cursor: default;
26
26
  }
27
- @media (min-width: 480px) {
27
+ @media (min-width: 320px) {
28
28
  .np-card--has-icon .np-card__content {
29
29
  padding: 24px 72px;
30
30
  padding: var(--size-24) var(--size-72);
31
31
  }
32
32
  }
33
- @media (min-width: 480px) {
33
+ @media (min-width: 320px) {
34
34
  .np-card--has-icon .np-card__divider--expanded {
35
35
  margin: 0 72px;
36
36
  margin: 0 var(--size-72);
@@ -13,7 +13,7 @@
13
13
  padding: 8px;
14
14
  padding: var(--size-8);
15
15
  }
16
- @media (max-width: 767px) {
16
+ @media (max-width: 839.98px) {
17
17
  .carousel {
18
18
  gap: 8px;
19
19
  gap: var(--size-8);
@@ -51,14 +51,14 @@
51
51
  -webkit-scroll-snap-align: center;
52
52
  transition: all 0.4s !important;
53
53
  }
54
- @media (min-width: 1200px) {
54
+ @media (min-width: 1160px) {
55
55
  .carousel__card {
56
56
  min-width: 280px;
57
57
  width: 280px;
58
58
  height: 280px;
59
59
  }
60
60
  }
61
- @media (min-width: 768px) {
61
+ @media (min-width: 840px) {
62
62
  .carousel-wrapper {
63
63
  overflow: visible;
64
64
  }
@@ -67,14 +67,14 @@
67
67
  margin: 0 calc(-1 * var(--size-8));
68
68
  }
69
69
  }
70
- @media (max-width: 1199px) {
70
+ @media (max-width: 1159.98px) {
71
71
  .carousel__card {
72
72
  min-width: 242px;
73
73
  width: 242px;
74
74
  height: 242px;
75
75
  }
76
76
  }
77
- @media (max-width: 767px) {
77
+ @media (max-width: 839.98px) {
78
78
  .carousel__card {
79
79
  min-width: 336px;
80
80
  width: 336px;
@@ -1,7 +1,8 @@
1
1
  import { clsx } from 'clsx';
2
+ import { Breakpoint } from '@transferwise/neptune-tokens';
2
3
 
3
4
  import Body from '../body/Body';
4
- import { Breakpoint, ControlType, Priority, Typography } from '../common';
5
+ import { ControlType, Priority, Typography } from '../common';
5
6
  import IconButton, { IconButtonProps } from '../iconButton';
6
7
  import { useMedia } from '../common/hooks/useMedia';
7
8
 
@@ -34,7 +35,7 @@ const CircularButton = ({
34
35
  priority = Priority.PRIMARY,
35
36
  type = 'default',
36
37
  }: CircularButtonProps) => {
37
- const isTinyViewport = useMedia(`(max-width: ${Breakpoint.ZOOM_400}px)`);
38
+ const isTinyViewport = useMedia(`(max-width: ${Breakpoint.EXTRA_SMALL}px)`);
38
39
  return (
39
40
  <label
40
41
  className={clsx(
@@ -92,7 +92,7 @@ button.np-option {
92
92
  max-width: none;
93
93
  width: auto;
94
94
  }
95
- @media (min-width: 576px) {
95
+ @media (min-width: 600px) {
96
96
  .np-theme-personal .np-option {
97
97
  border-radius: 10px;
98
98
  border-radius: var(--radius-small);
@@ -21,7 +21,7 @@
21
21
  box-sizing: border-box;
22
22
  overflow: hidden;
23
23
  }
24
- @media (min-width: 576px) {
24
+ @media (min-width: 600px) {
25
25
  .np-Card {
26
26
  max-width: var(--Card-max-width);
27
27
  }
@@ -8,6 +8,7 @@ import {
8
8
  useRef,
9
9
  useState,
10
10
  } from 'react';
11
+ import { Breakpoint } from '@transferwise/neptune-tokens';
11
12
 
12
13
  import Dimmer from '../../dimmer';
13
14
  import Drawer from '../../drawer';
@@ -18,7 +19,6 @@ import { CommonProps } from '../commonProps';
18
19
  import { isServerSide } from '../domHelpers';
19
20
  import { useConditionalListener } from '../hooks';
20
21
  import { useMedia } from '../hooks/useMedia';
21
- import { Breakpoint } from '../propsValues/breakpoint';
22
22
  import { Position } from '../propsValues/position';
23
23
 
24
24
  const INITIAL_Y_POSITION = 0;
@@ -178,7 +178,7 @@ const BottomSheet = ({ role = 'dialog', ...props }: BottomSheetProps) => {
178
178
  };
179
179
  }
180
180
 
181
- const is400Zoom = useMedia(`(max-width: ${Breakpoint.ZOOM_400}px)`);
181
+ const is400Zoom = useMedia(`(max-width: ${Breakpoint.EXTRA_SMALL}px)`);
182
182
 
183
183
  const overlayId = useContext(OverlayIdContext);
184
184
 
@@ -1,7 +1,7 @@
1
1
  import { HTMLAttributes, forwardRef } from 'react';
2
2
  import { clsx } from 'clsx';
3
+ import { Breakpoint } from '@transferwise/neptune-tokens';
3
4
  import { useMedia } from '../hooks/useMedia';
4
- import { Breakpoint } from '../propsValues/breakpoint';
5
5
 
6
6
  export type ShapeSize = 16 | 24 | 32 | 40 | 48 | 56 | 72;
7
7
 
@@ -63,7 +63,7 @@ const Circle = forwardRef(function Circle(
63
63
  }: Props,
64
64
  ref,
65
65
  ) {
66
- const isTinyViewport = useMedia(`(max-width: ${Breakpoint.ZOOM_400}px)`);
66
+ const isTinyViewport = useMedia(`(max-width: ${Breakpoint.EXTRA_SMALL}px)`);
67
67
  return (
68
68
  <Element
69
69
  {...props}