@transferwise/components 46.50.1 → 46.52.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 (493) hide show
  1. package/build/accordion/AccordionItem/AccordionItem.js +3 -7
  2. package/build/accordion/AccordionItem/AccordionItem.js.map +1 -1
  3. package/build/accordion/AccordionItem/AccordionItem.mjs +3 -3
  4. package/build/accordion/AccordionItem/AccordionItem.mjs.map +1 -1
  5. package/build/actionButton/ActionButton.js +2 -6
  6. package/build/actionButton/ActionButton.js.map +1 -1
  7. package/build/actionButton/ActionButton.mjs +2 -2
  8. package/build/actionButton/ActionButton.mjs.map +1 -1
  9. package/build/actionOption/ActionOption.js +2 -6
  10. package/build/actionOption/ActionOption.js.map +1 -1
  11. package/build/actionOption/ActionOption.mjs +2 -2
  12. package/build/actionOption/ActionOption.mjs.map +1 -1
  13. package/build/alert/Alert.js +3 -7
  14. package/build/alert/Alert.js.map +1 -1
  15. package/build/alert/Alert.mjs +3 -3
  16. package/build/alert/Alert.mjs.map +1 -1
  17. package/build/avatar/Avatar.js +2 -6
  18. package/build/avatar/Avatar.js.map +1 -1
  19. package/build/avatar/Avatar.mjs +2 -2
  20. package/build/avatar/Avatar.mjs.map +1 -1
  21. package/build/badge/Badge.js +2 -6
  22. package/build/badge/Badge.js.map +1 -1
  23. package/build/badge/Badge.mjs +2 -2
  24. package/build/badge/Badge.mjs.map +1 -1
  25. package/build/body/Body.js +2 -6
  26. package/build/body/Body.js.map +1 -1
  27. package/build/body/Body.mjs +2 -2
  28. package/build/body/Body.mjs.map +1 -1
  29. package/build/button/Button.js +2 -6
  30. package/build/button/Button.js.map +1 -1
  31. package/build/button/Button.mjs +2 -2
  32. package/build/button/Button.mjs.map +1 -1
  33. package/build/card/Card.js +4 -8
  34. package/build/card/Card.js.map +1 -1
  35. package/build/card/Card.mjs +4 -4
  36. package/build/card/Card.mjs.map +1 -1
  37. package/build/carousel/Carousel.js +5 -9
  38. package/build/carousel/Carousel.js.map +1 -1
  39. package/build/carousel/Carousel.mjs +5 -5
  40. package/build/carousel/Carousel.mjs.map +1 -1
  41. package/build/checkbox/Checkbox.js +3 -7
  42. package/build/checkbox/Checkbox.js.map +1 -1
  43. package/build/checkbox/Checkbox.mjs +3 -3
  44. package/build/checkbox/Checkbox.mjs.map +1 -1
  45. package/build/checkboxButton/CheckboxButton.js +2 -6
  46. package/build/checkboxButton/CheckboxButton.js.map +1 -1
  47. package/build/checkboxButton/CheckboxButton.mjs +2 -2
  48. package/build/checkboxButton/CheckboxButton.mjs.map +1 -1
  49. package/build/chevron/Chevron.js +3 -7
  50. package/build/chevron/Chevron.js.map +1 -1
  51. package/build/chevron/Chevron.mjs +3 -3
  52. package/build/chevron/Chevron.mjs.map +1 -1
  53. package/build/chips/Chip.js +2 -6
  54. package/build/chips/Chip.js.map +1 -1
  55. package/build/chips/Chip.mjs +2 -2
  56. package/build/chips/Chip.mjs.map +1 -1
  57. package/build/chips/Chips.js +3 -7
  58. package/build/chips/Chips.js.map +1 -1
  59. package/build/chips/Chips.mjs +3 -3
  60. package/build/chips/Chips.mjs.map +1 -1
  61. package/build/circularButton/CircularButton.js +3 -7
  62. package/build/circularButton/CircularButton.js.map +1 -1
  63. package/build/circularButton/CircularButton.mjs +3 -3
  64. package/build/circularButton/CircularButton.mjs.map +1 -1
  65. package/build/common/Option/Option.js +3 -7
  66. package/build/common/Option/Option.js.map +1 -1
  67. package/build/common/Option/Option.mjs +3 -3
  68. package/build/common/Option/Option.mjs.map +1 -1
  69. package/build/common/RadioButton/RadioButton.js +2 -6
  70. package/build/common/RadioButton/RadioButton.js.map +1 -1
  71. package/build/common/RadioButton/RadioButton.mjs +2 -2
  72. package/build/common/RadioButton/RadioButton.mjs.map +1 -1
  73. package/build/common/action/Action.js +2 -6
  74. package/build/common/action/Action.js.map +1 -1
  75. package/build/common/action/Action.mjs +2 -2
  76. package/build/common/action/Action.mjs.map +1 -1
  77. package/build/common/bottomSheet/BottomSheet.js +2 -6
  78. package/build/common/bottomSheet/BottomSheet.js.map +1 -1
  79. package/build/common/bottomSheet/BottomSheet.mjs +2 -2
  80. package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
  81. package/build/common/card/Card.js +2 -6
  82. package/build/common/card/Card.js.map +1 -1
  83. package/build/common/card/Card.mjs +2 -2
  84. package/build/common/card/Card.mjs.map +1 -1
  85. package/build/common/closeButton/CloseButton.js +2 -6
  86. package/build/common/closeButton/CloseButton.js.map +1 -1
  87. package/build/common/closeButton/CloseButton.mjs +2 -2
  88. package/build/common/closeButton/CloseButton.mjs.map +1 -1
  89. package/build/common/flowHeader/FlowHeader.js +3 -6
  90. package/build/common/flowHeader/FlowHeader.js.map +1 -1
  91. package/build/common/flowHeader/FlowHeader.mjs +3 -3
  92. package/build/common/flowHeader/FlowHeader.mjs.map +1 -1
  93. package/build/common/panel/Panel.js +4 -8
  94. package/build/common/panel/Panel.js.map +1 -1
  95. package/build/common/panel/Panel.mjs +4 -4
  96. package/build/common/panel/Panel.mjs.map +1 -1
  97. package/build/criticalBanner/CriticalCommsBanner.js +4 -8
  98. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  99. package/build/criticalBanner/CriticalCommsBanner.mjs +4 -4
  100. package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
  101. package/build/dateInput/DateInput.js +2 -6
  102. package/build/dateInput/DateInput.js.map +1 -1
  103. package/build/dateInput/DateInput.mjs +2 -2
  104. package/build/dateInput/DateInput.mjs.map +1 -1
  105. package/build/dateLookup/DateLookup.js +2 -6
  106. package/build/dateLookup/DateLookup.js.map +1 -1
  107. package/build/dateLookup/DateLookup.mjs +2 -2
  108. package/build/dateLookup/DateLookup.mjs.map +1 -1
  109. package/build/dateLookup/dateHeader/DateHeader.js +2 -6
  110. package/build/dateLookup/dateHeader/DateHeader.js.map +1 -1
  111. package/build/dateLookup/dateHeader/DateHeader.mjs +2 -2
  112. package/build/dateLookup/dateHeader/DateHeader.mjs.map +1 -1
  113. package/build/dateLookup/tableLink/TableLink.js +15 -21
  114. package/build/dateLookup/tableLink/TableLink.js.map +1 -1
  115. package/build/dateLookup/tableLink/TableLink.mjs +16 -18
  116. package/build/dateLookup/tableLink/TableLink.mjs.map +1 -1
  117. package/build/decision/Decision.js +3 -7
  118. package/build/decision/Decision.js.map +1 -1
  119. package/build/decision/Decision.mjs +3 -3
  120. package/build/decision/Decision.mjs.map +1 -1
  121. package/build/definitionList/DefinitionList.js +4 -8
  122. package/build/definitionList/DefinitionList.js.map +1 -1
  123. package/build/definitionList/DefinitionList.mjs +4 -4
  124. package/build/definitionList/DefinitionList.mjs.map +1 -1
  125. package/build/dimmer/Dimmer.js +6 -10
  126. package/build/dimmer/Dimmer.js.map +1 -1
  127. package/build/dimmer/Dimmer.mjs +6 -6
  128. package/build/dimmer/Dimmer.mjs.map +1 -1
  129. package/build/display/Display.js +2 -6
  130. package/build/display/Display.js.map +1 -1
  131. package/build/display/Display.mjs +2 -2
  132. package/build/display/Display.mjs.map +1 -1
  133. package/build/drawer/Drawer.js +5 -9
  134. package/build/drawer/Drawer.js.map +1 -1
  135. package/build/drawer/Drawer.mjs +5 -5
  136. package/build/drawer/Drawer.mjs.map +1 -1
  137. package/build/field/Field.js +2 -6
  138. package/build/field/Field.js.map +1 -1
  139. package/build/field/Field.mjs +2 -2
  140. package/build/field/Field.mjs.map +1 -1
  141. package/build/flowNavigation/FlowNavigation.js +4 -8
  142. package/build/flowNavigation/FlowNavigation.js.map +1 -1
  143. package/build/flowNavigation/FlowNavigation.mjs +4 -4
  144. package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
  145. package/build/flowNavigation/animatedLabel/AnimatedLabel.js +3 -7
  146. package/build/flowNavigation/animatedLabel/AnimatedLabel.js.map +1 -1
  147. package/build/flowNavigation/animatedLabel/AnimatedLabel.mjs +3 -3
  148. package/build/flowNavigation/animatedLabel/AnimatedLabel.mjs.map +1 -1
  149. package/build/flowNavigation/backButton/BackButton.js +2 -6
  150. package/build/flowNavigation/backButton/BackButton.js.map +1 -1
  151. package/build/flowNavigation/backButton/BackButton.mjs +2 -2
  152. package/build/flowNavigation/backButton/BackButton.mjs.map +1 -1
  153. package/build/header/Header.js +3 -7
  154. package/build/header/Header.js.map +1 -1
  155. package/build/header/Header.mjs +3 -3
  156. package/build/header/Header.mjs.map +1 -1
  157. package/build/i18n/zh-HK.json +2 -0
  158. package/build/i18n/zh-HK.json.js +2 -0
  159. package/build/i18n/zh-HK.json.js.map +1 -1
  160. package/build/i18n/zh-HK.json.mjs +2 -0
  161. package/build/i18n/zh-HK.json.mjs.map +1 -1
  162. package/build/image/Image.js +2 -6
  163. package/build/image/Image.js.map +1 -1
  164. package/build/image/Image.mjs +2 -2
  165. package/build/image/Image.mjs.map +1 -1
  166. package/build/info/Info.js +2 -6
  167. package/build/info/Info.js.map +1 -1
  168. package/build/info/Info.mjs +2 -2
  169. package/build/info/Info.mjs.map +1 -1
  170. package/build/inlineAlert/InlineAlert.js +2 -6
  171. package/build/inlineAlert/InlineAlert.js.map +1 -1
  172. package/build/inlineAlert/InlineAlert.mjs +2 -2
  173. package/build/inlineAlert/InlineAlert.mjs.map +1 -1
  174. package/build/inputs/Input.js +2 -6
  175. package/build/inputs/Input.js.map +1 -1
  176. package/build/inputs/Input.mjs +2 -2
  177. package/build/inputs/Input.mjs.map +1 -1
  178. package/build/inputs/InputGroup.js +3 -7
  179. package/build/inputs/InputGroup.js.map +1 -1
  180. package/build/inputs/InputGroup.mjs +3 -3
  181. package/build/inputs/InputGroup.mjs.map +1 -1
  182. package/build/inputs/SelectInput.js +118 -48
  183. package/build/inputs/SelectInput.js.map +1 -1
  184. package/build/inputs/SelectInput.mjs +120 -49
  185. package/build/inputs/SelectInput.mjs.map +1 -1
  186. package/build/inputs/TextArea.js +2 -6
  187. package/build/inputs/TextArea.js.map +1 -1
  188. package/build/inputs/TextArea.mjs +2 -2
  189. package/build/inputs/TextArea.mjs.map +1 -1
  190. package/build/inputs/_BottomSheet.js +2 -6
  191. package/build/inputs/_BottomSheet.js.map +1 -1
  192. package/build/inputs/_BottomSheet.mjs +2 -2
  193. package/build/inputs/_BottomSheet.mjs.map +1 -1
  194. package/build/inputs/_ButtonInput.js +2 -6
  195. package/build/inputs/_ButtonInput.js.map +1 -1
  196. package/build/inputs/_ButtonInput.mjs +2 -2
  197. package/build/inputs/_ButtonInput.mjs.map +1 -1
  198. package/build/inputs/_Popover.js +3 -7
  199. package/build/inputs/_Popover.js.map +1 -1
  200. package/build/inputs/_Popover.mjs +3 -3
  201. package/build/inputs/_Popover.mjs.map +1 -1
  202. package/build/inputs/_common.js +2 -6
  203. package/build/inputs/_common.js.map +1 -1
  204. package/build/inputs/_common.mjs +2 -2
  205. package/build/inputs/_common.mjs.map +1 -1
  206. package/build/instructionsList/InstructionsList.js +2 -6
  207. package/build/instructionsList/InstructionsList.js.map +1 -1
  208. package/build/instructionsList/InstructionsList.mjs +2 -2
  209. package/build/instructionsList/InstructionsList.mjs.map +1 -1
  210. package/build/label/Label.js +2 -6
  211. package/build/label/Label.js.map +1 -1
  212. package/build/label/Label.mjs +2 -2
  213. package/build/label/Label.mjs.map +1 -1
  214. package/build/link/Link.js +2 -6
  215. package/build/link/Link.js.map +1 -1
  216. package/build/link/Link.mjs +2 -2
  217. package/build/link/Link.mjs.map +1 -1
  218. package/build/listItem/ListItem.js +3 -7
  219. package/build/listItem/ListItem.js.map +1 -1
  220. package/build/listItem/ListItem.mjs +3 -3
  221. package/build/listItem/ListItem.mjs.map +1 -1
  222. package/build/loader/Loader.js +2 -6
  223. package/build/loader/Loader.js.map +1 -1
  224. package/build/loader/Loader.mjs +4 -4
  225. package/build/loader/Loader.mjs.map +1 -1
  226. package/build/logo/Logo.js +2 -6
  227. package/build/logo/Logo.js.map +1 -1
  228. package/build/logo/Logo.mjs +2 -2
  229. package/build/logo/Logo.mjs.map +1 -1
  230. package/build/main.css +10 -0
  231. package/build/modal/Modal.js +7 -11
  232. package/build/modal/Modal.js.map +1 -1
  233. package/build/modal/Modal.mjs +7 -7
  234. package/build/modal/Modal.mjs.map +1 -1
  235. package/build/moneyInput/MoneyInput.js +17 -39
  236. package/build/moneyInput/MoneyInput.js.map +1 -1
  237. package/build/moneyInput/MoneyInput.mjs +17 -35
  238. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  239. package/build/navigationOption/NavigationOption.js +2 -6
  240. package/build/navigationOption/NavigationOption.js.map +1 -1
  241. package/build/navigationOption/NavigationOption.mjs +2 -2
  242. package/build/navigationOption/NavigationOption.mjs.map +1 -1
  243. package/build/nudge/Nudge.js +4 -8
  244. package/build/nudge/Nudge.js.map +1 -1
  245. package/build/nudge/Nudge.mjs +4 -4
  246. package/build/nudge/Nudge.mjs.map +1 -1
  247. package/build/overlayHeader/OverlayHeader.js +3 -7
  248. package/build/overlayHeader/OverlayHeader.js.map +1 -1
  249. package/build/overlayHeader/OverlayHeader.mjs +3 -3
  250. package/build/overlayHeader/OverlayHeader.mjs.map +1 -1
  251. package/build/popover/Popover.js +2 -6
  252. package/build/popover/Popover.js.map +1 -1
  253. package/build/popover/Popover.mjs +2 -2
  254. package/build/popover/Popover.mjs.map +1 -1
  255. package/build/processIndicator/ProcessIndicator.js +2 -6
  256. package/build/processIndicator/ProcessIndicator.js.map +1 -1
  257. package/build/processIndicator/ProcessIndicator.mjs +2 -2
  258. package/build/processIndicator/ProcessIndicator.mjs.map +1 -1
  259. package/build/progress/Progress.js +2 -6
  260. package/build/progress/Progress.js.map +1 -1
  261. package/build/progress/Progress.mjs +2 -2
  262. package/build/progress/Progress.mjs.map +1 -1
  263. package/build/progressBar/ProgressBar.js +2 -6
  264. package/build/progressBar/ProgressBar.js.map +1 -1
  265. package/build/progressBar/ProgressBar.mjs +2 -2
  266. package/build/progressBar/ProgressBar.mjs.map +1 -1
  267. package/build/promoCard/PromoCard.js +3 -4
  268. package/build/promoCard/PromoCard.js.map +1 -1
  269. package/build/promoCard/PromoCard.mjs +3 -3
  270. package/build/promoCard/PromoCard.mjs.map +1 -1
  271. package/build/promoCard/PromoCardGroup.js +2 -3
  272. package/build/promoCard/PromoCardGroup.js.map +1 -1
  273. package/build/promoCard/PromoCardGroup.mjs +2 -2
  274. package/build/promoCard/PromoCardGroup.mjs.map +1 -1
  275. package/build/promoCard/PromoCardIndicator.js +2 -6
  276. package/build/promoCard/PromoCardIndicator.js.map +1 -1
  277. package/build/promoCard/PromoCardIndicator.mjs +2 -2
  278. package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
  279. package/build/radio/Radio.js +5 -9
  280. package/build/radio/Radio.js.map +1 -1
  281. package/build/radio/Radio.mjs +5 -5
  282. package/build/radio/Radio.mjs.map +1 -1
  283. package/build/section/Section.js +2 -6
  284. package/build/section/Section.js.map +1 -1
  285. package/build/section/Section.mjs +2 -2
  286. package/build/section/Section.mjs.map +1 -1
  287. package/build/segmentedControl/SegmentedControl.js +5 -9
  288. package/build/segmentedControl/SegmentedControl.js.map +1 -1
  289. package/build/segmentedControl/SegmentedControl.mjs +5 -5
  290. package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
  291. package/build/select/Select.js +9 -10
  292. package/build/select/Select.js.map +1 -1
  293. package/build/select/Select.mjs +9 -9
  294. package/build/select/Select.mjs.map +1 -1
  295. package/build/select/option/Option.js +2 -6
  296. package/build/select/option/Option.js.map +1 -1
  297. package/build/select/option/Option.mjs +2 -2
  298. package/build/select/option/Option.mjs.map +1 -1
  299. package/build/select/searchBox/SearchBox.js +4 -8
  300. package/build/select/searchBox/SearchBox.js.map +1 -1
  301. package/build/select/searchBox/SearchBox.mjs +6 -6
  302. package/build/select/searchBox/SearchBox.mjs.map +1 -1
  303. package/build/selectOption/SelectOption.js +4 -8
  304. package/build/selectOption/SelectOption.js.map +1 -1
  305. package/build/selectOption/SelectOption.mjs +4 -4
  306. package/build/selectOption/SelectOption.mjs.map +1 -1
  307. package/build/slidingPanel/SlidingPanel.js +2 -6
  308. package/build/slidingPanel/SlidingPanel.js.map +1 -1
  309. package/build/slidingPanel/SlidingPanel.mjs +2 -2
  310. package/build/slidingPanel/SlidingPanel.mjs.map +1 -1
  311. package/build/statusIcon/StatusIcon.js +3 -7
  312. package/build/statusIcon/StatusIcon.js.map +1 -1
  313. package/build/statusIcon/StatusIcon.mjs +3 -3
  314. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  315. package/build/stepper/Stepper.js +3 -7
  316. package/build/stepper/Stepper.js.map +1 -1
  317. package/build/stepper/Stepper.mjs +3 -3
  318. package/build/stepper/Stepper.mjs.map +1 -1
  319. package/build/styles/inputs/SelectInput.css +10 -0
  320. package/build/styles/main.css +10 -0
  321. package/build/summary/Summary.js +2 -6
  322. package/build/summary/Summary.js.map +1 -1
  323. package/build/summary/Summary.mjs +2 -2
  324. package/build/summary/Summary.mjs.map +1 -1
  325. package/build/switch/Switch.js +2 -6
  326. package/build/switch/Switch.js.map +1 -1
  327. package/build/switch/Switch.mjs +2 -2
  328. package/build/switch/Switch.mjs.map +1 -1
  329. package/build/tabs/Tab.js +6 -7
  330. package/build/tabs/Tab.js.map +1 -1
  331. package/build/tabs/Tab.mjs +6 -6
  332. package/build/tabs/Tab.mjs.map +1 -1
  333. package/build/tabs/Tabs.js +2 -3
  334. package/build/tabs/Tabs.js.map +1 -1
  335. package/build/tabs/Tabs.mjs +2 -2
  336. package/build/tabs/Tabs.mjs.map +1 -1
  337. package/build/tile/Tile.js +3 -7
  338. package/build/tile/Tile.js.map +1 -1
  339. package/build/tile/Tile.mjs +3 -3
  340. package/build/tile/Tile.mjs.map +1 -1
  341. package/build/title/Title.js +3 -7
  342. package/build/title/Title.js.map +1 -1
  343. package/build/title/Title.mjs +3 -3
  344. package/build/title/Title.mjs.map +1 -1
  345. package/build/tooltip/Tooltip.js +3 -7
  346. package/build/tooltip/Tooltip.js.map +1 -1
  347. package/build/tooltip/Tooltip.mjs +3 -3
  348. package/build/tooltip/Tooltip.mjs.map +1 -1
  349. package/build/typeahead/Typeahead.js +6 -7
  350. package/build/typeahead/Typeahead.js.map +1 -1
  351. package/build/typeahead/Typeahead.mjs +6 -6
  352. package/build/typeahead/Typeahead.mjs.map +1 -1
  353. package/build/typeahead/typeaheadInput/TypeaheadInput.js +2 -6
  354. package/build/typeahead/typeaheadInput/TypeaheadInput.js.map +1 -1
  355. package/build/typeahead/typeaheadInput/TypeaheadInput.mjs +2 -2
  356. package/build/typeahead/typeaheadInput/TypeaheadInput.mjs.map +1 -1
  357. package/build/typeahead/typeaheadOption/TypeaheadOption.js +2 -6
  358. package/build/typeahead/typeaheadOption/TypeaheadOption.js.map +1 -1
  359. package/build/typeahead/typeaheadOption/TypeaheadOption.mjs +2 -2
  360. package/build/typeahead/typeaheadOption/TypeaheadOption.mjs.map +1 -1
  361. package/build/types/accordion/AccordionItem/AccordionItem.d.ts.map +1 -1
  362. package/build/types/chevron/Chevron.d.ts.map +1 -1
  363. package/build/types/circularButton/CircularButton.d.ts.map +1 -1
  364. package/build/types/dateLookup/tableLink/TableLink.d.ts.map +1 -1
  365. package/build/types/flowNavigation/FlowNavigation.d.ts.map +1 -1
  366. package/build/types/inputs/SelectInput.d.ts.map +1 -1
  367. package/build/types/link/Link.d.ts.map +1 -1
  368. package/build/types/modal/Modal.d.ts.map +1 -1
  369. package/build/types/moneyInput/MoneyInput.d.ts +0 -1
  370. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  371. package/build/types/select/searchBox/SearchBox.d.ts.map +1 -1
  372. package/build/types/tabs/Tab.d.ts.map +1 -1
  373. package/build/types/uploadInput/uploadButton/UploadButton.d.ts.map +1 -1
  374. package/build/upload/Upload.js +2 -6
  375. package/build/upload/Upload.js.map +1 -1
  376. package/build/upload/Upload.mjs +2 -2
  377. package/build/upload/Upload.mjs.map +1 -1
  378. package/build/uploadInput/UploadInput.js +2 -6
  379. package/build/uploadInput/UploadInput.js.map +1 -1
  380. package/build/uploadInput/UploadInput.mjs +2 -2
  381. package/build/uploadInput/UploadInput.mjs.map +1 -1
  382. package/build/uploadInput/uploadButton/UploadButton.js +5 -9
  383. package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
  384. package/build/uploadInput/uploadButton/UploadButton.mjs +5 -5
  385. package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
  386. package/build/uploadInput/uploadItem/UploadItem.js +3 -7
  387. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  388. package/build/uploadInput/uploadItem/UploadItem.mjs +3 -3
  389. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  390. package/build/uploadInput/uploadItem/UploadItemLink.js +2 -6
  391. package/build/uploadInput/uploadItem/UploadItemLink.js.map +1 -1
  392. package/build/uploadInput/uploadItem/UploadItemLink.mjs +2 -2
  393. package/build/uploadInput/uploadItem/UploadItemLink.mjs.map +1 -1
  394. package/package.json +6 -5
  395. package/src/accordion/AccordionItem/AccordionItem.tsx +5 -9
  396. package/src/actionButton/ActionButton.tsx +2 -2
  397. package/src/actionOption/ActionOption.tsx +2 -2
  398. package/src/alert/Alert.tsx +3 -3
  399. package/src/avatar/Avatar.tsx +2 -2
  400. package/src/badge/Badge.tsx +2 -2
  401. package/src/body/Body.tsx +2 -2
  402. package/src/button/Button.tsx +2 -2
  403. package/src/card/Card.tsx +4 -4
  404. package/src/carousel/Carousel.tsx +5 -5
  405. package/src/checkbox/Checkbox.tsx +3 -3
  406. package/src/checkboxButton/CheckboxButton.tsx +2 -2
  407. package/src/chevron/Chevron.tsx +3 -12
  408. package/src/chips/Chip.tsx +2 -2
  409. package/src/chips/Chips.tsx +3 -3
  410. package/src/circularButton/CircularButton.tsx +4 -7
  411. package/src/common/Option/Option.tsx +3 -3
  412. package/src/common/RadioButton/RadioButton.tsx +2 -2
  413. package/src/common/action/Action.tsx +2 -2
  414. package/src/common/bottomSheet/BottomSheet.tsx +2 -2
  415. package/src/common/card/Card.tsx +2 -2
  416. package/src/common/closeButton/CloseButton.tsx +2 -2
  417. package/src/common/flowHeader/FlowHeader.tsx +3 -3
  418. package/src/common/panel/Panel.tsx +4 -4
  419. package/src/criticalBanner/CriticalCommsBanner.tsx +4 -4
  420. package/src/dateInput/DateInput.tsx +2 -2
  421. package/src/dateLookup/DateLookup.tsx +2 -2
  422. package/src/dateLookup/dateHeader/DateHeader.tsx +2 -2
  423. package/src/dateLookup/tableLink/TableLink.tsx +3 -5
  424. package/src/decision/Decision.tsx +3 -3
  425. package/src/definitionList/DefinitionList.tsx +4 -4
  426. package/src/dimmer/Dimmer.tsx +6 -6
  427. package/src/display/Display.tsx +2 -2
  428. package/src/drawer/Drawer.tsx +5 -5
  429. package/src/field/Field.tsx +3 -3
  430. package/src/flowNavigation/FlowNavigation.tsx +6 -7
  431. package/src/flowNavigation/animatedLabel/AnimatedLabel.tsx +3 -3
  432. package/src/flowNavigation/backButton/BackButton.tsx +2 -2
  433. package/src/header/Header.tsx +3 -3
  434. package/src/i18n/zh-HK.json +2 -0
  435. package/src/image/Image.tsx +2 -2
  436. package/src/info/Info.tsx +2 -2
  437. package/src/inlineAlert/InlineAlert.tsx +2 -2
  438. package/src/inputs/Input.tsx +2 -2
  439. package/src/inputs/InputGroup.tsx +3 -3
  440. package/src/inputs/SelectInput.css +10 -0
  441. package/src/inputs/SelectInput.less +12 -0
  442. package/src/inputs/SelectInput.story.tsx +22 -2
  443. package/src/inputs/SelectInput.tsx +156 -58
  444. package/src/inputs/TextArea.tsx +2 -2
  445. package/src/inputs/_BottomSheet.tsx +2 -2
  446. package/src/inputs/_ButtonInput.tsx +2 -2
  447. package/src/inputs/_Popover.tsx +3 -3
  448. package/src/inputs/_common.ts +2 -2
  449. package/src/instructionsList/InstructionsList.tsx +3 -3
  450. package/src/label/Label.tsx +2 -2
  451. package/src/link/Link.tsx +2 -7
  452. package/src/listItem/ListItem.tsx +3 -3
  453. package/src/loader/Loader.tsx +2 -2
  454. package/src/logo/Logo.tsx +2 -2
  455. package/src/main.css +10 -0
  456. package/src/modal/Modal.tsx +9 -15
  457. package/src/moneyInput/MoneyInput.story.tsx +0 -34
  458. package/src/moneyInput/MoneyInput.tsx +6 -29
  459. package/src/navigationOption/NavigationOption.tsx +2 -2
  460. package/src/nudge/Nudge.tsx +4 -4
  461. package/src/overlayHeader/OverlayHeader.tsx +3 -3
  462. package/src/popover/Popover.tsx +2 -2
  463. package/src/processIndicator/ProcessIndicator.tsx +2 -2
  464. package/src/progress/Progress.tsx +2 -2
  465. package/src/progressBar/ProgressBar.tsx +2 -2
  466. package/src/promoCard/PromoCard.tsx +4 -4
  467. package/src/promoCard/PromoCardGroup.tsx +2 -2
  468. package/src/promoCard/PromoCardIndicator.tsx +2 -2
  469. package/src/radio/Radio.tsx +5 -5
  470. package/src/section/Section.tsx +2 -2
  471. package/src/segmentedControl/SegmentedControl.tsx +5 -5
  472. package/src/select/Select.js +9 -9
  473. package/src/select/option/Option.tsx +2 -2
  474. package/src/select/searchBox/SearchBox.tsx +4 -7
  475. package/src/selectOption/SelectOption.tsx +5 -5
  476. package/src/slidingPanel/SlidingPanel.tsx +2 -2
  477. package/src/statusIcon/StatusIcon.tsx +3 -3
  478. package/src/stepper/Stepper.tsx +3 -3
  479. package/src/summary/Summary.tsx +2 -2
  480. package/src/switch/Switch.tsx +2 -2
  481. package/src/tabs/Tab.js +8 -12
  482. package/src/tabs/Tabs.js +2 -2
  483. package/src/tile/Tile.tsx +3 -3
  484. package/src/title/Title.tsx +3 -3
  485. package/src/tooltip/Tooltip.tsx +3 -3
  486. package/src/typeahead/Typeahead.tsx +6 -6
  487. package/src/typeahead/typeaheadInput/TypeaheadInput.tsx +2 -2
  488. package/src/typeahead/typeaheadOption/TypeaheadOption.tsx +2 -2
  489. package/src/upload/Upload.tsx +2 -2
  490. package/src/uploadInput/UploadInput.tsx +2 -2
  491. package/src/uploadInput/uploadButton/UploadButton.tsx +5 -9
  492. package/src/uploadInput/uploadItem/UploadItem.tsx +3 -3
  493. package/src/uploadInput/uploadItem/UploadItemLink.tsx +2 -2
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { useEffect, useRef } from 'react';
3
3
  import { useIntl } from 'react-intl';
