import Link from "next/link"; import Image from "next/image"; import { urlFor } from "@/lib/sanityImage"; import type { SanityImageSource } from "@sanity/image-url"; export type ReleaseCardData = { _id?: string; name?: string; albumArtist?: string; catalogNo?: string; releaseDate?: string; slug?: string; albumCover?: SanityImageSource; }; type Props = { release: ReleaseCardData; href?: string; className?: string; }; function formatReleaseMonth(dateString?: string) { if (!dateString) return null; return new Intl.DateTimeFormat("en-US", { month: "short", year: "numeric", }).format(new Date(dateString)); } export function ReleaseCard({ release, href, className = "" }: Props) { const url = href ?? (release.slug ? `/release/${release.slug}` : "#"); const coverSrc = release.albumCover ? urlFor(release.albumCover).url() : null; return (
{coverSrc ? ( { ) : (
)}

{release.name}

{release.albumArtist}

{release.catalogNo} {formatReleaseMonth(release.releaseDate)}
); }