'use client'; import * as React from 'react'; import { ImageOff } from 'lucide-react'; import { cn } from '@/lib/utils'; import { getFileUrl, type ImageQuality } from '@/lib/services/upload/utils'; import { useTranslations } from 'next-intl'; type FileImagePreviewProps = { fileId: string | number; alt: string; quality?: ImageQuality; className?: string; fallbackClassName?: string; variant?: 'compact' | 'default'; }; export function FileImagePreview({ fileId, alt, quality = 'low', className, fallbackClassName, variant = 'default', }: FileImagePreviewProps) { const [failed, setFailed] = React.useState(false); const src = getFileUrl(fileId, quality); const t = useTranslations('common'); React.useEffect(() => { setFailed(false); }, [fileId, quality]); if (!src || failed) { return (
{variant === 'default' && ( {t('loadFailed')} )}
); } return ( // eslint-disable-next-line @next/next/no-img-element {alt} setFailed(true)} /> ); }