Skip to content

Card

Card groups an image, a title and a few supporting lines into one surface that opens a single thing.

On this page
  1. Preview
  2. Types
  3. Size Compact
  4. States
  5. Optional parts
  6. Properties
  7. Tokens
  8. iOS and Material 3
  9. Which set to use

Preview

Vertical Card, Size Default, State Default. An 8 frame runs around the image, and the image takes the card's radius less that frame, so the picture follows the corner of the card.

Vertical Card, Size Default340 wide, radius 24, frame 8, image radius 16
Title4.8 · 128SubtitleMeta · InfoNew

The card radius is 24 and the image radius 16, because an inner radius equals the outer radius minus the padding between them. The Vertical Card carries its rating on the title row.

Source: the Vertical Card set of the Appetite UI Figma file, read on October 2, 2026.

Which types does Card have?

Card has three types, each its own set on one shell of stroke, radius and shadow. Vertical leads with the image, Horizontal turns it on its side for a list, Icon drops the image for a tile.

Vertical, Horizontal, Iconsame 340 shell, radius 24, content gap 4

Vertical Card

Title4.8 · 128SubtitleMeta · InfoNew

Horizontal Card

TitleSubtitle4.8 · 128Meta · InfoNew

Icon Card

TitleSubtitle4.8 · 128Meta · InfoNew

The three are separate component sets, so an instance cannot be switched from Vertical to Horizontal. They share the property list and the corner Badge, a real Badge instance at State Success, Type Pill and Style Soft.

They do not share the title size: Vertical and Icon run 24/32 at Default and Horizontal runs 20/28.

Vertical Card, Horizontal Card and Icon Card hold 4 variants each: Size by State.

What changes at Size Compact?

Compact is its own layout. Vertical and Icon narrow to 240 and tighten their padding, Horizontal keeps 340 and shrinks its image, and every title and subtitle steps down.

Size Default, Size Compact340 / 240, content padding 12 / 8, title 24 / 18, subtitle 14 / 12
Title4.8 · 128SubtitleMeta · InfoNew

Default

Title4.8 · 128SubtitleMeta · InfoNew

Compact

TitleSubtitle4.8 · 128Meta · InfoNew

Default

TitleSubtitle4.8 · 128Meta · InfoNew

Compact

Compact restructures the Horizontal Card: Default stacks the rating above the meta line, Compact puts them on one row at gap 4. The image goes from 132 to 92, so the card drops from 148 to 108 high.

On Icon Card, Size also moves the tile from 40 to 36 and the content padding from 16 to 12.

Compact Vertical is 240 x 274 against 340 x 303, Compact Icon 240 x 160 against 340 x 180.

Which states does Card have?

Pressed swaps the fill to bg/weak-50 and clears the shadow, so the card reads as pushed into the page. The stroke stays, and the card does not move, scale or dim.

State Default, State Pressedfill bg/white-0 then bg/weak-50, shadow off
Title4.8 · 128SubtitleMeta · InfoNewTitle4.8 · 128SubtitleMeta · InfoNew

Card has no Hover state. Add a pointer hover in code only where your product has a pointer.

The Icon tile is bg/weak-50, the same as the pressed fill, so under Pressed it merges with the card. The Icon Card keeps its height under Pressed, 180 in both states.

Which optional parts can a Card show?

Four booleans turn on extra parts: Price on all three sets, Favorite and Dots on Vertical Card, and Status on Horizontal Card. All four ship off.

Price, Favorite, Dots, StatusFavorite 36 at radius 16, five dots of 6, Price 16 / 24, Status badge

Vertical Card with Price, Favorite and Dots

Title4.8 · 128SubtitleMeta · Info$180 nightNew

Horizontal Card with Status

TitleSubtitle4.8 · 128Meta · InfoAvailableNew

Favorite is a 36 white square at radius 16 in the top right of the image, under dropShadow/sm. Dots mark the position in an image carousel, five at a time: the active one white, the other four white at 45 percent.

Status is a Neutral Soft Badge at the end of the Horizontal column, so a small thumbnail does not need a badge over it. Price is a 16/24 Semi Bold line under the meta text.

Favorite is 36 wide, below the minimum touch target. Give it a 44 pt hit area on iOS and 48 dp on Android in code.

Properties

