Photo Band Command

A wide bay of bright blue water between rocky headlands

Built into the tools you have

Nonewapp.Onemorethingyouragentknows.

The command adds a single MCP entry to the agent you already run. From then on the library is just there, in every project.

Read the docs

Claude Code, Cursor, Codex

Detects which agents are installed and registers with each of them.

Any framework

Next, Remix, Astro or plain React. Sections are ordinary components.

Your repository

Nothing is hosted for you. Everything lands as files you own.

About this block

Photo Band CommandPRO

A rounded photographic band inside the container: the photo blurs in and drifts on scroll under a scrim and film grain, a serif headline settles in word by word, then a frosted pill that copies the install command on click beside a light sliding-marker pill, and a ruled row of three short points along the bottom.

Feature297: Photo Band Command

A rounded photographic band set inside the container: the picture drifts behind a scrim and film grain while the command sits in a frosted pill, with three short points ruled along the foot.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/feature297?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/feature297?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/feature297.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.

Quick start

The installed file exports feature297Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.

tsx
import { Feature297, feature297Demo } from "@/components/beste/block/feature297";

export default function Page() {
  return <Feature297 {...feature297Demo} />;
}

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

tsx
import { Feature297 } from "@/components/beste/block/feature297";

export default function Page() {
  return (
    <Feature297
      eyebrow="Built into the tools you have"
      heading="No new app. One more thing your agent knows."
      description="The command adds a single entry to the agent you already run."
      image={{ src: "/photos/headland.jpg", alt: "A wide bay of bright blue water between rocky headlands" }}
      command="npx your-cli@latest"
      copyLabel="Copy command"
      copiedLabel="Copied"
      buttons={[{ label: "Read the docs", href: "/docs", tone: "light" }]}
      points={[{ title: "Any framework", description: "Sections are ordinary components." }]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Small-caps line above the heading
headingstring–Section heading, through Text1
descriptionstring–Paragraph under the heading
image{ src: string; alt: string }–Photograph filling the band
commandstring–The install command; clicking the pill copies it
copyLabelstring–Accessible name for the pill in its resting state
copiedLabelstring–Accessible name and live-region text once copied
buttonsActionButton[][]Pill actions beside the command
pointsPoint[][]Short points ruled along the foot
classNamestring–Extra classes for the outer <section>
ts
type Point = {
  title: string;
  description: string;
};

type ActionButton = {
  label: string;
  href: string;
  tone?: "primary" | "light" | "dark" | "outline";
};

Behavior notes

  • The band sits inside the container rather than bleeding to the viewport edges, so it reads as a panel on the page instead of a second full-width section.
  • The picture is scaled to 125 percent, more headroom than the full-bleed heroes need because the band is shorter and the same travel covers proportionally more of it.
  • Its scroll target is the band itself, not the section, so the parallax is measured against the element you can actually see moving.
  • The scrim is heavier in the middle than the hero scrims at foreground/45, because text runs across the whole width here rather than sitting in a bottom corner.
  • Grain uses an inline feTurbulence filter whose id comes from useId, so two banded blocks on one page never share a filter.
  • Everything on the band uses fixed background tokens, since the surface is a photograph in both themes.
  • The points row is ruled off with a border in background/20 rather than the theme border token, which would disappear against the picture.

More Feature blocks

View all Feature
PRO

feature279

Photo Band Feature

PRO

feature296

Sticky Command List

PRO

feature291

Photo Tiles

Get Pro access