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.

ClassColorExample
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.

ClassColorExample
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>
Tag LargeTag MediumTag Small

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.

mb-0
mb-1
mb-2
mb-3
mb-4
mb-5
mb-6
mb-7
mb-8

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.

ClassRangeBreakpoints
mobiletabletdesktopwidescreenfullhd
.&
.&-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.

Disabled
Default
Hover
Selected/Active
Focused
Loading
Error

Error message

Cart Items

Against White Feminism: Notes on Disruption

Rafia Zakaria

Hardcover

$13.22$18.99

Pre-Order: Ships Mar 30, 2025Pre-Order:Ships April 8, 2099

Against White Feminism: Notes on Disruption

Rafia Zakaria

Hardcover

$13.22$18.99

Pre-Order: Ships Mar 30, 2025Available

Against White Feminism: Notes on Disruption

Rafia Zakaria

Hardcover

$13.22$18.99

Pre-Order: Ships Mar 30, 2025Backordered

Book Availability & Status

Pre-Order: Ships Mar 30, 2025Pre-Order:Ships April 8, 2099
Pre-Order: Ships Mar 30, 2025Available
Pre-Order: Ships Mar 30, 2025Backordered

Form Example