Composants UI
Guide des composants shadcn/ui utilisés dans Wagoo.
Button
Bouton réutilisable avec variantes.
import { Button } from "@/components/ui/button";
export default function Example() {
return (
<>
<Button>Défaut</Button>
<Button variant="secondary">Secondaire</Button>
<Button variant="destructive">Danger</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button disabled>Désactivé</Button>
<Button size="sm">Petit</Button>
<Button size="lg">Grand</Button>
</>
);
}Card
Conteneur avec bordure et ombre.
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card";
export default function Example() {
return (
<Card>
<CardHeader>
<CardTitle>Titre de la carte</CardTitle>
</CardHeader>
<CardContent>
Contenu ici
</CardContent>
</Card>
);
}Dialog
Modal dialog pour les formulaires et confirmations.
import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog";
export default function Example() {
return (
<Dialog>
<DialogTrigger asChild>
<Button>Ouvrir dialog</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Titre du dialog</DialogTitle>
</DialogHeader>
Contenu du dialog
</DialogContent>
</Dialog>
);
}Form
Intégration React Hook Form avec validation.
import { useForm } from "react-hook-form";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
export default function LoginForm() {
const { register, handleSubmit } = useForm();
return (
<form onSubmit={handleSubmit(onSubmit)}>
<Input {...register("email")} placeholder="Email" />
<Input {...register("password")} type="password" placeholder="Password" />
<Button type="submit">Login</Button>
</form>
);
}Input
Champ d’entrée texte.
import { Input } from "@/components/ui/input";
export default function Example() {
return (
<>
<Input placeholder="Texte" />
<Input type="email" placeholder="Email" />
<Input type="password" placeholder="Password" />
<Input disabled placeholder="Désactivé" />
</>
);
}Select
Sélecteur dropdown.
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from "@/components/ui/select";
export default function Example() {
return (
<Select>
<SelectTrigger>
<SelectValue placeholder="Sélectionner..." />
</SelectTrigger>
<SelectContent>
<SelectItem value="option1">Option 1</SelectItem>
<SelectItem value="option2">Option 2</SelectItem>
</SelectContent>
</Select>
);
}Textarea
Champ texte multi-lignes.
import { Textarea } from "@/components/ui/textarea";
export default function Example() {
return (
<Textarea placeholder="Écrivez votre message..." rows={4} />
);
}Tabs
Onglets pour organiser le contenu.
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
export default function Example() {
return (
<Tabs defaultValue="tab1">
<TabsList>
<TabsTrigger value="tab1">Tab 1</TabsTrigger>
<TabsTrigger value="tab2">Tab 2</TabsTrigger>
</TabsList>
<TabsContent value="tab1">Contenu 1</TabsContent>
<TabsContent value="tab2">Contenu 2</TabsContent>
</Tabs>
);
}Badge
Petit label pour statuts ou tags.
import { Badge } from "@/components/ui/badge";
export default function Example() {
return (
<>
<Badge>Default</Badge>
<Badge variant="secondary">Secondary</Badge>
<Badge variant="destructive">Destructive</Badge>
<Badge variant="outline">Outline</Badge>
</>
);
}Alert
Message d’alerte ou d’information.
import { Alert, AlertTitle, AlertDescription } from "@/components/ui/alert";
export default function Example() {
return (
<Alert>
<AlertTitle>Attention!</AlertTitle>
<AlertDescription>Ceci est un message d'alerte.</AlertDescription>
</Alert>
);
}Tooltip
Info-bulle au survol.
import { Tooltip, TooltipTrigger, TooltipContent } from "@/components/ui/tooltip";
export default function Example() {
return (
<Tooltip>
<TooltipTrigger>Hover me</TooltipTrigger>
<TooltipContent>Ceci est une info-bulle</TooltipContent>
</Tooltip>
);
}Popover
Popup pour des actions supplémentaires.
import { Popover, PopoverTrigger, PopoverContent } from "@/components/ui/popover";
export default function Example() {
return (
<Popover>
<PopoverTrigger asChild>
<Button>Ouvrir popover</Button>
</PopoverTrigger>
<PopoverContent>
Contenu du popover
</PopoverContent>
</Popover>
);
}Personnalisation
Tous les composants héritent de Tailwind CSS.
Pour personnaliser :
<Button className="bg-blue-600 hover:bg-blue-700">Custom</Button>Voir Tailwind CSS Docs pour les classes disponibles.
Voir Layouts pour les structures de page.
Last updated on