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.

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.

Article Card

An article card with cover image, category chip, excerpt, and author row for blog and news grids.