Team
$29per month
- Every component and token
- The Figma library
- Updates for a year
One plan at a glance: its name, its price, what it includes and the button that chooses it.A block is copied, not installed: take an example's code and the stylesheet at the foot of the page, and rename the site- prefix to your project's own.
One plan: its name and who it is for, the price and its period, three things it includes, and an outline button that chooses it.
For a small team
$29per month
The plan the reader is on: the selected edge round the card, said in words by the badge, and a secondary button that manages it.
For a small team
$29per month
Plans side by side, the chosen one in the middle, every card as tall as the row so the buttons line up. Where there is less room they wrap, and on a phone they stack.
For one person
$0per month
For a small team
$29per month
For a whole company
$79per month
Shows one plan on a pricing page or in billing settings. It names the plan and who it is for. Under that come the price, how often it is paid, what the plan includes and a button to choose it. Several sit in a row so a reader can compare them, and the reader's current plan is marked.
The page sets which plan is the reader's. That card takes the selected edge, the badge and a button that manages the plan. In a row, the cards share the width and stand as tall as the row, so their buttons line up. They wrap where there is less room, and stack on a phone. The card itself takes no focus. Its button is the one stop.
| Key | What it does |
|---|---|
| Tab | Moves focus to each card's button in turn. |
| Enter | Presses the focused button. |
The price card's own layout, its classes under the site- prefix. The components inside it are drawn by the design system's stylesheet.
/* site-price-card — Price card, a block: one plan, its price, what it includes and the button that chooses it. Copy
* it into your project and rename site- to your project's own prefix. The frame is the Card component: its header
* names the plan, its slot body holds the price and the list, and its full-width button footer holds the Button. The
* plan a reader has already chosen takes the card's selected edge and says so in a Badge. The block draws only the
* price line and the list; each tick is the Icon component. */
/* The price, then its period beside it on the same baseline. */
.site-price-card__price-row {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: var(--smbk-space-inline-xs);
margin: 0;
}
.site-price-card__price {
color: var(--smbk-color-text-default);
font-family: var(--smbk-typography-heading-md-font-family);
font-size: var(--smbk-typography-heading-md-font-size);
font-weight: var(--smbk-typography-heading-md-font-weight);
line-height: var(--smbk-typography-heading-md-line-height);
letter-spacing: var(--smbk-typography-heading-md-letter-spacing);
font-variant-numeric: tabular-nums;
}
.site-price-card__period {
font-family: var(--smbk-typography-body-sm-font-family);
font-size: var(--smbk-typography-body-sm-font-size);
font-weight: var(--smbk-typography-body-sm-font-weight);
line-height: var(--smbk-typography-body-sm-line-height);
letter-spacing: var(--smbk-typography-body-sm-letter-spacing);
}
/* What it includes: one line each, a tick before it. */
.site-price-card__includes {
display: flex;
flex-direction: column;
gap: var(--smbk-space-stack-xs);
margin: 0;
padding: 0;
list-style: none;
font-family: var(--smbk-typography-body-sm-font-family);
font-size: var(--smbk-typography-body-sm-font-size);
font-weight: var(--smbk-typography-body-sm-font-weight);
line-height: var(--smbk-typography-body-sm-line-height);
letter-spacing: var(--smbk-typography-body-sm-letter-spacing);
}
.site-price-card__include {
display: flex;
align-items: center;
gap: var(--smbk-space-inline-sm);
}
.site-price-card__tick {
flex: none;
color: var(--smbk-color-text-default);
}