8.9 KiB
2026 UI/UX Standard Reference
Version: 2.0.0 Last Updated: 2026-03-14 Applies To: ALL user interface implementations, component libraries, design systems
Purpose
This document establishes the 2026 UI/UX standard for AI agents implementing user interfaces. These patterns are optimized for AI generation — agents can compose complex UIs by combining proven, pre-validated components instead of designing from scratch.
It defines:
- Component patterns - Reusable UI building blocks
- Design tokens - Consistent visual language
- Interaction models - User behavior expectations
- Accessibility integration - WCAG 3.0+ embedded
- Cross-platform adaptation - Responsive, adaptive patterns
Agent-GDUI-2026 Capabilities
Agent-GDUI-2026 provides specialized UI/UX capabilities:
| Capability | Scope | Output |
|---|---|---|
| Component Generation | React, Vue, Svelte, HTMX | Accessible by default |
| Design Token Sync | Colors, spacing, typography | Platform-adapted |
| Interaction Modeling | Hover, focus, active states | Multi-modal |
| Animation System | Transitions, easing, duration | Reduced-motion aware |
| Layout Adaptation | Mobile, tablet, desktop, XR | Breakpoint-aware |
| Theme Management | Light, dark, high-contrast | System-sync |
AI Generation Optimization
These component patterns exist so agents don't reinvent UI primitives on every generation:
- Pre-validated accessibility — every pattern meets WCAG 3.0+ out of the box
- Consistent design tokens — spacing, color, and typography are standardized
- Composable building blocks — combine patterns for complex interfaces without custom design work
CORE COMPONENTS
Foundational Components
| Component | Purpose | Accessibility |
|---|---|---|
| Button | Primary action trigger | Keyboard, screen reader, focus |
| Input | Data entry field | Label, error, autocomplete |
| Modal | Overlay dialog | Trap focus, ESC close, aria |
| Navigation | Route/section change | Landmark, aria-current |
| Card | Content container | Semantic heading, alt |
| List | Item collection | Role, tabindex, keyboard |
| Table | Data grid | Scope, caption, keyboard nav |
| Form | Input grouping | Fieldset, legend, error summary |
Advanced Components
| Component | Purpose | Constraint |
|---|---|---|
| SpatialViewport | XR container | Comfort zone bounded |
| DepthLayer | Z-axis positioning | Max 3 layers |
| MotionController | Animation manager | Reduced-motion detection |
| AudioSpatializer | 3D audio positioning | HRTF calibration |
| HapticFeedback | Touch feedback | Platform API sync |
| GestureRecognizer | Multi-touch input | Fallback to click |
DESIGN TOKENS
Color Palette
/* 2026 Design Token Standard */
:root {
/* Primary - Brand identity */
--color-primary: #2563eb;
--color-primary-hover: #1d4ed8;
--color-primary-active: #1e40af;
/* Semantic - Action meaning */
--color-success: #16a34a;
--color-warning: #f59e0b;
--color-error: #dc2626;
--color-info: #0284c7;
/* Neutral - Grayscale */
--color-neutral-0: #ffffff;
--color-neutral-50: #f5f5f5;
--color-neutral-100: #e5e5e5;
--color-neutral-900: #1a1a1a;
/* Contrast - AAA compliance */
--contrast-ratio-min: 7.0; /* WCAG AAA */
}
Typography Scale
/* Responsive type scale */
:root {
--font-size-xs: 0.75rem; /* 12px */
--font-size-sm: 0.875rem; /* 14px */
--font-size-base: 1rem; /* 16px */
--font-size-lg: 1.125rem; /* 18px */
--font-size-xl: 1.25rem; /* 20px */
--font-size-2xl: 1.5rem; /* 24px */
--font-size-3xl: 2rem; /* 32px */
/* Line height - Readability */
--line-height-tight: 1.25;
--line-height-normal: 1.5;
--line-height-relaxed: 1.75;
/* Weight - Semantic */
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-bold: 700;
}
Spacing Scale
/* 4pt base grid */
:root {
--spacing-0: 0;
--spacing-1: 0.25rem; /* 4px */
--spacing-2: 0.5rem; /* 8px */
--spacing-3: 0.75rem; /* 12px */
--spacing-4: 1rem; /* 16px */
--spacing-5: 1.25rem; /* 20px */
--spacing-6: 1.5rem; /* 24px */
--spacing-8: 2rem; /* 32px */
--spacing-12: 3rem; /* 48px */
--spacing-16: 4rem; /* 64px */
}
INTERACTION STATES
State Requirements
| State | Requirement | Implementation |
|---|---|---|
| Default | Base appearance | Contrast 7:1 |
| Hover | Pointer over element | 10% color shift |
| Focus | Keyboard/tab focus | 3px outline, 3:1 contrast |
| Active | Pressed/activated | 20% color shift |
| Disabled | Non-interactive | 50% opacity, aria-disabled |
| Loading | Async operation | Spinner + aria-live |
| Error | Validation failure | Red + text explanation |
Focus Indicator Standard
/* Universal focus pattern */
:focus {
outline: 3px solid var(--color-primary);
outline-offset: 2px;
outline-radius: 2px;
}
:focus:not(:focus-visible) {
outline: none;
}
:focus-visible {
outline: 3px solid var(--color-primary);
}
ANIMATION GUIDELINES
Motion Principles
| Principle | Constraint | Purpose |
|---|---|---|
| Duration | 150-300ms | Perceptible, not jarring |
| Easing | ease-out | Natural deceleration |
| Distance | Max 300px | Avoid disorientation |
| Frequency | Max 3 simultaneous | Cognitive load limit |
| Reduced Motion | Transform-only | Accessibility support |
Motion Implementation
/* Standard transition */
.transition-standard {
transition: all 200ms ease-out;
}
/* Emphasis animation */
@keyframes emphasize {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
/* Reduced motion fallback */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
RESPONSIVE BREAKPOINTS
Platform Adaptation
| Breakpoint | Width | Platform | Layout |
|---|---|---|---|
| xs | < 640px | Mobile portrait | Single column |
| sm | 640-768px | Mobile landscape | 2 column |
| md | 768-1024px | Tablet | 3 column |
| lg | 1024-1280px | Laptop | 4 column |
| xl | 1280-1536px | Desktop | 5 column |
| 2xl | > 1536px | Large desktop | 6 column |
Responsive Pattern
/* Mobile-first approach */
.container {
padding: var(--spacing-4);
}
@media (min-width: 640px) {
.container {
padding: var(--spacing-6);
display: grid;
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 1024px) {
.container {
grid-template-columns: repeat(4, 1fr);
}
}
HALT CONDITIONS
Stop immediately and report to user if ANY of these occur:
CRITICAL HALT - DO NOT PROCEED:
[ ] Contrast ratio < 7:1 (WCAG AAA)
[ ] Focus indicator missing
[ ] Keyboard navigation broken
[ ] Screen reader label absent
[ ] Touch target < 44x44pt
[ ] Animation triggers motion sickness
[ ] Reduced motion not supported
[ ] Breakpoint causes layout break
[ ] Design token undefined
[ ] Component prop mismatch
[ ] Theme sync failed
[ ] Cross-platform test failed
[ ] Interaction state unclear
[ ] Loading state missing
[ ] Error state not accessible
LANGUAGE-SPECIFIC PATTERNS
TypeScript/React
// Accessible component pattern
interface ButtonProps {
variant: 'primary' | 'secondary' | 'danger';
size: 'sm' | 'md' | 'lg';
disabled?: boolean;
loading?: boolean;
ariaLabel?: string;
onKeyDown?: (e: KeyboardEvent) => void;
}
// Design token usage
const token = useDesignToken();
const color = token.color.primary;
Rust (Leptos/Yew)
// Component with accessibility
#[component]
fn Button(
variant: String,
#[prop(default = "md")] size: String,
aria_label: Option<String>,
) -> Html {
html! {
<button
class={format!("btn-{variant} btn-{size}")}
aria-label={aria_label}
/>
}
}
Go (HTMX)
// Server-rendered accessible button
func Button(w http.ResponseWriter, r *http.Request) {
tmpl := `
<button
class="btn-primary"
aria-label="Submit form"
hx-post="/submit"
hx-indicator=".loading"
>Submit</button>
`
io.WriteString(w, tmpl)
}
RELATED DOCUMENTS
| Document | Purpose |
|---|---|
| AI_ASSISTED_DEV.md | AI development patterns and prompt-to-UI scaffolding |
| STATE_MANAGEMENT.md | Client/server state architecture |
| ACCESSIBILITY_GUIDE.md | Full WCAG 3.0+ compliance guide |
Authored by: Agent-GDUI-2026 Specialist Document Owner: UI/UX Standards Team Review Cycle: Quarterly Last Review: 2026-03-14 Next Review: 2026-06-14 Compliance: WCAG 3.0+ Level AAA