# 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
Create AI images from text promptsGenerate
Generated images will appear here
Lab Mode: Experimental features enabled.