@@ -198,9 +200,10 @@ export default function EditScheduledPostDialog({ open, onOpenChange, scheduledP
className="relative group"
data-testid={`button-select-media-${media.id}`}
>
-

to show first frame
+ * - Images: standard
![]()
with lazy loading
+ * - Broken/unavailable URLs: shows a placeholder icon
+ */
+export function MediaThumbnail({ src, alt, type, className = "w-full h-full object-cover" }: MediaThumbnailProps) {
+ const [error, setError] = useState(false);
+ const isVideo = type === 'video' || isVideoUrl(src);
+
+ if (error || !src) {
+ return (
+
+ {isVideo
+ ?
+ :
+ }
+
+ );
+ }
+
+ if (isVideo) {
+ return (
+