@lifi/widget 4.0.0 → 4.1.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 (324) hide show
  1. package/dist/esm/App.d.ts +4 -2
  2. package/dist/esm/App.d.ts.map +1 -1
  3. package/dist/esm/App.js +4 -4
  4. package/dist/esm/App.js.map +1 -1
  5. package/dist/esm/AppDrawer.d.ts +1 -1
  6. package/dist/esm/AppDrawer.d.ts.map +1 -1
  7. package/dist/esm/AppDrawer.js +5 -6
  8. package/dist/esm/AppDrawer.js.map +1 -1
  9. package/dist/esm/AppDrawerContext.js +2 -2
  10. package/dist/esm/AppDrawerContext.js.map +1 -1
  11. package/dist/esm/components/ActionRow/ActionRow.style.js.map +1 -1
  12. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  13. package/dist/esm/components/AmountInput/AmountInput.style.js.map +1 -1
  14. package/dist/esm/components/AmountInput/AmountInputEndAdornment.style.js.map +1 -1
  15. package/dist/esm/components/AmountInput/PriceFormHelperText.style.js.map +1 -1
  16. package/dist/esm/components/AppContainer.js.map +1 -1
  17. package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
  18. package/dist/esm/components/Avatar/Avatar.style.js.map +1 -1
  19. package/dist/esm/components/Avatar/SmallAvatar.js.map +1 -1
  20. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js +1 -0
  21. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  22. package/dist/esm/components/BottomSheet/BottomSheet.js +3 -3
  23. package/dist/esm/components/BottomSheet/BottomSheet.js.map +1 -1
  24. package/dist/esm/components/ButtonTertiary.js.map +1 -1
  25. package/dist/esm/components/Card/Card.js.map +1 -1
  26. package/dist/esm/components/Card/CardButton.style.js.map +1 -1
  27. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  28. package/dist/esm/components/Card/CardIconButton.js.map +1 -1
  29. package/dist/esm/components/Card/CardLabel.js.map +1 -1
  30. package/dist/esm/components/Card/CardTitle.js.map +1 -1
  31. package/dist/esm/components/Card/InputCard.js.map +1 -1
  32. package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
  33. package/dist/esm/components/ChainSelect/ChainSelect.style.js.map +1 -1
  34. package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
  35. package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
  36. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  37. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  38. package/dist/esm/components/Chains/ChainsExpanded.style.js.map +1 -1
  39. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  40. package/dist/esm/components/ContextMenu.style.js.map +1 -1
  41. package/dist/esm/components/ContractComponent/NFT/NFT.style.js.map +1 -1
  42. package/dist/esm/components/Dialog/Dialog.style.js.map +1 -1
  43. package/dist/esm/components/EmptyListIndicator/EmptyListIndicator.style.js.map +1 -1
  44. package/dist/esm/components/ExecutionStatusCard/StatusIcon.js.map +1 -1
  45. package/dist/esm/components/ExecutionStatusCard/StatusIcon.style.js.map +1 -1
  46. package/dist/esm/components/ExecutionStatusCard/iconKey.js.map +1 -1
  47. package/dist/esm/components/Expansion/Expansion.style.js.map +1 -1
  48. package/dist/esm/components/Header/ActivitiesButton.style.js.map +1 -1
  49. package/dist/esm/components/Header/CloseDrawerButton.js +1 -0
  50. package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
  51. package/dist/esm/components/Header/Header.js +7 -10
  52. package/dist/esm/components/Header/Header.js.map +1 -1
  53. package/dist/esm/components/Header/Header.style.js.map +1 -1
  54. package/dist/esm/components/Header/HeaderNavigationTabs.js +26 -0
  55. package/dist/esm/components/Header/HeaderNavigationTabs.js.map +1 -0
  56. package/dist/esm/components/Header/HeaderTabs.js +33 -0
  57. package/dist/esm/components/Header/HeaderTabs.js.map +1 -0
  58. package/dist/esm/components/Header/NavigationHeader.js +7 -5
  59. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  60. package/dist/esm/components/Header/SettingsButton.style.js.map +1 -1
  61. package/dist/esm/components/Header/WalletMenu.style.js.map +1 -1
  62. package/dist/esm/components/IconCircle/IconCircle.style.js.map +1 -1
  63. package/dist/esm/components/IconTypography.js.map +1 -1
  64. package/dist/esm/components/Input.js.map +1 -1
  65. package/dist/esm/components/ListItem/ListItem.js.map +1 -1
  66. package/dist/esm/components/ListItem/ListItemButton.js.map +1 -1
  67. package/dist/esm/components/ListItemButton.js.map +1 -1
  68. package/dist/esm/components/ListItemText.js.map +1 -1
  69. package/dist/esm/components/Menu.js.map +1 -1
  70. package/dist/esm/components/Messages/AlertMessage.style.js.map +1 -1
  71. package/dist/esm/components/Messages/GasRefuelMessage.style.js.map +1 -1
  72. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  73. package/dist/esm/components/PageContainer.js.map +1 -1
  74. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  75. package/dist/esm/components/PoweredBy/PoweredBy.style.js.map +1 -1
  76. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js +1 -0
  77. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  78. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.js.map +1 -1
  79. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  80. package/dist/esm/components/RouteCard/RouteDetails.style.js +2 -2
  81. package/dist/esm/components/RouteCard/RouteDetails.style.js.map +1 -1
  82. package/dist/esm/components/RouteCard/RouteToken.style.js.map +1 -1
  83. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  84. package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -1
  85. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  86. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  87. package/dist/esm/components/Search/SearchInput.style.js.map +1 -1
  88. package/dist/esm/components/Search/SearchNotFound.style.js.map +1 -1
  89. package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
  90. package/dist/esm/components/SendToWallet/SendToWalletButton.style.js.map +1 -1
  91. package/dist/esm/components/SettingsListItemButton.js.map +1 -1
  92. package/dist/esm/components/Skeleton/WidgetSkeleton.js +50 -47
  93. package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
  94. package/dist/esm/components/Skeleton/WidgetSkeleton.style.js.map +1 -1
  95. package/dist/esm/components/Step/StepActions.js.map +1 -1
  96. package/dist/esm/components/Step/StepActions.style.js.map +1 -1
  97. package/dist/esm/components/StepActions/SentToWalletRow.style.js.map +1 -1
  98. package/dist/esm/components/StepActions/StepActionRow.style.js.map +1 -1
  99. package/dist/esm/components/Switch.js.map +1 -1
  100. package/dist/esm/components/Tabs/NavigationTabs.js +3 -0
  101. package/dist/esm/components/Tabs/NavigationTabs.js.map +1 -1
  102. package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
  103. package/dist/esm/components/Timer/StepStatusTimer.style.js.map +1 -1
  104. package/dist/esm/components/Token/Token.style.js.map +1 -1
  105. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  106. package/dist/esm/components/TokenList/TokenDetailsSheet.js +4 -4
  107. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  108. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js +4 -4
  109. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  110. package/dist/esm/components/TokenList/TokenDetailsSheetContent.style.js.map +1 -1
  111. package/dist/esm/components/TokenList/TokenList.style.js.map +1 -1
  112. package/dist/esm/components/TokenList/TokenListItem.js +2 -2
  113. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  114. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  115. package/dist/esm/components/TokenList/useTokenSelect.js +3 -3
  116. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  117. package/dist/esm/components/TokenRate/TokenRate.style.js.map +1 -1
  118. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  119. package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js.map +1 -1
  120. package/dist/esm/components/TransactionCard/TransactionCard.style.js.map +1 -1
  121. package/dist/esm/config/version.d.ts +1 -1
  122. package/dist/esm/config/version.js +1 -1
  123. package/dist/esm/config/version.js.map +1 -1
  124. package/dist/esm/hooks/timer/validate.js.map +1 -1
  125. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  126. package/dist/esm/hooks/useAvailableChains.js +1 -1
  127. package/dist/esm/hooks/useChainSearch.js.map +1 -1
  128. package/dist/esm/hooks/useChains.js +1 -1
  129. package/dist/esm/hooks/useExplorer.js.map +1 -1
  130. package/dist/esm/hooks/useFilteredByTokenBalances.js +1 -1
  131. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
  132. package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
  133. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  134. package/dist/esm/hooks/useLanguages.js +2 -2
  135. package/dist/esm/hooks/useLanguages.js.map +1 -1
  136. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  137. package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
  138. package/dist/esm/hooks/useRouteRequiredAccountConnection.js.map +1 -1
  139. package/dist/esm/hooks/useRoutes.js.map +1 -1
  140. package/dist/esm/hooks/useSwapOnly.js +2 -4
  141. package/dist/esm/hooks/useSwapOnly.js.map +1 -1
  142. package/dist/esm/hooks/useToAddressRequirements.js +2 -2
  143. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  144. package/dist/esm/hooks/useToken.js.map +1 -1
  145. package/dist/esm/hooks/useTokenBalance.js.map +1 -1
  146. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  147. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  148. package/dist/esm/hooks/useTokenSearch.js +1 -1
  149. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  150. package/dist/esm/hooks/useTokens.js +1 -1
  151. package/dist/esm/hooks/useTokens.js.map +1 -1
  152. package/dist/esm/hooks/useTools.js +1 -1
  153. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  154. package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
  155. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  156. package/dist/esm/i18n/en.json +3 -0
  157. package/dist/esm/index.d.ts +2 -2
  158. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  159. package/dist/esm/pages/MainPage/ReviewButton.js +2 -2
  160. package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
  161. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  162. package/dist/esm/pages/RoutesPage/RoutesPage.style.js.map +1 -1
  163. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  164. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js +3 -3
  165. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  166. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js +3 -3
  167. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  168. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  169. package/dist/esm/pages/SendToWallet/SendToWalletPage.style.js.map +1 -1
  170. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  171. package/dist/esm/pages/SettingsPage/GasPriceSettings.js +1 -1
  172. package/dist/esm/pages/SettingsPage/ResetSettingsButton.style.js.map +1 -1
  173. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js +1 -1
  174. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  175. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js +3 -3
  176. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  177. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js +3 -3
  178. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js.map +1 -1
  179. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  180. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  181. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.style.js.map +1 -1
  182. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  183. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  184. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js +3 -3
  185. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  186. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js +16 -15
  187. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  188. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.style.js.map +1 -1
  189. package/dist/esm/pages/TransactionPage/RouteTracker.js.map +1 -1
  190. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +3 -3
  191. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  192. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.style.js.map +1 -1
  193. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +27 -31
  194. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
  195. package/dist/esm/pages/TransactionPage/utils.js.map +1 -1
  196. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  197. package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
  198. package/dist/esm/providers/QueryClientProvider.js +2 -2
  199. package/dist/esm/providers/QueryClientProvider.js.map +1 -1
  200. package/dist/esm/providers/SDKClientProvider.js +26 -27
  201. package/dist/esm/providers/SDKClientProvider.js.map +1 -1
  202. package/dist/esm/providers/WidgetProvider/WidgetProvider.js +25 -27
  203. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  204. package/dist/esm/stores/StoreProvider.js +3 -4
  205. package/dist/esm/stores/StoreProvider.js.map +1 -1
  206. package/dist/esm/stores/bookmarks/BookmarkStore.js +3 -3
  207. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  208. package/dist/esm/stores/bookmarks/createBookmarkStore.js.map +1 -1
  209. package/dist/esm/stores/chains/ChainOrderStore.js +4 -4
  210. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  211. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  212. package/dist/esm/stores/form/FormStore.js +1 -1
  213. package/dist/esm/stores/form/FormStore.js.map +1 -1
  214. package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  215. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  216. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js.map +1 -1
  217. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  218. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  219. package/dist/esm/stores/form/useFormRef.js.map +1 -1
  220. package/dist/esm/stores/form/useFormStore.js +2 -2
  221. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  222. package/dist/esm/stores/header/useHeaderStore.js +3 -3
  223. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  224. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -1
  225. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js +22 -0
  226. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js.map +1 -0
  227. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js +62 -0
  228. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js.map +1 -0
  229. package/dist/esm/stores/navigationTabs/utils.js +92 -0
  230. package/dist/esm/stores/navigationTabs/utils.js.map +1 -0
  231. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js +3 -3
  232. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js.map +1 -1
  233. package/dist/esm/stores/pinnedTokens/createPinnedTokensStore.js.map +1 -1
  234. package/dist/esm/stores/routes/RouteExecutionStore.js +3 -3
  235. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  236. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  237. package/dist/esm/stores/routes/useIntermediateRoutesStore.js.map +1 -1
  238. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  239. package/dist/esm/stores/routes/utils.js.map +1 -1
  240. package/dist/esm/stores/settings/SettingsStore.js +3 -3
  241. package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
  242. package/dist/esm/stores/settings/createSettingsStore.js +122 -96
  243. package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
  244. package/dist/esm/stores/settings/types.d.ts +0 -2
  245. package/dist/esm/stores/settings/types.d.ts.map +1 -1
  246. package/dist/esm/stores/settings/types.js.map +1 -1
  247. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  248. package/dist/esm/themes/createTheme.js.map +1 -1
  249. package/dist/esm/themes/utils.js.map +1 -1
  250. package/dist/esm/types/widget.d.ts +19 -2
  251. package/dist/esm/types/widget.d.ts.map +1 -1
  252. package/dist/esm/types/widget.js.map +1 -1
  253. package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
  254. package/dist/esm/utils/converters.js.map +1 -1
  255. package/dist/esm/utils/deepEqual.js.map +1 -1
  256. package/dist/esm/utils/fees.js.map +1 -1
  257. package/dist/esm/utils/format.js.map +1 -1
  258. package/dist/esm/utils/getActionMessage.js.map +1 -1
  259. package/dist/esm/utils/getErrorMessage.js.map +1 -1
  260. package/dist/esm/utils/item.js.map +1 -1
  261. package/dist/esm/utils/{variant.js → mode.js} +2 -2
  262. package/dist/esm/utils/mode.js.map +1 -0
  263. package/dist/esm/utils/prepareActions.js +1 -1
  264. package/dist/esm/utils/prepareActions.js.map +1 -1
  265. package/dist/esm/utils/timer.js.map +1 -1
  266. package/dist/esm/utils/token.js +1 -1
  267. package/dist/esm/utils/token.js.map +1 -1
  268. package/dist/esm/utils/tokenList.js.map +1 -1
  269. package/package.json +11 -11
  270. package/src/App.tsx +7 -7
  271. package/src/AppDrawer.tsx +77 -78
  272. package/src/AppDrawerContext.ts +2 -2
  273. package/src/components/BaseTransactionButton/BaseTransactionButton.tsx +1 -0
  274. package/src/components/BottomSheet/BottomSheet.tsx +56 -52
  275. package/src/components/Header/CloseDrawerButton.tsx +5 -1
  276. package/src/components/Header/Header.tsx +20 -18
  277. package/src/components/Header/HeaderNavigationTabs.tsx +25 -0
  278. package/src/components/Header/HeaderTabs.tsx +48 -0
  279. package/src/components/Header/NavigationHeader.tsx +11 -8
  280. package/src/components/ReverseTokensButton/ReverseTokensButton.tsx +4 -1
  281. package/src/components/Skeleton/WidgetSkeleton.tsx +1 -1
  282. package/src/components/Tabs/NavigationTabs.tsx +3 -0
  283. package/src/components/TokenList/TokenDetailsSheet.tsx +9 -7
  284. package/src/components/TokenList/TokenDetailsSheetContent.tsx +176 -177
  285. package/src/components/TokenList/useTokenSelect.ts +2 -2
  286. package/src/config/version.ts +1 -1
  287. package/src/hooks/useSwapOnly.ts +2 -5
  288. package/src/hooks/useToAddressRequirements.ts +2 -2
  289. package/src/pages/MainPage/ReviewButton.tsx +2 -2
  290. package/src/pages/SendToWallet/BookmarkAddressSheet.tsx +176 -185
  291. package/src/pages/SendToWallet/ConfirmAddressSheet.tsx +9 -6
  292. package/src/pages/SettingsPage/SettingsCard/SettingCardExpandable.tsx +58 -65
  293. package/src/pages/SettingsPage/SettingsCard/SettingsAccordian.tsx +4 -4
  294. package/src/pages/TransactionPage/ConfirmToAddressSheet.tsx +9 -6
  295. package/src/pages/TransactionPage/ExchangeRateBottomSheet.tsx +53 -58
  296. package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +24 -21
  297. package/src/pages/TransactionPage/TransactionExecutionContent.tsx +8 -6
  298. package/src/providers/QueryClientProvider.tsx +2 -2
  299. package/src/providers/SDKClientProvider.tsx +3 -7
  300. package/src/providers/WidgetProvider/WidgetProvider.tsx +6 -7
  301. package/src/stores/StoreProvider.tsx +3 -10
  302. package/src/stores/bookmarks/BookmarkStore.tsx +4 -4
  303. package/src/stores/chains/ChainOrderStore.tsx +4 -4
  304. package/src/stores/form/FormStore.tsx +2 -2
  305. package/src/stores/form/useFormStore.ts +2 -2
  306. package/src/stores/header/useHeaderStore.tsx +3 -5
  307. package/src/stores/navigationTabs/types.ts +27 -0
  308. package/src/stores/navigationTabs/useNavigationTabLabel.ts +28 -0
  309. package/src/stores/navigationTabs/useNavigationTabsStore.tsx +108 -0
  310. package/src/stores/navigationTabs/utils.ts +134 -0
  311. package/src/stores/pinnedTokens/PinnedTokensStore.tsx +4 -4
  312. package/src/stores/routes/RouteExecutionStore.tsx +4 -4
  313. package/src/stores/settings/SettingsStore.tsx +4 -4
  314. package/src/stores/settings/createSettingsStore.ts +48 -12
  315. package/src/stores/settings/types.ts +1 -16
  316. package/src/types/widget.ts +31 -1
  317. package/dist/esm/components/Header/SplitNavigationTabs.js +0 -33
  318. package/dist/esm/components/Header/SplitNavigationTabs.js.map +0 -1
  319. package/dist/esm/stores/settings/useSplitModeStore.js +0 -36
  320. package/dist/esm/stores/settings/useSplitModeStore.js.map +0 -1
  321. package/dist/esm/utils/variant.js.map +0 -1
  322. package/src/components/Header/SplitNavigationTabs.tsx +0 -32
  323. package/src/stores/settings/useSplitModeStore.tsx +0 -58
  324. /package/src/utils/{variant.ts → mode.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsAccordian.js","names":[],"sources":["../../../../../src/pages/SettingsPage/SettingsCard/SettingsAccordian.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useEffect, useId, useState } from 'react'\n\nconst SettingsAccordionContext = createContext({\n setOpenCard: (_id: string) => {},\n openCard: '',\n})\n\nexport const SettingsCardAccordion: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const [openCard, setOpenCard] = useState('')\n\n return (\n <SettingsAccordionContext.Provider value={{ openCard, setOpenCard }}>\n {children}\n </SettingsAccordionContext.Provider>\n )\n}\n\nexport const useSettingsCardExpandable = (): {\n expanded: boolean\n toggleExpanded: (forceExpanded?: boolean) => void\n} => {\n const settingCardExpandableId = useId()\n const [expanded, setExpanded] = useState(false)\n const { openCard, setOpenCard } = useContext(SettingsAccordionContext)\n\n const toggleExpanded = (forceExpanded?: boolean) => {\n const newExpanded = forceExpanded ?? !expanded\n setExpanded(newExpanded)\n\n if (newExpanded && openCard !== settingCardExpandableId) {\n setOpenCard(settingCardExpandableId)\n }\n }\n\n useEffect(() => {\n if (openCard !== settingCardExpandableId) {\n setExpanded(false)\n }\n }, [settingCardExpandableId, openCard])\n\n return {\n expanded: expanded,\n toggleExpanded: toggleExpanded,\n }\n}\n"],"mappings":";;;AAGA,MAAM,2BAA2B,cAAc;CAC7C,cAAc,QAAgB,CAAC;CAC/B,UAAU;AACZ,CAAC;AAED,MAAa,yBAAsD,EACjE,eACI;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,EAAE;CAE3C,OACE,oBAAC,yBAAyB,UAA1B;EAAmC,OAAO;GAAE;GAAU;EAAY;EAC/D;CACgC,CAAA;AAEvC;AAEA,MAAa,kCAGR;CACH,MAAM,0BAA0B,MAAM;CACtC,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,EAAE,UAAU,gBAAgB,WAAW,wBAAwB;CAErE,MAAM,kBAAkB,kBAA4B;EAClD,MAAM,cAAc,iBAAiB,CAAC;EACtC,YAAY,WAAW;EAEvB,IAAI,eAAe,aAAa,yBAC9B,YAAY,uBAAuB;CAEvC;CAEA,gBAAgB;EACd,IAAI,aAAa,yBACf,YAAY,KAAK;CAErB,GAAG,CAAC,yBAAyB,QAAQ,CAAC;CAEtC,OAAO;EACK;EACM;CAClB;AACF"}
