Skip to content
Vitops
GuidesComponentsPackagesThemeReferenceChangelog

Start here

VitopsInstallationYour design systemYour config

Live preview

Theme previewAnimation libraryIconsPatterns

Components

OverviewCSS classesWeb componentsAstro componentsBricks elements

Packages

@getvitops/cli@getvitops/astro@getvitops/vite@getvitops/generator@getvitops/core@getvitops/utils@getvitops/emdash@getvitops/create

Reference

Config referenceOutput formatsColour systemType & space scalesComponent patternsIconsConsent gateConversion trackingSearchLegal documentsCSS class vocabularyBricks elements

Releases

Changelog

Theme preview

Every token the theme editor changes, on one page. Open the editor and watch.

ColourTypographyScalesLayoutPatternsRadii & shadows

Open the Theme panel (bottom right) and edit — this page is the target. The panel is modeless (no scrim, no light-dismiss), so you can keep clicking around while it's open.

Colour

A role resolves to tokens named --color-<target>-<role>[-<variant>], not to a ramp. The labels below are the class names — the token name minus--color-. A surface role has a bare bg- and the full range; achromatic role has tints and solids and no bare bg-. Dark mode re-points each token; the solid family stays mode-stable so a filled button keeps its identity, andtext-on-<role> is computed for contrast against it.

neutral surface

bg-neutral
bg-neutral-muted
bg-neutral-x-muted
bg-neutral-bold
bg-neutral-x-bold
bg-neutral-solid
bg-neutral-solid-bold
bg-neutral-solid-x-bold
Aatext-on-neutral
border-neutral-muted
border-neutral
border-neutral-bold
◆icon-neutral
◆icon-neutral-muted

text-neutraltext-neutral-boldtext-neutral-mutedtext-neutral-x-mutedtext-neutral-xx-muted

surface surface

bg-surface
bg-surface-muted
bg-surface-x-muted
bg-surface-bold
bg-surface-x-bold
bg-surface-solid
bg-surface-solid-bold
bg-surface-solid-x-bold
Aatext-on-surface
border-surface-muted
border-surface
border-surface-bold
◆icon-surface
◆icon-surface-muted

text-surfacetext-surface-boldtext-surface-mutedtext-surface-x-mutedtext-surface-xx-muted

ui-primary chromatic

bg-ui-primary-x-muted
bg-ui-primary-muted
bg-ui-primary-solid
bg-ui-primary-solid-bold
bg-ui-primary-solid-x-bold
Aatext-on-ui-primary
border-ui-primary
border-ui-primary-bold
◆icon-ui-primary

text-ui-primarytext-ui-primary-bold

ui-secondary chromatic

bg-ui-secondary-x-muted
bg-ui-secondary-muted
bg-ui-secondary-solid
bg-ui-secondary-solid-bold
bg-ui-secondary-solid-x-bold
Aatext-on-ui-secondary
border-ui-secondary
border-ui-secondary-bold
◆icon-ui-secondary

text-ui-secondarytext-ui-secondary-bold

ui-accent chromatic

bg-ui-accent-x-muted
bg-ui-accent-muted
bg-ui-accent-solid
bg-ui-accent-solid-bold
bg-ui-accent-solid-x-bold
Aatext-on-ui-accent
border-ui-accent
border-ui-accent-bold
◆icon-ui-accent

text-ui-accenttext-ui-accent-bold

brand-primary chromatic

bg-brand-primary-x-muted
bg-brand-primary-muted
bg-brand-primary-solid
bg-brand-primary-solid-bold
bg-brand-primary-solid-x-bold
Aatext-on-brand-primary
border-brand-primary
border-brand-primary-bold
◆icon-brand-primary

text-brand-primarytext-brand-primary-bold

brand-secondary chromatic

bg-brand-secondary-x-muted
bg-brand-secondary-muted
bg-brand-secondary-solid
bg-brand-secondary-solid-bold
bg-brand-secondary-solid-x-bold
Aatext-on-brand-secondary
border-brand-secondary
border-brand-secondary-bold
◆icon-brand-secondary

