Book Recommendations Grid

What I'm Reading

Books that have shaped my thinking and work.

The Design of Everyday Things book cover

The Design of Everyday Things

Don Norman

Design

Thinking, Fast and Slow book cover

Thinking, Fast and Slow

Daniel Kahneman

Psychology

Atomic Habits book cover

Atomic Habits

James Clear

Productivity

Zero to One book cover

Zero to One

Peter Thiel

Business

About this block

Book Recommendations GridFREE

Grid of book cards displaying cover images, titles, authors, star ratings, and category badges. Perfect for sharing reading lists and book recommendations on personal sites.

Portfolio70: Book Recommendations Grid

Grid of book cards for a reading list, each showing a portrait cover image, title, subtitle, a five-star rating, and an optional category badge.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/portfolio70"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/portfolio70"

This installs the block to components/beste/block/portfolio70.tsx and its dependencies.

Quick start

The installed file exports portfolio70Demo alongside the block: the exact props behind the preview above. Spread it to get a working reading-list grid in one line.

tsx
import { Portfolio70, portfolio70Demo } from "@/components/beste/block/portfolio70";

export default function ReadingPage() {
  return <Portfolio70 {...portfolio70Demo} />;
}

Then replace the demo with your own props. Written out, the same setup looks like this:

tsx
import { Portfolio70 } from "@/components/beste/block/portfolio70";

export default function ReadingPage() {
  return (
    <Portfolio70
      heading="Currently reading"
      description="A few books worth your time this quarter."
      items={[
        {
          title: "Deep Work",
          subtitle: "Cal Newport",
          image: { src: "https://images.unsplash.com/photo-1543002588-bfa74002ed7e?w=400&h=600&fit=crop", alt: "Deep Work book cover" },
          rating: 5,
          badge: "Productivity",
        },
        {
          title: "The Pragmatic Programmer",
          subtitle: "Hunt & Thomas",
          image: { src: "https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?w=400&h=600&fit=crop", alt: "The Pragmatic Programmer book cover" },
          rating: 4,
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
headingstringSection heading
descriptionstringSection intro text
itemsBookItem[][]Book cards rendered in the grid
classNamestringExtra classes for the outer <section>
ts
type BookItem = {
  title: string;
  subtitle?: string;
  image: { src: string; alt: string };
  rating: number;
  badge?: string;
};

Behavior notes

  • Ratings render as five Star icons; item.rating fills stars via i < item.rating on a zero-based loop, so non-integer ratings fill the same number of whole stars a Math.floor would (partial stars aren't supported).
  • The cover image sits in a fixed h-44 w-28 box and scales on hover (group-hover/portfolio70:scale-105), while the whole card also picks up a hover:bg-muted/50 background change.
  • The demo images are hosted on oud.pics rather than Unsplash; swap image.src for any accessible cover URL.
  • badge renders as plain muted caption text below the stars, not a shadcn Badge component, and only appears when set.

More Portfolio blocks

View all Portfolio
PRO

portfolio101

Project Showcase Grid

Portfolio grid of project cards with hover-zoom imagery, numbered titles, category tags and a seal arrow link.

PRO

portfolio89

Collaboration Partners Grid

Grid of partner cards featuring circular avatars, names, roles, skill badges, and clickable links. Perfect for showcasing team members, collaborators, or professional network.

PRO

portfolio114

Uniform project card grid

A monochrome three-column grid of uniform project cards, each pairing an image with a title, client / year / service chips, and a link to the case.

PRO

portfolio107

Filterable Project Grid

Selected-work section with a row of category filter tabs that filter a monochrome project grid client-side; each card links out to the project.

PRO

portfolio106

Filtered Work Tabs

Discipline-tabbed project gallery using shadcn Tabs with a grid of cards per category.

PRO

portfolio110

Featured project + grid

One large featured project with image, category, and title, followed by a row of smaller project cards. Monochrome studio styling.