@@ -24,27 +24,27 @@ const sortSections = [
2424 label : 'username' ,
2525 items : [
2626 { value : 'username' , label : 'sort.username.asc' } ,
27- { value : '-username' , label : 'sort.username.desc' }
28- ]
27+ { value : '-username' , label : 'sort.username.desc' } ,
28+ ] ,
2929 } ,
3030 {
3131 key : 'expire' ,
3232 icon : Calendar ,
3333 label : 'expireDate' ,
3434 items : [
3535 { value : 'expire' , label : 'sort.expire.oldest' } ,
36- { value : '-expire' , label : 'sort.expire.newest' }
37- ]
36+ { value : '-expire' , label : 'sort.expire.newest' } ,
37+ ] ,
3838 } ,
3939 {
4040 key : 'usage' ,
4141 icon : ChartPie ,
4242 label : 'dataUsage' ,
4343 items : [
4444 { value : 'used_traffic' , label : 'sort.usage.low' } ,
45- { value : '-used_traffic' , label : 'sort.usage.high' }
46- ]
47- }
45+ { value : '-used_traffic' , label : 'sort.usage.high' } ,
46+ ] ,
47+ } ,
4848] as const
4949
5050interface FiltersProps {
@@ -74,13 +74,14 @@ export const Filters = ({ filters, onFilterChange, refetch, advanceSearchOnOpen,
7474
7575 // Ultra-fast debounced search function
7676 const debouncedFilterChange = useMemo (
77- ( ) => debounce ( ( value : string ) => {
78- onFilterChange ( {
79- search : value ,
80- offset : 0 , // Reset to first page when search is updated
81- } )
82- } , 25 ) , // Ultra-fast debounce
83- [ onFilterChange ]
77+ ( ) =>
78+ debounce ( ( value : string ) => {
79+ onFilterChange ( {
80+ search : value ,
81+ offset : 0 , // Reset to first page when search is updated
82+ } )
83+ } , 25 ) , // Ultra-fast debounce
84+ [ onFilterChange ] ,
8485 )
8586
8687 // Handle input change
@@ -177,16 +178,9 @@ export const Filters = ({ filters, onFilterChange, refetch, advanceSearchOnOpen,
177178 < div className = "flex h-full items-center gap-1" >
178179 < DropdownMenu >
179180 < DropdownMenuTrigger asChild >
180- < Button
181- size = "icon-md"
182- variant = "ghost"
183- className = "relative flex items-center gap-2 border"
184- aria-label = { t ( 'sortOptions' , { defaultValue : 'Sort Options' } ) }
185- >
181+ < Button size = "icon-md" variant = "ghost" className = "relative flex items-center gap-2 border" aria-label = { t ( 'sortOptions' , { defaultValue : 'Sort Options' } ) } >
186182 < ArrowUpDown className = "h-4 w-4" />
187- { filters . sort && filters . sort !== '-created_at' && (
188- < div className = "absolute -right-1 -top-1 h-2 w-2 rounded-full bg-primary" />
189- ) }
183+ { filters . sort && filters . sort !== '-created_at' && < div className = "absolute -right-1 -top-1 h-2 w-2 rounded-full bg-primary" /> }
190184 </ Button >
191185 </ DropdownMenuTrigger >
192186 < DropdownMenuContent align = "end" className = "w-52 md:w-56" >
@@ -197,26 +191,20 @@ export const Filters = ({ filters, onFilterChange, refetch, advanceSearchOnOpen,
197191 < section . icon className = "h-3 w-3" />
198192 < span className = "text-xs md:text-sm" > { t ( section . label ) } </ span >
199193 </ DropdownMenuLabel >
200-
194+
201195 { /* Section Items */ }
202- { section . items . map ( ( item ) => (
196+ { section . items . map ( item => (
203197 < DropdownMenuItem
204198 key = { item . value }
205199 onClick = { ( ) => handleSort && handleSort ( item . value ) }
206- className = { `whitespace-nowrap px-2 py-1.5 text-xs md:px-3 md:py-2 md:text-sm ${
207- filters . sort === item . value ? 'bg-accent' : ''
208- } `}
200+ className = { `whitespace-nowrap px-2 py-1.5 text-xs md:px-3 md:py-2 md:text-sm ${ filters . sort === item . value ? 'bg-accent' : '' } ` }
209201 >
210202 < section . icon className = "mr-1.5 h-3 w-3 flex-shrink-0 md:mr-2 md:h-4 md:w-4" />
211203 < span className = "truncate" > { t ( item . label ) } </ span >
212- { filters . sort === item . value && (
213- < ChevronDown className = { `ml-auto h-3 w-3 flex-shrink-0 md:h-4 md:w-4 ${
214- item . value . startsWith ( '-' ) ? '' : 'rotate-180'
215- } `} />
216- ) }
204+ { filters . sort === item . value && < ChevronDown className = { `ml-auto h-3 w-3 flex-shrink-0 md:h-4 md:w-4 ${ item . value . startsWith ( '-' ) ? '' : 'rotate-180' } ` } /> }
217205 </ DropdownMenuItem >
218206 ) ) }
219-
207+
220208 { /* Add separator except for last section */ }
221209 { sectionIndex < sortSections . length - 1 && < DropdownMenuSeparator /> }
222210 </ div >
0 commit comments