1
+ {"version":3,"file":"SettingsAccordian.js","names":[],"sources":["../../../../../src/pages/SettingsPage/SettingsCard/SettingsAccordian.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { createContext, use, useEffect, useId, useState } from 'react'\n\nconst SettingsAccordionContext = createContext({\n setOpenCard: (_id: string) => {},\n openCard: '',\n})\n\nexport const SettingsCardAccordion: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const [openCard, setOpenCard] = useState('')\n\n return (\n <SettingsAccordionContext value={{ openCard, setOpenCard }}>\n {children}\n </SettingsAccordionContext>\n )\n}\n\nexport const useSettingsCardExpandable = (): {\n expanded: boolean\n toggleExpanded: (forceExpanded?: boolean) => void\n} => {\n const settingCardExpandableId = useId()\n const [expanded, setExpanded] = useState(false)\n const { openCard, setOpenCard } = use(SettingsAccordionContext)\n\n const toggleExpanded = (forceExpanded?: boolean) => {\n const newExpanded = forceExpanded ?? !expanded\n setExpanded(newExpanded)\n\n if (newExpanded && openCard !== settingCardExpandableId) {\n setOpenCard(settingCardExpandableId)\n }\n }\n\n useEffect(() => {\n if (openCard !== settingCardExpandableId) {\n setExpanded(false)\n }\n }, [settingCardExpandableId, openCard])\n\n return {\n expanded: expanded,\n toggleExpanded: toggleExpanded,\n }\n}\n"],"mappings":";;;AAGA,MAAM,2BAA2B,cAAc;CAC7C,cAAc,QAAgB,CAAC;CAC/B,UAAU;AACZ,CAAC;AAED,MAAa,yBAAsD,EACjE,eACI;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,EAAE;CAE3C,OACE,oBAAC,0BAAD;EAA0B,OAAO;GAAE;GAAU;EAAY;EACtD;CACuB,CAAA;AAE9B;AAEA,MAAa,kCAGR;CACH,MAAM,0BAA0B,MAAM;CACtC,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,EAAE,UAAU,gBAAgB,IAAI,wBAAwB;CAE9D,MAAM,kBAAkB,kBAA4B;EAClD,MAAM,cAAc,iBAAiB,CAAC;EACtC,YAAY,WAAW;EAEvB,IAAI,eAAe,aAAa,yBAC9B,YAAY,uBAAuB;CAEvC;CAEA,gBAAgB;EACd,IAAI,aAAa,yBACf,YAAY,KAAK;CAErB,GAAG,CAAC,yBAAyB,QAAQ,CAAC;CAEtC,OAAO;EACK;EACM;CAClB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"SlippageSettings.style.js","names":[],"sources":["../../../../../src/pages/SettingsPage/SlippageSettings/SlippageSettings.style.tsx"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport {\n Box,\n ButtonBase,\n InputBase,\n inputBaseClasses,\n styled,\n} from '@mui/material'\nimport type React from 'react'\n\nexport const SettingsFieldSet: React.FC<\n React.ComponentProps<typeof Box> & SettingsControlProps\n> = styled(Box)(({ theme }) => ({\n display: 'flex',\n borderRadius: theme.vars.shape.borderRadius,\n padding: theme.spacing(0.5),\n gap: theme.spacing(0.5),\n height: '3.5rem',\n backgroundColor: `color-mix(in srgb, ${theme.vars.palette.common.onBackground} 4%, transparent)`,\n ...theme.applyStyles('dark', {\n backgroundColor: `color-mix(in srgb, ${theme.vars.palette.common.onBackground} 8%, transparent)`,\n }),\n}))\n\nconst settingsControlSelected = (theme: Theme) => ({\n backgroundColor: theme.vars.palette.background.paper,\n boxShadow: `0px 2px 4px color-mix(in srgb, ${theme.vars.palette.common.onBackground} 4%, transparent)`,\n ...theme.applyStyles('dark', {\n backgroundColor: `color-mix(in srgb, ${theme.vars.palette.common.background} 56%, transparent)`,\n boxShadow: `0px 2px 4px color-mix(in srgb, ${theme.vars.palette.common.background} 4%, transparent)`,\n }),\n borderRadius: `calc(${theme.vars.shape.borderRadius} - 4px)`,\n})\n\ninterface SettingsControlProps {\n selected?: boolean\n}\n\nexport const SettingsDefaultButton: React.FC<\n React.ComponentProps<typeof ButtonBase> & SettingsControlProps\n> = styled(ButtonBase)<SettingsControlProps>(({ theme, selected }) => {\n const settingsControlSelectedStyles = settingsControlSelected(theme)\n const selectedStyle = selected\n ? {\n '&:not(:focus)': {\n ...settingsControlSelectedStyles,\n },\n }\n : {}\n\n return {\n height: '100%',\n width: '100%',\n fontSize: '1rem',\n fontWeight: 700,\n '&:focus': {\n ...settingsControlSelectedStyles,\n },\n ...selectedStyle,\n }\n})\n\nexport const SettingsCustomInput: React.FC<\n React.ComponentProps<typeof InputBase> & SettingsControlProps\n> = styled(InputBase)<SettingsControlProps>(({ theme, selected }) => {\n const settingsControlSelectedStyles = settingsControlSelected(theme)\n const selectedStyle = selected\n ? {\n '&:not(:focus)': {\n ...settingsControlSelectedStyles,\n },\n }\n : {}\n\n return {\n height: '100%',\n width: '100%',\n [`.${inputBaseClasses.input}`]: {\n height: '100%',\n width: '100%',\n padding: 0,\n textAlign: 'center',\n '&::placeholder': {\n fontSize: '1rem',\n fontWeight: 700,\n opacity: 1,\n },\n '&:focus': {\n ...settingsControlSelectedStyles,\n },\n ...selectedStyle,\n },\n }\n})\n\nexport const SlippageLimitsWarningContainer: React.FC<\n React.ComponentProps<typeof Box>\n> = styled(Box)(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(1.25),\n marginTop: theme.spacing(1.5),\n}))\n"],"mappings":";;AAUA,MAAa,mBAET,OAAO,GAAG,GAAG,EAAE,aAAa;CAC9B,SAAS;CACT,cAAc,MAAM,KAAK,MAAM;CAC/B,SAAS,MAAM,QAAQ,EAAG;CAC1B,KAAK,MAAM,QAAQ,EAAG;CACtB,QAAQ;CACR,iBAAiB,sBAAsB,MAAM,KAAK,QAAQ,OAAO,aAAa;CAC9E,GAAG,MAAM,YAAY,QAAQ,EAC3B,iBAAiB,sBAAsB,MAAM,KAAK,QAAQ,OAAO,aAAa,mBAChF,CAAC;AACH,EAAE;AAEF,MAAM,2BAA2B,WAAkB;CACjD,iBAAiB,MAAM,KAAK,QAAQ,WAAW;CAC/C,WAAW,kCAAkC,MAAM,KAAK,QAAQ,OAAO,aAAa;CACpF,GAAG,MAAM,YAAY,QAAQ;EAC3B,iBAAiB,sBAAsB,MAAM,KAAK,QAAQ,OAAO,WAAW;EAC5E,WAAW,kCAAkC,MAAM,KAAK,QAAQ,OAAO,WAAW;CACpF,CAAC;CACD,cAAc,QAAQ,MAAM,KAAK,MAAM,aAAa;AACtD;AAMA,MAAa,wBAET,OAAO,UAAU,GAAyB,EAAE,OAAO,eAAe;CACpE,MAAM,gCAAgC,wBAAwB,KAAK;CACnE,MAAM,gBAAgB,WAClB,EACE,iBAAiB,EACf,GAAG,8BACL,EACF,IACA,CAAC;CAEL,OAAO;EACL,QAAQ;EACR,OAAO;EACP,UAAU;EACV,YAAY;EACZ,WAAW,EACT,GAAG,8BACL;EACA,GAAG;CACL;AACF,CAAC;AAED,MAAa,sBAET,OAAO,SAAS,GAAyB,EAAE,OAAO,eAAe;CACnE,MAAM,gCAAgC,wBAAwB,KAAK;CACnE,MAAM,gBAAgB,WAClB,EACE,iBAAiB,EACf,GAAG,8BACL,EACF,IACA,CAAC;CAEL,OAAO;EACL,QAAQ;EACR,OAAO;GACN,IAAI,iBAAiB,UAAU;GAC9B,QAAQ;GACR,OAAO;GACP,SAAS;GACT,WAAW;GACX,kBAAkB;IAChB,UAAU;IACV,YAAY;IACZ,SAAS;GACX;GACA,WAAW,EACT,GAAG,8BACL;GACA,GAAG;EACL;CACF;AACF,CAAC;AAED,MAAa,iCAET,OAAO,GAAG,GAAG,EAAE,aAAa;CAC9B,SAAS;CACT,KAAK,MAAM,QAAQ,IAAI;CACvB,WAAW,MAAM,QAAQ,GAAG;AAC9B,EAAE"}
1
+ {"version":3,"file":"SlippageSettings.style.js","names":[],"sources":["../../../../../src/pages/SettingsPage/SlippageSettings/SlippageSettings.style.tsx"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport {\n Box,\n ButtonBase,\n InputBase,\n inputBaseClasses,\n styled,\n} from '@mui/material'\nimport type React from 'react'\n\nexport const SettingsFieldSet: React.FC<\n React.ComponentProps<typeof Box> & SettingsControlProps\n> = styled(Box)(({ theme }) => ({\n display: 'flex',\n borderRadius: theme.vars.shape.borderRadius,\n padding: theme.spacing(0.5),\n gap: theme.spacing(0.5),\n height: '3.5rem',\n backgroundColor: `color-mix(in srgb, ${theme.vars.palette.common.onBackground} 4%, transparent)`,\n ...theme.applyStyles('dark', {\n backgroundColor: `color-mix(in srgb, ${theme.vars.palette.common.onBackground} 8%, transparent)`,\n }),\n}))\n\nconst settingsControlSelected = (theme: Theme) => ({\n backgroundColor: theme.vars.palette.background.paper,\n boxShadow: `0px 2px 4px color-mix(in srgb, ${theme.vars.palette.common.onBackground} 4%, transparent)`,\n ...theme.applyStyles('dark', {\n backgroundColor: `color-mix(in srgb, ${theme.vars.palette.common.background} 56%, transparent)`,\n boxShadow: `0px 2px 4px color-mix(in srgb, ${theme.vars.palette.common.background} 4%, transparent)`,\n }),\n borderRadius: `calc(${theme.vars.shape.borderRadius} - 4px)`,\n})\n\ninterface SettingsControlProps {\n selected?: boolean\n}\n\nexport const SettingsDefaultButton: React.FC<\n React.ComponentProps<typeof ButtonBase> & SettingsControlProps\n> = styled(ButtonBase)<SettingsControlProps>(({ theme, selected }) => {\n const settingsControlSelectedStyles = settingsControlSelected(theme)\n const selectedStyle = selected\n ? {\n '&:not(:focus)': {\n ...settingsControlSelectedStyles,\n },\n }\n : {}\n\n return {\n height: '100%',\n width: '100%',\n fontSize: '1rem',\n fontWeight: 700,\n '&:focus': {\n ...settingsControlSelectedStyles,\n },\n ...selectedStyle,\n }\n})\n\nexport const SettingsCustomInput: React.FC<\n React.ComponentProps<typeof InputBase> & SettingsControlProps\n> = styled(InputBase)<SettingsControlProps>(({ theme, selected }) => {\n const settingsControlSelectedStyles = settingsControlSelected(theme)\n const selectedStyle = selected\n ? {\n '&:not(:focus)': {\n ...settingsControlSelectedStyles,\n },\n }\n : {}\n\n return {\n height: '100%',\n width: '100%',\n [`.${inputBaseClasses.input}`]: {\n height: '100%',\n width: '100%',\n padding: 0,\n textAlign: 'center',\n '&::placeholder': {\n fontSize: '1rem',\n fontWeight: 700,\n opacity: 1,\n },\n '&:focus': {\n ...settingsControlSelectedStyles,\n },\n ...selectedStyle,\n },\n }\n})\n\nexport const SlippageLimitsWarningContainer: React.FC<\n React.ComponentProps<typeof Box>\n> = styled(Box)(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(1.25),\n marginTop: theme.spacing(1.5),\n}))\n"],"mappings":";;AAUA,MAAa,mBAET,OAAO,GAAG,CAAC,EAAE,EAAE,aAAa;CAC9B,SAAS;CACT,cAAc,MAAM,KAAK,MAAM;CAC/B,SAAS,MAAM,QAAQ,EAAG;CAC1B,KAAK,MAAM,QAAQ,EAAG;CACtB,QAAQ;CACR,iBAAiB,sBAAsB,MAAM,KAAK,QAAQ,OAAO,aAAa;CAC9E,GAAG,MAAM,YAAY,QAAQ,EAC3B,iBAAiB,sBAAsB,MAAM,KAAK,QAAQ,OAAO,aAAa,mBAChF,CAAC;AACH,EAAE;AAEF,MAAM,2BAA2B,WAAkB;CACjD,iBAAiB,MAAM,KAAK,QAAQ,WAAW;CAC/C,WAAW,kCAAkC,MAAM,KAAK,QAAQ,OAAO,aAAa;CACpF,GAAG,MAAM,YAAY,QAAQ;EAC3B,iBAAiB,sBAAsB,MAAM,KAAK,QAAQ,OAAO,WAAW;EAC5E,WAAW,kCAAkC,MAAM,KAAK,QAAQ,OAAO,WAAW;CACpF,CAAC;CACD,cAAc,QAAQ,MAAM,KAAK,MAAM,aAAa;AACtD;AAMA,MAAa,wBAET,OAAO,UAAU,CAAC,EAAwB,EAAE,OAAO,eAAe;CACpE,MAAM,gCAAgC,wBAAwB,KAAK;CACnE,MAAM,gBAAgB,WAClB,EACE,iBAAiB,EACf,GAAG,8BACL,EACF,IACA,CAAC;CAEL,OAAO;EACL,QAAQ;EACR,OAAO;EACP,UAAU;EACV,YAAY;EACZ,WAAW,EACT,GAAG,8BACL;EACA,GAAG;CACL;AACF,CAAC;AAED,MAAa,sBAET,OAAO,SAAS,CAAC,EAAwB,EAAE,OAAO,eAAe;CACnE,MAAM,gCAAgC,wBAAwB,KAAK;CACnE,MAAM,gBAAgB,WAClB,EACE,iBAAiB,EACf,GAAG,8BACL,EACF,IACA,CAAC;CAEL,OAAO;EACL,QAAQ;EACR,OAAO;GACN,IAAI,iBAAiB,UAAU;GAC9B,QAAQ;GACR,OAAO;GACP,SAAS;GACT,WAAW;GACX,kBAAkB;IAChB,UAAU;IACV,YAAY;IACZ,SAAS;GACX;GACA,WAAW,EACT,GAAG,8BACL;GACA,GAAG;EACL;CACF;AACF,CAAC;AAED,MAAa,iCAET,OAAO,GAAG,CAAC,EAAE,EAAE,aAAa;CAC9B,SAAS;CACT,KAAK,MAAM,QAAQ,IAAI;CACvB,WAAW,MAAM,QAAQ,GAAG;AAC9B,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeSettings.js","names":["Tab"],"sources":["../../../../src/pages/SettingsPage/ThemeSettings.tsx"],"sourcesContent":["import BrightnessAuto from '@mui/icons-material/BrightnessAuto'\nimport LightMode from '@mui/icons-material/LightMode'\nimport Nightlight from '@mui/icons-material/Nightlight'\nimport { Tooltip, useColorScheme } from '@mui/material'\nimport { useTranslation } from 'react-i18next'\nimport { CardValue } from '../../components/Card/CardButton.style.js'\nimport { CardTabs, Tab } from '../../components/Tabs/Tabs.style.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { Appearance } from '../../types/widget.js'\nimport { SettingCardExpandable } from './SettingsCard/SettingCardExpandable.js'\n\nconst themeIcons = {\n light: LightMode,\n dark: Nightlight,\n system: BrightnessAuto,\n}\n\ninterface ThemeTabProps {\n title: string\n value: Appearance\n Icon: React.ReactElement\n}\n\n// If the Tab is not the direct child of the Tabs component you can loose the switching\n// The component passes the props to the Tab component so switching isn't lost\nconst ThemeTab: React.FC<ThemeTabProps> = ({\n title,\n value,\n Icon,\n ...props\n}) => (\n <Tooltip title={title}>\n <Tab icon={Icon} value={value} {...props} disableRipple />\n </Tooltip>\n)\n\nexport const ThemeSettings: React.FC = () => {\n const { t } = useTranslation()\n const { mode, setMode } = useColorScheme()\n const { hiddenUI } = useWidgetConfig()\n\n if (hiddenUI?.appearance) {\n return null\n }\n\n const appearance = mode ?? 'system'\n\n const ThemeIcon = themeIcons[appearance]\n\n const handleThemeChange = (\n _: React.SyntheticEvent,\n appearance: Appearance\n ) => {\n setMode(appearance)\n }\n\n return (\n <SettingCardExpandable\n value={<CardValue>{t(`button.${appearance}`)} </CardValue>}\n icon={<ThemeIcon />}\n title={t('settings.appearance')}\n >\n <CardTabs\n value={appearance}\n aria-label=\"tabs\"\n indicatorColor=\"primary\"\n onChange={handleThemeChange}\n sx={{ mt: 1.5 }}\n >\n {Object.entries(themeIcons).map(([theme, Icon]) => {\n const supportedThemeOption = theme as Appearance\n\n return (\n <ThemeTab\n key={supportedThemeOption}\n title={t(`button.${supportedThemeOption}`)}\n value={supportedThemeOption}\n Icon={<Icon />}\n />\n )\n })}\n </CardTabs>\n </SettingCardExpandable>\n )\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,aAAa;CACjB,OAAO;CACP,MAAM;CACN,QAAQ;AACV;AAUA,MAAM,YAAqC,EACzC,OACA,OACA,MACA,GAAG,YAEH,oBAAC,SAAD;CAAgB;WACd,oBAACA,OAAD;EAAK,MAAM;EAAa;EAAO,GAAI;EAAO,eAAA;CAAe,CAAA;AAClD,CAAA;AAGX,MAAa,sBAAgC;CAC3C,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,EAAE,MAAM,YAAY,eAAe;CACzC,MAAM,EAAE,aAAa,gBAAgB;CAErC,IAAI,UAAU,YACZ,OAAO;CAGT,MAAM,aAAa,QAAQ;CAE3B,MAAM,YAAY,WAAW;CAE7B,MAAM,qBACJ,GACA,eACG;EACH,QAAQ,UAAU;CACpB;CAEA,OACE,oBAAC,uBAAD;EACE,OAAO,qBAAC,WAAD,EAAA,UAAA,CAAY,EAAE,UAAU,YAAY,GAAE,GAAY,EAAA,CAAA;EACzD,MAAM,oBAAC,WAAD,CAAY,CAAA;EAClB,OAAO,EAAE,qBAAqB;YAE9B,oBAAC,UAAD;GACE,OAAO;GACP,cAAW;GACX,gBAAe;GACf,UAAU;GACV,IAAI,EAAE,IAAI,IAAI;aAEb,OAAO,QAAQ,UAAU,EAAE,KAAK,CAAC,OAAO,UAAU;IACjD,MAAM,uBAAuB;IAE7B,OACE,oBAAC,UAAD;KAEE,OAAO,EAAE,UAAU,sBAAsB;KACzC,OAAO;KACP,MAAM,oBAAC,MAAD,CAAO,CAAA;IACd,GAJM,oBAIN;GAEL,CAAC;EACO,CAAA;CACW,CAAA;AAE3B"}
1
+ {"version":3,"file":"ThemeSettings.js","names":["Tab"],"sources":["../../../../src/pages/SettingsPage/ThemeSettings.tsx"],"sourcesContent":["import BrightnessAuto from '@mui/icons-material/BrightnessAuto'\nimport LightMode from '@mui/icons-material/LightMode'\nimport Nightlight from '@mui/icons-material/Nightlight'\nimport { Tooltip, useColorScheme } from '@mui/material'\nimport { useTranslation } from 'react-i18next'\nimport { CardValue } from '../../components/Card/CardButton.style.js'\nimport { CardTabs, Tab } from '../../components/Tabs/Tabs.style.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { Appearance } from '../../types/widget.js'\nimport { SettingCardExpandable } from './SettingsCard/SettingCardExpandable.js'\n\nconst themeIcons = {\n light: LightMode,\n dark: Nightlight,\n system: BrightnessAuto,\n}\n\ninterface ThemeTabProps {\n title: string\n value: Appearance\n Icon: React.ReactElement\n}\n\n// If the Tab is not the direct child of the Tabs component you can loose the switching\n// The component passes the props to the Tab component so switching isn't lost\nconst ThemeTab: React.FC<ThemeTabProps> = ({\n title,\n value,\n Icon,\n ...props\n}) => (\n <Tooltip title={title}>\n <Tab icon={Icon} value={value} {...props} disableRipple />\n </Tooltip>\n)\n\nexport const ThemeSettings: React.FC = () => {\n const { t } = useTranslation()\n const { mode, setMode } = useColorScheme()\n const { hiddenUI } = useWidgetConfig()\n\n if (hiddenUI?.appearance) {\n return null\n }\n\n const appearance = mode ?? 'system'\n\n const ThemeIcon = themeIcons[appearance]\n\n const handleThemeChange = (\n _: React.SyntheticEvent,\n appearance: Appearance\n ) => {\n setMode(appearance)\n }\n\n return (\n <SettingCardExpandable\n value={<CardValue>{t(`button.${appearance}`)} </CardValue>}\n icon={<ThemeIcon />}\n title={t('settings.appearance')}\n >\n <CardTabs\n value={appearance}\n aria-label=\"tabs\"\n indicatorColor=\"primary\"\n onChange={handleThemeChange}\n sx={{ mt: 1.5 }}\n >\n {Object.entries(themeIcons).map(([theme, Icon]) => {\n const supportedThemeOption = theme as Appearance\n\n return (\n <ThemeTab\n key={supportedThemeOption}\n title={t(`button.${supportedThemeOption}`)}\n value={supportedThemeOption}\n Icon={<Icon />}\n />\n )\n })}\n </CardTabs>\n </SettingCardExpandable>\n )\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,aAAa;CACjB,OAAO;CACP,MAAM;CACN,QAAQ;AACV;AAUA,MAAM,YAAqC,EACzC,OACA,OACA,MACA,GAAG,YAEH,oBAAC,SAAD;CAAgB;WACd,oBAACA,OAAD;EAAK,MAAM;EAAa;EAAO,GAAI;EAAO,eAAA;CAAe,CAAA;AAClD,CAAA;AAGX,MAAa,sBAAgC;CAC3C,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,EAAE,MAAM,YAAY,eAAe;CACzC,MAAM,EAAE,aAAa,gBAAgB;CAErC,IAAI,UAAU,YACZ,OAAO;CAGT,MAAM,aAAa,QAAQ;CAE3B,MAAM,YAAY,WAAW;CAE7B,MAAM,qBACJ,GACA,eACG;EACH,QAAQ,UAAU;CACpB;CAEA,OACE,oBAAC,uBAAD;EACE,OAAO,qBAAC,WAAD,EAAA,UAAA,CAAY,EAAE,UAAU,YAAY,GAAE,GAAY,EAAA,CAAA;EACzD,MAAM,oBAAC,WAAD,CAAY,CAAA;EAClB,OAAO,EAAE,qBAAqB;YAE9B,oBAAC,UAAD;GACE,OAAO;GACP,cAAW;GACX,gBAAe;GACf,UAAU;GACV,IAAI,EAAE,IAAI,IAAI;aAEb,OAAO,QAAQ,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU;IACjD,MAAM,uBAAuB;IAE7B,OACE,oBAAC,UAAD;KAEE,OAAO,EAAE,UAAU,sBAAsB;KACzC,OAAO;KACP,MAAM,oBAAC,MAAD,CAAO,CAAA;IACd,GAJM,oBAIN;GAEL,CAAC;EACO,CAAA;CACW,CAAA;AAE3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContactSupportButton.style.js","names":[],"sources":["../../../../src/pages/TransactionDetailsPage/ContactSupportButton.style.tsx"],"sourcesContent":["import { styled } from '@mui/material'\nimport type React from 'react'\nimport { ButtonTertiary } from '../../components/ButtonTertiary.js'\n\nexport const ButtonChip: React.FC<React.ComponentProps<typeof ButtonTertiary>> =\n styled(ButtonTertiary)(({ theme }) => ({\n padding: theme.spacing(0.5, 1.5),\n fontSize: 12,\n fontWeight: 700,\n lineHeight: 1.3334,\n height: 'auto',\n }))\n"],"mappings":";;;AAIA,MAAa,aACX,OAAO,cAAc,GAAG,EAAE,aAAa;CACrC,SAAS,MAAM,QAAQ,IAAK,GAAG;CAC/B,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,QAAQ;AACV,EAAE"}
1
+ {"version":3,"file":"ContactSupportButton.style.js","names":[],"sources":["../../../../src/pages/TransactionDetailsPage/ContactSupportButton.style.tsx"],"sourcesContent":["import { styled } from '@mui/material'\nimport type React from 'react'\nimport { ButtonTertiary } from '../../components/ButtonTertiary.js'\n\nexport const ButtonChip: React.FC<React.ComponentProps<typeof ButtonTertiary>> =\n styled(ButtonTertiary)(({ theme }) => ({\n padding: theme.spacing(0.5, 1.5),\n fontSize: 12,\n fontWeight: 700,\n lineHeight: 1.3334,\n height: 'auto',\n }))\n"],"mappings":";;;AAIA,MAAa,aACX,OAAO,cAAc,CAAC,EAAE,EAAE,aAAa;CACrC,SAAS,MAAM,QAAQ,IAAK,GAAG;CAC/B,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,QAAQ;AACV,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionDetailsPage.js","names":[],"sources":["../../../../src/pages/TransactionDetailsPage/TransactionDetailsPage.tsx"],"sourcesContent":["import type { FullStatusData } from '@lifi/sdk'\nimport { useLocation, useNavigate } from '@tanstack/react-router'\nimport { useEffect, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { TransactionCard } from '../../components/TransactionCard/TransactionCard.js'\nimport { internalExplorerUrl } from '../../config/constants.js'\nimport { useExplorer } from '../../hooks/useExplorer.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useTools } from '../../hooks/useTools.js'\nimport { useTransactionDetails } from '../../hooks/useTransactionDetails.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useRouteExecutionStore } from '../../stores/routes/RouteExecutionStore.js'\nimport { getSourceTxHash } from '../../stores/routes/utils.js'\nimport { buildRouteFromTxHistory } from '../../utils/converters.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { ReceiptsCard } from './ReceiptsCard.js'\nimport { TransactionDetailsSkeleton } from './TransactionDetailsSkeleton.js'\nimport { TransferIdCard } from './TransferIdCard.js'\n\nexport const TransactionDetailsPage: React.FC = () => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { mode, modeOptions, contractSecondaryComponent, explorerUrls } =\n useWidgetConfig()\n const { search }: any = useLocation()\n const { tools } = useTools()\n const { getTransactionLink } = useExplorer()\n const storedRouteExecution = useRouteExecutionStore((store) =>\n search?.routeId ? store.routes[search.routeId] : undefined\n )\n const { transaction, isLoading } = useTransactionDetails(\n !storedRouteExecution && search?.transactionHash\n )\n\n const title =\n mode === 'custom'\n ? t(`header.${modeOptions?.custom?.type ?? 'checkout'}Details`)\n : t('header.transactionDetails')\n useHeader(title)\n\n const routeExecution = useMemo(() => {\n if (storedRouteExecution) {\n return storedRouteExecution\n }\n if (isLoading) {\n return\n }\n if (transaction) {\n return buildRouteFromTxHistory(transaction as FullStatusData, tools)\n }\n }, [isLoading, storedRouteExecution, tools, transaction])\n\n useEffect(() => {\n if (!isLoading && !routeExecution) {\n navigate({ to: navigationRoutes.home })\n }\n }, [isLoading, navigate, routeExecution])\n\n const explorerUrl = explorerUrls?.internal?.[0]\n const url = typeof explorerUrl === 'string' ? explorerUrl : explorerUrl?.url\n\n const sourceTxHash = getSourceTxHash(routeExecution?.route)\n let supportId = sourceTxHash ?? routeExecution?.route.id ?? ''\n\n const internalTxLink =\n routeExecution?.route?.steps?.at(-1)?.execution?.internalTxLink\n const externalTxLink =\n routeExecution?.route?.steps?.at(-1)?.execution?.externalTxLink\n\n const txLink =\n (url\n ? internalTxLink?.replace(internalExplorerUrl, url)\n : internalTxLink) ||\n externalTxLink ||\n getTransactionLink({ txHash: supportId })\n\n if (process.env.NODE_ENV === 'development') {\n supportId += `_${routeExecution?.route.id}`\n }\n\n const startedAt = new Date(\n routeExecution?.route.steps[0].execution?.startedAt ?? 0\n )\n\n if (isLoading && !storedRouteExecution) {\n return <TransactionDetailsSkeleton />\n }\n\n if (!routeExecution?.route) {\n return null\n }\n\n return (\n <PageContainer\n topGutters\n bottomGutters\n sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}\n >\n <TransactionCard route={routeExecution.route} date={startedAt} />\n {mode === 'custom' && contractSecondaryComponent ? (\n <ContractComponent>{contractSecondaryComponent}</ContractComponent>\n ) : null}\n <ReceiptsCard route={routeExecution.route} />\n {supportId ? (\n <TransferIdCard transferId={supportId} txLink={txLink} />\n ) : null}\n </PageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAa,+BAAyC;CACpD,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,MAAM,aAAa,4BAA4B,iBACrD,gBAAgB;CAClB,MAAM,EAAE,WAAgB,YAAY;CACpC,MAAM,EAAE,UAAU,SAAS;CAC3B,MAAM,EAAE,uBAAuB,YAAY;CAC3C,MAAM,uBAAuB,wBAAwB,UACnD,QAAQ,UAAU,MAAM,OAAO,OAAO,WAAW,KAAA,CACnD;CACA,MAAM,EAAE,aAAa,cAAc,sBACjC,CAAC,wBAAwB,QAAQ,eACnC;CAMA,UAHE,SAAS,WACL,EAAE,UAAU,aAAa,QAAQ,QAAQ,WAAW,QAAQ,IAC5D,EAAE,2BAA2B,CACpB;CAEf,MAAM,iBAAiB,cAAc;EACnC,IAAI,sBACF,OAAO;EAET,IAAI,WACF;EAEF,IAAI,aACF,OAAO,wBAAwB,aAA+B,KAAK;CAEvE,GAAG;EAAC;EAAW;EAAsB;EAAO;CAAW,CAAC;CAExD,gBAAgB;EACd,IAAI,CAAC,aAAa,CAAC,gBACjB,SAAS,EAAE,IAAI,iBAAiB,KAAK,CAAC;CAE1C,GAAG;EAAC;EAAW;EAAU;CAAc,CAAC;CAExC,MAAM,cAAc,cAAc,WAAW;CAC7C,MAAM,MAAM,OAAO,gBAAgB,WAAW,cAAc,aAAa;CAGzE,IAAI,YADiB,gBAAgB,gBAAgB,KAC1B,KAAK,gBAAgB,MAAM,MAAM;CAE5D,MAAM,iBACJ,gBAAgB,OAAO,OAAO,GAAG,EAAE,GAAG,WAAW;CACnD,MAAM,iBACJ,gBAAgB,OAAO,OAAO,GAAG,EAAE,GAAG,WAAW;CAEnD,MAAM,UACH,MACG,gBAAgB,QAAA,sBAA6B,GAAG,IAChD,mBACJ,kBACA,mBAAmB,EAAE,QAAQ,UAAU,CAAC;CAE1C,IAAI,QAAQ,IAAI,aAAa,eAC3B,aAAa,IAAI,gBAAgB,MAAM;CAGzC,MAAM,YAAY,IAAI,KACpB,gBAAgB,MAAM,MAAM,GAAG,WAAW,aAAa,CACzD;CAEA,IAAI,aAAa,CAAC,sBAChB,OAAO,oBAAC,4BAAD,CAA6B,CAAA;CAGtC,IAAI,CAAC,gBAAgB,OACnB,OAAO;CAGT,OACE,qBAAC,eAAD;EACE,YAAA;EACA,eAAA;EACA,IAAI;GAAE,SAAS;GAAQ,eAAe;GAAU,KAAK;EAAE;YAHzD;GAKE,oBAAC,iBAAD;IAAiB,OAAO,eAAe;IAAO,MAAM;GAAY,CAAA;GAC/D,SAAS,YAAY,6BACpB,oBAAC,mBAAD,EAAA,UAAoB,2BAA8C,CAAA,IAChE;GACJ,oBAAC,cAAD,EAAc,OAAO,eAAe,MAAQ,CAAA;GAC3C,YACC,oBAAC,gBAAD;IAAgB,YAAY;IAAmB;GAAS,CAAA,IACtD;EACS;;AAEnB"}
1
+ {"version":3,"file":"TransactionDetailsPage.js","names":[],"sources":["../../../../src/pages/TransactionDetailsPage/TransactionDetailsPage.tsx"],"sourcesContent":["import type { FullStatusData } from '@lifi/sdk'\nimport { useLocation, useNavigate } from '@tanstack/react-router'\nimport { useEffect, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { TransactionCard } from '../../components/TransactionCard/TransactionCard.js'\nimport { internalExplorerUrl } from '../../config/constants.js'\nimport { useExplorer } from '../../hooks/useExplorer.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useTools } from '../../hooks/useTools.js'\nimport { useTransactionDetails } from '../../hooks/useTransactionDetails.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useRouteExecutionStore } from '../../stores/routes/RouteExecutionStore.js'\nimport { getSourceTxHash } from '../../stores/routes/utils.js'\nimport { buildRouteFromTxHistory } from '../../utils/converters.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { ReceiptsCard } from './ReceiptsCard.js'\nimport { TransactionDetailsSkeleton } from './TransactionDetailsSkeleton.js'\nimport { TransferIdCard } from './TransferIdCard.js'\n\nexport const TransactionDetailsPage: React.FC = () => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { mode, modeOptions, contractSecondaryComponent, explorerUrls } =\n useWidgetConfig()\n const { search }: any = useLocation()\n const { tools } = useTools()\n const { getTransactionLink } = useExplorer()\n const storedRouteExecution = useRouteExecutionStore((store) =>\n search?.routeId ? store.routes[search.routeId] : undefined\n )\n const { transaction, isLoading } = useTransactionDetails(\n !storedRouteExecution && search?.transactionHash\n )\n\n const title =\n mode === 'custom'\n ? t(`header.${modeOptions?.custom?.type ?? 'checkout'}Details`)\n : t('header.transactionDetails')\n useHeader(title)\n\n const routeExecution = useMemo(() => {\n if (storedRouteExecution) {\n return storedRouteExecution\n }\n if (isLoading) {\n return\n }\n if (transaction) {\n return buildRouteFromTxHistory(transaction as FullStatusData, tools)\n }\n }, [isLoading, storedRouteExecution, tools, transaction])\n\n useEffect(() => {\n if (!isLoading && !routeExecution) {\n navigate({ to: navigationRoutes.home })\n }\n }, [isLoading, navigate, routeExecution])\n\n const explorerUrl = explorerUrls?.internal?.[0]\n const url = typeof explorerUrl === 'string' ? explorerUrl : explorerUrl?.url\n\n const sourceTxHash = getSourceTxHash(routeExecution?.route)\n let supportId = sourceTxHash ?? routeExecution?.route.id ?? ''\n\n const internalTxLink =\n routeExecution?.route?.steps?.at(-1)?.execution?.internalTxLink\n const externalTxLink =\n routeExecution?.route?.steps?.at(-1)?.execution?.externalTxLink\n\n const txLink =\n (url\n ? internalTxLink?.replace(internalExplorerUrl, url)\n : internalTxLink) ||\n externalTxLink ||\n getTransactionLink({ txHash: supportId })\n\n if (process.env.NODE_ENV === 'development') {\n supportId += `_${routeExecution?.route.id}`\n }\n\n const startedAt = new Date(\n routeExecution?.route.steps[0].execution?.startedAt ?? 0\n )\n\n if (isLoading && !storedRouteExecution) {\n return <TransactionDetailsSkeleton />\n }\n\n if (!routeExecution?.route) {\n return null\n }\n\n return (\n <PageContainer\n topGutters\n bottomGutters\n sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}\n >\n <TransactionCard route={routeExecution.route} date={startedAt} />\n {mode === 'custom' && contractSecondaryComponent ? (\n <ContractComponent>{contractSecondaryComponent}</ContractComponent>\n ) : null}\n <ReceiptsCard route={routeExecution.route} />\n {supportId ? (\n <TransferIdCard transferId={supportId} txLink={txLink} />\n ) : null}\n </PageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAa,+BAAyC;CACpD,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,MAAM,aAAa,4BAA4B,iBACrD,gBAAgB;CAClB,MAAM,EAAE,WAAgB,YAAY;CACpC,MAAM,EAAE,UAAU,SAAS;CAC3B,MAAM,EAAE,uBAAuB,YAAY;CAC3C,MAAM,uBAAuB,wBAAwB,UACnD,QAAQ,UAAU,MAAM,OAAO,OAAO,WAAW,KAAA,CACnD;CACA,MAAM,EAAE,aAAa,cAAc,sBACjC,CAAC,wBAAwB,QAAQ,eACnC;CAMA,UAHE,SAAS,WACL,EAAE,UAAU,aAAa,QAAQ,QAAQ,WAAW,QAAQ,IAC5D,EAAE,2BAA2B,CACpB;CAEf,MAAM,iBAAiB,cAAc;EACnC,IAAI,sBACF,OAAO;EAET,IAAI,WACF;EAEF,IAAI,aACF,OAAO,wBAAwB,aAA+B,KAAK;CAEvE,GAAG;EAAC;EAAW;EAAsB;EAAO;CAAW,CAAC;CAExD,gBAAgB;EACd,IAAI,CAAC,aAAa,CAAC,gBACjB,SAAS,EAAE,IAAI,iBAAiB,KAAK,CAAC;CAE1C,GAAG;EAAC;EAAW;EAAU;CAAc,CAAC;CAExC,MAAM,cAAc,cAAc,WAAW;CAC7C,MAAM,MAAM,OAAO,gBAAgB,WAAW,cAAc,aAAa;CAGzE,IAAI,YADiB,gBAAgB,gBAAgB,KAC1B,KAAK,gBAAgB,MAAM,MAAM;CAE5D,MAAM,iBACJ,gBAAgB,OAAO,OAAO,GAAG,EAAE,CAAC,EAAE,WAAW;CACnD,MAAM,iBACJ,gBAAgB,OAAO,OAAO,GAAG,EAAE,CAAC,EAAE,WAAW;CAEnD,MAAM,UACH,MACG,gBAAgB,QAAA,sBAA6B,GAAG,IAChD,mBACJ,kBACA,mBAAmB,EAAE,QAAQ,UAAU,CAAC;CAE1C,IAAI,QAAQ,IAAI,aAAa,eAC3B,aAAa,IAAI,gBAAgB,MAAM;CAGzC,MAAM,YAAY,IAAI,KACpB,gBAAgB,MAAM,MAAM,EAAE,CAAC,WAAW,aAAa,CACzD;CAEA,IAAI,aAAa,CAAC,sBAChB,OAAO,oBAAC,4BAAD,CAA6B,CAAA;CAGtC,IAAI,CAAC,gBAAgB,OACnB,OAAO;CAGT,OACE,qBAAC,eAAD;EACE,YAAA;EACA,eAAA;EACA,IAAI;GAAE,SAAS;GAAQ,eAAe;GAAU,KAAK;EAAE;YAHzD;GAKE,oBAAC,iBAAD;IAAiB,OAAO,eAAe;IAAO,MAAM;GAAY,CAAA;GAC/D,SAAS,YAAY,6BACpB,oBAAC,mBAAD,EAAA,UAAoB,2BAA8C,CAAA,IAChE;GACJ,oBAAC,cAAD,EAAc,OAAO,eAAe,MAAQ,CAAA;GAC3C,YACC,oBAAC,gBAAD;IAAgB,YAAY;IAAmB;GAAS,CAAA,IACtD;EACS;;AAEnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionDetailsSkeleton.js","names":["Card"],"sources":["../../../../src/pages/TransactionDetailsPage/TransactionDetailsSkeleton.tsx"],"sourcesContent":["import { Box, Skeleton } from '@mui/material'\nimport type { JSX } from 'react'\nimport { Card } from '../../components/Card/Card.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { TokenSkeleton } from '../../components/Token/Token.js'\n\nexport const TransactionDetailsSkeleton = (): JSX.Element => {\n return (\n <PageContainer topGutters>\n <Box\n sx={{\n pb: 1,\n pt: 0.75,\n display: 'flex',\n flex: 1,\n justifyContent: 'space-between',\n }}\n >\n <Skeleton width={96} height={20} variant=\"text\" />\n <Skeleton width={40} height={20} variant=\"text\" />\n </Box>\n <Card sx={{ paddingX: 2, marginBottom: 3 }}>\n <Box\n sx={{\n pt: 2.5,\n }}\n >\n <Skeleton width={64} height={12} variant=\"rounded\" />\n </Box>\n <Box\n sx={{\n py: 1,\n }}\n >\n {/* Token skeleton */}\n <Box\n sx={{\n py: 1,\n }}\n >\n <TokenSkeleton />\n </Box>\n {/* Bridge skeleton */}\n <Box\n sx={{\n py: 1,\n }}\n >\n <TokenSkeleton disableDescription />\n </Box>\n {/* Steps skeleton */}\n {Array.from({ length: 3 }).map((_, key) => (\n <Box\n key={key}\n sx={{\n py: 1,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <Skeleton\n variant=\"rounded\"\n width={40}\n height={40}\n sx={{\n borderRadius: '100%',\n }}\n />\n <Skeleton\n sx={{\n ml: 2,\n }}\n width={96}\n height={24}\n variant=\"text\"\n />\n </Box>\n ))}\n {/* Receiving Token skeleton */}\n <Box\n sx={{\n py: 1,\n }}\n >\n <TokenSkeleton />\n </Box>\n </Box>\n </Card>\n </PageContainer>\n )\n}\n"],"mappings":";;;;;;AAMA,MAAa,mCAAgD;CAC3D,OACE,qBAAC,eAAD;EAAe,YAAA;YAAf,CACE,qBAAC,KAAD;GACE,IAAI;IACF,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,MAAM;IACN,gBAAgB;GAClB;aAPF,CASE,oBAAC,UAAD;IAAU,OAAO;IAAI,QAAQ;IAAI,SAAQ;GAAQ,CAAA,GACjD,oBAAC,UAAD;IAAU,OAAO;IAAI,QAAQ;IAAI,SAAQ;GAAQ,CAAA,CAC9C;MACL,qBAACA,QAAD;GAAM,IAAI;IAAE,UAAU;IAAG,cAAc;GAAE;aAAzC,CACE,oBAAC,KAAD;IACE,IAAI,EACF,IAAI,IACN;cAEA,oBAAC,UAAD;KAAU,OAAO;KAAI,QAAQ;KAAI,SAAQ;IAAW,CAAA;GACjD,CAAA,GACL,qBAAC,KAAD;IACE,IAAI,EACF,IAAI,EACN;cAHF;KAME,oBAAC,KAAD;MACE,IAAI,EACF,IAAI,EACN;gBAEA,oBAAC,eAAD,CAAgB,CAAA;KACb,CAAA;KAEL,oBAAC,KAAD;MACE,IAAI,EACF,IAAI,EACN;gBAEA,oBAAC,eAAD,EAAe,oBAAA,KAAoB,CAAA;KAChC,CAAA;KAEJ,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,GAAG,QACjC,qBAAC,KAAD;MAEE,IAAI;OACF,IAAI;OACJ,SAAS;OACT,YAAY;MACd;gBANF,CAQE,oBAAC,UAAD;OACE,SAAQ;OACR,OAAO;OACP,QAAQ;OACR,IAAI,EACF,cAAc,OAChB;MACD,CAAA,GACD,oBAAC,UAAD;OACE,IAAI,EACF,IAAI,EACN;OACA,OAAO;OACP,QAAQ;OACR,SAAQ;MACT,CAAA,CACE;QAvBE,GAuBF,CACN;KAED,oBAAC,KAAD;MACE,IAAI,EACF,IAAI,EACN;gBAEA,oBAAC,eAAD,CAAgB,CAAA;KACb,CAAA;IACF;KACD;IACO;;AAEnB"}
1
+ {"version":3,"file":"TransactionDetailsSkeleton.js","names":["Card"],"sources":["../../../../src/pages/TransactionDetailsPage/TransactionDetailsSkeleton.tsx"],"sourcesContent":["import { Box, Skeleton } from '@mui/material'\nimport type { JSX } from 'react'\nimport { Card } from '../../components/Card/Card.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { TokenSkeleton } from '../../components/Token/Token.js'\n\nexport const TransactionDetailsSkeleton = (): JSX.Element => {\n return (\n <PageContainer topGutters>\n <Box\n sx={{\n pb: 1,\n pt: 0.75,\n display: 'flex',\n flex: 1,\n justifyContent: 'space-between',\n }}\n >\n <Skeleton width={96} height={20} variant=\"text\" />\n <Skeleton width={40} height={20} variant=\"text\" />\n </Box>\n <Card sx={{ paddingX: 2, marginBottom: 3 }}>\n <Box\n sx={{\n pt: 2.5,\n }}\n >\n <Skeleton width={64} height={12} variant=\"rounded\" />\n </Box>\n <Box\n sx={{\n py: 1,\n }}\n >\n {/* Token skeleton */}\n <Box\n sx={{\n py: 1,\n }}\n >\n <TokenSkeleton />\n </Box>\n {/* Bridge skeleton */}\n <Box\n sx={{\n py: 1,\n }}\n >\n <TokenSkeleton disableDescription />\n </Box>\n {/* Steps skeleton */}\n {Array.from({ length: 3 }).map((_, key) => (\n <Box\n key={key}\n sx={{\n py: 1,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <Skeleton\n variant=\"rounded\"\n width={40}\n height={40}\n sx={{\n borderRadius: '100%',\n }}\n />\n <Skeleton\n sx={{\n ml: 2,\n }}\n width={96}\n height={24}\n variant=\"text\"\n />\n </Box>\n ))}\n {/* Receiving Token skeleton */}\n <Box\n sx={{\n py: 1,\n }}\n >\n <TokenSkeleton />\n </Box>\n </Box>\n </Card>\n </PageContainer>\n )\n}\n"],"mappings":";;;;;;AAMA,MAAa,mCAAgD;CAC3D,OACE,qBAAC,eAAD;EAAe,YAAA;YAAf,CACE,qBAAC,KAAD;GACE,IAAI;IACF,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,MAAM;IACN,gBAAgB;GAClB;aAPF,CASE,oBAAC,UAAD;IAAU,OAAO;IAAI,QAAQ;IAAI,SAAQ;GAAQ,CAAA,GACjD,oBAAC,UAAD;IAAU,OAAO;IAAI,QAAQ;IAAI,SAAQ;GAAQ,CAAA,CAC9C;MACL,qBAACA,QAAD;GAAM,IAAI;IAAE,UAAU;IAAG,cAAc;GAAE;aAAzC,CACE,oBAAC,KAAD;IACE,IAAI,EACF,IAAI,IACN;cAEA,oBAAC,UAAD;KAAU,OAAO;KAAI,QAAQ;KAAI,SAAQ;IAAW,CAAA;GACjD,CAAA,GACL,qBAAC,KAAD;IACE,IAAI,EACF,IAAI,EACN;cAHF;KAME,oBAAC,KAAD;MACE,IAAI,EACF,IAAI,EACN;gBAEA,oBAAC,eAAD,CAAgB,CAAA;KACb,CAAA;KAEL,oBAAC,KAAD;MACE,IAAI,EACF,IAAI,EACN;gBAEA,oBAAC,eAAD,EAAe,oBAAA,KAAoB,CAAA;KAChC,CAAA;KAEJ,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,QACjC,qBAAC,KAAD;MAEE,IAAI;OACF,IAAI;OACJ,SAAS;OACT,YAAY;MACd;gBANF,CAQE,oBAAC,UAAD;OACE,SAAQ;OACR,OAAO;OACP,QAAQ;OACR,IAAI,EACF,cAAc,OAChB;MACD,CAAA,GACD,oBAAC,UAAD;OACE,IAAI,EACF,IAAI,EACN;OACA,OAAO;OACP,QAAQ;OACR,SAAQ;MACT,CAAA,CACE;QAvBE,GAuBF,CACN;KAED,oBAAC,KAAD;MACE,IAAI,EACF,IAAI,EACN;gBAEA,oBAAC,eAAD,CAAgB,CAAA;KACb,CAAA;IACF;KACD;IACO;;AAEnB"}
@@ -5,14 +5,14 @@ import { AlertMessage } from "../../components/Messages/AlertMessage.js";
5
5
  import { BottomSheet } from "../../components/BottomSheet/BottomSheet.js";
6
6
  import { IconContainer, SendToWalletButtonRow, SendToWalletSheetContainer, SheetAddressContainer } from "../SendToWallet/SendToWalletPage.style.js";
7
7
  import { useSetContentHeight } from "../../hooks/useSetContentHeight.js";
8
- import { forwardRef, useRef } from "react";
8
+ import { useRef } from "react";
9
9
  import { Button, Typography } from "@mui/material";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { useTranslation } from "react-i18next";
12
12
  import Wallet from "@mui/icons-material/Wallet";
13
13
  import WarningRounded from "@mui/icons-material/WarningRounded";
14
14
  //#region src/pages/TransactionPage/ConfirmToAddressSheet.tsx
15
- const ConfirmToAddressSheet = forwardRef((props, ref) => {
15
+ const ConfirmToAddressSheet = ({ ref, ...props }) => {
16
16
  const handleClose = () => {
17
17
  ref.current?.close();
18
18
  };
@@ -23,7 +23,7 @@ const ConfirmToAddressSheet = forwardRef((props, ref) => {
23
23
  onClose: handleClose
24
24
  })
25
25
  });
26
- });
26
+ };
27
27
  const ConfirmToAddressSheetContent = ({ onContinue, onClose, toAddress, toChainId }) => {
28
28
  const { t } = useTranslation();
29
29
  const { chain } = useChain(toChainId);
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmToAddressSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/ConfirmToAddressSheet.tsx"],"sourcesContent":["import Wallet from '@mui/icons-material/Wallet'\nimport WarningRounded from '@mui/icons-material/WarningRounded'\nimport { Button, Typography } from '@mui/material'\nimport type { ForwardRefExoticComponent, RefAttributes, RefObject } from 'react'\nimport { forwardRef, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { AlertMessage } from '../../components/Messages/AlertMessage.js'\nimport { useChain } from '../../hooks/useChain.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport {\n IconContainer,\n SendToWalletButtonRow,\n SendToWalletSheetContainer,\n SheetAddressContainer,\n} from '../SendToWallet/SendToWalletPage.style.js'\n\ninterface ConfirmToAddressSheetProps {\n onContinue: () => void\n toAddress: string\n toChainId: number\n}\n\ninterface ConfirmToAddressSheetContentProps extends ConfirmToAddressSheetProps {\n onClose: () => void\n}\n\nexport const ConfirmToAddressSheet: ForwardRefExoticComponent<\n ConfirmToAddressSheetProps & RefAttributes<BottomSheetBase>\n> = forwardRef<BottomSheetBase, ConfirmToAddressSheetProps>((props, ref) => {\n const handleClose = () => {\n ;(ref as RefObject<BottomSheetBase>).current?.close()\n }\n\n return (\n <BottomSheet ref={ref}>\n <ConfirmToAddressSheetContent {...props} onClose={handleClose} />\n </BottomSheet>\n )\n})\n\nconst ConfirmToAddressSheetContent: React.FC<\n ConfirmToAddressSheetContentProps\n> = ({ onContinue, onClose, toAddress, toChainId }) => {\n const { t } = useTranslation()\n const { chain } = useChain(toChainId)\n const emitter = useWidgetEvents()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n\n const handleContinue = () => {\n emitter.emit(WidgetEvent.LowAddressActivityConfirmed, {\n address: toAddress,\n chainId: toChainId,\n })\n onClose()\n onContinue()\n }\n\n return (\n <SendToWalletSheetContainer ref={ref}>\n <IconContainer>\n <Wallet sx={{ fontSize: 40 }} />\n </IconContainer>\n <Typography variant=\"h6\" sx={{ textAlign: 'center', mb: 2 }}>\n {t('warning.title.lowAddressActivity')}\n </Typography>\n <SheetAddressContainer>\n <Typography>{toAddress}</Typography>\n </SheetAddressContainer>\n <AlertMessage\n severity=\"warning\"\n title={\n <Typography variant=\"body2\" sx={{ color: 'text.primary' }}>\n {t('warning.message.lowAddressActivity', {\n chainName: chain?.name,\n })}\n </Typography>\n }\n icon={<WarningRounded />}\n multiline\n />\n <SendToWalletButtonRow>\n <Button variant=\"text\" onClick={onClose} fullWidth>\n {t('button.cancel')}\n </Button>\n <Button variant=\"contained\" onClick={handleContinue} fullWidth>\n {t('button.continue')}\n </Button>\n </SendToWalletButtonRow>\n </SendToWalletSheetContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AA8BA,MAAa,wBAET,YAAyD,OAAO,QAAQ;CAC1E,MAAM,oBAAoB;EACvB,IAAoC,SAAS,MAAM;CACtD;CAEA,OACE,oBAAC,aAAD;EAAkB;YAChB,oBAAC,8BAAD;GAA8B,GAAI;GAAO,SAAS;EAAc,CAAA;CACrD,CAAA;AAEjB,CAAC;AAED,MAAM,gCAED,EAAE,YAAY,SAAS,WAAW,gBAAgB;CACrD,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,EAAE,UAAU,SAAS,SAAS;CACpC,MAAM,UAAU,gBAAgB;CAChC,MAAM,MAAM,OAAoB,IAAI;CACpC,oBAAoB,GAAG;CAEvB,MAAM,uBAAuB;EAC3B,QAAQ,KAAA,+BAA8C;GACpD,SAAS;GACT,SAAS;EACX,CAAC;EACD,QAAQ;EACR,WAAW;CACb;CAEA,OACE,qBAAC,4BAAD;EAAiC;YAAjC;GACE,oBAAC,eAAD,EAAA,UACE,oBAAC,QAAD,EAAQ,IAAI,EAAE,UAAU,GAAG,EAAI,CAAA,EAClB,CAAA;GACf,oBAAC,YAAD;IAAY,SAAQ;IAAK,IAAI;KAAE,WAAW;KAAU,IAAI;IAAE;cACvD,EAAE,kCAAkC;GAC3B,CAAA;GACZ,oBAAC,uBAAD,EAAA,UACE,oBAAC,YAAD,EAAA,UAAa,UAAsB,CAAA,EACd,CAAA;GACvB,oBAAC,cAAD;IACE,UAAS;IACT,OACE,oBAAC,YAAD;KAAY,SAAQ;KAAQ,IAAI,EAAE,OAAO,eAAe;eACrD,EAAE,sCAAsC,EACvC,WAAW,OAAO,KACpB,CAAC;IACS,CAAA;IAEd,MAAM,oBAAC,gBAAD,CAAiB,CAAA;IACvB,WAAA;GACD,CAAA;GACD,qBAAC,uBAAD,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,SAAQ;IAAO,SAAS;IAAS,WAAA;cACtC,EAAE,eAAe;GACZ,CAAA,GACR,oBAAC,QAAD;IAAQ,SAAQ;IAAY,SAAS;IAAgB,WAAA;cAClD,EAAE,iBAAiB;GACd,CAAA,CACa,EAAA,CAAA;EACG;;AAEhC"}
1
+ {"version":3,"file":"ConfirmToAddressSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/ConfirmToAddressSheet.tsx"],"sourcesContent":["import Wallet from '@mui/icons-material/Wallet'\nimport WarningRounded from '@mui/icons-material/WarningRounded'\nimport { Button, Typography } from '@mui/material'\nimport type { JSX, Ref, RefObject } from 'react'\nimport { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { AlertMessage } from '../../components/Messages/AlertMessage.js'\nimport { useChain } from '../../hooks/useChain.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport {\n IconContainer,\n SendToWalletButtonRow,\n SendToWalletSheetContainer,\n SheetAddressContainer,\n} from '../SendToWallet/SendToWalletPage.style.js'\n\ninterface ConfirmToAddressSheetProps {\n onContinue: () => void\n toAddress: string\n toChainId: number\n}\n\ninterface ConfirmToAddressSheetContentProps extends ConfirmToAddressSheetProps {\n onClose: () => void\n}\n\nexport const ConfirmToAddressSheet = ({\n ref,\n ...props\n}: ConfirmToAddressSheetProps & {\n ref?: Ref<BottomSheetBase>\n}): JSX.Element => {\n const handleClose = () => {\n ;(ref as RefObject<BottomSheetBase>).current?.close()\n }\n\n return (\n <BottomSheet ref={ref}>\n <ConfirmToAddressSheetContent {...props} onClose={handleClose} />\n </BottomSheet>\n )\n}\n\nconst ConfirmToAddressSheetContent: React.FC<\n ConfirmToAddressSheetContentProps\n> = ({ onContinue, onClose, toAddress, toChainId }) => {\n const { t } = useTranslation()\n const { chain } = useChain(toChainId)\n const emitter = useWidgetEvents()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n\n const handleContinue = () => {\n emitter.emit(WidgetEvent.LowAddressActivityConfirmed, {\n address: toAddress,\n chainId: toChainId,\n })\n onClose()\n onContinue()\n }\n\n return (\n <SendToWalletSheetContainer ref={ref}>\n <IconContainer>\n <Wallet sx={{ fontSize: 40 }} />\n </IconContainer>\n <Typography variant=\"h6\" sx={{ textAlign: 'center', mb: 2 }}>\n {t('warning.title.lowAddressActivity')}\n </Typography>\n <SheetAddressContainer>\n <Typography>{toAddress}</Typography>\n </SheetAddressContainer>\n <AlertMessage\n severity=\"warning\"\n title={\n <Typography variant=\"body2\" sx={{ color: 'text.primary' }}>\n {t('warning.message.lowAddressActivity', {\n chainName: chain?.name,\n })}\n </Typography>\n }\n icon={<WarningRounded />}\n multiline\n />\n <SendToWalletButtonRow>\n <Button variant=\"text\" onClick={onClose} fullWidth>\n {t('button.cancel')}\n </Button>\n <Button variant=\"contained\" onClick={handleContinue} fullWidth>\n {t('button.continue')}\n </Button>\n </SendToWalletButtonRow>\n </SendToWalletSheetContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AA8BA,MAAa,yBAAyB,EACpC,KACA,GAAG,YAGc;CACjB,MAAM,oBAAoB;EACvB,IAAoC,SAAS,MAAM;CACtD;CAEA,OACE,oBAAC,aAAD;EAAkB;YAChB,oBAAC,8BAAD;GAA8B,GAAI;GAAO,SAAS;EAAc,CAAA;CACrD,CAAA;AAEjB;AAEA,MAAM,gCAED,EAAE,YAAY,SAAS,WAAW,gBAAgB;CACrD,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,EAAE,UAAU,SAAS,SAAS;CACpC,MAAM,UAAU,gBAAgB;CAChC,MAAM,MAAM,OAAoB,IAAI;CACpC,oBAAoB,GAAG;CAEvB,MAAM,uBAAuB;EAC3B,QAAQ,KAAA,+BAA8C;GACpD,SAAS;GACT,SAAS;EACX,CAAC;EACD,QAAQ;EACR,WAAW;CACb;CAEA,OACE,qBAAC,4BAAD;EAAiC;YAAjC;GACE,oBAAC,eAAD,EAAA,UACE,oBAAC,QAAD,EAAQ,IAAI,EAAE,UAAU,GAAG,EAAI,CAAA,EAClB,CAAA;GACf,oBAAC,YAAD;IAAY,SAAQ;IAAK,IAAI;KAAE,WAAW;KAAU,IAAI;IAAE;cACvD,EAAE,kCAAkC;GAC3B,CAAA;GACZ,oBAAC,uBAAD,EAAA,UACE,oBAAC,YAAD,EAAA,UAAa,UAAsB,CAAA,EACd,CAAA;GACvB,oBAAC,cAAD;IACE,UAAS;IACT,OACE,oBAAC,YAAD;KAAY,SAAQ;KAAQ,IAAI,EAAE,OAAO,eAAe;eACrD,EAAE,sCAAsC,EACvC,WAAW,OAAO,KACpB,CAAC;IACS,CAAA;IAEd,MAAM,oBAAC,gBAAD,CAAiB,CAAA;IACvB,WAAA;GACD,CAAA;GACD,qBAAC,uBAAD,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,SAAQ;IAAO,SAAS;IAAS,WAAA;cACtC,EAAE,eAAe;GACZ,CAAA,GACR,oBAAC,QAAD;IAAQ,SAAQ;IAAY,SAAS;IAAgB,WAAA;cAClD,EAAE,iBAAiB;GACd,CAAA,CACa,EAAA,CAAA;EACG;;AAEhC"}
@@ -3,27 +3,31 @@ import { IconCircle } from "../../components/IconCircle/IconCircle.js";
3
3
  import { BottomSheet } from "../../components/BottomSheet/BottomSheet.js";
4
4
  import { useSetContentHeight } from "../../hooks/useSetContentHeight.js";
5
5
  import { CenterContainer } from "./ExchangeRateBottomSheet.style.js";
6
- import { forwardRef, useCallback, useImperativeHandle, useRef, useState } from "react";
6
+ import { useCallback, useImperativeHandle, useRef, useState } from "react";
7
7
  import { Box, Button, Typography } from "@mui/material";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { useTranslation } from "react-i18next";
10
10
  //#region src/pages/TransactionPage/ExchangeRateBottomSheet.tsx
11
- const ExchangeRateBottomSheet = forwardRef(({ onContinue, onCancel }, ref) => {
11
+ const ExchangeRateBottomSheet = ({ onContinue, onCancel, ref }) => {
12
12
  const [data, setData] = useState();
13
13
  const bottomSheetRef = useRef(null);
14
14
  const resolverRef = useRef(null);
15
- const handleContinue = () => {
16
- ref.current?.close(true);
15
+ const close = useCallback((value = false, bottomSheetClose = true) => {
16
+ resolverRef.current?.(value);
17
+ if (bottomSheetClose) bottomSheetRef.current?.close();
18
+ }, []);
19
+ const handleContinue = useCallback(() => {
20
+ close(true);
17
21
  onContinue?.();
18
- };
22
+ }, [close, onContinue]);
19
23
  const handleCancel = useCallback(() => {
20
- ref.current?.close(false);
24
+ close(false);
21
25
  onCancel?.();
22
- }, [onCancel, ref]);
26
+ }, [close, onCancel]);
23
27
  const handleClose = useCallback(() => {
24
- ref.current?.close(false, false);
28
+ close(false, false);
25
29
  onCancel?.();
26
- }, [onCancel, ref]);
30
+ }, [close, onCancel]);
27
31
  useImperativeHandle(ref, () => ({
28
32
  isOpen: () => bottomSheetRef.current?.isOpen(),
29
33
  open: (resolver, data) => {
@@ -31,11 +35,8 @@ const ExchangeRateBottomSheet = forwardRef(({ onContinue, onCancel }, ref) => {
31
35
  resolverRef.current = resolver;
32
36
  bottomSheetRef.current?.open();
33
37
  },
34
- close: (value = false, bottomSheetClose = true) => {
35
- resolverRef.current?.(value);
36
- if (bottomSheetClose) bottomSheetRef.current?.close();
37
- }
38
- }), []);
38
+ close
39
+ }), [close]);
39
40
  return /* @__PURE__ */ jsx(BottomSheet, {
40
41
  ref: bottomSheetRef,
41
42
  onClose: handleClose,
@@ -45,7 +46,7 @@ const ExchangeRateBottomSheet = forwardRef(({ onContinue, onCancel }, ref) => {
45
46
  onCancel: handleCancel
46
47
  })
47
48
  });
48
- });
49
+ };
49
50
  const ExchangeRateBottomSheetContent = ({ data, onCancel, onContinue }) => {
50
51
  const { t } = useTranslation();
51
52
  const ref = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"file":"ExchangeRateBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/ExchangeRateBottomSheet.tsx"],"sourcesContent":["import type { ExchangeRateUpdateParams } from '@lifi/sdk'\nimport { Box, Button, Typography } from '@mui/material'\nimport type { ForwardRefExoticComponent, RefAttributes, RefObject } from 'react'\nimport {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { IconCircle } from '../../components/IconCircle/IconCircle.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { formatTokenAmount } from '../../utils/format.js'\nimport { CenterContainer } from './ExchangeRateBottomSheet.style.js'\n\nexport interface ExchangeRateBottomSheetBase {\n isOpen(): void\n open(resolver: (value: boolean) => void, data: ExchangeRateUpdateParams): void\n close(value?: boolean, bottomSheetClose?: boolean): void\n}\n\ninterface ExchangeRateBottomSheetProps {\n data?: ExchangeRateUpdateParams\n onContinue?(): void\n onCancel?(): void\n}\n\nexport const ExchangeRateBottomSheet: ForwardRefExoticComponent<\n ExchangeRateBottomSheetProps & RefAttributes<ExchangeRateBottomSheetBase>\n> = forwardRef<ExchangeRateBottomSheetBase, ExchangeRateBottomSheetProps>(\n ({ onContinue, onCancel }, ref) => {\n const [data, setData] = useState<ExchangeRateUpdateParams>()\n const bottomSheetRef = useRef<BottomSheetBase>(null)\n const resolverRef = useRef<(value: boolean) => void>(null)\n\n const handleContinue = () => {\n ;(ref as RefObject<ExchangeRateBottomSheetBase>).current?.close(true)\n onContinue?.()\n }\n\n const handleCancel = useCallback(() => {\n ;(ref as RefObject<ExchangeRateBottomSheetBase>).current?.close(false)\n onCancel?.()\n }, [onCancel, ref])\n\n const handleClose = useCallback(() => {\n ;(ref as RefObject<ExchangeRateBottomSheetBase>).current?.close(\n false,\n false\n )\n onCancel?.()\n }, [onCancel, ref])\n\n useImperativeHandle(\n ref,\n () => ({\n isOpen: () => bottomSheetRef.current?.isOpen(),\n open: (resolver, data) => {\n setData(data)\n resolverRef.current = resolver\n bottomSheetRef.current?.open()\n },\n close: (value = false, bottomSheetClose = true) => {\n resolverRef.current?.(value)\n if (bottomSheetClose) {\n bottomSheetRef.current?.close()\n }\n },\n }),\n []\n )\n\n return (\n <BottomSheet ref={bottomSheetRef} onClose={handleClose}>\n <ExchangeRateBottomSheetContent\n data={data}\n onContinue={handleContinue}\n onCancel={handleCancel}\n />\n </BottomSheet>\n )\n }\n)\n\nconst ExchangeRateBottomSheetContent: React.FC<\n ExchangeRateBottomSheetProps\n> = ({ data, onCancel, onContinue }) => {\n const { t } = useTranslation()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n\n if (!data) {\n return\n }\n\n const oldAmount = BigInt(data.oldToAmount || 1)\n const rateChange = (\n (Number((BigInt(data.newToAmount || 0) * 1_000_000n) / oldAmount) /\n 1_000_000) *\n 100 -\n 100\n ).toFixed(2)\n\n return (\n <Box\n ref={ref}\n sx={{\n p: 3,\n }}\n >\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 1 }} />\n <Typography\n sx={{\n py: 1,\n fontSize: 18,\n fontWeight: 700,\n }}\n >\n {t('warning.title.rateChanged')}\n </Typography>\n </CenterContainer>\n <Typography\n sx={{\n py: 1,\n }}\n >\n {t('warning.message.rateChanged')}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 1,\n }}\n >\n <Typography>{t('main.quotedAmount')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.tokenAmount', {\n value: formatTokenAmount(\n BigInt(data.oldToAmount),\n data.toToken.decimals\n ),\n })}{' '}\n {data?.toToken.symbol}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.currentAmount')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.tokenAmount', {\n value: formatTokenAmount(\n BigInt(data?.newToAmount),\n data?.toToken.decimals\n ),\n })}{' '}\n {data?.toToken.symbol}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.rateChange')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {rateChange}%\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n mt: 3,\n }}\n >\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Box\n sx={{\n display: 'flex',\n p: 1,\n }}\n />\n <Button variant=\"contained\" onClick={onContinue} fullWidth>\n {t('button.continue')}\n </Button>\n </Box>\n </Box>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExchangeRateBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/ExchangeRateBottomSheet.tsx"],"sourcesContent":["import type { ExchangeRateUpdateParams } from '@lifi/sdk'\nimport { Box, Button, Typography } from '@mui/material'\nimport type { JSX, Ref } from 'react'\nimport { useCallback, useImperativeHandle, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { IconCircle } from '../../components/IconCircle/IconCircle.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { formatTokenAmount } from '../../utils/format.js'\nimport { CenterContainer } from './ExchangeRateBottomSheet.style.js'\n\nexport interface ExchangeRateBottomSheetBase {\n isOpen(): void\n open(resolver: (value: boolean) => void, data: ExchangeRateUpdateParams): void\n close(value?: boolean, bottomSheetClose?: boolean): void\n}\n\ninterface ExchangeRateBottomSheetProps {\n data?: ExchangeRateUpdateParams\n onContinue?(): void\n onCancel?(): void\n}\n\nexport const ExchangeRateBottomSheet = ({\n onContinue,\n onCancel,\n ref,\n}: ExchangeRateBottomSheetProps & {\n ref?: Ref<ExchangeRateBottomSheetBase>\n}): JSX.Element => {\n const [data, setData] = useState<ExchangeRateUpdateParams>()\n const bottomSheetRef = useRef<BottomSheetBase>(null)\n const resolverRef = useRef<(value: boolean) => void>(null)\n\n const close = useCallback((value = false, bottomSheetClose = true) => {\n resolverRef.current?.(value)\n if (bottomSheetClose) {\n bottomSheetRef.current?.close()\n }\n }, [])\n\n const handleContinue = useCallback(() => {\n close(true)\n onContinue?.()\n }, [close, onContinue])\n\n const handleCancel = useCallback(() => {\n close(false)\n onCancel?.()\n }, [close, onCancel])\n\n const handleClose = useCallback(() => {\n close(false, false)\n onCancel?.()\n }, [close, onCancel])\n\n useImperativeHandle(\n ref,\n () => ({\n isOpen: () => bottomSheetRef.current?.isOpen(),\n open: (resolver, data) => {\n setData(data)\n resolverRef.current = resolver\n bottomSheetRef.current?.open()\n },\n close,\n }),\n [close]\n )\n\n return (\n <BottomSheet ref={bottomSheetRef} onClose={handleClose}>\n <ExchangeRateBottomSheetContent\n data={data}\n onContinue={handleContinue}\n onCancel={handleCancel}\n />\n </BottomSheet>\n )\n}\n\nconst ExchangeRateBottomSheetContent: React.FC<\n ExchangeRateBottomSheetProps\n> = ({ data, onCancel, onContinue }) => {\n const { t } = useTranslation()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n\n if (!data) {\n return\n }\n\n const oldAmount = BigInt(data.oldToAmount || 1)\n const rateChange = (\n (Number((BigInt(data.newToAmount || 0) * 1_000_000n) / oldAmount) /\n 1_000_000) *\n 100 -\n 100\n ).toFixed(2)\n\n return (\n <Box\n ref={ref}\n sx={{\n p: 3,\n }}\n >\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 1 }} />\n <Typography\n sx={{\n py: 1,\n fontSize: 18,\n fontWeight: 700,\n }}\n >\n {t('warning.title.rateChanged')}\n </Typography>\n </CenterContainer>\n <Typography\n sx={{\n py: 1,\n }}\n >\n {t('warning.message.rateChanged')}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 1,\n }}\n >\n <Typography>{t('main.quotedAmount')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.tokenAmount', {\n value: formatTokenAmount(\n BigInt(data.oldToAmount),\n data.toToken.decimals\n ),\n })}{' '}\n {data?.toToken.symbol}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.currentAmount')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.tokenAmount', {\n value: formatTokenAmount(\n BigInt(data?.newToAmount),\n data?.toToken.decimals\n ),\n })}{' '}\n {data?.toToken.symbol}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.rateChange')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {rateChange}%\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n mt: 3,\n }}\n >\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Box\n sx={{\n display: 'flex',\n p: 1,\n }}\n />\n <Button variant=\"contained\" onClick={onContinue} fullWidth>\n {t('button.continue')}\n </Button>\n </Box>\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExchangeRateBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/ExchangeRateBottomSheet.style.tsx"],"sourcesContent":["import { Box, styled } from '@mui/material'\nimport type React from 'react'\n\nexport const CenterContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n }))\n"],"mappings":";;AAGA,MAAa,kBACX,OAAO,GAAG,SAAS;CACjB,SAAS;CACT,YAAY;CACZ,UAAU;AACZ,EAAE"}
