SignetSignet

Design system

Signet style guide

Mark

Signet

Mark

SignetSignet

Lockup

Signet

On dark

No canonical logo existed in the Signet repositories, so this one is drawn from the protocol’s own idea: a seal whose ring is six separate arcs. The ring is visibly not one piece, and one arc is picked out in the accent — the operator set is chosen, and no single arc is the seal.

Colour

Primary

Slate blue — trust and depth. Headings, body text, dark surfaces, primary buttons.

Accent

Sunset orange to burnt umber. CTAs, selected states, warnings. Used sparingly — it should catch the eye, not fill the page.

Neutral

Warm stone. Backgrounds, borders, secondary text — warm-tinted so it sits with the accent rather than fighting it.

Semantic

Status and feedback. Sage green for healthy, warm red for failure.

Typography

Inter · 42 / 600 / -0.03em

Page headline

Inter · 24 / 600

Section heading

Inter · 15 / 600

Subsection

Inter · 15 / 400

Body text. Signet splits the trust so you can keep the control.

Inter · 14 / 400

Secondary text for descriptions and helper copy.

JetBrains Mono · 12.5

0x1234…abcd — JetBrains Mono for addresses, keys, and code

Buttons

On light

On dark

Status

OperationalOpenPendingBelow thresholdScopedUnscoped
Live and healthy Waiting Failing Unknown

Green means healthy, orange means waiting on something, red means failing, grey means not yet known. Grey and red are kept distinct throughout: a node that has never been probed has not failed.

Data display

Active wallets

12,480

Distinct users this period.

Status

Operational

3-of-5, two can fail.

Error rate

6.2%

Above the usual band.

Configuration

3-of-5
02505007501,00008-2508-2608-2708-2808-2908-3008-31
Active walletsSignatures

Copyable value

Forms

Helper text explaining what this field decides.

Feedback

Neutral

For context the reader needs but does not have to act on.

Warning

For the gap between what the platform recorded and what the network will actually enforce. This is the most important callout in the product.

Error

For a state that is actively broken — a group below its threshold, a failed deploy.

Success

For a completed action worth confirming.

Nothing here yet

Motion

Reveals are driven by an IntersectionObserver, not a library: .fx rises and fades, .fx-scale also scales, and .fx-d1 through .fx-d5 stagger. Entrances that should run on load rather than on scroll use .anim-rise. Everything eases on cubic-bezier(0.22, 1, 0.36, 1), and every animation collapses to nothing under prefers-reduced-motion.

fx-d1
fx-d2
fx-d3
fx-d4

Principles

Accent sparingly

Sunset orange marks the one action on a screen that matters, plus selected and warning states. A page with three accent buttons has none.

Say what is enforced where

The single most important thing this product communicates is the difference between a rule the operators check, a rule the chain checks, and a note to yourself. Never let those three look alike.

Errors carry their cause

Show what the server actually said. A developer debugging a group has to see the message; a generic apology sends them to the logs.

Grey is not red

Never probed is not offline. Not synced is not broken. Distinguish absence from failure everywhere.

Addresses are copyable

Anything a developer might paste into a terminal gets a copy affordance, and is truncated the same way on every screen.

Motion explains, never decorates

Reveals establish reading order and progress states show real work. Nothing moves to be interesting.