Easel Editor

The app half of the Easel design system: a prompt-to-canvas AI design editor. A three-pane shell wraps a dotted paper canvas, and the warm-paper / coral identity carries into every editor surface — top toolbar, tool panels, prompt UI, floating canvas bar, on-canvas object toolbar, layers tree, inspector, and the AI prompt modal.

Editor Colors

Panels read as bone; the canvas is a dotted paper-dark field; coral marks selection, the Generate action, the active tool, and focus rings.

Surfaces

Canvas
--paper-dark
#ddd2b6
Panel
--bone
#f7f1de
Toolbar
--paper-warm
#ece4cf
Artboard / fields
--paper
#efe7d2

Accent & Text

Coral — selection/CTA
--coral
#ed6f5c
Primary text
--ink
#15140f
Muted
--ink-mute
#5a5448
Faint / labels
--ink-faint
#8b8676

Selection & State

Selection outline
--coral
#ed6f5c
Selected row fill
coral / 10%
rgba(237,111,92,.10)
Row hover
--line-faint
rgba(21,20,15,.05)
Preview banner
mustard / 20%
rgba(233,185,74,.20)

Typography

Editor chrome uses Inter Tight for controls and panel titles, Inter for layer rows and fields, JetBrains Mono for numeric inspector values, and Playfair Display for the AI prompt modal headline.

Panel title · Inter Tight · 18px · 700
Inspector
Control · Inter Tight · 13px · 500
Generate
Label · Inter Tight · 10px · 1px · uppercase · ink-faint
Style presets
Layer row · Inter · 13px · 400
Headline group
Mono value · JetBrains Mono · 12px
X 240  Y 120  W 220  H 150
Modal title · Playfair Display · 32px · 400
Create anything

Layout

Fixed three-pane grid under a top toolbar.

TokenValueUse
topbar-height56pxTop toolbar
left-panel-width280pxTool / asset panel
right-panel-width300pxInspector
layer-row-height32pxLayers tree rows
object-toolbar-height40pxOn-canvas object toolbar
prompt-bar-max-width640pxFloating prompt bar

Three-Pane Shell & Top Toolbar

Left tool/asset panel (280px, bone), center canvas (dotted paper-dark), right inspector (300px, bone), under a 56px paper-warm top toolbar with file name, autosave, zoom, and the primary CTA.

Top toolbar
Untitled poster Saved 100%

Prompt-to-Generate Panel

Textarea (paper, coral focus ring), reference-image chips, a 4-up style-preset grid (selected gets a 2px coral outline), full-width coral Generate.

Prompt panel
Describe what you would like to see
A vintage travel poster of a coastal town at sunset, warm grain, bold serif title…
reference-01.png × palette.jpg ×
Style presets

Floating Canvas Prompt Bar

A single prompt input floating over the canvas as a bone pill, with a 1/2/4 variation toggle and an inline coral Generate.

Floating prompt bar
Make the sky more dramatic…
124

On-Canvas Object Toolbar

Floats above a selected object: opacity, apply-effects, set-as-background, overflow, and a coral delete. Bone surface, 12px radius, card shadow.

Object toolbar
🗑

Layers Tree & Inspector

Layers are 32px rows with visibility toggles; selected rows get a coral-tint fill. The inspector exposes JetBrains Mono number fields and coral toggles.

Layers
👁 Background
👁 Headline group
👁 Title
👁 Subtitle
👁 Photo
Frame
X 240Y 120
W 220H 150
Settings
Snap to grid
Lock aspect

Full Editor Mock

A condensed reproduction: top toolbar, left layers panel, dotted canvas with a selected artboard and object toolbar, right inspector.

Untitled poster Saved 100%
Layers
👁 Background
👁 Headline
👁 Title
👁 Photo
🗑
Frame
X 240Y 120
W 220H 150
Opacity
100%
Settings
Snap to grid

Tailwind Reference

The paired design-system-app.json ships a tailwind block with theme extensions and editor component recipes. Drop it into tailwind.config.ts → theme.extend (or mirror into @theme for v4) and treat the recipes as required source instead of default Tailwind tokens.

Token mappings

Tailwind classResolves to
bg-paper-dark (canvas)#ddd2b6
bg-paper-bone (panels)#f7f1de
bg-paper-warm (toolbar)#ece4cf
bg-brand-coral / ring-brand-coral/30#ed6f5c / focus ring
data-[selected=true]:bg-brand-coral/10selected layer fill
font-mono (number fields)JetBrains Mono
h-topbar / h-856px / 32px layer row

Component recipes

RecipeClass pattern
editorShellgrid grid-cols-[280px_1fr_300px] grid-rows-[56px_1fr] h-screen bg-paper-dark
topToolbarcol-span-3 flex items-center gap-4 h-topbar bg-paper-warm border-b border-line px-4
canvasrelative overflow-hidden bg-paper-dark bg-canvasDots [background-size:20px_20px]
promptTextareaw-full rounded-lg bg-paper border border-line px-3.5 py-3 font-body text-field focus:border-brand-coral focus:ring-2 focus:ring-brand-coral/30
stylePresetaspect-square rounded-lg border border-line bg-paper data-[selected=true]:border-2 data-[selected=true]:border-brand-coral
generateButtonw-full rounded-pill bg-brand-coral text-white py-3 text-field font-medium shadow-coral hover:bg-brand-coralSoft
floatingPromptBarflex items-center gap-2 max-w-[640px] rounded-pill bg-paper-bone border border-line pl-4.5 pr-2 py-2 shadow-soft
objectToolbarinline-flex items-center gap-1 rounded-lg bg-paper-bone border border-line p-1 shadow-card
layerRowflex items-center h-layer-row px-3 font-body text-control text-ink-soft rounded-md hover:bg-line-faint data-[selected=true]:bg-brand-coral/10 data-[selected=true]:text-ink
numberFieldrounded-md bg-paper border border-line px-2.5 py-1.5 font-mono text-monoValue text-ink
aiPromptModalrounded-2xl bg-paper-bone p-8 shadow-modal · title font-serif text-modalTitle text-ink

Downloadable Assets

Pair this page with the matching JSON token files. Use the toolbar at the top to copy the LLM-ready prompt or download HTML/JSON/zip bundles.