CHANGELOG Multi-brand themes are live in v3.4

Where your components live,
and where your team agrees on them.

Pavilion is the docs surface for your design system. Tokens, components, contribution rules — versioned, playable, and reviewed by the people who use them.

Synced from Figma · 38s ago
OKLCH tokens · 4 brands
v3.4.1 · main@a8e1d2c
pavilion.brightwave.com/components/button
K
Components Button

Button

v3.4.1 · stable

A clickable trigger used for actions. Supports six variants, four sizes, and optional leading or trailing icons.

Button.tsx · react
import { Button } from "@brightwave/ui"

export default function Example() {
  return (
    <Button variant="solid" size="md" leadingIcon={PlusIcon}>
      Create project
    </Button>
  )
}
Component systems hosted on Pavilion · 408 teams
Linnea forecast Glide Vantage Mercury Brightwave Nimbus Coast Halcyon quartermast Northwind Foundry & Co Linnea forecast Glide Vantage Mercury Brightwave Nimbus Coast Halcyon quartermast Northwind Foundry & Co
408
Component libraries hosted
84
Avg components per system
12,408
Versions tracked, all-time
2.4 hrs
Designer-eng round-trips saved per PR
— What Pavilion does

A docs surface, a contract, and a conversation.

01 · Figma sync

Tokens leave Figma. Types arrive in TypeScript.

Pavilion publishes your variables as a typed package on every Figma "Publish library". Rename a color, every color.fg.subtle in your app gets the new value — and a deprecation alias for safety.

  • OKLCH-first, sRGB & Display P3 fallback
  • Mode-aware (light, dark, hi-contrast)
  • Brand collections, per-product overrides
tokens.json · Generated · do not edit
1
2
3
4
5
6
7
8
9
10
11
{
  "color": {
    "fg": {
      "default": "oklch(0.18 0 0)",
      "subtle":  "oklch(0.42 0 0)"
    },
    "accent": {
      "solid":  "oklch(0.66 0.18 27)",
      "contrast": "oklch(0.98 0 0)"
    }
  }
}
Synced 38s ago · Figma · "Brightwave / 2026 refresh"
Button v3.3.2 → v3.4.0
soft breaking
v3.3.2
v3.4.0 current
  • +radius 3px → 6px (token: radius.md)
  • +vertical padding 6px → 8px
  • ~font-size scales with size token
02 · Version diffs

See what actually changed — pixel by pixel.

Every release records a rendered diff for every component variant. Stakeholders sign off on the visuals, not the changelog text. Reviewers get @-mentioned in the right Slack channel for the surfaces they own.

  • Snapshot diffs across all variants + sizes
  • Auto-derived "soft breaking" / "breaking" labels
  • One-click migration codemods for renames
03 · Contribution workflow

A real review — not a Notion thread.

Anyone can propose a component change. Pavilion renders the before/after, runs A11y checks, requires sign-off from a code owner and a design owner, and merges the PR — including the docs page and a migration note.

  • Per-component CODEOWNERS (design + eng)
  • WCAG 2.2 checks block the merge
  • Slack + Linear notifications you can mute
pavilion / PR #284
ready to merge opened 2d ago
Combobox: support clearable + size=xs
priya.anand wants to merge 4 commits into main from combobox-clearable
A11y checks · 12 variants all pass
Design review · Hana Suzuki approved
Code review · Marcus Tobin approved
Visual diff · 6 surfaces affected view →
will publish v3.4.2
— Tokens

Generated, never hand-typed.

Tokens are the contract. Pavilion compiles them to every consumer format you need — and refuses to publish if a token loses its name between releases.

color.fg + color.bg + color.accent 84 tokens · OKLCH
4 brand collections P3 + sRGB · WCAG mapped
Generated · do not edit
1
2
3
4
5
6
7
8
9
10
11
12
13
// Brightwave / 2026 refresh · light mode
{
  "$schema": "https://pavilion.dev/tokens/v1",
  "color.fg.default": { "$value": "oklch(0.18 0 0)" },
  "color.fg.subtle":  { "$value": "oklch(0.42 0 0)" },
  "color.bg.default": { "$value": "oklch(0.98 0 0)" },
  "color.accent.solid": {
    "$value": "oklch(0.66 0.18 27)",
    "$contrast": { "AA": 7.1, "AAA": 4.6 },
    "$figma":     "Brightwave / Accent / Solid"
  },
  "radius.md": { "$value": "6px", "$wasInV3_3": "3px" }
}
Compiled to 5 platforms · 38ms Signed: priya.anand · 12 min ago
— ⌘K search

