@aurora-is-near/intents-swap-widget 3.14.0-redesign.2 → 3.14.0-redesign.7
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.
- package/dist/components/BlockingError.js +15 -9
- package/dist/components/BlockingError.js.map +1 -1
- package/dist/components/CloseButton.js +1 -1
- package/dist/components/CloseButton.js.map +1 -1
- package/dist/{config-Bmc4hOIl.js → config-Behl5hcc.js} +1179 -952
- package/dist/config-Behl5hcc.js.map +1 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.js +4 -6
- package/dist/config.js.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/ext/alchemy/index.js +1 -1
- package/dist/ext/index.js +1 -1
- package/dist/features/BalanceRpcLoader/TokenBalanceLoader.js +1 -1
- package/dist/features/BalanceRpcLoader/index.js +1 -1
- package/dist/features/BalanceRpcLoader/useTokenBalanceRpc.js +1 -1
- package/dist/features/ChainsDropdown/index.js +1 -1
- package/dist/features/DepositMethodSwitcher.js +26 -29
- package/dist/features/DepositMethodSwitcher.js.map +1 -1
- package/dist/features/ErrorBoundary.js +1 -1
- package/dist/features/ExternalDeposit.js +27 -28
- package/dist/features/ExternalDeposit.js.map +1 -1
- package/dist/features/SendAddress/index.js +1 -1
- package/dist/features/SendAddress/useNotification.js +1 -1
- package/dist/features/SubmitButton/index.js +1 -1
- package/dist/features/SuccessScreen/SummaryItem.js +2 -2
- package/dist/features/SuccessScreen/SummaryItem.js.map +1 -1
- package/dist/features/SuccessScreen/index.js +20 -20
- package/dist/features/SuccessScreen/index.js.map +1 -1
- package/dist/features/SwapDirectionSwitcher.js +1 -1
- package/dist/features/SwapQuote/SwapQuote.js +1 -1
- package/dist/features/SwapQuote/index.js +1 -1
- package/dist/features/TokenInput/TokenInput.js +1 -1
- package/dist/features/TokenInput/TokenInputEmpty.js +1 -1
- package/dist/features/TokenInput/TokenInputSource.js +1 -1
- package/dist/features/TokenInput/TokenInputTarget.js +1 -1
- package/dist/features/TokenInput/WalletBalance.js +1 -1
- package/dist/features/TokenInput/hooks/index.js +1 -1
- package/dist/features/TokenInput/hooks/useTokenInputBalance.js +1 -1
- package/dist/features/TokenInput/index.js +1 -1
- package/dist/features/TokensList/TokenItem.js +1 -1
- package/dist/features/TokensList/TokensList.js +1 -1
- package/dist/features/TokensList/index.js +1 -1
- package/dist/features/TokensModal.js +1 -1
- package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js +13 -191
- package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js.map +1 -1
- package/dist/features/WalletCompatibilityCheck/index.js +21 -26
- package/dist/features/WalletCompatibilityCheck/index.js.map +1 -1
- package/dist/features/index.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useAllTokens.js +1 -1
- package/dist/hooks/useChains.js +1 -1
- package/dist/hooks/useCompatibilityCheck.js +1 -1
- package/dist/hooks/useDefaultToken.js +1 -1
- package/dist/hooks/useExternalDepositStatus/index.js +1 -1
- package/dist/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.js +1 -1
- package/dist/hooks/useIntentsBalance.js +1 -1
- package/dist/hooks/useIsCompatibilityCheckRequired.d.ts +1 -1
- package/dist/hooks/useIsCompatibilityCheckRequired.js +2 -2
- package/dist/hooks/useIsCompatibilityCheckRequired.js.map +1 -1
- package/dist/hooks/useMakeDepositAddress.js +1 -1
- package/dist/hooks/useMakeIntentsTransfer.js +1 -1
- package/dist/hooks/useMakeNEARFtTransferCall.js +1 -1
- package/dist/hooks/useMakeQuote.js +1 -1
- package/dist/hooks/useMakeQuoteTransfer.js +1 -1
- package/dist/hooks/useMakeTransfer.js +1 -1
- package/dist/hooks/useMergedBalance.js +1 -1
- package/dist/hooks/useSwitchChain.js +1 -1
- package/dist/hooks/useTheme.js +1 -1
- package/dist/hooks/useToggleTheme.js +20 -17
- package/dist/hooks/useToggleTheme.js.map +1 -1
- package/dist/hooks/useTokenInputPair.js +1 -1
- package/dist/hooks/useTokens.js +1 -1
- package/dist/hooks/useTokensFiltered.js +1 -1
- package/dist/hooks/useTokensIntentsUnique.js +1 -1
- package/dist/index.js +1 -1
- package/dist/machine/computed/getIsDirectNearTokenWithdrawal.js +1 -1
- package/dist/machine/computed/getIsDirectNearTokenWithdrawal.js.map +1 -1
- package/dist/machine/computed/getIsDirectTokenOnNearDeposit.js +1 -1
- package/dist/machine/computed/getIsDirectTokenOnNearDeposit.js.map +1 -1
- package/dist/machine/computed/getIsDirectTokenOnNearTransfer.js +1 -1
- package/dist/machine/computed/getIsDirectTokenOnNearTransfer.js.map +1 -1
- package/dist/machine/effects/index.js +1 -1
- package/dist/machine/effects/useAlchemyBalanceEffect.js +1 -1
- package/dist/machine/effects/useBalancesUpdateEffect.js +1 -1
- package/dist/machine/effects/useMakeQuoteEffect.js +1 -1
- package/dist/machine/effects/useSelectedTokensEffect.js +1 -1
- package/dist/machine/effects/useSetTokenBalanceEffect.js +1 -1
- package/dist/machine/effects/useSetTokenIntentsTargetEffect.js +1 -1
- package/dist/machine/effects/useWalletConnEffect.js +1 -1
- package/dist/machine/events/index.js +1 -1
- package/dist/machine/events/tokenSelect.js +1 -1
- package/dist/machine/events/validateInputAndMoveTo.js +1 -1
- package/dist/machine/events/validateInputs.js +1 -1
- package/dist/machine/index.js +1 -1
- package/dist/machine/snap.js +1 -1
- package/dist/machine/subscriptions/checkers/isSendAddressAsConnected.js +1 -1
- package/dist/machine/subscriptions/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme/ThemeProvider.js +7 -24
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/localisation.d.ts +1 -1
- package/dist/utils/intents/signers/near.js +1 -1
- package/dist/utils/intents/signers/privy.js +1 -1
- package/dist/utils/localstorage.js +41 -28
- package/dist/utils/localstorage.js.map +1 -1
- package/dist/utils/near/getNearNep141StorageBalance.js +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositContent.js +11 -12
- package/dist/widgets/WidgetDeposit/WidgetDepositContent.js.map +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositSkeleton.js +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapContent.js +27 -26
- package/dist/widgets/WidgetSwap/WidgetSwapContent.js.map +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapSkeleton.js +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js +5 -6
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js.map +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawSkeleton.js +1 -1
- package/package.json +3 -2
- package/src/components/BlockingError.tsx +7 -4
- package/src/components/CloseButton.tsx +1 -1
- package/src/features/DepositMethodSwitcher.tsx +5 -17
- package/src/features/ExternalDeposit.tsx +8 -7
- package/src/features/SubmitButton/index.tsx +40 -0
- package/src/features/SuccessScreen/SummaryItem.tsx +2 -2
- package/src/features/SuccessScreen/index.tsx +5 -3
- package/src/features/SwapQuote/SwapQuote.tsx +1 -1
- package/src/features/WalletCompatibilityCheck/WalletCompatibilityModal.tsx +3 -0
- package/src/features/WalletCompatibilityCheck/index.tsx +4 -8
- package/src/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.ts +2 -1
- package/src/hooks/useIsCompatibilityCheckRequired.ts +1 -1
- package/src/hooks/useToggleTheme.ts +11 -4
- package/src/machine/computed/getIsDirectNearTokenWithdrawal.ts +2 -1
- package/src/machine/computed/getIsDirectTokenOnNearDeposit.ts +2 -1
- package/src/machine/computed/getIsDirectTokenOnNearTransfer.ts +2 -1
- package/src/theme/ThemeProvider.tsx +33 -14
- package/src/types/config.ts +1 -0
- package/src/types/localisation.ts +4 -0
- package/src/utils/localstorage.ts +35 -10
- package/src/widgets/WidgetDeposit/WidgetDepositContent.tsx +3 -3
- package/src/widgets/WidgetSwap/WidgetSwapContent.tsx +5 -3
- package/src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx +3 -3
- package/dist/config-Bmc4hOIl.js.map +0 -1
- package/dist/features/SuccessScreen/CloseButton.d.ts +0 -5
- package/dist/features/SuccessScreen/CloseButton.js +0 -15
- package/dist/features/SuccessScreen/CloseButton.js.map +0 -1
- package/src/features/SuccessScreen/CloseButton.tsx +0 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetWithdrawContent.js","sources":["../../../src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { WidgetWithdrawSkeleton } from './WidgetWithdrawSkeleton';\nimport { useTypedTranslation } from '../../localisation';\nimport {\n SendAddress,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { BlockingError, Card, DirectionSwitcher } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { Token, TransferResult } from '@/types';\n\ntype Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetWithdrawContent = ({\n providers,\n makeTransfer,\n onMsg,\n isLoading,\n}: Props) => {\n const { t } = useTypedTranslation();\n const { ctx } = useUnsafeSnapshot();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n chainsFilter,\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n const { onChangeAmount, onChangeToken, lastChangedInput } =\n useTokenInputPair();\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(true);\n\n useEffect(() => {\n if (!isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(false);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n [\n 'setDefaultSelectedTokens',\n { skipIntents: false, target: 'same-asset' },\n ],\n [\n 'makeQuote',\n {\n message: undefined,\n type: lastChangedInput === 'target' ? 'exact_out' : 'exact_in',\n refetchQuoteInterval,\n },\n ],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetWithdrawSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n {...transferResult}\n message={[\n 'Your withdrawal has been successfully completed,',\n 'and the funds have been sent to the specified destination.',\n ]}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n variant={tokenModalOpen}\n showChainsSelector={tokenModalOpen === 'target'}\n groupTokens={false}\n chainsFilter={\n tokenModalOpen === 'source'\n ? chainsFilter.source\n : chainsFilter.target\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl relative flex flex-col\">\n <div className=\"gap-[10px] relative flex flex-col\">\n <Card padding=\"none\">\n <TokenInput.Source\n heading={t(\n 'tokenInput.heading.source.withdraw',\n 'Withdraw token',\n )}\n isChanging={lastChangedInput === 'source'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n\n <DirectionSwitcher isEnabled={false} />\n\n <Card padding=\"none\">\n <TokenInput.Target\n heading={t(\n 'tokenInput.heading.target.withdraw',\n 'Receive token',\n )}\n isChanging={lastChangedInput === 'target'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('target', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('target', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('target');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n </div>\n\n {!!ctx.walletAddress &&\n ctx.targetToken &&\n !ctx.targetToken.isIntent && (\n <SendAddress\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_change_send_address':\n break;\n default:\n notReachable(msg.type, { throwError: false });\n }\n }}\n />\n )}\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.withdraw', 'Swap & withdraw')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetWithdrawSkeleton />;\n }\n};\n"],"names":["WidgetWithdrawContent","providers","makeTransfer","onMsg","isLoading","t","useTypedTranslation","ctx","useUnsafeSnapshot","isDirectNearTokenWithdrawal","useComputedSnapshot","chainsFilter","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","onChangeAmount","onChangeToken","lastChangedInput","useTokenInputPair","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","fireEvent","useStoreSideEffects","isDebug","WidgetWithdrawSkeleton","jsx","WalletCompatibilityCheck","msg","notReachable","SuccessScreen","BlockingError","TokensModal","jsxs","Card","TokenInput","DirectionSwitcher","SendAddress","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WidgetWithdrawContent.js","sources":["../../../src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { WidgetWithdrawSkeleton } from './WidgetWithdrawSkeleton';\nimport { useTypedTranslation } from '../../localisation';\nimport {\n SendAddress,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { BlockingError, Card, DirectionSwitcher } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { Token, TransferResult } from '@/types';\n\ntype Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetWithdrawContent = ({\n providers,\n makeTransfer,\n onMsg,\n isLoading,\n}: Props) => {\n const { t } = useTypedTranslation();\n const { ctx } = useUnsafeSnapshot();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n chainsFilter,\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n const { onChangeAmount, onChangeToken, lastChangedInput } =\n useTokenInputPair();\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(false);\n\n useEffect(() => {\n if (isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(true);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n [\n 'setDefaultSelectedTokens',\n { skipIntents: false, target: 'same-asset' },\n ],\n [\n 'makeQuote',\n {\n message: undefined,\n type: lastChangedInput === 'target' ? 'exact_out' : 'exact_in',\n refetchQuoteInterval,\n },\n ],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetWithdrawSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n {...transferResult}\n message={[\n 'Your withdrawal has been successfully completed,',\n 'and the funds have been sent to the specified destination.',\n ]}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n variant={tokenModalOpen}\n showChainsSelector={tokenModalOpen === 'target'}\n groupTokens={false}\n chainsFilter={\n tokenModalOpen === 'source'\n ? chainsFilter.source\n : chainsFilter.target\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl relative flex flex-col\">\n <div className=\"gap-[10px] relative flex flex-col\">\n <Card padding=\"none\">\n <TokenInput.Source\n heading={t(\n 'tokenInput.heading.source.withdraw',\n 'Withdraw token',\n )}\n isChanging={lastChangedInput === 'source'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n\n <DirectionSwitcher isEnabled={false} />\n\n <Card padding=\"none\">\n <TokenInput.Target\n heading={t(\n 'tokenInput.heading.target.withdraw',\n 'Receive token',\n )}\n isChanging={lastChangedInput === 'target'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('target', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('target', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('target');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n </div>\n\n {!!ctx.walletAddress &&\n ctx.targetToken &&\n !ctx.targetToken.isIntent && (\n <SendAddress\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_change_send_address':\n break;\n default:\n notReachable(msg.type, { throwError: false });\n }\n }}\n />\n )}\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.withdraw', 'Swap & withdraw')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetWithdrawSkeleton />;\n }\n};\n"],"names":["WidgetWithdrawContent","providers","makeTransfer","onMsg","isLoading","t","useTypedTranslation","ctx","useUnsafeSnapshot","isDirectNearTokenWithdrawal","useComputedSnapshot","chainsFilter","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","onChangeAmount","onChangeToken","lastChangedInput","useTokenInputPair","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","fireEvent","useStoreSideEffects","isDebug","WidgetWithdrawSkeleton","jsx","WalletCompatibilityCheck","msg","notReachable","SuccessScreen","BlockingError","TokensModal","jsxs","Card","TokenInput","DirectionSwitcher","SendAddress","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import o from "clsx";
|
|
3
3
|
import { SkeletonBox as l } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as x } from "../../config-
|
|
4
|
+
import { y as x } from "../../config-Behl5hcc.js";
|
|
5
5
|
const p = () => {
|
|
6
6
|
const { hideTokenInputHeadings: s } = x();
|
|
7
7
|
return /* @__PURE__ */ a("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aurora-is-near/intents-swap-widget",
|
|
3
|
-
"version": "3.14.0-redesign.
|
|
3
|
+
"version": "3.14.0-redesign.7",
|
|
4
4
|
"description": "Provides components and hooks to build your own Intents swap widget",
|
|
5
5
|
"author": "Maksim Vashchuk",
|
|
6
6
|
"license": "MIT",
|
|
@@ -109,10 +109,11 @@
|
|
|
109
109
|
"@testing-library/jest-dom": "^6.9.1",
|
|
110
110
|
"@testing-library/react": "^16.3.0",
|
|
111
111
|
"@testing-library/user-event": "^14.6.1",
|
|
112
|
+
"@types/browser-or-node": "^1.3.2",
|
|
112
113
|
"@types/jest": "^30.0.0",
|
|
113
114
|
"@types/jest-image-snapshot": "^6.4.0",
|
|
114
115
|
"@types/puppeteer": "^7.0.4",
|
|
115
|
-
"glob": "^
|
|
116
|
+
"glob": "^10.5.0",
|
|
116
117
|
"is-ci": "^4.1.0",
|
|
117
118
|
"jest-environment-jsdom": "^30.2.0",
|
|
118
119
|
"jest-image-snapshot": "^6.5.1",
|
|
@@ -10,13 +10,16 @@ type Props = {
|
|
|
10
10
|
|
|
11
11
|
export const BlockingError = ({ message, onClickRetry }: Props) => (
|
|
12
12
|
<Card className="w-full">
|
|
13
|
-
<div className="gap-sw-
|
|
14
|
-
<div className="gap-sw-
|
|
13
|
+
<div className="gap-sw-4xl py-6xl flex min-h-[200px] flex-col items-center justify-center w-full">
|
|
14
|
+
<div className="gap-sw-xl flex flex-col items-center justify-center">
|
|
15
15
|
<header className="gap-sw-md flex items-center">
|
|
16
|
-
<Icons.X
|
|
16
|
+
<Icons.X
|
|
17
|
+
strokeWidth={2.5}
|
|
18
|
+
className="text-sw-accent-500 h-sw-4xl w-sw-4xl"
|
|
19
|
+
/>
|
|
17
20
|
<h3 className="text-sw-value-lg text-sw-accent-500">Ooops...</h3>
|
|
18
21
|
</header>
|
|
19
|
-
<p className="text-sw-
|
|
22
|
+
<p className="text-sw-body-md text-center text-sw-gray-100">
|
|
20
23
|
{message} <br /> Please try again or contact support.
|
|
21
24
|
</p>
|
|
22
25
|
</div>
|
|
@@ -12,7 +12,7 @@ export const CloseButton = ({ className, onClick }: Props) => {
|
|
|
12
12
|
<button
|
|
13
13
|
type="button"
|
|
14
14
|
className={cn(
|
|
15
|
-
'flex cursor-pointer items-center justify-center text-sw-gray-200 transition-colors hover:text-sw-gray-50 p-sw-md rounded-sw-md bg-sw-gray-950 hover:bg-sw-gray-800',
|
|
15
|
+
'flex cursor-pointer items-center justify-center text-sw-gray-200 transition-colors hover:text-sw-gray-50 p-sw-md w-[34px] h-[34px] rounded-sw-md bg-sw-gray-950 hover:bg-sw-gray-800',
|
|
16
16
|
className,
|
|
17
17
|
)}
|
|
18
18
|
onClick={onClick}>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Icons from 'lucide-react';
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import { cn } from '@/utils/cn';
|
|
4
4
|
import { Card } from '@/components/Card';
|
|
5
5
|
import { Button } from '@/components/Button';
|
|
@@ -18,14 +18,6 @@ export const DepositMethodSwitcher = ({ children, className }: Props) => {
|
|
|
18
18
|
fireEvent('depositTypeSet', { isExternal });
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const state = useMemo(() => {
|
|
22
|
-
if (ctx.isDepositFromExternalWallet) {
|
|
23
|
-
return { state: 'default' as const };
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return { state: 'disabled' as const };
|
|
27
|
-
}, [ctx.isDepositFromExternalWallet]);
|
|
28
|
-
|
|
29
21
|
return (
|
|
30
22
|
<Card className={cn('gap-sw-2xl p-sw-2xl flex flex-col', className)}>
|
|
31
23
|
<span className="text-sw-label-md text-sw-gray-50">
|
|
@@ -34,20 +26,16 @@ export const DepositMethodSwitcher = ({ children, className }: Props) => {
|
|
|
34
26
|
<div className="flex gap-sw-lg">
|
|
35
27
|
<Button
|
|
36
28
|
size="md"
|
|
37
|
-
variant="primary"
|
|
38
29
|
icon={Icons.Wallet2}
|
|
39
|
-
|
|
40
|
-
{
|
|
41
|
-
? { state: 'default' }
|
|
42
|
-
: { state: 'active' })}>
|
|
30
|
+
variant={ctx.isDepositFromExternalWallet ? 'outlined' : 'primary'}
|
|
31
|
+
onClick={() => onToggle(false)}>
|
|
43
32
|
My wallet
|
|
44
33
|
</Button>
|
|
45
34
|
<Button
|
|
46
35
|
size="md"
|
|
47
|
-
variant="primary"
|
|
48
36
|
icon={Icons.QrCode}
|
|
49
|
-
|
|
50
|
-
{
|
|
37
|
+
variant={ctx.isDepositFromExternalWallet ? 'primary' : 'outlined'}
|
|
38
|
+
onClick={() => onToggle(true)}>
|
|
51
39
|
QR / Address
|
|
52
40
|
</Button>
|
|
53
41
|
</div>
|
|
@@ -30,12 +30,12 @@ type Props = {
|
|
|
30
30
|
|
|
31
31
|
const QrCode = ({ address }: { address: string }) => (
|
|
32
32
|
<div className="flex flex-col gap-sw-2xl items-center">
|
|
33
|
-
<div className="p-sw-lg m-sw-lg mx-auto w-fit rounded-md bg-
|
|
34
|
-
<QRCodeSVG size={156} value={address} fgColor="#
|
|
33
|
+
<div className="p-sw-lg m-sw-lg mx-auto w-fit rounded-sw-md bg-[#fff]">
|
|
34
|
+
<QRCodeSVG size={156} value={address} fgColor="#161926" />
|
|
35
35
|
</div>
|
|
36
|
-
<div className="py-sw-lg px-sw-lg w-full flex items-center justify-between rounded-md bg-sw-gray-
|
|
36
|
+
<div className="py-sw-lg px-sw-lg w-full flex items-center justify-between rounded-sw-md bg-sw-gray-800">
|
|
37
37
|
<span className="text-sw-label-md text-sw-gray-100">
|
|
38
|
-
{formatAddressTruncate(address,
|
|
38
|
+
{formatAddressTruncate(address, 38)}
|
|
39
39
|
</span>
|
|
40
40
|
<CopyButton value={address} />
|
|
41
41
|
</div>
|
|
@@ -48,8 +48,8 @@ const Skeleton = () => {
|
|
|
48
48
|
|
|
49
49
|
return (
|
|
50
50
|
<div className="flex flex-col gap-sw-2xl items-center">
|
|
51
|
-
<div className="bg-sw-gray-
|
|
52
|
-
<div className="bg-sw-gray-
|
|
51
|
+
<div className="bg-sw-gray-800 h-[180px] w-[180px] animate-pulse rounded-sw-md" />
|
|
52
|
+
<div className="bg-sw-gray-800 h-[44px] w-full animate-pulse rounded-sw-md flex items-center justify-center gap-sw-sm">
|
|
53
53
|
<Icons.Loader className="animate-spin text-sw-gray-100 h-sw-lg w-sw-lg" />
|
|
54
54
|
<span className="text-sw-gray-100 text-sw-label-sm">
|
|
55
55
|
{!isNotEmptyAmount(ctx.sourceTokenAmount)
|
|
@@ -139,7 +139,8 @@ export const ExternalDeposit = ({ onMsg }: Props) => {
|
|
|
139
139
|
default:
|
|
140
140
|
notReachable(status);
|
|
141
141
|
}
|
|
142
|
-
|
|
142
|
+
// do not include onMsg to avoid infinite loop
|
|
143
|
+
}, [depositStatusQuery.data, ctx.sourceToken]);
|
|
143
144
|
|
|
144
145
|
if (!isValidState) {
|
|
145
146
|
return <Skeleton />;
|
|
@@ -125,6 +125,46 @@ const useGetErrorButton = (ctx: Context) => {
|
|
|
125
125
|
);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
+
if (ctx.error?.code === 'EXTERNAL_TRANSFER_FAILED') {
|
|
129
|
+
return (
|
|
130
|
+
<Button state="error" {...commonBtnProps}>
|
|
131
|
+
{t('submit.error.externalTransferFailed.label', 'Transfer failed')}
|
|
132
|
+
</Button>
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (ctx.error?.code === 'EXTERNAL_TRANSFER_INCOMPLETE') {
|
|
137
|
+
return (
|
|
138
|
+
<div className="gap-sw-md flex flex-col">
|
|
139
|
+
<Button state="error" {...commonBtnProps}>
|
|
140
|
+
{t('submit.error.externalTransferFailed.label', 'Transfer failed')}
|
|
141
|
+
</Button>
|
|
142
|
+
<ErrorMessage>
|
|
143
|
+
{t(
|
|
144
|
+
'submit.error.externalTransferFailed.incompleteMessage',
|
|
145
|
+
'Incomplete transfer. Deposited amount will be refunded.',
|
|
146
|
+
)}
|
|
147
|
+
</ErrorMessage>
|
|
148
|
+
</div>
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (ctx.error?.code === 'EXTERNAL_TRANSFER_REFUNDED') {
|
|
153
|
+
return (
|
|
154
|
+
<div className="gap-sw-md flex flex-col">
|
|
155
|
+
<Button state="error" {...commonBtnProps}>
|
|
156
|
+
{t('submit.error.externalTransferFailed.label', 'Transfer failed')}
|
|
157
|
+
</Button>
|
|
158
|
+
<ErrorMessage>
|
|
159
|
+
{t(
|
|
160
|
+
'submit.error.externalTransferFailed.refundedMessage',
|
|
161
|
+
'Deposited amount will be refunded.',
|
|
162
|
+
)}
|
|
163
|
+
</ErrorMessage>
|
|
164
|
+
</div>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
128
168
|
if (ctx.error?.code === 'DIRECT_TRANSFER_ERROR') {
|
|
129
169
|
return (
|
|
130
170
|
<div className="gap-sw-md flex flex-col">
|
|
@@ -16,9 +16,9 @@ export const SummaryItem = ({
|
|
|
16
16
|
externalUrl,
|
|
17
17
|
}: Props) => (
|
|
18
18
|
<li className="py-sw-md flex items-center justify-between">
|
|
19
|
-
<span className="text-sw-label-
|
|
19
|
+
<span className="text-sw-label-sm text-sw-gray-100">{label}</span>
|
|
20
20
|
<div className="gap-sw-md flex items-center">
|
|
21
|
-
<span className="text-sw-label-
|
|
21
|
+
<span className="text-sw-label-sm text-sw-accent-300">
|
|
22
22
|
{formatTxHash(value)}
|
|
23
23
|
</span>
|
|
24
24
|
{!!externalUrl && <ExternalAction url={externalUrl} />}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Fragment } from 'react';
|
|
2
2
|
|
|
3
3
|
import { CheckIcon } from './CheckIcon';
|
|
4
|
-
import { CloseButton } from './CloseButton';
|
|
5
4
|
import { SummaryItem } from './SummaryItem';
|
|
6
5
|
import { Hr } from '@/components/Hr';
|
|
7
6
|
import { Card } from '@/components/Card';
|
|
7
|
+
import { CloseButton } from '@/components/CloseButton';
|
|
8
8
|
import type { TransferResult } from '@/types/transfer';
|
|
9
9
|
|
|
10
10
|
import { fireEvent, useUnsafeSnapshot } from '@/machine';
|
|
@@ -45,10 +45,12 @@ export const SuccessScreen = ({
|
|
|
45
45
|
<CheckIcon />
|
|
46
46
|
<CloseButton onClick={onDismiss} />
|
|
47
47
|
</header>
|
|
48
|
-
<span className="text-sw-label-
|
|
48
|
+
<span className="text-sw-label-lg text-sw-gray-50">
|
|
49
|
+
{t('transfer.success.title', 'All done!')}
|
|
50
|
+
</span>
|
|
49
51
|
</>
|
|
50
52
|
)}
|
|
51
|
-
<p className="mt-sw-sm text-sw-
|
|
53
|
+
<p className="mt-sw-sm text-sw-body-md text-sw-gray-400">
|
|
52
54
|
{lines.map((line, idx) => (
|
|
53
55
|
<Fragment key={idx}>
|
|
54
56
|
{line}
|
|
@@ -38,7 +38,7 @@ export const SwapQuote = ({ className }: Props) => {
|
|
|
38
38
|
<span style={{ borderBottomWidth: '2px', borderStyle: 'dotted' }}>
|
|
39
39
|
{`1 ${ctx.sourceToken.symbol} ≈ `} {formatTinyNumber(price ?? 0)}{' '}
|
|
40
40
|
{`${ctx.targetToken.symbol}`}
|
|
41
|
-
<span className="text-sw-gray-50">{`(${formatUsdAmount(ctx.sourceToken.price)})`}</span>
|
|
41
|
+
<span className="text-sw-gray-50">{` (${formatUsdAmount(ctx.sourceToken.price)})`}</span>
|
|
42
42
|
</span>
|
|
43
43
|
) : (
|
|
44
44
|
<span style={{ borderBottomWidth: '2px', borderStyle: 'dotted' }}>
|
|
@@ -53,14 +53,12 @@ export function WalletCompatibilityCheck({ onMsg, providers }: Props) {
|
|
|
53
53
|
onMsg={async (msg) => {
|
|
54
54
|
switch (msg.type) {
|
|
55
55
|
case 'on_close':
|
|
56
|
-
|
|
56
|
+
case 'on_sign_out':
|
|
57
|
+
onMsg({ type: msg.type });
|
|
57
58
|
break;
|
|
58
59
|
case 'on_try_again':
|
|
59
60
|
setHasError(false);
|
|
60
61
|
break;
|
|
61
|
-
case 'on_sign_out':
|
|
62
|
-
onMsg({ type: 'on_sign_out' });
|
|
63
|
-
break;
|
|
64
62
|
default:
|
|
65
63
|
notReachable(msg.type);
|
|
66
64
|
}
|
|
@@ -73,14 +71,12 @@ export function WalletCompatibilityCheck({ onMsg, providers }: Props) {
|
|
|
73
71
|
onMsg={async (msg) => {
|
|
74
72
|
switch (msg.type) {
|
|
75
73
|
case 'on_close':
|
|
76
|
-
|
|
74
|
+
case 'on_sign_out':
|
|
75
|
+
onMsg({ type: msg.type });
|
|
77
76
|
break;
|
|
78
77
|
case 'on_check_compatibility':
|
|
79
78
|
await handleCompatibilityCheck();
|
|
80
79
|
break;
|
|
81
|
-
case 'on_sign_out':
|
|
82
|
-
onMsg({ type: 'on_sign_out' });
|
|
83
|
-
break;
|
|
84
80
|
default:
|
|
85
81
|
notReachable(msg.type);
|
|
86
82
|
}
|
|
@@ -28,7 +28,7 @@ type DepositResult = {
|
|
|
28
28
|
account_id: string;
|
|
29
29
|
created_at: string;
|
|
30
30
|
near_token_id: string;
|
|
31
|
-
status: 'COMPLETED' | 'PENDING' | 'FAILED';
|
|
31
|
+
status: 'COMPLETED' | 'PENDING' | 'FAILED' | 'CREDITED';
|
|
32
32
|
tx_hash?: string;
|
|
33
33
|
};
|
|
34
34
|
|
|
@@ -92,6 +92,7 @@ const oneClickBridgeStatusMap: Record<
|
|
|
92
92
|
DepositResult['status'],
|
|
93
93
|
GetExecutionStatusResponse.status
|
|
94
94
|
> = {
|
|
95
|
+
CREDITED: GetExecutionStatusResponse.status.PROCESSING,
|
|
95
96
|
PENDING: GetExecutionStatusResponse.status.PROCESSING,
|
|
96
97
|
COMPLETED: GetExecutionStatusResponse.status.SUCCESS,
|
|
97
98
|
FAILED: GetExecutionStatusResponse.status.FAILED,
|
|
@@ -5,5 +5,5 @@ export const useIsCompatibilityCheckRequired = () => {
|
|
|
5
5
|
const { ctx } = useUnsafeSnapshot();
|
|
6
6
|
const verifiedWallets = localStorageTyped.getItem('verifiedWallets');
|
|
7
7
|
|
|
8
|
-
return ctx.walletAddress && !verifiedWallets.includes(ctx.walletAddress);
|
|
8
|
+
return !!(ctx.walletAddress && !verifiedWallets.includes(ctx.walletAddress));
|
|
9
9
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react';
|
|
2
2
|
import { isBrowser } from 'browser-or-node';
|
|
3
3
|
|
|
4
|
+
import { useConfig } from '@/config';
|
|
5
|
+
|
|
4
6
|
type ThemeMode = 'light' | 'dark' | 'auto';
|
|
5
7
|
|
|
6
|
-
const applyThemeDataAttr = (theme: ThemeMode) => {
|
|
8
|
+
const applyThemeDataAttr = (theme: ThemeMode, parentEl: Element | null) => {
|
|
7
9
|
if (isBrowser) {
|
|
8
|
-
document.body
|
|
10
|
+
(parentEl ?? document.body).setAttribute('data-sw-theme', theme);
|
|
9
11
|
}
|
|
10
12
|
};
|
|
11
13
|
|
|
@@ -13,6 +15,7 @@ export const useToggleTheme = (
|
|
|
13
15
|
defaultTheme?: ThemeMode,
|
|
14
16
|
onChange?: (colorPalette: 'light' | 'dark') => void,
|
|
15
17
|
) => {
|
|
18
|
+
const { themeParentElementSelector } = useConfig();
|
|
16
19
|
const [colorPalette, setColorPalette] = useState<'light' | 'dark'>();
|
|
17
20
|
const [theme, setTheme] = useState<ThemeMode | undefined>(() => {
|
|
18
21
|
if (isBrowser && defaultTheme === undefined) {
|
|
@@ -24,6 +27,10 @@ export const useToggleTheme = (
|
|
|
24
27
|
|
|
25
28
|
useEffect(() => {
|
|
26
29
|
if (isBrowser) {
|
|
30
|
+
const themeParentElement = themeParentElementSelector
|
|
31
|
+
? document.querySelector(themeParentElementSelector)
|
|
32
|
+
: null;
|
|
33
|
+
|
|
27
34
|
if (theme === undefined) {
|
|
28
35
|
setTheme((localStorage.getItem('theme') as ThemeMode) || 'dark');
|
|
29
36
|
} else if (theme === 'auto') {
|
|
@@ -31,7 +38,7 @@ export const useToggleTheme = (
|
|
|
31
38
|
const updateTheme = () => {
|
|
32
39
|
const palette = mediaQuery.matches ? 'dark' : 'light';
|
|
33
40
|
|
|
34
|
-
applyThemeDataAttr(palette);
|
|
41
|
+
applyThemeDataAttr(palette, themeParentElement);
|
|
35
42
|
setColorPalette(palette);
|
|
36
43
|
onChange?.(palette);
|
|
37
44
|
};
|
|
@@ -43,7 +50,7 @@ export const useToggleTheme = (
|
|
|
43
50
|
return () => mediaQuery.removeEventListener('change', updateTheme);
|
|
44
51
|
} else {
|
|
45
52
|
localStorage.setItem('theme', theme);
|
|
46
|
-
applyThemeDataAttr(theme);
|
|
53
|
+
applyThemeDataAttr(theme, themeParentElement);
|
|
47
54
|
setColorPalette(theme);
|
|
48
55
|
onChange?.(theme);
|
|
49
56
|
}
|
|
@@ -10,6 +10,7 @@ export const getIsDirectNearTokenWithdrawal = (
|
|
|
10
10
|
ctx.sourceToken.isIntent &&
|
|
11
11
|
!ctx.targetToken.isIntent &&
|
|
12
12
|
ctx.targetToken.symbol === ctx.sourceToken.symbol &&
|
|
13
|
-
ctx.targetToken.blockchain === 'near'
|
|
13
|
+
ctx.targetToken.blockchain === 'near' &&
|
|
14
|
+
ctx.sourceToken.blockchain === 'near'
|
|
14
15
|
);
|
|
15
16
|
};
|
|
@@ -10,6 +10,7 @@ export const getIsDirectTokenOnNearDeposit = (
|
|
|
10
10
|
ctx.targetToken.isIntent &&
|
|
11
11
|
!ctx.sourceToken.isIntent &&
|
|
12
12
|
ctx.targetToken.assetId === ctx.sourceToken.assetId &&
|
|
13
|
-
ctx.targetToken.blockchain === 'near'
|
|
13
|
+
ctx.targetToken.blockchain === 'near' &&
|
|
14
|
+
ctx.sourceToken.blockchain === 'near'
|
|
14
15
|
);
|
|
15
16
|
};
|
|
@@ -10,6 +10,7 @@ export const getIsDirectTokenOnNearTransfer = (
|
|
|
10
10
|
!ctx.targetToken.isIntent &&
|
|
11
11
|
!ctx.sourceToken.isIntent &&
|
|
12
12
|
ctx.targetToken.assetId === ctx.sourceToken.assetId &&
|
|
13
|
-
ctx.targetToken.blockchain === 'near'
|
|
13
|
+
ctx.targetToken.blockchain === 'near' &&
|
|
14
|
+
ctx.sourceToken.blockchain === 'near'
|
|
14
15
|
);
|
|
15
16
|
};
|
|
@@ -1,15 +1,31 @@
|
|
|
1
|
+
import { isBrowser } from 'browser-or-node';
|
|
1
2
|
import { createContext, type ReactNode, useEffect, useMemo } from 'react';
|
|
3
|
+
|
|
2
4
|
import { ColorPalette, ColorScheme, HexColor, Theme } from '../types/theme';
|
|
3
5
|
import { createColorPalette } from './createColorPalette';
|
|
6
|
+
import { useConfig } from '@/config';
|
|
4
7
|
|
|
5
|
-
const setColorVariables = (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
const setColorVariables = (
|
|
9
|
+
palette: ColorPalette,
|
|
10
|
+
colorKey: string,
|
|
11
|
+
parentEl: Element | null,
|
|
12
|
+
) => {
|
|
13
|
+
if (isBrowser) {
|
|
14
|
+
let parentElement = document.body;
|
|
15
|
+
|
|
16
|
+
if (parentEl instanceof HTMLElement) {
|
|
17
|
+
parentElement = parentEl;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Object.entries(palette).forEach(([key, value]) => {
|
|
21
|
+
parentElement.style.setProperty(`--c-sw-${colorKey}-${key}`, value);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
9
24
|
};
|
|
10
25
|
|
|
11
26
|
const setColorPalette = (
|
|
12
27
|
colorKey: string,
|
|
28
|
+
parentEl: Element | null,
|
|
13
29
|
baseColor?: HexColor,
|
|
14
30
|
colorScheme?: ColorScheme,
|
|
15
31
|
) => {
|
|
@@ -21,16 +37,14 @@ const setColorPalette = (
|
|
|
21
37
|
return;
|
|
22
38
|
}
|
|
23
39
|
|
|
24
|
-
setColorVariables(palette, colorKey);
|
|
40
|
+
setColorVariables(palette, colorKey, parentEl);
|
|
25
41
|
};
|
|
26
42
|
|
|
27
|
-
const loadTheme = ({
|
|
28
|
-
primaryColor =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
setColorPalette('accent', primaryColor, colorScheme);
|
|
33
|
-
setColorPalette('gray', surfaceColor, colorScheme);
|
|
43
|
+
const loadTheme = (parentEl: Element | null, theme: Theme) => {
|
|
44
|
+
const { primaryColor, surfaceColor, colorScheme } = theme;
|
|
45
|
+
|
|
46
|
+
setColorPalette('accent', parentEl, primaryColor, colorScheme);
|
|
47
|
+
setColorPalette('gray', parentEl, surfaceColor, colorScheme);
|
|
34
48
|
};
|
|
35
49
|
|
|
36
50
|
export const ThemeContext = createContext<Theme | undefined>(undefined);
|
|
@@ -41,11 +55,16 @@ type ThemeProviderProps = {
|
|
|
41
55
|
};
|
|
42
56
|
|
|
43
57
|
export const ThemeProvider = ({ children, theme }: ThemeProviderProps) => {
|
|
58
|
+
const { themeParentElementSelector } = useConfig();
|
|
44
59
|
const value = useMemo((): Theme | undefined => theme, [theme]);
|
|
45
60
|
|
|
46
61
|
useEffect(() => {
|
|
47
|
-
if (theme) {
|
|
48
|
-
|
|
62
|
+
if (theme && isBrowser) {
|
|
63
|
+
const themeParentElement = themeParentElementSelector
|
|
64
|
+
? document.querySelector(themeParentElementSelector)
|
|
65
|
+
: null;
|
|
66
|
+
|
|
67
|
+
loadTheme(themeParentElement, theme);
|
|
49
68
|
}
|
|
50
69
|
}, [theme]);
|
|
51
70
|
|
package/src/types/config.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type LocalisationKeys =
|
|
|
14
14
|
| 'wallet.recipient.message.receiveFunds'
|
|
15
15
|
| 'wallet.connected.error.notSupportedChain'
|
|
16
16
|
// transfer
|
|
17
|
+
| 'transfer.success.title'
|
|
17
18
|
| 'transfer.success.hash.label'
|
|
18
19
|
| 'transfer.success.intent.label'
|
|
19
20
|
// quote
|
|
@@ -48,6 +49,9 @@ export type LocalisationKeys =
|
|
|
48
49
|
| 'submit.error.quoteFailed.message'
|
|
49
50
|
| 'submit.error.transfer.noFees'
|
|
50
51
|
| 'submit.error.transfer.failed'
|
|
52
|
+
| 'submit.error.externalTransferFailed.label'
|
|
53
|
+
| 'submit.error.externalTransferFailed.incompleteMessage'
|
|
54
|
+
| 'submit.error.externalTransferFailed.refundedMessage'
|
|
51
55
|
// send address
|
|
52
56
|
| 'sendAddress.label'
|
|
53
57
|
| 'sendAddress.button.magic.label'
|