add redirects

This commit is contained in:
2026-05-28 20:24:56 +03:00
parent 2e6ed487fd
commit 2026230ff6
10 changed files with 506 additions and 168 deletions

View File

@@ -0,0 +1,66 @@
import type { JumperQuote } from '@features/wallet'
import { fromBaseUnits } from '@shared/lib/utils/baseUnits'
import { truncateDecimals } from '@shared/lib/utils/truncateDecimals'
import styles from './BridgeConfirmModal.module.css'
interface Props {
quote: JumperQuote
fromAmountHuman: string
isExecuting?: boolean
onConfirm: () => void
onClose: () => void
}
export function BridgeConfirmModal({ quote, fromAmountHuman, isExecuting, onConfirm, onClose }: Props) {
const { action, estimate, toolDetails } = quote
const toSymbol = action.toToken.symbol
const fromSymbol = action.fromToken.symbol
const toAmount = truncateDecimals(fromBaseUnits(estimate.toAmount, action.toToken.decimals), 8)
const toMin = truncateDecimals(fromBaseUnits(estimate.toAmountMin, action.toToken.decimals), 8)
const feesUsd = (estimate.feeCosts ?? [])
.reduce((sum, f) => sum + (parseFloat(f.amountUSD) || 0), 0)
.toFixed(2)
return (
<div className={styles.overlay} onClick={onClose}>
<div className={styles.card} onClick={e => e.stopPropagation()}>
<div className={styles.header}>
<span className={styles.title}>Подтвердить бридж</span>
<button className={styles.closeBtn} onClick={onClose}>×</button>
</div>
<div className={styles.flow}>
<div className={styles.token}>
<span className={styles.tokenLabel}>Отдаёте</span>
<span className={styles.tokenAmount}>{fromAmountHuman} {fromSymbol}</span>
</div>
<div className={styles.arrow}></div>
<div className={styles.token}>
<span className={styles.tokenLabel}>Получаете</span>
<span className={styles.tokenAmount}>{toAmount} {toSymbol}</span>
<span className={styles.minOut}>Минимум: {toMin} {toSymbol}</span>
</div>
</div>
<div className={styles.details}>
<div className={styles.row}>
<span className={styles.rowLabel}>Комиссия</span>
<span className={styles.rowValue}>${feesUsd}</span>
</div>
<div className={styles.row}>
<span className={styles.rowLabel}>Мост</span>
<span className={styles.rowValue}>{toolDetails.name}</span>
</div>
</div>
<button className={styles.confirmBtn} onClick={onConfirm} disabled={isExecuting}>
{isExecuting ? 'Обработка...' : 'Подтвердить бридж'}
</button>
</div>
</div>
)
}