Files
zeekay 712a10d0f3 Lead the blog with Zen 6 and its two jobs
The home now says who makes Zen LM, Zoo Labs Foundation, a 501(c)(3)
non-profit, the two jobs it is chosen for, that Zen 6 and Zen 6 Flash
are available now, and that Zen 7 is a research preview with a link
to request access. The footer names the foundation, and "Qwen" leaves
the site keywords.

Posts marked "upstream: true" carry data-upstream on their page, card
and read-more link, and scripts/check-zen.mjs fails the build when a
name from zen.upstream shows anywhere else.

The build stops measuring remote images: fumadocs fetched every one to
read its size, and a single host answering 403 failed the build.
2026-09-30 07:01:46 -07:00

44 lines
1.4 KiB
TypeScript

import Link from "next/link";
import Image from "next/image";
interface BlogCardProps {
url: string;
title: string;
description: string;
date: string;
thumbnail?: string;
upstream?: boolean;
showRightBorder?: boolean;
}
export function BlogCard({ url, title, description, date, thumbnail, upstream }: BlogCardProps) {
return (
<Link
href={url}
data-upstream={upstream ? "" : undefined}
className="group flex flex-col rounded-xl border border-border/50 bg-neutral-900/30 hover:bg-neutral-800/40 hover:border-border transition-all overflow-hidden"
>
{thumbnail && (
<div className="relative w-full h-44 overflow-hidden">
<Image
src={thumbnail}
alt={title}
fill
className="object-cover transition-transform duration-300 group-hover:scale-105"
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
/>
</div>
)}
<div className="p-5 flex flex-col gap-2 flex-1">
<h3 className="text-base font-semibold text-foreground group-hover:text-foreground/90 leading-snug">
{title}
</h3>
<p className="text-sm text-muted-foreground leading-relaxed line-clamp-2 flex-1">
{description}
</p>
<time className="text-xs text-muted-foreground/60 mt-1">{date}</time>
</div>
</Link>
);
}