Capability Carousel

Capabilities

A toolkit for every surface you ship

Swipe through the assets that come prebuilt. Each card is a real component you can drop into any block media slot.

Search anything...

Lightning-fast search

A type-aware search field with a keyboard hint, ready for any command palette.

Mon
24°15°
Tue
22°14°
Wed
18°12°
Thu
19°13°
Fri
25°16°

Forecasts that read at a glance

Compact weekly weather widget with semantic icons and tabular numbers.

const greeting = "Hello, Beste!";ts

Code in the marketing copy

Inline snippet for tutorials, release notes, and developer onboarding.

Quick search
K

Shortcuts that travel

Keyboard hints styled to match the rest of your interface, no extra spacing fiddling.

What's the capital of Japan?
Tokyo. It's been the capital since 1868, after Kyoto held the title for over a thousand years.

Conversation that ships in-product

User and assistant bubbles styled to match your interface. Drop them into help docs, onboarding, or marketing demos without rebuilding chat chrome.

search_docs
done
query:"rate limiting"
limit:5

Show the model at work

Tool-call cards reveal what the agent is actually doing — function name, arguments, status — without leaking the full transcript.

About this block

Capability CarouselFREE

Looping carousel of capability cards with a centered media slot per card. Each slot accepts an image, video, or live registry-component asset.

Centered header with a badge, heading, description, and CTA buttons, above a looping shadcn Carousel of capability cards. Each card's media slot follows the Media Slot Standard, and every card in the shipped demo fills it with a live registry-piece asset over a photographic background.

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/feature8"

Base UI flavor

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

This installs the block to components/beste/block/feature8.tsx, the shadcn/ui badge, button, and carousel components it depends on, and the ai8, ai22, code1, keyboard1, search1, and weather2 pieces it embeds as media-slot fillers (installed to components/beste/piece/{name}.tsx).

Quick start

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

tsx
import { Feature8, feature8Demo } from "@/components/beste/block/feature8";

export default function Page() {
  return <Feature8 {...feature8Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup mixing an image card and a live-asset card looks like this:

tsx
import { Search1 } from "@/components/beste/piece/search1";
import { Feature8 } from "@/components/beste/block/feature8";

export default function Page() {
  return (
    <Feature8
      badge={{ label: "Capabilities", variant: "outline" }}
      heading="A toolkit for every surface you ship"
      description="Swipe through the assets that come prebuilt."
      buttons={[{ label: "Browse all assets", href: "/components" }]}
      items={[
        {
          title: "Lightning-fast search",
          description: "A type-aware search field with a keyboard hint.",
          media: { type: "component", component: <Search1 placeholder="Search anything..." shortcut={["", "K"]} /> },
        },
        {
          title: "See it in the product",
          description: "A screenshot of the finished search experience.",
          media: {
            type: "image",
            src: "https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1200&h=900&fit=crop",
            alt: "Product dashboard on a laptop",
          },
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Badge above the heading
headingstringSection heading
descriptionstringSection intro text
buttonsButtonItem[][]CTA buttons under the description
itemsCarouselItemData[][]Carousel cards
classNamestringExtra classes for the outer <section>
ts
type ButtonItem = {
  label: string;
  href?: string;
  variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};

type CarouselItemData = {
  title: string;
  description: string;
  media: ItemMedia;
};

type ItemMedia =
  | { type: "image"; src: string; alt?: string }
  | { type: "video"; src: string; alt?: string }
  | {
      type: "component";
      component: React.ReactNode;
      background?: ComponentBackground;
    };

type ComponentBackground =
  | { type: "dots" }
  | { type: "none" }
  | { type: "image"; src: string; alt?: string }
  | { type: "video"; src: string; alt?: string };

Behavior notes

  • The carousel loops (opts={{ loop: true, align: "center" }}), so dragging past the last card wraps back to the first; the dot indicators below the carousel exactly mirror items.length.
  • activeIndex state tracks the Carousel API's "select" event via a useEffect that calls api.on/api.off; clicking a dot calls api.scrollTo(index) to jump straight to that card.
  • Visible-card count scales with viewport: basis-4/5 on mobile shows one card with the next peeking in, md:basis-1/2 shows two, lg:basis-1/3 shows three.
  • The media surface sits above the card body inside a border-b strip, while the outer card itself is overflow-hidden rounded-md border, so only the card's outer corners are rounded and the media area reads as a flat top section.
  • Every item in the shipped demo uses the component media variant with an explicit background: { type: "image", ... }, giving each card a photographic backdrop behind its embedded piece instead of the default dotted grid.

More Feature blocks

View all Feature
PRO

feature173

Feature Card Carousel with Image Crossfade

Single-card carousel with crossfading images, arrow navigation, and dot progress indicators. Each slide shows a full-width image with icon, title, and description below. Click or navigate to browse features.

FREE

feature9

Three-Step How-To

Three side-by-side step cards with a media surface anchored to the bottom of each card. Each slot accepts an image, video, or live registry-component asset.

PRO

feature257

Capability Selector

An interactive feature where a hairline list of four capabilities swaps the image tile beside it, each one floating a different live asset with its own supporting paragraph.

FREE

feature194

Three Cards With Asset Media

Three feature cards that swap an icon for a real micro-asset: a bar chart, a before/after stat, and a terminal prompt. Demonstrates how registry-pieces drop into block media slots.

PRO

feature204

Feature with Image Carousel and Lightbox Modal

Centered header followed by a side-by-side image carousel (3 visible on desktop, 2 on tablet, 1 on mobile) with prev/next arrows and dots. Tap an item to open a full-size modal lightbox with its own navigation.

PRO

feature170

Expandable Accordion Cards with Image

Click-to-expand feature cards with smooth grid-rows animation. Each card reveals a detailed description and preview image when opened. Only one card expanded at a time. Compact yet information-rich.