# GT Agent Company - UI/UX Design System **Project Type**: Mobile-First SaaS Application (UniApp Vue3) **Tech Stack**: Vue 3 + UnoCSS + uView Plus **Platforms**: H5 / WeChat Mini Program / Native App **Last Updated**: 2026-03-18 --- ## ๐ŸŽจ Design Philosophy **Style Direction**: Modern Professional SaaS with Xiaomi-Inspired Branding **Primary Pattern**: Glassmorphism + Flat Design + Vibrant & Block-based **Target Audience**: B2B/B2C professionals seeking agent management solutions ### Core Design Principles 1. **Mobile-First**: Design for 375px viewport first, enhance for larger screens 2. **Performance-Focused**: Minimize animations, optimize images, lazy load 3. **Accessibility-Driven**: WCAG 2.1 AA minimum, touch-friendly targets 4. **Consistent Branding**: Xiaomi-inspired orange (#ff6700) as primary identity 5. **Cross-Platform**: Unified experience across H5, WeChat, and native apps --- ## ๐ŸŽฏ Product Type Recommendations Based on analysis: **SaaS (General) + B2B Service** **Recommended Landing Pattern**: Hero + Features + CTA **Dashboard Style**: Data-Dense + Real-Time Monitoring **Key Considerations**: - Balance modern feel with clarity - Focus on strong CTAs (Call-to-Actions) - Credibility essential - show clear ROI messaging - Social proof and trust elements mandatory --- ## ๐ŸŒˆ Color Palette ### Brand Colors (Blue Theme) ```scss // Primary Brand Colors --brand-primary: #1677ff; // Primary CTA, hover states --brand-primary-light: #4096ff; // Lighter variant --brand-primary-dark: #0958d9; // Pressed states --brand-secondary: #1e293b; // Dark Gray (headings) --brand-accent: #ffffff; // White (emphasis) ``` ### Semantic Colors (Light Mode) ```scss // Primary Theme Colors --theme-primary: #1677ff; // Blue (Trust + Energy) --theme-secondary: #1e293b; // Dark Gray --theme-accent: #ffffff; // White // Status Colors --theme-success: #52c41a; // Green (Success states) --theme-warning: #faad14; // Amber (Warnings) --theme-error: #ff4d4f; // Red (Errors) --theme-info: #1677ff; // Info (same as primary) // Text Hierarchy --theme-main-color: #212121; // Primary text --theme-content-color: #666666; // Body text --theme-tips-color: #999999; // Secondary text --theme-light-color: #cccccc; // Muted text --theme-disabled-color: #f5f5f5; // Disabled states // Backgrounds --theme-bg-color: #fafafa; // Main background --theme-bg-color-secondary: #ffffff; // Card backgrounds --theme-bg-gradient-start: #1677ff; --theme-bg-gradient-end: #4096ff; // Borders --theme-border-color: #e8e8e8; // Borders, dividers ``` ### Dark Mode Colors ```scss .theme-dark { --brand-primary: #4b9cff; // Blue (lighter for dark mode) --brand-primary-light: #69b1ff; --brand-primary-dark: #1668dc; --theme-success: #73d13d; --theme-warning: #ffc53d; --theme-error: #f56c6c; // Text (High Contrast Required) --theme-main-color: #ffffff; --theme-content-color: #b0b8c1; --theme-tips-color: #8a8f95; --theme-light-color: #6c757d; --theme-disabled-color: #495057; // Backgrounds --theme-bg-color: #1a1a1a; --theme-bg-color-secondary: #2d2d2d; } ``` ### UnoCSS Theme Integration ```typescript // uno.config.ts already configured: theme: { colors: { 'primary': 'var(--theme-primary)', 'success': 'var(--theme-success)', 'warning': 'var(--theme-warning)', 'error': 'var(--theme-error)', 'text-main': 'var(--theme-main-color)', 'text-content': 'var(--theme-content-color)', 'text-tips': 'var(--theme-tips-color)', } } // Usage in templates:

Body text

