Loading...
Loading...
EaseUI's actual design tokens, component library, and animation patterns extracted from the production codebase. Reference this when building UI within EaseUI or generating components that must match the EaseUI design language.
npx skill4agent add jangtrinh/easeui-agent easeui-core-componentsSource of truth. Every token, component, and animation in this file is extracted from EaseUI's production codebase (+app/src/app/globals.css). Do NOT invent values — use these exactly.project/css/design-system.css
| Token | Hex | Usage |
|---|---|---|
| | Success, AI completion, streaming indicators, positive feedback |
| | In-progress status, warnings |
| | Errors, destructive actions, |
| | Links, progress bars, info badges, focus rings |
| | Paused status, warnings |
| | Phase badges, AI gradient accents |
| Token | Value | Usage |
|---|---|---|
| | Page background |
| | Card surfaces |
| | Frosted nav bars |
| | Headings, primary content |
| | Descriptions, metadata |
| | Placeholders, disabled text |
| | Card borders |
| | Dividers, separators |
::selection { background: rgba(73, 186, 97, 0.2); color: inherit; }| Token | Usage | Light Layers |
|---|---|---|
| Floating toolbars, navbars | 2 layers, subtle |
| Default card rest state | 5 layers, nearly invisible |
| Light hover elevation | 1 layer |
| Card | 2 layers |
| Prompt bar input focus | 3 layers with inset white |
| Dropdowns, popovers, sidebar mobile | 4 layers |
| Modal overlays | 1 deep layer |
| Primary button depth | 3 layers with inset highlight |
| Dark button depth | 4 layers with inset rim |
| Destructive button | 3 layers, orange-tinted |
| Active tab indicator | 2 layers with inset white |
| Token | Value | Usage |
|---|---|---|
| | Small badges, inputs |
| | Ghost buttons, tags |
| | Buttons (.btn default: |
| | Cards |
| | Badges, pills, scrollbars |
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
--font-code: 'JetBrains Mono', ui-monospace, monospace;🔴 MINIMUM FONT SIZE: 12px (0.75rem). Never use smaller. No exceptions.
| Class | Size | Line Height | Tracking | Usage |
|---|---|---|---|---|
| 0.75rem (12px) | 1.4 | — | Badge labels, timestamps, metadata |
| 0.8125rem (13px) | 1.5 | — | Button text, descriptions |
| 0.875rem (14px) | 1.5 | — | Body text (EaseUI default) |
| 1rem (16px) | 1.5 | — | Emphasized body |
| 1.25rem (20px) | 1.3 | — | Subheadings |
| 1.5rem (24px) | 1.2 | — | Section headings |
| 1.875rem (30px) | 1.15 | -0.02em | Page titles |
.font-medium.font-semibold.font-bold.btnHeight: 2.75rem (44px) | Padding: 0 1.25rem | Radius: 0.875rem (14px)
Font: 0.8125rem/600/-0.01em | Transition: transform 0.25s spring + shadow/opacity 0.2s| Class | Background | Text | Shadow | Usage |
|---|---|---|---|---|
| | | | Primary actions (light button) |
| | | | Secondary actions (dark button) |
| | | | Destructive actions |
| | | none | Tertiary, toolbar actions |
| State | Behavior |
|---|---|
| |
| |
| |
| |
| |
.badgeDisplay: inline-flex | Gap: 0.25rem | Padding: 0.125rem 0.5rem
Radius: --radius-full | Font: 0.6875rem/600/0.02em/uppercase| Class | Background | Text | Maps to |
|---|---|---|---|
| | | Feature shipped |
| | | Spec complete |
| | | In progress |
| | | Backlog |
| | | Paused |
| | | Priority 1 |
| | | Priority 2 |
| | | Priority 3 |
| | | Phase label |
.cardbackground: var(--bg-card);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-xl); /* 1.25rem = 20px */
padding: 1rem 1.125rem;
transition: box-shadow 0.2s ease, transform 0.2s ease;
cursor: pointer;.card:hover {
box-shadow: var(--shadow-card-hover);
transform: translateY(-1px);
}.kbdSize: 1.25rem min-width/height | Padding: 0 0.3rem
Font: inherit/0.625rem/500 | Color: zinc-400
Background: zinc-100 | Border: 1px solid zinc-200 | Radius: 0.25rem| Class | Keyframes | Duration/Easing |
|---|---|---|
| | 0.4s |
| | 0.4s same easing |
| Staggered delays: 0ms, 50ms, 100ms, 150ms, 200ms, 250ms, 300ms, 350ms | Use for sequential entrance |
| opacity 0.5→1, scale 0.97→1 | 0.35s same easing |
| Class | Keyframes | Duration | Usage |
|---|---|---|---|
| | 2.5s linear ∞ | Active AI generation border |
| | 2s ease-in-out ∞ | Shimmer overlay during generation |
| | 1.5s ease-in-out ∞ | AI activity indicator dot |
| | 1.5s ease-in-out ∞ | Indeterminate progress bar |
| | 4s linear ∞ | Premium AI processing border |
| | 1.8s ease-in-out ∞ | Loading placeholder |
| | 4s linear ∞ | Rainbow gradient border |
| Class | Keyframes | Duration | Usage |
|---|---|---|---|
| | 0.6s ease-out | Generation complete |
| Ring burst scale + fading box-shadow | 0.6s spring | Positive rating |
| Scale 0→1.2→0 + rotate 0→360° | 0.5s spring | Sparkle on positive feedback |
| | 0.3s ease-out | Validation error |
prefers-reduced-motion: reduce| Breakpoint | Behavior |
|---|---|
| Sidebar: full-width overlay |
| Sidebar: slides out ( |
| Sidebar: persistent, content offset |
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.12); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.22); }.scrollbar-none| Name | Value | Usage |
|---|---|---|
| Default | | Standard transitions (buttons, cards) |
| Spring | | Button press/release |
| Smooth decelerate | | Page transitions, reveal, device switch |
| Quick feedback | | Active press states |
| Toast exit | Paired | Toast notifications |
| File | Entries | Content | When to Use |
|---|---|---|---|
| ux-guidelines.csv | 99 | UX rules: smooth scroll, z-index, animation duration, loading states, form patterns | Any UX decision |
| web-interface.csv | 31 | WCAG: aria-labels, focus management, keyboard nav, semantic HTML | Accessibility work |
| react-performance.csv | 45 | Async waterfall, memo, rerender, cache, suspense, bundle optimization | Performance tuning |
| charts.csv | 25 | Chart type selection, color guidance, a11y notes, library recommendations | Data visualization |
| nextjs.csv | ~40 | SSR, routing, images, API routes, caching — EaseUI's stack | Next.js-specific patterns |
| icons.csv | 101 | Lucide icon name → keyword mapping | Finding the right icon |
# Find UX rules about animation
grep -i "animation" .agent/skills/easeui-core-components/data/ux-guidelines.csv
# Find React performance rules about memo
grep -i "memo" .agent/skills/easeui-core-components/data/react-performance.csv
# Find the right Lucide icon
grep -i "search" .agent/skills/easeui-core-components/data/icons.csv🔴 Before creating ANY new component, check this registry. If it exists here, use it. Only create new components if confirmed absent.
components/| Component | File | Purpose |
|---|---|---|
| | Hover tooltip with positioning |
| | Notification toasts |
| | Loading placeholders |
| | Copy-to-clipboard with feedback |
| | Zero-data state with CTA |
| | React error boundary |
| | Page entrance animation |
| | Shortcut modal/handler |
| | Color picker dropdown |
| | Tag management popover |
| | Main app sidebar navigation |
| | AI generation progress overlay |
| | Background task status |
| | User feedback collection |
| | Plan upgrade prompt |
| | Design system export |
| | Notification panel |
| | Rate generated variants |
| | Token/cost tracking |
| | CSS property editor |
| | Animated AI indicator |
| | HTML layer tree panel |
| | Animated wave background |
| | Sound effects context provider |
| | Admin panel navigation |
| | Rich text floating menu |
| | Slash command menu |
| | Markdown WYSIWYG editor |
components/editor/| Component | File | Purpose |
|---|---|---|
| | Canvas layer container |
| | Main canvas with pan/zoom |
| | Design system canvas |
| | Render artboard iframes |
| | Right-click menu |
| | Blue selection border |
| | Canvas background grid |
| | Overview minimap |
| | Artboard connection lines |
| | Zoom controls |
| | Circular control dial |
| | Editor right panel |
| | Slide-out drawer |
| | Prompt input panel |
| | Pick wireframe component |
| | Slide presentation mode |
| | Slide thumbnails |
| | Export slide options |
| | Design system card |
components/editor/sidebar-panels/| Component | File | Purpose |
|---|---|---|
| | Selected variant details |
| | Project summary |
| | Empty canvas CTA |
| | Bulk actions |
| | Generation progress |
| | Inspector help |
| | DS component view |
| | DS overview |
| | DS foundations |
| | DS usage guidelines |
| | DS item detail |
| | DS empty state |
components/icons/grep -l "icon-name" app/src/components/icons/| File | Contains |
|---|---|
| globals.css | Main app design tokens, buttons, animations (799 lines) |
| design-system.css | PM Hub tokens, badges, cards, utilities (238 lines) |
| design-tokens.ts | Token parser (markdown → structured tokens) |
| color-scales.ts | OKLCH perceptual color scale generator |
| component-catalog.ts | 24 wireframe component templates |