Atomica design system: a navigable reference of the approved canonical components, with a light/dark toggle and one page per component.

Atomica approved canonical components

Icons

The full Hugeicons free set - 6,156 icons from @outbuild/icons. Search by name; click an icon to copy its id, or shift-click to copy its SVG.

loading...

Color roles

Semantic color tokens (DS-1). Brand violet is the interactive accent (D4). Feedback-warning and feedback-info are new locked tokens. All flip with the theme.

Surface & text

surface
surface-2
hover
text
text-2
border

Accent & feedback

brand
success
warning
danger
info

Role badges (the shared 8-role axis)

primarysuccesswarningerrorinfoneutral

Radius

Locked scale (D1): badge 3, control 6, container 10, full pill. Controls squared up from 4 to 6; containers from 8 to 10.

badge 3
control 6
container 10
full

Sizing & spacing

Control heights and the 4px spacing grid, spelled-out (D2): xsmall 20 / small 26 / medium 32 / large 40.

Control heights

xsmall 20
small 26
medium 32
large 40

Spacing (4px grid)

xsmall 4
small 8
medium 12
large 16
2xlarge 24

Typography

Inter for UI, SF Mono for code. Weights 400 / 500 / 600 / 700. Sentence case everywhere (Principle 7) - no all-caps.

Headline 20 / 600
Title 16 / 600
Base medium 14 / 500 - button labels
Base regular 13 / 400 - body & inputs
Small 12 - secondary text
Xs semibold 11 - badges & labels
Mono 12 - {color.brand.500} = #5b5bd6

Icon

The base glyph behind every leading/trailing slot. Color inherits currentColor; size is the only variant.

small 16
medium 18
large 20
xlarge 24
2xlarge 32

Color inherits the parent

Button

The 7-Type ladder (D6). Base names are neutral; the colored siblings use brand. Primary is brand - the main CTA.

Type ladder

Sizes

With icons, icon-only, loading, disabled

Inverted (on a dark premium surface)

Input

A field group: label, box, helper. Focus ring is brand (D4); error turns helper red. Mandatory shows "Label", optional shows "Label (Optional)".

States

With label, leading icon & helper

Base color

Used to derive the full scale.

Sizes

Select

A read-only trigger with a trailing chevron; clicking opens the Menu. Box tokens match Input.

States

Choose a format
CSS variables
Disabled

With label & leading icon

Export format (Optional)
Design tokens (DTCG)

Textarea

The Input field group, multi-line. Same tokens and focus behaviour; optional character counter and resize grip.

Notes
Generate a calm, professional palette with a violet primary and warm neutrals.

Describe the system you want.

68 / 280

Badge

A small label. Type splits into tag / role / count; Role is the shared 8-role axis, Category is the collection-type palette. Sentence case, radius 3.

Role

Primary Success Warning Error Info

Category (collection types)

Primitive Alias Semantic Component Custom

Count, with icon, small

24 AI New

Chip

A compact pill. Removable = a trailing x; selectable = a selected State; static neither. A represented color sits in the leading slot as a swatch.

States

Default Selected Disabled

With leading swatch & trailing remove

Violet 500 Brand From image

Divider

A 1px line in border-default. Horizontal or vertical; reused by menus, sections and toolbars.

Section one

Section two
Inlineseparateditems

Toggle

Track + thumb. On-track is brand (D4). With a label it becomes an auto-layout row; label can sit left or right.

States & sizes

With label

Include dark mode

Checkbox

Square box (radius 4) with check or dash. Checked fill is brand (D4).

Unchecked Checked Indeterminate Disabled

Radio

Circle with an inner dot when selected; the ring and dot are brand. Grouped into a single-select stack.

Generate from a base color Generate from a description Import from a file

Stepper

A [-] value [+] numeric control. The buttons are icon-only secondary buttons; bounds disable the matching button. Not brand-accented.

11
Steps7

Slider

Track + filled portion + thumb, all brand. Used by the channel sliders in the color editor.

Lightness
48

Avatar

Initials, image or icon; circle or rounded; neutral background by default. Used for collections and the user profile.

MI AT JS KD

Swatch

A color tile - the product's core atom. The fill is the color itself (utility, not a token). Selected shows a brand ring; an optional hairline border keeps light fills legible.

Sizes & shape

Selected, border, gradient

Spinner

Loading indicator; color inherits currentColor. Ring and dots are indeterminate; progressive fills to a percentage with rounded caps.

ring
dots
warning tone

Progress bar

A horizontal determinate bar with rounded ends. Tone is brand by default; warning and danger signal a limit (the trial meter uses these).

Brand - 64%

Warning - 85%

Danger - 96% (near the limit)

Skeleton

A muted loading placeholder with a shimmer. Shapes: line / text / block / circle / pill.

Tooltip

A tiny non-interactive hint: dark background, inverse text, optional pointer arrow. Distinct from Popover (which holds interactive content).

Copy hex WCAG AA - 4.8:1

Resizer

A draggable handle for split panes (e.g. the AI dock). Hover and dragging show a brand line.

default
dragging

Thumbnail

A small image thumbnail with an optional remove button - used by AI attachments.

Scroll area

A scrollable container with edge fades and a thin styled scrollbar - the consistent scroll treatment across the UI.

