@transferwise/components 46.141.0 → 46.143.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/build/accordion/AccordionItem/AccordionItem.js +1 -1
  2. package/build/accordion/AccordionItem/AccordionItem.mjs +1 -1
  3. package/build/actionButton/ActionButton.js +1 -1
  4. package/build/actionButton/ActionButton.mjs +1 -1
  5. package/build/actionOption/ActionOption.js +1 -1
  6. package/build/actionOption/ActionOption.mjs +1 -1
  7. package/build/alert/Alert.js +1 -1
  8. package/build/alert/Alert.mjs +1 -1
  9. package/build/alert/inlineMarkdown/InlineMarkdown.js +1 -1
  10. package/build/alert/inlineMarkdown/InlineMarkdown.mjs +1 -1
  11. package/build/avatar/Avatar.js +1 -1
  12. package/build/avatar/Avatar.mjs +1 -1
  13. package/build/avatarLayout/AvatarLayout.js +16 -2
  14. package/build/avatarLayout/AvatarLayout.js.map +1 -1
  15. package/build/avatarLayout/AvatarLayout.mjs +16 -2
  16. package/build/avatarLayout/AvatarLayout.mjs.map +1 -1
  17. package/build/avatarView/AvatarView.js +7 -3
  18. package/build/avatarView/AvatarView.js.map +1 -1
  19. package/build/avatarView/AvatarView.mjs +7 -3
  20. package/build/avatarView/AvatarView.mjs.map +1 -1
  21. package/build/avatarView/Dot.js +8 -0
  22. package/build/avatarView/Dot.js.map +1 -1
  23. package/build/avatarView/Dot.mjs +8 -0
  24. package/build/avatarView/Dot.mjs.map +1 -1
  25. package/build/avatarWrapper/AvatarWrapper.js +1 -1
  26. package/build/avatarWrapper/AvatarWrapper.mjs +1 -1
  27. package/build/badge/Badge.js +1 -1
  28. package/build/badge/Badge.mjs +1 -1
  29. package/build/button/Button.js +1 -1
  30. package/build/button/Button.mjs +1 -1
  31. package/build/button/LegacyButton.js +1 -1
  32. package/build/button/LegacyButton.mjs +1 -1
  33. package/build/button/classMap.js +1 -1
  34. package/build/button/classMap.mjs +1 -1
  35. package/build/button/legacyUtils/legacyUtils.js +1 -1
  36. package/build/button/legacyUtils/legacyUtils.mjs +1 -1
  37. package/build/card/Card.js +1 -1
  38. package/build/card/Card.mjs +1 -1
  39. package/build/checkbox/Checkbox.js +1 -1
  40. package/build/checkbox/Checkbox.mjs +1 -1
  41. package/build/chevron/Chevron.js +1 -1
  42. package/build/chevron/Chevron.mjs +1 -1
  43. package/build/chips/Chip.js +1 -1
  44. package/build/chips/Chip.mjs +1 -1
  45. package/build/circularButton/CircularButton.js +2 -2
  46. package/build/circularButton/CircularButton.js.map +1 -1
  47. package/build/circularButton/CircularButton.mjs +2 -2
  48. package/build/circularButton/CircularButton.mjs.map +1 -1
  49. package/build/common/bottomSheet/BottomSheet.js +2 -2
  50. package/build/common/bottomSheet/BottomSheet.js.map +1 -1
  51. package/build/common/bottomSheet/BottomSheet.mjs +2 -2
  52. package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
  53. package/build/common/circle/Circle.js +8 -4
  54. package/build/common/circle/Circle.js.map +1 -1
  55. package/build/common/circle/Circle.mjs +8 -4
  56. package/build/common/circle/Circle.mjs.map +1 -1
  57. package/build/common/hooks/useLayout/useLayout.js +6 -6
  58. package/build/common/hooks/useLayout/useLayout.js.map +1 -1
  59. package/build/common/hooks/useLayout/useLayout.mjs +1 -1
  60. package/build/common/hooks/useLayout/useLayout.mjs.map +1 -1
  61. package/build/common/hooks/useScreenSize.js.map +1 -1
  62. package/build/common/hooks/useScreenSize.mjs.map +1 -1
  63. package/build/common/panel/Panel.js +1 -1
  64. package/build/common/panel/Panel.mjs +1 -1
  65. package/build/common/responsivePanel/ResponsivePanel.js +1 -1
  66. package/build/common/responsivePanel/ResponsivePanel.mjs +1 -1
  67. package/build/criticalBanner/CriticalCommsBanner.js +1 -1
  68. package/build/criticalBanner/CriticalCommsBanner.mjs +1 -1
  69. package/build/dateInput/DateInput.js +1 -1
  70. package/build/dateInput/DateInput.mjs +1 -1
  71. package/build/dateLookup/DateLookup.js +2 -2
  72. package/build/dateLookup/DateLookup.js.map +1 -1
  73. package/build/dateLookup/DateLookup.mjs +1 -1
  74. package/build/dateLookup/DateLookup.mjs.map +1 -1
  75. package/build/dateLookup/dateHeader/DateHeader.js +1 -1
  76. package/build/dateLookup/dateHeader/DateHeader.mjs +1 -1
  77. package/build/dateLookup/dateTrigger/DateTrigger.js +1 -1
  78. package/build/dateLookup/dateTrigger/DateTrigger.mjs +1 -1
  79. package/build/decision/Decision.js +3 -3
  80. package/build/decision/Decision.js.map +1 -1
  81. package/build/decision/Decision.mjs +1 -1
  82. package/build/decision/Decision.mjs.map +1 -1
  83. package/build/definitionList/DefinitionList.js +1 -1
  84. package/build/definitionList/DefinitionList.mjs +1 -1
  85. package/build/dimmer/Dimmer.js +1 -1
  86. package/build/dimmer/Dimmer.mjs +1 -1
  87. package/build/display/Display.js +1 -1
  88. package/build/display/Display.mjs +1 -1
  89. package/build/drawer/Drawer.js +1 -1
  90. package/build/drawer/Drawer.mjs +1 -1
  91. package/build/expressiveMoneyInput/amountInput/AmountInput.js +1 -1
  92. package/build/expressiveMoneyInput/amountInput/AmountInput.js.map +1 -1
  93. package/build/expressiveMoneyInput/amountInput/AmountInput.mjs +1 -1
  94. package/build/expressiveMoneyInput/amountInput/AmountInput.mjs.map +1 -1
  95. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js +1 -1
  96. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs +1 -1
  97. package/build/field/Field.js +64 -33
  98. package/build/field/Field.js.map +1 -1
  99. package/build/field/Field.messages.js +14 -0
  100. package/build/field/Field.messages.js.map +1 -0
  101. package/build/field/Field.messages.mjs +10 -0
  102. package/build/field/Field.messages.mjs.map +1 -0
  103. package/build/field/Field.mjs +66 -35
  104. package/build/field/Field.mjs.map +1 -1
  105. package/build/flowNavigation/FlowNavigation.js +3 -3
  106. package/build/flowNavigation/FlowNavigation.js.map +1 -1
  107. package/build/flowNavigation/FlowNavigation.mjs +1 -1
  108. package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
  109. package/build/header/Header.js +1 -1
  110. package/build/header/Header.mjs +1 -1
  111. package/build/i18n/en.json +1 -0
  112. package/build/i18n/en.json.js +1 -0
  113. package/build/i18n/en.json.js.map +1 -1
  114. package/build/i18n/en.json.mjs +1 -0
  115. package/build/i18n/en.json.mjs.map +1 -1
  116. package/build/image/Image.js +1 -1
  117. package/build/image/Image.mjs +1 -1
  118. package/build/index.js +2 -2
  119. package/build/index.mjs +1 -1
  120. package/build/info/Info.js +1 -1
  121. package/build/info/Info.mjs +1 -1
  122. package/build/inlineAlert/InlineAlert.js +1 -1
  123. package/build/inlineAlert/InlineAlert.mjs +1 -1
  124. package/build/inputs/SearchInput.js +1 -1
  125. package/build/inputs/SearchInput.mjs +1 -1
  126. package/build/inputs/SelectInput/SelectInput.js +2 -2
  127. package/build/inputs/SelectInput/SelectInput.js.map +1 -1
  128. package/build/inputs/SelectInput/SelectInput.mjs +1 -1
  129. package/build/inputs/SelectInput/SelectInput.mjs.map +1 -1
  130. package/build/inputs/TextArea.js +5 -0
  131. package/build/inputs/TextArea.js.map +1 -1
  132. package/build/inputs/TextArea.mjs +6 -1
  133. package/build/inputs/TextArea.mjs.map +1 -1
  134. package/build/inputs/contexts.js +16 -0
  135. package/build/inputs/contexts.js.map +1 -1
  136. package/build/inputs/contexts.mjs +16 -2
  137. package/build/inputs/contexts.mjs.map +1 -1
  138. package/build/instructionsList/InstructionsList.js +1 -1
  139. package/build/instructionsList/InstructionsList.mjs +1 -1
  140. package/build/link/Link.js +1 -1
  141. package/build/link/Link.mjs +1 -1
  142. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.js +1 -1
  143. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.mjs +1 -1
  144. package/build/listItem/ListItem.js +1 -1
  145. package/build/listItem/ListItem.mjs +1 -1
  146. package/build/listItem/Prompt/ListItemPrompt.js +1 -1
  147. package/build/listItem/Prompt/ListItemPrompt.mjs +1 -1
  148. package/build/loader/Loader.js +1 -1
  149. package/build/loader/Loader.mjs +1 -1
  150. package/build/logo/Logo.js +3 -3
  151. package/build/logo/Logo.js.map +1 -1
  152. package/build/logo/Logo.mjs +2 -2
  153. package/build/logo/Logo.mjs.map +1 -1
  154. package/build/main.css +350 -402
  155. package/build/markdown/Markdown.js +1 -1
  156. package/build/markdown/Markdown.mjs +1 -1
  157. package/build/modal/Modal.js +3 -3
  158. package/build/modal/Modal.js.map +1 -1
  159. package/build/modal/Modal.mjs +3 -3
  160. package/build/modal/Modal.mjs.map +1 -1
  161. package/build/moneyInput/MoneyInput.js +1 -1
  162. package/build/moneyInput/MoneyInput.mjs +1 -1
  163. package/build/navigationOption/NavigationOption.js +1 -1
  164. package/build/navigationOption/NavigationOption.mjs +1 -1
  165. package/build/nudge/Nudge.js +1 -1
  166. package/build/nudge/Nudge.mjs +1 -1
  167. package/build/overlayHeader/OverlayHeader.js +1 -1
  168. package/build/overlayHeader/OverlayHeader.mjs +1 -1
  169. package/build/phoneNumberInput/PhoneNumberInput.js +1 -1
  170. package/build/phoneNumberInput/PhoneNumberInput.mjs +1 -1
  171. package/build/popover/Popover.js +1 -1
  172. package/build/popover/Popover.mjs +1 -1
  173. package/build/processIndicator/ProcessIndicator.js +1 -1
  174. package/build/processIndicator/ProcessIndicator.mjs +1 -1
  175. package/build/progressBar/ProgressBar.js +1 -1
  176. package/build/progressBar/ProgressBar.mjs +1 -1
  177. package/build/promoCard/PromoCard.js +1 -1
  178. package/build/promoCard/PromoCard.mjs +1 -1
  179. package/build/promoCard/PromoCardIndicator.js +1 -1
  180. package/build/promoCard/PromoCardIndicator.mjs +1 -1
  181. package/build/prompt/ActionPrompt/ActionPrompt.js +2 -2
  182. package/build/prompt/ActionPrompt/ActionPrompt.js.map +1 -1
  183. package/build/prompt/ActionPrompt/ActionPrompt.mjs +2 -2
  184. package/build/prompt/ActionPrompt/ActionPrompt.mjs.map +1 -1
  185. package/build/prompt/CriticalBanner/CriticalBanner.js +2 -2
  186. package/build/prompt/CriticalBanner/CriticalBanner.js.map +1 -1
  187. package/build/prompt/CriticalBanner/CriticalBanner.mjs +1 -1
  188. package/build/prompt/InfoPrompt/InfoPrompt.js +1 -1
  189. package/build/prompt/InfoPrompt/InfoPrompt.mjs +1 -1
  190. package/build/prompt/InlinePrompt/InlinePrompt.js +1 -1
  191. package/build/prompt/InlinePrompt/InlinePrompt.mjs +1 -1
  192. package/build/provider/Provider.js +1 -1
  193. package/build/provider/Provider.mjs +1 -1
  194. package/build/radio/Radio.js +1 -1
  195. package/build/radio/Radio.mjs +1 -1
  196. package/build/segmentedControl/SegmentedControl.js +1 -1
  197. package/build/segmentedControl/SegmentedControl.mjs +1 -1
  198. package/build/select/Select.js +1 -1
  199. package/build/select/Select.mjs +1 -1
  200. package/build/select/option/Option.js +1 -1
  201. package/build/select/option/Option.mjs +1 -1
  202. package/build/statusIcon/StatusIcon.js +2 -2
  203. package/build/statusIcon/StatusIcon.js.map +1 -1
  204. package/build/statusIcon/StatusIcon.mjs +2 -2
  205. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  206. package/build/stepper/Stepper.js +1 -1
  207. package/build/stepper/Stepper.mjs +1 -1
  208. package/build/sticky/Sticky.js +1 -1
  209. package/build/sticky/Sticky.mjs +1 -1
  210. package/build/styles/accordion/Accordion.css +1 -1
  211. package/build/styles/avatarView/AvatarView.css +4 -4
  212. package/build/styles/avatarView/Dot.css +4 -4
  213. package/build/styles/card/Card.css +2 -2
  214. package/build/styles/carousel/Carousel.css +5 -5
  215. package/build/styles/common/Option/Option.css +2 -4
  216. package/build/styles/common/baseCard/BaseCard.css +1 -1
  217. package/build/styles/container/Container.css +3 -3
  218. package/build/styles/criticalBanner/CriticalCommsBanner.css +1 -1
  219. package/build/styles/css/accordion.css +4 -4
  220. package/build/styles/css/button-groups.css +6 -6
  221. package/build/styles/css/buttons.css +1 -1
  222. package/build/styles/css/circles.css +1 -1
  223. package/build/styles/css/column-layout.css +4 -4
  224. package/build/styles/css/decision.css +4 -4
  225. package/build/styles/css/dropdowns.css +10 -10
  226. package/build/styles/css/droppable.css +8 -8
  227. package/build/styles/css/flex.css +13 -15
  228. package/build/styles/css/footer.css +3 -3
  229. package/build/styles/css/grid.css +19 -19
  230. package/build/styles/css/input-groups.css +12 -12
  231. package/build/styles/css/list-group.css +8 -8
  232. package/build/styles/css/modals.css +6 -6
  233. package/build/styles/css/navbar.css +62 -62
  234. package/build/styles/css/navs.css +2 -2
  235. package/build/styles/css/neptune.css +274 -328
  236. package/build/styles/css/panels.css +9 -9
  237. package/build/styles/css/popovers.css +13 -13
  238. package/build/styles/css/select.css +1 -1
  239. package/build/styles/css/sequences.css +6 -6
  240. package/build/styles/css/table.css +6 -6
  241. package/build/styles/css/utilities.css +8 -20
  242. package/build/styles/css/wells.css +4 -18
  243. package/build/styles/dateInput/DateInput.css +1 -1
  244. package/build/styles/definitionList/DefinitionList.css +2 -2
  245. package/build/styles/drawer/Drawer.css +2 -2
  246. package/build/styles/expressiveMoneyInput/ExpressiveMoneyInput.css +2 -0
  247. package/build/styles/expressiveMoneyInput/amountInput/AmountInput.css +2 -0
  248. package/build/styles/field/Field.css +19 -3
  249. package/build/styles/flowNavigation/FlowNavigation.css +1 -1
  250. package/build/styles/inputs/Input.css +3 -3
  251. package/build/styles/inputs/SelectInput/Options/SelectInputOptions.css +2 -2
  252. package/build/styles/inputs/SelectInput/SelectInput.css +2 -2
  253. package/build/styles/inputs/TextArea.css +3 -3
  254. package/build/styles/less/legacy-variables.less +34 -47
  255. package/build/styles/main.css +350 -402
  256. package/build/styles/modal/Modal.css +7 -20
  257. package/build/styles/overlayHeader/OverlayHeader.css +1 -1
  258. package/build/styles/popover/Popover.css +3 -3
  259. package/build/styles/promoCard/PromoCard.css +1 -1
  260. package/build/styles/prompt/ActionPrompt/ActionPrompt.css +1 -1
  261. package/build/styles/prompt/CriticalBanner/CriticalBanner.css +1 -1
  262. package/build/styles/prompt/PrimitivePrompt/PrimitivePrompt.css +1 -1
  263. package/build/styles/props/custom-media.css +23 -11
  264. package/build/styles/snackbar/Snackbar.css +2 -2
  265. package/build/styles/stepper/Stepper.css +2 -2
  266. package/build/styles/styles/less/accordion.css +4 -4
  267. package/build/styles/styles/less/button-groups.css +6 -6
  268. package/build/styles/styles/less/buttons.css +1 -1
  269. package/build/styles/styles/less/circles.css +1 -1
  270. package/build/styles/styles/less/column-layout.css +4 -4
  271. package/build/styles/styles/less/decision.css +4 -4
  272. package/build/styles/styles/less/dropdowns.css +10 -10
  273. package/build/styles/styles/less/droppable.css +8 -8
  274. package/build/styles/styles/less/flex.css +13 -15
  275. package/build/styles/styles/less/footer.css +3 -3
  276. package/build/styles/styles/less/forms/bootstrap-forms.css +9 -9
  277. package/build/styles/styles/less/grid.css +19 -19
  278. package/build/styles/styles/less/input-groups.css +12 -12
  279. package/build/styles/styles/less/list-group.css +8 -8
  280. package/build/styles/styles/less/modals.css +6 -6
  281. package/build/styles/styles/less/navbar.css +62 -62
  282. package/build/styles/styles/less/navs.css +2 -2
  283. package/build/styles/styles/less/neptune.css +274 -328
  284. package/build/styles/styles/less/panels.css +9 -9
  285. package/build/styles/styles/less/popovers.css +13 -13
  286. package/build/styles/styles/less/select.css +1 -1
  287. package/build/styles/styles/less/sequences.css +6 -6
  288. package/build/styles/styles/less/table.css +6 -6
  289. package/build/styles/styles/less/utilities.css +8 -20
  290. package/build/styles/styles/less/wells.css +4 -18
  291. package/build/styles/styles/props/custom-media.css +1 -11
  292. package/build/styles/table/Table.css +1 -1
  293. package/build/styles/tabs/Tabs.css +2 -2
  294. package/build/styles/typeahead/Typeahead.css +1 -1
  295. package/build/summary/Summary.js +1 -1
  296. package/build/summary/Summary.mjs +1 -1
  297. package/build/table/Table.js +1 -1
  298. package/build/table/Table.mjs +1 -1
  299. package/build/table/TableRow.js +1 -1
  300. package/build/table/TableRow.mjs +1 -1
  301. package/build/table/TableStatusText.js +1 -1
  302. package/build/table/TableStatusText.mjs +1 -1
  303. package/build/tabs/Tabs.js +1 -1
  304. package/build/tabs/Tabs.mjs +1 -1
  305. package/build/tile/Tile.js +1 -1
  306. package/build/tile/Tile.mjs +1 -1
  307. package/build/title/Title.js +1 -1
  308. package/build/title/Title.mjs +1 -1
  309. package/build/tooltip/Tooltip.js +1 -1
  310. package/build/tooltip/Tooltip.mjs +1 -1
  311. package/build/typeahead/Typeahead.js +1 -1
  312. package/build/typeahead/Typeahead.mjs +1 -1
  313. package/build/types/avatarView/AvatarView.d.ts +1 -1
  314. package/build/types/avatarView/AvatarView.d.ts.map +1 -1
  315. package/build/types/avatarView/Dot.d.ts.map +1 -1
  316. package/build/types/circularButton/CircularButton.d.ts.map +1 -1
  317. package/build/types/common/bottomSheet/BottomSheet.d.ts.map +1 -1
  318. package/build/types/common/circle/Circle.d.ts +1 -1
  319. package/build/types/common/circle/Circle.d.ts.map +1 -1
  320. package/build/types/common/hooks/useScreenSize.d.ts +1 -1
  321. package/build/types/common/hooks/useScreenSize.d.ts.map +1 -1
  322. package/build/types/common/index.d.ts +1 -1
  323. package/build/types/common/index.d.ts.map +1 -1
  324. package/build/types/dateLookup/DateLookup.d.ts.map +1 -1
  325. package/build/types/decision/Decision.d.ts.map +1 -1
  326. package/build/types/field/Field.d.ts.map +1 -1
  327. package/build/types/field/Field.messages.d.ts +8 -0
  328. package/build/types/field/Field.messages.d.ts.map +1 -0
  329. package/build/types/flowNavigation/FlowNavigation.d.ts.map +1 -1
  330. package/build/types/index.d.ts +2 -1
  331. package/build/types/index.d.ts.map +1 -1
  332. package/build/types/inputs/TextArea.d.ts.map +1 -1
  333. package/build/types/inputs/contexts.d.ts +6 -0
  334. package/build/types/inputs/contexts.d.ts.map +1 -1
  335. package/build/types/logo/Logo.d.ts +1 -1
  336. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts.map +1 -1
  337. package/build/types/statusIcon/StatusIcon.d.ts.map +1 -1
  338. package/build/types/test-utils/index.d.ts +2 -0
  339. package/build/types/test-utils/index.d.ts.map +1 -1
  340. package/build/upload/Upload.js +1 -1
  341. package/build/upload/Upload.mjs +1 -1
  342. package/build/upload/steps/completeStep/completeStep.js +1 -1
  343. package/build/upload/steps/completeStep/completeStep.mjs +1 -1
  344. package/build/upload/steps/processingStep/processingStep.js +1 -1
  345. package/build/upload/steps/processingStep/processingStep.mjs +1 -1
  346. package/build/upload/steps/uploadImageStep/uploadImageStep.js +1 -1
  347. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +1 -1
  348. package/build/uploadInput/UploadInput.js +1 -1
  349. package/build/uploadInput/UploadInput.mjs +1 -1
  350. package/build/uploadInput/uploadButton/UploadButton.js +1 -1
  351. package/build/uploadInput/uploadButton/UploadButton.mjs +1 -1
  352. package/build/uploadInput/uploadButton/defaults.js +1 -1
  353. package/build/uploadInput/uploadButton/defaults.mjs +1 -1
  354. package/build/uploadInput/uploadItem/UploadItem.js +1 -1
  355. package/build/uploadInput/uploadItem/UploadItem.mjs +1 -1
  356. package/build/withDisplayFormat/WithDisplayFormat.js +1 -1
  357. package/build/withDisplayFormat/WithDisplayFormat.mjs +1 -1
  358. package/package.json +3 -3
  359. package/src/accordion/Accordion.css +1 -1
  360. package/src/avatarLayout/AvatarLayout.story.tsx +1 -1
  361. package/src/avatarLayout/AvatarLayout.tsx +4 -0
  362. package/src/avatarView/AvatarView.css +4 -4
  363. package/src/avatarView/AvatarView.story.tsx +17 -13
  364. package/src/avatarView/AvatarView.tsx +5 -1
  365. package/src/avatarView/Dot.css +4 -4
  366. package/src/avatarView/Dot.less +6 -6
  367. package/src/avatarView/Dot.tsx +2 -0
  368. package/src/card/Card.css +2 -2
  369. package/src/carousel/Carousel.css +5 -5
  370. package/src/carousel/Carousel.less +3 -3
  371. package/src/circularButton/CircularButton.tsx +3 -2
  372. package/src/common/Option/Option.css +2 -4
  373. package/src/common/Option/Option.less +2 -4
  374. package/src/common/baseCard/BaseCard.css +1 -1
  375. package/src/common/bottomSheet/BottomSheet.tsx +2 -2
  376. package/src/common/circle/Circle.tsx +7 -3
  377. package/src/common/hooks/useLayout/useLayout.ts +1 -1
  378. package/src/common/hooks/useScreenSize.ts +1 -1
  379. package/src/common/index.ts +1 -1
  380. package/src/common/responsivePanel/ResponsivePanel.test.js +3 -2
  381. package/src/container/Container.css +3 -3
  382. package/src/criticalBanner/CriticalCommsBanner.css +1 -1
  383. package/src/dateInput/DateInput.css +1 -1
  384. package/src/dateLookup/DateLookup.tsx +1 -1
  385. package/src/decision/Decision.test.tsx +2 -1
  386. package/src/decision/Decision.tsx +2 -1
  387. package/src/definitionList/DefinitionList.css +2 -2
  388. package/src/definitionList/DefinitionList.less +2 -2
  389. package/src/drawer/Drawer.css +2 -2
  390. package/src/drawer/Drawer.less +4 -3
  391. package/src/expressiveMoneyInput/ExpressiveMoneyInput.css +2 -0
  392. package/src/expressiveMoneyInput/ExpressiveMoneyInput.test.story.tsx +43 -0
  393. package/src/expressiveMoneyInput/amountInput/AmountInput.css +2 -0
  394. package/src/expressiveMoneyInput/amountInput/AmountInput.less +2 -0
  395. package/src/expressiveMoneyInput/amountInput/AmountInput.tsx +1 -1
  396. package/src/field/Field.css +19 -3
  397. package/src/field/Field.less +17 -3
  398. package/src/field/Field.messages.ts +8 -0
  399. package/src/field/Field.story.tsx +5 -1
  400. package/src/field/Field.test.tsx +90 -0
  401. package/src/field/Field.tsx +84 -37
  402. package/src/flowNavigation/FlowNavigation.css +1 -1
  403. package/src/flowNavigation/FlowNavigation.less +2 -1
  404. package/src/flowNavigation/FlowNavigation.story.tsx +6 -3
  405. package/src/flowNavigation/FlowNavigation.test.js +1 -1
  406. package/src/flowNavigation/FlowNavigation.tsx +2 -1
  407. package/src/i18n/en.json +1 -0
  408. package/src/index.ts +1 -1
  409. package/src/inputs/Input.css +3 -3
  410. package/src/inputs/SelectInput/Options/SelectInputOptions.css +2 -2
  411. package/src/inputs/SelectInput/SelectInput.css +2 -2
  412. package/src/inputs/SelectInput/SelectInput.tsx +1 -1
  413. package/src/inputs/TextArea.css +3 -3
  414. package/src/inputs/TextArea.story.tsx +97 -0
  415. package/src/inputs/TextArea.test.story.tsx +142 -0
  416. package/src/inputs/TextArea.tsx +7 -2
  417. package/src/inputs/contexts.tsx +18 -1
  418. package/src/logo/Logo.tsx +1 -1
  419. package/src/main.css +350 -402
  420. package/src/modal/Modal.css +7 -20
  421. package/src/modal/Modal.less +7 -19
  422. package/src/modal/Modal.tsx +2 -2
  423. package/src/overlayHeader/OverlayHeader.css +1 -1
  424. package/src/overlayHeader/OverlayHeader.less +3 -2
  425. package/src/popover/Popover.css +3 -3
  426. package/src/popover/Popover.test.tsx +2 -1
  427. package/src/promoCard/PromoCard.css +1 -1
  428. package/src/prompt/ActionPrompt/ActionPrompt.css +1 -1
  429. package/src/prompt/ActionPrompt/ActionPrompt.less +1 -1
  430. package/src/prompt/ActionPrompt/ActionPrompt.test.tsx +37 -6
  431. package/src/prompt/ActionPrompt/ActionPrompt.tsx +3 -2
  432. package/src/prompt/CriticalBanner/CriticalBanner.css +1 -1
  433. package/src/prompt/CriticalBanner/CriticalBanner.less +2 -2
  434. package/src/prompt/PrimitivePrompt/PrimitivePrompt.css +1 -1
  435. package/src/prompt/PrimitivePrompt/PrimitivePrompt.less +1 -1
  436. package/src/select/Select.test.tsx +1 -1
  437. package/src/snackbar/Snackbar.css +2 -2
  438. package/src/statusIcon/StatusIcon.tsx +3 -2
  439. package/src/stepper/Stepper.css +2 -2
  440. package/src/styles/less/accordion.css +4 -4
  441. package/src/styles/less/addons/_display-utilities.less +13 -27
  442. package/src/styles/less/button-groups.css +6 -6
  443. package/src/styles/less/buttons.css +1 -1
  444. package/src/styles/less/circles.css +1 -1
  445. package/src/styles/less/column-layout.css +4 -4
  446. package/src/styles/less/core/_typography-utilities.less +10 -22
  447. package/src/styles/less/core/_typography.less +28 -6
  448. package/src/styles/less/decision.css +4 -4
  449. package/src/styles/less/dropdowns.css +10 -10
  450. package/src/styles/less/droppable.css +8 -8
  451. package/src/styles/less/flex.css +13 -15
  452. package/src/styles/less/flex.less +1 -3
  453. package/src/styles/less/footer.css +3 -3
  454. package/src/styles/less/forms/bootstrap-forms.css +9 -9
  455. package/src/styles/less/forms/bootstrap-forms.less +1 -1
  456. package/src/styles/less/grid.css +19 -19
  457. package/src/styles/less/input-groups.css +12 -12
  458. package/src/styles/less/list-group.css +8 -8
  459. package/src/styles/less/modals.css +6 -6
  460. package/src/styles/less/modals.less +4 -4
  461. package/src/styles/less/navbar.css +62 -62
  462. package/src/styles/less/navbar.less +2 -2
  463. package/src/styles/less/navs.css +2 -2
  464. package/src/styles/less/neptune.bundle.less +1 -0
  465. package/src/styles/less/neptune.css +274 -328
  466. package/src/styles/less/panels.css +9 -9
  467. package/src/styles/less/popovers.css +13 -13
  468. package/src/styles/less/popovers.less +6 -6
  469. package/src/styles/less/select.css +1 -1
  470. package/src/styles/less/sequences.css +6 -6
  471. package/src/styles/less/table.css +6 -6
  472. package/src/styles/less/table.less +1 -1
  473. package/src/styles/less/utilities.css +8 -20
  474. package/src/styles/less/utilities.less +6 -14
  475. package/src/styles/less/wells.css +4 -18
  476. package/src/styles/less/wells.less +3 -5
  477. package/src/styles/props/custom-media.css +1 -11
  478. package/src/styles/variables/legacy-variables.less +4 -47
  479. package/src/table/Table.css +1 -1
  480. package/src/tabs/Tabs.css +2 -2
  481. package/src/textareaWithDisplayFormat/TextareaWithDisplayFormat.story.tsx +1 -0
  482. package/src/typeahead/Typeahead.css +1 -1
  483. package/src/uploadInput/uploadItem/UploadItem.less +2 -2
  484. package/build/common/propsValues/breakpoint.js +0 -12
  485. package/build/common/propsValues/breakpoint.js.map +0 -1
  486. package/build/common/propsValues/breakpoint.mjs +0 -12
  487. package/build/common/propsValues/breakpoint.mjs.map +0 -1
  488. package/build/types/common/propsValues/breakpoint.d.ts +0 -9
  489. package/build/types/common/propsValues/breakpoint.d.ts.map +0 -1
  490. package/src/common/propsValues/breakpoint.ts +0 -8
