Vite.JS avec ShadCN
Utiliser des composants pour créer une belle interface
Notions théoriques
Qu'est-ce que ShadCN ?
ShadCN est une collection de composants UI conçus pour React et basés sur Radix UI et Tailwind CSS.
Il permet de créer des interfaces modernes, accessibles et facilement personnalisables.
Un tutoriel complet est dédié à ShadCN : shadcn/ui.
Pourquoi utiliser ShadCN avec Vite ?
- Facilité d'intégration : Compatible avec Vite et React.
- Composants prêts à l'emploi : Boutons, modals, inputs, etc.
- Personnalisation avec Tailwind CSS : Styles flexibles et adaptables.
- Accessibilité optimis ée : Respect des bonnes pratiques UX.
Installation de ShadCN dans un projet Vite
-
Créer un projet Vite avec React
npm create vite@latest mon-projet --template react
cd mon-projet
npm install -
Installer les dépendances nécessaires
npm install tailwindcss postcss autoprefixer
npx tailwindcss init -p -
Configurer Tailwind CSS
Modifiertailwind.config.jspour inclure les styles de ShadCN :export default {
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
theme: {
extend: {},
},
plugins: [],
}; -
Installer ShadCN
npx shadcn-ui@latest init -
Ajouter un composant (ex : bouton)
npx shadcn-ui@latest add button
Les composants principaux de ShadCN
ShadCN propose plusieurs composants utiles :
- Button : Boutons interactifs
- Input : Champs de saisie
- Dialog : Fenêtres modales
- Card : Cartes de contenu
- Tooltip : Infobulles
Comparaison avec d'autres bibliothèques UI
| Fonctionnalité | ShadCN | Material UI | Bootstrap |
|---|---|---|---|
| Personnalisation | ✔️ Facile avec Tailwind | ⚠️ Plus complexe | ❌ Limité |
| Accessibilité | ✔️ Optimisée | ✔️ Bonne | ⚠️ Variable |
| Poids | ✔️ Léger | ❌ Plus lourd | ⚠️ Moyen |
| Intégration avec Vite | ✔️ Native | ✔️ Possible | ✔️ Possible |
Exemple pratique : Ajouter un bouton interactif
Nous allons ajouter un bouton ShadCN dans notre projet Vite.
Étape 1 : Ajouter un bouton avec ShadCN
Dans le terminal, exécutez :
npx shadcn-ui@latest add button
Cela crée un composant Button.jsx dans src/components/ui/.
Étape 2 : Utiliser le bouton dans App.jsx
Modifiez src/App.jsx pour inclure le bouton :
import { Button } from "./components/ui/button";
function App() {
return (
<div className="flex flex-col items-center justify-center h-screen">
<h1 className="text-2xl font-bold">Bienvenue sur Vite + ShadCN</h1>
<Button className="mt-4">Cliquez-moi</Button>
</div>
);
}
export default App;
Étape 3 : Tester le rechargement à chaud
Modifiez le texte du bouton et observez la mise à jour instantanée.
Étape 4 : Personnaliser le bouton avec Tailwind CSS
Ajoutez des styles supplémentaires :
<Button className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Cliquez-moi
</Button>