Atomica generates a full color system from one base color using OKLCH. The scale stays perceptually even across hues. Tokens export to eight DTCG-compliant formats. This area scrolls; the edges fade to hint at more.

Menu

A list of action rows in a raised container (radius 10). Items carry leading/trailing icons; selected is brand, danger is its own type, with dividers between groups.

Tabs

Two types: underline nav tabs (brand underline on the active tab) and a segmented pill control.

Underline

ColorsTypeSpacing

Segmented

List item

The canonical horizontal row: leading slot + label (+ secondary line) + trailing slot. Selected is a brand highlight. Composes other components in its slots.

brand-500
#5b5bd6
success-500
#16a34a
Marketing site
42 tokens

Card

One container primitive (radius 10). Standard puts an icon over a title and description; panel uses a header bar then a body. Background tone is applied per context.

Generate a system

Turn one base color into a full, accessible scale.

Export
Choose from eight DTCG-compliant token formats.

Modal

A centered dialog over a blocking scrim; flex-column so the body scrolls between a sticky header and footer (radius 10). One unified Modal across the plugin.

Popover

A floating panel for arbitrary content (vs Menu's action rows). Header, close, footer and scroll are booleans; the body is a slot.

History

Generated 2 minutes ago

Alert

An inline contextual message toned by status: a subtle tinted box with a status icon. Distinct from Banner. Tones: info / success / warning / danger.

Heads up

This palette has two near-identical greens.

System applied to the file.

Contrast on grade 300 is below AA for body text.

Couldn't reach the AI service. Retry.

Banner

A prominent full-width notice with a real CTA button - more prominent than Alert. A full subtle tint and full border, no single-sided accent (Principle 8).

Accordion

A single collapsible section: a header with a trailing chevron and a collapsible body. A group is a stack of these.

Primitives
The raw color ramp - 11 grades from a base hue.
Semantics

Empty state

A centered placeholder for an empty area: icon, title, description and an optional CTA button.

No collections yet

Create your first token collection to get started.

Progress steps

A multi-step indicator: nodes plus connectors. Completed and current are brand; upcoming is muted. The connector is brand up to the current step.

Base
2Scale
3Export

Code block

A monospace viewer with an optional header (filename + copy/download). The syntax palette stays utility.

tokens.json
"brand-500": {
  "$value": "#5b5bd6",
  "$type": "color"
}

Reference picker

A searchable, grouped selector for a token reference - the one canonical picker. Composes Input + List item + Swatch + Popover.

Primitives

violet-500
violet-400

Toolbar

A row of actions (mostly icon buttons) with an optional title and group dividers. Composes Button + Divider.

Preview

Stat

A label + value metric, stacked or inline. Used in harmony stats, the contrast summary and palette metadata.

11Grades
4.8:1Contrast
8formats

Chat box

The AI composer (promoted from bespoke): an auto-grow field with an attachments row, a leading action and a brand send button. Focus border is brand.

Make the greens warmer and add a dark mode...
From selection

Message bubble

One conversation turn. Assistant is left-aligned plain content (no bubble, no avatar) with a header + feedback row; user is a right-aligned neutral bubble with a squared corner.

Pull a palette from this brand and make it accessible.
Atomica
Here's an accessible scale from your base violet. Grade 300 was nudged to pass AA on white.

Palette strip

A horizontal row of color stops - the reusable inline palette. Layout strip is a row; stack is overlapping swatches capped with a +N count (for pasted-color echoes).

Strip - seamless & gapped

Stack

+5

Content block

The assistant's prose vehicle - a structured rich-text block with paragraphs, lists, bold, inline code and inline hex chips.

Why this scale works

The ramp keeps an even perceptual step using OKLCH lightness.

  • Base hue stays constant across grades
  • Chroma eases off at the light end

The primary token is #5b5bd6.

Swatch grid

A 2-D grid of swatches (vs the 1-D strip), optionally selectable with headers. Powers the Tailwind picker and the all-grades docs grid.

Table

The grid primitive. List layout is rows of fields; matrix is an N x N cross-grid - it powers the WCAG contrast matrix with swatch headers and contrast-badge cells.

WhiteSlateInk
Brand7.15.22.8
Success4.92.61.4

Reference chain

Visualizes a token's resolution: Component to Semantic to Alias to Primitive to #hex, with tier dots. The terminal node is the emphasized resolved color.

button.bg accent.brand violet.500 #5b5bd6

Before/after diff

Shows what changed in place (corner-peek): the after palette, where each changed stop carries a folded corner of its previous color. Apply / Reject actions.

2 changed

Updates

A staged-progress visualization for multi-step AI work: the token architecture assembles bottom-up, each tier solidifying as it completes.

4Componentspending
Semantics3 of 8
Aliases12
Primitives22

Suggestions

Proactive next steps at the end of a turn. Because a suggestion becomes the user's next message, each is an outgoing ghost bubble (right-aligned, dashed brand).

Quote

A prompt echo or quoted reference that grounds a multi-part answer. Muted tint, no left-border accent (Principle 8).

You asked

Pull a palette from this brand and make it accessible.

Link card

A preview of a pasted URL or an AI citation: favicon or thumbnail, title and domain. Compact or rich layout.

Refactoring UI - color palettes

refactoringui.com