# Lab Section Design System The Lab section is a production-ready UI interface for interacting with the Banatie API service. It provides a clean, work-focused experience for image generation, gallery browsing, alias management, and flow control. ## File Structure ``` apps/landing/src/ ├── app/(lab)/ │ ├── CLAUDE.md # This design documentation │ ├── layout.tsx # Root lab layout with scroll context │ └── lab/ │ ├── layout.tsx # Sub-layout with PageProvider │ ├── page.tsx # Redirect to /lab/generate │ ├── generate/page.tsx # Generation workbench │ ├── images/page.tsx # Image gallery browser │ ├── live/page.tsx # Live generation testing │ └── upload/page.tsx # File upload interface │ ├── components/layout/lab/ │ ├── LabLayout.tsx # Main layout (sidebar + content + footer) │ ├── LabSidebar.tsx # Left filter panel │ └── LabFooter.tsx # Contextual footer with links │ ├── components/lab/ │ ├── GenerateFormPlaceholder.tsx # Generation form component │ └── FilterPlaceholder.tsx # Reusable filter checkbox/radio │ └── contexts/ └── lab-scroll-context.tsx # Scroll state for header collapse ``` ## Design Principles 1. **Work-focused, not marketing** - Small typography, efficient spacing 2. **Clean and functional** - Like Google AI Studio 3. **Dual color system** - Zinc for layout, Slate for forms 4. **Consistent icons** - Lucide React only, no emojis 5. **Responsive** - Works on 768px to 1920px+ screens --- ## Color System ### Layout/Chrome → Zinc (Neutral Gray) Used for sidebar, footer, and layout borders: ```css bg-zinc-950 /* Sidebar background */ bg-zinc-950/50 /* Footer background, layout wrappers */ border-zinc-800 /* Layout borders, dividers */ text-zinc-400 /* Sidebar text */ text-zinc-500 /* Footer text, muted */ ``` ### Forms/Cards → Slate (Original Style) Used for cards, inputs, and interactive UI elements: ```css bg-slate-900/80 /* Card backgrounds */ bg-slate-900/50 /* Empty states, lighter cards */ bg-slate-800 /* Input backgrounds, secondary surfaces */ border-slate-700 /* Card borders, input borders */ text-gray-400 /* Labels, secondary text */ text-gray-500 /* Placeholders, hints */ ``` ### Accent Colors (Purple/Cyan) ```css /* Primary gradient */ bg-gradient-to-r from-purple-600 to-cyan-600 hover:from-purple-500 hover:to-cyan-500 shadow-lg shadow-purple-900/30 focus:ring-2 focus:ring-purple-500 /* Single-color accents */ text-purple-400 /* Links, interactive text */ /* Info banners */ bg-purple-900/10 border-purple-700/50 ``` ### Status Colors ```css /* Success */ bg-emerald-500/10 border-emerald-500/30 text-emerald-400 /* Warning */ bg-amber-500/10 border-amber-500/30 text-amber-400 /* Error */ bg-red-500/10 border-red-500/30 text-red-400 /* Info */ bg-purple-900/10 border-purple-700/50 text-purple-400 ``` --- ## Typography Scale ### Headings (Practical Sizes) ```tsx // Page Title (only on main pages) text-lg font-semibold text-white // Section Title text-base font-semibold text-white // Card Title text-sm font-medium text-white ``` ### Body Text ```tsx // Primary body text-sm text-gray-300 // Secondary/descriptions text-sm text-gray-400 // Small text (hints, metadata) text-xs text-gray-500 // Labels (form fields) text-xs font-medium text-gray-400 ``` ### Interactive ```tsx // Button text text-sm font-semibold // Links text-sm text-purple-400 hover:text-purple-300 // Badge/count text-xs text-gray-600 ``` --- ## Spacing System ### Padding ```tsx // Cards p-4 md:p-5 // Compact cards p-3 // Form inputs px-3 py-2 // Buttons (primary) px-4 py-2.5 // Buttons (secondary) px-3 py-2 ``` ### Section Spacing ```tsx // Page padding p-4 md:p-6 // Between sections space-y-4 // Between cards in grid gap-3 md:gap-4 // Between form fields gap-2 // Label to input mb-1.5 ``` ### Border Radius ```tsx rounded-lg /* Standard (inputs, small cards) */ rounded-xl /* Medium (cards) */ ``` --- ## Component Patterns ### Page Header ```tsx

Generate

Create AI images from text prompts

``` ### Form Card (Slate) ```tsx
{/* content */}
``` ### Form Input (Slate) ```tsx
``` ### Textarea (Slate) ```tsx