@@ -1,9 +1,11 @@
1
1
  import { clsx } from 'clsx';
2
- import { useRef, useId } from 'react';
2
+ import { useRef, useId, useState, useCallback } from 'react';
3
+ import { useIntl } from 'react-intl';
4
+ import Body from '../body/Body.mjs';
3
5
  import '../common/theme.mjs';
4
6
  import '../common/direction.mjs';
7
+ import '@transferwise/neptune-tokens';
5
8
  import '../common/propsValues/control.mjs';
6
- import '../common/propsValues/breakpoint.mjs';
7
9
  import '../common/propsValues/size.mjs';
8
10
  import '../common/propsValues/typography.mjs';
9
11
  import '../common/propsValues/width.mjs';
@@ -21,11 +23,10 @@ import '../common/propsValues/markdownNodeType.mjs';
21
23
  import '../common/fileType.mjs';
22
24
  import '@transferwise/formatting';
23
25
  import '@transferwise/icons';
24
- import 'react-intl';
25
26
  import '../common/closeButton/CloseButton.messages.mjs';
26
27
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
28
+ import messages from './Field.messages.mjs';
27
29
  import { InlinePrompt } from '../prompt/InlinePrompt/InlinePrompt.mjs';
28
- import '../body/Body.mjs';
29
30
  import '../button/Button.resolver.mjs';