Two variant axes and the same instance properties on all three sets. Image and Image Swap belong to Vertical and Horizontal, Icon to Icon Card, Favorite and Dots to Vertical, Status to Horizontal.

Properties, property, type, default, sets
PropertyTypeDefaultSets
SizeDefault, CompactDefaultAll
StateDefault, PressedDefaultAll
ImageBooleantrueVertical, Horizontal
Image SwapInstance swap, _Card Image_Card ImageVertical, Horizontal
IconInstance swapcircleIcon
SubtitleBooleantrueAll
RatingBooleantrueAll
DescriptionBooleantrueAll
BadgeBooleantrueAll
PriceBooleanfalseAll
FavoriteBooleanfalseVertical
DotsBooleanfalseVertical
StatusBooleanfalseHorizontal
Title TextTextTitleAll
Subtitle TextTextSubtitleAll
Description TextTextMeta · InfoAll
Rating TextText4.8 · 128All
Price TextText$180 nightAll

Every content row is a boolean, so a card with no rating loses the row and its height follows.

Source: the three Card sets of the Appetite UI Figma file, read on October 2, 2026.

Tokens

Every value the card reads, resolved through its aliases to the primitive underneath.

Tokens, token, light, dark, applied to
TokenLightDarkApplied to
bg/white-0#FFFFFF#0E0E0FThe card fill
border/soft-100#E9E9EA#2F2F31The 1 pt stroke, drawn outside
bg/weak-50#F4F5F5#242427Pressed fill and the Icon tile
bg/soft-100#E9E9EA#48484AThe image slot
fg/disabled-400#AEAEB2#8E8E93The placeholder glyph in the image slot
text/strong-950#0E0E0F#FFFFFFTitle and Price
text/sub-700#48484A#C7C7CCSubtitle and rating
text/soft-500#8E8E93#AEAEB2Meta line
brand/base#155DFC#2B7FFFThe circle in the Icon tile
state/success/lighter-50#F0FDF4#22C55E at 16%Corner badge fill
state/success/dark-950#09361B#86EFACCorner badge label
colors/yellow/400#FFB900#FFB900The rating star, one mode
static/static-white-0#FFFFFF#FFFFFFFavorite fill and the first dot
static/static-white-alpha-45#FFFFFF at 45%#FFFFFF at 45%The four inactive dots
static/static-black-950#0E0E0F#0E0E0FThe heart in Favorite, one value in both modes

Radius 24 is dimensions/radius/2xl, the image and Favorite 16 are dimensions/radius/xl and the Icon tile 12 is dimensions/radius/lg. The shadows are dropShadow/xs on the card and dropShadow/sm on Favorite, and Pressed clears the first.

The rating star is a single mode primitive, so it holds #FFB900 on a dark card, as it does on the Rating component.

The meta line is text/soft-500, 3.26 to 1 on white, so raise it in your own product if the line carries essential information. In code the whole card is one focusable control with a visible focus ring and a name that reads its title.

How does Card differ on iOS and Material 3?

Material 3 ships a Card with three styles, and the Apple Platform pages of the file have no card, only list and grouped cells. Appetite UI Card is one surface with one hairline and one shadow on both platforms.

Card against its iOS and Material 3 counterparts, component, iOS, Material 3, difference
Appetite UIiOS counterpartMaterial 3 counterpartWhat differs
CardNone. Apple groups content in list cells: iOS / List in Plain, Grouped and Inset Grouped.M3 / Card in Elevated, Filled and Outlined, 328 x 200 at radius 12Appetite UI is 340 wide at radius 24 with one fill, a hairline and dropShadow/xs. Material 3 changes the surface per style, Elevated, Filled or Outlined, where Appetite UI keeps one surface and changes only its fill on Pressed.

The tap target is the whole card, at least 108 high, so it clears the minimum touch target of 44 pt on iOS and 48 dp on Material 3 set by platform/min-touch-target.

Which Card set should I use?

Use Vertical when the picture is the reason to tap, Horizontal when the list has to stay short, Icon when an image would carry no meaning.

Do

Switch off the rows you have no data for. Every content row is a boolean, so a card without a rating loses the row rather than printing an empty one.

SourdoughBakery, 400mOpens 7:00

Don't

Do not keep a row and fill it with a placeholder. A star beside "No reviews yet" reads as a rating of zero, and an empty subtitle is a gap the eye has to explain.

Sourdough No reviews yet