Book Recommendations Grid

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.

FREE

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

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

portfolio110

Featured project + grid

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

PRO

portfolio106

Filtered Work Tabs

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