30
31
  import '../prompt/PrimitivePrompt/PrimitivePrompt.mjs';
31
32
  import '../badge/Badge.mjs';
@@ -37,7 +38,7 @@ import '../primitives/PrimitiveButton/PrimitiveButton.mjs';
37
38
  import '../primitives/PrimitiveAnchor/PrimitiveAnchor.mjs';
38
39
  import '../link/Link.messages.mjs';
39
40
  import '../prompt/common/Expander/Expander.messages.mjs';
40
- import { FieldLabelContextProvider, InputIdContextProvider, InputDescribedByProvider, InputInvalidProvider } from '../inputs/contexts.mjs';
41
+ import { FieldLabelContextProvider, InputIdContextProvider, InputDescribedByProvider, InputInvalidProvider, TextareaCharacterCountProvider } from '../inputs/contexts.mjs';
41
42
  import { Label as LabelNamespace } from '../label/Label.mjs';
42
43
 
43
44
  const Field = ({
@@ -54,6 +55,9 @@ const Field = ({
54
55
  children,
55
56
  ...props
56
57
  }) => {
58
+ const {
59
+ formatMessage
60
+ } = useIntl();
57
61
  const labelRef = useRef(null);
58
62
  const sentiment = props.error ? Sentiment.NEGATIVE : propType;
59
63
  const message = propMessage || props.error;
@@ -63,6 +67,10 @@ const Field = ({
63
67
  const inputId = id !== null ? id ?? fallbackInputId : undefined;
64
68
  const messageId = useId();
65
69
  const descriptionId = useId();
70
+ const textareaCharCounterId = useId();
71
+ const [textareaCharacterCount, setTextareaCharacterCount] = useState(null);
72
+ const handleTextareaCharacterCount = useCallback(state => setTextareaCharacterCount(state), []);
73
+ const isNearCharLimit = textareaCharacterCount != null && textareaCharacterCount.current >= textareaCharacterCount.max * 0.8;
66
74
  /**
67
75
  * form control can have multiple messages to describe it,
68
76
  * e.g the description underneath the label and inline alert
@@ -75,6 +83,9 @@ const Field = ({
75
83
  if (message) {
76
84
  messageIds.push(messageId);
77
85
  }
86
+ if (textareaCharacterCount) {
87
+ messageIds.push(textareaCharCounterId);
88
+ }
78
89
  return messageIds.length > 0 ? messageIds.join(' ') : undefined;
79
90
  }
80
91
  return /*#__PURE__*/jsx(FieldLabelContextProvider, {
@@ -88,37 +99,57 @@ const Field = ({
88
99
  value: ariaDescribedbyByIds(),
89
100
  children: /*#__PURE__*/jsx(InputInvalidProvider, {
90
101
  value: hasError,
91
- children: /*#__PURE__*/jsxs("div", {
92
- className: clsx('np-field form-group d-block', {
93
- 'has-success': sentiment === Sentiment.POSITIVE,
94
- 'has-warning': sentiment === Sentiment.WARNING,
95
- 'has-error': hasError,
96
- 'has-info': sentiment === Sentiment.NEUTRAL
97
- }, className),
98
- children: [label != null ? /*#__PURE__*/jsxs(Fragment, {
99
- children: [/*#__PURE__*/jsx(LabelNamespace, {
100
- ref: labelRef,
101
- id: labelId,
102
- htmlFor: inputId,
103
- children: required ? label : /*#__PURE__*/jsx(LabelNamespace.Optional, {
104
- children: label
105
- })
106
- }), /*#__PURE__*/jsx(LabelNamespace.Description, {
107
- id: descriptionId,
108
- children: description
109
- }), /*#__PURE__*/jsx("div", {
110
- className: "np-field-control",
111
- children: children
102
+ children: /*#__PURE__*/jsx(TextareaCharacterCountProvider, {
103
+ value: handleTextareaCharacterCount,
104
+ children: /*#__PURE__*/jsxs("div", {
105
+ className: clsx('np-field form-group d-block', {
106
+ 'has-success': sentiment === Sentiment.POSITIVE,
107
+ 'has-warning': sentiment === Sentiment.WARNING,
108
+ 'has-error': hasError,
109
+ 'has-info': sentiment === Sentiment.NEUTRAL
110
+ }, className),
111
+ children: [label != null ? /*#__PURE__*/jsxs(Fragment, {
112
+ children: [/*#__PURE__*/jsx(LabelNamespace, {
113
+ ref: labelRef,
114
+ id: labelId,
115
+ htmlFor: inputId,
116
+ children: required ? label : /*#__PURE__*/jsx(LabelNamespace.Optional, {
117
+ children: label
118
+ })
119
+ }), /*#__PURE__*/jsx(LabelNamespace.Description, {
120
+ id: descriptionId,
121
+ children: description
122
+ }), /*#__PURE__*/jsx("div", {
123
+ className: "np-field-control",
124
+ children: children
125
+ })]
126
+ }) : children, (message || textareaCharacterCount) && /*#__PURE__*/jsxs("div", {
127
+ className: "np-field-validation",
128
+ children: [message && /*#__PURE__*/jsx(InlinePrompt, {
129
+ sentiment: sentiment,
130
+ id: messageId,
131
+ mediaLabel: messageIconLabel,
132
+ className: "np-field__prompt",
133
+ loading: messageLoading,
134
+ width: "full",
135
+ children: message
136
+ }), textareaCharacterCount && /*#__PURE__*/jsxs(Body, {
137
+ as: "span",
138
+ id: textareaCharCounterId,
139
+ ...(isNearCharLimit ? {
140
+ role: 'status',
141
+ 'aria-live': 'polite',
142
+ 'aria-atomic': 'true'
143
+ } : {}),
144
+ "aria-label": formatMessage(messages.characterCount, {
145
+ current: textareaCharacterCount.current,
146
+ max: textareaCharacterCount.max
147
+ }),
148
+ className: "np-field-textarea-char-counter",
149
+ children: [textareaCharacterCount.current, "/", textareaCharacterCount.max]
150
+ })]
112
151
  })]
113
- }) : children, message && /*#__PURE__*/jsx(InlinePrompt, {
114
- sentiment: sentiment,
115
- id: messageId,
116
- mediaLabel: messageIconLabel,
117
- className: "np-field__prompt",
118
- loading: messageLoading,
119
- width: "full",
120
- children: message
121
- })]
152
+ })
122
153
  })
123
154
  })
124
155
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Field.mjs","sources":["../../src/field/Field.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useId, useRef } from 'react';\n\nimport { Sentiment } from '../common';\nimport { InlinePrompt, type InlinePromptProps } from '../prompt';\nimport {\n FieldLabelContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n} from '../inputs/contexts';\nimport { Label } from '../label';\n\nexport type FieldProps = {\n /** `null` disables auto-generating the `id` attribute, falling back to nesting-based label association over setting `htmlFor` explicitly. */\n id?: string | null;\n /** Should be specified unless the wrapped control has its own labeling mechanism, e.g. `Checkbox`. */\n label?: React.ReactNode;\n /** @default true */\n required?: boolean;\n /** @deprecated Use `description` prop instead. */\n hint?: React.ReactNode;\n message?: React.ReactNode;\n /**\n * Override for the [InlinePrompt icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)\n * announced by the screen readers\n * */\n messageIconLabel?: string;\n /**\n * If true, shows a loading spinner in place of the message icon of the InlinePrompt\n * @default false\n */\n messageLoading?: boolean;\n description?: React.ReactNode;\n /** @deprecated Use `message` and `type={Sentiment.NEGATIVE}` prop instead. */\n error?: React.ReactNode;\n /** @default Sentiment.NEUTRAL */\n sentiment?: InlinePromptProps['sentiment'];\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const Field = ({\n id,\n label,\n required = true,\n message: propMessage,\n messageIconLabel,\n messageLoading,\n hint,\n description = hint,\n sentiment: propType = Sentiment.NEUTRAL,\n className,\n children,\n ...props\n}: FieldProps) => {\n const labelRef = useRef<HTMLLabelElement>(null);\n const sentiment = props.error ? Sentiment.NEGATIVE : propType;\n const message = propMessage || props.error;\n const hasError = sentiment === Sentiment.NEGATIVE;\n\n const labelId = useId();\n\n const fallbackInputId = useId();\n const inputId = id !== null ? (id ?? fallbackInputId) : undefined;\n\n const messageId = useId();\n const descriptionId = useId();\n\n /**\n * form control can have multiple messages to describe it,\n * e.g the description underneath the label and inline alert\n */\n function ariaDescribedbyByIds() {\n const messageIds = [];\n if (description) {\n messageIds.push(descriptionId);\n }\n if (message) {\n messageIds.push(messageId);\n }\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n return (\n <FieldLabelContextProvider value={{ id: labelId, ref: labelRef }}>\n <InputIdContextProvider value={inputId}>\n <InputDescribedByProvider value={ariaDescribedbyByIds()}>\n <InputInvalidProvider value={hasError}>\n <div\n className={clsx(\n 'np-field form-group d-block',\n {\n 'has-success': sentiment === Sentiment.POSITIVE,\n 'has-warning': sentiment === Sentiment.WARNING,\n 'has-error': hasError,\n 'has-info': sentiment === Sentiment.NEUTRAL,\n },\n className,\n )}\n >\n {label != null ? (\n <>\n <Label ref={labelRef} id={labelId} htmlFor={inputId}>\n {required ? label : <Label.Optional>{label}</Label.Optional>}\n </Label>\n <Label.Description id={descriptionId}>{description}</Label.Description>\n <div className=\"np-field-control\">{children}</div>\n </>\n ) : (\n children\n )}\n\n {message && (\n <InlinePrompt\n sentiment={sentiment}\n id={messageId}\n mediaLabel={messageIconLabel}\n className=\"np-field__prompt\"\n loading={messageLoading}\n width=\"full\"\n >\n {message}\n </InlinePrompt>\n )}\n </div>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelContextProvider>\n );\n};\n"],"names":["Field","id","label","required","message","propMessage","messageIconLabel","messageLoading","hint","description","sentiment","propType","Sentiment","NEUTRAL","className","children","props","labelRef","useRef","error","NEGATIVE","hasError","labelId","useId","fallbackInputId","inputId","undefined","messageId","descriptionId","ariaDescribedbyByIds","messageIds","push","length","join","_jsx","FieldLabelContextProvider","value","ref","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider","_jsxs","clsx","POSITIVE","WARNING","_Fragment","Label","htmlFor","Optional","Description","InlinePrompt","mediaLabel","loading","width"],"mappings":"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"}
1
+ {"version":3,"file":"Field.mjs","sources":["../../src/field/Field.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useCallback, useId, useRef, useState } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Body from '../body';\nimport { Sentiment } from '../common';\nimport messages from './Field.messages';\nimport { InlinePrompt, type InlinePromptProps } from '../prompt';\nimport {\n TextareaCharacterCountProvider,\n type TextareaCharacterCountState,\n FieldLabelContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n} from '../inputs/contexts';\nimport { Label } from '../label';\n\nexport type FieldProps = {\n /** `null` disables auto-generating the `id` attribute, falling back to nesting-based label association over setting `htmlFor` explicitly. */\n id?: string | null;\n /** Should be specified unless the wrapped control has its own labeling mechanism, e.g. `Checkbox`. */\n label?: React.ReactNode;\n /** @default true */\n required?: boolean;\n /** @deprecated Use `description` prop instead. */\n hint?: React.ReactNode;\n message?: React.ReactNode;\n /**\n * Override for the [InlinePrompt icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)\n * announced by the screen readers\n * */\n messageIconLabel?: string;\n /**\n * If true, shows a loading spinner in place of the message icon of the InlinePrompt\n * @default false\n */\n messageLoading?: boolean;\n description?: React.ReactNode;\n /** @deprecated Use `message` and `type={Sentiment.NEGATIVE}` prop instead. */\n error?: React.ReactNode;\n /** @default Sentiment.NEUTRAL */\n sentiment?: InlinePromptProps['sentiment'];\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const Field = ({\n id,\n label,\n required = true,\n message: propMessage,\n messageIconLabel,\n messageLoading,\n hint,\n description = hint,\n sentiment: propType = Sentiment.NEUTRAL,\n className,\n children,\n ...props\n}: FieldProps) => {\n const { formatMessage } = useIntl();\n const labelRef = useRef<HTMLLabelElement>(null);\n const sentiment = props.error ? Sentiment.NEGATIVE : propType;\n const message = propMessage || props.error;\n const hasError = sentiment === Sentiment.NEGATIVE;\n\n const labelId = useId();\n\n const fallbackInputId = useId();\n const inputId = id !== null ? (id ?? fallbackInputId) : undefined;\n\n const messageId = useId();\n const descriptionId = useId();\n const textareaCharCounterId = useId();\n\n const [textareaCharacterCount, setTextareaCharacterCount] =\n useState<TextareaCharacterCountState>(null);\n const handleTextareaCharacterCount = useCallback(\n (state: TextareaCharacterCountState) => setTextareaCharacterCount(state),\n [],\n );\n\n const isNearCharLimit =\n textareaCharacterCount != null &&\n textareaCharacterCount.current >= textareaCharacterCount.max * 0.8;\n\n /**\n * form control can have multiple messages to describe it,\n * e.g the description underneath the label and inline alert\n */\n function ariaDescribedbyByIds() {\n const messageIds = [];\n if (description) {\n messageIds.push(descriptionId);\n }\n if (message) {\n messageIds.push(messageId);\n }\n if (textareaCharacterCount) {\n messageIds.push(textareaCharCounterId);\n }\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n return (\n <FieldLabelContextProvider value={{ id: labelId, ref: labelRef }}>\n <InputIdContextProvider value={inputId}>\n <InputDescribedByProvider value={ariaDescribedbyByIds()}>\n <InputInvalidProvider value={hasError}>\n <TextareaCharacterCountProvider value={handleTextareaCharacterCount}>\n <div\n className={clsx(\n 'np-field form-group d-block',\n {\n 'has-success': sentiment === Sentiment.POSITIVE,\n 'has-warning': sentiment === Sentiment.WARNING,\n 'has-error': hasError,\n 'has-info': sentiment === Sentiment.NEUTRAL,\n },\n className,\n )}\n >\n {label != null ? (\n <>\n <Label ref={labelRef} id={labelId} htmlFor={inputId}>\n {required ? label : <Label.Optional>{label}</Label.Optional>}\n </Label>\n <Label.Description id={descriptionId}>{description}</Label.Description>\n <div className=\"np-field-control\">{children}</div>\n </>\n ) : (\n children\n )}\n\n {(message || textareaCharacterCount) && (\n <div className=\"np-field-validation\">\n {message && (\n <InlinePrompt\n sentiment={sentiment}\n id={messageId}\n mediaLabel={messageIconLabel}\n className=\"np-field__prompt\"\n loading={messageLoading}\n width=\"full\"\n >\n {message}\n </InlinePrompt>\n )}\n {textareaCharacterCount && (\n <Body\n as=\"span\"\n id={textareaCharCounterId}\n {...(isNearCharLimit\n ? {\n role: 'status' as const,\n 'aria-live': 'polite' as const,\n 'aria-atomic': 'true' as const,\n }\n : {})}\n aria-label={formatMessage(messages.characterCount, {\n current: textareaCharacterCount.current,\n max: textareaCharacterCount.max,\n })}\n className=\"np-field-textarea-char-counter\"\n >\n {textareaCharacterCount.current}/{textareaCharacterCount.max}\n </Body>\n )}\n </div>\n )}\n </div>\n </TextareaCharacterCountProvider>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelContextProvider>\n );\n};\n"],"names":["Field","id","label","required","message","propMessage","messageIconLabel","messageLoading","hint","description","sentiment","propType","Sentiment","NEUTRAL","className","children","props","formatMessage","useIntl","labelRef","useRef","error","NEGATIVE","hasError","labelId","useId","fallbackInputId","inputId","undefined","messageId","descriptionId","textareaCharCounterId","textareaCharacterCount","setTextareaCharacterCount","useState","handleTextareaCharacterCount","useCallback","state","isNearCharLimit","current","max","ariaDescribedbyByIds","messageIds","push","length","join","_jsx","FieldLabelContextProvider","value","ref","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider","TextareaCharacterCountProvider","_jsxs","clsx","POSITIVE","WARNING","_Fragment","Label","htmlFor","Optional","Description","InlinePrompt","mediaLabel","loading","width","Body","as","role","messages","characterCount"],"mappings":"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"}
@@ -4,10 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var clsx = require('clsx');
6
6
  var reactIntl = require('react-intl');
7
+ var neptuneTokens = require('@transferwise/neptune-tokens');
7
8
  require('../common/theme.js');
8
9
  require('../common/direction.js');
9
10
  require('../common/propsValues/control.js');
10
- var breakpoint = 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');
@@ -50,8 +50,8 @@ const FlowNavigation = ({
50
50
  size: "lg",
51
51
  onClick: onClose
52
52
  });
53
- const screenSm = useScreenSize.useScreenSize(breakpoint.Breakpoint.SMALL);
54
- const screenLg = useScreenSize.useScreenSize(breakpoint.Breakpoint.LARGE);
53
+ const screenSm = useScreenSize.useScreenSize(neptuneTokens.Breakpoint.SMALL);
54
+ const screenLg = useScreenSize.useScreenSize(neptuneTokens.Breakpoint.LARGE);
55
55
  const newAvatar = done ? null : avatar;
56
56
  const displayGoBack = onGoBack != null && activeStep > 0;
57
57
  return /*#__PURE__*/jsxRuntime.jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"FlowNavigation.js","sources":["../../src/flowNavigation/FlowNavigation.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useIntl } from 'react-intl';\n\nimport { Breakpoint, Layout } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader/FlowHeader';\nimport Logo from '../logo';\nimport Stepper, { type Step } from '../stepper/Stepper';\n\nimport { useScreenSize } from '../common/hooks/useScreenSize';\nimport messages from './FlowNavigation.messages';\nimport AnimatedLabel from './animatedLabel';\nimport IconButton from '../iconButton';\nimport { ArrowLeft } from '@transferwise/icons';\n\nexport interface FlowNavigationProps {\n /** @default 0 */\n activeStep?: number;\n avatar?: React.ReactNode;\n /** @default <Logo /> */\n logo?: React.ReactNode;\n /** @default false */\n done?: boolean;\n /** Called when the close button is clicked. If not provided the close button won't show */\n onClose?: () => void;\n /** Called when the back button is clicked. If not provided the back button won't show. The back button only shows on small screens */\n onGoBack?: () => void;\n /** Steps to be displayed in stepper. If you don't need the stepper, please use OverlayHeader instead */\n steps: readonly Step[];\n}\n\nconst FlowNavigation = ({\n activeStep = 0,\n avatar,\n logo = <Logo />,\n done = false,\n onClose,\n onGoBack,\n steps,\n}: FlowNavigationProps) => {\n const intl = useIntl();\n\n const closeButton = onClose != null && <CloseButton size=\"lg\" onClick={onClose} />;\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const screenLg = useScreenSize(Breakpoint.LARGE);\n\n const newAvatar = done ? null : avatar;\n\n const displayGoBack = onGoBack != null && activeStep > 0;\n\n return (\n <div\n className={clsx('np-flow-navigation d-flex align-items-center justify-content-center p-y-3', {\n 'np-flow-navigation--border-bottom': !done,\n })}\n >\n <FlowHeader\n className={clsx(\n 'np-flow-navigation__content p-x-3',\n screenSm == null\n ? 'np-flow-navigation--hidden'\n : {\n 'np-flow-navigation--xs-max': !screenSm,\n // Size switches on parent container which may or may not have the same size as the window.\n 'np-flow-navigation--sm': screenSm,\n 'np-flow-navigation--lg': screenLg,\n },\n )}\n leftContent={\n <>\n {!screenSm && displayGoBack ? (\n <IconButton\n size={40}\n priority=\"tertiary\"\n type=\"default\"\n aria-label={intl.formatMessage(messages.back)}\n onClick={onGoBack}\n >\n <ArrowLeft />\n </IconButton>\n ) : (\n <div className=\"np-flow-header__left\">{logo}</div>\n )}\n {!screenSm && !done && (\n <AnimatedLabel className=\"m-x-1\" steps={steps} activeLabel={activeStep} />\n )}\n </>\n }\n rightContent={\n <div className=\"np-flow-header__right d-flex align-items-center justify-content-end order-2--lg\">\n {newAvatar}\n {newAvatar && closeButton && <span className=\"m-x-1\" />}\n {closeButton}\n </div>\n }\n bottomContent={\n !done && steps.length > 0 ? (\n <Stepper\n activeStep={activeStep}\n steps={steps}\n className={clsx('np-flow-navigation__stepper')}\n />\n ) : null\n }\n layout={!screenLg ? Layout.VERTICAL : Layout.HORIZONTAL}\n />\n </div>\n );\n};\n\nexport default FlowNavigation;\n"],"names":["FlowNavigation","activeStep","avatar","logo","_jsx","Logo","done","onClose","onGoBack","steps","intl","useIntl","closeButton","CloseButton","size","onClick","screenSm","useScreenSize","Breakpoint","SMALL","screenLg","LARGE","newAvatar","displayGoBack","className","clsx","children","FlowHeader","leftContent","_jsxs","_Fragment","IconButton","priority","type","formatMessage","messages","back","ArrowLeft","AnimatedLabel","activeLabel","rightContent","bottomContent","length","Stepper","layout","Layout","VERTICAL","HORIZONTAL"],"mappings":"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"}
1
+ {"version":3,"file":"FlowNavigation.js","sources":["../../src/flowNavigation/FlowNavigation.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useIntl } from 'react-intl';\nimport { Breakpoint } from '@transferwise/neptune-tokens';\n\nimport { Layout } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader/FlowHeader';\nimport Logo from '../logo';\nimport Stepper, { type Step } from '../stepper/Stepper';\n\nimport { useScreenSize } from '../common/hooks/useScreenSize';\nimport messages from './FlowNavigation.messages';\nimport AnimatedLabel from './animatedLabel';\nimport IconButton from '../iconButton';\nimport { ArrowLeft } from '@transferwise/icons';\n\nexport interface FlowNavigationProps {\n /** @default 0 */\n activeStep?: number;\n avatar?: React.ReactNode;\n /** @default <Logo /> */\n logo?: React.ReactNode;\n /** @default false */\n done?: boolean;\n /** Called when the close button is clicked. If not provided the close button won't show */\n onClose?: () => void;\n /** Called when the back button is clicked. If not provided the back button won't show. The back button only shows on small screens */\n onGoBack?: () => void;\n /** Steps to be displayed in stepper. If you don't need the stepper, please use OverlayHeader instead */\n steps: readonly Step[];\n}\n\nconst FlowNavigation = ({\n activeStep = 0,\n avatar,\n logo = <Logo />,\n done = false,\n onClose,\n onGoBack,\n steps,\n}: FlowNavigationProps) => {\n const intl = useIntl();\n\n const closeButton = onClose != null && <CloseButton size=\"lg\" onClick={onClose} />;\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const screenLg = useScreenSize(Breakpoint.LARGE);\n\n const newAvatar = done ? null : avatar;\n\n const displayGoBack = onGoBack != null && activeStep > 0;\n\n return (\n <div\n className={clsx('np-flow-navigation d-flex align-items-center justify-content-center p-y-3', {\n 'np-flow-navigation--border-bottom': !done,\n })}\n >\n <FlowHeader\n className={clsx(\n 'np-flow-navigation__content p-x-3',\n screenSm == null\n ? 'np-flow-navigation--hidden'\n : {\n 'np-flow-navigation--xs-max': !screenSm,\n // Size switches on parent container which may or may not have the same size as the window.\n 'np-flow-navigation--sm': screenSm,\n 'np-flow-navigation--lg': screenLg,\n },\n )}\n leftContent={\n <>\n {!screenSm && displayGoBack ? (\n <IconButton\n size={40}\n priority=\"tertiary\"\n type=\"default\"\n aria-label={intl.formatMessage(messages.back)}\n onClick={onGoBack}\n >\n <ArrowLeft />\n </IconButton>\n ) : (\n <div className=\"np-flow-header__left\">{logo}</div>\n )}\n {!screenSm && !done && (\n <AnimatedLabel className=\"m-x-1\" steps={steps} activeLabel={activeStep} />\n )}\n </>\n }\n rightContent={\n <div className=\"np-flow-header__right d-flex align-items-center justify-content-end order-2--lg\">\n {newAvatar}\n {newAvatar && closeButton && <span className=\"m-x-1\" />}\n {closeButton}\n </div>\n }\n bottomContent={\n !done && steps.length > 0 ? (\n <Stepper\n activeStep={activeStep}\n steps={steps}\n className={clsx('np-flow-navigation__stepper')}\n />\n ) : null\n }\n layout={!screenLg ? Layout.VERTICAL : Layout.HORIZONTAL}\n />\n </div>\n );\n};\n\nexport default FlowNavigation;\n"],"names":["FlowNavigation","activeStep","avatar","logo","_jsx","Logo","done","onClose","onGoBack","steps","intl","useIntl","closeButton","CloseButton","size","onClick","screenSm","useScreenSize","Breakpoint","SMALL","screenLg","LARGE","newAvatar","displayGoBack","className","clsx","children","FlowHeader","leftContent","_jsxs","_Fragment","IconButton","priority","type","formatMessage","messages","back","ArrowLeft","AnimatedLabel","activeLabel","rightContent","bottomContent","length","Stepper","layout","Layout","VERTICAL","HORIZONTAL"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { clsx } from 'clsx';
2
2
  import { useIntl } from 'react-intl';
3
+ import { Breakpoint } from '@transferwise/neptune-tokens';
3
4
  import '../common/theme.mjs';
4
5
  import '../common/direction.mjs';
5
6
  import '../common/propsValues/control.mjs';
6
- import { Breakpoint } from '../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';
@@ -1 +1 @@
1
- {"version":3,"file":"FlowNavigation.mjs","sources":["../../src/flowNavigation/FlowNavigation.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useIntl } from 'react-intl';\n\nimport { Breakpoint, Layout } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader/FlowHeader';\nimport Logo from '../logo';\nimport Stepper, { type Step } from '../stepper/Stepper';\n\nimport { useScreenSize } from '../common/hooks/useScreenSize';\nimport messages from './FlowNavigation.messages';\nimport AnimatedLabel from './animatedLabel';\nimport IconButton from '../iconButton';\nimport { ArrowLeft } from '@transferwise/icons';\n\nexport interface FlowNavigationProps {\n /** @default 0 */\n activeStep?: number;\n avatar?: React.ReactNode;\n /** @default <Logo /> */\n logo?: React.ReactNode;\n /** @default false */\n done?: boolean;\n /** Called when the close button is clicked. If not provided the close button won't show */\n onClose?: () => void;\n /** Called when the back button is clicked. If not provided the back button won't show. The back button only shows on small screens */\n onGoBack?: () => void;\n /** Steps to be displayed in stepper. If you don't need the stepper, please use OverlayHeader instead */\n steps: readonly Step[];\n}\n\nconst FlowNavigation = ({\n activeStep = 0,\n avatar,\n logo = <Logo />,\n done = false,\n onClose,\n onGoBack,\n steps,\n}: FlowNavigationProps) => {\n const intl = useIntl();\n\n const closeButton = onClose != null && <CloseButton size=\"lg\" onClick={onClose} />;\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const screenLg = useScreenSize(Breakpoint.LARGE);\n\n const newAvatar = done ? null : avatar;\n\n const displayGoBack = onGoBack != null && activeStep > 0;\n\n return (\n <div\n className={clsx('np-flow-navigation d-flex align-items-center justify-content-center p-y-3', {\n 'np-flow-navigation--border-bottom': !done,\n })}\n >\n <FlowHeader\n className={clsx(\n 'np-flow-navigation__content p-x-3',\n screenSm == null\n ? 'np-flow-navigation--hidden'\n : {\n 'np-flow-navigation--xs-max': !screenSm,\n // Size switches on parent container which may or may not have the same size as the window.\n 'np-flow-navigation--sm': screenSm,\n 'np-flow-navigation--lg': screenLg,\n },\n )}\n leftContent={\n <>\n {!screenSm && displayGoBack ? (\n <IconButton\n size={40}\n priority=\"tertiary\"\n type=\"default\"\n aria-label={intl.formatMessage(messages.back)}\n onClick={onGoBack}\n >\n <ArrowLeft />\n </IconButton>\n ) : (\n <div className=\"np-flow-header__left\">{logo}</div>\n )}\n {!screenSm && !done && (\n <AnimatedLabel className=\"m-x-1\" steps={steps} activeLabel={activeStep} />\n )}\n </>\n }\n rightContent={\n <div className=\"np-flow-header__right d-flex align-items-center justify-content-end order-2--lg\">\n {newAvatar}\n {newAvatar && closeButton && <span className=\"m-x-1\" />}\n {closeButton}\n </div>\n }\n bottomContent={\n !done && steps.length > 0 ? (\n <Stepper\n activeStep={activeStep}\n steps={steps}\n className={clsx('np-flow-navigation__stepper')}\n />\n ) : null\n }\n layout={!screenLg ? Layout.VERTICAL : Layout.HORIZONTAL}\n />\n </div>\n );\n};\n\nexport default FlowNavigation;\n"],"names":["FlowNavigation","activeStep","avatar","logo","_jsx","Logo","done","onClose","onGoBack","steps","intl","useIntl","closeButton","CloseButton","size","onClick","screenSm","useScreenSize","Breakpoint","SMALL","screenLg","LARGE","newAvatar","displayGoBack","className","clsx","children","FlowHeader","leftContent","_jsxs","_Fragment","IconButton","priority","type","formatMessage","messages","back","ArrowLeft","AnimatedLabel","activeLabel","rightContent","bottomContent","length","Stepper","layout","Layout","VERTICAL","HORIZONTAL"],"mappings":"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"}
1
+ {"version":3,"file":"FlowNavigation.mjs","sources":["../../src/flowNavigation/FlowNavigation.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useIntl } from 'react-intl';\nimport { Breakpoint } from '@transferwise/neptune-tokens';\n\nimport { Layout } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader/FlowHeader';\nimport Logo from '../logo';\nimport Stepper, { type Step } from '../stepper/Stepper';\n\nimport { useScreenSize } from '../common/hooks/useScreenSize';\nimport messages from './FlowNavigation.messages';\nimport AnimatedLabel from './animatedLabel';\nimport IconButton from '../iconButton';\nimport { ArrowLeft } from '@transferwise/icons';\n\nexport interface FlowNavigationProps {\n /** @default 0 */\n activeStep?: number;\n avatar?: React.ReactNode;\n /** @default <Logo /> */\n logo?: React.ReactNode;\n /** @default false */\n done?: boolean;\n /** Called when the close button is clicked. If not provided the close button won't show */\n onClose?: () => void;\n /** Called when the back button is clicked. If not provided the back button won't show. The back button only shows on small screens */\n onGoBack?: () => void;\n /** Steps to be displayed in stepper. If you don't need the stepper, please use OverlayHeader instead */\n steps: readonly Step[];\n}\n\nconst FlowNavigation = ({\n activeStep = 0,\n avatar,\n logo = <Logo />,\n done = false,\n onClose,\n onGoBack,\n steps,\n}: FlowNavigationProps) => {\n const intl = useIntl();\n\n const closeButton = onClose != null && <CloseButton size=\"lg\" onClick={onClose} />;\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const screenLg = useScreenSize(Breakpoint.LARGE);\n\n const newAvatar = done ? null : avatar;\n\n const displayGoBack = onGoBack != null && activeStep > 0;\n\n return (\n <div\n className={clsx('np-flow-navigation d-flex align-items-center justify-content-center p-y-3', {\n 'np-flow-navigation--border-bottom': !done,\n })}\n >\n <FlowHeader\n className={clsx(\n 'np-flow-navigation__content p-x-3',\n screenSm == null\n ? 'np-flow-navigation--hidden'\n : {\n 'np-flow-navigation--xs-max': !screenSm,\n // Size switches on parent container which may or may not have the same size as the window.\n 'np-flow-navigation--sm': screenSm,\n 'np-flow-navigation--lg': screenLg,\n },\n )}\n leftContent={\n <>\n {!screenSm && displayGoBack ? (\n <IconButton\n size={40}\n priority=\"tertiary\"\n type=\"default\"\n aria-label={intl.formatMessage(messages.back)}\n onClick={onGoBack}\n >\n <ArrowLeft />\n </IconButton>\n ) : (\n <div className=\"np-flow-header__left\">{logo}</div>\n )}\n {!screenSm && !done && (\n <AnimatedLabel className=\"m-x-1\" steps={steps} activeLabel={activeStep} />\n )}\n </>\n }\n rightContent={\n <div className=\"np-flow-header__right d-flex align-items-center justify-content-end order-2--lg\">\n {newAvatar}\n {newAvatar && closeButton && <span className=\"m-x-1\" />}\n {closeButton}\n </div>\n }\n bottomContent={\n !done && steps.length > 0 ? (\n <Stepper\n activeStep={activeStep}\n steps={steps}\n className={clsx('np-flow-navigation__stepper')}\n />\n ) : null\n }\n layout={!screenLg ? Layout.VERTICAL : Layout.HORIZONTAL}\n />\n </div>\n );\n};\n\nexport default FlowNavigation;\n"],"names":["FlowNavigation","activeStep","avatar","logo","_jsx","Logo","done","onClose","onGoBack","steps","intl","useIntl","closeButton","CloseButton","size","onClick","screenSm","useScreenSize","Breakpoint","SMALL","screenLg","LARGE","newAvatar","displayGoBack","className","clsx","children","FlowHeader","leftContent","_jsxs","_Fragment","IconButton","priority","type","formatMessage","messages","back","ArrowLeft","AnimatedLabel","activeLabel","rightContent","bottomContent","length","Stepper","layout","Layout","VERTICAL","HORIZONTAL"],"mappings":"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"}
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var clsx = require('clsx');
6
6
  require('../common/theme.js');
7
7
  require('../common/direction.js');
8
+ require('@transferwise/neptune-tokens');
8
9
  require('../common/propsValues/control.js');
9
- require('../common/propsValues/breakpoint.js');
10
10
  require('../common/propsValues/size.js');
11
11
  var typography = require('../common/propsValues/typography.js');
12
12
  require('../common/propsValues/width.js');
@@ -1,8 +1,8 @@
1
1
  import { clsx } from 'clsx';
2
2
  import '../common/theme.mjs';
3
3
  import '../common/direction.mjs';
4
+ import '@transferwise/neptune-tokens';
4
5
  import '../common/propsValues/control.mjs';
5
- import '../common/propsValues/breakpoint.mjs';
6
6
  import '../common/propsValues/size.mjs';
7
7
  import { Typography } from '../common/propsValues/typography.mjs';
8
8
  import '../common/propsValues/width.mjs';
@@ -20,6 +20,7 @@
20
20
  "neptune.Expander.expandAriaLabel": "Expand",
21
21
  "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Type a currency / country",
22
22
  "neptune.ExpressiveMoneyInput.currency.select.currency": "Select currency",
23
+ "neptune.Field.characterCount": "{current} of {max} characters used",
23
24
  "neptune.FlowNavigation.back": "back to previous step",
24
25
  "neptune.Info.ariaLabel": "More information",
25
26
  "neptune.Label.optional": "(Optional)",
@@ -24,6 +24,7 @@ var en = {
24
24
  "neptune.Expander.expandAriaLabel": "Expand",
25
25
  "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Type a currency / country",
26
26
  "neptune.ExpressiveMoneyInput.currency.select.currency": "Select currency",
27
+ "neptune.Field.characterCount": "{current} of {max} characters used",
27
28
  "neptune.FlowNavigation.back": "back to previous step",
28
29
  "neptune.Info.ariaLabel": "More information",
29
30
  "neptune.Label.optional": "(Optional)",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -20,6 +20,7 @@ var en = {
20
20
  "neptune.Expander.expandAriaLabel": "Expand",
21
21
  "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Type a currency / country",
22
22
  "neptune.ExpressiveMoneyInput.currency.select.currency": "Select currency",
23
+ "neptune.Field.characterCount": "{current} of {max} characters used",
23
24
  "neptune.FlowNavigation.back": "back to previous step",
24
25
  "neptune.Info.ariaLabel": "More information",
25
26
  "neptune.Label.optional": "(Optional)",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -7,7 +7,7 @@ var React = require('react');
7
7
  require('@transferwise/neptune-validation');
8
8
  require('../provider/direction/DirectionProvider.js');
9
9
  var useHasIntersected = require('../common/hooks/useHasIntersected/useHasIntersected.js');
10
- require('../common/propsValues/breakpoint.js');
10
+ require('@transferwise/neptune-tokens');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
 
13
13
  const Image = ({
@@ -3,7 +3,7 @@ import { useRef, useCallback } from 'react';
3
3
  import '@transferwise/neptune-validation';
4
4
  import '../provider/direction/DirectionProvider.mjs';
5
5
  import { useHasIntersected } from '../common/hooks/useHasIntersected/useHasIntersected.mjs';
6
- import '../common/propsValues/breakpoint.mjs';
6
+ import '@transferwise/neptune-tokens';
7
7
  import { jsx } from 'react/jsx-runtime';
8
8
 
9
9
  const Image = ({
package/build/index.js CHANGED
@@ -16,7 +16,7 @@ require('@wise/art');
16
16
  var StatusIcon = require('./statusIcon/StatusIcon.js');
17
17
  require('react');
18
18
  require('clsx');
19
- var breakpoint = require('./common/propsValues/breakpoint.js');
19
+ var neptuneTokens = require('@transferwise/neptune-tokens');
20
20
  require('react/jsx-runtime');
21
21
  var Image = require('./image/Image.js');
22
22
  var Body = require('./body/Body.js');
@@ -174,7 +174,7 @@ exports.Badge = Badge.default;
174
174
  exports.StatusIcon = StatusIcon.default;
175
175
  Object.defineProperty(exports, "Breakpoint", {
176
176
  enumerable: true,
177
- get: function () { return breakpoint.Breakpoint; }
177
+ get: function () { return neptuneTokens.Breakpoint; }
178
178
  });
179
179
  exports.Image = Image.default;
180
180
  exports.Body = Body.default;
package/build/index.mjs CHANGED
@@ -14,7 +14,7 @@ import '@wise/art';
14
14
  export { default as StatusIcon } from './statusIcon/StatusIcon.mjs';
15
15
  import 'react';
16
16
  import 'clsx';
17
- export { Breakpoint } from './common/propsValues/breakpoint.mjs';
17
+ export { Breakpoint } from '@transferwise/neptune-tokens';
18
18
  import 'react/jsx-runtime';
19
19
  export { default as Image } from './image/Image.mjs';
20
20
  export { default as Body } from './body/Body.mjs';
@@ -8,8 +8,8 @@ var React = require('react');
8
8
  var reactIntl = require('react-intl');
9
9
  require('../common/theme.js');
10
10
  require('../common/direction.js');
11
+ require('@transferwise/neptune-tokens');
11
12
  require('../common/propsValues/control.js');
12
- require('../common/propsValues/breakpoint.js');
13
13
  var size = require('../common/propsValues/size.js');
14
14
  require('../common/propsValues/typography.js');
15
15
  require('../common/propsValues/width.js');
@@ -4,8 +4,8 @@ import { useState } from 'react';
4
4
  import { useIntl } from 'react-intl';
5
5
  import '../common/theme.mjs';
6
6
  import '../common/direction.mjs';
7
+ import '@transferwise/neptune-tokens';
7
8
  import '../common/propsValues/control.mjs';
8
- import '../common/propsValues/breakpoint.mjs';
9
9
  import { Size } from '../common/propsValues/size.mjs';
10
10
  import '../common/propsValues/typography.mjs';
11
11
  import '../common/propsValues/width.mjs';
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var clsx = require('clsx');
6
6
  require('../common/theme.js');
7
7
  require('../common/direction.js');
8
+ require('@transferwise/neptune-tokens');
8
9
  require('../common/propsValues/control.js');
9
- require('../common/propsValues/breakpoint.js');
10
10
  var size = require('../common/propsValues/size.js');
11
11
  require('../common/propsValues/typography.js');
12
12
  require('../common/propsValues/width.js');
@@ -1,8 +1,8 @@
1
1
  import { clsx } from 'clsx';
2
2
  import '../common/theme.mjs';
3
3
  import '../common/direction.mjs';
4
+ import '@transferwise/neptune-tokens';
4
5
  import '../common/propsValues/control.mjs';
5
- import '../common/propsValues/breakpoint.mjs';
6
6
  import { Size } from '../common/propsValues/size.mjs';
7
7
  import '../common/propsValues/typography.mjs';
8
8
  import '../common/propsValues/width.mjs';
@@ -4,8 +4,8 @@ var icons = require('@transferwise/icons');
4
4
  var React = require('react');
5
5
  require('../common/theme.js');
6
6
  require('../common/direction.js');
7
+ require('@transferwise/neptune-tokens');
7
8
  require('../common/propsValues/control.js');
8
- require('../common/propsValues/breakpoint.js');
9
9
  var size = require('../common/propsValues/size.js');
10
10
  require('../common/propsValues/typography.js');
11
11
  require('../common/propsValues/width.js');
@@ -2,8 +2,8 @@ import { Search } from '@transferwise/icons';
2
2
  import { forwardRef } from 'react';
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 { Size } from '../common/propsValues/size.mjs';
8
8
  import '../common/propsValues/typography.mjs';
9
9
  import '../common/propsValues/width.mjs';
@@ -3,8 +3,8 @@
3
3
  var mergeProps = require('merge-props');
4
4
  var React = require('react');
5
5
  var react = require('@headlessui/react');
6
+ var neptuneTokens = require('@transferwise/neptune-tokens');
6
7
  var useScreenSize = require('../../common/hooks/useScreenSize.js');
7
- var breakpoint = require('../../common/propsValues/breakpoint.js');
8
8
  var useEffectEvent = require('../../common/hooks/useEffectEvent.js');
9
9
  var contexts = require('../contexts.js');
10
10
  var SelectInputBottomSheet = require('./BottomSheet/SelectInputBottomSheet.js');
@@ -88,7 +88,7 @@ function SelectInput({
88
88
  const searchInputRef = React.useRef(null);
89
89
  const listboxRef = React.useRef(null);
90
90
  const controllerRef = filterable ? searchInputRef : listboxRef;
91
- const screenSm = useScreenSize.useScreenSize(breakpoint.Breakpoint.SMALL);
91
+ const screenSm = useScreenSize.useScreenSize(neptuneTokens.Breakpoint.SMALL);
92
92
  const OptionsOverlay = screenSm ? SelectInputPopover.SelectInputPopover : SelectInputBottomSheet.SelectInputBottomSheet;
93
93
  /**
94
94
  * Attempts to resolve the `listbox` label
@@ -1 +1 @@
1
- {"version":3,"file":"SelectInput.js","sources":["../../../src/inputs/SelectInput/SelectInput.tsx"],"sourcesContent":["import mergeProps from 'merge-props';\nimport { useCallback, useEffect, useRef, useState, useDeferredValue } from 'react';\nimport { Listbox as ListboxBase } from '@headlessui/react';\nimport { useScreenSize } from '../../common/hooks/useScreenSize';\nimport { Breakpoint } from '../../common/propsValues/breakpoint';\nimport { useEffectEvent } from '../../common/hooks/useEffectEvent';\nimport { useInputAttributes } from '../contexts';\n\nimport { SelectInputBottomSheet } from './BottomSheet';\nimport { SelectInputPopover } from './Popover';\nimport { SelectInputOptions } from './Options';\nimport { DefaultRenderTrigger } from './DefaultRenderTrigger';\n\nimport {\n SelectInputOptionContentWithinTriggerContext,\n SelectInputTriggerButtonPropsContext,\n} from './SelectInput.contexts';\nimport { searchableString, sortByRelevance } from './SelectInput.utils';\nimport { SelectInputProps } from './SelectInput.types';\n\nconst noop = () => {};\n\n/**\n * SelectInput component allows users to select an option from a dropdown list.\n * Supports filtering, multiple selection, and customization.\n */\nexport function SelectInput<T = string, M extends boolean = false>({\n id: idProp,\n parentId,\n name,\n multiple,\n placeholder,\n autocomplete,\n items,\n defaultValue,\n value: controlledValue,\n compareValues,\n renderValue = String,\n renderFooter,\n renderTrigger = DefaultRenderTrigger,\n filterable,\n filterPlaceholder,\n sortFilteredOptions,\n disabled,\n size = 'md',\n className,\n UNSAFE_triggerButtonProps,\n triggerRef: externalTriggerRef,\n onFilterChange = noop,\n onChange,\n onOpen,\n onClose,\n onClear,\n}: SelectInputProps<T, M>) {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const id = idProp ?? inputAttributes.id;\n\n const [open, setOpen] = useState(false);\n\n const initialized = useRef(false);\n const handleClose = useEffectEvent(onClose ?? (() => {}));\n const handleOpen = useEffectEvent(onOpen ?? (() => {}));\n\n useEffect(() => {\n if (initialized.current) {\n if (open) {\n handleOpen?.();\n } else {\n handleClose?.();\n }\n } else {\n initialized.current = true;\n }\n }, [open]);\n\n const [filterQuery, _setFilterQuery] = useState('');\n const deferredFilterQuery = useDeferredValue(filterQuery);\n const previousFilterQueryRef = useRef(filterQuery);\n\n const setFilterQuery = useCallback(\n (query: string) => {\n _setFilterQuery(query);\n if (query !== previousFilterQueryRef.current) {\n onFilterChange({\n query,\n queryNormalized: query ? searchableString(query) : null,\n });\n previousFilterQueryRef.current = query;\n }\n },\n [onFilterChange],\n );\n\n const internalTriggerRef = useRef<HTMLButtonElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const listboxRef = useRef<HTMLDivElement>(null);\n const controllerRef = filterable ? searchInputRef : listboxRef;\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const OptionsOverlay = screenSm ? SelectInputPopover : SelectInputBottomSheet;\n\n /**\n * Attempts to resolve the `listbox` label\n * @see https://storybook.wise.design/?path=/docs/forms-selectinput-accessibility--docs#labelling\n */\n const getListBoxLabelProps = (): {\n listBoxLabel?: string;\n listBoxLabelledBy?: string;\n } => {\n if (UNSAFE_triggerButtonProps?.['aria-label']) {\n return {\n listBoxLabel: UNSAFE_triggerButtonProps['aria-label'],\n };\n }\n\n if (UNSAFE_triggerButtonProps?.['aria-labelledby']) {\n return {\n listBoxLabelledBy: UNSAFE_triggerButtonProps['aria-labelledby'],\n };\n }\n\n if (inputAttributes['aria-labelledby']) {\n return {\n listBoxLabelledBy: inputAttributes['aria-labelledby'],\n };\n }\n\n return {};\n };\n\n return (\n <ListboxBase\n name={name}\n multiple={multiple}\n defaultValue={defaultValue as M extends true ? T[] : T}\n value={controlledValue as M extends true ? T[] : T}\n by={compareValues}\n disabled={disabled}\n onChange={\n ((value) => {\n if (!multiple) {\n setOpen(false);\n }\n onChange?.(value);\n }) satisfies SelectInputProps<T, M>['onChange']\n }\n >\n {({ disabled: uiDisabled, value }) => {\n const placeholderShown =\n multiple && Array.isArray(value) ? value.length === 0 : value == null;\n return (\n <OptionsOverlay\n placement=\"bottom-start\"\n open={open}\n renderTrigger={({ ref, getInteractionProps }) => (\n <SelectInputTriggerButtonPropsContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n ref: (node) => {\n ref(node);\n if (externalTriggerRef) {\n // eslint-disable-next-line no-param-reassign\n externalTriggerRef.current = node;\n } else {\n internalTriggerRef.current = node;\n }\n },\n size,\n ...inputAttributes,\n ...UNSAFE_triggerButtonProps,\n id,\n ...mergeProps(\n {\n onClick: () => {\n setOpen((prev) => !prev);\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (\n event.key === ' ' ||\n event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n setOpen((prev) => !prev);\n }\n },\n },\n getInteractionProps(),\n ),\n }}\n >\n {renderTrigger({\n content: !placeholderShown ? (\n <SelectInputOptionContentWithinTriggerContext.Provider value>\n {multiple && Array.isArray(value)\n ? (value as readonly NonNullable<T>[])\n .map((option) => renderValue(option, true))\n .filter((node) => node != null)\n .join(', ')\n : renderValue(value as NonNullable<T>, true)}\n </SelectInputOptionContentWithinTriggerContext.Provider>\n ) : (\n placeholder\n ),\n placeholderShown,\n clear:\n onClear != null\n ? () => {\n onClear();\n (externalTriggerRef?.current ?? internalTriggerRef.current)?.focus({\n preventScroll: true,\n });\n }\n : undefined,\n disabled: uiDisabled,\n size,\n className,\n })}\n </SelectInputTriggerButtonPropsContext.Provider>\n )}\n initialFocusRef={controllerRef}\n size={filterable ? 'lg' : 'md'}\n padding=\"none\"\n onClose={() => {\n setOpen(false);\n }}\n onCloseEnd={() => {\n setFilterQuery('');\n }}\n >\n <SelectInputOptions\n id={id ? `${id}Search` : undefined}\n parentId={parentId}\n items={items}\n compareValues={compareValues}\n renderValue={renderValue}\n renderFooter={renderFooter}\n filterable={filterable}\n filterPlaceholder={filterPlaceholder}\n sortFilteredOptions={sortFilteredOptions}\n searchInputRef={searchInputRef}\n listboxRef={listboxRef}\n filterQuery={deferredFilterQuery}\n autocomplete={autocomplete}\n name={name}\n onFilterChange={setFilterQuery}\n onAutocompleteSelect={(matchedValue) => {\n onChange?.(matchedValue as M extends true ? T[] : T);\n if (!multiple) {\n setOpen(false);\n }\n }}\n {...getListBoxLabelProps()}\n />\n </OptionsOverlay>\n );\n }}\n </ListboxBase>\n );\n}\n\n// Attach sortByRelevance to the component for convenience\nSelectInput.sortByRelevance = sortByRelevance;\n"],"names":["noop","SelectInput","id","idProp","parentId","name","multiple","placeholder","autocomplete","items","defaultValue","value","controlledValue","compareValues","renderValue","String","renderFooter","renderTrigger","DefaultRenderTrigger","filterable","filterPlaceholder","sortFilteredOptions","disabled","size","className","UNSAFE_triggerButtonProps","triggerRef","externalTriggerRef","onFilterChange","onChange","onOpen","onClose","onClear","inputAttributes","useInputAttributes","nonLabelable","open","setOpen","useState","initialized","useRef","handleClose","useEffectEvent","handleOpen","useEffect","current","filterQuery","_setFilterQuery","deferredFilterQuery","useDeferredValue","previousFilterQueryRef","setFilterQuery","useCallback","query","queryNormalized","searchableString","internalTriggerRef","searchInputRef","listboxRef","controllerRef","screenSm","useScreenSize","Breakpoint","SMALL","OptionsOverlay","SelectInputPopover","SelectInputBottomSheet","getListBoxLabelProps","listBoxLabel","listBoxLabelledBy","_jsx","ListboxBase","by","children","uiDisabled","placeholderShown","Array","isArray","length","placement","ref","getInteractionProps","SelectInputTriggerButtonPropsContext","Provider","node","mergeProps","onClick","prev","onKeyDown","event","key","content","SelectInputOptionContentWithinTriggerContext","map","option","filter","join","clear","focus","preventScroll","undefined","initialFocusRef","padding","onCloseEnd","SelectInputOptions","onAutocompleteSelect","matchedValue","sortByRelevance"],"mappings":"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"}
1
+ {"version":3,"file":"SelectInput.js","sources":["../../../src/inputs/SelectInput/SelectInput.tsx"],"sourcesContent":["import mergeProps from 'merge-props';\nimport { useCallback, useEffect, useRef, useState, useDeferredValue } from 'react';\nimport { Listbox as ListboxBase } from '@headlessui/react';\nimport { Breakpoint } from '@transferwise/neptune-tokens';\nimport { useScreenSize } from '../../common/hooks/useScreenSize';\nimport { useEffectEvent } from '../../common/hooks/useEffectEvent';\nimport { useInputAttributes } from '../contexts';\n\nimport { SelectInputBottomSheet } from './BottomSheet';\nimport { SelectInputPopover } from './Popover';\nimport { SelectInputOptions } from './Options';\nimport { DefaultRenderTrigger } from './DefaultRenderTrigger';\n\nimport {\n SelectInputOptionContentWithinTriggerContext,\n SelectInputTriggerButtonPropsContext,\n} from './SelectInput.contexts';\nimport { searchableString, sortByRelevance } from './SelectInput.utils';\nimport { SelectInputProps } from './SelectInput.types';\n\nconst noop = () => {};\n\n/**\n * SelectInput component allows users to select an option from a dropdown list.\n * Supports filtering, multiple selection, and customization.\n */\nexport function SelectInput<T = string, M extends boolean = false>({\n id: idProp,\n parentId,\n name,\n multiple,\n placeholder,\n autocomplete,\n items,\n defaultValue,\n value: controlledValue,\n compareValues,\n renderValue = String,\n renderFooter,\n renderTrigger = DefaultRenderTrigger,\n filterable,\n filterPlaceholder,\n sortFilteredOptions,\n disabled,\n size = 'md',\n className,\n UNSAFE_triggerButtonProps,\n triggerRef: externalTriggerRef,\n onFilterChange = noop,\n onChange,\n onOpen,\n onClose,\n onClear,\n}: SelectInputProps<T, M>) {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const id = idProp ?? inputAttributes.id;\n\n const [open, setOpen] = useState(false);\n\n const initialized = useRef(false);\n const handleClose = useEffectEvent(onClose ?? (() => {}));\n const handleOpen = useEffectEvent(onOpen ?? (() => {}));\n\n useEffect(() => {\n if (initialized.current) {\n if (open) {\n handleOpen?.();\n } else {\n handleClose?.();\n }\n } else {\n initialized.current = true;\n }\n }, [open]);\n\n const [filterQuery, _setFilterQuery] = useState('');\n const deferredFilterQuery = useDeferredValue(filterQuery);\n const previousFilterQueryRef = useRef(filterQuery);\n\n const setFilterQuery = useCallback(\n (query: string) => {\n _setFilterQuery(query);\n if (query !== previousFilterQueryRef.current) {\n onFilterChange({\n query,\n queryNormalized: query ? searchableString(query) : null,\n });\n previousFilterQueryRef.current = query;\n }\n },\n [onFilterChange],\n );\n\n const internalTriggerRef = useRef<HTMLButtonElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const listboxRef = useRef<HTMLDivElement>(null);\n const controllerRef = filterable ? searchInputRef : listboxRef;\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const OptionsOverlay = screenSm ? SelectInputPopover : SelectInputBottomSheet;\n\n /**\n * Attempts to resolve the `listbox` label\n * @see https://storybook.wise.design/?path=/docs/forms-selectinput-accessibility--docs#labelling\n */\n const getListBoxLabelProps = (): {\n listBoxLabel?: string;\n listBoxLabelledBy?: string;\n } => {\n if (UNSAFE_triggerButtonProps?.['aria-label']) {\n return {\n listBoxLabel: UNSAFE_triggerButtonProps['aria-label'],\n };\n }\n\n if (UNSAFE_triggerButtonProps?.['aria-labelledby']) {\n return {\n listBoxLabelledBy: UNSAFE_triggerButtonProps['aria-labelledby'],\n };\n }\n\n if (inputAttributes['aria-labelledby']) {\n return {\n listBoxLabelledBy: inputAttributes['aria-labelledby'],\n };\n }\n\n return {};\n };\n\n return (\n <ListboxBase\n name={name}\n multiple={multiple}\n defaultValue={defaultValue as M extends true ? T[] : T}\n value={controlledValue as M extends true ? T[] : T}\n by={compareValues}\n disabled={disabled}\n onChange={\n ((value) => {\n if (!multiple) {\n setOpen(false);\n }\n onChange?.(value);\n }) satisfies SelectInputProps<T, M>['onChange']\n }\n >\n {({ disabled: uiDisabled, value }) => {\n const placeholderShown =\n multiple && Array.isArray(value) ? value.length === 0 : value == null;\n return (\n <OptionsOverlay\n placement=\"bottom-start\"\n open={open}\n renderTrigger={({ ref, getInteractionProps }) => (\n <SelectInputTriggerButtonPropsContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n ref: (node) => {\n ref(node);\n if (externalTriggerRef) {\n // eslint-disable-next-line no-param-reassign\n externalTriggerRef.current = node;\n } else {\n internalTriggerRef.current = node;\n }\n },\n size,\n ...inputAttributes,\n ...UNSAFE_triggerButtonProps,\n id,\n ...mergeProps(\n {\n onClick: () => {\n setOpen((prev) => !prev);\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (\n event.key === ' ' ||\n event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n setOpen((prev) => !prev);\n }\n },\n },\n getInteractionProps(),\n ),\n }}\n >\n {renderTrigger({\n content: !placeholderShown ? (\n <SelectInputOptionContentWithinTriggerContext.Provider value>\n {multiple && Array.isArray(value)\n ? (value as readonly NonNullable<T>[])\n .map((option) => renderValue(option, true))\n .filter((node) => node != null)\n .join(', ')\n : renderValue(value as NonNullable<T>, true)}\n </SelectInputOptionContentWithinTriggerContext.Provider>\n ) : (\n placeholder\n ),\n placeholderShown,\n clear:\n onClear != null\n ? () => {\n onClear();\n (externalTriggerRef?.current ?? internalTriggerRef.current)?.focus({\n preventScroll: true,\n });\n }\n : undefined,\n disabled: uiDisabled,\n size,\n className,\n })}\n </SelectInputTriggerButtonPropsContext.Provider>\n )}\n initialFocusRef={controllerRef}\n size={filterable ? 'lg' : 'md'}\n padding=\"none\"\n onClose={() => {\n setOpen(false);\n }}\n onCloseEnd={() => {\n setFilterQuery('');\n }}\n >\n <SelectInputOptions\n id={id ? `${id}Search` : undefined}\n parentId={parentId}\n items={items}\n compareValues={compareValues}\n renderValue={renderValue}\n renderFooter={renderFooter}\n filterable={filterable}\n filterPlaceholder={filterPlaceholder}\n sortFilteredOptions={sortFilteredOptions}\n searchInputRef={searchInputRef}\n listboxRef={listboxRef}\n filterQuery={deferredFilterQuery}\n autocomplete={autocomplete}\n name={name}\n onFilterChange={setFilterQuery}\n onAutocompleteSelect={(matchedValue) => {\n onChange?.(matchedValue as M extends true ? T[] : T);\n if (!multiple) {\n setOpen(false);\n }\n }}\n {...getListBoxLabelProps()}\n />\n </OptionsOverlay>\n );\n }}\n </ListboxBase>\n );\n}\n\n// Attach sortByRelevance to the component for convenience\nSelectInput.sortByRelevance = sortByRelevance;\n"],"names":["noop","SelectInput","id","idProp","parentId","name","multiple","placeholder","autocomplete","items","defaultValue","value","controlledValue","compareValues","renderValue","String","renderFooter","renderTrigger","DefaultRenderTrigger","filterable","filterPlaceholder","sortFilteredOptions","disabled","size","className","UNSAFE_triggerButtonProps","triggerRef","externalTriggerRef","onFilterChange","onChange","onOpen","onClose","onClear","inputAttributes","useInputAttributes","nonLabelable","open","setOpen","useState","initialized","useRef","handleClose","useEffectEvent","handleOpen","useEffect","current","filterQuery","_setFilterQuery","deferredFilterQuery","useDeferredValue","previousFilterQueryRef","setFilterQuery","useCallback","query","queryNormalized","searchableString","internalTriggerRef","searchInputRef","listboxRef","controllerRef","screenSm","useScreenSize","Breakpoint","SMALL","OptionsOverlay","SelectInputPopover","SelectInputBottomSheet","getListBoxLabelProps","listBoxLabel","listBoxLabelledBy","_jsx","ListboxBase","by","children","uiDisabled","placeholderShown","Array","isArray","length","placement","ref","getInteractionProps","SelectInputTriggerButtonPropsContext","Provider","node","mergeProps","onClick","prev","onKeyDown","event","key","content","SelectInputOptionContentWithinTriggerContext","map","option","filter","join","clear","focus","preventScroll","undefined","initialFocusRef","padding","onCloseEnd","SelectInputOptions","onAutocompleteSelect","matchedValue","sortByRelevance"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import mergeProps from 'merge-props';
2
2
  import { useState, useRef, useEffect, useDeferredValue, useCallback } from 'react';
3
3
  import { Listbox } from '@headlessui/react';
4
+ import { Breakpoint } from '@transferwise/neptune-tokens';
4
5
  import { useScreenSize } from '../../common/hooks/useScreenSize.mjs';
5
- import { Breakpoint } from '../../common/propsValues/breakpoint.mjs';
6
6
  import { useEffectEvent } from '../../common/hooks/useEffectEvent.mjs';
7
7
  import { useInputAttributes } from '../contexts.mjs';
8
8
  import { SelectInputBottomSheet } from './BottomSheet/SelectInputBottomSheet.mjs';