- {/* Decorative elements */}
-
-
-
-
-
-
-
- Interactive Visual Editor
-
-
-
- Build Stunning Interfaces,
- Purely from JSON.
-
-
- Object UI transforms JSON schemas into fully functional, accessible, and responsive React applications.
-
- Select a template below or start from scratch.
-
-
-
-
navigate('/studio/new')}
- className="flex items-center gap-2 px-6 py-3 text-lg font-bold bg-primary text-primary-foreground hover:bg-primary/90 rounded-xl shadow-lg transition-all transform hover:scale-105"
- >
-
- Start New Design
-
-
navigate('/my-designs')}
- className="flex items-center gap-2 px-6 py-3 text-lg font-bold bg-secondary text-secondary-foreground hover:bg-secondary/80 border-2 border-border rounded-xl shadow-lg transition-all transform hover:scale-105"
- >
-
- Open Saved
-
+
+ {/* Quick Actions */}
+
+
+
Quick Start
+
+ navigate('/my-designs')}
+ className="flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium hover:bg-muted rounded-md transition-colors"
+ >
+
+ Open Saved
+
+
{/* Category Filter */}
-
- {Object.keys(exampleCategories).map((category) => (
-
setActiveCategory(category)}
- className={`
- group flex items-center gap-2 px-5 py-2.5 rounded-xl text-sm font-semibold transition-all duration-200
- ${activeCategory === category
- ? 'bg-primary text-primary-foreground shadow-lg scale-105'
- : 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-2 border-border hover:shadow-md'}
- `}
- >
-
- {category}
- {activeCategory === category && (
-
- {exampleCategories[category as keyof typeof exampleCategories].length}
+
+
+ {Object.keys(exampleCategories).map((category) => (
+ setActiveCategory(category)}
+ className={`
+ flex items-center gap-1.5 px-3 py-2 text-sm font-medium transition-colors border-b-2 -mb-px
+ ${activeCategory === category
+ ? 'border-primary text-primary'
+ : 'border-transparent text-muted-foreground hover:text-foreground hover:border-border'}
+ `}
+ >
+
+ {category}
+
+ ({exampleCategories[category as keyof typeof exampleCategories].length})
- )}
-
- ))}
+
+ ))}
+
- {/* Examples Grid */}
-
+ {/* Templates Grid */}
+
{exampleCategories[activeCategory as keyof typeof exampleCategories].map((key) => {
- // Try to parse the example to get a description or just format the title
const title = key.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
return (
navigate(`/${key}`)}
- className="group relative bg-card rounded-2xl border-2 border-border overflow-hidden hover:shadow-2xl transition-all duration-300 cursor-pointer hover:border-primary hover:-translate-y-1 flex flex-col h-72"
+ onClick={() => navigate(`/studio/${key}`)}
+ className="group bg-card rounded-lg border border-border overflow-hidden hover:border-primary hover:shadow-md transition-all cursor-pointer"
>
- {/* Overlay on hover */}
-
-
- {/* Mock Preview Window */}
-
- {/* Decorative grid */}
-
-
-