Item cards

Card components for displaying marketplace items in grids.

Default

Vintage leather bag

CoachGood

R$ 12.000,00

Silk floral dress

ZaraMLike new

R$ 8.500,00

Classic sneakers

Nike42Good

R$ 20.000,00

Denim jacket oversized

Levi'sGVery good

R$ 15.000,00

The item card displays a product image in 4:5 aspect ratio, item name, brand/size/condition metadata, and price. Used in grids across the marketplace.

States

Default

Vintage leather bag

CoachGood

R$ 12.000,00

No image

Vintage leather bag

CoachGood

R$ 12.000,00

No brand / no size

Vintage leather bag

Good

R$ 12.000,00

Custom brand name

Vintage leather bag

HandmadeGood

R$ 12.000,00

Free shipping

Silk floral dress

ZaraMLike new

R$ 8.500,00

Favorited

Classic sneakers

Nike42Good

R$ 20.000,00

With actions

Vintage leather bag

CoachGood

R$ 12.000,00

Cards handle missing images with a placeholder, custom brand names as fallback, free shipping pricing, pre-favorited state, and action buttons with view/edit/delete.

Status variants

Available

Vintage leather bag

CoachGood

R$ 12.000,00

Sold

Sold

Vintage leather bag

CoachGood

R$ 12.000,00

Shipped

Shipped

Vintage leather bag

CoachGood

R$ 12.000,00

Delivered

Delivered

Vintage leather bag

CoachGood

R$ 12.000,00

Draft

Draft

Vintage leather bag

CoachGood

R$ 12.000,00

Cards show a status badge overlay when the item is not available. Cancelled items hide the price. Each status uses its configured badge variant and label from the centralized item status config.

Draft variant

Draft with actions

Draft

Draft Item

CoachGood

R$ 12.000,00

Draft without image

Draft Item

CoachGood

R$ 12.000,00

Draft with details

Draft

Silk floral dress

ZaraMLike new

R$ 8.500,00

With seller hover

Vintage leather bag

CoachGood

R$ 12.000,00

Draft items auto-detect from item.status === "draft" and link to the edit page. Include <ItemCardActions> for "Continue editing" + delete buttons. The showSeller prop controls whether seller info appears on hover.

Grid layouts

4 columns (default)

Vintage leather bag

CoachGood

R$ 12.000,00

Silk floral dress

ZaraMLike new

R$ 8.500,00

Classic sneakers

Nike42Good

R$ 20.000,00

Denim jacket oversized

Levi'sGVery good

R$ 15.000,00

2 columns

Vintage leather bag

CoachGood

R$ 12.000,00

Silk floral dress

ZaraMLike new

R$ 8.500,00

The items grid supports 2 to 6 columns with responsive breakpoints. It starts at 2 columns on mobile and scales up.

Compound API

ComponentPropsDescription
<ItemCard>item, locale?, showSeller?Root provider. Computes URL, image, pricing, and shares via context.
<ItemCardImage>children?Image area with link. Overlay children (Favorite, Status) are positioned absolutely.
<ItemCardFavorite>isFavorite, toggleActionControlled heart button. Caller owns favorite state and toggle logic.
<ItemCardStatus>Status badge overlay. Auto-shows/hides based on item.status.
<ItemCardContent>childrenText area wrapper. Handles seller hover animation when showSeller is true.
<ItemCardTitle>Linked item name. Truncates with ellipsis.
<ItemCardAttributes>Brand, size, condition metadata row.
<ItemCardPrice>Formatted price. Auto-hides for cancelled items.
<ItemCardSeller>Composition marker. Seller overlay is rendered by ItemCardContent when showSeller is true.
<ItemCardActions>deleteActionEdit/delete actions. Draft items show "Continue editing" + delete. Non-deletable statuses hide the delete button.

Item data shape

FieldTypeDescription
idstringUnique item ID
publicIdnumberPublic-facing numeric ID used in URLs
namestringItem title displayed on card
descriptionstring | nullOptional item description
pricenumberPrice in cents
slugstring | nullURL-friendly slug, appended to /items/publicId-
imageUrlstring | nullLegacy fallback image URL (used when itemImages is empty)
itemImagesArray | nullOrdered image array with url, altText, and rotation. First image is used as cover.
brand{ name } | nullBrand from brands table
customBrandNamestring | nullFree-text brand name fallback when brand is null
condition{ name } | nullItem condition (new, like new, good, fair, poor)
sizeLabelstring | nullSize displayed in the metadata row (e.g. "M", "42", "G")
deliveryCostnumber | nullDelivery cost in cents
freeShippingboolean | nullWhen true, delivery cost is excluded from price
favoritesCountnumber | nullNumber of favorites for the heart button
statusstringItem status (available, sold, reserved, shipped, delivered, draft, cancelled). Drives URL, StatusBar, Price visibility, and Actions layout.