@transferwise/components 0.0.0-experimental-c7da7db → 0.0.0-experimental-b03ca75

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 (434) hide show
  1. package/build/accordion/AccordionItem/AccordionItem.js +0 -1
  2. package/build/accordion/AccordionItem/AccordionItem.js.map +1 -1
  3. package/build/accordion/AccordionItem/AccordionItem.mjs +0 -1
  4. package/build/accordion/AccordionItem/AccordionItem.mjs.map +1 -1
  5. package/build/actionButton/ActionButton.js +0 -1
  6. package/build/actionButton/ActionButton.js.map +1 -1
  7. package/build/actionButton/ActionButton.mjs +0 -1
  8. package/build/actionButton/ActionButton.mjs.map +1 -1
  9. package/build/actionOption/ActionOption.js +0 -1
  10. package/build/actionOption/ActionOption.js.map +1 -1
  11. package/build/actionOption/ActionOption.mjs +0 -1
  12. package/build/actionOption/ActionOption.mjs.map +1 -1
  13. package/build/alert/Alert.js +0 -1
  14. package/build/alert/Alert.js.map +1 -1
  15. package/build/alert/Alert.mjs +0 -1
  16. package/build/alert/Alert.mjs.map +1 -1
  17. package/build/alert/inlineMarkdown/InlineMarkdown.js +0 -1
  18. package/build/alert/inlineMarkdown/InlineMarkdown.js.map +1 -1
  19. package/build/alert/inlineMarkdown/InlineMarkdown.mjs +0 -1
  20. package/build/alert/inlineMarkdown/InlineMarkdown.mjs.map +1 -1
  21. package/build/avatar/Avatar.js +0 -1
  22. package/build/avatar/Avatar.js.map +1 -1
  23. package/build/avatar/Avatar.mjs +0 -1
  24. package/build/avatar/Avatar.mjs.map +1 -1
  25. package/build/avatarView/AvatarView.js +0 -1
  26. package/build/avatarView/AvatarView.js.map +1 -1
  27. package/build/avatarView/AvatarView.mjs +0 -1
  28. package/build/avatarView/AvatarView.mjs.map +1 -1
  29. package/build/avatarWrapper/AvatarWrapper.js +0 -1
  30. package/build/avatarWrapper/AvatarWrapper.js.map +1 -1
  31. package/build/avatarWrapper/AvatarWrapper.mjs +0 -1
  32. package/build/avatarWrapper/AvatarWrapper.mjs.map +1 -1
  33. package/build/badge/Badge.js +0 -1
  34. package/build/badge/Badge.js.map +1 -1
  35. package/build/badge/Badge.mjs +0 -1
  36. package/build/badge/Badge.mjs.map +1 -1
  37. package/build/button/Button.js +0 -1
  38. package/build/button/Button.js.map +1 -1
  39. package/build/button/Button.mjs +0 -1
  40. package/build/button/Button.mjs.map +1 -1
  41. package/build/button/LegacyButton.js +0 -1
  42. package/build/button/LegacyButton.js.map +1 -1
  43. package/build/button/LegacyButton.mjs +0 -1
  44. package/build/button/LegacyButton.mjs.map +1 -1
  45. package/build/button/classMap.js +0 -1
  46. package/build/button/classMap.js.map +1 -1
  47. package/build/button/classMap.mjs +0 -1
  48. package/build/button/classMap.mjs.map +1 -1
  49. package/build/button/legacyUtils/legacyUtils.js +0 -1
  50. package/build/button/legacyUtils/legacyUtils.js.map +1 -1
  51. package/build/button/legacyUtils/legacyUtils.mjs +0 -1
  52. package/build/button/legacyUtils/legacyUtils.mjs.map +1 -1
  53. package/build/card/Card.js +0 -1
  54. package/build/card/Card.js.map +1 -1
  55. package/build/card/Card.mjs +0 -1
  56. package/build/card/Card.mjs.map +1 -1
  57. package/build/checkbox/Checkbox.js +0 -1
  58. package/build/checkbox/Checkbox.js.map +1 -1
  59. package/build/checkbox/Checkbox.mjs +0 -1
  60. package/build/checkbox/Checkbox.mjs.map +1 -1
  61. package/build/chevron/Chevron.js +0 -1
  62. package/build/chevron/Chevron.js.map +1 -1
  63. package/build/chevron/Chevron.mjs +0 -1
  64. package/build/chevron/Chevron.mjs.map +1 -1
  65. package/build/chips/Chip.js +0 -1
  66. package/build/chips/Chip.js.map +1 -1
  67. package/build/chips/Chip.mjs +0 -1
  68. package/build/chips/Chip.mjs.map +1 -1
  69. package/build/circularButton/CircularButton.js +0 -1
  70. package/build/circularButton/CircularButton.js.map +1 -1
  71. package/build/circularButton/CircularButton.mjs +0 -1
  72. package/build/circularButton/CircularButton.mjs.map +1 -1
  73. package/build/common/locale/index.js +4 -9
  74. package/build/common/locale/index.js.map +1 -1
  75. package/build/common/locale/index.mjs +4 -9
  76. package/build/common/locale/index.mjs.map +1 -1
  77. package/build/common/panel/Panel.js +56 -41
  78. package/build/common/panel/Panel.js.map +1 -1
  79. package/build/common/panel/Panel.mjs +61 -46
  80. package/build/common/panel/Panel.mjs.map +1 -1
  81. package/build/common/responsivePanel/ResponsivePanel.js +0 -1
  82. package/build/common/responsivePanel/ResponsivePanel.js.map +1 -1
  83. package/build/common/responsivePanel/ResponsivePanel.mjs +0 -1
  84. package/build/common/responsivePanel/ResponsivePanel.mjs.map +1 -1
  85. package/build/criticalBanner/CriticalCommsBanner.js +0 -1
  86. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  87. package/build/criticalBanner/CriticalCommsBanner.mjs +0 -1
  88. package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
  89. package/build/dateInput/DateInput.js +1 -1
  90. package/build/dateInput/DateInput.mjs +1 -1
  91. package/build/dateLookup/DateLookup.js +1 -1
  92. package/build/dateLookup/DateLookup.mjs +1 -1
  93. package/build/dateLookup/dateHeader/DateHeader.js +0 -1
  94. package/build/dateLookup/dateHeader/DateHeader.js.map +1 -1
  95. package/build/dateLookup/dateHeader/DateHeader.mjs +0 -1
  96. package/build/dateLookup/dateHeader/DateHeader.mjs.map +1 -1
  97. package/build/decision/Decision.js +0 -1
  98. package/build/decision/Decision.js.map +1 -1
  99. package/build/decision/Decision.mjs +0 -1
  100. package/build/decision/Decision.mjs.map +1 -1
  101. package/build/definitionList/DefinitionList.js +0 -1
  102. package/build/definitionList/DefinitionList.js.map +1 -1
  103. package/build/definitionList/DefinitionList.mjs +0 -1
  104. package/build/definitionList/DefinitionList.mjs.map +1 -1
  105. package/build/dimmer/Dimmer.js +0 -1
  106. package/build/dimmer/Dimmer.js.map +1 -1
  107. package/build/dimmer/Dimmer.mjs +0 -1
  108. package/build/dimmer/Dimmer.mjs.map +1 -1
  109. package/build/display/Display.js +0 -1
  110. package/build/display/Display.js.map +1 -1
  111. package/build/display/Display.mjs +0 -1
  112. package/build/display/Display.mjs.map +1 -1
  113. package/build/drawer/Drawer.js +0 -1
  114. package/build/drawer/Drawer.js.map +1 -1
  115. package/build/drawer/Drawer.mjs +0 -1
  116. package/build/drawer/Drawer.mjs.map +1 -1
  117. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js +3 -4
  118. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js.map +1 -1
  119. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs +3 -4
  120. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs.map +1 -1
  121. package/build/field/Field.js +5 -5
  122. package/build/field/Field.mjs +5 -5
  123. package/build/flowNavigation/FlowNavigation.js +0 -1
  124. package/build/flowNavigation/FlowNavigation.js.map +1 -1
  125. package/build/flowNavigation/FlowNavigation.mjs +0 -1
  126. package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
  127. package/build/header/Header.js +0 -1
  128. package/build/header/Header.js.map +1 -1
  129. package/build/header/Header.mjs +0 -1
  130. package/build/header/Header.mjs.map +1 -1
  131. package/build/i18n/en.json +2 -0
  132. package/build/i18n/en.json.js +2 -0
  133. package/build/i18n/en.json.js.map +1 -1
  134. package/build/i18n/en.json.mjs +2 -0
  135. package/build/i18n/en.json.mjs.map +1 -1
  136. package/build/index.js +2 -0
  137. package/build/index.js.map +1 -1
  138. package/build/index.mjs +1 -0
  139. package/build/index.mjs.map +1 -1
  140. package/build/info/Info.js +0 -1
  141. package/build/info/Info.js.map +1 -1
  142. package/build/info/Info.mjs +0 -1
  143. package/build/info/Info.mjs.map +1 -1
  144. package/build/inlineAlert/InlineAlert.js +0 -1
  145. package/build/inlineAlert/InlineAlert.js.map +1 -1
  146. package/build/inlineAlert/InlineAlert.mjs +0 -1
  147. package/build/inlineAlert/InlineAlert.mjs.map +1 -1
  148. package/build/inputs/SearchInput.js +0 -1
  149. package/build/inputs/SearchInput.js.map +1 -1
  150. package/build/inputs/SearchInput.mjs +0 -1
  151. package/build/inputs/SearchInput.mjs.map +1 -1
  152. package/build/instructionsList/InstructionsList.js +0 -1
  153. package/build/instructionsList/InstructionsList.js.map +1 -1
  154. package/build/instructionsList/InstructionsList.mjs +0 -1
  155. package/build/instructionsList/InstructionsList.mjs.map +1 -1
  156. package/build/link/Link.js +0 -1
  157. package/build/link/Link.js.map +1 -1
  158. package/build/link/Link.mjs +0 -1
  159. package/build/link/Link.mjs.map +1 -1
  160. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.js +0 -1
  161. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.js.map +1 -1
  162. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.mjs +0 -1
  163. package/build/listItem/AdditionalInfo/ListItemAdditionalInfo.mjs.map +1 -1
  164. package/build/listItem/ListItem.js +0 -1
  165. package/build/listItem/ListItem.js.map +1 -1
  166. package/build/listItem/ListItem.mjs +0 -1
  167. package/build/listItem/ListItem.mjs.map +1 -1
  168. package/build/listItem/Prompt/ListItemPrompt.js +5 -5
  169. package/build/listItem/Prompt/ListItemPrompt.mjs +5 -5
  170. package/build/loader/Loader.js +0 -1
  171. package/build/loader/Loader.js.map +1 -1
  172. package/build/loader/Loader.mjs +0 -1
  173. package/build/loader/Loader.mjs.map +1 -1
  174. package/build/main.css +130 -51
  175. package/build/markdown/Markdown.js +0 -1
  176. package/build/markdown/Markdown.js.map +1 -1
  177. package/build/markdown/Markdown.mjs +0 -1
  178. package/build/markdown/Markdown.mjs.map +1 -1
  179. package/build/modal/Modal.js +0 -1
  180. package/build/modal/Modal.js.map +1 -1
  181. package/build/modal/Modal.mjs +0 -1
  182. package/build/modal/Modal.mjs.map +1 -1
  183. package/build/moneyInput/MoneyInput.js +12 -28
  184. package/build/moneyInput/MoneyInput.js.map +1 -1
  185. package/build/moneyInput/MoneyInput.mjs +14 -30
  186. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  187. package/build/moneyInput/currencyFormatting.js +2 -8
  188. package/build/moneyInput/currencyFormatting.js.map +1 -1
  189. package/build/moneyInput/currencyFormatting.mjs +4 -5
  190. package/build/moneyInput/currencyFormatting.mjs.map +1 -1
  191. package/build/navigationOption/NavigationOption.js +0 -1
  192. package/build/navigationOption/NavigationOption.js.map +1 -1
  193. package/build/navigationOption/NavigationOption.mjs +0 -1
  194. package/build/navigationOption/NavigationOption.mjs.map +1 -1
  195. package/build/nudge/Nudge.js +0 -1
  196. package/build/nudge/Nudge.js.map +1 -1
  197. package/build/nudge/Nudge.mjs +0 -1
  198. package/build/nudge/Nudge.mjs.map +1 -1
  199. package/build/overlayHeader/OverlayHeader.js +0 -1
  200. package/build/overlayHeader/OverlayHeader.js.map +1 -1
  201. package/build/overlayHeader/OverlayHeader.mjs +0 -1
  202. package/build/overlayHeader/OverlayHeader.mjs.map +1 -1
  203. package/build/phoneNumberInput/PhoneNumberInput.js +0 -1
  204. package/build/phoneNumberInput/PhoneNumberInput.js.map +1 -1
  205. package/build/phoneNumberInput/PhoneNumberInput.mjs +0 -1
  206. package/build/phoneNumberInput/PhoneNumberInput.mjs.map +1 -1
  207. package/build/popover/Popover.js +0 -1
  208. package/build/popover/Popover.js.map +1 -1
  209. package/build/popover/Popover.mjs +0 -1
  210. package/build/popover/Popover.mjs.map +1 -1
  211. package/build/processIndicator/ProcessIndicator.js +0 -1
  212. package/build/processIndicator/ProcessIndicator.js.map +1 -1
  213. package/build/processIndicator/ProcessIndicator.mjs +0 -1
  214. package/build/processIndicator/ProcessIndicator.mjs.map +1 -1
  215. package/build/progressBar/ProgressBar.js +0 -1
  216. package/build/progressBar/ProgressBar.js.map +1 -1
  217. package/build/progressBar/ProgressBar.mjs +0 -1
  218. package/build/progressBar/ProgressBar.mjs.map +1 -1
  219. package/build/promoCard/PromoCard.js +0 -1
  220. package/build/promoCard/PromoCard.js.map +1 -1
  221. package/build/promoCard/PromoCard.mjs +0 -1
  222. package/build/promoCard/PromoCard.mjs.map +1 -1
  223. package/build/promoCard/PromoCardIndicator.js +0 -1
  224. package/build/promoCard/PromoCardIndicator.js.map +1 -1
  225. package/build/promoCard/PromoCardIndicator.mjs +0 -1
  226. package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
  227. package/build/prompt/ActionPrompt/ActionPrompt.js +8 -41
  228. package/build/prompt/ActionPrompt/ActionPrompt.js.map +1 -1
  229. package/build/prompt/ActionPrompt/ActionPrompt.mjs +8 -41
  230. package/build/prompt/ActionPrompt/ActionPrompt.mjs.map +1 -1
  231. package/build/prompt/CriticalBanner/CriticalBanner.js +148 -0
  232. package/build/prompt/CriticalBanner/CriticalBanner.js.map +1 -0
  233. package/build/prompt/CriticalBanner/CriticalBanner.mjs +146 -0
  234. package/build/prompt/CriticalBanner/CriticalBanner.mjs.map +1 -0
  235. package/build/prompt/CriticalBanner/helpers.js +29 -0
  236. package/build/prompt/CriticalBanner/helpers.js.map +1 -0
  237. package/build/prompt/CriticalBanner/helpers.mjs +26 -0
  238. package/build/prompt/CriticalBanner/helpers.mjs.map +1 -0
  239. package/build/prompt/InfoPrompt/InfoPrompt.js +0 -1
  240. package/build/prompt/InfoPrompt/InfoPrompt.js.map +1 -1
  241. package/build/prompt/InfoPrompt/InfoPrompt.mjs +0 -1
  242. package/build/prompt/InfoPrompt/InfoPrompt.mjs.map +1 -1
  243. package/build/prompt/InlinePrompt/InlinePrompt.js +0 -1
  244. package/build/prompt/InlinePrompt/InlinePrompt.js.map +1 -1
  245. package/build/prompt/InlinePrompt/InlinePrompt.mjs +0 -1
  246. package/build/prompt/InlinePrompt/InlinePrompt.mjs.map +1 -1
  247. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js +2 -0
  248. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
  249. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs +2 -0
  250. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
  251. package/build/prompt/common/Expander/Expander.js +47 -0
  252. package/build/prompt/common/Expander/Expander.js.map +1 -0
  253. package/build/prompt/common/Expander/Expander.messages.js +17 -0
  254. package/build/prompt/common/Expander/Expander.messages.js.map +1 -0
  255. package/build/prompt/common/Expander/Expander.messages.mjs +13 -0
  256. package/build/prompt/common/Expander/Expander.messages.mjs.map +1 -0
  257. package/build/prompt/common/Expander/Expander.mjs +44 -0
  258. package/build/prompt/common/Expander/Expander.mjs.map +1 -0
  259. package/build/prompt/helpers/promptMedia.js +52 -0
  260. package/build/prompt/helpers/promptMedia.js.map +1 -0
  261. package/build/prompt/helpers/promptMedia.mjs +50 -0
  262. package/build/prompt/helpers/promptMedia.mjs.map +1 -0
  263. package/build/radio/Radio.js +0 -1
  264. package/build/radio/Radio.js.map +1 -1
  265. package/build/radio/Radio.mjs +0 -1
  266. package/build/radio/Radio.mjs.map +1 -1
  267. package/build/segmentedControl/SegmentedControl.js +0 -1
  268. package/build/segmentedControl/SegmentedControl.js.map +1 -1
  269. package/build/segmentedControl/SegmentedControl.mjs +0 -1
  270. package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
  271. package/build/select/Select.js +0 -1
  272. package/build/select/Select.js.map +1 -1
  273. package/build/select/Select.mjs +0 -1
  274. package/build/select/Select.mjs.map +1 -1
  275. package/build/select/option/Option.js +0 -1
  276. package/build/select/option/Option.js.map +1 -1
  277. package/build/select/option/Option.mjs +0 -1
  278. package/build/select/option/Option.mjs.map +1 -1
  279. package/build/statusIcon/StatusIcon.js +0 -1
  280. package/build/statusIcon/StatusIcon.js.map +1 -1
  281. package/build/statusIcon/StatusIcon.mjs +0 -1
  282. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  283. package/build/stepper/Stepper.js +0 -1
  284. package/build/stepper/Stepper.js.map +1 -1
  285. package/build/stepper/Stepper.mjs +0 -1
  286. package/build/stepper/Stepper.mjs.map +1 -1
  287. package/build/sticky/Sticky.js +0 -1
  288. package/build/sticky/Sticky.js.map +1 -1
  289. package/build/sticky/Sticky.mjs +0 -1
  290. package/build/sticky/Sticky.mjs.map +1 -1
  291. package/build/styles/css/neptune.css +22 -22
  292. package/build/styles/less/neptune-tokens.less +4 -4
  293. package/build/styles/main.css +130 -51
  294. package/build/styles/prompt/CriticalBanner/CriticalBanner.css +59 -0
  295. package/build/styles/prompt/common/Expander/Expander.css +8 -0
  296. package/build/styles/props/neptune-tokens.css +2 -2
  297. package/build/styles/styles/less/neptune.css +22 -22
  298. package/build/summary/Summary.js +0 -1
  299. package/build/summary/Summary.js.map +1 -1
  300. package/build/summary/Summary.mjs +0 -1
  301. package/build/summary/Summary.mjs.map +1 -1
  302. package/build/table/Table.js +0 -1
  303. package/build/table/Table.js.map +1 -1
  304. package/build/table/Table.mjs +0 -1
  305. package/build/table/Table.mjs.map +1 -1
  306. package/build/table/TableRow.js +0 -1
  307. package/build/table/TableRow.js.map +1 -1
  308. package/build/table/TableRow.mjs +0 -1
  309. package/build/table/TableRow.mjs.map +1 -1
  310. package/build/table/TableStatusText.js +0 -1
  311. package/build/table/TableStatusText.js.map +1 -1
  312. package/build/table/TableStatusText.mjs +0 -1
  313. package/build/table/TableStatusText.mjs.map +1 -1
  314. package/build/tabs/Tabs.js +0 -1
  315. package/build/tabs/Tabs.js.map +1 -1
  316. package/build/tabs/Tabs.mjs +0 -1
  317. package/build/tabs/Tabs.mjs.map +1 -1
  318. package/build/tile/Tile.js +0 -1
  319. package/build/tile/Tile.js.map +1 -1
  320. package/build/tile/Tile.mjs +0 -1
  321. package/build/tile/Tile.mjs.map +1 -1
  322. package/build/title/Title.js +0 -1
  323. package/build/title/Title.js.map +1 -1
  324. package/build/title/Title.mjs +0 -1
  325. package/build/title/Title.mjs.map +1 -1
  326. package/build/tooltip/Tooltip.js +50 -30
  327. package/build/tooltip/Tooltip.js.map +1 -1
  328. package/build/tooltip/Tooltip.mjs +51 -31
  329. package/build/tooltip/Tooltip.mjs.map +1 -1
  330. package/build/typeahead/Typeahead.js +5 -5
  331. package/build/typeahead/Typeahead.mjs +5 -5
  332. package/build/types/common/locale/index.d.ts +1 -1
  333. package/build/types/common/locale/index.d.ts.map +1 -1
  334. package/build/types/common/panel/Panel.d.ts.map +1 -1
  335. package/build/types/expressiveMoneyInput/currencySelector/CurrencySelector.d.ts.map +1 -1
  336. package/build/types/index.d.ts +2 -2
  337. package/build/types/index.d.ts.map +1 -1
  338. package/build/types/moneyInput/MoneyInput.d.ts +0 -6
  339. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  340. package/build/types/moneyInput/currencyFormatting.d.ts +3 -4
  341. package/build/types/moneyInput/currencyFormatting.d.ts.map +1 -1
  342. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts +2 -11
  343. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts.map +1 -1
  344. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts +40 -0
  345. package/build/types/prompt/CriticalBanner/CriticalBanner.d.ts.map +1 -0
  346. package/build/types/prompt/CriticalBanner/helpers.d.ts +18 -0
  347. package/build/types/prompt/CriticalBanner/helpers.d.ts.map +1 -0
  348. package/build/types/prompt/CriticalBanner/index.d.ts +3 -0
  349. package/build/types/prompt/CriticalBanner/index.d.ts.map +1 -0
  350. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts +8 -3
  351. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
  352. package/build/types/prompt/common/Expander/Expander.d.ts +20 -0
  353. package/build/types/prompt/common/Expander/Expander.d.ts.map +1 -0
  354. package/build/types/prompt/common/Expander/Expander.messages.d.ts +14 -0
  355. package/build/types/prompt/common/Expander/Expander.messages.d.ts.map +1 -0
  356. package/build/types/prompt/helpers/promptMedia.d.ts +22 -0
  357. package/build/types/prompt/helpers/promptMedia.d.ts.map +1 -0
  358. package/build/types/prompt/index.d.ts +2 -0
  359. package/build/types/prompt/index.d.ts.map +1 -1
  360. package/build/types/test-utils/index.d.ts +4 -0
  361. package/build/types/test-utils/index.d.ts.map +1 -1
  362. package/build/types/tooltip/Tooltip.d.ts.map +1 -1
  363. package/build/upload/Upload.js +0 -1
  364. package/build/upload/Upload.js.map +1 -1
  365. package/build/upload/Upload.mjs +0 -1
  366. package/build/upload/Upload.mjs.map +1 -1
  367. package/build/upload/steps/completeStep/completeStep.js +0 -1
  368. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  369. package/build/upload/steps/completeStep/completeStep.mjs +0 -1
  370. package/build/upload/steps/completeStep/completeStep.mjs.map +1 -1
  371. package/build/upload/steps/processingStep/processingStep.js +0 -1
  372. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  373. package/build/upload/steps/processingStep/processingStep.mjs +0 -1
  374. package/build/upload/steps/processingStep/processingStep.mjs.map +1 -1
  375. package/build/upload/steps/uploadImageStep/uploadImageStep.js +0 -1
  376. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  377. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +0 -1
  378. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  379. package/build/uploadInput/UploadInput.js +0 -1
  380. package/build/uploadInput/UploadInput.js.map +1 -1
  381. package/build/uploadInput/UploadInput.mjs +0 -1
  382. package/build/uploadInput/UploadInput.mjs.map +1 -1
  383. package/build/uploadInput/uploadButton/UploadButton.js +0 -1
  384. package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
  385. package/build/uploadInput/uploadButton/UploadButton.mjs +0 -1
  386. package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
  387. package/build/uploadInput/uploadButton/defaults.js +0 -1
  388. package/build/uploadInput/uploadButton/defaults.js.map +1 -1
  389. package/build/uploadInput/uploadButton/defaults.mjs +0 -1
  390. package/build/uploadInput/uploadButton/defaults.mjs.map +1 -1
  391. package/build/uploadInput/uploadItem/UploadItem.js +0 -1
  392. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  393. package/build/uploadInput/uploadItem/UploadItem.mjs +0 -1
  394. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  395. package/build/withDisplayFormat/WithDisplayFormat.js +0 -1
  396. package/build/withDisplayFormat/WithDisplayFormat.js.map +1 -1
  397. package/build/withDisplayFormat/WithDisplayFormat.mjs +0 -1
  398. package/build/withDisplayFormat/WithDisplayFormat.mjs.map +1 -1
  399. package/package.json +16 -14
  400. package/src/common/locale/index.test.ts +4 -13
  401. package/src/common/locale/index.ts +3 -9
  402. package/src/common/panel/Panel.tsx +50 -42
  403. package/src/expressiveMoneyInput/ExpressiveMoneyInput.story.tsx +0 -18
  404. package/src/expressiveMoneyInput/currencySelector/CurrencySelector.test.tsx +1 -119
  405. package/src/expressiveMoneyInput/currencySelector/CurrencySelector.tsx +3 -4
  406. package/src/i18n/en.json +2 -0
  407. package/src/index.ts +2 -2
  408. package/src/main.css +130 -51
  409. package/src/main.less +3 -1
  410. package/src/moneyInput/MoneyInput.story.tsx +1 -10
  411. package/src/moneyInput/MoneyInput.test.story.tsx +1 -141
  412. package/src/moneyInput/MoneyInput.test.tsx +0 -45
  413. package/src/moneyInput/MoneyInput.tsx +3 -27
  414. package/src/moneyInput/currencyFormatting.ts +5 -11
  415. package/src/prompt/ActionPrompt/ActionPrompt.tsx +9 -62
  416. package/src/prompt/CriticalBanner/CriticalBanner.accessibility.docs.mdx +131 -0
  417. package/src/prompt/CriticalBanner/CriticalBanner.css +59 -0
  418. package/src/prompt/CriticalBanner/CriticalBanner.less +64 -0
  419. package/src/prompt/CriticalBanner/CriticalBanner.story.tsx +645 -0
  420. package/src/prompt/CriticalBanner/CriticalBanner.test.story.tsx +304 -0
  421. package/src/prompt/CriticalBanner/CriticalBanner.tsx +194 -0
  422. package/src/prompt/CriticalBanner/helpers.ts +39 -0
  423. package/src/prompt/CriticalBanner/index.ts +2 -0
  424. package/src/prompt/PrimitivePrompt/PrimitivePrompt.tsx +9 -2
  425. package/src/prompt/common/Expander/Expander.css +8 -0
  426. package/src/prompt/common/Expander/Expander.less +9 -0
  427. package/src/prompt/common/Expander/Expander.messages.ts +14 -0
  428. package/src/prompt/common/Expander/Expander.test.tsx +167 -0
  429. package/src/prompt/common/Expander/Expander.tsx +83 -0
  430. package/src/prompt/helpers/promptMedia.tsx +79 -0
  431. package/src/prompt/index.ts +4 -0
  432. package/src/sentimentSurface/SentimentSurface.story.tsx +43 -17
  433. package/src/styles/less/neptune.css +22 -22
  434. package/src/tooltip/Tooltip.tsx +45 -26
