# Quick UI Improvements - Action Guide This is a condensed, actionable guide for immediately improving the SKiTCH Controller UI. For detailed analysis, see `UI_DESIGN_ANALYSIS.md`. --- ## Priority 1: Color System (30 minutes) ### Create Design Tokens File **File: `src/styles/design-tokens.css`** ```css @theme { /* Primary - Blue */ --color-primary: #2563eb; --color-primary-light: #3b82f6; --color-primary-dark: #1d4ed8; /* Secondary - Slate */ --color-secondary: #64748b; --color-secondary-light: #94a3b8; /* Success - Green */ --color-success: #16a34a; --color-success-bg: #dcfce7; /* Warning - Amber */ --color-warning: #d97706; --color-warning-bg: #fef3c7; /* Danger - Red */ --color-danger: #dc2626; --color-danger-bg: #fee2e2; /* Info - Cyan */ --color-info: #0891b2; --color-info-bg: #cffafe; /* Neutral */ --color-neutral-50: #f9fafb; --color-neutral-100: #f3f4f6; --color-neutral-200: #e5e7eb; --color-neutral-300: #d1d5db; --color-neutral-600: #4b5563; --color-neutral-900: #111827; } ``` Import in `App.css`: ```css @import "tailwindcss"; @import "./styles/design-tokens.css"; ``` ### Find & Replace Color Classes **Throughout all components:** ```tsx // Primary action buttons bg-blue-600 → bg-primary bg-blue-700 → bg-primary-dark hover:bg-blue-700 → hover:bg-primary-light // Text colors text-blue-900 → text-primary-dark text-blue-800 → text-primary text-gray-600 → text-neutral-600 text-gray-900 → text-neutral-900 // Backgrounds bg-gray-50 → bg-neutral-50 bg-gray-100 → bg-neutral-100 // Borders border-gray-300 → border-neutral-300 ``` --- ## Priority 2: Button States (20 minutes) ### Standard Button Classes **Replace all button classes with these variants:** ```tsx // PRIMARY BUTTON (Connect, Upload, Start Sewing) className=" px-6 py-3 bg-primary text-white rounded-lg font-semibold text-sm shadow-sm hover:bg-primary-light hover:shadow-md active:bg-primary-dark active:scale-[0.98] focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:bg-neutral-300 disabled:text-neutral-500 disabled:cursor-not-allowed transition-all duration-150 cursor-pointer " // SECONDARY BUTTON (Mask Trace) className=" px-6 py-3 bg-white text-neutral-700 border border-neutral-300 rounded-lg font-semibold text-sm shadow-sm hover:bg-neutral-50 hover:border-neutral-400 active:bg-neutral-100 active:scale-[0.98] focus:outline-none focus:ring-2 focus:ring-neutral-400 focus:ring-offset-2 disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed transition-all duration-150 cursor-pointer " // DANGER BUTTON (Delete, Disconnect) className=" px-6 py-3 bg-danger text-white rounded-lg font-semibold text-sm shadow-sm hover:bg-red-700 hover:shadow-md active:bg-red-800 active:scale-[0.98] focus:outline-none focus:ring-2 focus:ring-danger focus:ring-offset-2 disabled:bg-neutral-300 disabled:text-neutral-500 disabled:cursor-not-allowed transition-all duration-150 cursor-pointer " // ICON BUTTON (Zoom controls) className=" w-10 h-10 flex items-center justify-center bg-white border border-neutral-300 rounded-lg text-neutral-700 hover:bg-primary hover:text-white hover:border-primary active:bg-primary-dark active:scale-95 focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 transition-all duration-150 cursor-pointer " ``` **KEY CHANGES:** - Remove `disabled:grayscale-[0.3]` everywhere - Add `active:scale-[0.98]` for press feedback - Add `focus:ring-2` for accessibility - Use semantic color tokens --- ## Priority 3: Typography Scale (15 minutes) ### Standard Text Classes **Apply throughout components:** ```tsx // Headings h1: "text-2xl font-bold text-neutral-900" // Main title h2: "text-xl font-semibold text-neutral-900" // Section titles h3: "text-base font-semibold text-neutral-900" // Subsections h4: "text-sm font-semibold text-neutral-700" // Small headings // Body text "text-base text-neutral-900" // Large body "text-sm text-neutral-700" // Regular body "text-xs text-neutral-600" // Small text "text-[11px] text-neutral-500" // Caption (minimal use) ``` ### Quick Fixes **WorkflowStepper.tsx:** ```tsx // Line 102: Make step labels larger
{/* was text-xs */} ``` **ProgressMonitor.tsx:** ```tsx // Line 169: Larger thread labels {/* was unlabeled size */} // Line 179: More readable stitch counts {/* was text-xs */} ``` **PatternCanvas.tsx:** ```tsx // Line 278: Clearer thread legend text Thread {index + 1} {/* was text-xs */} ``` --- ## Priority 4: Spacing Consistency (15 minutes) ### Standard Card Padding **Apply to all card components:** ```tsx // Standard card
// Compact card (ProgressMonitor)
``` ### Standard Section Spacing ```tsx // Between major sections
// Within sections
// Within subsections
// Tight grouping
``` ### Quick Fixes **App.tsx:** ```tsx // Line 126: Increase main grid gap
{/* was gap-6 */} // Line 128: Standard spacing in left column
``` **ProgressMonitor.tsx:** ```tsx // Line 116: Better grid gap
{/* was gap-4 */} // Line 143: Better color block spacing
{/* was gap-2 */} ``` --- ## Priority 5: Visual Hierarchy (20 minutes) ### Section Headers **Replace all section headers:** ```tsx // OLD

// NEW

Pattern Preview

``` ### Color Block Enhancement **ProgressMonitor.tsx - Lines 157-191:** ```tsx
Thread {block.colorIndex + 1} {/* Status icons */} {isCompleted && } {isCurrent && } {!isCompleted && !isCurrent && } {block.stitchCount.toLocaleString()}
{/* Progress bar */} {isCurrent && (
)}
``` --- ## Priority 6: Accessibility Quick Wins (15 minutes) ### Add ARIA Labels to Icon Buttons **PatternCanvas.tsx - Zoom controls:** ```tsx ``` ### Increase Touch Targets **All icon buttons:** ```tsx // Change from w-8 h-8 to w-10 h-10