CSS Tokens

Vesper is built on top of a set of design tokens corresponding to color, spacing, radius, leading, tracking, shadow, stroke, and background. These tokens are exposed in your app as CSS variables when you import the component styles, and can also be used in Tailwind utilities.

Colors

Color tokens are split into primitive and semantic tokens.

Primitive tokens are the raw palette values from our design system.

Semantic tokens are aliases of primitive tokens intended to be more ergonomic for applied use (these will be familiar to you if you've used a library like Tailwind).

For example, the semantic token --vesper-background-primary aliases the primitive --vesper-stone-0 color token value.

We prefer using semantic tokens wherever possible, since they automatically resolve to the correct primitive for the active theme.

Primitive color tokens

PreviewCSS variableLight mode valueDark mode value
--vesper-static-black#071614#071614
--vesper-static-white#f1f8f8#f1f8f8
--vesper-transparenttransparenttransparent
--vesper-stone-0#f8fcfb#050f0e
--vesper-stone-50#eef6f6#0b1817
--vesper-stone-100#e8f2f1#13201e
--vesper-stone-200#dfecea#1b2826
--vesper-stone-300#d0e1e0#233431
--vesper-stone-400#bdd1cf#2d4340
--vesper-stone-500#a2b9b7#395651
--vesper-stone-600#718e8c#5e7d78
--vesper-stone-700#51706d#7d9b97
--vesper-stone-800#344b49#b3ccc8
--vesper-stone-900#050f0e#e7f0ee
--vesper-teal-0#f7fbfd#05181e
--vesper-teal-50#e7f7fd#0a2229
--vesper-teal-100#d3eff8#0e303a
--vesper-teal-200#aae5f8#073e4f
--vesper-teal-300#8ad2ea#0d4659
--vesper-teal-400#5cbcdb#0f546b
--vesper-teal-500#32abd2#136b86
--vesper-teal-600#1b8eb1#1a8fb2
--vesper-teal-700#176782#46afd2
--vesper-teal-800#144a5d#7dcde8
--vesper-teal-900#0c2f3b#a3e0f5
--vesper-purple-0#f8f7fd#0f0e1b
--vesper-purple-50#efedfd#141127
--vesper-purple-100#dedafb#1d1938
--vesper-purple-200#c9c2fa#27214a
--vesper-purple-300#a89eea#2f285d
--vesper-purple-400#7e71d0#382f74
--vesper-purple-500#6458b6#5145a1
--vesper-purple-600#4d429a#7e71d0
--vesper-purple-700#342b6e#9c91e3
--vesper-purple-800#272150#b4a8ff
--vesper-purple-900#1d1b2d#cdc6fa
--vesper-mint-0#f1fdfb#041f19
--vesper-mint-50#e3fcf9#073128
--vesper-mint-100#d2f4ef#0b4137
--vesper-mint-200#b6ede2#0b5144
--vesper-mint-300#7cdecc#116959
--vesper-mint-400#40bfa8#15937c
--vesper-mint-500#29a38d#1bbb9e
--vesper-mint-600#227767#39c6ac
--vesper-mint-700#13584b#4ce5c9
--vesper-mint-800#0f3d35#82edd9
--vesper-mint-900#112c26#caf7f1
--vesper-pink-0#fdf7fb#1f0a17
--vesper-pink-50#fdedf7#2e0f22
--vesper-pink-100#fcd9ef#3d152e
--vesper-pink-200#ffc2e8#491d38
--vesper-pink-300#f17ec5#6b2450
--vesper-pink-400#e557af#91306c
--vesper-pink-500#be378a#be378a
--vesper-pink-600#91306c#e34faa
--vesper-pink-700#6b2450#f17ec5
--vesper-pink-800#441d35#ffc2e8
--vesper-pink-900#2e0f22#fde2f3
--vesper-yellow-0#fff7e5#211908
--vesper-yellow-50#fff2d6#31260c
--vesper-yellow-100#ffeabd#3f3112
--vesper-yellow-200#ffe0a3#534018
--vesper-yellow-300#ffca61#7a5c1a
--vesper-yellow-400#ffb71b#9c7217
--vesper-yellow-500#d99a12#d09311
--vesper-yellow-600#986f16#ffb71b
--vesper-yellow-700#6d5217#ffc757
--vesper-yellow-800#473715#ffd88a
--vesper-yellow-900#2e2614#ffeecc
--vesper-green-0#f1fdf8#041f15
--vesper-green-50#e3fcf4#073120
--vesper-green-100#d2f4e9#0b412e
--vesper-green-200#b1ecd6#0b5137
--vesper-green-300#78ddb8#106043
--vesper-green-400#40bf90#128159
--vesper-green-500#29a376#19ae77
--vesper-green-600#227758#38c28f
--vesper-green-700#13583f#4ce5ad
--vesper-green-800#0f3d2c#82edc6
--vesper-green-900#112c21#caf7e9
--vesper-red-0#feebe7#1d0f0c
--vesper-red-50#fcdfd9#2b130d
--vesper-red-100#fccac0#3d170f
--vesper-red-200#f99a86#5c180a
--vesper-red-300#f56447#85230f
--vesper-red-400#ef3f1a#af290e
--vesper-red-500#cb2c0b#cb2c0b
--vesper-red-600#9b2208#f04b28
--vesper-red-700#6e1d0c#f37358
--vesper-red-800#531609#f99b86
--vesper-red-900#2f140e#fac6b7
--vesper-amber-0#fff4e5#211608
--vesper-amber-50#ffedd6#31210c
--vesper-amber-100#ffe4c2#432b0e
--vesper-amber-200#ffd4a3#523614
--vesper-amber-300#ffba6b#8a530f
--vesper-amber-400#ffa033#bb690c
--vesper-amber-500#ed881d#ed881d
--vesper-amber-600#a8610b#ffa333
--vesper-amber-700#8d5107#ffb35c
--vesper-amber-800#523614#ffcf99
--vesper-amber-900#35230d#ffe7cc
--vesper-sky-0#f5fbfe#09101b
--vesper-sky-50#e5f5ff#0f1b2d
--vesper-sky-100#d0e9fb#10243e
--vesper-sky-200#acd7f6#092e53
--vesper-sky-300#7ebeed#0f4d86
--vesper-sky-400#55aae7#135ea7
--vesper-sky-500#2375c7#1671c9
--vesper-sky-600#1059a2#0091ff
--vesper-sky-700#134272#33a3ff
--vesper-sky-800#113355#70b8ff
--vesper-sky-900#122130#c2e0ff
--vesper-alpha-stone-0rgba(28, 161, 157, 0.023)rgba(33, 60, 61, 0.03)
--vesper-alpha-stone-50rgba(14, 129, 115, 0.043)rgba(154, 246, 244, 0.035)
--vesper-alpha-stone-100rgba(19, 124, 99, 0.074)rgba(184, 244, 243, 0.075)
--vesper-alpha-stone-200rgba(38, 126, 112, 0.125)rgba(204, 245, 241, 0.11)
--vesper-alpha-stone-300rgba(15, 97, 87, 0.169)rgba(184, 245, 233, 0.161)
--vesper-alpha-stone-400rgba(8, 78, 75, 0.255)rgba(168, 225, 217, 0.247)
--vesper-alpha-stone-500rgba(3, 58, 56, 0.345)rgba(144, 213, 203, 0.357)
--vesper-alpha-stone-600rgba(7, 60, 57, 0.572)rgba(195, 255, 247, 0.461)
--vesper-alpha-stone-700rgba(17, 59, 55, 0.729)rgba(207, 252, 246, 0.591)
--vesper-alpha-stone-800rgba(14, 42, 39, 0.839)rgba(212, 242, 237, 0.834)
--vesper-alpha-stone-900rgba(0, 15, 15, 0.973)rgba(245, 255, 253, 0.937)
--vesper-alpha-contrast-0transparenttransparent
--vesper-alpha-contrast-50rgba(7, 22, 20, 0.05)rgba(241, 248, 248, 0.05)
--vesper-alpha-contrast-100rgba(7, 22, 20, 0.1)rgba(241, 248, 248, 0.1)
--vesper-alpha-contrast-200rgba(7, 22, 20, 0.2)rgba(241, 248, 248, 0.2)
--vesper-alpha-contrast-300rgba(7, 22, 20, 0.3)rgba(241, 248, 248, 0.3)
--vesper-alpha-contrast-400rgba(7, 22, 20, 0.4)rgba(241, 248, 248, 0.4)
--vesper-alpha-contrast-500rgba(7, 22, 20, 0.5)rgba(241, 248, 248, 0.5)
--vesper-alpha-contrast-600rgba(7, 22, 20, 0.6)rgba(241, 248, 248, 0.6)
--vesper-alpha-contrast-700rgba(7, 22, 20, 0.7)rgba(241, 248, 248, 0.7)
--vesper-alpha-contrast-800rgba(7, 22, 20, 0.8)rgba(241, 248, 248, 0.8)
--vesper-alpha-contrast-900rgba(7, 22, 20, 0.9)rgba(241, 248, 248, 0.9)
--vesper-alpha-inverse-0transparenttransparent
--vesper-alpha-inverse-50rgba(241, 248, 248, 0.05)rgba(7, 22, 20, 0.05)
--vesper-alpha-inverse-100rgba(241, 248, 248, 0.1)rgba(7, 22, 20, 0.1)
--vesper-alpha-inverse-200rgba(241, 248, 248, 0.2)rgba(7, 22, 20, 0.2)
--vesper-alpha-inverse-300rgba(241, 248, 248, 0.3)rgba(7, 22, 20, 0.3)
--vesper-alpha-inverse-400rgba(241, 248, 248, 0.4)rgba(7, 22, 20, 0.4)
--vesper-alpha-inverse-500rgba(241, 248, 248, 0.5)rgba(7, 22, 20, 0.5)
--vesper-alpha-inverse-600rgba(241, 248, 248, 0.6)rgba(7, 22, 20, 0.6)
--vesper-alpha-inverse-700rgba(241, 248, 248, 0.7)rgba(7, 22, 20, 0.7)
--vesper-alpha-inverse-800rgba(241, 248, 248, 0.8)rgba(7, 22, 20, 0.8)
--vesper-alpha-inverse-900rgba(241, 248, 248, 0.9)rgba(7, 22, 20, 0.9)
--vesper-alpha-black-0transparenttransparent
--vesper-alpha-black-50rgba(7, 22, 20, 0.05)rgba(7, 22, 20, 0.05)
--vesper-alpha-black-100rgba(7, 22, 20, 0.1)rgba(7, 22, 20, 0.1)
--vesper-alpha-black-200rgba(7, 22, 20, 0.2)rgba(7, 22, 20, 0.2)
--vesper-alpha-black-300rgba(7, 22, 20, 0.3)rgba(7, 22, 20, 0.3)
--vesper-alpha-black-400rgba(7, 22, 20, 0.4)rgba(7, 22, 20, 0.4)
--vesper-alpha-black-500rgba(7, 22, 20, 0.5)rgba(7, 22, 20, 0.5)
--vesper-alpha-black-600rgba(7, 22, 20, 0.6)rgba(7, 22, 20, 0.6)
--vesper-alpha-black-700rgba(7, 22, 20, 0.7)rgba(7, 22, 20, 0.7)
--vesper-alpha-black-800rgba(7, 22, 20, 0.8)rgba(7, 22, 20, 0.8)
--vesper-alpha-black-900rgba(7, 22, 20, 0.9)rgba(7, 22, 20, 0.9)
--vesper-alpha-white-0transparenttransparent
--vesper-alpha-white-50rgba(241, 248, 248, 0.05)rgba(241, 248, 248, 0.05)
--vesper-alpha-white-100rgba(241, 248, 248, 0.1)rgba(241, 248, 248, 0.1)
--vesper-alpha-white-200rgba(241, 248, 248, 0.2)rgba(241, 248, 248, 0.2)
--vesper-alpha-white-300rgba(241, 248, 248, 0.3)rgba(241, 248, 248, 0.3)
--vesper-alpha-white-400rgba(241, 248, 248, 0.4)rgba(241, 248, 248, 0.4)
--vesper-alpha-white-500rgba(241, 248, 248, 0.5)rgba(241, 248, 248, 0.5)
--vesper-alpha-white-600rgba(241, 248, 248, 0.6)rgba(241, 248, 248, 0.6)
--vesper-alpha-white-700rgba(241, 248, 248, 0.7)rgba(241, 248, 248, 0.7)
--vesper-alpha-white-800rgba(241, 248, 248, 0.8)rgba(241, 248, 248, 0.8)
--vesper-alpha-white-900rgba(241, 248, 248, 0.9)rgba(241, 248, 248, 0.9)

Semantic color tokens

CSS variableAlias
--vesper-background-primary--vesper-stone-0
--vesper-background-secondary--vesper-stone-50
--vesper-background-tertiary--vesper-stone-100
--vesper-background-disabled--vesper-alpha-stone-50
--vesper-background-inverse-primary--vesper-alpha-stone-900
--vesper-background-inverse-secondary--vesper-alpha-stone-800
--vesper-background-inverse-disabled--vesper-alpha-inverse-50
--vesper-background-accent-subtle--vesper-teal-50
--vesper-background-accent-base--vesper-teal-400
--vesper-background-success-subtle--vesper-green-50
--vesper-background-success-base--vesper-green-600
--vesper-background-warning-subtle--vesper-amber-0
--vesper-background-warning-base--vesper-amber-600
--vesper-background-error-subtle--vesper-red-0
--vesper-background-error-base--vesper-red-500
--vesper-background-info-subtle--vesper-sky-50
--vesper-background-info-base--vesper-sky-600
--vesper-background-static-white--vesper-static-white
--vesper-background-static-black--vesper-static-black
--vesper-background-brand-purple-subtle--vesper-purple-100
--vesper-background-brand-purple-base--vesper-purple-600
--vesper-background-brand-mint-subtle--vesper-mint-50
--vesper-background-brand-mint-base--vesper-mint-600
--vesper-background-brand-pink-subtle--vesper-pink-50
--vesper-background-brand-pink-base--vesper-pink-600
--vesper-background-brand-yellow-subtle--vesper-yellow-50
--vesper-background-brand-yellow-base--vesper-yellow-400
--vesper-text-primary--vesper-stone-900
--vesper-text-secondary--vesper-stone-800
--vesper-text-tertiary--vesper-stone-700
--vesper-text-disabled--vesper-alpha-stone-500
--vesper-text-inverse-primary--vesper-stone-0
--vesper-text-inverse-secondary--vesper-stone-300
--vesper-text-inverse-tertiary--vesper-stone-500
--vesper-text-alpha-disabled--vesper-alpha-inverse-300
--vesper-text-on-color--vesper-static-white
--vesper-text-accent--vesper-teal-700
--vesper-text-success--vesper-mint-600
--vesper-text-warning--vesper-amber-700
--vesper-text-error--vesper-red-600
--vesper-text-info--vesper-sky-600
--vesper-text-static-black--vesper-static-black
--vesper-text-static-white--vesper-static-white
--vesper-text-link-default--vesper-teal-700
--vesper-text-link-hover--vesper-teal-600
--vesper-text-link-visited--vesper-teal-800
--vesper-text-link-disabled--vesper-alpha-stone-400
--vesper-text-brand-purple--vesper-purple-700
--vesper-text-brand-mint--vesper-mint-600
--vesper-text-brand-pink--vesper-pink-600
--vesper-text-brand-yellow--vesper-yellow-600
--vesper-icon-primary--vesper-stone-900
--vesper-icon-secondary--vesper-stone-800
--vesper-icon-tertiary--vesper-stone-700
--vesper-icon-disabled--vesper-alpha-stone-500
--vesper-icon-inverse-primary--vesper-stone-0
--vesper-icon-inverse-secondary--vesper-stone-300
--vesper-icon-inverse-tertiary--vesper-stone-500
--vesper-icon-inverse-disabled--vesper-alpha-inverse-300
--vesper-icon-on-color--vesper-static-white
--vesper-icon-accent--vesper-teal-700
--vesper-icon-success--vesper-mint-600
--vesper-icon-warning--vesper-amber-700
--vesper-icon-error--vesper-red-600
--vesper-icon-info--vesper-sky-600
--vesper-icon-static-black--vesper-static-black
--vesper-icon-static-white--vesper-static-white
--vesper-icon-brand-purple--vesper-purple-700
--vesper-icon-brand-mint--vesper-mint-600
--vesper-icon-brand-pink--vesper-pink-600
--vesper-icon-brand-yellow--vesper-yellow-600
--vesper-border-primary--vesper-stone-400
--vesper-border-secondary--vesper-stone-300
--vesper-border-tertiary--vesper-stone-200
--vesper-border-strong--vesper-stone-900
--vesper-border-disabled--vesper-alpha-stone-200
--vesper-border-focus--vesper-teal-200
--vesper-border-inverse-primary--vesper-stone-400
--vesper-border-inverse-secondary--vesper-stone-600
--vesper-border-inverse-strong--vesper-stone-0
--vesper-border-inverse-disabled--vesper-alpha-inverse-100
--vesper-border-inverse-focus--vesper-teal-500
--vesper-border-static-white--vesper-static-white
--vesper-border-static-black--vesper-static-black
--vesper-border-accent-subtle--vesper-teal-200
--vesper-border-accent-base--vesper-teal-600
--vesper-border-success-subtle--vesper-green-200
--vesper-border-success-base--vesper-green-500
--vesper-border-warning-subtle--vesper-amber-200
--vesper-border-warning-base--vesper-amber-500
--vesper-border-error-subtle--vesper-red-200
--vesper-border-error-base--vesper-red-500
--vesper-border-info-subtle--vesper-sky-200
--vesper-border-info-base--vesper-sky-500
--vesper-border-brand-purple-subtle--vesper-purple-200
--vesper-border-brand-purple-base--vesper-purple-500
--vesper-border-brand-mint-subtle--vesper-mint-200
--vesper-border-brand-mint-base--vesper-mint-500
--vesper-border-brand-pink-subtle--vesper-pink-200
--vesper-border-brand-pink-base--vesper-pink-500
--vesper-border-brand-yellow-subtle--vesper-yellow-200
--vesper-border-brand-yellow-base--vesper-yellow-500
--vesper-scrim-contrast-subtle--vesper-alpha-black-300
--vesper-scrim-contrast-base--vesper-alpha-black-600
--vesper-scrim-inverse-subtle--vesper-alpha-white-300
--vesper-scrim-inverse-base--vesper-alpha-white-600
--vesper-state-neutral-hover--vesper-alpha-stone-50
--vesper-state-neutral-active--vesper-alpha-stone-100
--vesper-state-contrast-hover--vesper-alpha-contrast-50
--vesper-state-contrast-active--vesper-alpha-contrast-100
--vesper-state-inverse-hover--vesper-alpha-inverse-100
--vesper-state-inverse-active--vesper-alpha-inverse-200
--vesper-tint-neutral-100--vesper-alpha-stone-50
--vesper-tint-neutral-200--vesper-alpha-stone-100
--vesper-tint-neutral-300--vesper-alpha-stone-200
--vesper-tint-neutral-400--vesper-alpha-stone-300
--vesper-tint-contrast-100--vesper-alpha-contrast-50
--vesper-tint-contrast-200--vesper-alpha-contrast-100
--vesper-tint-contrast-300--vesper-alpha-contrast-200
--vesper-tint-contrast-400--vesper-alpha-contrast-300
--vesper-tint-inverse-100--vesper-alpha-inverse-300
--vesper-tint-inverse-200--vesper-alpha-inverse-500
--vesper-tint-inverse-300--vesper-alpha-inverse-700
--vesper-tint-inverse-400--vesper-alpha-inverse-800

Tailwind color classes

If you imported @tenstorrent/vesper/tailwind.css into your css file where you set up Tailwind, these color tokens are available for use in Tailwind's utility classes. Every color token (primitive and semantic) is registered in Tailwind's --color-* namespace as --color-vesper-*, so any Tailwind utility that accepts a color works: bg-*, text-*, border-*, outline-*, ring-*, fill-*, stroke-*, divide-*, shadow-*, accent-*, and so on.

For example:

<div className="bg-vesper-stone-500" />;
<div className="border-vesper-border-secondary" />;
<div className="text-vesper-icon-primary" />;

Fonts

CSS variableValue
--vesper-font-sans"Inter Tight", system-ui, sans-serif
--vesper-font-mono"IBM Plex Mono", monospace

Tailwind font classes

Font tokens are registered in Tailwind's --font-* namespace, so they are available as font-family utilities:

<p className="font-vesper-sans" />;
<code className="font-vesper-mono" />;

Leading

Leading (line height) tokens are percentage-based, so they scale with the element's font size.

CSS variableValue
--vesper-leading-none100%
--vesper-leading-tight110%
--vesper-leading-snug120%
--vesper-leading-normal140%
--vesper-leading-relaxed150%
--vesper-leading-loose175%

Tailwind leading classes

Leading tokens are registered in Tailwind's --leading-* namespace, so they are available as line-height utilities:

<p className="leading-vesper-normal" />;
<p className="leading-vesper-loose" />;

Tracking

Tracking (letter spacing) tokens are also relative to the element's font size. The values below are expressed in em, so they scale with the font size — for example, --vesper-tracking-tight resolves to -0.25px at a 16px font size.

CSS variableValueEquivalent at 16px font size
--vesper-tracking-tightest-0.046875em-0.75px
--vesper-tracking-tighter-0.03125em-0.5px
--vesper-tracking-tight-0.015625em-0.25px
--vesper-tracking-normal0em0px
--vesper-tracking-wide0.015625em0.25px
--vesper-tracking-wider0.03125em0.5px
--vesper-tracking-widest0.046875em0.75px

Tailwind tracking classes

Tracking tokens are registered in Tailwind's --tracking-* namespace, so they are available as letter-spacing utilities:

<h1 className="tracking-vesper-tight" />;
<span className="tracking-vesper-wide" />;

Radius

CSS variableValueEquivalent at 16px root font size
--vesper-radius-half0.125rem2px
--vesper-radius-10.25rem4px
--vesper-radius-20.5rem8px
--vesper-radius-30.75rem12px
--vesper-radius-41rem16px
--vesper-radius-61.5rem24px
--vesper-radius-71.75rem28px

Tailwind radius classes

Radius tokens are registered in Tailwind's --radius-* namespace, so they work with every border-radius utility, including the side- and corner-specific ones:

<div className="rounded-vesper-2" />;
<div className="rounded-t-vesper-4" />;
<div className="rounded-bl-vesper-half" />;

Shadows

CSS variableValue
--vesper-shadow-1000 0.125rem 0.375rem 0.0625rem rgba(9, 34, 33, 0.1)
--vesper-shadow-2000 0.25rem 0.75rem 0 rgba(9, 34, 33, 0.1)
--vesper-shadow-3000 0.75rem 2rem 0 rgba(9, 34, 33, 0.15)
--vesper-shadow-4000 1.5rem 4rem 0 rgba(9, 34, 33, 0.2)
--vesper-shadow-inset-1000 0.125rem 0.375rem 0 var(--vesper-alpha-contrast-100) inset
--vesper-shadow-inset-2000 0.125rem 0.75rem 0 var(--vesper-tint-contrast-200) inset
--vesper-shadow-focus-ring0 0 0 0.1875rem var(--vesper-border-focus)

Tailwind shadow classes

Shadow tokens are registered in Tailwind's --shadow-* namespace, so they are available as box-shadow utilities. Note that the inset tokens already include the inset keyword in their value, so they are also applied with shadow-* (not inset-shadow-*):

<div className="shadow-vesper-200" />;
<div className="shadow-vesper-inset-100" />;
<button className="focus-visible:shadow-vesper-focus-ring" />;

Spacing

CSS variableValueEquivalent at 16px root font size
--vesper-spacing-00rem0px
--vesper-spacing-micro0.0625rem1px
--vesper-spacing-half0.125rem2px
--vesper-spacing-10.25rem4px
--vesper-spacing-20.5rem8px
--vesper-spacing-30.75rem12px
--vesper-spacing-41rem16px
--vesper-spacing-51.25rem20px
--vesper-spacing-61.5rem24px
--vesper-spacing-82rem32px
--vesper-spacing-102.5rem40px
--vesper-spacing-123rem48px
--vesper-spacing-143.5rem56px
--vesper-spacing-164rem64px
--vesper-spacing-205rem80px
--vesper-spacing-246rem96px
--vesper-spacing-287rem112px
--vesper-spacing-328rem128px
--vesper-spacing-4010rem160px

Tailwind spacing classes

Spacing tokens are registered in Tailwind's --spacing-* namespace as --spacing-vesper-*, so they work with every spacing-based utility — padding, margin, width, height, gap, inset, translate, and so on:

<div className="p-vesper-4 gap-vesper-2" />;
<div className="mt-vesper-8 px-vesper-3" />;
<div className="size-vesper-10 top-vesper-2" />;

Animations

CSS variableValue
--vesper-transition-duration-fast0.2s
--vesper-transition-duration-default0.3s
--vesper-transition-duration-slow0.6s

Use them anywhere a duration is expected so that your app's motion stays in step with Vesper's components:

transition: background-color var(--vesper-transition-duration-fast) ease-in-out;

Tailwind animation classes

Animation tokens are registered in Tailwind's --transition-duration-* namespace, so they are available through the duration-* utilities:

<div className="transition-colors duration-vesper-fast" />;
<div className="transition-transform duration-vesper-slow" />;

Backgrounds

Background tokens provide Vesper's dot pattern as ready-to-use background shorthand values.

CSS variableLight mode valueDark mode value
--vesper-bg-dot-pattern-primaryurl(...) repeat top #f8fcfburl(...) repeat top #050f0e
--vesper-bg-dot-pattern-secondaryurl(...) repeat top #eef6f6url(...) repeat top #0b1817
--vesper-bg-dot-pattern-tertiaryurl(...) repeat top #e8f2f1url(...) repeat top #13201e
--vesper-bg-dot-pattern-inverseurl(...) repeat top rgba(0, 15, 15, 0.973)url(...) repeat top rgba(245, 255, 253, 0.937)

Since the dot pattern tokens are background shorthand values, assign them to the background property rather than background-image or background-color:

background: var(--vesper-bg-dot-pattern-secondary);

Tailwind background classes

Background tokens are exposed as custom Tailwind utilities rather than theme values:

<div className="bg-vesper-dot-pattern-primary" />;
<div className="bg-vesper-dot-pattern-secondary" />;
<div className="bg-vesper-dot-pattern-tertiary" />;
<div className="bg-vesper-dot-pattern-inverse" />;

Both the default and inverse dot patterns also accept any Vesper color token as a background color, using the token name without the vesper- prefix:

<div className="bg-vesper-dot-pattern-teal-200" />;
<div className="bg-vesper-dot-pattern-background-brand-purple-base" />;
<div className="bg-vesper-dot-pattern-inverse-stone-500" />;

Strokes

Stroke tokens define the border and outline widths used throughout Vesper.

CSS variableValueEquivalent at 16px font size
--vesper-stroke-base0.0625rem1px
--vesper-stroke-strong0.125rem2px
border: var(--vesper-stroke-base) solid var(--vesper-border-secondary);
outline: var(--vesper-stroke-strong) solid var(--vesper-border-focus);

Tailwind stroke classes

Stroke tokens are registered in Tailwind's --outline-width-* and --border-width-* namespaces, so they are available as outline-width and border-width utilities:

<div className="outline-vesper-base" />;
<div className="border-vesper-strong" />;