Skip to content

Commit f622db3

Browse files
committed
feat: display risk & fix sort
1 parent 0ef29a7 commit f622db3

File tree

3 files changed

+33
-20
lines changed

3 files changed

+33
-20
lines changed

apps/vaults-v3/components/details/tabs/VaultDetailsStrategies.tsx

+9-4
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ export function VaultDetailsStrategies({currentVault}: {currentVault: TYDaemonVa
117117
const vaultList = useMemo((): TYDaemonVault[] => {
118118
const _vaultList = [];
119119
for (const strategy of currentVault?.strategies || []) {
120-
_vaultList.push(vaults[strategy.address]);
120+
_vaultList.push({...vaults[strategy.address], details: strategy.details});
121121
}
122-
return _vaultList.filter(Boolean);
122+
return _vaultList.filter(vault => !!vault.address);
123123
}, [vaults, currentVault]);
124124

125125
const strategyList = useMemo((): TYDaemonVaultStrategy[] => {
@@ -196,13 +196,18 @@ export function VaultDetailsStrategies({currentVault}: {currentVault: TYDaemonVa
196196
vault.address as keyof typeof allocationPercentageList
197197
]
198198
}
199-
currentVault={vault}
199+
currentVault={
200+
vault as TYDaemonVault & {details: TYDaemonVaultStrategy['details']}
201+
}
200202
/>
201203
)
202204
)}
203205
</div>
204206
</div>
205-
<div className={'col-span-3 flex min-h-[240px] w-full flex-col'}>
207+
<div
208+
className={
209+
'col-span-9 my-auto flex size-full min-h-[240px] flex-col items-center lg:col-span-3'
210+
}>
206211
<AllocationPercentage allocationPercentage={allocationPercentageList} />
207212
</div>
208213
</div>

apps/vaults-v3/components/list/VaultsV3ListHead.tsx

+12-2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export function VaultsV3ListHead({items, sortBy, sortDirection, onSort}: TListHe
5555
);
5656

5757
const [token, ...rest] = items;
58+
5859
return (
5960
<div className={'mt-4 hidden w-full grid-cols-1 md:mt-0 md:grid'}>
6061
<div
@@ -72,8 +73,17 @@ export function VaultsV3ListHead({items, sortBy, sortDirection, onSort}: TListHe
7273
)}>
7374
<button
7475
onClick={(): void => onSort(token.value, toggleSortDirection(token.value))}
75-
className={cl('yearn--table-head-label-wrapper group')}>
76-
<p className={'yearn--table-head-label'}>{token.label}</p>
76+
className={cl('yearn--table-head-label-wrapper group hover:text-white')}>
77+
<p
78+
className={cl(
79+
'yearn--table-head-label',
80+
'transition-colors',
81+
sortBy === token.value
82+
? 'text-neutral-800'
83+
: 'text-neutral-800/60 group-hover:text-neutral-800'
84+
)}>
85+
{token.label}
86+
</p>
7787
{renderChevron(sortBy === token.value)}
7888
</button>
7989
</div>

apps/vaults-v3/components/list/VaultsV3ListStrategy.tsx

+12-14
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import {useMemo, useState} from 'react';
22
import Link from 'next/link';
33
import {motion} from 'framer-motion';
4-
import {cl, isZero, toNormalizedBN, truncateHex} from '@builtbymom/web3/utils';
4+
import {cl, formatPercent, isZero, toNormalizedBN, truncateHex} from '@builtbymom/web3/utils';
55
import {getChainBgColor} from '@vaults-v3/utils';
66
import {IconLinkOut} from '@yearn-finance/web-lib/icons/IconLinkOut';
7+
import {formatDuration} from '@yearn-finance/web-lib/utils/format.time';
78
import {getNetwork} from '@yearn-finance/web-lib/utils/wagmi/utils';
89
import {ImageWithFallback} from '@common/components/ImageWithFallback';
910
import {RenderAmount} from '@common/components/RenderAmount';
@@ -12,7 +13,7 @@ import {useYearn} from '@common/contexts/useYearn';
1213
import {VaultChainTag} from '../VaultChainTag';
1314

1415
import type {ReactElement} from 'react';
15-
import type {TYDaemonVault} from '@yearn-finance/web-lib/utils/schemas/yDaemonVaultsSchemas';
16+
import type {TYDaemonVault, TYDaemonVaultStrategy} from '@yearn-finance/web-lib/utils/schemas/yDaemonVaultsSchemas';
1617
import type {TNormalizedBN} from '@builtbymom/web3/types';
1718

1819
export function VaultStakedAmount({currentVault}: {currentVault: TYDaemonVault}): ReactElement {
@@ -70,7 +71,7 @@ export function VaultsV3ListStrategy({
7071
currentVault,
7172
allocationPercentage
7273
}: {
73-
currentVault: TYDaemonVault;
74+
currentVault: TYDaemonVault & {details: TYDaemonVaultStrategy['details']};
7475
allocationPercentage: number;
7576
}): ReactElement {
7677
const [isExpanded, set_isExpanded] = useState(false);
@@ -108,6 +109,9 @@ export function VaultsV3ListStrategy({
108109
};
109110

110111
const chainBgColor = getChainBgColor(currentVault.chainID);
112+
const lastReportTime = currentVault.details?.lastReport
113+
? formatDuration(currentVault.details.lastReport * 1000 - new Date().valueOf(), true)
114+
: 'N/A';
111115

112116
return (
113117
<div
@@ -264,23 +268,17 @@ export function VaultsV3ListStrategy({
264268
<div className={'flex flex-col gap-2'}>
265269
<div className={'flex flex-row gap-2'}>
266270
<span className={''}>{'Management Fee:'}</span>
267-
<span>{'0%'}</span>
271+
<span>{formatPercent((currentVault.apr.fees.management || 0) * 100, 0)}</span>
268272
</div>
269273
<div className={'flex flex-row gap-2'}>
270274
<span className={''}>{'Performance Fee:'}</span>
271-
<span>{'5%'}</span>
275+
<span>
276+
{formatPercent((currentVault.details?.performanceFee || 0) / 100, 0)}
277+
</span>
272278
</div>
273279
<div className={'flex flex-row gap-2'}>
274280
<span className={''}>{'Last Report:'}</span>
275-
<Link
276-
href={`#`}
277-
onClick={(event): void => event.stopPropagation()}
278-
className={'flex items-center gap-1 text-white hover:opacity-60'}
279-
target={'_blank'}
280-
rel={'noopener noreferrer'}>
281-
{'3 days ago'}
282-
<IconLinkOut className={'inline-block size-3'} />
283-
</Link>
281+
{lastReportTime}
284282
</div>
285283
</div>
286284
</div>

0 commit comments

Comments
 (0)