4
4
 
@@ -55,11 +55,10 @@ const TableLink = ({
55
55
  };
56
56
 
57
57
  return (
58
- <>
59
- <button
58
+ <button
60
59
  ref={buttonRef}
61
60
  type="button"
62
- className={classNames(
61
+ className={clsx(
63
62
  `tw-date-lookup-${type}-option np-text-body-default-bold`,
64
63
  { active: !!active },
65
64
  { today: !!today },
@@ -72,7 +71,6 @@ const TableLink = ({
72
71
  >
73
72
  {title || item}
74
73
  </button>
75
- </>
76
74
  );
77
75
  };
78
76
 
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
 
3
3
  import { Size, Breakpoint, SizeSmall, SizeMedium } from '../common';
4
4
  import { useScreenSize } from '../common/hooks/useScreenSize';
@@ -88,7 +88,7 @@ const Decision = ({
88
88
 
89
89
  return (
90
90
  <div
91
- className={classNames(
91
+ className={clsx(
92
92
  'np-decision d-flex',
93
93
  {
94
94
  'np-decision--small': isSmall,
@@ -106,7 +106,7 @@ const Decision = ({
106
106
  <Tile
107
107
  // eslint-disable-next-line react/no-array-index-key
108
108
  key={`tile-${key}`}
109
- className={classNames(`np-decision__tile${isSmall ? '--small' : ''}`, {
109
+ className={clsx(`np-decision__tile${isSmall ? '--small' : ''}`, {
110
110
  'np-decision__tile--fixed-width': isGrid,
111
111
  })}
112
112
  description={description}
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
 
3
3
  import ActionButton from '../actionButton';
4
4
  import { Layout } from '../common';
@@ -63,7 +63,7 @@ export default function DefinitionList({
63
63
  }: DefinitionListProps) {
64
64
  return (
65
65
  <dl
66
- className={classNames('tw-definition-list d-flex ', {
66
+ className={clsx('tw-definition-list d-flex ', {
67
67
  'text-muted': muted,
68
68
  'flex-column': layout === Layout.VERTICAL_ONE_COLUMN,
69
69
  'tw-definition-list--columns flex-column flex-row--sm':
@@ -76,11 +76,11 @@ export default function DefinitionList({
76
76
  .map(({ action, title, value, key }) => (
77
77
  <div key={key} className="tw-definition-list__item">
78
78
  <dt>{title}</dt>
79
- <dd className={classNames(...getAlignmentClasses(layout, action))}>
79
+ <dd className={clsx(...getAlignmentClasses(layout, action))}>
80
80
  <div>{value}</div>
81
81
  {action ? (
82
82
  <div
83
- className={classNames(
83
+ className={clsx(
84
84
  isLayoutHorizontal(layout) ? 'p-l-2' : 'p-x-2',
85
85
  'tw-definition-list__action',
86
86
  )}
@@ -1,5 +1,5 @@
1
1
  import { ThemeProvider, useTheme } from '@wise/components-theming';
2
- import classNames from 'classnames';
2
+ import { clsx } from 'clsx';
3
3
  import { MouseEvent, ReactNode, useCallback, useEffect, useRef, useState } from 'react';
4
4
  import { CSSTransition } from 'react-transition-group';
5
5
 
@@ -126,11 +126,11 @@ const Dimmer = ({
126
126
  // Wait for animation to finish before unmount.
127
127
  timeout={{ enter: 0, exit: EXIT_ANIMATION }}
128
128
  classNames={{
129
- enter: classNames({ 'dimmer--enter-fade': fadeContentOnEnter }),
130
- enterDone: classNames('dimmer--enter-done', {
129
+ enter: clsx({ 'dimmer--enter-fade': fadeContentOnEnter }),
130
+ enterDone: clsx('dimmer--enter-done', {
131
131
  'dimmer--enter-fade': fadeContentOnEnter,
132
132
  }),
133
- exit: classNames('dimmer--exit', { 'dimmer--exit-fade': fadeContentOnExit }),
133
+ exit: clsx('dimmer--exit', { 'dimmer--exit-fade': fadeContentOnExit }),
134
134
  }}
135
135
  unmountOnExit
136
136
  onEnter={onEnter}
@@ -140,7 +140,7 @@ const Dimmer = ({
140
140
  <FocusBoundary>
141
141
  <div
142
142
  ref={dimmerReference}
143
- className={classNames(
143
+ className={clsx(
144
144
  'dimmer',
145
145
  { 'dimmer--scrollable': scrollable, 'dimmer--transparent': transparent },
146
146
  className,
@@ -149,7 +149,7 @@ const Dimmer = ({
149
149
  onClick={handleClick}
150
150
  >
151
151
  <div
152
- className={classNames(
152
+ className={clsx(
153
153
  'dimmer-content-positioner',
154
154
  contentPosition != null && [
155
155
  'd-flex justify-content-center',
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { PropsWithChildren } from 'react';
3
3
 
4
4
  import { DisplayTypes, Typography } from '../common';
@@ -18,7 +18,7 @@ function Display({
18
18
  id,
19
19
  }: Props) {
20
20
  return (
21
- <Heading id={id} className={classNames(`np-text-${type}`, 'text-primary', className)}>
21
+ <Heading id={id} className={clsx(`np-text-${type}`, 'text-primary', className)}>
22
22
  {children}
23
23
  </Heading>
24
24
  );
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { useContext, useId } from 'react';
3
3
 
4
4
  import { Position, Typography } from '../common';
@@ -53,10 +53,10 @@ export default function Drawer({
53
53
  role="dialog"
54
54
  aria-modal
55
55
  aria-labelledby={headerTitle ? titleId : undefined}
56
- className={classNames('np-drawer', className)}
56
+ className={clsx('np-drawer', className)}
57
57
  >
58
58
  <div
59
- className={classNames('np-drawer-header', {
59
+ className={clsx('np-drawer-header', {
60
60
  'np-drawer-header--withborder': headerTitle,
61
61
  })}
62
62
  >
@@ -67,8 +67,8 @@ export default function Drawer({
67
67
  )}
68
68
  <CloseButton onClick={onClose} />
69
69
  </div>
70
- {children && <div className={classNames('np-drawer-content')}>{children}</div>}
71
- {footerContent && <div className={classNames('np-drawer-footer')}>{footerContent}</div>}
70
+ {children && <div className={clsx('np-drawer-content')}>{children}</div>}
71
+ {footerContent && <div className={clsx('np-drawer-footer')}>{footerContent}</div>}
72
72
  </div>
73
73
  </SlidingPanel>
74
74
  </Dimmer>
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { useId } from 'react';
3
3
 
4
4
  import { Sentiment } from '../common';
@@ -42,7 +42,7 @@ export const Field = ({
42
42
  const labelId = useId();
43
43
 
44
44
  const fallbackInputId = useId();
45
- const inputId = id !== null ? id ?? fallbackInputId : undefined;
45
+ const inputId = id !== null ? (id ?? fallbackInputId) : undefined;
46
46
 
47
47
  const descriptionId = useId();
48
48
 
@@ -52,7 +52,7 @@ export const Field = ({
52
52
  <InputDescribedByProvider value={message ? descriptionId : undefined}>
53
53
  <InputInvalidProvider value={hasError}>
54
54
  <div
55
- className={classNames(
55
+ className={clsx(
56
56
  'form-group d-block',
57
57
  {
58
58
  'has-success': sentiment === Sentiment.POSITIVE,
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { useIntl } from 'react-intl';
3
3
 
4
4
  import { Breakpoint, Layout } from '../common';
@@ -47,13 +47,12 @@ const FlowNavigation = ({
47
47
 
48
48
  return (
49
49
  <div
50
- className={classNames(
51
- 'np-flow-navigation d-flex align-items-center justify-content-center p-y-3',
52
- { 'np-flow-navigation--border-bottom': !done },
53
- )}
50
+ className={clsx('np-flow-navigation d-flex align-items-center justify-content-center p-y-3', {
51
+ 'np-flow-navigation--border-bottom': !done,
52
+ })}
54
53
  >
55
54
  <FlowHeader
56
- className={classNames(
55
+ className={clsx(
57
56
  'np-flow-navigation__content p-x-3',
58
57
  screenSm == null
59
58
  ? 'np-flow-navigation--hidden'
@@ -92,7 +91,7 @@ const FlowNavigation = ({
92
91
  <Stepper
93
92
  activeStep={activeStep}
94
93
  steps={steps}
95
- className={classNames('np-flow-navigation__stepper')}
94
+ className={clsx('np-flow-navigation__stepper')}
96
95
  />
97
96
  )
98
97
  }
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import React from 'react';
3
3
 
4
4
  import Body from '../../body';
@@ -12,13 +12,13 @@ export interface AnimatedLabelProps {
12
12
 
13
13
  const AnimatedLabel = ({ activeLabel, className, labels }: AnimatedLabelProps) => {
14
14
  return (
15
- <Body type={Typography.BODY_LARGE_BOLD} className={classNames('np-animated-label', className)}>
15
+ <Body type={Typography.BODY_LARGE_BOLD} className={clsx('np-animated-label', className)}>
16
16
  {labels.map((label, index) => {
17
17
  const nextLabel = index - 1;
18
18
  return (
19
19
  <div
20
20
  key={nextLabel}
21
- className={classNames('text-xs-center', {
21
+ className={clsx('text-xs-center', {
22
22
  'np-animated-label--in text-ellipsis': index === activeLabel,
23
23
  })}
24
24
  >
@@ -1,5 +1,5 @@
1
1
  import { ArrowLeft as ArrowLeftIcon } from '@transferwise/icons';
2
- import classNames from 'classnames';
2
+ import { clsx } from 'clsx';
3
3
 
4
4
  import Avatar, { AvatarType } from '../../avatar';
5
5
 
@@ -19,7 +19,7 @@ export default function BackButton({
19
19
  <button
20
20
  type="button"
21
21
  aria-label={ariaLabel}
22
- className={classNames('np-back-button', 'btn-unstyled', className)}
22
+ className={clsx('np-back-button', 'btn-unstyled', className)}
23
23
  onClick={onClick}
24
24
  >
25
25
  <ArrowLeftIcon size={24} />
@@ -1,5 +1,5 @@
1
1
  import { useTheme } from '@wise/components-theming';
2
- import classNames from 'classnames';
2
+ import { clsx } from 'clsx';
3
3
 
4
4
  import ActionButton, { ActionButtonProps } from '../actionButton/ActionButton';
5
5
  import Button from '../button';
@@ -71,7 +71,7 @@ export const Header = ({ action, as = 'h5', title, className }: HeaderProps) =>
71
71
  <Title
72
72
  as={as}
73
73
  type={Typography.TITLE_GROUP}
74
- className={classNames('np-header', 'np-header__title', className)}
74
+ className={clsx('np-header', 'np-header__title', className)}
75
75
  >
76
76
  {title}
77
77
  </Title>
@@ -86,7 +86,7 @@ export const Header = ({ action, as = 'h5', title, className }: HeaderProps) =>
86
86
  }
87
87
 
88
88
  return (
89
- <div className={classNames('np-header', className)}>
89
+ <div className={clsx('np-header', className)}>
90
90
  <Title as={as} type={Typography.TITLE_GROUP} className="np-header__title">
91
91
  {title}
92
92
  </Title>
@@ -23,6 +23,8 @@
23
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "選擇其中一項…",
24
24
  "neptune.Select.searchPlaceholder": "搜尋…",
25
25
  "neptune.SelectInput.noResultsFound": "找不到任何結果",
26
+ "neptune.SelectOption.action.label": "選擇",
27
+ "neptune.SelectOption.selected.action.label": "更改已選選項",
26
28
  "neptune.Summary.statusDone": "已完成事項",
27
29
  "neptune.Summary.statusNotDone": "未完成事項",
28
30
  "neptune.Summary.statusPending": "待處理事項",
@@ -1,4 +1,4 @@
1
- import classnames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { useRef } from 'react';
3
3
 
4
4
  import { useHasIntersected } from '../common/hooks';
@@ -47,7 +47,7 @@ const Image = ({
47
47
  id={id}
48
48
  alt={alt}
49
49
  src={imageSource}
50
- className={classnames([
50
+ className={clsx([
51
51
  'tw-image',
52
52
  {
53
53
  'tw-image__stretch': stretch,
package/src/info/Info.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import { QuestionMarkCircle as HelpCircleIcon } from '@transferwise/icons';
2
- import classNames from 'classnames';
2
+ import { clsx } from 'clsx';
3
3
  import { useState } from 'react';
4
4
  import { useIntl } from 'react-intl';
5
5
 
@@ -63,7 +63,7 @@ const Info = ({
63
63
 
64
64
  return (
65
65
  <span
66
- className={classNames(className, 'np-info', {
66
+ className={clsx(className, 'np-info', {
67
67
  'np-info__small': isSmall,
68
68
  'np-info__large': !isSmall,
69
69
  })}
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  import { Sentiment, Size } from '../common';
@@ -29,7 +29,7 @@ export default function InlineAlert({
29
29
  <div
30
30
  role="alert"
31
31
  id={id}
32
- className={classNames(
32
+ className={clsx(
33
33
  'alert alert-detach',
34
34
  `alert-${type === Sentiment.NEGATIVE || type === Sentiment.ERROR ? 'danger' : type}`,
35
35
  className,
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { forwardRef } from 'react';
3
3
 
4
4
  import { SizeLarge, SizeMedium, SizeSmall } from '../common';
@@ -27,7 +27,7 @@ export const Input = forwardRef(function Input(
27
27
  return (
28
28
  <input
29
29
  ref={reference}
30
- className={classNames(className, inputClassNameBase({ size }), 'np-input', {
30
+ className={clsx(className, inputClassNameBase({ size }), 'np-input', {
31
31
  'np-input--shape-rectangle': shape === 'rectangle',
32
32
  'np-input--shape-pill': shape === 'pill',
33
33
  })}
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import { clsx } from 'clsx';
2
2
  import { createContext, useContext, useMemo, useRef, useState } from 'react';
3
3
 
4
4
  import { useResizeObserver } from '../common/hooks/useResizeObserver';
@@ -77,7 +77,7 @@ export function InputGroup({
77
77
  <InputPaddingEndContext.Provider
78
78
  value={useMemo(() => [paddingEnd, setPaddingEnd], [paddingEnd])}
79
79
  >
80
- <fieldset disabled={disabled} className={classNames(className, 'np-input-group')}>
80
+ <fieldset disabled={disabled} className={clsx(className, 'np-input-group')}>
81
81
  {addonStart != null ? <InputAddon placement="start" {...addonStart} /> : null}
82
82
  {children}
83
83
  {addonEnd != null ? <InputAddon placement="end" {...addonEnd} /> : null}
@@ -135,7 +135,7 @@ function InputAddon({
135
135
  <InputInvalidProvider value={undefined}>
136
136
  <span
137
137
  ref={ref}
138
- className={classNames(
138
+ className={clsx(
139
139
  'np-input-addon',
140
140
  {
141
141
  'np-input-addon--placement-start': placement === 'start',
@@ -206,6 +206,10 @@
206
206
  height: auto;
207
207
  }
208
208
  }
209
+ .np-select-input-listbox-container--virtualized {
210
+ /* The wrapping element shrinks this as needed */
211
+ height: 100vh;
212
+ }
209
213
  .np-select-input-listbox-container--has-group {
210
214
  scroll-padding-top: 32px;
211
215
  scroll-padding-top: var(--size-32);
@@ -224,6 +228,12 @@
224
228
  outline: var(--ring-outline-color) solid var(--ring-outline-width);
225
229
  outline-offset: var(--ring-outline-offset);
226
230
  }
231
+ .np-select-input-listbox-container--virtualized .np-select-input-listbox {
232
+ /* Adopted from `VList` in virtua: https://github.com/inokawa/virtua/blob/7f6ed5b37df6b480d4ff350f3960067c5b3519d2/src/react/VList.tsx#L113-L116 */
233
+ overflow-y: auto;
234
+ contain: strict;
235
+ height: 100%;
236
+ }
227
237
  .np-select-input-separator-item {
228
238
  margin: 8px;
229
239
  margin: var(--size-8);
@@ -60,6 +60,11 @@
60
60
  }
61
61
  }
62
62
 
63
+ &--virtualized {
64
+ /* The wrapping element shrinks this as needed */
65
+ height: 100vh;
66
+ }
67
+
63
68
  &--has-group {
64
69
  scroll-padding-top: var(--size-32);
65
70
  }
@@ -71,6 +76,13 @@
71
76
 
72
77
  .focus-ring();
73
78
  --ring-outline-offset: calc(-1 * var(--ring-outline-width));
79
+
80
+ .np-select-input-listbox-container--virtualized & {
81
+ /* Adopted from `VList` in virtua: https://github.com/inokawa/virtua/blob/7f6ed5b37df6b480d4ff350f3960067c5b3519d2/src/react/VList.tsx#L113-L116 */
82
+ overflow-y: auto;
83
+ contain: strict;
84
+ height: 100%;
85
+ }
74
86
  }
75
87
 
76
88
  .np-select-input-separator-item {
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { expect, fn, screen, userEvent, within, type Mock } from '@storybook/test';
3
3
  import { Calendar, ChevronDown } from '@transferwise/icons';
4
4
  import { Flag } from '@wise/art';
5
- import classNames from 'classnames';
5
+ import { clsx } from 'clsx';
6
6
  import { useState } from 'react';
7
7
 
8
8
  import Button from '../button/Button';
@@ -260,7 +260,7 @@ export const CustomTrigger: Story<Month> = {
260
260
  withinTrigger ? month.name : <SelectInputOptionContent title={month.name} />,
261
261
  renderTrigger: ({ content, className }) => (
262
262
  <SelectInputTriggerButton
263
- className={classNames(className, 'btn-unstyled np-text-link-large align-items-center')}
263
+ className={clsx(className, 'btn-unstyled np-text-link-large align-items-center')}
264
264
  style={{ display: 'inline-flex', columnGap: '0.25rem' }}
265
265
  >
266
266
  {content}
@@ -322,6 +322,26 @@ export const Advanced: Story<Month> = {
322
322
  },
323
323
  };
324
324
 
325
+ export const ManyItems: Story<string, true> = {
326
+ args: {
327
+ multiple: true,
328
+ items: Array.from({ length: 1000 }, (_, index) => ({
329
+ type: 'option',
330
+ value: String(index + 1),
331
+ })),
332
+ renderValue: (value, withinTrigger) =>
333
+ withinTrigger ? (
334
+ value
335
+ ) : (
336
+ <SelectInputOptionContent
337
+ title={value}
338
+ description={Number(value) % 10 === 0 ? 'Divisible by 10' : undefined}
339
+ />
340
+ ),
341
+ filterable: true,
342
+ },
343
+ };
344
+
325
345
  export const WithinDrawer: Story<Currency> = {
326
346
  args: CurrenciesArgs,
327
347
  decorators: [