1
+ {"version":3,"file":"ExchangeRateBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/ExchangeRateBottomSheet.style.tsx"],"sourcesContent":["import { Box, styled } from '@mui/material'\nimport type React from 'react'\n\nexport const CenterContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n }))\n"],"mappings":";;AAGA,MAAa,kBACX,OAAO,GAAG,CAAC,QAAQ;CACjB,SAAS;CACT,YAAY;CACZ,UAAU;AACZ,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"RouteTracker.js","names":[],"sources":["../../../../src/pages/TransactionPage/RouteTracker.tsx"],"sourcesContent":["import type { Dispatch, JSX, SetStateAction } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { ProgressToNextUpdate } from '../../components/ProgressToNextUpdate.js'\nimport { useRoutes } from '../../hooks/useRoutes.js'\nimport { useRouteExecutionStoreContext } from '../../stores/routes/RouteExecutionStore.js'\nimport { useSetExecutableRoute } from '../../stores/routes/useSetExecutableRoute.js'\n\ninterface RouteTrackerProps {\n observableRouteId: string\n onChange: Dispatch<SetStateAction<string>>\n onFetching: Dispatch<SetStateAction<boolean>>\n}\n\nexport const RouteTracker = ({\n observableRouteId,\n onChange,\n onFetching,\n}: RouteTrackerProps): JSX.Element => {\n const routeExecutionStore = useRouteExecutionStoreContext()\n const setExecutableRoute = useSetExecutableRoute()\n const [observableRoute] = useState(\n () => routeExecutionStore.getState().routes[observableRouteId]?.route\n )\n const observableRouteIdRef = useRef(observableRoute?.id)\n const { routes, isFetching, dataUpdatedAt, refetchTime, refetch } = useRoutes(\n { observableRoute }\n )\n const currentRoute = routes?.[0]\n\n /**\n * The reviewable route is the route that the user currently sees on the review page.\n * The observable route is the route for which we track bridges and exchanges.\n * This allows us to query the route using the same tool each time we refresh.\n * The observable and reviewable routes can be the same when we first enter the review page.\n */\n // biome-ignore lint/correctness/useExhaustiveDependencies: run only when currentRoute changes\n useEffect(() => {\n if (\n observableRouteIdRef.current &&\n currentRoute &&\n observableRouteIdRef.current !== currentRoute.id\n ) {\n const reviewableRouteId = observableRouteIdRef.current\n observableRouteIdRef.current = currentRoute.id\n setExecutableRoute(currentRoute, [observableRouteId, reviewableRouteId])\n onChange(currentRoute.id)\n }\n }, [currentRoute?.id, observableRouteId])\n\n useEffect(() => {\n onFetching(isFetching)\n }, [isFetching, onFetching])\n\n const handleRefetch = () => {\n refetch()\n }\n\n return (\n <ProgressToNextUpdate\n updatedAt={dataUpdatedAt || Date.now()}\n timeToUpdate={refetchTime}\n isLoading={isFetching}\n onClick={handleRefetch}\n sx={{ marginRight: -1 }}\n size=\"medium\"\n />\n )\n}\n"],"mappings":";;;;;;;AAaA,MAAa,gBAAgB,EAC3B,mBACA,UACA,iBACoC;CACpC,MAAM,sBAAsB,8BAA8B;CAC1D,MAAM,qBAAqB,sBAAsB;CACjD,MAAM,CAAC,mBAAmB,eAClB,oBAAoB,SAAS,EAAE,OAAO,oBAAoB,KAClE;CACA,MAAM,uBAAuB,OAAO,iBAAiB,EAAE;CACvD,MAAM,EAAE,QAAQ,YAAY,eAAe,aAAa,YAAY,UAClE,EAAE,gBAAgB,CACpB;CACA,MAAM,eAAe,SAAS;;;;;;;CAS9B,gBAAgB;EACd,IACE,qBAAqB,WACrB,gBACA,qBAAqB,YAAY,aAAa,IAC9C;GACA,MAAM,oBAAoB,qBAAqB;GAC/C,qBAAqB,UAAU,aAAa;GAC5C,mBAAmB,cAAc,CAAC,mBAAmB,iBAAiB,CAAC;GACvE,SAAS,aAAa,EAAE;EAC1B;CACF,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC;CAExC,gBAAgB;EACd,WAAW,UAAU;CACvB,GAAG,CAAC,YAAY,UAAU,CAAC;CAE3B,MAAM,sBAAsB;EAC1B,QAAQ;CACV;CAEA,OACE,oBAAC,sBAAD;EACE,WAAW,iBAAiB,KAAK,IAAI;EACrC,cAAc;EACd,WAAW;EACX,SAAS;EACT,IAAI,EAAE,aAAa,GAAG;EACtB,MAAK;CACN,CAAA;AAEL"}
1
+ {"version":3,"file":"RouteTracker.js","names":[],"sources":["../../../../src/pages/TransactionPage/RouteTracker.tsx"],"sourcesContent":["import type { Dispatch, JSX, SetStateAction } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { ProgressToNextUpdate } from '../../components/ProgressToNextUpdate.js'\nimport { useRoutes } from '../../hooks/useRoutes.js'\nimport { useRouteExecutionStoreContext } from '../../stores/routes/RouteExecutionStore.js'\nimport { useSetExecutableRoute } from '../../stores/routes/useSetExecutableRoute.js'\n\ninterface RouteTrackerProps {\n observableRouteId: string\n onChange: Dispatch<SetStateAction<string>>\n onFetching: Dispatch<SetStateAction<boolean>>\n}\n\nexport const RouteTracker = ({\n observableRouteId,\n onChange,\n onFetching,\n}: RouteTrackerProps): JSX.Element => {\n const routeExecutionStore = useRouteExecutionStoreContext()\n const setExecutableRoute = useSetExecutableRoute()\n const [observableRoute] = useState(\n () => routeExecutionStore.getState().routes[observableRouteId]?.route\n )\n const observableRouteIdRef = useRef(observableRoute?.id)\n const { routes, isFetching, dataUpdatedAt, refetchTime, refetch } = useRoutes(\n { observableRoute }\n )\n const currentRoute = routes?.[0]\n\n /**\n * The reviewable route is the route that the user currently sees on the review page.\n * The observable route is the route for which we track bridges and exchanges.\n * This allows us to query the route using the same tool each time we refresh.\n * The observable and reviewable routes can be the same when we first enter the review page.\n */\n // biome-ignore lint/correctness/useExhaustiveDependencies: run only when currentRoute changes\n useEffect(() => {\n if (\n observableRouteIdRef.current &&\n currentRoute &&\n observableRouteIdRef.current !== currentRoute.id\n ) {\n const reviewableRouteId = observableRouteIdRef.current\n observableRouteIdRef.current = currentRoute.id\n setExecutableRoute(currentRoute, [observableRouteId, reviewableRouteId])\n onChange(currentRoute.id)\n }\n }, [currentRoute?.id, observableRouteId])\n\n useEffect(() => {\n onFetching(isFetching)\n }, [isFetching, onFetching])\n\n const handleRefetch = () => {\n refetch()\n }\n\n return (\n <ProgressToNextUpdate\n updatedAt={dataUpdatedAt || Date.now()}\n timeToUpdate={refetchTime}\n isLoading={isFetching}\n onClick={handleRefetch}\n sx={{ marginRight: -1 }}\n size=\"medium\"\n />\n )\n}\n"],"mappings":";;;;;;;AAaA,MAAa,gBAAgB,EAC3B,mBACA,UACA,iBACoC;CACpC,MAAM,sBAAsB,8BAA8B;CAC1D,MAAM,qBAAqB,sBAAsB;CACjD,MAAM,CAAC,mBAAmB,eAClB,oBAAoB,SAAS,CAAC,CAAC,OAAO,kBAAkB,EAAE,KAClE;CACA,MAAM,uBAAuB,OAAO,iBAAiB,EAAE;CACvD,MAAM,EAAE,QAAQ,YAAY,eAAe,aAAa,YAAY,UAClE,EAAE,gBAAgB,CACpB;CACA,MAAM,eAAe,SAAS;;;;;;;CAS9B,gBAAgB;EACd,IACE,qBAAqB,WACrB,gBACA,qBAAqB,YAAY,aAAa,IAC9C;GACA,MAAM,oBAAoB,qBAAqB;GAC/C,qBAAqB,UAAU,aAAa;GAC5C,mBAAmB,cAAc,CAAC,mBAAmB,iBAAiB,CAAC;GACvE,SAAS,aAAa,EAAE;EAC1B;CACF,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC;CAExC,gBAAgB;EACd,WAAW,UAAU;CACvB,GAAG,CAAC,YAAY,UAAU,CAAC;CAE3B,MAAM,sBAAsB;EAC1B,QAAQ;CACV;CAEA,OACE,oBAAC,sBAAD;EACE,WAAW,iBAAiB,KAAK,IAAI;EACrC,cAAc;EACd,WAAW;EACX,SAAS;EACT,IAAI,EAAE,aAAa,GAAG;EACtB,MAAK;CACN,CAAA;AAEL"}
@@ -5,12 +5,12 @@ import { BottomSheet } from "../../components/BottomSheet/BottomSheet.js";
5
5
  import { useSetContentHeight } from "../../hooks/useSetContentHeight.js";
6
6
  import { ButtonRow, CenterContainer, ContentContainer, DetailLabel, DetailRow, DetailValue, WarningMessage, WarningTitle } from "./TokenValueBottomSheet.style.js";
7
7
  import { calculateValueLossPercentage } from "./utils.js";
8
- import { forwardRef, useRef, useState } from "react";
8
+ import { useRef, useState } from "react";
9
9
  import { Button, Checkbox, FormControlLabel } from "@mui/material";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { useTranslation } from "react-i18next";
12
12
  //#region src/pages/TransactionPage/TokenValueBottomSheet.tsx
13
- const TokenValueBottomSheet = forwardRef(({ route, onContinue, onCancel }, ref) => {
13
+ const TokenValueBottomSheet = ({ route, onContinue, onCancel, ref }) => {
14
14
  const handleCancel = () => {
15
15
  ref.current?.close();
16
16
  onCancel?.();
@@ -24,7 +24,7 @@ const TokenValueBottomSheet = forwardRef(({ route, onContinue, onCancel }, ref)
24
24
  onCancel: handleCancel
25
25
  })
26
26
  });
27
- });
27
+ };
28
28
  const TokenValueBottomSheetContent = ({ route, onCancel, onContinue }) => {
29
29
  const [accepted, setAccepted] = useState(false);
30
30
  const { t } = useTranslation();
@@ -1 +1 @@
1
- {"version":3,"file":"TokenValueBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport { Button, Checkbox, FormControlLabel } from '@mui/material'\nimport type { ForwardRefExoticComponent, RefAttributes, RefObject } from 'react'\nimport { forwardRef, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { FeeBreakdownTooltip } from '../../components/FeeBreakdownTooltip.js'\nimport { IconCircle } from '../../components/IconCircle/IconCircle.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport {\n ButtonRow,\n CenterContainer,\n ContentContainer,\n DetailLabel,\n DetailRow,\n DetailValue,\n WarningMessage,\n WarningTitle,\n} from './TokenValueBottomSheet.style.js'\nimport { calculateValueLossPercentage } from './utils.js'\n\ninterface TokenValueBottomSheetProps {\n route: Route\n onContinue(): void\n onCancel?(): void\n}\n\nexport const TokenValueBottomSheet: ForwardRefExoticComponent<\n TokenValueBottomSheetProps & RefAttributes<BottomSheetBase>\n> = forwardRef<BottomSheetBase, TokenValueBottomSheetProps>(\n ({ route, onContinue, onCancel }, ref) => {\n const handleCancel = () => {\n ;(ref as RefObject<BottomSheetBase>).current?.close()\n onCancel?.()\n }\n\n return (\n <BottomSheet ref={ref} onClose={onCancel}>\n <TokenValueBottomSheetContent\n route={route}\n onContinue={onContinue}\n onCancel={handleCancel}\n />\n </BottomSheet>\n )\n }\n)\n\nconst TokenValueBottomSheetContent: React.FC<TokenValueBottomSheetProps> = ({\n route,\n onCancel,\n onContinue,\n}) => {\n const [accepted, setAccepted] = useState(false)\n const { t } = useTranslation()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n const { gasCosts, feeCosts, gasCostUSD, feeCostUSD } =\n getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n\n return (\n <ContentContainer ref={ref}>\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 2.5 }} />\n <WarningTitle>{t('warning.title.highValueLoss')}</WarningTitle>\n </CenterContainer>\n <WarningMessage>{t('warning.message.highValueLoss')}</WarningMessage>\n <DetailRow>\n <DetailLabel>{t('main.sending')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.fromAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.fees.network')}</DetailLabel>\n <FeeBreakdownTooltip gasCosts={gasCosts} gasless={!gasCostUSD}>\n <DetailValue>\n {!gasCostUSD\n ? t('main.fees.free')\n : t('format.currency', { value: gasCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n {feeCostUSD ? (\n <DetailRow>\n <DetailLabel>{t('main.fees.provider')}</DetailLabel>\n <FeeBreakdownTooltip feeCosts={feeCosts}>\n <DetailValue>\n {t('format.currency', { value: feeCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n ) : null}\n <DetailRow>\n <DetailLabel>{t('main.receiving')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.toAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.valueLoss')}</DetailLabel>\n <DetailValue>\n {calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )}\n %\n </DetailValue>\n </DetailRow>\n <FormControlLabel\n control={\n <Checkbox\n checked={accepted}\n onChange={(_, checked) => setAccepted(checked)}\n />\n }\n label={t('warning.checkbox.highValueLoss')}\n sx={{ mt: 1 }}\n />\n <ButtonRow>\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={onContinue}\n disabled={!accepted}\n fullWidth\n >\n {t('button.continue')}\n </Button>\n </ButtonRow>\n </ContentContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,MAAa,wBAET,YACD,EAAE,OAAO,YAAY,YAAY,QAAQ;CACxC,MAAM,qBAAqB;EACxB,IAAoC,SAAS,MAAM;EACpD,WAAW;CACb;CAEA,OACE,oBAAC,aAAD;EAAkB;EAAK,SAAS;YAC9B,oBAAC,8BAAD;GACS;GACK;GACZ,UAAU;EACX,CAAA;CACU,CAAA;AAEjB,CACF;AAEA,MAAM,gCAAsE,EAC1E,OACA,UACA,iBACI;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,MAAM,OAAoB,IAAI;CACpC,oBAAoB,GAAG;CACvB,MAAM,EAAE,UAAU,UAAU,YAAY,eACtC,gCAAgC,KAAK;CACvC,MAAM,gBAAgB,OAAO,WAAW,MAAM,aAAa;CAC3D,MAAM,cAAc,OAAO,WAAW,MAAM,WAAW;CAEvD,OACE,qBAAC,kBAAD;EAAuB;YAAvB;GACE,qBAAC,iBAAD,EAAA,UAAA,CACE,oBAAC,YAAD;IAAY,QAAO;IAAU,IAAI,EAAE,IAAI,IAAI;GAAI,CAAA,GAC/C,oBAAC,cAAD,EAAA,UAAe,EAAE,6BAA6B,EAAgB,CAAA,CAC/C,EAAA,CAAA;GACjB,oBAAC,gBAAD,EAAA,UAAiB,EAAE,+BAA+B,EAAkB,CAAA;GACpE,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,cAAc,EAAe,CAAA,GAC7C,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,MAAM,cAAc,CAAC,EACzC,CAAA,CACJ,EAAA,CAAA;GACX,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,mBAAmB,EAAe,CAAA,GAClD,oBAAC,qBAAD;IAA+B;IAAU,SAAS,CAAC;cACjD,oBAAC,aAAD,EAAA,UACG,CAAC,aACE,EAAE,gBAAgB,IAClB,EAAE,mBAAmB,EAAE,OAAO,WAAW,CAAC,EACnC,CAAA;GACM,CAAA,CACZ,EAAA,CAAA;GACV,aACC,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,oBAAoB,EAAe,CAAA,GACnD,oBAAC,qBAAD;IAA+B;cAC7B,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,WAAW,CAAC,EAChC,CAAA;GACM,CAAA,CACZ,EAAA,CAAA,IACT;GACJ,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,gBAAgB,EAAe,CAAA,GAC/C,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,MAAM,YAAY,CAAC,EACvC,CAAA,CACJ,EAAA,CAAA;GACX,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,gBAAgB,EAAe,CAAA,GAC/C,qBAAC,aAAD,EAAA,UAAA,CACG,6BACC,eACA,aACA,YACA,UACF,GAAE,GAES,EAAA,CAAA,CACJ,EAAA,CAAA;GACX,oBAAC,kBAAD;IACE,SACE,oBAAC,UAAD;KACE,SAAS;KACT,WAAW,GAAG,YAAY,YAAY,OAAO;IAC9C,CAAA;IAEH,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,IAAI,EAAE;GACb,CAAA;GACD,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,SAAQ;IAAO,SAAS;IAAU,WAAA;cACvC,EAAE,eAAe;GACZ,CAAA,GACR,oBAAC,QAAD;IACE,SAAQ;IACR,SAAS;IACT,UAAU,CAAC;IACX,WAAA;cAEC,EAAE,iBAAiB;GACd,CAAA,CACC,EAAA,CAAA;EACK;;AAEtB"}
1
+ {"version":3,"file":"TokenValueBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport { Button, Checkbox, FormControlLabel } from '@mui/material'\nimport type { JSX, Ref, RefObject } from 'react'\nimport { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { FeeBreakdownTooltip } from '../../components/FeeBreakdownTooltip.js'\nimport { IconCircle } from '../../components/IconCircle/IconCircle.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport {\n ButtonRow,\n CenterContainer,\n ContentContainer,\n DetailLabel,\n DetailRow,\n DetailValue,\n WarningMessage,\n WarningTitle,\n} from './TokenValueBottomSheet.style.js'\nimport { calculateValueLossPercentage } from './utils.js'\n\ninterface TokenValueBottomSheetProps {\n route: Route\n onContinue(): void\n onCancel?(): void\n}\n\nexport const TokenValueBottomSheet = ({\n route,\n onContinue,\n onCancel,\n ref,\n}: TokenValueBottomSheetProps & {\n ref?: Ref<BottomSheetBase>\n}): JSX.Element => {\n const handleCancel = () => {\n ;(ref as RefObject<BottomSheetBase>).current?.close()\n onCancel?.()\n }\n\n return (\n <BottomSheet ref={ref} onClose={onCancel}>\n <TokenValueBottomSheetContent\n route={route}\n onContinue={onContinue}\n onCancel={handleCancel}\n />\n </BottomSheet>\n )\n}\n\nconst TokenValueBottomSheetContent: React.FC<TokenValueBottomSheetProps> = ({\n route,\n onCancel,\n onContinue,\n}) => {\n const [accepted, setAccepted] = useState(false)\n const { t } = useTranslation()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n const { gasCosts, feeCosts, gasCostUSD, feeCostUSD } =\n getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n\n return (\n <ContentContainer ref={ref}>\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 2.5 }} />\n <WarningTitle>{t('warning.title.highValueLoss')}</WarningTitle>\n </CenterContainer>\n <WarningMessage>{t('warning.message.highValueLoss')}</WarningMessage>\n <DetailRow>\n <DetailLabel>{t('main.sending')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.fromAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.fees.network')}</DetailLabel>\n <FeeBreakdownTooltip gasCosts={gasCosts} gasless={!gasCostUSD}>\n <DetailValue>\n {!gasCostUSD\n ? t('main.fees.free')\n : t('format.currency', { value: gasCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n {feeCostUSD ? (\n <DetailRow>\n <DetailLabel>{t('main.fees.provider')}</DetailLabel>\n <FeeBreakdownTooltip feeCosts={feeCosts}>\n <DetailValue>\n {t('format.currency', { value: feeCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n ) : null}\n <DetailRow>\n <DetailLabel>{t('main.receiving')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.toAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.valueLoss')}</DetailLabel>\n <DetailValue>\n {calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )}\n %\n </DetailValue>\n </DetailRow>\n <FormControlLabel\n control={\n <Checkbox\n checked={accepted}\n onChange={(_, checked) => setAccepted(checked)}\n />\n }\n label={t('warning.checkbox.highValueLoss')}\n sx={{ mt: 1 }}\n />\n <ButtonRow>\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={onContinue}\n disabled={!accepted}\n fullWidth\n >\n {t('button.continue')}\n </Button>\n </ButtonRow>\n </ContentContainer>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TokenValueBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.style.tsx"],"sourcesContent":["import { Box, styled, Typography } from '@mui/material'\nimport type React from 'react'\n\nexport const CenterContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n }))\n\nexport const ContentContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(({ theme }) => ({\n padding: theme.spacing(3),\n }))\n\nexport const WarningTitle: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n fontSize: 18,\n fontWeight: 700,\n }))\n\nexport const WarningMessage: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n fontSize: 14,\n fontWeight: 500,\n }))\n\nexport const DetailRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingTop: theme.spacing(0.75),\n paddingBottom: theme.spacing(0.75),\n}))\n\nexport const DetailLabel: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n fontSize: 14,\n fontWeight: 500,\n color: theme.vars.palette.text.secondary,\n }))\n\nexport const DetailValue: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)({\n fontSize: 14,\n fontWeight: 700,\n })\n\nexport const ButtonRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n marginTop: theme.spacing(3),\n gap: theme.spacing(1.5),\n}))\n"],"mappings":";;AAGA,MAAa,kBACX,OAAO,GAAG,SAAS;CACjB,SAAS;CACT,YAAY;CACZ,UAAU;AACZ,EAAE;AAEJ,MAAa,mBACX,OAAO,GAAG,GAAG,EAAE,aAAa,EAC1B,SAAS,MAAM,QAAQ,CAAC,EAC1B,EAAE;AAEJ,MAAa,eACX,OAAO,UAAU,GAAG,EAAE,aAAa;CACjC,YAAY,MAAM,QAAQ,CAAC;CAC3B,eAAe,MAAM,QAAQ,CAAC;CAC9B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,iBACX,OAAO,UAAU,GAAG,EAAE,aAAa;CACjC,cAAc,MAAM,QAAQ,GAAG;CAC/B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,YAAwD,OACnE,GACF,GAAG,EAAE,aAAa;CAChB,SAAS;CACT,gBAAgB;CAChB,YAAY;CACZ,YAAY,MAAM,QAAQ,GAAI;CAC9B,eAAe,MAAM,QAAQ,GAAI;AACnC,EAAE;AAEF,MAAa,cACX,OAAO,UAAU,GAAG,EAAE,aAAa;CACjC,UAAU;CACV,YAAY;CACZ,OAAO,MAAM,KAAK,QAAQ,KAAK;AACjC,EAAE;AAEJ,MAAa,cACX,OAAO,UAAU,EAAE;CACjB,UAAU;CACV,YAAY;AACd,CAAC;AAEH,MAAa,YAAwD,OACnE,GACF,GAAG,EAAE,aAAa;CAChB,SAAS;CACT,WAAW,MAAM,QAAQ,CAAC;CAC1B,KAAK,MAAM,QAAQ,GAAG;AACxB,EAAE"}
1
+ {"version":3,"file":"TokenValueBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.style.tsx"],"sourcesContent":["import { Box, styled, Typography } from '@mui/material'\nimport type React from 'react'\n\nexport const CenterContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n }))\n\nexport const ContentContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(({ theme }) => ({\n padding: theme.spacing(3),\n }))\n\nexport const WarningTitle: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n fontSize: 18,\n fontWeight: 700,\n }))\n\nexport const WarningMessage: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n fontSize: 14,\n fontWeight: 500,\n }))\n\nexport const DetailRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingTop: theme.spacing(0.75),\n paddingBottom: theme.spacing(0.75),\n}))\n\nexport const DetailLabel: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n fontSize: 14,\n fontWeight: 500,\n color: theme.vars.palette.text.secondary,\n }))\n\nexport const DetailValue: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)({\n fontSize: 14,\n fontWeight: 700,\n })\n\nexport const ButtonRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n marginTop: theme.spacing(3),\n gap: theme.spacing(1.5),\n}))\n"],"mappings":";;AAGA,MAAa,kBACX,OAAO,GAAG,CAAC,QAAQ;CACjB,SAAS;CACT,YAAY;CACZ,UAAU;AACZ,EAAE;AAEJ,MAAa,mBACX,OAAO,GAAG,CAAC,EAAE,EAAE,aAAa,EAC1B,SAAS,MAAM,QAAQ,CAAC,EAC1B,EAAE;AAEJ,MAAa,eACX,OAAO,UAAU,CAAC,EAAE,EAAE,aAAa;CACjC,YAAY,MAAM,QAAQ,CAAC;CAC3B,eAAe,MAAM,QAAQ,CAAC;CAC9B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,iBACX,OAAO,UAAU,CAAC,EAAE,EAAE,aAAa;CACjC,cAAc,MAAM,QAAQ,GAAG;CAC/B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,YAAwD,OACnE,GACF,CAAC,EAAE,EAAE,aAAa;CAChB,SAAS;CACT,gBAAgB;CAChB,YAAY;CACZ,YAAY,MAAM,QAAQ,GAAI;CAC9B,eAAe,MAAM,QAAQ,GAAI;AACnC,EAAE;AAEF,MAAa,cACX,OAAO,UAAU,CAAC,EAAE,EAAE,aAAa;CACjC,UAAU;CACV,YAAY;CACZ,OAAO,MAAM,KAAK,QAAQ,KAAK;AACjC,EAAE;AAEJ,MAAa,cACX,OAAO,UAAU,CAAC,CAAC;CACjB,UAAU;CACV,YAAY;AACd,CAAC;AAEH,MAAa,YAAwD,OACnE,GACF,CAAC,EAAE,EAAE,aAAa;CAChB,SAAS;CACT,WAAW,MAAM,QAAQ,CAAC;CAC1B,KAAK,MAAM,QAAQ,GAAG;AACxB,EAAE"}
@@ -11,7 +11,7 @@ import { ExecutionDoneCard } from "./ExecutionDoneCard.js";
11
11
  import { TransactionDoneButtons } from "./TransactionDoneButtons.js";