Type a property. Find every component using it.

Pavilion indexes component code, prop names, tokens, and rendered surfaces — so "destructive" finds the Button variant, the Toast color, and the empty-state illustration on the same screen.

destructive|
esc
Components · 3 results
variant Button variant="destructive"
variant Toast tone="destructive"
variant AlertDialog intent="destructive"
Tokens · 2 results
color.bg.destructive oklch(0.62 0.20 27)
color.bg.destructive.subtle oklch(0.96 0.06 27)
Guides · 1 result
When to use a destructive action pattern · 3 min read
↑↓ navigate open . filter scope 22ms · 6 indexes

MDX everywhere

Write prose next to a live component, drop your own React inline. <Playground>, <Tokens>, and <Diff> ship in the box.

Adoption analytics

Pavilion crawls your monorepo nightly to find rogue <button> usage. See which apps adopted the new Combobox and which are still on v3.2.

72% adoption

i18n & brand modes

Render the same component under 4 brands or 12 locales — preview side-by-side, validate copy length, catch line-break bugs before they ship.

en-US de-DE ja-JP ar-EG · rtl

Monorepo-aware

Turborepo, pnpm, Nx, Yarn workspaces — Pavilion reads your build graph and only re-renders the components that actually changed. Mean rebuild: 3.4s.

— Pricing

Per-system, not per-seat.

Your whole team gets editor access on every tier. We don't think a docs site should count designers separately.

Open Source forever
$0 / system / month

Public component libraries, all features, "Made with Pavilion" footer.

Start free →
  • Public repo only
  • Unlimited components & tokens
  • Figma sync (manual trigger)
  • 3 brands, 4 locales
  • ·Community Discord support
Most popular
Team 5 seats
$129 / system / month

Private libraries, Figma 2-way sync, contribution workflow.

Start 14-day trial →
  • Private repos
  • 5 editor seats, unlimited readers
  • Figma sync, every publish
  • Contribution workflow + CODEOWNERS
  • Adoption analytics across apps
  • Slack & Linear notifications
Org unlimited
$499 / system / month

Multiple systems, SSO, audit, Figma Enterprise integration.

Book a call →
  • Unlimited systems & editors
  • SAML SSO + SCIM
  • Figma Enterprise (variables API)
  • SOC 2, audit log (7y retention)
  • Self-hosted runner on EU/US/AP
  • Named CSM, 99.95% SLA
— Customers

Built by people who argued about button radii for years.

We moved 84 components off Storybook and onto Pavilion in a week. Design-eng tickets dropped −38% vs Q3. Designers actually open the docs now.

Hana Suzuki
Design Systems Lead · Glide

The 2-way Figma sync is the feature I bring up in every interview now. Tokens stay in shape, even when a designer renames a collection. 412 PRs auto-migrated.

Ines Calderón
Head of Eng · Brightwave

Adoption analytics changed our roadmap. We were going to deprecate Combobox v2 in Q1; turns out three teams were still on it. We pushed it to Q3 and shipped a codemod.

Marcus Tobin
Founding Engineer · Forecast

Questions we keep getting.

Does it integrate with Storybook, or replace it? +
Most teams replace it. If you can't, Pavilion reads .stories.tsx files directly — playground args become our props inspector, MDX docs render as-is. We don't fight your Storybook config; we just absorb it.
How does Figma sync work — bi-directional? +
Designer-driven: Figma → Pavilion → typed package, on every "Publish library". Engineer-driven flows back: changing a token's value in code opens a PR on the Figma file's owner. Renames generate aliases on both sides so nothing breaks mid-migration.
Can I version design tokens and component code separately? +
Yes — tokens version under @your-org/tokens and components under @your-org/ui. Pavilion enforces a compatibility matrix: shipping [email protected] with [email protected] triggers a build warning with a one-line fix.
What about MDX for hand-written prose docs? +
Native. Every component page is MDX you can edit. Pavilion auto-injects the props table, A11y report, and version timeline — but you can override any block. The "Patterns" section is 100% your MDX, no schema.
Does it work with monorepos like Turborepo? +
Turborepo, pnpm workspaces, Nx, and Yarn Berry — all supported with a one-line config. We hook into the build graph: when @your-org/tokens changes, only the components that consume it rebuild. Median rebuild on a 84-component system: 3.4s.

Stop arguing in Figma comments. Start agreeing in Pavilion.

Free for public component libraries. Ten minutes to a docs site you'd want to use.