Skip to content

Card

Groups related content and actions in a surface with clear hierarchy.

Design

Functional preview

Running with stable DS HTML and CSS, without a component JavaScript runtime.

Loading functional preview…

Interactive Card · HTML/CSS/JS

Rendered with native HTML; the Card itself is the composition’s only button.

Loading functional preview…

Anatomy

1
2

Card Title 3

Description text

Body content goes here. This is a flexible slot for any content.

4
1 Container (.ds-card) — surface with border-radius, optional border or shadow depending on variant.
2 Content container (.ds-card__container) — applies inner padding and gap.
3 Header (.ds-card__header) — wrapper for optional title and description.
4 Body (.ds-card__body) — flexible content area.

Default

Card Title

Description or meta information

This is the card body content. It provides additional context or details about the subject of the card.

Outlined

Outlined Card

With a stronger border

Outlined cards use a more visible border to distinguish content sections clearly from the background.

Elevated

Elevated Card

Raised surface

Elevated cards use a raised surface and shadow instead of a border to create visual depth and hierarchy.

Comparison

Default

Subtle border.

Outlined

Stronger border.

Elevated

Raised surface.

Media and interactive

Custom composition

Use the card as a container when the inner content needs to be composed with other components. Header and footer are optional; the body hosts the primary content.

Usage 128 active seats
Healthy

Token mapping

PropertyTokenCSS variable
backgroundsemantic.surface.default--ds-surface-default
background (elevated variant)semantic.surface.raised--ds-surface-raised
border (default variant)semantic.border.subtle--ds-border-subtle
border (outlined variant)semantic.border.default--ds-border-default
shadow (elevated)semantic.shadow.card--ds-shadow-card
border-radiuscomponent.card.radius.default--ds-card-radius-default
border-widthcomponent.card.border-width.default--ds-card-border-width-default
.ds-card__container paddingcomponent.card.container.padding.default--ds-card-container-padding-default
.ds-card__container gapcomponent.card.container.gap.default--ds-card-container-gap-default
.ds-card__header gapcomponent.card.header.gap.default--ds-card-header-gap-default
.ds-card__title typographycomponent.card.title.{font-size,line-height,font-weight}.default--ds-card-title-*-default
.ds-card__description typographycomponent.card.subtitle.{font-size,line-height,font-weight}.default--ds-card-subtitle-*-default
.ds-card__body typographycomponent.card.body.{font-size,line-height,font-weight}.default--ds-card-body-*-default
.ds-card__footer spacingcomponent.card.footer.gap.default--ds-card-footer-gap-default
.ds-card--interactive bordercomponent.card-interactive.border-*--ds-card-interactive-border-*
.ds-card--interactive focus ring radiuscomponent.card-interactive.focus-ring.radius.default--ds-card-interactive-focus-ring-radius-default