UI Design System
This document establishes the official UI design patterns and component standards for the DeployStack frontend. All new components and pages must follow these guidelines to ensure consistency and maintainability.Design Principles
- Consistency: Use established patterns and components
- Accessibility: Follow WCAG guidelines and semantic HTML
- Responsiveness: Design for all screen sizes
- Performance: Optimize for fast loading and smooth interactions
- Maintainability: Write clean, reusable component code
Color System
Primary Colors
The DeployStack color palette uses teal as the primary brand color, ensuring WCAG compliance for accessibility.WCAG Compliance
- Primary (teal-700): Contrast ratio 5.47:1 on white - ✅ AA Pass, ❌ AAA Fail
- Primary-hover (teal-800): Contrast ratio 7.58:1 on white - ✅ AA Pass, ✅ AAA Pass
Text Colors
Background Colors
Link Color Scheme
DeployStack implements intelligent link styling with automatic teal coloring for text links while preserving button styling:Text Links
- Light mode:
text-teal-700
→hover:text-teal-800
(WCAG AA → AAA on hover) - Dark mode:
text-teal-400
→hover:text-teal-300
(Already WCAG AAA compliant) - Underlines:
decoration-teal-700/30
→hover:decoration-teal-700/60
- Focus states:
outline-teal-700
(light) /outline-teal-400
(dark)
Usage Examples
Color Usage Guidelines
- Primary Actions: Use
--primary
(teal-700) for primary buttons and key interactive elements - Hover States: Transition to
--primary-hover
(teal-800) for enhanced contrast - Text Links: Automatically styled with teal colors - no additional classes needed
- Button Links: Include styling classes (
bg-*
,rounded-*
) to maintain button appearance - Focus States: Ensure all interactive elements have visible focus indicators using the teal color scheme
Layout Design Patterns
Content Wrapper Pattern
DeployStack follows a mandatory content wrapper pattern for all tabbed content and detail pages. This pattern ensures visual consistency and proper content hierarchy throughout the application.Design Requirements
The content wrapper pattern is required for:- Team management pages
- MCP server installation pages
- Settings and configuration pages
- Any page using tabbed content with
DsTabs
- Detail views that need elevated content presentation
Implementation
Use theContentWrapper
component for all qualifying pages:
- Gray background container (
bg-muted/50
) - Responsive max-width constraints
- White card elevation with proper spacing
- Consistent vertical rhythm
services/frontend/src/components/ContentWrapper.vue
.
Visual Hierarchy
This pattern creates a three-tier visual hierarchy:- Page background - Default dashboard background
- Content container - Gray muted background wrapper
- Content card - White elevated card with content
Data Tables
For data table implementation, see the dedicated Table Design System guide. For pagination implementation, see the Pagination Implementation Guide.Badge Design Patterns
Badges are used for status indicators, categories, and metadata.Status Badges
Category/Tag Badges
Numeric Badges
Form Design Patterns
Modal Forms
UseAlertDialog
for forms in modals:
Form Field Pattern
Button Patterns
Loading States
Buttons now include built-in loading state functionality. For comprehensive loading button documentation, see the Button Loading States Guide.Primary Actions
Secondary Actions
Destructive Actions
Icon-Only Buttons
Layout Patterns
Page Header
Content Sections
Icon Usage
Standard Icon Sizes
- Small icons:
h-4 w-4
(16px) - for buttons, table actions - Medium icons:
h-5 w-5
(20px) - for form fields, navigation - Large icons:
h-6 w-6
(24px) - for page headers, prominent actions
Icon with Text
Status Icons
Responsive Design
Mobile-First Approach
Hide/Show on Different Screens
Accessibility Guidelines
Screen Reader Support
Proper Labels
Focus Management
Migration Guide
Updating Existing Tables
If you have an existing table using raw HTML elements, follow these steps:-
Replace HTML elements with shadcn-vue components:
<table>
→<Table>
<thead>
→<TableHeader>
<tbody>
→<TableBody>
<tr>
→<TableRow>
<th>
→<TableHead>
<td>
→<TableCell>
-
Update imports:
- Add proper empty state handling
- Update action menus to use AlertDialog for destructive actions
- Ensure proper badge usage for status indicators