``` ### Color Contrast Requirements **CRITICAL**: Maintain minimum 4.5:1 contrast ratio for normal text โœ… **Good Combinations**: - `#4c484f` (text-main) on `#ffffff` โ†’ 7.2:1 - `#ffffff` on `#ff6700` (primary) โ†’ 4.1:1 - `#333333` on `#ffffff` โ†’ 12.6:1 โŒ **Bad Combinations**: - `#bd9e84` (light) on `#ffffff` โ†’ 2.4:1 (TOO LOW) - Use `text-light` only for decorative text, not critical content --- ## ๐Ÿ“ Typography ### Font Pairing: Modern Professional **Stack**: Plus Jakarta Sans (Sans + Sans) **Character**: Friendly, modern, SaaS, clean, approachable, professional ```css /* Import Google Fonts */ @import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap'); /* Fallback for platforms without custom fonts */ font-family: 'Plus Jakarta Sans', 'PingFang SC', 'Microsoft YaHei', sans-serif; ``` ### Font Scale (Mobile-First) ```scss // Base: 16px (rem baseline) // Headings --font-h1: 32px; // Hero headings --font-h2: 28px; // Section titles --font-h3: 24px; // Card headers --font-h4: 20px; // Subsection titles --font-h5: 18px; // Small headings --font-h6: 16px; // Labels // Body --font-body: 16px; // MINIMUM for mobile readability --font-body-small: 14px; --font-caption: 12px; // Fine print only // Line Heights --line-height-tight: 1.2; // Headings --line-height-normal: 1.5; // Body text (MANDATORY) --line-height-relaxed: 1.75; // Long-form content ``` ### Typography Hierarchy ```html

Hero Heading

Section Title

Body text content. Minimum 16px on mobile.

Secondary information Fine print only - not for critical content ``` ### Font Weight Usage - **300 Light**: Decorative text only - **400 Regular**: Body text, descriptions - **500 Medium**: Emphasized body text - **600 SemiBold**: Headings, buttons - **700 Bold**: Hero titles, important CTAs **โš ๏ธ RULE**: Never use font weight < 400 for critical content --- ## ๐Ÿ“ Layout & Spacing ### Container Widths ```scss // Mobile-first breakpoints (UnoCSS) --container-xs: 100%; // < 640px --container-sm: 640px; // sm: --container-md: 768px; // md: --container-lg: 1024px; // lg: --container-xl: 1280px; // xl: // Recommended max-width for content --max-width-content: 1200px; ``` ### Spacing Scale (UnoCSS rem-based) ```scss // Base: 1rem = 16px (4px increments) --space-1: 0.25rem; // 4px --space-2: 0.5rem; // 8px (Minimum touch spacing) --space-3: 0.75rem; // 12px --space-4: 1rem; // 16px (Base unit) --space-6: 1.5rem; // 24px (Section spacing) --space-8: 2rem; // 32px (Component gaps) --space-12: 3rem; // 48px (Large sections) --space-16: 4rem; // 64px (Hero sections) // UnoCSS Usage:
``` ### Grid System ```html
Card 1
Card 2
Card 3
Content
``` ### Safe Area Handling ```scss // Custom UnoCSS rule already configured: .pb-safe { padding-bottom: env(safe-area-inset-bottom); } // Use for bottom navigation: Bottom Navigation ``` --- ## ๐ŸŽฏ Components & Patterns ### Touch Targets (CRITICAL) **MANDATORY**: Minimum 44x44px for all interactive elements ```html
``` ### Button Styles ```html ``` ### Card Components (Glassmorphism) ```html Card Title Card content Content ``` ### Icon Usage (CRITICAL) **โŒ NEVER use emoji as UI icons** (๐ŸŽจ ๐Ÿš€ โš™๏ธ) **โœ… ALWAYS use SVG icons from UnoCSS preset-icons** ```html ๐Ÿ  ้ฆ–้กต ``` ### Navigation Bar (Floating) ```html Logo Main content starts here ``` ### Form Inputs ```html ่ฏท่พ“ๅ…ฅๆœ‰ๆ•ˆ็š„้‚ฎ็ฎฑๅœฐๅ€ ``` --- ## ๐ŸŽญ Animation & Transitions ### Duration Guidelines ```scss // Speed mapping (prefer faster) --duration-instant: 0ms; // No animation --duration-fast: 150ms; // Micro-interactions (hover, focus) --duration-normal: 200ms; // Standard transitions --duration-medium: 300ms; // Maximum for UI (sliding panels) --duration-slow: 500ms; // AVOID - too sluggish ``` ### Recommended Transitions ```html Card Too slow! Use transform instead ``` ### Reduced Motion (CRITICAL) ```css /* MANDATORY: Respect user preferences */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } ``` ### Loading States ```html ``` ### Hover States (CRITICAL) **โŒ RULE**: Never use scale transforms that shift layout ```html Stable hover This shifts adjacent elements! ``` --- ## โ™ฟ Accessibility Requirements ### WCAG 2.1 AA Compliance (MANDATORY) #### Color Contrast - **Normal text (16px+)**: Minimum 4.5:1 ratio - **Large text (24px+ or 18.5px bold)**: Minimum 3:1 ratio - **UI components**: Minimum 3:1 ratio ```scss // โœ… Pre-validated combinations: color: #4c484f; background: #ffffff; // 7.2:1 color: #ffffff; background: #ff6700; // 4.1:1 color: #333333; background: #ffffff; // 12.6:1 // โŒ Avoid: color: #bd9e84; background: #ffffff; // 2.4:1 - TOO LOW ``` #### Keyboard Navigation ```html Keyboard accessible custom element ``` #### ARIA Labels ```html ๅŠ ่ฝฝไธญ... ่ฏทๅกซๅ†™ๅฟ…ๅกซ้กน ``` #### Form Accessibility ```html ``` --- ## ๐Ÿ“ฑ Responsive Design ### Mobile-First Breakpoints ```scss // UnoCSS default breakpoints xs: 0px // Default (mobile) sm: 640px // Large mobile md: 768px // Tablet lg: 1024px // Desktop xl: 1280px // Large desktop 2xl: 1536px // Extra large // Common patterns: ``` ### Viewport Meta (CRITICAL for H5) ```html ``` ### Responsive Typography ```html