12
12
  import { TransactionFailedButtons } from "./TransactionFailedButtons.js";
13
13
  import { Box } from "@mui/material";
14
- import { jsx, jsxs } from "react/jsx-runtime";
14
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
15
  import { LazyMotion, MotionConfig, domMax } from "motion/react";
16
16
  //#region src/pages/TransactionPage/TransactionExecutionContent.tsx
17
17
  /**
@@ -34,40 +34,36 @@ const TransactionExecutionContent = ({ route, status, restartRoute, deleteRoute
34
34
  flexDirection: "column",
35
35
  gap: 2
36
36
  },
37
- children: [
38
- /* @__PURE__ */ jsx(ExecutionStatusCard, {
39
- title,
40
- description: message,
41
- rows: useExecutionRows(route, isDone ? route.toAddress : void 0),
42
- iconSlot: mode === "custom" && isDone && !!(contractCompactComponent || contractSecondaryComponent) ? contractCompactComponent || contractSecondaryComponent : /* @__PURE__ */ jsx(StatusIcon, {
43
- route,
44
- status
45
- }),
46
- footerSlot: isDone ? /* @__PURE__ */ jsx(ExecutionDoneCard, {
47
- route,
48
- status
49
- }) : /* @__PURE__ */ jsx(Card$1, {
50
- type: "default",
51
- indented: true,
52
- children: /* @__PURE__ */ jsx(RouteTokens, {
53
- route,
54
- defaultExpanded: defaultUI?.transactionDetailsExpanded
55
- })
56
- })
57
- }),
58
- /* @__PURE__ */ jsx(WarningMessages, {
37
+ children: [/* @__PURE__ */ jsx(ExecutionStatusCard, {
38
+ title,
39
+ description: message,
40
+ rows: useExecutionRows(route, isDone ? route.toAddress : void 0),
41
+ iconSlot: mode === "custom" && isDone && !!(contractCompactComponent || contractSecondaryComponent) ? contractCompactComponent || contractSecondaryComponent : /* @__PURE__ */ jsx(StatusIcon, {
59
42
  route,
60
- allowInteraction: true
43
+ status
61
44
  }),
62
- status === 8 ? /* @__PURE__ */ jsx(TransactionFailedButtons, {
63
- route,
64
- restartRoute,
65
- deleteRoute
66
- }) : isDone ? /* @__PURE__ */ jsx(TransactionDoneButtons, {
45
+ footerSlot: isDone ? /* @__PURE__ */ jsx(ExecutionDoneCard, {
67
46
  route,
68
47
  status
69
- }) : null
70
- ]
48
+ }) : /* @__PURE__ */ jsx(Card$1, {
49
+ type: "default",
50
+ indented: true,
51
+ children: /* @__PURE__ */ jsx(RouteTokens, {
52
+ route,
53
+ defaultExpanded: defaultUI?.transactionDetailsExpanded
54
+ })
55
+ })
56
+ }), status === 8 ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(WarningMessages, {
57
+ route,
58
+ allowInteraction: true
59
+ }), /* @__PURE__ */ jsx(TransactionFailedButtons, {
60
+ route,
61
+ restartRoute,
62
+ deleteRoute
63
+ })] }) : isDone ? /* @__PURE__ */ jsx(TransactionDoneButtons, {
64
+ route,
65
+ status
66
+ }) : null]
71
67
  })
