Files
admin-panel-hokm/components/Thumb.tsx
T
2026-08-07 09:40:16 +03:30

45 lines
1.0 KiB
TypeScript

"use client";
import { useState } from "react";
import { ImageOff } from "lucide-react";
/** پیش‌نمایشِ تصویر با جایگزینِ خطا. اگر src بارگذاری نشود، آیکنِ «بدون تصویر». */
export default function Thumb({
src,
alt = "",
size = 44,
rounded = 8,
}: {
src: string;
alt?: string;
size?: number;
rounded?: number;
}) {
const [failed, setFailed] = useState(false);
if (failed) {
return (
<div
className="grid place-items-center text-[#4a6ea5] bg-[var(--panel-2)]"
style={{ width: size, height: size, borderRadius: rounded }}
>
<ImageOff size={size * 0.45} />
</div>
);
}
return (
// eslint-disable-next-line @next/next/no-img-element
<img
src={src}
alt={alt}
onError={() => setFailed(true)}
style={{
width: size,
height: size,
borderRadius: rounded,
objectFit: "cover",
border: "1px solid #1e3a63",
}}
/>
);
}