# Bento Features

> A bento grid of product feature tiles mixing photography, gradient figures, and short claims.

A shadcn/ui block from the [@esuiss](https://suiss.app/ui?utm_source=shadcn.exchange) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/esuiss/bento-features).

- Page, with a live preview: https://shadcn.exchange/r/esuiss/bento-features
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/esuiss/bento-features-light-3842d3707a6f7dfd.png
- Registry item: https://suiss.app/ui/r/new-york-v4/bento-features.json
- Categories: blocks, bento
- Listed: 2026-10-20, source last changed 2026-10-20

## Install

```bash
npx shadcn@latest add https://shadcn.exchange/r/esuiss/bento-features.json
```

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

## Files

### `components/blocks/bento-features.tsx`

```tsx
import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"

const photo = (id: string, width: number) =>
  `https://images.unsplash.com/photo-${id}?w=${width}&q=80&auto=format&fit=crop`

export function BentoFeatures() {
  return (
    <section className="flex flex-col gap-5 bg-muted p-5 md:p-8">
      <h2 className="text-4xl font-semibold tracking-tight md:text-5xl">
        Why Phone Pro?
      </h2>
      <div className="grid gap-4 md:grid-cols-4 md:grid-rows-[repeat(2,minmax(15.5rem,auto))]">
        <div className="flex min-h-96 flex-col overflow-hidden rounded-3xl bg-background md:col-span-2 md:row-span-2">
          <div className="flex flex-col gap-1.5 p-6.5">
            <h3 className="text-xl leading-tight font-semibold tracking-tight">
              Fusion camera system.
            </h3>
            <p className="text-base text-muted-foreground">
              Three 48 MP cameras. 8x optical-quality zoom.
            </p>
          </div>
          <img
            src={photo("1695083691065-4f77dfd0f0d5", 900)}
            alt="A close-up of a camera lens"
            className="min-h-0 w-full flex-1 bg-secondary object-cover"
          />
        </div>
        <div className="flex flex-col gap-2.5 rounded-3xl bg-background p-6.5">
          <IconPlaceholder
            lucide="CpuIcon"
            tabler="IconCpu"
            hugeicons="CpuIcon"
            phosphor="CpuIcon"
            remixicon="RiCpuLine"
            className="size-7.5 text-orange-500"
          />
          <p className="bg-linear-to-r from-orange-500 to-red-500 bg-clip-text text-4xl leading-none font-bold tracking-tighter text-transparent">
            S19 Pro
          </p>
          <p className="text-xl leading-tight font-semibold tracking-tight text-muted-foreground">
            The fastest chip ever in a phone.
          </p>
        </div>
        <div className="flex flex-col gap-2.5 rounded-3xl bg-background p-6.5">
          <IconPlaceholder
            lucide="BatteryFullIcon"
            tabler="IconBattery4"
            hugeicons="BatteryFullIcon"
            phosphor="BatteryFullIcon"
            remixicon="RiBatteryFill"
            className="size-7.5 text-green-500"
          />
          <p className="bg-linear-to-r from-green-500 to-teal-500 bg-clip-text text-4xl leading-none font-bold tracking-tighter text-transparent">
            33 hrs
          </p>
          <p className="text-xl leading-tight font-semibold tracking-tight text-muted-foreground">
            Battery life for video playback.
          </p>
        </div>
        <div className="grid min-h-62 grid-cols-2 overflow-hidden rounded-3xl bg-background md:col-span-2">
          <div className="flex flex-col justify-between gap-4 p-6.5">
            <h3 className="text-xl leading-tight font-semibold tracking-tight text-[color-mix(in_oklab,var(--color-orange-500),var(--foreground)_45%)] dark:text-orange-500">
              Cosmic Orange.
            </h3>
            <p className="text-base leading-snug text-muted-foreground">
              A unibody aluminum design, in new colors.
            </p>
          </div>
          <img
            src={photo("1714972384975-fbd4f19b1bb3", 700)}
            alt="An orange phone on a warm gradient"
            className="size-full bg-secondary object-cover"
          />
        </div>
      </div>
    </section>
  )
}
```
