Skip to content

shadcn.io is an independent project built on shadcn/ui

Wholesale Product Card Block for Ark UI

A case of kraft mailers with a quantity box that rounds up to whole cases and marks the active row of the price table, then shows the unit price, the total and what a few more cases would save.

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Show trade pricing on a single product with this wholesale product card for React with Ark UI. A hairline frame holds a drawn greyscale stack of mailers with stock in words and, in a side cell with its own divider, a quantity box with one-case steppers, a small price table and the total. Type a quantity of 24 or more and the table marks the row it falls in: 24 to 95 at $0.62, 96 to 287 at $0.55, 288 and up at $0.48. A line under the box says what a typed number rounds to, or how many more mailers cut the unit price and by how much. The single Shine Button "Add to order" turns into "Added" with an Undo. Guides rule the bands. For packaging, supplies and other goods sold by tier.

FAQ

Where do the tiers come from?

From the typed TIERS array: a start quantity and a unit price in cents. The active row, the unit price, the total and the "add N more" line are all derived from it, so editing a tier changes all four.

What happens to a quantity that is not a whole case?

It rounds up to the next case of 6, is held between 24 and 3,000, and the line under the box says so ("Sold in cases of 6, so 20 rounds to 24"). The box settles to that number when it loses focus or on Enter.

Why a text box instead of a number input?

The tier must follow every keystroke. A plain numeric text box with its own parsing does that the same on every base, and the steppers move by one case.

What stays local, and how do I wire it for real?

The quantity, the order and the status line are page state; the ship date is typed. Nothing is stored, charged or sent. Replace add and undo with calls to your order API and price the order on the server from the same tiers.

How does it look on a phone?

The picture comes first, then the quantity box, the table and the total stacked under it; the side cell's divider becomes a rule.

Is it accessible?

The box has a visible label and is described by the rounding line. The active row carries aria-current, the table has a caption, and the status line announces each change.