Skip to content

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

Wine Product Card Block for Svelte

Three wine bottles with a pairing finder: choose red meat, fish, pasta, cheese or spicy food and each bottle says whether it pairs well and why, with body, tannin and acidity as five-dot rows.

UI library: Ark UI

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

Answer "what goes with dinner?" on the card itself with this wine product card for Svelte with Ark UI. A hairline frame with a plus mark on each corner holds three bottles between shared hairlines, each marked at its corners by Guides. A Toggle Group at the end of the header asks what is for dinner (red meat, fish, pasta, cheese or spicy) and every tile answers with a Badge, "Pairs well" or "Less so", and one typed reason. Each tile also has a drawn bottle, the vintage, body, tannin and acidity as three five-dot rows, the price and an outline Button that says "Add to bag" with an Undo. A line in the foot says the wines are sold to adults. Nothing is checked, stored or bought. On a phone the tiles are a row you swipe, with the next one showing. For wine merchants and any shop that sells by occasion.

FAQ

How do I change the wines and the pairings?

Edit WINES. Each has a vintage, a price in cents, body, tannin and acidity from 1 to 5, and a pairings list with one pairs flag and one reason for each dish. The heading row counts the wines that pair from the same flags.

Is there an age check?

No. The foot says the wines are sold to adults and that is all; nothing is verified in this block. A real shop asks at checkout, where the law requires it, and should not gate the browsing.

Why does each tile say it in words and not a color?

Pairing is a word on a badge and a sentence, never a green or red, so it reads in any theme and to a screen reader. A tile that does not pair says why too.

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

The dish and the bag are page state. The bag is page state; nothing is stored, charged or sent. Replace the body of add and undo with calls to your cart. The picture is typed shapes: swap Picture for an img of the product.

How does it look on a phone?

The tiles become a row you swipe sideways, each about three quarters of the width so the next one shows. The row is a focusable region, so a keyboard user can scroll it with the arrow keys. The dishes drop under the sentence.

Is it accessible?

The dishes are a named group of toggle buttons that works with the arrow keys, each bottle is a named image, the verdict is read with its reason, the dot rows are read as numbers out of 5, and a change is announced by the polite status line.