text-brand-secondarytext-brand-secondary-bold

info chromatic

bg-info-x-muted
bg-info-muted
bg-info-solid
bg-info-solid-bold
bg-info-solid-x-bold
Aatext-on-info
border-info
border-info-bold
◆icon-info

text-infotext-info-bold

success chromatic

bg-success-x-muted
bg-success-muted
bg-success-solid
bg-success-solid-bold
bg-success-solid-x-bold
Aatext-on-success
border-success
border-success-bold
◆icon-success

text-successtext-success-bold

warning chromatic

bg-warning-x-muted
bg-warning-muted
bg-warning-solid
bg-warning-solid-bold
bg-warning-solid-x-bold
Aatext-on-warning
border-warning
border-warning-bold
◆icon-warning

text-warningtext-warning-bold

danger chromatic

bg-danger-x-muted
bg-danger-muted
bg-danger-solid
bg-danger-solid-bold
bg-danger-solid-x-bold
Aatext-on-danger
border-danger
border-danger-bold
◆icon-danger

text-dangertext-danger-bold

Utility classes

bg-neutral-mutedbg-surface-mutedbg-ui-primary-mutedbg-ui-secondary-mutedbg-ui-accent-mutedbg-brand-primary-mutedbg-brand-secondary-mutedbg-info-mutedbg-success-mutedbg-warning-mutedbg-danger-muted

Typography

Semantic roles, not sizes. Each is a bundle of family, size, weight, leading, tracking and transform — so changing heading changes every heading, everywhere.

.font-display

The quick brown fox jumps over the lazy dog

.font-title

The quick brown fox jumps over the lazy dog

.font-heading

The quick brown fox jumps over the lazy dog

.font-lead

The quick brown fox jumps over the lazy dog

.font-body

The quick brown fox jumps over the lazy dog

.font-quote

The quick brown fox jumps over the lazy dog

.font-caption

The quick brown fox jumps over the lazy dog

.font-eyebrow

The quick brown fox jumps over the lazy dog

.font-footnote

The quick brown fox jumps over the lazy dog

.font-code

The quick brown fox jumps over the lazy dog

.font-tag

The quick brown fox jumps over the lazy dog

Scales

Both scales are fluid: each step is a clamp() that interpolates with viewport width, so resizing the window moves them too.

Type scale

--text-2xs2xs · Aa
--text-xsxs · Aa
--text-ss · Aa
--text-mm · Aa
--text-ll · Aa
--text-xlxl · Aa
--text-2xl2xl · Aa
--text-3xl3xl · Aa
--text-4xl4xl · Aa
--text-5xl5xl · Aa
--text-6xl6xl · Aa
--text-7xl7xl · Aa

Space scale

--space-2xs
--space-xs
--space-s
--space-m
--space-l
--space-xl
--space-2xl
--space-3xl
--space-4xl
--space-5xl
--space-6xl
--space-7xl

Vertical rhythm

.rhythm spaces siblings by element pair (heading→para differs from para→para), scaled by --rhythm-scale — the dial in the editor's Layout section.

A heading

A paragraph after a heading sits closer than one after a paragraph.

A second paragraph, to show the pair spacing differ.

Layout

Tracks (.centered)

A track grid: children land in measure by default, and opt out to a wider track. Widths are the --width-* knobs in the editor.

measure
breakout
spotlight
fullbleed

Split ratios

1
2
1
3
1
1
1
4

Cluster

onetwothree
onetwothree
onetwothree
onetwothree

Auto grid

Card 1

Card 2

Card 3

Card 4

Card 5

Card 6

Patterns

Geometry (padding, radius, border, shadow, size) resolves through each pattern's group, so the editor's Pattern groups section moves whole families at once and Componentsoverrides just one. Retune a group here and every pattern in it follows.

The components themselves — buttons, labels, cards, overlays, navigation and the progressively-enhanced elements — live on Patterns, where each one is interactive. They used to be duplicated here, which meant two galleries to keep in step and neither of them complete.

Radii & shadows

circledefault
smmdlgxl2xl

Built with the design system it documents.

@getvitops on npm