/** * SourceBadges - Clickable video source badges with filtering * Shows available video sources with counts * Click to filter videos by source * Responsive: Desktop shows expand/collapse, Mobile shows horizontal scroll */ 'use client'; import { memo } from 'react'; import { Card } from '@/components/ui/Card'; import { Icons } from '@/components/ui/Icon'; import { SourceBadgeList } from './SourceBadgeList'; import type { SourceBadge } from '@/lib/types'; interface SourceBadgesProps { sources: SourceBadge[]; selectedSources: Set; onToggleSource: (sourceId: string) => void; className?: string; } export const SourceBadges = memo(function SourceBadges({ sources, selectedSources, onToggleSource, className = '' }: SourceBadgesProps) { if (sources.length === 0) { return null; } const handleClearAll = () => { selectedSources.forEach(sourceId => onToggleSource(sourceId)); }; return (
视频源 ({sources.length}):
{selectedSources.size > 0 && (
)}
); });