@@ -0,0 +1,167 @@
1
+ import { renderHook, act, screen } from '@testing-library/react';
2
+ import userEvent from '@testing-library/user-event';
3
+
4
+ import { useExpanderState, shouldShowWhenExpanded, ExpanderToggle } from './Expander';
5
+ import { mockMatchMedia, render } from '../../../test-utils';
6
+
7
+ mockMatchMedia();
8
+
9
+ describe('useExpanderState', () => {
10
+ it('initializes with default expanded state (true)', () => {
11
+ const { result } = renderHook(() => useExpanderState());
12
+
13
+ expect(result.current.expanded).toBe(true);
14
+ });
15
+
16
+ it('initializes with custom expanded state', () => {
17
+ const { result } = renderHook(() => useExpanderState(false));
18
+
19
+ expect(result.current.expanded).toBe(false);
20
+ });
21
+
22
+ it('toggles expanded state', () => {
23
+ const { result } = renderHook(() => useExpanderState(true));
24
+
25
+ expect(result.current.expanded).toBe(true);
26
+
27
+ act(() => {
28
+ result.current.toggle();
29
+ });
30
+
31
+ expect(result.current.expanded).toBe(false);
32
+
33
+ act(() => {
34
+ result.current.toggle();
35
+ });
36
+
37
+ expect(result.current.expanded).toBe(true);
38
+ });
39
+
40
+ it('sets expanded state programmatically', () => {
41
+ const { result } = renderHook(() => useExpanderState(true));
42
+
43
+ act(() => {
44
+ result.current.setExpanded(false);
45
+ });
46
+
47
+ expect(result.current.expanded).toBe(false);
48
+
49
+ act(() => {
50
+ result.current.setExpanded(true);
51
+ });
52
+
53
+ expect(result.current.expanded).toBe(true);
54
+ });
55
+
56
+ it('memoizes toggle callback', () => {
57
+ const { result, rerender } = renderHook(() => useExpanderState(true));
58
+
59
+ const firstToggle = result.current.toggle;
60
+
61
+ rerender();
62
+
63
+ expect(result.current.toggle).toBe(firstToggle);
64
+ });
65
+ });
66
+
67
+ describe('shouldShowWhenExpanded', () => {
68
+ it('returns false when hasContent is false', () => {
69
+ expect(shouldShowWhenExpanded({ expanded: true, hasContent: false })).toBe(false);
70
+ expect(shouldShowWhenExpanded({ expanded: false, hasContent: false })).toBe(false);
71
+ });
72
+
73
+ it('returns true when expanded and hasContent are true', () => {
74
+ expect(shouldShowWhenExpanded({ expanded: true, hasContent: true })).toBe(true);
75
+ });
76
+
77
+ it('returns false when collapsed but hasContent is true', () => {
78
+ expect(shouldShowWhenExpanded({ expanded: false, hasContent: true })).toBe(false);
79
+ });
80
+
81
+ it('returns true when alwaysShow is true and hasContent is true, regardless of expanded', () => {
82
+ expect(shouldShowWhenExpanded({ expanded: true, hasContent: true, alwaysShow: true })).toBe(
83
+ true,
84
+ );
85
+ expect(shouldShowWhenExpanded({ expanded: false, hasContent: true, alwaysShow: true })).toBe(
86
+ true,
87
+ );
88
+ });
89
+
90
+ it('returns false when alwaysShow is true but hasContent is false', () => {
91
+ expect(shouldShowWhenExpanded({ expanded: true, hasContent: false, alwaysShow: true })).toBe(
92
+ false,
93
+ );
94
+ expect(shouldShowWhenExpanded({ expanded: false, hasContent: false, alwaysShow: true })).toBe(
95
+ false,
96
+ );
97
+ });
98
+ });
99
+
100
+ describe('ExpanderToggle', () => {
101
+ it('renders with correct aria-label when expanded', () => {
102
+ render(<ExpanderToggle expanded onToggle={jest.fn()} />);
103
+
104
+ expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'Collapse');
105
+ });
106
+
107
+ it('renders with correct aria-label when collapsed', () => {
108
+ render(<ExpanderToggle expanded={false} onToggle={jest.fn()} />);
109
+
110
+ expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'Expand');
111
+ });
112
+
113
+ it('renders with custom labels', () => {
114
+ const { rerender } = render(<ExpanderToggle expanded onToggle={jest.fn()} />);
115
+
116
+ expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'Collapse');
117
+
118
+ rerender(<ExpanderToggle expanded={false} onToggle={jest.fn()} />);
119
+
120
+ expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'Expand');
121
+ });
122
+
123
+ it('sets aria-expanded attribute correctly', () => {
124
+ const { rerender } = render(<ExpanderToggle expanded onToggle={jest.fn()} />);
125
+
126
+ expect(screen.getByRole('button')).toHaveAttribute('aria-expanded', 'true');
127
+
128
+ rerender(<ExpanderToggle expanded={false} onToggle={jest.fn()} />);
129
+
130
+ expect(screen.getByRole('button')).toHaveAttribute('aria-expanded', 'false');
131
+ });
132
+
133
+ it('calls onToggle when clicked', async () => {
134
+ const user = userEvent.setup();
135
+ const onToggle = jest.fn();
136
+
137
+ render(<ExpanderToggle expanded onToggle={onToggle} />);
138
+
139
+ await user.click(screen.getByRole('button'));
140
+
141
+ expect(onToggle).toHaveBeenCalledTimes(1);
142
+ });
143
+
144
+ it('applies custom className', () => {
145
+ render(<ExpanderToggle expanded className="custom-class" onToggle={jest.fn()} />);
146
+
147
+ expect(screen.getByRole('button')).toHaveClass('custom-class');
148
+ });
149
+
150
+ it('applies base class and collapsed class correctly', () => {
151
+ const { rerender } = render(<ExpanderToggle expanded onToggle={jest.fn()} />);
152
+
153
+ expect(screen.getByRole('button')).toHaveClass('wds-expander-toggle');
154
+ expect(screen.getByRole('button')).not.toHaveClass('wds-expander-toggle--collapsed');
155
+
156
+ rerender(<ExpanderToggle expanded={false} onToggle={jest.fn()} />);
157
+
158
+ expect(screen.getByRole('button')).toHaveClass('wds-expander-toggle');
159
+ expect(screen.getByRole('button')).toHaveClass('wds-expander-toggle--collapsed');
160
+ });
161
+
162
+ it('applies data-testid attribute', () => {
163
+ render(<ExpanderToggle expanded data-testid="expander-toggle" onToggle={jest.fn()} />);
164
+
165
+ expect(screen.getByTestId('expander-toggle')).toBeInTheDocument();
166
+ });
167
+ });
@@ -0,0 +1,83 @@
1
+ import { useState, useCallback } from 'react';
2
+ import { clsx } from 'clsx';
3
+ import { ChevronUp } from '@transferwise/icons';
4
+ import IconButton from '../../../iconButton';
5
+ import { useIntl } from 'react-intl';
6
+ import messages from './Expander.messages';
7
+
8
+ export type ExpanderState = {
9
+ expanded: boolean;
10
+ toggle: () => void;
11
+ setExpanded: (expanded: boolean) => void;
12
+ };
13
+
14
+ // Hook for managing expander state
15
+ export function useExpanderState(initialExpanded = true): ExpanderState {
16
+ const [expanded, setExpanded] = useState(initialExpanded);
17
+
18
+ const toggle = useCallback(() => {
19
+ setExpanded((prev) => !prev);
20
+ }, []);
21
+
22
+ return {
23
+ expanded,
24
+ toggle,
25
+ setExpanded,
26
+ };
27
+ }
28
+
29
+ // Helper for conditional rendering based on expanded state
30
+ export function shouldShowWhenExpanded({
31
+ expanded,
32
+ hasContent,
33
+ alwaysShow = false,
34
+ }: {
35
+ expanded: boolean;
36
+ hasContent: boolean;
37
+ alwaysShow?: boolean;
38
+ }): boolean {
39
+ if (alwaysShow) {
40
+ return hasContent;
41
+ }
42
+
43
+ return expanded && hasContent;
44
+ }
45
+
46
+ export type ExpanderToggleProps = {
47
+ expanded: boolean;
48
+ onToggle?: () => void;
49
+ size?: 16 | 24 | 32 | 40 | 48 | 56 | 72;
50
+ className?: string;
51
+ 'data-testid'?: string;
52
+ };
53
+
54
+ // Reusable toggle button component
55
+ export const ExpanderToggle = ({
56
+ expanded,
57
+ onToggle,
58
+ size = 24,
59
+ className,
60
+ 'data-testid': testId,
61
+ }: ExpanderToggleProps) => {
62
+ const intl = useIntl();
63
+
64
+ return (
65
+ <IconButton
66
+ size={size}
67
+ priority="secondary"
68
+ aria-label={intl.formatMessage(
69
+ expanded ? messages.collapseAriaLabel : messages.expandAriaLabel,
70
+ )}
71
+ aria-expanded={expanded}
72
+ className={clsx(
73
+ 'wds-expander-toggle',
74
+ { 'wds-expander-toggle--collapsed': !expanded },
75
+ className,
76
+ )}
77
+ data-testid={testId}
78
+ onClick={onToggle}
79
+ >
80
+ <ChevronUp />
81
+ </IconButton>
82
+ );
83
+ };
@@ -0,0 +1,79 @@
1
+ import { ReactNode } from 'react';
2
+ import { GiftBox } from '@transferwise/icons';
3
+
4
+ import AvatarView, { AvatarViewProps } from '../../avatarView';
5
+ import Image from '../../image';
6
+ import StatusIcon from '../../statusIcon';
7
+ import { BadgeAssetsProps } from '../../badge';
8
+ import { PrimitivePromptProps } from '../PrimitivePrompt';
9
+
10
+ export type PromptMedia = {
11
+ imgSrc?: string;
12
+ avatar?: Pick<AvatarViewProps, 'imgSrc' | 'profileName' | 'profileType'> & {
13
+ asset?: AvatarViewProps['children'];
14
+ badge?: Pick<BadgeAssetsProps, 'flagCode'>;
15
+ };
16
+ 'aria-label'?: string;
17
+ 'aria-hidden'?: boolean;
18
+ };
19
+
20
+ type RenderPromptMediaOptions = {
21
+ media: PromptMedia;
22
+ sentiment: PrimitivePromptProps['sentiment'];
23
+ mediaId: string;
24
+ imgClassName: string;
25
+ };
26
+
27
+ export function renderPromptMedia({
28
+ media,
29
+ sentiment,
30
+ mediaId,
31
+ imgClassName,
32
+ }: RenderPromptMediaOptions): ReactNode {
33
+ if (media?.imgSrc) {
34
+ return (
35
+ <Image
36
+ id={mediaId}
37
+ src={media.imgSrc}
38
+ className={imgClassName}
39
+ alt={media['aria-label'] ?? ''}
40
+ />
41
+ );
42
+ }
43
+ if (media?.avatar) {
44
+ const badge = media.avatar.badge
45
+ ? media.avatar.badge
46
+ : sentiment === 'proposition'
47
+ ? {}
48
+ : { status: sentiment };
49
+ return (
50
+ <AvatarView
51
+ {...media.avatar}
52
+ badge={badge}
53
+ aria-label={media['aria-label']}
54
+ aria-hidden={media['aria-hidden']}
55
+ id={mediaId}
56
+ size={48}
57
+ >
58
+ {media.avatar.asset}
59
+ </AvatarView>
60
+ );
61
+ }
62
+ return sentiment === 'proposition' ? (
63
+ <AvatarView
64
+ id={mediaId}
65
+ size={48}
66
+ aria-label={media['aria-label']}
67
+ aria-hidden={media['aria-hidden']}
68
+ >
69
+ <GiftBox />
70
+ </AvatarView>
71
+ ) : (
72
+ <StatusIcon
73
+ id={mediaId}
74
+ size={48}
75
+ sentiment={sentiment}
76
+ iconLabel={media['aria-hidden'] ? null : media['aria-label']}
77
+ />
78
+ );
79
+ }
@@ -12,3 +12,7 @@ export { ActionPrompt } from './ActionPrompt';
12
12
  // InfoPrompt
