After Effects Hub Design System

A code-truthful spec for a 10-module AI extension panel. The art direction is native AE — dark charcoal, tight spacing, a single purple/blue accent family. The panel should feel like it was built by Adobe, not bolted on. Every token here maps to a real CSS variable in the panel's stylesheet; when code and this doc disagree, code wins.

2 font families 10 AI modules 1 accent family v1.0
01 · Identity

Disappear into AE. Then do something it can't.

A panel built inside After Effects' own UI language. Three principles define where the design lives and where it departs.

The panel is a tool, not a product.Charcoal surfaces, tight spacing, monospace labels. It looks like it came with AE.
Accent = actionable.The purple/blue accent appears only on interactive elements — buttons, active module, progress. Never decorative.
Results land on the timeline.The success state isn't a notification — it's a new layer in the comp. The work is the feedback.
02 · Color

Dark charcoal, one accent, status signals.

The palette is built for dark surfaces at all times. No light mode. Background tokens run deep charcoal to near-black; text inverts to near-white; and the purple/blue accent is the only saturated hue in the interactive layer.

Backgrounds — dark panel surfaces

bg
#16141F
Page background, deepest surface
bg-card
#1E1B2C
Card surface, panel sections
bg-elevated
#242135
Elevated cards, hover state

Text — near-white scale

text
#E8E6F0
Primary, headings, labels
text-dim
#B8B2CC
Body, descriptions
text-muted
#8A82A6
Captions, helper text, eyebrows

The accent family — purple to blue

brand-primary
#7B6BF5
Primary action, active module, focus ring
brand-mid
#9A8DF7
Hover state, eyebrows
brand-deep
#5A4CD4
Active/pressed state
brand-cyan
#4DC8E8
Secondary accent, AE blue, progress

Status signals

success
#3DD68C
Module complete, layer placed
counter
#F5854B
In-progress, render queue
warning
#F5C842
Caution, slow API
danger
#F5505A
Error, failed module

Gradients

g-ae
purple → blue
Panel icon, primary CTA, module dot
g-complete
green → blue
Success state, layer placement
03 · Typography

Inter body, JetBrains Mono for system labels.

Inter is the workhorse — legible, technical, and the same family used across modern creative tooling. JetBrains Mono appears only on labels that need to read as system output: eyebrows, status strings, the spec labels in this doc.

Inter 800Display · panel header · result name
Background Removed
Inter 700Module name · section heading
Image Expansion
Inter 400Body · help text · descriptions · 16px
Select a footage layer, pick a module, and the result lands back on your timeline — no app-switching, no file management.
JetBrains Mono 600Eyebrows · status · counts · 11px uppercase
MODULE · IMAGE EXPAND · STATUS: READY
04 · Spacing

A base-4 scale, tighter than a consumer app.

Eight steps. Panel UIs need tighter rhythm than marketing sites — the scale runs compact so the panel can surface information without feeling sparse.

sp-1
4px
sp-2
8px
sp-3
12px
sp-4
16px
sp-5
24px
sp-6
32px
sp-7
48px
sp-8
64px
05 · Radius

Tight radii — this is a professional tool.

AE's own panels use minimal border-radius. The Hub matches that: 6px for chips, 10px for buttons, 14px for cards. Rounded enough to avoid harshness, sharp enough to read as tooling rather than consumer software.

Pill Status badges, module tags, CTAs
r-pill · 999px
Card Panel sections, module cards
r-lg · 14px
Button Primary actions, module triggers
r-md · 10px
Chip Parameter tags, small selectors
r-sm · 6px
06 · Elevation

Shadows are dark, not grey. Glows are purple.

On dark surfaces, drop shadows use near-black alpha. Glows use the primary purple — so interactive elements pulse in the brand colour, not a generic white haze.

sh-sm
sh-card
glow-purple
glow-cyan
07 · Panel surfaces

Layered dark glass — no light bleed.

The panel uses three surface tiers: the page background, the card surface, and the elevated card for hover/active states. All three are dark. There is no glass-blur light treatment — the panel blends with AE's own UI.

bg-card · #1E1B2C
Module card surface. Appears against the darker page background.
bg-elevated · #242135
Elevated card — hover and selected state, input backgrounds.
08 · Components

Built from the same dark token set.

Key components rendered on the AE panel stage:

Buttons

Status pills

Ready
Processing

Module tiles

Expand
IMAGE
Upscale
IMAGE
Remove BG
IMAGE
Generate Video
VIDEO
Audio
AUDIO
09 · Motion

Feedback, not animation.

Short, purposeful, and never distracting from the timeline. With prefers-reduced-motion on, every transition collapses to a plain opacity fade.

Result drop 280ms ease-out, single bounce on layer placement
done
Module complete Label scales 1 → 1.15 → 1
READY
Status update Fade in 0.92 → 1, 220ms
Module active Purple glow pulses, 1.8s cycle
10 · Voice

Terse, direct, never chatty.

The panel talks like a professional tool, not a consumer app. Status strings are short. Error messages tell you what to do. Copy matches the density of the AE UI it lives inside.

We say

"Background removed. New layer added."

"Select a footage layer to continue."

"Upscale complete — 4× ready."

We don't say

"Wow! Amazing result! Here's your file!"

"Hmm, something went wrong. Try again!"

"Our AI is working its magic for you…"

11 · Doing it wrong

Four ways to break the feel.

If a new module or screen does any of these, it doesn't belong in the panel.

  • Don't use a light background. There is no light mode. Every surface is dark charcoal. A light card would read as broken, not designed.
  • Don't put saturated colour in the chrome. The purple/blue accent belongs to interactive elements only. Module icons use it, status uses status colours. Decorative saturation dilutes the signal.
  • Don't open a dialog for a result. Results are layers, not notifications. If the outcome is a file, it goes to the comp. If it's a message, it goes to the panel status bar.
  • Don't break the raw token contract. A new screen must use var(--brand-primary) etc, never raw hex. The whole system re-themes by swapping the :root block.
12 · Source of truth

Where every token actually lives.

This page documents the system; the code defines it. When they disagree, the code wins.

CSS Tokenssrc/panel/styles/tokens.css
Componentssrc/panel/components/
AI Modulessrc/modules/
AE Bridgesrc/ae-bridge/index.jsx
GitHub repoilan-stack/after-effects-hub →