Product Card

Atlas Field Watch-22%

Atlas Field Watch

4.8
$249$320
About this component

Product Card

A product card with image, price, discount badge, wishlist toggle, and add to cart action for shop grids.

Usage

The import and the props worth knowing about, in one place.

import { Card4 } from "@/components/beste/component/card4";

// Image and name link to href; heart and CTA stay independently clickable.
<Card4
  src="/products/watch.jpg"
  name="Atlas Field Watch"
  price="$249"
  compareAt="$320"   // struck-through original price
  badge="-22%"       // corner badge
  rating={4.8}
  href="/products/atlas-field-watch"
  onAdd={() => console.log("added to cart")}
  onWishlist={(on) => console.log("wishlist", on)}
/>

<Card4
  src="/products/lamp.jpg"
  name="Dune Desk Lamp"
  price="$89"
  ctaLabel="Buy now"
  tone="primary"   // CTA: "dark" (default) | "primary"
  onAdd={() => console.log("buy now")}
/>

Playground

Turn the props on the right; the snippet under them is what you would write to get what you see.

Atlas Field Watch-22%

Atlas Field Watch

4.8
$249$320
Usage
import { Card4 } from "@/components/beste/component/card4";

<Card4
  src="https://images.unsplash.com/photo-1782231609423-e3cbc454d761?q=80&w=1287&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
  name="Atlas Field Watch"
  price="$249"
  compareAt="$320"
  badge="-22%"
  rating={4.8}
/>

Keyboard and gestures

Every one of these is in the component already. They are listed because a props table cannot mention a gesture, so nothing else on this page can tell you they exist.

HoverThe card lifts and the image scales inside its frame; `motion-reduce` turns the movement off.

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
src*stringProduct image URL
name*stringProduct name
price*stringCurrent price (e.g. "$249")
compareAtstringOriginal price, rendered struck through (e.g. "$320")
badgestringCorner badge (e.g. "New" or "-22%")
ratingnumberRating value shown next to a star (e.g. 4.8)
hrefstringIf set, the image and name link to this href
ctaLabelstringCTA label (defaults to "Add to cart")
onAddReact.MouseEventHandler<HTMLButtonElement>CTA click handler
onWishlist(wishlisted: boolean) => voidCalled when the wishlist heart is toggled
tone"dark" | "primary"CTA tone
classNamestringAdditional classes merged onto the root

More Card components

View all Card
Orbit One

Orbit One

$189

Shop now

Product Overlay Card

A product card with a full bleed photo, overlaid name and price, and a floating pill button.

LUMO

LUMO

Field Camera

Launching Friday

Join the waitlist

Join list

Product Teaser Card

A portrait product teaser card with brand header, availability footer, and a pill button for coming soon pages.

Most popular

Pro

$19/month

For freelancers shipping client sites.

  • Unlimited projects
  • 1,400+ blocks and components
  • Lifetime updates
  • Priority support

No credit card required

Pricing Card

A complete pricing card with feature list, highlighted state, floating badge, and call to action.

Join the beta program

We are opening a short testing window for the new builder. Help shape it before launch.

Only 25 seats

Applications close Jul 18.

Request access

Promo Card

A dismissible promo card with image, deadline line, and apply button for programs and offers.

Ship in minutes

Copy a block, wire up your content, and deploy. No boilerplate, no configuration, no lock in.

Learn more

Spotlight Feature Card

A feature card with an icon tile and a cursor tracking spotlight for landing page feature grids.

Beste StudioThe Component HandbookSecond edition

Book Cover Card

A 3D book cover card that swings open on hover to reveal page edges for ebooks, guides, and lead magnets.