Enter
Foundations

Design tokens

Components reference semantic tokens only — none define raw colours of their own. Remapping the semantic layer restyles the entire library.

Neutral ramp

Every surface and text colour resolves to one of these.

--tz-neutral-0
--tz-neutral-50
--tz-neutral-100
--tz-neutral-150
--tz-neutral-200
--tz-neutral-300
--tz-neutral-400
--tz-neutral-500
--tz-neutral-600
--tz-neutral-700
--tz-neutral-800
--tz-neutral-900

Semantic colour

What components actually reference. Remap these to rebrand the library.

--tz-bg
--tz-surface
--tz-surface-raised
--tz-surface-sunken
--tz-accent
--tz-accent-strong
--tz-on-accent
--tz-text
--tz-text-muted
--tz-text-subtle
--tz-border
--tz-danger
--tz-focus

Radii

TokenValue
--tz-radius-sm6px
--tz-radius-md10px
--tz-radius-lg14px
--tz-radius-xl20px
--tz-radius-2xl28px
--tz-radius-full999px

Duration

TokenValue
--tz-duration-instant80ms
--tz-duration-fast140ms
--tz-duration-normal220ms
--tz-duration-slow360ms
--tz-duration-slower560ms

Easing

TokenValue
--tz-ease-outcubic-bezier(0.22, 1, 0.36, 1)
--tz-ease-in-outcubic-bezier(0.65, 0, 0.35, 1)
--tz-ease-backcubic-bezier(0.34, 1.56, 0.64, 1)

Spacing

TokenValue
--tz-space-10.25rem
--tz-space-20.5rem
--tz-space-30.75rem
--tz-space-41rem
--tz-space-61.5rem
--tz-space-82rem
--tz-space-123rem
--tz-space-164rem

Theming

A dark theme ships with the library. Set data-tz-theme="dark" on any ancestor and every descendant re-resolves through the semantic layer.

/* Rebrand by overriding the semantic layer only. */
:root {
  --tz-accent: #4f46e5;
  --tz-accent-strong: #4338ca;
  --tz-on-accent: #ffffff;
  --tz-radius-lg: 18px;
}

/* Scope a dark region. */
<section data-tz-theme="dark">
  <SquishButton>Inverted</SquishButton>
</section>