@@ -19,6 +19,7 @@ import {
1919} from '@/components/ui/card'
2020import Link from 'next/link'
2121import { Route } from 'next'
22+ import { ViewTransition } from 'react'
2223
2324export const ListCardBorrow : React . FC <
2425 React . PropsWithChildren < { borrow : Borrow ; idx : number } >
@@ -27,67 +28,66 @@ export const ListCardBorrow: React.FC<
2728 const isDue = isBorrowDue ( borrow )
2829
2930 return (
30- < Card
31- key = { borrow . id }
32- className = { cn ( 'relative' , status === 'lost' && 'bg-destructive/5' ) }
33- >
34- < CardHeader >
35- < Link
36- // FIXME
37- href = { `./borrows/${ borrow . id } ` as Route }
38- className = "flex justify-between items-start min-h-20"
39- >
40- < div >
41- < CardTitle className = "text-lg line-clamp-2" >
42- < abbr title = { borrow . book . title } className = "no-underline" >
43- { borrow . book . title }
44- </ abbr >
45- </ CardTitle >
46- < CardDescription >
47- < span className = "text-muted-foreground/80 font-bold tracking-wider" >
48- # { idx . toString ( ) . padStart ( 4 , '0' ) }
49- </ span >
50- </ CardDescription >
51- </ div >
52- < Badge
53- variant = {
54- getBorrowStatus ( borrow ) === 'overdue'
55- ? 'destructive'
56- : getBorrowStatus ( borrow ) === 'active'
57- ? 'default'
58- : 'secondary'
59- }
60- className = "capitalize"
31+ < ViewTransition name = { borrow . id } key = { borrow . id } >
32+ < Card className = { cn ( 'relative' , status === 'lost' && 'bg-destructive/5' ) } >
33+ < CardHeader >
34+ < Link
35+ // FIXME
36+ href = { `./borrows/${ borrow . id } ` as Route }
37+ className = "flex justify-between items-start min-h-20"
6138 >
62- { getBorrowStatus ( borrow ) }
63- </ Badge >
64- </ Link >
65- </ CardHeader >
66- < CardContent className = "space-y-3" >
67- < div className = "flex items-center gap-2 text-sm" >
68- < User className = "size-4 text-muted-foreground" />
69- < span > { borrow . subscription . user . name } </ span >
70- </ div >
71- < div className = "flex items-center gap-2 text-sm" >
72- < LibraryIcon className = "size-4 text-muted-foreground" />
73- < span > { borrow . subscription . membership . library . name } </ span >
74- </ div >
75- < div className = "flex items-center gap-2 text-sm" >
76- < Calendar className = "size-4 text-muted-foreground" />
77- < span > Borrowed: { formatDate ( borrow . borrowed_at ) } </ span >
78- </ div >
79- < div className = "flex items-center gap-2 text-sm" >
80- { isDue ? (
81- < CalendarX className = "size-4 text-destructive" />
82- ) : (
83- < CalendarClock className = "size-4 text-muted-foreground" />
84- ) }
85- < span className = { cn ( isDue && 'text-destructive' ) } >
86- Due: { formatDate ( borrow . due_at ) }
87- </ span >
88- </ div >
89- </ CardContent >
90- < CardFooter > { children } </ CardFooter >
91- </ Card >
39+ < div >
40+ < CardTitle className = "text-lg line-clamp-2" >
41+ < abbr title = { borrow . book . title } className = "no-underline" >
42+ { borrow . book . title }
43+ </ abbr >
44+ </ CardTitle >
45+ < CardDescription >
46+ < span className = "text-muted-foreground/80 font-bold tracking-wider" >
47+ # { idx . toString ( ) . padStart ( 4 , '0' ) }
48+ </ span >
49+ </ CardDescription >
50+ </ div >
51+ < Badge
52+ variant = {
53+ getBorrowStatus ( borrow ) === 'overdue'
54+ ? 'destructive'
55+ : getBorrowStatus ( borrow ) === 'active'
56+ ? 'default'
57+ : 'secondary'
58+ }
59+ className = "capitalize"
60+ >
61+ { getBorrowStatus ( borrow ) }
62+ </ Badge >
63+ </ Link >
64+ </ CardHeader >
65+ < CardContent className = "space-y-3" >
66+ < div className = "flex items-center gap-2 text-sm" >
67+ < User className = "size-4 text-muted-foreground" />
68+ < span > { borrow . subscription . user . name } </ span >
69+ </ div >
70+ < div className = "flex items-center gap-2 text-sm" >
71+ < LibraryIcon className = "size-4 text-muted-foreground" />
72+ < span > { borrow . subscription . membership . library . name } </ span >
73+ </ div >
74+ < div className = "flex items-center gap-2 text-sm" >
75+ < Calendar className = "size-4 text-muted-foreground" />
76+ < span > Borrowed: { formatDate ( borrow . borrowed_at ) } </ span >
77+ </ div >
78+ < div className = "flex items-center gap-2 text-sm" >
79+ { isDue ? (
80+ < CalendarX className = "size-4 text-destructive" />
81+ ) : (
82+ < CalendarClock className = "size-4 text-muted-foreground" />
83+ ) }
84+ < span className = { cn ( isDue && 'text-destructive' ) } >
85+ Due: { formatDate ( borrow . due_at ) }
86+ </ span >
87+ </ div >
88+ </ CardContent >
89+ < CardFooter > { children } </ CardFooter >
90+ </ Card >
91+ </ ViewTransition >
9292 )
9393}
0 commit comments