sigil/UI

Getting Started

One markdown file controls your entire design system. 519 tokens, 33 categories, 350+ components. Compiles to CSS + Tailwind v4.

Why Sigil UI

Most component libraries scatter design decisions across dozens of files. Change a border radius? Hunt through every component. Update a color? Grep and pray.

Sigil takes the opposite approach.

Your entire design system lives in one DESIGN.md file — 519 tokens across 33 categories. Edit the markdown, run sigil design compile, and every component updates. Colors, spacing, radii, shadows, motion, page composition — all from one source.

How it compares to traditional component libraries

Radix, Chakra, MUI, etc.Sigil UI
ThemingEdit config files + CSS variables + component filesEdit one token file
Agent workflowAgent modifies scattered Tailwind classes or style propsYour agent edits one file
PresetsCopy a config from a blog postnpx @sigil-ui/cli init --preset sigil
Token systemCSS variables, manually maintainedThree-layer architecture: primitive → semantic → component
Shipping themes"Just change the CSS variables"Ship a preset, not a config file

Quick start

# Install the packages
pnpm add @sigil-ui/tokens @sigil-ui/components

# Or scaffold a new project
npx @sigil-ui/cli init

Import the token CSS and start building:

import "@sigil-ui/tokens/css";
import { Button } from "@sigil-ui/components";

export default function App() {
  return <Button variant="primary">Get started</Button>;
}

Token architecture

Sigil uses a three-layer token system:

  1. Primitive — raw values like oklch(0.65 0.15 280) or 8px
  2. Semantic — purpose-driven aliases like --s-primary or --s-radius-md
  3. Component — scoped tokens like --s-card-radius consumed by individual components

Every layer compiles to CSS custom properties with the --s- prefix. Components only read variables — they never hardcode values.

/* Your token file controls everything */
:root {
  --s-primary: oklch(0.65 0.15 280);
  --s-radius-md: 8px;
  --s-shadow-md: 0 0 0 1px rgb(0 0 0 / 0.06), ...;
}

Packages on npm

PackageDescription
@sigil-ui/tokens519 tokens, 33 categories. Compiles to CSS, Tailwind v4, W3C JSON.
@sigil-ui/components350+ token-driven React components
@sigil-ui/presets46 curated preset bundles (500+ tokens each)
@sigil-ui/primitives40+ headless primitives (Radix + Base UI)
@sigil-ui/cliCLI for init, design, preset, add, inspire, doctor
create-sigil-appOne-command project scaffolding

Next steps

Studiodefault
Presets
primary
secondary
background
surface
text
border
accent
success
warning
error
info
display
body
mono
heading wt
600
heading trk
-0.025em
base size
16px
page margin
24px
section pad
64px
card pad
24px
grid gap
24px
stack gap
12px
global
8px
button
8px
card
12px
input
6px
border w
1px
style
card border
card shadow
btn shadow
glow
spring
Type
Duration
0.20
Bounce
1.00
easing
cubic-bezier(0.16, 1, 0.3, 1)
fast
150ms
normal
200ms
slow
300ms
hover scale
1.02
press scale
0.98
hover lift
-1px
stagger
50ms
weight
transform
hover
active scale
0.98
min-width
0px
letter sp
0.000em
icon gap
8px
shadow
hover
border
shadow
padding
24px
title size
1px
title wt
desc size
0.875px
aspect
outline
height
36px
focus ring
2px
focus ring
h1 size
2.25px
h2 size
1.875px
h3 size
1.5px
h4 size
1.25px
weight
tracking
-0.020em
leading
1.20
pattern
pattern α
0.03
noise
gradient
grad angle
180°
height
50px
blur
12px
border
padding
24px
item gap
24px
min-height
600px
padding Y
80px
content-max
680px
layout
title size
56px
desc size
18px
padding Y
64px
max-width
600px
layout
title size
36px
padding Y
48px
columns
4
gap
36px
content-max
1200px
rail-gap
24px
grid-cell
50px
cross-stroke
1.5px
navbar-h
50px
bento-gap
16px
grid lines
dots
cell borders
cell bg
Gutter
Margin
content
hero
navbar
rail visible
enabled