72
68
  })
73
69
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionExecutionContent.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/TransactionExecutionContent.tsx"],"sourcesContent":["import type { RouteExtended } from '@lifi/sdk'\nimport { Box } from '@mui/material'\nimport { domMax, LazyMotion, MotionConfig } from 'motion/react'\nimport type React from 'react'\nimport type { JSX } from 'react'\nimport { Card } from '../../components/Card/Card.js'\nimport { ExecutionStatusCard } from '../../components/ExecutionStatusCard/ExecutionStatusCard.js'\nimport { StatusIcon } from '../../components/ExecutionStatusCard/StatusIcon.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { RouteTokens } from '../../components/RouteCard/RouteTokens.js'\nimport { useExecutionRows } from '../../components/StepActions/executionRows.js'\nimport { useRouteExecutionMessage } from '../../hooks/useRouteExecutionMessage.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport { ExecutionDoneCard } from './ExecutionDoneCard.js'\nimport { TransactionDoneButtons } from './TransactionDoneButtons.js'\nimport { TransactionFailedButtons } from './TransactionFailedButtons.js'\n\nexport interface TransactionExecutionContentProps {\n route: RouteExtended\n status: RouteExecutionStatus\n restartRoute: () => void\n deleteRoute: () => void\n}\n\n/**\n * Execution-phase layout for the Transaction page.\n * Renders the {@link ExecutionStatusCard}, warning messages,\n * and terminal action buttons.\n */\nexport const TransactionExecutionContent: React.FC<\n TransactionExecutionContentProps\n> = ({ route, status, restartRoute, deleteRoute }): JSX.Element => {\n const { title, message } = useRouteExecutionMessage(route, status)\n const {\n mode,\n contractCompactComponent,\n contractSecondaryComponent,\n defaultUI,\n } = useWidgetConfig()\n\n const isDone = hasEnumFlag(status, RouteExecutionStatus.Done)\n const rows = useExecutionRows(route, isDone ? route.toAddress : undefined)\n\n const showContract =\n mode === 'custom' &&\n isDone &&\n !!(contractCompactComponent || contractSecondaryComponent)\n\n const iconSlot = showContract ? (\n contractCompactComponent || contractSecondaryComponent\n ) : (\n <StatusIcon route={route} status={status} />\n )\n\n const footerSlot = isDone ? (\n <ExecutionDoneCard route={route} status={status} />\n ) : (\n <Card type=\"default\" indented>\n <RouteTokens\n route={route}\n defaultExpanded={defaultUI?.transactionDetailsExpanded}\n />\n </Card>\n )\n\n return (\n <LazyMotion features={domMax} strict>\n <MotionConfig reducedMotion=\"user\">\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <ExecutionStatusCard\n title={title}\n description={message}\n rows={rows}\n iconSlot={iconSlot}\n footerSlot={footerSlot}\n />\n <WarningMessages route={route} allowInteraction />\n {status === RouteExecutionStatus.Failed ? (\n <TransactionFailedButtons\n route={route}\n restartRoute={restartRoute}\n deleteRoute={deleteRoute}\n />\n ) : isDone ? (\n <TransactionDoneButtons route={route} status={status} />\n ) : null}\n </Box>\n </MotionConfig>\n </LazyMotion>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,+BAER,EAAE,OAAO,QAAQ,cAAc,kBAA+B;CACjE,MAAM,EAAE,OAAO,YAAY,yBAAyB,OAAO,MAAM;CACjE,MAAM,EACJ,MACA,0BACA,4BACA,cACE,gBAAgB;CAEpB,MAAM,SAAS,YAAY,QAAA,CAAiC;CAyB5D,OACE,oBAAC,YAAD;EAAY,UAAU;EAAQ,QAAA;YAC5B,oBAAC,cAAD;GAAc,eAAc;aAC1B,qBAAC,KAAD;IAAK,IAAI;KAAE,SAAS;KAAQ,eAAe;KAAU,KAAK;IAAE;cAA5D;KACE,oBAAC,qBAAD;MACS;MACP,aAAa;MACb,MA/BG,iBAAiB,OAAO,SAAS,MAAM,YAAY,KAAA,CA+B7C;MACT,UA7BR,SAAS,YACT,UACA,CAAC,EAAE,4BAA4B,8BAG/B,4BAA4B,6BAE5B,oBAAC,YAAD;OAAmB;OAAe;MAAS,CAAA;MAuBnC,YApBS,SACjB,oBAAC,mBAAD;OAA0B;OAAe;MAAS,CAAA,IAElD,oBAACA,QAAD;OAAM,MAAK;OAAU,UAAA;iBACnB,oBAAC,aAAD;QACS;QACP,iBAAiB,WAAW;OAC7B,CAAA;MACG,CAAA;KAaC,CAAA;KACD,oBAAC,iBAAD;MAAwB;MAAO,kBAAA;KAAkB,CAAA;KAChD,WAAA,IACC,oBAAC,0BAAD;MACS;MACO;MACD;KACd,CAAA,IACC,SACF,oBAAC,wBAAD;MAA+B;MAAe;KAAS,CAAA,IACrD;IACD;;EACO,CAAA;CACJ,CAAA;AAEhB"}
1
+ {"version":3,"file":"TransactionExecutionContent.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/TransactionExecutionContent.tsx"],"sourcesContent":["import type { RouteExtended } from '@lifi/sdk'\nimport { Box } from '@mui/material'\nimport { domMax, LazyMotion, MotionConfig } from 'motion/react'\nimport type React from 'react'\nimport type { JSX } from 'react'\nimport { Card } from '../../components/Card/Card.js'\nimport { ExecutionStatusCard } from '../../components/ExecutionStatusCard/ExecutionStatusCard.js'\nimport { StatusIcon } from '../../components/ExecutionStatusCard/StatusIcon.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { RouteTokens } from '../../components/RouteCard/RouteTokens.js'\nimport { useExecutionRows } from '../../components/StepActions/executionRows.js'\nimport { useRouteExecutionMessage } from '../../hooks/useRouteExecutionMessage.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport { ExecutionDoneCard } from './ExecutionDoneCard.js'\nimport { TransactionDoneButtons } from './TransactionDoneButtons.js'\nimport { TransactionFailedButtons } from './TransactionFailedButtons.js'\n\nexport interface TransactionExecutionContentProps {\n route: RouteExtended\n status: RouteExecutionStatus\n restartRoute: () => void\n deleteRoute: () => void\n}\n\n/**\n * Execution-phase layout for the Transaction page.\n * Renders the {@link ExecutionStatusCard}, warning messages,\n * and terminal action buttons.\n */\nexport const TransactionExecutionContent: React.FC<\n TransactionExecutionContentProps\n> = ({ route, status, restartRoute, deleteRoute }): JSX.Element => {\n const { title, message } = useRouteExecutionMessage(route, status)\n const {\n mode,\n contractCompactComponent,\n contractSecondaryComponent,\n defaultUI,\n } = useWidgetConfig()\n\n const isDone = hasEnumFlag(status, RouteExecutionStatus.Done)\n const rows = useExecutionRows(route, isDone ? route.toAddress : undefined)\n\n const showContract =\n mode === 'custom' &&\n isDone &&\n !!(contractCompactComponent || contractSecondaryComponent)\n\n const iconSlot = showContract ? (\n contractCompactComponent || contractSecondaryComponent\n ) : (\n <StatusIcon route={route} status={status} />\n )\n\n const footerSlot = isDone ? (\n <ExecutionDoneCard route={route} status={status} />\n ) : (\n <Card type=\"default\" indented>\n <RouteTokens\n route={route}\n defaultExpanded={defaultUI?.transactionDetailsExpanded}\n />\n </Card>\n )\n\n return (\n <LazyMotion features={domMax} strict>\n <MotionConfig reducedMotion=\"user\">\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <ExecutionStatusCard\n title={title}\n description={message}\n rows={rows}\n iconSlot={iconSlot}\n footerSlot={footerSlot}\n />\n {status === RouteExecutionStatus.Failed ? (\n <>\n <WarningMessages route={route} allowInteraction />\n <TransactionFailedButtons\n route={route}\n restartRoute={restartRoute}\n deleteRoute={deleteRoute}\n />\n </>\n ) : isDone ? (\n <TransactionDoneButtons route={route} status={status} />\n ) : null}\n </Box>\n </MotionConfig>\n </LazyMotion>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,+BAER,EAAE,OAAO,QAAQ,cAAc,kBAA+B;CACjE,MAAM,EAAE,OAAO,YAAY,yBAAyB,OAAO,MAAM;CACjE,MAAM,EACJ,MACA,0BACA,4BACA,cACE,gBAAgB;CAEpB,MAAM,SAAS,YAAY,QAAA,CAAiC;CAyB5D,OACE,oBAAC,YAAD;EAAY,UAAU;EAAQ,QAAA;YAC5B,oBAAC,cAAD;GAAc,eAAc;aAC1B,qBAAC,KAAD;IAAK,IAAI;KAAE,SAAS;KAAQ,eAAe;KAAU,KAAK;IAAE;cAA5D,CACE,oBAAC,qBAAD;KACS;KACP,aAAa;KACb,MA/BG,iBAAiB,OAAO,SAAS,MAAM,YAAY,KAAA,CA+B7C;KACT,UA7BR,SAAS,YACT,UACA,CAAC,EAAE,4BAA4B,8BAG/B,4BAA4B,6BAE5B,oBAAC,YAAD;MAAmB;MAAe;KAAS,CAAA;KAuBnC,YApBS,SACjB,oBAAC,mBAAD;MAA0B;MAAe;KAAS,CAAA,IAElD,oBAACA,QAAD;MAAM,MAAK;MAAU,UAAA;gBACnB,oBAAC,aAAD;OACS;OACP,iBAAiB,WAAW;MAC7B,CAAA;KACG,CAAA;IAaC,CAAA,GACA,WAAA,IACC,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,iBAAD;KAAwB;KAAO,kBAAA;IAAkB,CAAA,GACjD,oBAAC,0BAAD;KACS;KACO;KACD;IACd,CAAA,CACD,EAAA,CAAA,IACA,SACF,oBAAC,wBAAD;KAA+B;KAAe;IAAS,CAAA,IACrD,IACD;;EACO,CAAA;CACJ,CAAA;AAEhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../../src/pages/TransactionPage/utils.ts"],"sourcesContent":["export const calculateValueLossPercentage = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): number => {\n return Number.parseFloat(\n (\n (toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) - 1) *\n 100\n ).toFixed(2)\n )\n}\n\nexport const getTokenValueLossThreshold = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): boolean => {\n if (!fromAmountUSD || !toAmountUSD) {\n return false\n }\n return toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) < 0.9\n}\n"],"mappings":";AAAA,MAAa,gCACX,eACA,aACA,YACA,eACW;CACX,OAAO,OAAO,aAET,eAAe,gBAAgB,aAAa,cAAc,KAC3D,KACA,QAAQ,CAAC,CACb;AACF;AAEA,MAAa,8BACX,eACA,aACA,YACA,eACY;CACZ,IAAI,CAAC,iBAAiB,CAAC,aACrB,OAAO;CAET,OAAO,eAAe,gBAAgB,aAAa,cAAc;AACnE"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../../src/pages/TransactionPage/utils.ts"],"sourcesContent":["export const calculateValueLossPercentage = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): number => {\n return Number.parseFloat(\n (\n (toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) - 1) *\n 100\n ).toFixed(2)\n )\n}\n\nexport const getTokenValueLossThreshold = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): boolean => {\n if (!fromAmountUSD || !toAmountUSD) {\n return false\n }\n return toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) < 0.9\n}\n"],"mappings":";AAAA,MAAa,gCACX,eACA,aACA,YACA,eACW;CACX,OAAO,OAAO,aAET,eAAe,gBAAgB,aAAa,cAAc,KAC3D,IAAA,CACA,QAAQ,CAAC,CACb;AACF;AAEA,MAAa,8BACX,eACA,aACA,YACA,eACY;CACZ,IAAI,CAAC,iBAAiB,CAAC,aACrB,OAAO;CAET,OAAO,eAAe,gBAAgB,aAAa,cAAc;AACnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"I18nProvider.js","names":["enResource"],"sources":["../../../../src/providers/I18nProvider/I18nProvider.tsx"],"sourcesContent":["import { createInstance, type i18n } from 'i18next'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { I18nextProvider } from 'react-i18next'\nimport { useLanguages } from '../../hooks/useLanguages.js'\nimport { useSettingsStore } from '../../stores/settings/SettingsStore.js'\nimport { useSettings } from '../../stores/settings/useSettings.js'\nimport { compactNumberFormatter } from '../../utils/compactNumberFormatter.js'\nimport { currencyExtendedFormatter } from '../../utils/currencyExtendedFormatter.js'\nimport { percentFormatter } from '../../utils/percentFormatter.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\nimport { allLanguages } from './constants.js'\nimport { enResource } from './enResource.js'\nimport { mergeWithLanguageResources } from './i18n.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\nexport const I18nProvider: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n const { languages, languageResources } = useWidgetConfig()\n const { language, languageCache } = useSettings(['language', 'languageCache'])\n const i18nInstanceRef = useRef<i18n | null>(null)\n\n const i18nInstance = useMemo(() => {\n if (i18nInstanceRef.current) {\n // Update i18n instance with language and language cache updates\n if (language && languageCache && language !== 'en') {\n i18nInstanceRef.current.addResourceBundle(\n language,\n 'translation',\n languageCache,\n true,\n true\n )\n }\n return i18nInstanceRef.current\n }\n\n // Custom language resources (of non-default languages) are added statically.\n // If custom language resources extend existing languages, they are merged with dynamically loaded resources.\n const customLanguageKeys = languageResources\n ? Object.keys(languageResources).filter(\n (key: string) => !allLanguages.includes(key as LanguageKey)\n )\n : []\n const initialLanguage = language || languages?.default\n const i18n = createInstance({\n lng: initialLanguage,\n fallbackLng: 'en',\n lowerCaseLng: true,\n interpolation: { escapeValue: false },\n resources: {\n en: {\n translation: mergeWithLanguageResources(\n enResource,\n languageResources?.en\n ),\n },\n ...(initialLanguage &&\n initialLanguage !== 'en' &&\n languageCache && {\n [initialLanguage]: {\n translation: languageCache,\n },\n }),\n // Add non-existing custom language resources\n ...customLanguageKeys.reduce(\n (acc, key) => {\n const customResource = languageResources?.[key as LanguageKey]\n if (customResource) {\n acc[key] = {\n translation: customResource,\n }\n }\n return acc\n },\n {} as Record<\n string,\n { translation: PartialResource<LanguageResource> }\n >\n ),\n },\n detection: {\n caches: [],\n },\n returnEmptyString: false,\n })\n\n i18n.init()\n\n i18n.services.formatter?.addCached('numberExt', compactNumberFormatter)\n i18n.services.formatter?.addCached('currencyExt', currencyExtendedFormatter)\n i18n.services.formatter?.addCached('percent', percentFormatter)\n i18nInstanceRef.current = i18n\n return i18n\n }, [language, languageResources, languages?.default, languageCache])\n\n return (\n <I18nextProvider i18n={i18nInstance}>\n {children}\n <DefaultLanguageHandler />\n </I18nextProvider>\n )\n}\n\n// Sync language settings internally when config.languages.default changes externally\nconst DefaultLanguageHandler: React.FC = () => {\n const { languages } = useWidgetConfig()\n const [lastDefaultLanguage, setValue] = useSettingsStore((state) => [\n state.lastDefaultLanguage,\n state.setValue,\n ])\n const { setLanguageWithCode: setLanguage } = useLanguages()\n\n useEffect(() => {\n const currentDefaultLanguage = languages?.default\n\n const defaultLanguageChanged =\n currentDefaultLanguage && currentDefaultLanguage !== lastDefaultLanguage\n\n if (!defaultLanguageChanged) {\n return\n }\n\n const updateLanguage = async () => {\n await setLanguage(currentDefaultLanguage)\n setValue('lastDefaultLanguage', currentDefaultLanguage)\n }\n\n updateLanguage()\n }, [languages?.default, setValue, lastDefaultLanguage, setLanguage])\n\n return null\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,gBAAmD,EAC9D,eACI;CACJ,MAAM,EAAE,WAAW,sBAAsB,gBAAgB;CACzD,MAAM,EAAE,UAAU,kBAAkB,YAAY,CAAC,YAAY,eAAe,CAAC;CAC7E,MAAM,kBAAkB,OAAoB,IAAI;CA4EhD,OACE,qBAAC,iBAAD;EAAiB,MA3EE,cAAc;GACjC,IAAI,gBAAgB,SAAS;IAE3B,IAAI,YAAY,iBAAiB,aAAa,MAC5C,gBAAgB,QAAQ,kBACtB,UACA,eACA,eACA,MACA,IACF;IAEF,OAAO,gBAAgB;GACzB;GAIA,MAAM,qBAAqB,oBACvB,OAAO,KAAK,iBAAiB,EAAE,QAC5B,QAAgB,CAAC,aAAa,SAAS,GAAkB,CAC5D,IACA,CAAC;GACL,MAAM,kBAAkB,YAAY,WAAW;GAC/C,MAAM,OAAO,eAAe;IAC1B,KAAK;IACL,aAAa;IACb,cAAc;IACd,eAAe,EAAE,aAAa,MAAM;IACpC,WAAW;KACT,IAAI,EACF,aAAa,2BACXA,IACA,mBAAmB,EACrB,EACF;KACA,GAAI,mBACF,oBAAoB,QACpB,iBAAiB,GACd,kBAAkB,EACjB,aAAa,cACf,EACF;KAEF,GAAG,mBAAmB,QACnB,KAAK,QAAQ;MACZ,MAAM,iBAAiB,oBAAoB;MAC3C,IAAI,gBACF,IAAI,OAAO,EACT,aAAa,eACf;MAEF,OAAO;KACT,GACA,CAAC,CAIH;IACF;IACA,WAAW,EACT,QAAQ,CAAC,EACX;IACA,mBAAmB;GACrB,CAAC;GAED,KAAK,KAAK;GAEV,KAAK,SAAS,WAAW,UAAU,aAAa,sBAAsB;GACtE,KAAK,SAAS,WAAW,UAAU,eAAe,yBAAyB;GAC3E,KAAK,SAAS,WAAW,UAAU,WAAW,gBAAgB;GAC9D,gBAAgB,UAAU;GAC1B,OAAO;EACT,GAAG;GAAC;GAAU;GAAmB,WAAW;GAAS;EAAa,CAG9B;YAAlC,CACG,UACD,oBAAC,wBAAD,CAAyB,CAAA,CACV;;AAErB;AAGA,MAAM,+BAAyC;CAC7C,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,CAAC,qBAAqB,YAAY,kBAAkB,UAAU,CAClE,MAAM,qBACN,MAAM,QACR,CAAC;CACD,MAAM,EAAE,qBAAqB,gBAAgB,aAAa;CAE1D,gBAAgB;EACd,MAAM,yBAAyB,WAAW;EAK1C,IAAI,EAFF,0BAA0B,2BAA2B,sBAGrD;EAGF,MAAM,iBAAiB,YAAY;GACjC,MAAM,YAAY,sBAAsB;GACxC,SAAS,uBAAuB,sBAAsB;EACxD;EAEA,eAAe;CACjB,GAAG;EAAC,WAAW;EAAS;EAAU;EAAqB;CAAW,CAAC;CAEnE,OAAO;AACT"}
1
+ {"version":3,"file":"I18nProvider.js","names":["enResource"],"sources":["../../../../src/providers/I18nProvider/I18nProvider.tsx"],"sourcesContent":["import { createInstance, type i18n } from 'i18next'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { I18nextProvider } from 'react-i18next'\nimport { useLanguages } from '../../hooks/useLanguages.js'\nimport { useSettingsStore } from '../../stores/settings/SettingsStore.js'\nimport { useSettings } from '../../stores/settings/useSettings.js'\nimport { compactNumberFormatter } from '../../utils/compactNumberFormatter.js'\nimport { currencyExtendedFormatter } from '../../utils/currencyExtendedFormatter.js'\nimport { percentFormatter } from '../../utils/percentFormatter.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\nimport { allLanguages } from './constants.js'\nimport { enResource } from './enResource.js'\nimport { mergeWithLanguageResources } from './i18n.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\nexport const I18nProvider: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n const { languages, languageResources } = useWidgetConfig()\n const { language, languageCache } = useSettings(['language', 'languageCache'])\n const i18nInstanceRef = useRef<i18n | null>(null)\n\n const i18nInstance = useMemo(() => {\n if (i18nInstanceRef.current) {\n // Update i18n instance with language and language cache updates\n if (language && languageCache && language !== 'en') {\n i18nInstanceRef.current.addResourceBundle(\n language,\n 'translation',\n languageCache,\n true,\n true\n )\n }\n return i18nInstanceRef.current\n }\n\n // Custom language resources (of non-default languages) are added statically.\n // If custom language resources extend existing languages, they are merged with dynamically loaded resources.\n const customLanguageKeys = languageResources\n ? Object.keys(languageResources).filter(\n (key: string) => !allLanguages.includes(key as LanguageKey)\n )\n : []\n const initialLanguage = language || languages?.default\n const i18n = createInstance({\n lng: initialLanguage,\n fallbackLng: 'en',\n lowerCaseLng: true,\n interpolation: { escapeValue: false },\n resources: {\n en: {\n translation: mergeWithLanguageResources(\n enResource,\n languageResources?.en\n ),\n },\n ...(initialLanguage &&\n initialLanguage !== 'en' &&\n languageCache && {\n [initialLanguage]: {\n translation: languageCache,\n },\n }),\n // Add non-existing custom language resources\n ...customLanguageKeys.reduce(\n (acc, key) => {\n const customResource = languageResources?.[key as LanguageKey]\n if (customResource) {\n acc[key] = {\n translation: customResource,\n }\n }\n return acc\n },\n {} as Record<\n string,\n { translation: PartialResource<LanguageResource> }\n >\n ),\n },\n detection: {\n caches: [],\n },\n returnEmptyString: false,\n })\n\n i18n.init()\n\n i18n.services.formatter?.addCached('numberExt', compactNumberFormatter)\n i18n.services.formatter?.addCached('currencyExt', currencyExtendedFormatter)\n i18n.services.formatter?.addCached('percent', percentFormatter)\n i18nInstanceRef.current = i18n\n return i18n\n }, [language, languageResources, languages?.default, languageCache])\n\n return (\n <I18nextProvider i18n={i18nInstance}>\n {children}\n <DefaultLanguageHandler />\n </I18nextProvider>\n )\n}\n\n// Sync language settings internally when config.languages.default changes externally\nconst DefaultLanguageHandler: React.FC = () => {\n const { languages } = useWidgetConfig()\n const [lastDefaultLanguage, setValue] = useSettingsStore((state) => [\n state.lastDefaultLanguage,\n state.setValue,\n ])\n const { setLanguageWithCode: setLanguage } = useLanguages()\n\n useEffect(() => {\n const currentDefaultLanguage = languages?.default\n\n const defaultLanguageChanged =\n currentDefaultLanguage && currentDefaultLanguage !== lastDefaultLanguage\n\n if (!defaultLanguageChanged) {\n return\n }\n\n const updateLanguage = async () => {\n await setLanguage(currentDefaultLanguage)\n setValue('lastDefaultLanguage', currentDefaultLanguage)\n }\n\n updateLanguage()\n }, [languages?.default, setValue, lastDefaultLanguage, setLanguage])\n\n return null\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,gBAAmD,EAC9D,eACI;CACJ,MAAM,EAAE,WAAW,sBAAsB,gBAAgB;CACzD,MAAM,EAAE,UAAU,kBAAkB,YAAY,CAAC,YAAY,eAAe,CAAC;CAC7E,MAAM,kBAAkB,OAAoB,IAAI;CA4EhD,OACE,qBAAC,iBAAD;EAAiB,MA3EE,cAAc;GACjC,IAAI,gBAAgB,SAAS;IAE3B,IAAI,YAAY,iBAAiB,aAAa,MAC5C,gBAAgB,QAAQ,kBACtB,UACA,eACA,eACA,MACA,IACF;IAEF,OAAO,gBAAgB;GACzB;GAIA,MAAM,qBAAqB,oBACvB,OAAO,KAAK,iBAAiB,CAAC,CAAC,QAC5B,QAAgB,CAAC,aAAa,SAAS,GAAkB,CAC5D,IACA,CAAC;GACL,MAAM,kBAAkB,YAAY,WAAW;GAC/C,MAAM,OAAO,eAAe;IAC1B,KAAK;IACL,aAAa;IACb,cAAc;IACd,eAAe,EAAE,aAAa,MAAM;IACpC,WAAW;KACT,IAAI,EACF,aAAa,2BACXA,IACA,mBAAmB,EACrB,EACF;KACA,GAAI,mBACF,oBAAoB,QACpB,iBAAiB,GACd,kBAAkB,EACjB,aAAa,cACf,EACF;KAEF,GAAG,mBAAmB,QACnB,KAAK,QAAQ;MACZ,MAAM,iBAAiB,oBAAoB;MAC3C,IAAI,gBACF,IAAI,OAAO,EACT,aAAa,eACf;MAEF,OAAO;KACT,GACA,CAAC,CAIH;IACF;IACA,WAAW,EACT,QAAQ,CAAC,EACX;IACA,mBAAmB;GACrB,CAAC;GAED,KAAK,KAAK;GAEV,KAAK,SAAS,WAAW,UAAU,aAAa,sBAAsB;GACtE,KAAK,SAAS,WAAW,UAAU,eAAe,yBAAyB;GAC3E,KAAK,SAAS,WAAW,UAAU,WAAW,gBAAgB;GAC9D,gBAAgB,UAAU;GAC1B,OAAO;EACT,GAAG;GAAC;GAAU;GAAmB,WAAW;GAAS;EAAa,CAG9B;YAAlC,CACG,UACD,oBAAC,wBAAD,CAAyB,CAAA,CACV;;AAErB;AAGA,MAAM,+BAAyC;CAC7C,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,CAAC,qBAAqB,YAAY,kBAAkB,UAAU,CAClE,MAAM,qBACN,MAAM,QACR,CAAC;CACD,MAAM,EAAE,qBAAqB,gBAAgB,aAAa;CAE1D,gBAAgB;EACd,MAAM,yBAAyB,WAAW;EAK1C,IAAI,EAFF,0BAA0B,2BAA2B,sBAGrD;EAGF,MAAM,iBAAiB,YAAY;GACjC,MAAM,YAAY,sBAAsB;GACxC,SAAS,uBAAuB,sBAAsB;EACxD;EAEA,eAAe;CACjB,GAAG;EAAC,WAAW;EAAS;EAAU;EAAqB;CAAW,CAAC;CAEnE,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","names":[],"sources":["../../../../src/providers/I18nProvider/i18n.ts"],"sourcesContent":["import { deepMerge } from '../../utils/deepMerge.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\n// Dynamically import the JSON file for the specified language\nexport async function loadLocale(\n lng: LanguageKey,\n customLanguageResource?: PartialResource<LanguageResource>\n): Promise<LanguageResource> {\n let languageResource: LanguageResource\n try {\n const languageResourceModule = await import(`../../i18n/${lng}.json`)\n languageResource = languageResourceModule.default as LanguageResource\n } catch {\n languageResource = {} as LanguageResource\n }\n return mergeWithLanguageResources(languageResource, customLanguageResource)\n}\n\nexport function mergeWithLanguageResources(\n languageResource: LanguageResource,\n customLanguageResource?: PartialResource<LanguageResource>\n): LanguageResource {\n return customLanguageResource\n ? deepMerge(languageResource, customLanguageResource)\n : languageResource\n}\n"],"mappings":";;AAIA,eAAsB,WACpB,KACA,wBAC2B;CAC3B,IAAI;CACJ,IAAI;EAEF,oBAAmB,MADkB,OAAO,cAAc,IAAI,SACpB;CAC5C,QAAQ;EACN,mBAAmB,CAAC;CACtB;CACA,OAAO,2BAA2B,kBAAkB,sBAAsB;AAC5E;AAEA,SAAgB,2BACd,kBACA,wBACkB;CAClB,OAAO,yBACH,UAAU,kBAAkB,sBAAsB,IAClD;AACN"}
1
+ {"version":3,"file":"i18n.js","names":[],"sources":["../../../../src/providers/I18nProvider/i18n.ts"],"sourcesContent":["import { deepMerge } from '../../utils/deepMerge.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\n// Dynamically import the JSON file for the specified language\nexport async function loadLocale(\n lng: LanguageKey,\n customLanguageResource?: PartialResource<LanguageResource>\n): Promise<LanguageResource> {\n let languageResource: LanguageResource\n try {\n const languageResourceModule = await import(`../../i18n/${lng}.json`)\n languageResource = languageResourceModule.default as LanguageResource\n } catch {\n languageResource = {} as LanguageResource\n }\n return mergeWithLanguageResources(languageResource, customLanguageResource)\n}\n\nexport function mergeWithLanguageResources(\n languageResource: LanguageResource,\n customLanguageResource?: PartialResource<LanguageResource>\n): LanguageResource {\n return customLanguageResource\n ? deepMerge(languageResource, customLanguageResource)\n : languageResource\n}\n"],"mappings":";;AAIA,eAAsB,WACpB,KACA,wBAC2B;CAC3B,IAAI;CACJ,IAAI;EAEF,oBAAmB,MADkB,OAAO,cAAc,IAAI,QAAA,CACpB;CAC5C,QAAQ;EACN,mBAAmB,CAAC;CACtB;CACA,OAAO,2BAA2B,kBAAkB,sBAAsB;AAC5E;AAEA,SAAgB,2BACd,kBACA,wBACkB;CAClB,OAAO,yBACH,UAAU,kBAAkB,sBAAsB,IAClD;AACN"}
@@ -1,10 +1,10 @@
1
1
  import { queryClient } from "../config/queryClient.js";
2
- import { useContext } from "react";
2
+ import { use } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { QueryClientContext, QueryClientProvider } from "@tanstack/react-query";
5
5
  //#region src/providers/QueryClientProvider.tsx
6
6
  const QueryClientProvider$1 = ({ children }) => {
7
- return useContext(QueryClientContext) ? children : /* @__PURE__ */ jsx(QueryClientProvider, {
7
+ return use(QueryClientContext) ? children : /* @__PURE__ */ jsx(QueryClientProvider, {
8
8
  client: queryClient,
9
9
  children
10
10
  });
@@ -1 +1 @@
1
- {"version":3,"file":"QueryClientProvider.js","names":["QueryClientProvider","TanstackQueryClientContext","TanstackQueryClientProvider"],"sources":["../../../src/providers/QueryClientProvider.tsx"],"sourcesContent":["import {\n QueryClientContext as TanstackQueryClientContext,\n QueryClientProvider as TanstackQueryClientProvider,\n} from '@tanstack/react-query'\nimport type { PropsWithChildren } from 'react'\nimport { useContext } from 'react'\nimport { queryClient } from '../config/queryClient.js'\n\nexport const QueryClientProvider: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const existingQueryClient = useContext(TanstackQueryClientContext)\n return existingQueryClient ? (\n children\n ) : (\n <TanstackQueryClientProvider client={queryClient}>\n {children}\n </TanstackQueryClientProvider>\n )\n}\n"],"mappings":";;;;;AAQA,MAAaA,yBAAoD,EAC/D,eACI;CAEJ,OAD4B,WAAWC,kBACd,IACvB,WAEA,oBAACC,qBAAD;EAA6B,QAAQ;EAClC;CAC0B,CAAA;AAEjC"}
1
+ {"version":3,"file":"QueryClientProvider.js","names":["QueryClientProvider","TanstackQueryClientContext","TanstackQueryClientProvider"],"sources":["../../../src/providers/QueryClientProvider.tsx"],"sourcesContent":["import {\n QueryClientContext as TanstackQueryClientContext,\n QueryClientProvider as TanstackQueryClientProvider,\n} from '@tanstack/react-query'\nimport type { PropsWithChildren } from 'react'\nimport { use } from 'react'\nimport { queryClient } from '../config/queryClient.js'\n\nexport const QueryClientProvider: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const existingQueryClient = use(TanstackQueryClientContext)\n return existingQueryClient ? (\n children\n ) : (\n <TanstackQueryClientProvider client={queryClient}>\n {children}\n </TanstackQueryClientProvider>\n )\n}\n"],"mappings":";;;;;AAQA,MAAaA,yBAAoD,EAC/D,eACI;CAEJ,OAD4B,IAAIC,kBACP,IACvB,WAEA,oBAACC,qBAAD;EAA6B,QAAQ;EAClC;CAC0B,CAAA;AAEjC"}