import { MagicCard } from "@/components/magicui/magic-card" import { BASE_URL } from "@/constants" import type { Icon } from "@/types/icons" import Image from "next/image" import Link from "next/link" import { useState } from "react" import { AlertTriangle } from "lucide-react" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" export function IconCard({ name, data: iconData, matchedAlias, }: { name: string data: Icon matchedAlias?: string }) { const [isLoading, setIsLoading] = useState(true) const [hasError, setHasError] = useState(false) // Construct URLs for both WebP and the original format const webpSrc = `${BASE_URL}/webp/${name}.webp` const originalSrc = `${BASE_URL}/${iconData.base}/${name}.${iconData.base}` const handleLoadingComplete = () => { setIsLoading(false) setHasError(false) } const handleError = () => { setIsLoading(false) setHasError(true) } return (
{isLoading && !hasError && (
)} {hasError ? (

Image failed to load, likely due to size limits. Please raise an issue on GitHub.

) : ( {`${name} )}
{name.replace(/-/g, " ")} {matchedAlias && Alias: {matchedAlias}} ) }