Files
accounts-manager-web/components/accounts/account-filters.tsx
Your Name 0b95ca36f1 Initial project setup with Next.js accounts manager
- Set up Next.js project structure
- Added UI components and styling
- Configured package dependencies
- Added feature documentation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-23 01:40:14 +08:00

78 lines
2.6 KiB
TypeScript

"use client";
import { Input } from '@/components/ui/input';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Search } from 'lucide-react';
import { StatsOverview } from '@/lib/types';
interface AccountFiltersProps {
filters: {
platform: string;
status: string[];
ownerId: string;
search: string;
};
stats: StatsOverview | null;
onFilterChange: (key: string, value: any) => void;
}
export function AccountFilters({ filters, stats, onFilterChange }: AccountFiltersProps) {
return (
<div className="flex flex-wrap gap-4">
<div className="flex items-center space-x-2">
<Search className="h-4 w-4" />
<Input
placeholder="搜索账户..."
value={filters.search}
onChange={(e) => onFilterChange('search', e.target.value)}
className="w-[200px]"
/>
</div>
<Select
value={filters.platform || 'all'}
onValueChange={(value) => onFilterChange('platform', value === 'all' ? '' : value)}
>
<SelectTrigger className="w-[150px]">
<SelectValue placeholder="选择平台" />
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
{stats && Object.keys(stats.platformSummary).map(platform => (
<SelectItem key={platform} value={platform}>{platform}</SelectItem>
))}
</SelectContent>
</Select>
<Select
value={filters.ownerId || 'all'}
onValueChange={(value) => onFilterChange('ownerId', value === 'all' ? '' : value)}
>
<SelectTrigger className="w-[150px]">
<SelectValue placeholder="选择所有者" />
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
{stats && Object.keys(stats.ownerSummary).map(owner => (
<SelectItem key={owner} value={owner}>{owner}</SelectItem>
))}
</SelectContent>
</Select>
<Select
value={filters.status.length > 0 ? filters.status[0] : 'all'}
onValueChange={(value) => onFilterChange('status', value === 'all' ? [] : [value])}
>
<SelectTrigger className="w-[150px]">
<SelectValue placeholder="选择状态" />
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="available"></SelectItem>
<SelectItem value="locked"></SelectItem>
<SelectItem value="banned"></SelectItem>
</SelectContent>
</Select>
</div>
);
}