Quick Start
This guide walks you from a fresh React project to a working UI with Clidey Design.
Build with Claude or Codex#
Describe your app and give your coding agent the complete UX context. The prompt below includes the URL for the site you are viewing.
YOUR IDEA → YOUR APP
One prompt. The whole design system.
Copy this into Claude Code or Codex, then describe what you want to build.
Read https://clidey.github.io/ux/llms.txt and build the following app using Clidey UX:
[Describe your app.]
Use a local coding agent for this localhost preview. For remote agents, use the published site URL once the documentation is deployed. See MCP and AI workflows for the complete workflow and optional MCP connection.
Or set it up yourself#
Adding dark mode toggle#
Add a theme toggle button to let users switch between light and dark mode:
TSX
import { ModeToggle, Toaster, toast } from '@clidey/ux';
export default function App() {
return (
<div className="min-h-screen p-8">
<div className="flex justify-end mb-4">
<ModeToggle />
</div>
{/* your content */}
<Toaster />
</div>
);
}
Common patterns#
Form with validation feedback
TSX
import { Input, Label, Button, Alert, AlertTitle, AlertDescription } from '@clidey/ux';
import { useState } from 'react';
function LoginForm() {
const [error, setError] = useState('');
function handleSubmit(e: React.FormEvent) {
e.preventDefault();
setError('Invalid credentials. Please try again.');
}
return (
<form onSubmit={handleSubmit} className="space-y-4 max-w-sm">
{error && (
<Alert variant="destructive">
<AlertTitle>Authentication failed</AlertTitle>
<AlertDescription>{error}</AlertDescription>
</Alert>
)}
<div className="space-y-1">
<Label htmlFor="email">Email</Label>
<Input id="email" type="email" placeholder="you@example.com" />
</div>
<div className="space-y-1">
<Label htmlFor="password">Password</Label>
<Input id="password" type="password" showPasswordToggle />
</div>
<Button type="submit" className="w-full">Sign in</Button>
</form>
);
}
Toast notifications
TSX
import { Button, Toaster, toast } from '@clidey/ux';
function Demo() {
return (
<>
<Button onClick={() => toast.success('Saved successfully!')}>
Save changes
</Button>
<Toaster />
</>
);
}
Confirmation dialog
TSX
import {
AlertDialog,
AlertDialogTrigger,
AlertDialogContent,
AlertDialogHeader,
AlertDialogTitle,
AlertDialogDescription,
AlertDialogFooter,
AlertDialogCancel,
AlertDialogAction,
Button,
} from '@clidey/ux';
function DeleteConfirm() {
return (
<AlertDialog>
<AlertDialogTrigger>
<Button variant="destructive">Delete account</Button>
</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>Delete your account?</AlertDialogTitle>
<AlertDialogDescription>
Your account and all associated data will be permanently deleted.
This cannot be undone.
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Keep account</AlertDialogCancel>
<AlertDialogAction>Delete account</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
);
}
Next steps#
Was this page helpful?
