Skip to content

Commit 0705b50

Browse files
authored
FEAT: Earn Widget Outtoken selector (#1869)
* fix lint * fix output token select
1 parent 19f1412 commit 0705b50

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/app/earn/components/earn-widget/index.tsx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
'use client'
22

3+
import { AnimatePresence, motion } from 'framer-motion'
34
import { useAtom } from 'jotai'
45
import range from 'lodash/range'
56
import { useCallback, useEffect, useMemo } from 'react'
67
import { isAddressEqual } from 'viem'
78

89
import { useQueryParams } from '@/app/earn-old/use-query-params'
910
import { tradeMachineAtom } from '@/app/store/trade-machine'
11+
import { Receive } from '@/components/receive'
1012
import { SelectTokenModal } from '@/components/swap/components/select-token-modal'
1113
import { TransactionReviewModal } from '@/components/swap/components/transaction-review'
1214
import { WarningType } from '@/components/swap/components/warning'
@@ -39,11 +41,13 @@ export function EarnWidget() {
3941
indexToken,
4042
inputToken,
4143
inputTokens,
44+
outputTokens,
4245
inputTokenAmount,
4346
inputValue,
4447
isMinting,
4548
onChangeInputTokenAmount,
4649
onSelectInputToken,
50+
onSelectOutputToken,
4751
balances,
4852
products,
4953
outputToken,
@@ -60,6 +64,8 @@ export function EarnWidget() {
6064
inputBalance,
6165
inputBalanceFormatted,
6266
isFetchingQuote,
67+
ouputAmount,
68+
outputAmountUsd,
6369
resetData,
6470
} = useFormattedEarnData()
6571

@@ -73,6 +79,12 @@ export function EarnWidget() {
7379
onClose: onCloseSelectInputToken,
7480
} = useDisclosure()
7581

82+
const {
83+
isOpen: isSelectOutputTokenOpen,
84+
onOpen: onOpenSelectOutputToken,
85+
onClose: onCloseSelectOutputToken,
86+
} = useDisclosure()
87+
7688
const [tradeState, sendTradeEvent] = useAtom(tradeMachineAtom)
7789

7890
const onClickBalance = useCallback(() => {
@@ -112,6 +124,30 @@ export function EarnWidget() {
112124
onClickBalance={onClickBalance}
113125
onSelectToken={() => isMinting && onOpenSelectInputToken()}
114126
/>
127+
<AnimatePresence mode='wait'>
128+
{!isMinting && (
129+
<motion.div
130+
initial={{ height: 0, opacity: 0 }}
131+
animate={{ height: 'auto', opacity: 1 }}
132+
exit={{ height: 0, opacity: 0 }}
133+
transition={{
134+
duration: 0.3,
135+
height: { duration: 0.2 },
136+
opacity: { duration: 0.2 },
137+
}}
138+
className='overflow-hidden'
139+
>
140+
<Receive
141+
isLoading={isFetchingQuote}
142+
outputAmount={ouputAmount}
143+
outputAmountUsd={outputAmountUsd}
144+
selectedOutputToken={outputToken}
145+
onSelectToken={onOpenSelectOutputToken}
146+
/>
147+
</motion.div>
148+
)}
149+
</AnimatePresence>
150+
115151
<Projection
116152
isQuoteLoading={isFetchingQuote}
117153
amount={inputValue}
@@ -170,6 +206,17 @@ export function EarnWidget() {
170206
address={address}
171207
tokens={inputTokens}
172208
/>
209+
<SelectTokenModal
210+
isDarkMode={true}
211+
isOpen={isSelectOutputTokenOpen}
212+
onClose={onCloseSelectOutputToken}
213+
onSelectedToken={(tokenSymbol, chainId) => {
214+
onSelectOutputToken(tokenSymbol, chainId)
215+
onCloseSelectOutputToken()
216+
}}
217+
address={address}
218+
tokens={outputTokens}
219+
/>
173220
<TransactionReviewModal
174221
isDarkMode
175222
onClose={() => {

0 commit comments

Comments
 (0)