@@ -20,6 +20,8 @@ import Link from 'next/link'
2020import type { Metadata } from 'next'
2121import { SITE_NAME } from '@/lib/consts'
2222import { ListCardSubscription } from '@/components/subscriptions/ListCardSubscription'
23+ import { TabLink } from '@/components/borrows/TabLink'
24+ import { Badge } from '@/components/ui/badge'
2325
2426export const metadata : Metadata = {
2527 title : `Subscriptions · ${ SITE_NAME } ` ,
@@ -32,12 +34,14 @@ export default async function Subscriptions({
3234 skip ?: number
3335 limit ?: number
3436 library_id ?: string
37+ status ?: 'active' | 'expired'
3538 } >
3639} ) {
3740 const sp = await searchParams
3841 const skip = Number ( sp ?. skip ?? 0 )
3942 const limit = Number ( sp ?. limit ?? 20 )
4043 const library_id = sp ?. library_id
44+ const status = sp ?. status
4145
4246 const headers = await Verify ( {
4347 from : '/subscriptions' ,
@@ -49,6 +53,7 @@ export default async function Subscriptions({
4953 sort_in : 'desc' ,
5054 limit : limit ,
5155 skip : skip ,
56+ status,
5257 ...( library_id ? { library_id } : { } ) ,
5358 } ,
5459 {
@@ -90,6 +95,19 @@ export default async function Subscriptions({
9095 </ Button >
9196 </ div >
9297 </ nav >
98+ < div className = "" >
99+ < TabLink
100+ tabs = { [
101+ { name : 'All' , href : '/subscriptions' } ,
102+ { name : 'Active' , href : '/subscriptions?status=active' } ,
103+ { name : 'Overdue' , href : '/subscriptions?status=expired' } ,
104+ ] }
105+ activeHref = { `/subscriptions${ status ? `?status=${ status } ` : '' } ` }
106+ />
107+ < Badge className = "ml-4 hidden md:block" variant = "outline" >
108+ { res . meta . total }
109+ </ Badge >
110+ </ div >
93111
94112 < div className = "grid gap-4 md:grid-cols-2 lg:grid-cols-3" >
95113 { res . data . map ( ( sub ) => (
@@ -99,12 +117,16 @@ export default async function Subscriptions({
99117
100118 < Pagination >
101119 < PaginationContent >
102- < PaginationItem >
103- < PaginationPrevious href = { prevURL } />
104- </ PaginationItem >
105- < PaginationItem >
106- < PaginationNext href = { nextURL } />
107- </ PaginationItem >
120+ { res . meta . skip > 0 && (
121+ < PaginationItem >
122+ < PaginationPrevious href = { prevURL } />
123+ </ PaginationItem >
124+ ) }
125+ { res . meta . limit <= res . data . length && (
126+ < PaginationItem >
127+ < PaginationNext href = { nextURL } />
128+ </ PaginationItem >
129+ ) }
108130 </ PaginationContent >
109131 </ Pagination >
110132 </ div >
0 commit comments