/** * LanguageBadges - Language filter badge component * Mirrors TypeBadges pattern, reuses TypeBadgeItem for individual badges */ 'use client'; import { memo } from 'react'; import { Card } from '@/components/ui/Card'; import { Icons } from '@/components/ui/Icon'; import { TypeBadgeItem } from './TypeBadgeItem'; import type { LanguageBadge } from '@/lib/types'; interface LanguageBadgesProps { badges: LanguageBadge[]; selectedLangs: Set; onToggleLang: (lang: string) => void; className?: string; } export const LanguageBadges = memo(function LanguageBadges({ badges, selectedLangs, onToggleLang, className = '' }: LanguageBadgesProps) { if (badges.length === 0) { return null; } const handleClearAll = () => { selectedLangs.forEach(lang => onToggleLang(lang)); }; return (
语言标签 ({badges.length}):
{/* Desktop: flex wrap, Mobile: horizontal scroll */}
{badges.map((badge) => ( onToggleLang(badge.lang)} /> ))}
{badges.map((badge) => ( onToggleLang(badge.lang)} /> ))}
{selectedLangs.size > 0 && (
)}
); });