@@ -2,21 +2,22 @@ import { ChevronFirst, ChevronLeft, ChevronRight } from 'lucide-react'
22import { useState } from 'react'
33import { Link , useNavigate , useParams } from 'react-router'
44import ErrorAlert from '@/components/ErrorAlert'
5- import { TabsFilter , ToggleFilter } from '@/components/Filters'
5+ import { DropdownFilter , TabsFilter , ToggleFilter } from '@/components/Filters'
66import { Spinner } from '@/components/Spinner'
77import { Button } from '@/components/ui/button'
88import { showCardType } from '@/components/utils'
9- import { type DeckFilters , deckKinds } from '@/services/decks/deckService'
9+ import { capitalize } from '@/lib/utils'
10+ import { type DeckFilters , deckKinds , deckOrder } from '@/services/decks/deckService'
1011import { useDecksSearch } from '@/services/decks/useDeck'
1112import { energies } from '@/types'
1213import { DeckItem } from './DeckItem'
1314
1415export default function Decks ( ) {
1516 const navigate = useNavigate ( )
1617 const { kind } = useParams < { kind : DeckFilters [ 'kind' ] } > ( )
17- const validKind = kind && deckKinds . includes ( kind ) ? kind : 'popular '
18+ const validKind = kind && deckKinds . includes ( kind ) ? kind : 'community '
1819
19- const [ filters , setFilters ] = useState < DeckFilters > ( { kind : validKind , page : 0 , energy : [ ] } )
20+ const [ filters , setFilters ] = useState < DeckFilters > ( { kind : validKind , orderby : 'popular' , page : 0 , energy : [ ] } )
2021 const { data, isLoading, isError, error } = useDecksSearch ( filters )
2122
2223 const handleKindChange = ( newKind : DeckFilters [ 'kind' ] ) => {
@@ -33,13 +34,16 @@ export default function Decks() {
3334 < ChevronRight />
3435 </ Button >
3536 </ Link >
36- < TabsFilter
37- className = "w-full"
38- options = { deckKinds }
39- value = { filters . kind }
40- onChange = { handleKindChange }
41- show = { ( kind ) => `${ kind . charAt ( 0 ) . toUpperCase ( ) + kind . slice ( 1 ) } decks` }
42- />
37+ < TabsFilter className = "w-full" options = { deckKinds } value = { filters . kind } onChange = { handleKindChange } show = { ( kind ) => `${ capitalize ( kind ) } decks` } />
38+ { filters . kind === 'community' && (
39+ < DropdownFilter
40+ options = { deckOrder }
41+ value = { filters . orderby }
42+ onChange = { ( orderby ) => setFilters ( ( prev ) => ( { ...prev , orderby } ) ) }
43+ label = "Sort by"
44+ show = { capitalize }
45+ />
46+ ) }
4347 < ToggleFilter options = { energies } value = { filters . energy } onChange = { ( energy ) => setFilters ( ( prev ) => ( { ...prev , energy } ) ) } show = { showCardType } />
4448 </ div >
4549 < div className = "flex flex-col gap-2 sm:w-xl" >
0 commit comments