EchoTransact User Interface Specifications
Document Overview
This comprehensive UI specification document outlines the design system, component library, and implementation guidelines for EchoTransact's voice-initiated payment platform. It defines the visual language, interaction patterns, and technical specifications that will ensure a cohesive, accessible, and brand-aligned user experience across all touchpoints.
1. Design System Foundation
1.1 Brand Integration
EchoTransact's UI expresses our Magician/Sage brand archetype combination through a visual system that balances innovative transformation with trusted expertise.
Color System
Our color palette translates our brand identity into digital interfaces with a focus on trust, security, and innovation:
/* Primary Colors */
--color-echo-navy: #0A2342; /* Deep authoritative blue for stability */
--color-transaction-blue: #147AFC; /* Vibrant blue for energy and innovation */
--color-secure-white: #FFFFFF; /* Clean white for clarity and transparency */
/* Secondary Colors */
--color-voice-teal: #00B2CA; /* Distinctive teal for voice technology */
--color-verification-green: #4AAD52; /* Confident green for success states */
--color-platinum-gray: #E5E8ED; /* Sophisticated gray for backgrounds */
/* Accent Color */
--color-alert-coral: #FF5A5F; /* Vibrant coral for critical notifications */
Color Application:
- Primary actions use Transaction Blue to emphasize forward movement
- Voice interactions are indicated with Voice Teal elements
- Secure areas utilize Echo Navy for authority and trustworthiness
- Success states leverage Verification Green to confirm completed actions
- Alerts and critical errors use Alert Coral to draw immediate attention
Typography System
Our typography system balances professionalism with approachability:
/* Font Families */
--font-primary: 'Montserrat', sans-serif;
--font-secondary: 'IBM Plex Sans', sans-serif;
/* Font Scale */
--font-size-xs: 12px;
--font-size-sm: 14px;
--font-size-md: 16px;
--font-size-lg: 18px;
--font-size-xl: 20px;
--font-size-2xl: 24px;
--font-size-3xl: 28px;
--font-size-4xl: 32px;
--font-size-5xl: 40px;
Typography Application:
- Headings use Montserrat with medium to semibold weights
- Body text uses Montserrat for general content
- Technical information and code uses IBM Plex Sans
- Voice transcriptions use distinctive styling with Voice Teal accents
Logo Implementation
The EchoTransact logo appears consistently across the interface with specific guidelines:
- Primary Navigation: Full logo in standard colors
- Favicon/App Icon: Symbol-only version
- Loading States: Simplified animated version
- Footer: Monochrome version with legal text
- Co-branding: Clear spacing rules when appearing with merchant logos
1.2 UX Principles
Our user experience is guided by five core principles derived from our Magician/Sage brand archetype:
- Transformative Simplicity: Complex processes should feel magically simple
- Trusted Intelligence: AI capabilities must convey wisdom and reliability
- Contextual Awareness: Interfaces should adapt to user context and history
- Guided Empowerment: Lead users confidently through new experiences
- Transparent Security: Security measures should be visible without creating friction
1.3 Technical Constraints
The UI system accommodates these technical parameters:
- Browser Support: Latest two versions of Chrome, Safari, Firefox, Edge
- Mobile Support: iOS 14+, Android 10+
- Performance Targets:
- Initial load < 2s on 4G connections
- Time to interactive < 3s
- Animation frame rate > 30fps on mid-range devices
- Accessibility: WCAG 2.1 AA compliance required
- Framework: React-based component library with CSS-in-JS
- API Integration: RESTful endpoints with JSON payloads
1.4 Accessibility Standards
EchoTransact adheres to WCAG 2.1 AA standards with specific focus on:
- Color Contrast: Minimum 4.5:1 for normal text, 3:1 for large text
- Keyboard Navigation: All interactive elements accessible via keyboard
- Screen Reader Support: ARIA attributes and semantic HTML
- Touch Targets: Minimum size of 44×44px for mobile interfaces
- Voice Interaction: Alternative input methods for all critical functions
- Reduced Motion: Respects user preferences for reduced animation
- Text Resizing: Supports up to 200% text size without loss of functionality
2. Component Library
2.1 Core Elements
2.1.1 Button System
Buttons are primary interaction points that enable users to take actions throughout the interface.
Button Variants:
Primary Button
- Purpose: Main call-to-action for key user flows
- Styling: Filled Transaction Blue background with white text
- States: Default, Hover, Active, Focus, Disabled, Loading
Secondary Button
- Purpose: Alternative or supporting actions
- Styling: Outlined with Transaction Blue border and text
- States: Default, Hover, Active, Focus, Disabled
Tertiary Button
- Purpose: Low-emphasis actions or dense UIs
- Styling: Text-only in Transaction Blue
- States: Default, Hover, Active, Focus, Disabled
Danger Button
- Purpose: Destructive or high-risk actions
- Styling: Filled Alert Coral background with white text
- States: Default, Hover, Active, Focus, Disabled
Icon Button
- Purpose: Compact UI actions with clear meaning
- Styling: Icon-only with optional tooltip
- Variants: Primary, Secondary, Tertiary
- States: Default, Hover, Active, Focus, Disabled
Button Specifications:
/* Button Sizing */
--button-height-sm: 32px;
--button-height-md: 40px;
--button-height-lg: 48px;
--button-padding-x: var(--space-md);
--button-icon-size: 20px;
/* Button Typography */
--button-font: var(--text-button);
--button-text-transform: none;
--button-letter-spacing: var(--letter-spacing-normal);
Button Implementation:
<button
className="et-button et-button--primary et-button--md"
disabled={false}
>
Complete Payment
</button>
<button
className="et-button et-button--secondary et-button--md"
disabled={false}
>
Cancel
</button>
2.1.2 Form Controls
Form controls enable users to input data and make selections.
Text Field
- Purpose: Capture single-line text input
- Variants: Standard, Password, Search, With Icon, With Action
- States: Default, Focus, Filled, Error, Disabled, Read-only
- Features:
- Floating or static labels
- Helper text and error message support
- Character counter option
- Leading and trailing icons/actions
<div className="et-text-field">
<label className="et-text-field__label">Email Address</label>
<div className="et-text-field__container">
<input
type="email"
className="et-text-field__input"
placeholder="Enter your email"
/>
<div className="et-text-field__icon">
{/* Icon SVG */}
</div>
</div>
<div className="et-text-field__helper">
We'll never share your email
</div>
</div>
Checkbox
- Purpose: Binary selection or multiple selections from a list
- States: Unchecked, Checked, Indeterminate, Focus, Disabled
- Variants: Standard, Card-style
<label className="et-checkbox">
<input
type="checkbox"
className="et-checkbox__input"
/>
<span className="et-checkbox__control"></span>
<span className="et-checkbox__label">
Remember my payment details
</span>
</label>
Radio Button
- Purpose: Single selection from a list of options
- States: Unselected, Selected, Focus, Disabled
- Variants: Standard, Card-style
<label className="et-radio">
<input
type="radio"
className="et-radio__input"
name="payment"
value="card"
/>
<span className="et-radio__control"></span>
<span className="et-radio__label">Credit Card</span>
</label>
Toggle Switch
- Purpose: Binary on/off state toggle
- States: Off, On, Focus, Disabled
- Variants: Standard, With Icon, With Label
<label className="et-toggle">
<input
type="checkbox"
className="et-toggle__input"
/>
<span className="et-toggle__track"></span>
<span className="et-toggle__thumb"></span>
<span className="et-toggle__label">
Enable voice authentication
</span>
</label>
Select Menu
- Purpose: Selection from predefined options
- States: Default, Focus, Open, Error, Disabled
- Variants: Standard, Searchable, Multi-select, With Icon
<div className="et-select">
<label className="et-select__label">Payment Method</label>
<div className="et-select__container">
<select className="et-select__control">
<option value="" disabled selected>Choose a payment method</option>
<option value="card">Credit Card</option>
<option value="bank">Bank Transfer</option>
<option value="wallet">Digital Wallet</option>
</select>
<div className="et-select__icon">
{/* Dropdown arrow icon */}
</div>
</div>
<div className="et-select__helper">
Select your preferred payment method
</div>
</div>
2.1.3 Cards and Containers
Cards organize related content into cohesive units.
Card Variants:
Basic Card
- Purpose: Simple content grouping
- Components: Content area with optional padding
Standard Card
- Purpose: Featured content with clear structure
- Components: Optional header, content area, optional footer
Interactive Card
- Purpose: Clickable container leading to more content
- States: Default, Hover, Active, Focus
- Features: Visual feedback on interaction
Expandable Card
- Purpose: Progressive disclosure of content
- States: Collapsed, Expanded
- Features: Toggle control with animation
Card Implementation:
<div className="et-card">
<div className="et-card__header">
<h3 className="et-card__title">Transaction Summary</h3>
<div className="et-card__actions">
{/* Optional actions */}
</div>
</div>
<div className="et-card__content">
<p className="et-card__text">
Your payment of $125.00 was successfully processed.
</p>
</div>
<div className="et-card__footer">
<button className="et-button et-button--secondary">
View Details
</button>
</div>
</div>
2.2 Navigation System
2.2.1 Navigation Bar
The navigation bar provides primary wayfinding through the application.
Navigation Bar Variants:
Primary Navigation
- Purpose: Main application navigation
- Features: Logo, primary nav links, user account, notifications
- States: Default, Mobile Collapsed, Mobile Expanded
Secondary Navigation
- Purpose: Section-specific navigation
- Features: Section title, contextual actions, related links
- Variants: Tabs, Pills, Underlined
Navigation Implementation:
<nav className="et-nav-bar">
<div className="et-nav-bar__logo">
{/* EchoTransact logo */}
</div>
<ul className="et-nav-bar__menu">
<li className="et-nav-bar__item et-nav-bar__item--active">
<a href="#" className="et-nav-bar__link">Dashboard</a>
</li>
<li className="et-nav-bar__item">
<a href="#" className="et-nav-bar__link">Transactions</a>
</li>
<li className="et-nav-bar__item">
<a href="#" className="et-nav-bar__link">Settings</a>
</li>
</ul>
<div className="et-nav-bar__actions">
{/* Action buttons */}
</div>
<button className="et-nav-bar__mobile-toggle">
{/* Hamburger icon */}
</button>
</nav>
2.2.2 Tabs
Tabs enable users to navigate between related content sections.
Tab Variants:
Horizontal Tabs
- Purpose: Switch between content views in the same context
- States: Active, Inactive, Hover, Disabled
- Features: Optional icons, badges, overflow handling
Vertical Tabs
- Purpose: Navigation between related sections with more space for labels
- States: Active, Inactive, Hover, Disabled
- Features: Optional icons, badges, grouping
Tab Implementation:
<div className="et-tabs">
<div className="et-tabs__list" role="tablist">
<button
className="et-tabs__tab et-tabs__tab--active"
role="tab"
aria-selected="true"
>
Payment Details
</button>
<button
className="et-tabs__tab"
role="tab"
aria-selected="false"
>
Confirmation
</button>
<button
className="et-tabs__tab"
role="tab"
aria-selected="false"
>
Receipt
</button>
</div>
<div className="et-tabs__content">
{/* Tab content */}
</div>
</div>
2.2.3 Breadcrumbs
Breadcrumbs provide hierarchical context and navigation paths.
Implementation:
<nav className="et-breadcrumbs" aria-label="Breadcrumb">
<ol className="et-breadcrumbs__list">
<li className="et-breadcrumbs__item">
<a href="#" className="et-breadcrumbs__link">Home</a>
</li>
<li className="et-breadcrumbs__item">
<a href="#" className="et-breadcrumbs__link">Transactions</a>
</li>
<li
className="et-breadcrumbs__item et-breadcrumbs__item--current"
aria-current="page"
>
Payment Details
</li>
</ol>
</nav>
2.3 Information Display
2.3.1 Tables and Lists
Tables and lists organize collections of related data.
Table Variants:
Standard Table
- Purpose: Structured data display with columns and rows
- Features: Sortable columns, row selection, pagination
- States: Default, Loading, Empty, Error
Responsive Table
- Purpose: Data tables that adapt to smaller screens
- Features: Column prioritization, horizontal scrolling, card view on mobile
Table Implementation:
<div className="et-table-container">
<table className="et-table">
<thead className="et-table__header">
<tr>
<th className="et-table__cell et-table__cell--header">Date</th>
<th className="et-table__cell et-table__cell--header">Description</th>
<th className="et-table__cell et-table__cell--header">Amount</th>
<th className="et-table__cell et-table__cell--header">Status</th>
</tr>
</thead>
<tbody className="et-table__body">
<tr className="et-table__row">
<td className="et-table__cell">05/23/2024</td>
<td className="et-table__cell">Product Purchase</td>
<td className="et-table__cell">$125.00</td>
<td className="et-table__cell">
<span className="et-badge et-badge--success">Completed</span>
</td>
</tr>
{/* Additional rows */}
</tbody>
</table>
<div className="et-table__pagination">
{/* Pagination controls */}
</div>
</div>
List Variants:
Standard List
- Purpose: Vertical collection of related items
- Features: Item selection, dividers, grouping
- Variants: With icons, with avatars, with actions
Interactive List
- Purpose: Selectable or actionable list items
- States: Default, Hover, Selected, Active, Disabled
List Implementation:
<ul className="et-list">
<li className="et-list__item">
<div className="et-list__icon">
{/* Icon SVG */}
</div>
<div className="et-list__content">
<div className="et-list__primary">Credit Card Payment</div>
<div className="et-list__secondary">Visa ending in 4242</div>
</div>
<div className="et-list__action">
<button className="et-button et-button--icon">
{/* Action icon */}
</button>
</div>
</li>
{/* Additional list items */}
</ul>
2.3.2 Status Indicators
Status indicators communicate state information visually.
Badge Variants:
Status Badge
- Purpose: Indicate item status
- Variants: Success, Warning, Error, Info, Neutral
- Features: Optional icon, consistent color coding
Counter Badge
- Purpose: Show counts or notifications
- Features: Numerical display, overflow handling
Badge Implementation:
<span className="et-badge et-badge--success">Verified</span>
<span className="et-badge et-badge--error">Failed</span>
<span className="et-badge et-badge--warning">Pending</span>
<span className="et-badge et-badge--info">New</span>
<span className="et-badge et-badge--numeric">5</span>
2.3.3 Voice Interaction Indicators
Specialized indicators for voice interactions.
Voice Indicator Variants:
Listening Indicator
- Purpose: Show that system is actively listening
- Features: Animated sound wave visualization
- States: Idle, Listening, Processing
Voice Authentication Indicator
- Purpose: Show voice authentication progress
- Features: Animated verification visualization
- States: Pending, Authenticating, Success, Failure
Voice Indicator Implementation:
<div className="et-voice-indicator et-voice-indicator--listening">
<div className="et-voice-indicator__wave">
{/* Animated sound wave visualization */}
<span className="et-voice-indicator__bar"></span>
<span className="et-voice-indicator__bar"></span>
<span className="et-voice-indicator__bar"></span>
<span className="et-voice-indicator__bar"></span>
<span className="et-voice-indicator__bar"></span>
</div>
<div className="et-voice-indicator__label">Listening...</div>
</div>
2.4 Feedback Mechanisms
2.4.1 Alerts and Notifications
Alerts provide important information, warnings, or errors.
Alert Variants:
Inline Alert
- Purpose: Contextual feedback within forms or content
- Variants: Info, Success, Warning, Error
- Features: Icon, title, message, optional close button
Toast Notification
- Purpose: Temporary feedback about system events
- Variants: Info, Success, Warning, Error
- Features: Auto-dismissal, action buttons, stacking
Alert Implementation:
<div className="et-alert et-alert--success">
<div className="et-alert__icon">
{/* Success icon SVG */}
</div>
<div className="et-alert__content">
<div className="et-alert__title">Payment Successful</div>
<div className="et-alert__message">
Your transaction has been completed successfully.
</div>
</div>
<button className="et-alert__close" aria-label="Close">
{/* Close icon SVG */}
</button>
</div>
Toast Implementation:
<div className="et-toast et-toast--success">
<div className="et-toast__icon">
{/* Success icon SVG */}
</div>
<div className="et-toast__content">
Payment processed successfully
</div>
<button className="et-toast__close" aria-label="Close">
{/* Close icon SVG */}
</button>
</div>
2.4.2 Loading Indicators
Loading indicators provide feedback during asynchronous operations.
Loading Indicator Variants:
Spinner
- Purpose: Indicate loading state
- Variants: Small, Medium, Large
- Features: Optional label, color variations
Progress Bar
- Purpose: Show determinate progress
- Variants: Linear, Circular
- Features: Percentage display, label
Skeleton Loader
- Purpose: Content placeholder during loading
- Variants: Text, Card, List Item, Table Row
- Features: Animated pulse effect
Loading Indicator Implementation:
<div className="et-spinner" role="status">
<svg viewBox="0 0 50 50">
{/* SVG spinner implementation */}
</svg>
<span className="et-spinner__text">Processing payment...</span>
</div>
<div className="et-skeleton">
<div className="et-skeleton__header"></div>
<div className="et-skeleton__text"></div>
<div className="et-skeleton__text"></div>
<div className="et-skeleton__text et-skeleton__text--short"></div>
</div>
2.4.3 Modals and Dialogs
Modals present focused interactions or important information.
Modal Variants:
Standard Modal
- Purpose: Focused task or important information
- Components: Header, content area, footer with actions
- Features: Backdrop, close button, responsive sizing
Confirmation Dialog
- Purpose: Verify user intent for important actions
- Components: Question, explanation, confirm/cancel actions
- Features: Clear action hierarchy, focused interaction
Voice Confirmation Modal
- Purpose: Specialized confirmation for voice-initiated actions
- Components: Voice transcript, confirmation request, visual verification
- Features: Voice interaction indicators, security visualization
Modal Implementation:
<div className="et-modal" role="dialog" aria-modal="true">
<div className="et-modal__backdrop"></div>
<div className="et-modal__container">
<div className="et-modal__header">
<h2 className="et-modal__title">Confirm Payment</h2>
<button className="et-modal__close" aria-label="Close">
{/* Close icon SVG */}
</button>
</div>
<div className="et-modal__content">
<p>Are you sure you want to process this payment of $125.00?</p>
</div>
<div className="et-modal__footer">
<button className="et-button et-button--secondary">Cancel</button>
<button className="et-button et-button--primary">Confirm</button>
</div>
</div>
</div>
3. Pattern System
3.1 Layout System
EchoTransact uses a responsive grid system to ensure consistent layouts across all interfaces.
3.1.1 Grid Specifications
- 12-column grid with responsive breakpoints
- Fluid gutters that scale proportionally with viewport width
- Consistent margins that maintain proper content boundaries
/* Breakpoints */
--breakpoint-xs: 320px; /* Small mobile */
--breakpoint-sm: 576px; /* Mobile */
--breakpoint-md: 768px; /* Tablet */
--breakpoint-lg: 992px; /* Desktop */
--breakpoint-xl: 1200px; /* Large desktop */
--breakpoint-2xl: 1440px; /* Extra large desktop */
/* Container Widths */
--container-sm: 540px;
--container-md: 720px;
--container-lg: 960px;
--container-xl: 1140px;
--container-2xl: 1320px;
/* Grid Configuration */
--grid-columns: 12;
--grid-gutter-xs: var(--space-md);
--grid-gutter-sm: var(--space-md);
--grid-gutter-md: var(--space-lg);
--grid-gutter-lg: var(--space-lg);
--grid-gutter-xl: var(--space-xl);
3.1.2 Spacing System
A consistent spacing scale ensures harmonious proportions throughout the interface.
/* Base unit: 4px */
--space-2xs: 4px;
--space-xs: 8px;
--space-sm: 12px;
--space-md: 16px;
--space-lg: 24px;
--space-xl: 32px;
--space-2xl: 40px;
--space-3xl: 48px;
--space-4xl: 64px;
--space-5xl: 80px;
Spacing Application:
- Inset (Padding): Internal component spacing
- Stack (Vertical): Space between stacked elements
- Inline (Horizontal): Space between inline elements
3.1.3 Page Templates
Standard layouts for common page types ensure consistency:
Dashboard Layout
- Purpose: Overview of key information and actions
- Components: Header, sidebar navigation, card grid, summary widgets
Form Layout
- Purpose: Data collection and submission
- Components: Header, form sections, validation, action buttons
Transaction Flow
- Purpose: Multi-step payment process
- Components: Progress indicator, contextual information, action area
Settings Layout
- Purpose: Configuration and preferences
- Components: Section navigation, form groups, save actions
3.2 Interaction Models
Standardized patterns for common user tasks ensure intuitive experiences.
3.2.1 Form Completion Flow
graph TD
A[Form Entry] --> B{Validation}
B -->|Valid| C[Submit]
B -->|Invalid| D[Show Errors]
D --> A
C --> E{Processing}
E -->|Success| F[Confirmation]
E -->|Error| G[Error Handling]
G --> A
Implementation Guidelines:
- Inline validation provides immediate feedback
- Error messages appear below relevant fields
- Submit button shows loading state during processing
- Success confirmation provides clear next steps
3.2.2 Voice Payment Flow
graph TD
A[Voice Command] --> B[Voice Confirmation]
B --> C{User Confirms}
C -->|Yes| D[SMS Link]
C -->|No| E[Cancel]
D --> F[Payment Form]
F --> G{Authentication}
G -->|Success| H[Process Payment]
G -->|Failure| I[Auth Error]
I --> G
H --> J{Transaction}
J -->|Success| K[Success Confirmation]
J -->|Failure| L[Transaction Error]
L --> F
Implementation Guidelines:
- Voice interactions always include visual feedback
- Security steps are clearly communicated
- Transitions between voice and visual interfaces are seamless
- Error recovery paths are clearly presented
3.2.3 Search and Filter Pattern
graph TD
A[Search Input] --> B[Type Query]
B --> C[Show Results]
C --> D{Apply Filters}
D -->|Yes| E[Filtered Results]
D -->|No| C
E --> F{Sort Results}
F --> G[Final Results]
Implementation Guidelines:
- Search provides real-time suggestions when possible
- Filters are clearly labeled and easy to toggle
- Applied filters are visible and removable
- Empty states provide helpful guidance
3.3 State Management
Comprehensive state system ensures users understand the current condition of interface elements.
3.3.1 Interactive States
All interactive elements implement consistent states:
- Default: Standard appearance, ready for interaction
- Hover: Visual feedback when pointer is over element
- Focus: Clear indication when element receives keyboard focus
- Active/Pressed: Visual feedback during click/tap
- Disabled: Reduced opacity with non-interactive appearance
Implementation Guidelines:
- Focus states must be visible with or without mouse
- Hover states should be subtle but noticeable
- Active states provide immediate feedback
- Disabled states maintain recognizable form but clearly indicate unavailability
3.3.2 Loading States
graph TD
A[Idle] --> B[Loading]
B --> C{Result}
C -->|Success| D[Loaded]
C -->|Error| E[Error]
E --> F[Retry]
F --> B
Implementation Guidelines:
- Loading states maintain layout stability
- Progress indicators appear for operations > 300ms
- Skeleton loaders preserve content structure
- Error states provide recovery options
3.3.3 Voice Interaction States
Specialized states for voice interactions:
- Idle: System ready for voice input
- Listening: Actively capturing voice
- Processing: Analyzing voice input
- Response: System providing voice feedback
- Error: Voice input not recognized or processed
Implementation Guidelines:
- Voice states have both audio and visual indicators
- Animation indicates system is listening
- Processing state shows active analysis
- Error states provide clear recovery instructions
3.4 Content Patterns
Standardized approaches to content presentation ensure clarity and consistency.
3.4.1 Empty States
Guidelines for when content is not yet available:
- First Use: Welcoming guidance for new users
- No Data: Clear explanation when no content exists
- Search/Filter: Helpful message when no results match
- Error: Recovery options when content cannot load
Implementation Guidelines:
- Include clear illustrations or icons
- Provide concise, helpful explanations
- Offer clear next steps or actions
- Maintain consistent layout structure
3.4.2 Error Messages
Framework for consistent error communication:
- Validation Errors: Specific guidance on form issues
- System Errors: Clear explanation of technical problems
- Permission Errors: Information about access limitations
- Connectivity Errors: Network-related issues
Implementation Guidelines:
- Use plain language that avoids technical jargon
- Clearly explain what happened
- Provide specific recovery actions
- Maintain consistent error message structure
3.4.3 Help and Guidance
Patterns for providing assistance:
- Tooltips: Brief contextual explanations
- Inline Help: Expandable guidance within context
- Onboarding: Step-by-step introduction to features
- Contextual Assistance: Situation-specific guidance
Implementation Guidelines:
- Keep help content concise and actionable
- Position guidance where it's needed
- Use progressive disclosure for complex information
- Include visual examples when helpful
4. Implementation Guidelines
4.1 Component Specifications
Detailed technical specifications ensure consistent implementation.
4.1.1 Component API Documentation
Each component includes:
- Props/Parameters: All configuration options
- Events/Callbacks: All emitted events
- Styling API: Available CSS customization points
- Accessibility Features: ARIA roles and attributes
- Responsive Behavior: Adaptation across breakpoints
Example: Button Component API
// Button Component
//
// Props:
// - variant: 'primary' | 'secondary' | 'tertiary' | 'danger' (default: 'primary')
// - size: 'sm' | 'md' | 'lg' (default: 'md')
// - disabled: boolean (default: false)
// - loading: boolean (default: false)
// - fullWidth: boolean (default: false)
// - type: 'button' | 'submit' | 'reset' (default: 'button')
// - icon: ReactNode (optional)
// - iconPosition: 'start' | 'end' (default: 'start')
// - onClick: () => void (optional)
// - children: ReactNode (required)
//
// Accessibility:
// - Includes appropriate ARIA attributes for loading state
// - Maintains focus visibility for keyboard users
// - Ensures adequate color contrast in all states
4.1.2 Component Anatomy
Detailed breakdown of component structure:
et-button (root element)
├── et-button__icon (optional)
│ └── SVG icon
├── et-button__text
│ └── Text content
└── et-button__loader (when loading)
└── Spinner animation
4.2 Code Samples
Implementation examples for common use cases.
4.2.1 React Implementation
// Primary Button with Loading State
import React, { useState } from 'react';
import { Button } from '@echotransact/components';
const PaymentButton = () => {
const [loading, setLoading] = useState(false);
const handlePayment = async () => {
setLoading(true);
try {
await processPayment();
showSuccessNotification();
} catch (error) {
showErrorNotification(error);
} finally {
setLoading(false);
}
};
return (
<Button
variant="primary"
size="lg"
loading={loading}
onClick={handlePayment}
>
Complete Payment
</Button>
);
};
4.2.2 Form Validation Example
// Form with Validation
import React, { useState } from 'react';
import {
TextField,
Select,
Button,
FormGroup
} from '@echotransact/components';
const PaymentForm = () => {
const [values, setValues] = useState({
cardNumber: '',
expiryDate: '',
cvv: '',
paymentMethod: ''
});
const [errors, setErrors] = useState({});
const handleChange = (field, value) => {
setValues({
...values,
[field]: value
});
// Clear error when field is edited
if (errors[field]) {
setErrors({
...errors,
[field]: null
});
}
};
const validateForm = () => {
const newErrors = {};
if (!values.cardNumber) {
newErrors.cardNumber = 'Card number is required';
} else if (!/^\d{16}$/.test(values.cardNumber)) {
newErrors.cardNumber = 'Card number must be 16 digits';
}
if (!values.expiryDate) {
newErrors.expiryDate = 'Expiry date is required';
}
if (!values.cvv) {
newErrors.cvv = 'CVV is required';
}
if (!values.paymentMethod) {
newErrors.paymentMethod = 'Please select a payment method';
}
setErrors(newErrors);
return Object.keys(newErrors).length === 0;
};
const handleSubmit = (e) => {
e.preventDefault();
if (validateForm()) {
// Process payment
}
};
return (
<form onSubmit={handleSubmit}>
<FormGroup>
<TextField
label="Card Number"
value={values.cardNumber}
onChange={(e) => handleChange('cardNumber', e.target.value)}
error={errors.cardNumber}
placeholder="1234 5678 9012 3456"
/>
</FormGroup>
<div className="et-form-row">
<FormGroup>
<TextField
label="Expiry Date"
value={values.expiryDate}
onChange={(e) => handleChange('expiryDate', e.target.value)}
error={errors.expiryDate}
placeholder="MM/YY"
/>
</FormGroup>
<FormGroup>
<TextField
label="CVV"
value={values.cvv}
onChange={(e) => handleChange('cvv', e.target.value)}
error={errors.cvv}
placeholder="123"
/>
</FormGroup>
</div>
<FormGroup>
<Select
label="Payment Method"
value={values.paymentMethod}
onChange={(e) => handleChange('paymentMethod', e.target.value)}
error={errors.paymentMethod}
>
<option value="" disabled>Select payment method</option>
<option value="visa">Visa</option>
<option value="mastercard">Mastercard</option>
<option value="amex">American Express</option>
</Select>
</FormGroup>
<Button type="submit" variant="primary" fullWidth>
Pay Now
</Button>
</form>
);
};
4.3 Usage Guidelines
Rules and best practices for component implementation.
4.3.1 Button Usage Guidelines
When to use:
- Primary buttons for main calls-to-action
- Secondary buttons for alternative actions
- Tertiary buttons for low-emphasis actions
- Danger buttons only for destructive actions
Best practices:
- Use clear, action-oriented text (e.g., "Complete Payment" vs. "Submit")
- Maintain consistent button hierarchy across screens
- Limit primary buttons to one per section
- Position consistently in forms and dialogs
Anti-patterns:
- Multiple primary buttons competing for attention
- Generic button text like "Click Here"
- Inconsistent button placement between screens
- Using danger styling for non-destructive actions
4.3.2 Form Control Guidelines
Field organization:
- Group related fields logically
- Order fields in a natural sequence
- Place optional fields after required ones
- Maintain consistent label placement
Validation approach:
- Validate on blur for immediate feedback
- Show all errors on submission attempt
- Position error messages directly below fields
- Use clear, specific error messages
Accessibility considerations:
- Ensure all fields have visible labels
- Maintain logical tab order
- Use appropriate input types (email, tel, etc.)
- Implement proper ARIA attributes for errors
4.4 Design Assets
Resources for implementation and maintenance.
4.4.1 Design Tokens
Design tokens are available in multiple formats:
- CSS Custom Properties
- SCSS Variables
- JavaScript Objects
- Design Tool Libraries
Example: Color Token Export
// colors.js
export const colors = {
echoNavy: '#0A2342',
transactionBlue: '#147AFC',
secureWhite: '#FFFFFF',
voiceTeal: '#00B2CA',
verificationGreen: '#4AAD52',
platinumGray: '#E5E8ED',
alertCoral: '#FF5A5F'
};
// Semantic color mapping
export const semanticColors = {
backgroundPrimary: colors.secureWhite,
backgroundSecondary: colors.platinumGray,
textPrimary: colors.echoNavy,
textSecondary: 'rgba(10, 35, 66, 0.75)',
textTertiary: 'rgba(10, 35, 66, 0.5)',
textInverse: colors.secureWhite,
actionPrimary: colors.transactionBlue,
actionHover: '#0D6EE9',
actionPressed: '#0A5DD6',
actionDisabled: 'rgba(20, 122, 252, 0.4)',
borderDefault: 'rgba(10, 35, 66, 0.15)',
borderFocus: colors.transactionBlue,
success: colors.verificationGreen,
error: colors.alertCoral,
warning: '#F9A826',
info: colors.voiceTeal,
voiceIndicator: colors.voiceTeal
};
4.4.2 Component Library Documentation
Comprehensive documentation includes:
- Interactive Examples: Live component demos
- Implementation Guide: Step-by-step instructions
- Accessibility Checklist: Compliance verification
- Responsive Preview: Multi-device visualization
- Version History: Change log and updates
5. Key User Interface Flows
5.1 Voice Payment Flow
The core EchoTransact experience involves a seamless transition from voice interaction to secure payment completion.
sequenceDiagram
participant C as Customer
participant V as Voice AI
participant S as SMS Gateway
participant P as Payment UI
participant A as Auth System
C->>V: Initiates purchase via voice
V->>C: Confirms purchase details
C->>V: Verbally approves purchase
V->>S: Requests payment link generation
S->>C: Sends SMS with secure payment link
C->>P: Opens payment link
P->>C: Displays transaction details
C->>P: Enters payment information
P->>A: Requests authentication
A->>C: Performs identity verification
C->>A: Completes verification
A->>P: Confirms authentication
P->>C: Shows payment confirmation
P->>V: Signals completion
V->>C: Provides verbal confirmation
Key Interface Moments:
Voice Interaction
- Clear listening indicators
- Visual confirmation of understood commands
- Transaction summary display
SMS Link
- Professional, branded message
- Clear security indicators
- Seamless deep linking
Payment Form
- Pre-populated transaction details
- Streamlined payment entry
- Clear security indicators
Authentication
- Appropriate method based on transaction value
- Clear progress indication
- Fallback options if needed
Confirmation
- Clear success indicators
- Transaction details summary
- Next steps and receipt information
5.2 Merchant Configuration Flow
Merchants configure EchoTransact through an administration interface.
graph TD
A[Merchant Sign-up] --> B[Business Verification]
B --> C[Integration Setup]
C --> D[Voice Script Configuration]
D --> E[Payment Method Setup]
E --> F[Security Settings]
F --> G[Testing]
G --> H[Go Live]
Key Interface Moments:
Onboarding
- Step-by-step guided setup
- Clear progress indication
- Contextual help at each stage
Integration Configuration
- API key management
- Webhook configuration
- Environment toggles
Voice Script Builder
- Visual script editor
- Template library
- Testing simulator
Security Configuration
- Authentication method selection
- Threshold settings
- Fraud prevention rules
6. Accessibility Implementation
6.1 Keyboard Navigation
All interactive elements are accessible via keyboard:
- Focus Management: Logical tab order with visible focus indicators
- Keyboard Shortcuts: Support for common keyboard patterns
- Focus Trapping: Modal dialogs trap focus until dismissed
- Skip Navigation: Allow keyboard users to bypass repetitive navigation
6.2 Screen Reader Support
Components implement appropriate ARIA attributes:
- Semantic HTML: Proper HTML5 semantic elements
- ARIA Roles: Appropriate roles for custom components
- State Announcements: Dynamic state changes are announced
- Form Labeling: All form controls have associated labels
6.3 Color and Contrast
Visual design meets WCAG 2.1 AA standards:
- Text Contrast: Minimum 4.5:1 for normal text, 3:1 for large text
- UI Component Contrast: Interactive elements have 3:1 minimum contrast
- Color Independence: Information never conveyed by color alone
- Focus Visibility: High-contrast focus indicators
6.4 Voice and Audio
Voice interactions have appropriate alternatives:
- Transcripts: Voice interactions include visual text transcripts
- Visual Indicators: Audio cues have visual counterparts
- Volume Control: Easy access to volume adjustment
- Alternative Inputs: Voice commands have text/touch alternatives
7. Conclusion
The EchoTransact User Interface Specifications document establishes a comprehensive framework for creating a cohesive, accessible, and brand-aligned user experience. By following these guidelines, the development team will build interfaces that balance the innovative transformation of our Magician archetype with the trusted expertise of our Sage characteristics.
The component library and pattern system work together to create experiences that feel both technologically advanced and humanly accessible. Through consistent application of these specifications, EchoTransact will deliver a payment experience that inspires trust and confidence while making voice-initiated transactions feel magical in their simplicity.
Version: 1.0.0
Created: October 15, 2025
Last Updated: October 15, 2025
-
Executive Summary
Vanka clearly articulates your idea in a way that enables the entire business strategy & planning foundation to be expertly prepared.
-
User Journey
Everything customers experience from the moment they learn about you, to their first use of your product, to evangelizing your product.
-
Brand Strategy
The foundation for how you show up in the world. It determines whether you are memorable, trusted, and ultimately chosen.
-
Business Analysis
Expert analysis of your business idea, to help you make an informed decision about how to proceed.
-
Visual Identity System
Establishes comprehensive branding guidelines, defining visual elements & their consistent application.
-
Product Requirements
Defines what a product should do in a way that guides product development teams.
-
Technical Architecture
Defines system structure, technologies, data flow, etc to guide engineering implementation and ensure scalability.
-
Component Library
Catalogs reusable UI elements with usage guidelines, specs, code examples to ensure consistent interface design across products.
-
UI Spec
Details interface layout, interactions, styling, behavior for specific screens or features to guide design implementation.
-
UX Flow Diagram
Visually maps user journeys through a product, showing screens, decision points, interactions to clarify navigation and experience.
-
Low-Fi Mockups
Quick, simple sketches of interface layouts to explore concepts, test ideas, and gather early feedback before detailed design.