Docs :: Tokens
File name | Source |
---|---|
settings.tokens.css | Github |
Design tokens are the “atoms” of a design system. They define the design elements of a user interface, such as colors, typography, and spacing.
In mCSS, tokens are CSS custom properties that provide a flexible, coherent, and harmonious set of values designed to make implementing UI/UX projects fast and easy.
How to use tokens
When you start a new project, open settings.tokens.css
and change the values of as many tokens as necessary to match the design you’re planning to implement. (Things like spacing might not need to change, but you’ll almost certainly need to customize your base
and primary
colors for instance.)
Themes offer an additional layer of abstraction for tokens (ie. settings.theme.default.css
). These tokens only ever take another token for value and are useful to standardize UI elements in logical groups. For example, you can have a --light-border-color
with a value of --base-100
. This allows you to create tokens with meaning and context which makes them more intuitive to use.
elements.*
, global.*
, and page.*
files tend to use abstracted theme tokens, while component.*
generally use low level tokens. There are no hard and fast rules about the type of token you should use in your custom component. Just try to think where else this style is used in the design and if it comes up in many places with the same context, a new theme token is probably the best option.
Dimension
Dimension tokens can be used anywhere you need to set margin
, padding
, width
, height
, etc.
Token | Value | Demo |
---|---|---|
xs1 | 4px | |
xs2 | 8px | |
xs3 | 12px | |
sm1 | 16px | |
sm2 | 20px | |
sm3 | 24px | |
md1 | 28px | |
md2 | 32px | |
md3 | 36px | |
lg1 | 40px | |
lg2 | 44px | |
lg3 | 48px | |
xl1 | 56px | |
xl2 | 64px | |
xl3 | 80px | |
xxl1 | 96px | |
xxl2 | 112px | |
xxl3 | 128px | |
mega1 | 160px | |
mega2 | 192px | |
mega3 | 224px | |
giga1 | 256px | |
giga2 | 288px | |
giga3 | 320px | |
tera1 | 384px | |
tera2 | 480px | |
tera3 | 520px |
Aspect ratio
Token | Value | Demo |
---|---|---|
ar-square | 1 | |
ar-landscape | 4/3 | |
ar-portrait | 3/4 | |
ar-widescreen | 16/9 | |
ar-golden | 1.618/1 |
Typography
Font stack
There are 3 font stacks set up by default for the font-family
CSS Property.
Token | Value |
---|---|
text | ui-sans-serif, system-ui, sans-serif |
display | Avenir, Montserrat, Corbel, URW Gothic, source-sans-pro, ui-sans-serif, sans-serif |
monospace | Dank Mono, Inconsolata, Fira Mono, SF Mono, Monaco, Droid Sans Mono, Source Code Pro, Cascadia Code, Menlo, Consolas, DejaVu Sans Mono, ui-monospace, monospace |
These stacks are optimized for fonts available on device, to maximize for speed and alleviate any layout shifts or flashes. You can find more stacks at Modern Font Stacks.
If you’d like to bring in your own fonts or Google fonts, you can override the display
and text
tokens inside your theme file.
Font size
Check out typescale.com if you need help creating your own sizes.
Token | Value | Demo |
---|---|---|
text-xs | 0.694rem | Sample demo text |
text-sm | 0.833rem | Sample demo text |
text-md | 1rem | Sample demo text |
text-lg | 1.2rem | Sample demo text |
text-xl | 1.44rem | Sample demo text |
display-sm | 1.728rem | Sample demo text |
display-md | 2.074rem | Sample demo text |
display-lg | 2.488rem | Sample demo text |
display-xl | 2.986rem | Sample demo text |
display-mega | 3.583rem | Demo text |
display-giga | 4.299rem | Demo text |
Font weight
Token | Value | Demo |
---|---|---|
extra-light | 200 | Sample demo text |
light | 300 | Sample demo text |
book | 400 | Sample demo text |
semi-bold | 600 | Sample demo text |
bold | 700 | Sample demo text |
black | 900 | Sample demo text |
Letter spacing
Token | Value | Demo |
---|---|---|
tracking-sm | -0.05em | Sample demo text |
tracking-md | 0.025em | Sample demo text |
tracking-lg | 0.05em | Sample demo text |
tracking-xl | 0.075em | Sample demo text |
tracking-xxl | 0.15em | Sample demo text |
Line height
Token | Value | Demo |
---|---|---|
leading-xs | 1 | Sample demo text |
leading-sm | 1.15 | Sample demo text |
leading-md | 1.375 | Sample demo text |
leading-lg | 1.5 | Sample demo text |
leading-xl | 1.75 | Sample demo text |
leading-xxl | 2 | Sample demo text |
Color
Check out tints.dev if you want to make your own palettes programmatically.
Base
Token | Value | Demo |
---|---|---|
base-0 | #fff | |
base-50 | #f6f7f9 | |
base-100 | #edeef1 | |
base-200 | #d6dbe1 | |
base-300 | #b2bbc7 | |
base-400 | #8897a8 | |
base-500 | #697a8e | |
base-600 | #546375 | |
base-700 | #4a5666 | |
base-800 | #3c4550 | |
base-900 | #353c45 | |
base-950 | #23282e |
Primary
Token | Value | Demo |
---|---|---|
primary-50 | #f0f9ff | |
primary-100 | #e0f2fe | |
primary-200 | #bae6fd | |
primary-300 | #7dd3fc | |
primary-400 | #38bdf8 | |
primary-500 | #0ea5e9 | |
primary-600 | #0284c7 | |
primary-700 | #0369a1 | |
primary-800 | #075985 | |
primary-900 | #0c4a6e | |
primary-950 | #082f49 |
Feedback
Token | Value | Demo |
---|---|---|
yes-100 | #d5f6e8 | |
yes-200 | #afebd4 | |
yes-300 | #7adbbd | |
yes-400 | #46c4a0 | |
yes-500 | #13886d | |
no-100 | #ffe4e6 | |
no-200 | #fecdd3 | |
no-300 | #fda4af | |
no-400 | #fb7185 | |
no-500 | #e11d48 | |
maybe-100 | #fff7d6 | |
maybe-200 | #fff0b3 | |
maybe-300 | #ffd64a | |
maybe-400 | #ffc220 | |
maybe-500 | #f9a007 |
Borders
Border radius
Token | Value | Demo |
---|---|---|
radius-sm | 3px | |
radius-md | 5px | |
radius-lg | 8px | |
radius-xl | 12px | |
radius-xxl | 16px | |
radius-round | 1e5px |
Border width
Token | Value | Demo |
---|---|---|
border-sm | 1px | |
border-md | 2px | |
border-lg | 4px | |
border-xl | 8px | |
border-xxl | 12px |
Drop Shadow
It wouldn’t be super useful to list the values here. You can look at them on Github if you’re curious.
Token | Demo |
---|---|
shadow-sm | |
shadow-md | |
shadow-lg | |
shadow-xl | |
shadow-xxl |
Opacity
Token | Value |
---|---|
o-0 | 0 |
o-1 | 0.2 |
o-2 | 0.4 |
o-3 | 0.6 |
o-4 | 0.8 |
o-5 | 1 |
Z-index
Token | Value |
---|---|
z-bottom | -1000000000 |
z-0 | 0 |
z-1 | 10 |
z-2 | 20 |
z-3 | 30 |
z-4 | 40 |
z-5 | 50 |
z-top | 1000000000 |
Transition
Token | Value |
---|---|
transition | 220ms ease-in-out |
transition-fast | 100ms ease-in-out |