Responsive Heading

Responsive padding ``` ### Touch vs Hover ```html Works on touch and mouse Doesn't work on touch devices! ``` --- ## ๐Ÿš€ Performance Optimization ### Image Optimization ```html ๆ่ฟฐๆ€งๆ–‡ๆœฌ ``` ### Animation Performance ```html Use transform and opacity Causes performance issues ``` ### Content Jumping Prevention ```html ``` --- ## ๐ŸŽจ Style Variations ### Glassmorphism (Primary Style) ```html Glass card content ``` ### Flat Design (Secondary Style) ```html Flat card content ``` ### Vibrant Block-based (Accent) ```html

Feature Title

High-contrast content block

``` --- ## ๐Ÿ”ง Vue 3 + UnoCSS Best Practices ### Component Structure ```vue ``` ### UnoCSS Shortcuts (Custom) ```typescript // uno.config.ts shortcuts already configured: shortcuts: { 'border-base': 'border border-gray-500/10', 'center': 'flex justify-center items-center', } // Usage: Centered content ``` --- ## โœ… Pre-Delivery Checklist Before committing any UI code, verify: ### Visual Quality - [ ] No emojis used as icons (use `i-mdi-*` instead) - [ ] All icons from consistent icon set (MDI via UnoCSS) - [ ] Hover states don't cause layout shift - [ ] Use theme colors directly (`bg-primary`, not `bg-[#ff6700]`) ### Interaction - [ ] All clickable elements have `cursor-pointer` - [ ] Hover states provide clear visual feedback - [ ] Transitions are 150-300ms (not slower) - [ ] Focus states visible for keyboard navigation ### Light/Dark Mode - [ ] Light mode text contrast โ‰ฅ 4.5:1 - [ ] Glass elements visible in light mode (`bg-white/80` minimum) - [ ] Borders visible in both modes - [ ] Test both modes before delivery ### Layout - [ ] Floating elements have spacing from edges (`top-4 left-4 right-4`) - [ ] No content hidden behind fixed navbars - [ ] Responsive at 375px, 768px, 1024px - [ ] No horizontal scroll on mobile ### Accessibility - [ ] All images have `alt` text - [ ] Form inputs have `