Color
Font Colors
Cool explanation Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nam alias veritatis quia labore amet praesentium atque consectetur dolores iure repellat, impedit ducimus deserunt architecto! Harum quam consequatur minima vero ad.
| Class | Color | Example |
|---|---|---|
has-text-action-primary | The thing you should do | |
has-text-action-secondary | An alternative thing to do | |
has-text-alert-positive | Successfully did a thing | |
has-text-alert-negative | Something went wrong | |
has-text-dark | It's a dark color | |
has-text-base | It's the base color | |
has-text-white | Plain ol' white |
Background Colors
Cool explanation Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nam alias veritatis quia labore amet praesentium atque consectetur dolores iure repellat, impedit ducimus deserunt architecto! Harum quam consequatur minima vero ad.
| Class | Color | Example |
|---|---|---|
has-background-action-primary | Great for primary buttons | |
has-background-action-secondary | Good for secondary stuff | |
has-background-alert-positive | Nice for confirmations | |
has-background-alert-negative | For warnings | |
has-background-accent-1 | A refreshing background | |
has-background-accent-2 | A rich background! | |
has-background-accent-3 | A calm background | |
has-background-accent-4 | Milk after Fruity Pebbles® | |
has-background-light | It's a light background | |
has-background-lighter | It's pretty dang light | |
has-background-lightest | Wow, now that's light | |
has-background-white | It's a white background |
Typography
Titles
Titles summarize large blocks of content. This includes the page itself or sections within a page. They’re meant to act as the stepping stones when navigating a page. Semantically, Title styles are used for H1 - H3 tags.
We make no use of Bulma's is-1/2/3/4/5/6 size classes for titles in this design system.
<h1 className="title is-xl">Title X-Large</h1>
<h2 className="title is-l">Title Large</h2>
<h3 className="title is-m">Title Medium</h3>
<h4 className="title is-s">Title Small</h4>Title X-Large
Title Large
Title Medium
Title Small
Subtitles
Subtitles are functionally identical to Bulma subtitles.
<p class="subtitle is-xl">Subtitle X-Large</p>
<p class="subtitle is-l">Subtitle Large</p>
<p class="subtitle is-m">Subtitle Medium</p>
<p class="subtitle is-s">Subtitle Small</p>Subtitle X-Large
Subtitle Large
Subtitle Medium
Subtitle Small
Subtitles act as titles for small chunks of content. Rarely are subtitle styles placed directly under subtitles, but should typically be placed under a title styling.
<p class="title is-m">A Truly Inspiring Heading</p>
<p class="subtitle is-l">A Boy Beyond Space and Time</p>
<p class="title is-s">Futuristic Book Lifestyle</p>
<p class="subtitle is-m">Functional Decomposition For Composers</p>A Truly Inspiring Heading
A Boy Beyond Space and Time
Futuristic Book Lifestyle
Functional Decomposition For Composers
Pull Quotes
Pull quote styles are used to style brief, attention-catching quotes. Use them to add a bit of drama to a page or to break up large bodies of content.
You can add the is-pull-quote class to any title.
<h1 className="title is-pull-quote is-xl">Pull Quote X-Large</h1>
<h2 className="title is-pull-quote is-l">Pull Quote Large</h2>
<h3 className="title is-pull-quote is-m">Pull Quote Medium</h3>
<h4 className="title is-pull-quote is-s">Pull Quote Small</h4>Pull Quote X-Large
Pull Quote Large
Pull Quote Medium
Pull Quote Small
Body Text
Body text makes up the bulk of a page’s content. This includes a few words as well as long form paragraphs. Four sizes are available, and is-size-m matches the default sizes for the page. These can be applied to any text element, not just paragraphs.
We currently make no use of Bulma's numeric sizing classes (is-size-1, is-size-2, et al) in this design system.
<p class="is-size-xl mb-5">Lorem ipsum dolor sit amet... </p>
<p class="is-size-l mb-5">Lorem ipsum dolor sit amet... </p>
<p class="is-size-m mb-5">Lorem ipsum dolor sit amet... </p>
<p class="is-size-s">Lorem ipsum dolor sit amet... </p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam, tenetur cupiditate harum quis vero, beatae, unde perspiciatis ducimus odit velit facilis consectetur. Ullam molestiae ratione eligendi voluptate vero similique nesciunt!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Placeat, natus eius velit necessitatibus dolorem accusamus non veniam perspiciatis blanditiis harum molestias dolor omnis. At aliquam ex voluptas ut et dolorum!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate architecto ratione voluptas iusto, maxime, debitis nihil, eius distinctio alias incidunt ullam repellendus veniam repudiandae laboriosam odit minus! Deleniti, ipsum sit.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet similique fugit inventore quo? Iusto eos voluptatibus quasi, beatae in culpa ducimus delectus deleniti veritatis ex, praesentium dignissimos omnis id alias.
Tags
Tags are just a word or two used to describe or append components, data, navigation, or small bits of content. They're based onBulma tags, but their use is currently scoped only to the examples below.
<span class="tag is-l">Tag Large</span>
<span class="tag is-m">Tag Medium</span>
<span class="tag is-s">Tag Small</span>Shapes
Rectangle
Rectangles divide space. Their fill color is what creates this division. Rectangles divide headers, side bars, body, banners, and footers. They run edge to edge no margin. Rectangles with sharp corners should never be used for actions, avatars, or containers with margins.
This is a default style where appropriate.
Circle
Circles are used for avatars such as affiliate avatars. They’re also used for textless actions like icon buttons.
Use the is-circle class to add this effect.
Pill
Pills are primary used for actions like buttons or search components. They’re also used to wrap variable data for badges.
Use the is-pill class to add this effect.
Rounded Rectangle
Rounded rectangles are used for containers that sit within pieces of content such as modals, inputs, or cards.
Use the is-rounded class to add this effect.
Space
Margins and Padding
We used Bulma's spacing helpers but with modified values to match our needs, with values from 0-8. Refer to the Bulma docs for details.
Responsive Spacing
We have also extended Bulma's spacing helpers to work with their responsive breakpoints. Any margin or padding helper class can receive one of the suffixes shown below eg .mb-4-from-table.
| Class | Range | Breakpoints | ||||
|---|---|---|---|---|---|---|
| mobile | tablet | desktop | widescreen | fullhd | ||
.& | ||||||
.&-from-tablet | (min-width: 769px) | |||||
.&-from-desktop | (min-width: 1024px) | |||||
.&-from-widescreen | (min-width: 1216px) | |||||
.&-from-fullhd | (min-width: 1408px) | |||||
.&-until-tablet | (max-width: 768px) | |||||
.&-until-desktop | (max-width: 1023px) | |||||
.&-until-widescreen | (max-width: 1215px) | |||||
.&-until-fullhd | (max-width: 1407px) | |||||
Elevation
Low Elevation
Changing the elevation of an interactive object, like a button, is a way to signify the object is focused, selected, or hovered. During this state, the object still sits side by side with other objects on the surface, it doesn’t cover or disable any other objects. The color of the hover is selected by the fill or stroke of that object.
Use .has-low-elevation on any element for this effect.
High Elevation
Adding an slightly transparent dark background signifies that the surface has been disabled and the object must be interacted with before returning to the surface. Such as a modal that needs to be closed.
High elevation is used for objects that cover parts of the surface, such as a dropdown or modal. This signifies that the object is sitting at an elevation higher than the surface.
Use .has-high-elevation on any element for this effect.
Buttons
Works with button elements
As well as inputs
Checkboxes and Radio Buttons
Radio Buttons
A 'radio button' is a combination of a button element and an input[type='radio'] element. It behaves in the same manner as a radio input, where clicking the button selects the option. But as a button, it could 'commit' the selected value immediately, rather than waiting for its encompassing form to be submitted.
As a result, a radio button can be created as either a button or an input[type='radio']. This should allow the behavior of the underlying element to apply, so that the browser can do more of the heavy lifting for us.
The input[type='radio'] option behaves the same as the is-checkradio class where it expects the element to be followed by a label.
<input type="radio" id="radio-button-example" name="radio-button-group" class="is-radio-button" />
<label for="radio-button-example">Label for radio button</label>The button version expects a [role='radio'] attribute to be set to ensure that screenreaders understand that this button behaves like a radio input. To identify the state of the button, use [aria-checked='true'] or [aria-checked='false']. Finally, they should be wrapped within an element that includes the [role='radiogroup'] to indicate which other radio buttons will be affected. (Note that you will need to add your own JS behavior to deselect other radio buttons)
<div role="radiogroup">
<button class="is-radio-button" role="radio" aria-checked="true">
Label for radio button
</button>
</div>Select Fields
States
Examples
The chart below shows how states are used consistently across elements.
These are automatic, see details on each component for markup recommendatons.
Error message
Cart Items

Against White Feminism: Notes on Disruption
Rafia Zakaria
Hardcover
$13.22$18.99

Against White Feminism: Notes on Disruption
Rafia Zakaria
Hardcover
$13.22$18.99

Against White Feminism: Notes on Disruption
Rafia Zakaria
Hardcover
$13.22$18.99