13
13
  export type { InfoPromptProps, InfoPromptAction, InfoPromptMedia } from './InfoPrompt';
14
14
  export { InfoPrompt } from './InfoPrompt';
15
+
16
+ // CriticalBanner
17
+ export type { CriticalBannerProps } from './CriticalBanner';
18
+ export { CriticalBanner } from './CriticalBanner';
@@ -202,18 +202,26 @@ const TokenSwatch = ({ token }: { token: string }) => (
202
202
  export const EmphasisLevels: Story = {
203
203
  render: (args) => (
204
204
  <>
205
- <SentimentSurface {...args} sentiment="negative" emphasis="base">
206
- <div className="p-a-2">Negative - Base emphasis</div>
207
- </SentimentSurface>
208
- <SentimentSurface {...args} sentiment="negative" emphasis="elevated">
209
- <div className="p-a-2">Negative - Elevated emphasis</div>
210
- </SentimentSurface>
211
- <SentimentSurface {...args} sentiment="success" emphasis="base">
212
- <div className="p-a-2">Success - Base emphasis</div>
213
- </SentimentSurface>
214
- <SentimentSurface {...args} sentiment="success" emphasis="elevated">
215
- <div className="p-a-2">Success - Elevated emphasis</div>
216
- </SentimentSurface>
205
+ {sentiments.map((sentiment) => (
206
+ <div key={sentiment}>
207
+ <SentimentSurface
208
+ key={`${sentiment}-base`}
209
+ {...args}
210
+ sentiment={sentiment}
211
+ emphasis="base"
212
+ >
213
+ <div className="p-a-2 text-capitalize">{sentiment} - Base emphasis</div>
214
+ </SentimentSurface>
215
+ <SentimentSurface
216
+ key={`${sentiment}-elevated`}
217
+ {...args}
218
+ sentiment={sentiment}
219
+ emphasis="elevated"
220
+ >
221
+ <div className="p-a-2 text-capitalize">{sentiment} - Elevated emphasis</div>
222
+ </SentimentSurface>
223
+ </div>
224
+ ))}
217
225
  </>
218
226
  ),
219
227
  parameters: {
@@ -369,8 +377,8 @@ export const SentimentAwareComponents: Story = {
369
377
  {STATUS_NEGATIVE}
370
378
  </div>
371
379
 
372
- <Header level="group" title="Success sentiment surface" />
373
- <SentimentSurface sentiment="success">
380
+ <Header level="group" title="Success sentiment surface - Base emphasis" />
381
+ <SentimentSurface sentiment="success" emphasis="base">
374
382
  <div className="p-a-2 m-b-2 sentimentAwareComponent">
375
383
  {BODY}
376
384
  {AVATAR_SUCCESS}
@@ -378,8 +386,26 @@ export const SentimentAwareComponents: Story = {
378
386
  </div>
379
387
  </SentimentSurface>
380
388
 
381
- <Header level="group" title="Negative sentiment surface" />
382
- <SentimentSurface sentiment="negative">
389
+ <Header level="group" title="Success sentiment surface - Elevated emphasis" />
390
+ <SentimentSurface sentiment="success" emphasis="elevated">
391
+ <div className="p-a-2 m-b-2 sentimentAwareComponent">
392
+ {BODY}
393
+ {AVATAR_SUCCESS}
394
+ {STATUS_SUCCESS}
395
+ </div>
396
+ </SentimentSurface>
397
+
398
+ <Header level="group" title="Negative sentiment surface - Base emphasis" />
399
+ <SentimentSurface sentiment="negative" emphasis="base">
400
+ <div className="p-a-2 m-b-2 sentimentAwareComponent">
401
+ {BODY}
402
+ {AVATAR_NEGATIVE}
403
+ {STATUS_NEGATIVE}
404
+ </div>
405
+ </SentimentSurface>
406
+
407
+ <Header level="group" title="Negative sentiment surface - Elevated emphasis" />
408
+ <SentimentSurface sentiment="negative" emphasis="elevated">
383
409
  <div className="p-a-2 m-b-2 sentimentAwareComponent">
384
410
  {BODY}
385
411
  {AVATAR_NEGATIVE}
@@ -427,7 +453,7 @@ function CustomCard({ children, className }: { className?: string; children: Rea
427
453
 
428
454
  export const CustomComponents: Story = {
429
455
  tags: ['!autodocs', '!dev'],
430
- render: (args) => (
456
+ render: () => (
431
457
  <>
432
458
  <style>{`
433
459
  .custom-card {
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Do not edit directly, this file was auto-generated.
3
- * Generated on Tue, 31 Mar 2026 13:02:10 GMT
2
+ * Do not edit directly
3
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
4
4
  */
5
5
 
6
6
  :root {
@@ -142,8 +142,8 @@
142
142
  }
143
143
 
144
144
  /**
145
- * Do not edit directly, this file was auto-generated.
146
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
145
+ * Do not edit directly
146
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
147
147
  */
148
148
 
149
149
  .np-theme-personal {
@@ -391,8 +391,8 @@
391
391
  }
392
392
 
393
393
  /**
394
- * Do not edit directly, this file was auto-generated.
395
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
394
+ * Do not edit directly
395
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
396
396
  */
397
397
 
398
398
  .np-theme-personal--forest-green {
@@ -640,8 +640,8 @@
640
640
  }
641
641
 
642
642
  /**
643
- * Do not edit directly, this file was auto-generated.
644
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
643
+ * Do not edit directly
644
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
645
645
  */
646
646
 
647
647
  .np-theme-personal--bright-green {
@@ -889,8 +889,8 @@
889
889
  }
890
890
 
891
891
  /**
892
- * Do not edit directly, this file was auto-generated.
893
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
892
+ * Do not edit directly
893
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
894
894
  */
895
895
 
896
896
  .np-theme-personal--dark {
@@ -1138,8 +1138,8 @@
1138
1138
  }
1139
1139
 
1140
1140
  /**
1141
- * Do not edit directly, this file was auto-generated.
1142
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
1141
+ * Do not edit directly
1142
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
1143
1143
  */
1144
1144
 
1145
1145
  .np-theme-platform {
@@ -1321,8 +1321,8 @@
1321
1321
  }
1322
1322
 
1323
1323
  /**
1324
- * Do not edit directly, this file was auto-generated.
1325
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
1324
+ * Do not edit directly
1325
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
1326
1326
  */
1327
1327
 
1328
1328
  .np-theme-platform--forest-green {
@@ -1504,8 +1504,8 @@
1504
1504
  }
1505
1505
 
1506
1506
  /**
1507
- * Do not edit directly, this file was auto-generated.
1508
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
1507
+ * Do not edit directly
1508
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
1509
1509
  */
1510
1510
 
1511
1511
  .np-theme-business {
@@ -1688,8 +1688,8 @@
1688
1688
  }
1689
1689
 
1690
1690
  /**
1691
- * Do not edit directly, this file was auto-generated.
1692
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
1691
+ * Do not edit directly
1692
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
1693
1693
  */
1694
1694
 
1695
1695
  .np-theme-business--dark {
@@ -1872,8 +1872,8 @@
1872
1872
  }
1873
1873
 
1874
1874
  /**
1875
- * Do not edit directly, this file was auto-generated.
1876
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
1875
+ * Do not edit directly
1876
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
1877
1877
  */
1878
1878
 
1879
1879
  .np-theme-business--forest-green {
@@ -2056,8 +2056,8 @@
2056
2056
  }
2057
2057
 
2058
2058
  /**
2059
- * Do not edit directly, this file was auto-generated.
2060
- * Generated on Tue, 31 Mar 2026 13:02:11 GMT
2059
+ * Do not edit directly
2060
+ * Generated on Wed, 07 Jan 2026 11:56:15 GMT
2061
2061
  */
2062
2062
 
2063
2063
  .np-theme-business--bright-green {
@@ -1,22 +1,17 @@
1
- import {
2
- arrow as arrowMiddleware,
3
- autoUpdate,
4
- flip,
5
- offset,
6
- useFloating,
7
- } from '@floating-ui/react';
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
8
2
  import { clsx } from 'clsx';
9
3
  import {
10
4
  AriaAttributes,
11
- CSSProperties,
12
5
  PropsWithChildren,
13
6
  ReactElement,
14
7
  ReactNode,
15
8
  cloneElement,
9
+ useEffect,
16
10
  useId,
17
11
  useRef,
18
12
  useState,
19
13
  } from 'react';
14
+ import { usePopper } from 'react-popper';
20
15
 
21
16
  import { CommonProps, Position } from '../common';
22
17
  import {
@@ -41,30 +36,48 @@ const Tooltip = ({
41
36
  className,
42
37
  }: TooltipProps) => {
43
38
  const [open, setOpen] = useState(false);
44
- const arrowRef = useRef<HTMLDivElement | null>(null);
39
+ const anchorReference = useRef(null);
40
+ const [arrowElement, setArrowElement] = useState(null);
41
+ const [popperElement, setPopperElement] = useState(null);
45
42
 
46
43
  const fallbackId = useId();
47
44
  const tooltipId = id ?? fallbackId;
45
+ const modifiers = [];
46
+
47
+ modifiers.push({
48
+ name: 'arrow',
49
+ options: {
50
+ element: arrowElement,
51
+ options: {
52
+ padding: 8, // 8px from the edges of the popper
53
+ },
54
+ },
55
+ });
56
+ // This lets you displace a popper element from its reference element.
57
+ modifiers.push({ name: 'offset', options: { offset: [0, 16] } });
58
+ modifiers.push({
59
+ name: 'flip',
60
+ options: {
61
+ fallbackPlacements: Position.TOP,
62
+ },
63
+ });
48
64
 
49
- const { refs, floatingStyles, placement, middlewareData } = useFloating({
65
+ const { styles, attributes, forceUpdate } = usePopper(anchorReference.current, popperElement, {
50
66
  placement: position,
51
- middleware: [
52
- offset(16),
53
- flip({ fallbackPlacements: [Position.TOP] }),
54
- arrowMiddleware({ element: arrowRef, padding: 8 }),
55
- ],
56
- whileElementsMounted: open ? autoUpdate : undefined,
57
- open,
67
+ modifiers,
58
68
  });
59
69
 
60
- const arrowStyle: CSSProperties = {
61
- ...(middlewareData.arrow?.x != null ? { left: middlewareData.arrow.x } : {}),
62
- ...(middlewareData.arrow?.y != null ? { top: middlewareData.arrow.y } : {}),
63
- };
70
+ // If the trigger is not visible when the position is calculated, it will be incorrect. Because this can happen repeatedly (on resize for example),
71
+ // it is most simple just to always position before opening
72
+ useEffect(() => {
73
+ if (open && forceUpdate) {
74
+ forceUpdate();
75
+ }
76
+ }, [open]);
64
77
 
65
78
  return (
66
79
  <span
67
- ref={refs.setReference}
80
+ ref={anchorReference}
68
81
  className="tw-tooltip-container"
69
82
  onMouseOver={() => setOpen(true)}
70
83
  onFocus={() => setOpen(true)}
@@ -77,22 +90,28 @@ const Tooltip = ({
77
90
  })
78
91
  : null}
79
92
  <div
80
- ref={refs.setFloating}
93
+ // @ts-expect-error
94
+ ref={setPopperElement}
81
95
  className={clsx(
82
96
  'np-tooltip',
83
97
  'np-panel',
84
98
  open ? `np-panel--open np-tooltip--open` : null,
85
99
  className,
86
100
  )}
87
- style={floatingStyles}
88
- data-popper-placement={placement}
101
+ style={{ ...styles.popper }}
102
+ {...attributes.popper}
89
103
  aria-hidden={!open}
90
104
  role="tooltip"
91
105
  id={`${tooltipId}-tooltip`}
92
106
  >
93
107
  <div className="np-panel__content tooltip-inner">
94
108
  {label}
95
- <div ref={arrowRef} className={clsx('np-panel__arrow')} style={arrowStyle} />
109
+ <div
110
+ // @ts-expect-error
111
+ ref={setArrowElement}
112
+ className={clsx('np-panel__arrow')}
113
+ style={styles.arrow}
114
+ />
96
115
  </div>
97
116
  </div>
98
117
  </span>