Skip to content
Documentation

Forms

Option card

A radio or checkbox with a title and description in a card, for choices that need explaining, such as plans.

CSS only components/option-card.css

Pick a plan

Pick a plan
<div class="dsgn-option-cards" role="radiogroup" aria-label="Plan">
  <label class="dsgn-option-card"><input type="radio" class="dsgn-radio" name="dx-plan2" checked>
    <span class="dsgn-option-card-body"><span class="dsgn-option-card-title">Monthly</span><span class="dsgn-option-card-text">Cancel any time.</span></span>
    <span class="dsgn-option-card-meta">CZK 290</span></label>
  <label class="dsgn-option-card"><input type="radio" class="dsgn-radio" name="dx-plan2">
    <span class="dsgn-option-card-body"><span class="dsgn-option-card-title">Yearly</span><span class="dsgn-option-card-text">Two months free.</span></span>
    <span class="dsgn-option-card-meta">CZK 2 900</span></label>
</div>

Usage

The whole card is the label, so every pixel selects. Radio/checkbox sits on the first line. Selected = accent tint + 2 px accent ring (3:1) + the checked control itself. Focus ring goes around the card. Checkboxes work the same for multi-select.

Details

Classes
.dsgn-option-cards .dsgn-option-card .dsgn-radio .dsgn-checkbox .dsgn-option-card-body .dsgn-option-card-title .dsgn-option-card-text .dsgn-option-card-meta
Tokens used
--dsgn-border --dsgn-border-control --dsgn-border-width --dsgn-control-gap --dsgn-control-solid --dsgn-control-subtle --dsgn-duration-fast --dsgn-ease --dsgn-focus --dsgn-focus-offset --dsgn-focus-width --dsgn-font-sans --dsgn-font-size-body-s --dsgn-font-weight-medium --dsgn-font-weight-semibold --dsgn-inset --dsgn-line-height-body-s --dsgn-neutral-subtle --dsgn-radius-l --dsgn-shadow-raised --dsgn-space-2 --dsgn-space-64 --dsgn-stack --dsgn-surface-raised --dsgn-text --dsgn-text-disabled --dsgn-text-muted
In Figma
Option card
Import alone
dsgn.systems/components/option-card.css