# Blog Author

> An author's bio and stats beside their essay archive.

A shadcn/ui block from the [@blockforge](https://blockforge.terravidhal.me) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/blockforge/blog-author).

- Page, with a live preview: https://shadcn.exchange/r/blockforge/blog-author
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/blockforge/blog-author-light-9a1966dbee875972.png
- Registry item: https://blockforge.terravidhal.me/r/blog-author.json
- Categories: blog
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://blockforge.terravidhal.me/r/blog-author.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Files

### `registry/blocks/blog-author.tsx`

```tsx
import Link from "next/link";

const posts = [
  {
    title: "Ship the smallest thing that teaches you something",
    date: "2026-06-30",
    reading: "5 min",
  },
  {
    title: "Feature flags are a liability with good marketing",
    date: "2026-06-11",
    reading: "9 min",
  },
  {
    title: "Notes on interviewing senior engineers",
    date: "2026-05-27",
    reading: "12 min",
  },
  {
    title: "The case for boring deploys",
    date: "2026-05-02",
    reading: "7 min",
  },
];

export default function BlogAuthor() {
  return (
    <section className="bg-background">
      <div className="mx-auto grid w-full max-w-4xl gap-12 px-6 py-20 sm:py-24 lg:grid-cols-[1fr_2fr]">
        {/* Author card */}
        <aside>
          <span className="flex size-16 items-center justify-center rounded-full bg-muted font-mono text-lg font-semibold text-muted-foreground">
            NB
          </span>
          <h2 className="mt-4 text-xl font-semibold tracking-tight">
            Nadia Bello
          </h2>
          <p className="mt-1 text-sm text-muted-foreground">
            Co-founder & CEO. Writes about building small, durable software
            companies — one essay a month, no growth hacks.
          </p>
          <dl className="mt-5 flex gap-6 border-t border-border/60 pt-4 font-mono text-xs text-muted-foreground">
            <div>
              <dd className="text-base font-semibold text-foreground tabular-nums">
                42
              </dd>
              <dt>essays</dt>
            </div>
            <div>
              <dd className="text-base font-semibold text-foreground tabular-nums">
                7 yrs
              </dd>
              <dt>writing</dt>
            </div>
          </dl>
        </aside>

        {/* Posts */}
        <div>
          {posts.map((post, index) => (
            <article
              key={post.title}
              className={index > 0 ? "border-t border-border/60" : ""}
            >
              <Link
                href="#"
                className="group flex items-baseline justify-between gap-6 py-5"
              >
                <div>
                  <h3 className="font-medium text-balance group-hover:underline group-hover:underline-offset-4">
                    {post.title}
                  </h3>
                  <p className="mt-1 font-mono text-xs text-muted-foreground">
                    {post.reading}
                  </p>
                </div>
                <time className="shrink-0 font-mono text-xs text-muted-foreground tabular-nums">
                  {post.date}
                </time>
              </Link>
            </article>
          ))}
        </div>
      </div>
    </section>
  );
}
```
