diff --git a/apps/landing/package.json b/apps/landing/package.json
index 0f92f17..6b93aea 100644
--- a/apps/landing/package.json
+++ b/apps/landing/package.json
@@ -10,17 +10,18 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "react": "19.1.0",
- "react-dom": "19.1.0",
+ "@banatie/database": "workspace:*",
+ "lucide-react": "^0.400.0",
"next": "15.5.4",
- "@banatie/database": "workspace:*"
+ "react": "19.1.0",
+ "react-dom": "19.1.0"
},
"devDependencies": {
- "typescript": "^5",
+ "@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
- "@tailwindcss/postcss": "^4",
- "tailwindcss": "^4"
+ "tailwindcss": "^4",
+ "typescript": "^5"
}
}
diff --git a/apps/landing/src/app/(lab)/CLAUDE.md b/apps/landing/src/app/(lab)/CLAUDE.md
new file mode 100644
index 0000000..5751e82
--- /dev/null
+++ b/apps/landing/src/app/(lab)/CLAUDE.md
@@ -0,0 +1,398 @@
+# 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. **Neutral colors** - Zinc palette (true gray, no blue tint)
+4. **Consistent icons** - Lucide React only, no emojis
+5. **Responsive** - Works on 768px to 1920px+ screens
+
+---
+
+## Color System (Zinc Palette)
+
+### Backgrounds
+```css
+bg-zinc-950 /* Main app background */
+bg-zinc-900 /* Card backgrounds, elevated surfaces */
+bg-zinc-900/80 /* Card with transparency + backdrop-blur-sm */
+bg-zinc-800 /* Input backgrounds, secondary surfaces */
+bg-zinc-800/50 /* Hover states, subtle overlays */
+```
+
+### Borders
+```css
+border-zinc-800 /* Standard borders */
+border-zinc-700 /* Lighter borders, dividers */
+border-white/10 /* Subtle borders (avoid in Lab) */
+```
+
+### Text
+```css
+text-white /* Primary headings */
+text-zinc-100 /* Body text, primary content */
+text-zinc-300 /* Secondary text, descriptions */
+text-zinc-400 /* Muted text, placeholders */
+text-zinc-500 /* Disabled states */
+text-zinc-600 /* Count badges, metadata */
+```
+
+### Accent Colors (Keep 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 */
+bg-purple-500/10 /* Info banners */
+border-purple-500/20 /* Accent borders */
+```
+
+### 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-500/10 border-purple-500/30 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-zinc-300
+
+// Secondary/descriptions
+text-sm text-zinc-400
+
+// Small text (hints, metadata)
+text-xs text-zinc-500
+
+// Labels (form fields)
+text-xs font-medium text-zinc-400
+```
+
+### Interactive
+```tsx
+// Button text
+text-sm font-semibold
+
+// Links
+text-sm text-purple-400 hover:text-purple-300
+
+// Badge/count
+text-xs text-zinc-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
+py-6 md:py-8
+
+// Between sections
+mb-4 md:mb-6
+
+// 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, buttons) */
+rounded-2xl /* Large - AVOID in Lab (too marketing) */
+```
+
+---
+
+## Component Patterns
+
+### Page Header
+```tsx
+ Create AI images from text promptsGenerate
+
Generated images will appear here
++ Lab Mode: Experimental features enabled. +
+- Browse and manage your generated images -
+Browse and manage your generated images
+Component will be implemented here
+ {/* Empty State Placeholder */} +Component will be implemented here
- Real-time testing and experimentation workspace -
+Real-time testing and experimentation
+Component will be implemented here
+ {/* Live Testing Placeholder */} +Component will be implemented here
- Upload and manage reference images for generation -
+Upload and manage reference images
+Component will be implemented here
+ {/* Upload Dropzone Placeholder */} +Drag and drop files or click to browse