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.

FREE

Feature194: Three Cards With Asset Media

Three feature cards where the usual icon slot is swapped for a real, live micro-asset: a bar chart, a before/after stat pair, and a terminal command line, each optionally sitting on its own dotted-grid, image, or video backdrop. This is the reference implementation of the Media Slot Standard: registry-piece components dropped straight into a block's card media.

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

Base UI flavor

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

This installs the block to components/beste/block/feature194.tsx, the chart1, stats5, and terminal1 registry pieces used as media-slot fillers (a bar chart card, a before/after stat pair, and a terminal prompt line, respectively), and the badge and button shadcn/ui primitives it depends on.

Quick start

The installed file exports feature194Demo alongside the block: the exact props behind the preview above. Spread it to get a working three-card layout in one line.

tsx
import { Feature194, feature194Demo } from "@/components/beste/block/feature194";

export default function Page() {
  return <Feature194 {...feature194Demo} />;
}

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

tsx
import { Chart1 } from "@/components/beste/piece/chart1";
import { Feature194 } from "@/components/beste/block/feature194";

export default function Page() {
  return (
    <Feature194
      badge={{ label: "Built for builders", variant: "secondary" }}
      heading="Ship faster, measure everything"
      description="A toolkit that meets your team where it works."
      cards={[
        {
          eyebrow: "Analytics",
          title: "Insights you trust",
          description: "Live dashboards with the metrics that matter.",
          media: {
            type: "component",
            component: <Chart1 label="Sessions" value="8,214" data={[42, 68, 54, 81]} tone="primary" />,
          },
        },
        {
          eyebrow: "Design",
          title: "Crafted for builders",
          description: "A workspace built around how developers actually work.",
          media: {
            type: "image",
            src: "https://images.unsplash.com/photo-1517694712202-14dd9538aa97?w=1200&h=900&fit=crop",
            alt: "Developer workspace with code on screen",
          },
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Optional eyebrow badge above the heading
headingstringSection heading
descriptionstringSection intro text
cardsFeatureCard[][]The three (or more) cards, each with its own eyebrow, title, description, and media slot
buttonsButtonItem[][]Optional CTA row below the card grid
classNamestringExtra classes for the outer <section>
ts
type FeatureCard = {
  eyebrow: string;
  title: string;
  description: string;
  media: CardMedia;
};

type CardMedia =
  | { 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 };

type ButtonItem = {
  label: string;
  href?: string;
  variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};

Behavior notes

More Feature blocks

View all Feature
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

feature243

Compact Asset Cards

A feature with an eyebrow over a hairline rule, a two-column heading, and three bordered cards that each float a compact live micro-asset above a title and description.

PRO

feature192

Hero Card + Grid Cards over Media

Large hero card with image at top followed by three-column feature card grid over background media

PRO

feature191

Tagged Feature Cards with Accent Bar

Three-column feature cards with accent top bar, tag pills, and icon badges over background media

PRO

feature185

Image Feature Cards Grid over Media

Three-column image feature cards grid with sticky header over background media and glass-morphism styling

PRO

feature190

Large Icon Cards with Dividers over Media

Full-width feature cards separated by dividers with large icons and descriptions over background media