OptionCards present the functionality of a radio or checkbox in a more visually prominent card format with an increased click area.
OptionCardGroup.OptionCardGroup to manage shared state, selection mode, and layout.size="md" (default) provides more breathing room for titles and descriptions. size="sm" fits tighter layouts or simpler choices.layout="horizontal" (default) left-aligns content; when an icon is present, it appears left of the content with a divider. layout="vertical" center-aligns content; icon appears above.icon for a Pluma icon name. Use iconSrc for a custom image URL (brand logos, illustrations). The image is decorative — meaning comes from the title or ariaLabel.inputType="radio" (default) on OptionCardGroup for single-select — cards cannot be deselected. Set inputType="checkbox" for multi-select — each card toggles independently.isDisabled): Muted border and text, no interaction allowed.canSelect): Prevents selection of unselected cards but still allows deselection of currently selected cards. Unlike isDisabled, does not fully lock the card.OptionCardTitle and OptionCardDescription are available for custom content composition. Use them inside children (React) or default block (Ember) when combining with additional elements like badges.title and description props render built-in title/description. Pass children (React) or {{yield}} (Ember) for custom layouts — both built-in and custom content render together.OptionCardGroup. The group manages inputType, value, onChange, size, name, isDisabled, and canSelect via context — individual cards inherit these.value is a string. For checkbox mode, value is a string[]. The onChange callback signature matches accordingly.cardsDirection (default "row"), cardsGap (default "200"), and shouldWrapCards on OptionCardGroup.onChange is deprecated on individual OptionCards — use onCheckedChange instead. On OptionCardGroup, onChange is the primary callback.<PlumaOptionCard> and <PlumaOptionCardGroup>. Args use @ prefix (@title, @icon, @layout). Custom content uses the default block ({{yield}}).