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.js
pour 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>
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Dans ce TP, vous allez :
- Créer un projet Vite avec React.
- Installer Tailwind CSS et ShadCN.
- Ajouter un bouton personnalisé avec ShadCN.
- Ajouter une fenêtre modale (Dialog) qui s'ouvre au clic sur le bouton.
- Tester le rechargement à chaud.
Étape 1 : Création du projet
Exécutez :
npm create vite@latest mon-projet --template react
cd mon-projet
npm install
Étape 2 : Installation de Tailwind CSS et ShadCN
npm install tailwindcss postcss autoprefixer
npx tailwindcss init -p
npx shadcn-ui@latest init
Étape 3 : Ajouter un bouton et une modale
Ajoutez un bouton et une modale dans App.jsx
:
import { Button } from "./components/ui/button";
import { Dialog, DialogTrigger, DialogContent } from "./components/ui/dialog";
function App() {
return (
<div className="flex flex-col items-center justify-center h-screen">
<Dialog>
<DialogTrigger asChild>
<Button>Ouvrir la modale</Button>
</DialogTrigger>
<DialogContent>
<p>Contenu de la modale</p>
</DialogContent>
</Dialog>
</div>
);
}
export default App;
Le TP est réussi si :
- Le projet est bien créé avec Vite.
- Le bouton s'affiche correctement.
- La modale s'ouvre au clic.
- Le rechargement à chaud fonctionne.