CardsStable

Product Card

Sourcecomponents/cards/ProductCard.astro

The card

A shop offering — an image with a floating category tag, then a title, a short description, and a footer pairing a "from" price with a request Button. The tag is a Badge on a white chip. Used across the Shop.

product card
Printprodukte

Visitenkarten

Hochwertige Visitenkarten, individuell gestaltet für einen bleibenden ersten Eindruck.

ab CHF 250.- Anfragen

Built from

  • Badge — the category tag (a white chip with violet text).
  • Button — the primary "Anfragen" CTA.

Props

PropTypeDefaultNotes
title string — The offering name. Required.
description string — A short line under the title.
category string — The floating tag, top-left on the image.
image string — The product image.
price string — Pre-formatted, e.g. "ab CHF 250.-".
ctaLabel / ctaHref string 'Anfragen' The request Button and its destination.
href string — Optional: makes the media a link (image zooms on hover).

Usage

Prices are passed pre-formatted — the card never does maths. Drop cards into a responsive grid (see the Shop).

<ProductCard
  title="Visitenkarten"
  category="Printprodukte"
  image="/img/visitenkarte.webp"
  description="Hochwertige Visitenkarten, individuell gestaltet …"
  price="ab CHF 250.-"
  ctaLabel="Anfragen" ctaHref="/kontakt"
/>

Rules

Do

Keep the description to one short line.

Tag every card with its category — it drives the filter.

Don't

Put two CTAs on it — one request Button.

Compute prices in the card — pass them formatted.