import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { CloseOutlined, ExportOutlined } from '@ant-design/icons'; import { withBasePath } from '@/api/http-init'; import type { Sponsor } from '@/generated/types'; import { pickLocale } from '@/lib/sponsors'; import './SponsorCard.css'; export type SponsorCardVariant = 'banner' | 'compact' | 'card'; export interface SponsorCardProps { sponsor: Sponsor; variant?: SponsorCardVariant; onClose?: () => void; } function SponsorLogo({ sponsor }: { sponsor: Sponsor }) { const [failedSrc, setFailedSrc] = useState(''); if (sponsor.logo && failedSrc !== sponsor.logo) { return ( setFailedSrc(sponsor.logo ?? '')} /> ); } return ( ); } export default function SponsorCard({ sponsor, variant = 'banner', onClose }: SponsorCardProps) { const { t, i18n } = useTranslation(); const lang = i18n.resolvedLanguage || i18n.language || 'en'; const title = pickLocale(sponsor.title, lang) || sponsor.name; const text = pickLocale(sponsor.text, lang); const tag = t('pages.sponsors.tag'); return (
{variant !== 'banner' && {tag}} {title} {text && {text}} {variant === 'banner' && ( {tag} {t('pages.sponsors.visit')} )} {variant === 'card' && ( {t('pages.sponsors.visit')} )} {onClose && ( )}
); }