Playground
Experiment with Ramp Design System components in real-time
Unsaved playground
import { Button } from "./components/ui/button" import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "./components/ui/card" import { Input } from "./components/ui/input" import { Label } from "./components/ui/label" import { Badge } from "./components/ui/badge" import { Alert, AlertTitle, AlertDescription } from "./components/ui/alert" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "./components/ui/dialog" import { CheckCircle2, AlertTriangle, Info } from "lucide-react" export default function App() { return ( <div className="p-8 space-y-8 max-w-4xl"> {/* Buttons */} <section> <h2 className="text-lg font-semibold mb-4">Buttons</h2> <div className="flex flex-wrap gap-2"> <Button>Default</Button> <Button variant="secondary">Secondary</Button> <Button variant="outline">Outline</Button> <Button variant="ghost">Ghost</Button> <Button variant="destructive">Destructive</Button> </div> </section> {/* Badges */} <section> <h2 className="text-lg font-semibold mb-4">Badges</h2> <div className="flex flex-wrap gap-2"> <Badge>Default</Badge> <Badge variant="secondary">Secondary</Badge> <Badge variant="outline">Outline</Badge> <Badge variant="destructive">Error</Badge> <Badge variant="success">Success</Badge> <Badge variant="warning">Warning</Badge> <Badge variant="info">Info</Badge> </div> </section> {/* Cards & Forms */} <section> <h2 className="text-lg font-semibold mb-4">Cards & Forms</h2> <div className="grid gap-4 md:grid-cols-2"> <Card> <CardHeader> <CardTitle>Login</CardTitle> <CardDescription>Enter your credentials</CardDescription> </CardHeader> <CardContent className="space-y-4"> <div className="space-y-2"> <Label htmlFor="email">Email</Label> <Input id="email" type="email" placeholder="name@example.com" /> </div> <div className="space-y-2"> <Label htmlFor="password">Password</Label> <Input id="password" type="password" /> </div> </CardContent> <CardFooter> <Button className="w-full">Sign in</Button> </CardFooter> </Card> <Card> <CardHeader> <CardTitle>Project Settings</CardTitle> <CardDescription>Manage your project configuration</CardDescription> </CardHeader> <CardContent className="space-y-4"> <div className="space-y-2"> <Label htmlFor="name">Project Name</Label> <Input id="name" defaultValue="My Project" /> </div> <div className="space-y-2"> <Label htmlFor="desc">Description</Label> <Input id="desc" placeholder="Enter description..." /> </div> </CardContent> <CardFooter className="flex justify-between"> <Button variant="outline">Cancel</Button> <Button>Save</Button> </CardFooter> </Card> </div> </section> {/* Alerts */} <section> <h2 className="text-lg font-semibold mb-4">Alerts</h2> <div className="space-y-3"> <Alert> <Info className="h-4 w-4" /> <AlertTitle>Information</AlertTitle> <AlertDescription>This is a default informational alert.</AlertDescription> </Alert> <Alert variant="success"> <CheckCircle2 className="h-4 w-4" /> <AlertTitle>Success</AlertTitle> <AlertDescription>Your changes have been saved.</AlertDescription> </Alert> <Alert variant="warning"> <AlertTriangle className="h-4 w-4" /> <AlertTitle>Warning</AlertTitle> <AlertDescription>Your session will expire soon.</AlertDescription> </Alert> </div> </section> {/* Dialog */} <section> <h2 className="text-lg font-semibold mb-4">Dialog</h2> <Dialog> <DialogTrigger asChild> <Button>Open Dialog</Button> </DialogTrigger> <DialogContent> <DialogHeader> <DialogTitle>Edit Profile</DialogTitle> <DialogDescription>Make changes to your profile here.</DialogDescription> </DialogHeader> <div className="space-y-4 py-4"> <div className="space-y-2"> <Label htmlFor="dialog-name">Name</Label> <Input id="dialog-name" defaultValue="John Doe" /> </div> </div> <DialogFooter> <Button>Save changes</Button> </DialogFooter> </DialogContent> </Dialog> </section> </div> ) }