1- import { DetailBook } from '@/components/books/DetailBook'
2- import {
3- Breadcrumb ,
4- BreadcrumbItem ,
5- BreadcrumbLink ,
6- BreadcrumbList ,
7- BreadcrumbPage ,
8- BreadcrumbSeparator ,
9- } from '@/components/ui/breadcrumb'
1+ import { Calendar , Hash , Library } from 'lucide-react'
2+ import { Card , CardContent , CardHeader , CardTitle } from '@/components/ui/card'
3+ import { Badge } from '@/components/ui/badge'
104import { getBook } from '@/lib/api/book'
5+ import { getBookStatus } from '@/lib/utils'
6+ import Link from 'next/link'
117
128export default async function BookDetailsPage ( {
139 params,
@@ -23,26 +19,63 @@ export default async function BookDetailsPage({
2319 return < div > { JSON . stringify ( bookRes . message ) } </ div >
2420 }
2521
22+ const status = getBookStatus ( bookRes . data . stats )
23+ const isAvailable = status === 'available'
24+
2625 return (
2726 < div className = "space-y-4" >
28- < h1 className = "text-2xl font-semibold" > { bookRes . data . title } </ h1 >
29- < Breadcrumb >
30- < BreadcrumbList >
31- < BreadcrumbItem >
32- < BreadcrumbLink href = "/" > Home</ BreadcrumbLink >
33- </ BreadcrumbItem >
34- < BreadcrumbSeparator />
35- < BreadcrumbItem >
36- < BreadcrumbLink href = "/explore/books" > Books</ BreadcrumbLink >
37- </ BreadcrumbItem >
38- < BreadcrumbSeparator />
39- < BreadcrumbItem >
40- < BreadcrumbPage > { bookRes . data . title } </ BreadcrumbPage >
41- </ BreadcrumbItem >
42- </ BreadcrumbList >
43- </ Breadcrumb >
27+ < div >
28+ < h1 className = "text-3xl font-bold mb-2" > { bookRes . data . title } </ h1 >
29+ < p className = "text-xl text-muted-foreground mb-4" >
30+ { bookRes . data . author }
31+ </ p >
32+ < div className = "flex flex-wrap gap-2 mb-4" >
33+ < Badge
34+ className = "uppercase"
35+ variant = { isAvailable ? 'default' : 'secondary' }
36+ >
37+ { status }
38+ </ Badge >
39+ { /* <Badge variant="outline">bookRes.data.genre</Badge> */ }
40+ </ div >
41+ </ div >
42+
43+ < Card >
44+ < CardHeader >
45+ < CardTitle > Book Information</ CardTitle >
46+ </ CardHeader >
47+ < CardContent className = "grid gap-2 grid-cols-[max-content_1fr] md:grid-cols-[max-content_1fr_max-content_1fr] items-center" >
48+ < Hash className = "size-4" />
49+ < p >
50+ < span className = "font-medium" > Code: </ span >
51+ { bookRes . data . code }
52+ </ p >
53+ < Calendar className = "size-4" />
54+ < p >
55+ < span className = "font-medium" > Year: </ span >
56+ { bookRes . data . year }
57+ </ p >
58+ < Library className = "size-4" />
59+ < p >
60+ < span className = "font-medium" > Library: </ span >
61+ < Link
62+ href = { `/libraries/${ bookRes . data . library . id } ` }
63+ className = "link"
64+ >
65+ { bookRes . data . library . name }
66+ </ Link >
67+ </ p >
68+ </ CardContent >
69+ </ Card >
4470
45- < DetailBook book = { bookRes . data } />
71+ < Card >
72+ < CardHeader >
73+ < CardTitle > Description</ CardTitle >
74+ </ CardHeader >
75+ < CardContent >
76+ < p className = "text-sm leading-relaxed" > { bookRes . data . description } </ p >
77+ </ CardContent >
78+ </ Card >
4679 </ div >
4780 )
4881}
0 commit comments