manufacturers: never-empty image cascade for coverage cards

Recent Coverage cards used to show a gray box when an article had no
featured_image (common for older WP imports). Now cascade:
article.featured_image → company.logo_url → /assets/images/article-placeholder.svg
so the card never goes blank.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ryan Salazar
2026-05-29 15:28:48 +00:00
parent dd2a8c8da7
commit cbdf61073f

View File

@@ -413,12 +413,16 @@ export default async function ManufacturerProfile({
href={`/news/${r.wp_slug}`}
className="group bg-[#0d0d0d] border border-[#252525] rounded-md p-3 hover:border-[#3b82f6] hover:shadow-sm transition-all flex gap-3"
>
{r.featured_image ? (
/* eslint-disable-next-line @next/next/no-img-element */
<img src={r.featured_image} alt="" className="w-20 h-14 rounded object-cover bg-[#1a1a1a] flex-shrink-0" loading="lazy" />
) : (
<div className="w-20 h-14 rounded bg-[#1a1a1a] flex-shrink-0" />
)}
{/* Image fallback cascade — Ryan rule: never show an empty
gray box on a coverage card. Falls through:
article featured_image → company logo → static placeholder. */}
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src={r.featured_image || company.logo_url || '/assets/images/article-placeholder.svg'}
alt=""
className="w-20 h-14 rounded object-cover bg-[#1a1a1a] flex-shrink-0"
loading="lazy"
/>
<div className="min-w-0">
<h3 className="text-xs font-semibold text-[#e0e0e0] leading-snug group-hover:text-[#3b82f6] line-clamp-3">
{r.title}