@@ -311,18 +311,7 @@ export const KeyMetrics = (props: IKeyMetricsProps) => {
311311 ) }
312312 </ p >
313313 ) : null }
314- { props . currentTvlByChain ?. borrowed != null ? (
315- < p className = "group flex flex-wrap justify-between gap-4 border-b border-(--cards-border) py-1 first:pt-0 last:border-none last:pb-0" >
316- < span className = "text-(--text-label)" > Borrowed</ span >
317- < Flag
318- protocol = { props . name }
319- dataType = "Borrowed"
320- isLending = { props . category === 'Lending' }
321- className = "mr-auto opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100"
322- />
323- < span className = "font-jetbrains" > { props . formatPrice ( props . currentTvlByChain . borrowed ) } </ span >
324- </ p >
325- ) : null }
314+ < BorrowedBreakdown { ...props } />
326315 < TokenLiquidity { ...props } />
327316 < Treasury { ...props } />
328317 < Raises { ...props } />
@@ -333,6 +322,78 @@ export const KeyMetrics = (props: IKeyMetricsProps) => {
333322 )
334323}
335324
325+ const BorrowedBreakdown = ( props : IKeyMetricsProps ) => {
326+ if ( props . currentTvlByChain ?. borrowed == null ) return null
327+
328+ if ( props . borrowedBreakdown ?. chains . length === 0 && props . borrowedBreakdown ?. tokens . length === 0 ) {
329+ return (
330+ < p className = "group flex flex-wrap justify-between gap-4 border-b border-(--cards-border) py-1 first:pt-0 last:border-none last:pb-0" >
331+ < span className = "text-(--text-label)" > Borrowed</ span >
332+ < Flag
333+ protocol = { props . name }
334+ dataType = "Borrowed"
335+ isLending = { props . category === 'Lending' }
336+ className = "mr-auto opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100"
337+ />
338+ < span className = "font-jetbrains" > { props . formatPrice ( props . currentTvlByChain . borrowed ) } </ span >
339+ </ p >
340+ )
341+ }
342+
343+ return (
344+ < details className = "group" >
345+ < summary className = "flex flex-wrap justify-start gap-4 border-b border-(--cards-border) py-1 group-last:border-none group-open:border-none group-open:font-semibold" >
346+ < span className = "text-(--text-label)" > Borrowed</ span >
347+ < Icon
348+ name = "chevron-down"
349+ height = { 16 }
350+ width = { 16 }
351+ className = "relative top-0.5 -ml-3 transition-transform duration-100 group-open:rotate-180"
352+ />
353+ < Flag
354+ protocol = { props . name }
355+ dataType = "Borrowed"
356+ isLending = { props . category === 'Lending' }
357+ className = "mr-auto opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100"
358+ />
359+ < span className = "font-jetbrains ml-auto" > { props . formatPrice ( props . currentTvlByChain . borrowed ) } </ span >
360+ </ summary >
361+ < div className = "mb-3 flex flex-col" >
362+ { props . borrowedBreakdown ?. chains . length > 0 ? (
363+ < details className = "group/1" >
364+ < summary className = "flex flex-wrap justify-start gap-4 border-b border-(--cards-border) py-1 group-last/1:border-none group-open/1:border-none group-open/1:font-semibold" >
365+ < span className = "text-(--text-label)" > Borrowed by Chain</ span >
366+ < Icon
367+ name = "chevron-down"
368+ height = { 16 }
369+ width = { 16 }
370+ className = "relative top-0.5 -ml-3 transition-transform duration-100 group-open/1:rotate-180"
371+ />
372+ < Flag
373+ protocol = { props . name }
374+ dataType = "Borrowed by Chain"
375+ isLending = { props . category === 'Lending' }
376+ className = "mr-auto opacity-0 group-hover/1:opacity-100 group-focus-visible/1:opacity-100"
377+ />
378+ </ summary >
379+ < div className = "mb-3 flex flex-col" >
380+ { props . borrowedBreakdown ?. chains . map ( ( [ chain , tvl ] ) => (
381+ < p
382+ key = { `${ chain } -${ tvl } -${ props . name } ` }
383+ className = "flex items-center justify-between gap-1 border-b border-dashed border-[#e6e6e6] py-1 group-last:border-none dark:border-[#222224]"
384+ >
385+ < span className = "text-(--text-label)" > { chain } </ span >
386+ < span className = "font-jetbrains" > { props . formatPrice ( tvl ) } </ span >
387+ </ p >
388+ ) ) }
389+ </ div >
390+ </ details >
391+ ) : null }
392+ </ div >
393+ </ details >
394+ )
395+ }
396+
336397const Articles = ( props : IProtocolOverviewPageData ) => {
337398 if ( ! props . articles ?. length ) return null
338399
0 commit comments