"use client"; import { useState } from "react"; import type { ImageAltData } from "@/app/actions"; import { Checkbox } from "@/components/ui/checkbox"; import { Label } from "@/components/ui/label"; import { Badge } from "@/components/ui/badge"; import { ImageOff } from "lucide-react"; interface ImageAltDisplayProps { images: ImageAltData[]; } export function ImageAltDisplay({ images }: ImageAltDisplayProps) { const [showMissingOnly, setShowMissingOnly] = useState(false); const [imageErrors, setImageErrors] = useState>({}); const missingAltCount = images.filter((img) => !img.alt).length; const filteredImages = showMissingOnly ? images.filter((img) => !img.alt) : images; const handleImageError = (src: string) => { setImageErrors((prev) => ({ ...prev, [src]: true })); }; return (
setShowMissingOnly(!!checked)} />
{missingAltCount > 0 ? (

{missingAltCount} of{" "} {images.length} images are missing alt text.

) : (

Great! All {images.length} images have alt text.

)}
{filteredImages.map((image, index) => (
{imageErrors[image.src] ? ( ) : ( {image.alt handleImageError(image.src)} /> )}

{image.src}

{image.alt ? (

Alt: {image.alt}

) : ( Missing alt text )}
))}
); }