Quartz Style Guide

Design tokens and patterns from the Quartz/Fireball production design system. Use these exact values — not Tailwind approximations — when building templates and prototypes.

Brand colors

Primary brand palette. Import from @/lib/quartz/theme as quartzColors.

Primary

Primary

quartzTeal

#447D87

quartzColors.primary

Teal Light

teal

#66B8C7

quartzColors.primaryLight

Dark Teal

darkTeal

#579FAE

quartzColors.primaryDark

Text

Primary Text

primaryText

#122124

quartzColors.text

Secondary Text

secondaryText

#6E7879

quartzColors.textSecondary

UI / Surface

Field Border

quartzFieldBorder

#D7DDE2

quartzColors.border

Background

white

#FFFFFF

quartzColors.background

Light Gray

lighterGray

#F5F6F7

quartzColors.backgroundGray

Status / Semantic

Success

#E4F8E8

quartzColors.success

Warning

#FFE7DE

quartzColors.warning

Error

#FAD3D1

quartzColors.error

Info

#E9F1FF

quartzColors.info

In Progress

#EFEEFF

quartzColors.inProgress

Danger

#E4251B

quartzColors.danger

Typography scale

All presets from typographyPresets in lib/quartz/shims/styles.ts. Each rendered at actual size.

Heading Large
headingLarge
20px / 600 / 28px
Heading Medium
headingMedium
16px / 600 / 24px
Heading Small
headingSmall
14px / 600 / 22px
Heading Extra Small
headingExtraSmall
12px / 600 / 18px
Body text — the default for paragraph content.
body
14px / 400 / 22px
Body secondary — used for supporting text.
bodySecondary
14px / 400 / 22px
Body small — captions, helper text, timestamps.
bodySmall
12px / 400 / 18px
Label Primary
labelPrimary
14px / 600 / 22px
Label Secondary
labelSecondary
14px / 400 / 22px

Spacing scale

Based on a 4px grid. Import as spacing from @/lib/quartz/theme. Base unit: SPACING_UNIT_PX = 4.

xs
4px
1 unit
sm
8px
2 units
md
16px
4 units
lg
24px
6 units
xl
32px
8 units
xxl
48px
12 units

Form DNA

Interactive demos of Quartz form patterns. Tab through the fields to see the real focus states. The focus ring is outline: 2px solid #447D87; outline-offset: 2px — not a Tailwind ring utility.

Border: 1px solid #D7DDE2 | border-radius: 4px

Toggle SwitchOff

Checked bg: #447D87 | Unchecked bg: #D7DDE2

Correct

border: 1px solid #D7DDE2
border-radius: 4px
outline: 2px solid #447D87
outline-offset: 2px

Incorrect (Tailwind approximation)

border: 1px solid gray-200
border-radius: rounded-lg (8px)
ring: ring-blue-500/50 (box-shadow)
Wrong color, wrong radius, wrong technique

Buttons

Live <Button> from @/lib/quartz in all variants and sizes.

primary

secondary

tertiary

Focus & Active States

Quartz uses a consistent focus ring across all interactive elements.

Default Focus (legacy)

outline: 2px solid #579FAE
outline-offset: 1px

Quartz Focus (current)

outline: 2px solid #447D87
outline-offset: 2px

Inset Focus

box-shadow: inset 0 0 0 2px #447D87
outline: none

Avoid: Tailwind ring

ring-2 ring-blue-500/50
Wrong color, wrong technique, wrong radius

Component library

Full Quartz + shared component catalog with live previews.

Unavailable — missing Fireball dependencies

Accordion

Unavailable

No description available

0 propsUsed in 0 projects

Alert

Unavailable

The style of the `<Alert>`

3 propsUsed in 0 projects

Box

Unavailable

Render the `<Box>` as a given element

3 propsUsed in 0 projects

Button

Unavailable

The content of the `<Button>`

9 propsUsed in 0 projects

Checkbox

Unavailable

The description text for the `<Checkbox>`

9 propsUsed in 0 projects

CheckboxCard

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects

Chip

Unavailable

The id of the text element

10 propsUsed in 0 projects

DropdownMenu

Unavailable

No description available

1 propsUsed in 0 projects

EmptyState

Unavailable

The size of the `<EmptyState>`

4 propsUsed in 0 projects

Field

Unavailable

The description text for the `<Field>` that should be displayed under a label

5 propsUsed in 0 projects

Fieldset

Unavailable

The content of the `<fieldset>`

3 propsUsed in 0 projects

Flex

Unavailable

No description available

0 propsUsed in 0 projects

Form

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects

FullWidthActions

Unavailable

The `<button>` or `<a>` tag to expand to the full width of the container

1 propsUsed in 0 projects

GradientPicker

Unavailable

No description available

12 propsUsed in 0 projects

Heading

Unavailable

No description available

0 propsUsed in 0 projects

Input

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects

Label

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects

Legend

Unavailable

The content of the underlying `<legend>` element

5 propsUsed in 0 projects

Link

Unavailable

A function which provides the style props to spread on the root link element and the inner conten...

7 propsUsed in 0 projects

LoadingArea

Unavailable

The content that is available after loading

4 propsUsed in 0 projects

OptionCard

Unavailable

The main label to describe the `<OptionCard>`

3 propsUsed in 0 projects

Paragraph

Unavailable

No description available

0 propsUsed in 0 projects

Radio

Unavailable

The description text for the `<Radio>`

6 propsUsed in 0 projects

RadioCard

Unavailable

The description text for the `<RadioCard>`

5 propsUsed in 0 projects

Range

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects

RetainSize

Unavailable

Content items that will be dynamically swapped out

1 propsUsed in 0 projects

SelectableIconOption

Unavailable

Whether the group items should behave as a radio (single select) or checkbox (multi select)

2 propsUsed in 0 projects

SplitRadioOption

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects

Switch

Unavailable

A description of the `<Switch>`

4 propsUsed in 0 projects

Tabs

Unavailable

The currently selected tab

4 propsUsed in 0 projects

Textarea

Unavailable

If `container`, the textarea will expand to the size of its containing element

9 propsUsed in 0 projects

TextareaField

Unavailable

No description available

0 propsUsed in 0 projects

TextField

Unavailable

No description available

0 propsUsed in 0 projects

ToggleField

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects

Typography

Unavailable

Allows getting a ref to the component instance

2 propsUsed in 0 projects