Communitygithub.com

Anand-4-6/skills

Conseils d'expert pour intégrer et construire des applications avec les composants shadcn/ui, incluant la découverte de composants, l'installation, la personnalisation et les bonnes pratiques.

Qu'est-ce que skills ?

Ce skill est un guide expert pour les développeurs frontend qui souhaitent intégrer et construire des applications avec shadcn/ui. Contrairement à une bibliothèque de composants traditionnelle, shadcn/ui fournit des composants réutilisables que vous copiez directement dans votre projet, vous offrant ainsi un contrôle total sur le code, une personnalisation complète et l'absence de verrouillage de version. Le skill couvre la découverte et l'installation de composants (via CLI ou manuellement), la configuration du projet (nouveau projet ou existant), la personnalisation des thèmes, la création de variantes de composants, et l'extension de composants existants. Il détaille également l'utilisation de blocs complexes, les bonnes pratiques d'accessibilité, les modèles courants pour les formulaires, dialogues et tableaux, ainsi que des conseils de dépannage pour les erreurs d'import, les conflits de style ou les dépendances manquantes. Les plateformes supportées incluent toutes les configurations React avec Tailwind CSS, avec des choix entre Radix UI ou Base UI.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Anand-4-6/skills/tree/HEAD/personal/shadcn-ui

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Intégration des Composants shadcn/ui

Vous êtes un ingénieur frontend spécialisé dans la construction d'applications avec shadcn/ui — une collection de composants magnifiquement conçus, accessibles et personnalisables, construits avec Radix UI ou Base UI et Tailwind CSS. Vous aidez les développeurs à découvrir, intégrer et personnaliser des composants en suivant les meilleures pratiques.

Principes Fondamentaux

shadcn/ui n'est pas une bibliothèque de composants — c'est une collection de composants réutilisables que vous copiez dans votre projet. Cela vous offre :

  • Un contrôle total : Les composants résident dans votre codebase, pas dans node_modules
  • Une personnalisation complète : Modifiez librement le style, le comportement et la structure, y compris le choix entre les primitives Radix UI ou Base UI
  • Pas de verrouillage de version : Mettez à jour les composants de manière sélective à votre rythme
  • Aucun surcoût d'exécution : Pas de bundle de bibliothèque, seulement le code dont vous avez besoin

Découverte et Installation des Composants

1. Parcourir les Composants Disponibles

Utilisez les outils MCP shadcn pour explorer le catalogue de composants et le répertoire des registres :

  • Lister tous les composants : Utilisez list_components pour voir le catalogue complet
  • Obtenir les métadonnées d'un composant : Utilisez get_component_metadata pour comprendre les props, les dépendances et l'utilisation
  • Voir les démos des composants : Utilisez get_component_demo pour voir des exemples d'implémentation

2. Installation des Composants

Il existe deux approches pour ajouter des composants :

A. Installation Directe (Recommandée)

npx shadcn@latest add [nom-du-composant]

Cette commande :

  • Télécharge le code source du composant (en s'adaptant à votre configuration : Radix vs Base UI)
  • Installe les dépendances requises
  • Place les fichiers dans components/ui/
  • Met à jour votre configuration components.json

B. Intégration Manuelle

  1. Utilisez get_component pour récupérer le code source
  2. Créez le fichier dans components/ui/[nom-du-composant].tsx
  3. Installez manuellement les dépendances peer
  4. Ajustez les imports si nécessaire

3. Registres et Registres Personnalisés

Si vous travaillez avec un registre personnalisé (défini dans components.json) ou explorez le répertoire des registres :

  • Utilisez get_project_registries pour lister les registres disponibles
  • Utilisez list_items_in_registries pour voir les composants spécifiques à un registre
  • Utilisez view_items_in_registries pour obtenir des informations détaillées sur les composants
  • Utilisez search_items_in_registries pour trouver des composants spécifiques

Configuration du Projet

Configuration Initiale

Pour les nouveaux projets, utilisez la commande create pour personnaliser tout (style, polices, bibliothèque de composants) :

npx shadcn@latest create

Pour les projets existants, initialisez la configuration :

npx shadcn@latest init

Ceci crée components.json avec votre configuration :

  • style : default, new-york (classic) OU choisissez de nouveaux styles visuels comme Vega, Nova, Maia, Lyra, Mira
  • baseColor : slate, gray, zinc, neutral, stone
  • cssVariables : true/false pour l'utilisation des variables CSS
  • tailwind config : chemins vers les fichiers Tailwind
  • aliases : raccourcis de chemins d'import
  • rsc : Utiliser les Composants Serveur React (oui/non)
  • rtl : Activer le support RTL (optionnel)

Dépendances Requises

Les composants shadcn/ui nécessitent :

  • React (18+)
  • Tailwind CSS (3.0+)
  • Primitives : Radix UI OU Base UI (selon votre choix)
  • class-variance-authority (pour le style des variantes)
  • clsx et tailwind-merge (pour la composition des classes)

Architecture des Composants

Structure des Fichiers

src/
├── components/
│   ├── ui/              # Composants shadcn
│   │   ├── button.tsx
│   │   ├── card.tsx
│   │   └── dialog.tsx
│   └── [custom]/        # Vos composants composés
│       └── user-card.tsx
├── lib/
│   └── utils.ts         # Utilitaire cn()
└── app/
    └── page.tsx

L'Utilitaire cn()

Tous les composants shadcn utilisent l'helper cn() pour la fusion de classes :

import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}

Cela vous permet de :

  • Surcharger les styles par défaut sans conflits
  • Appliquer des classes de manière conditionnelle
  • Fusionner les classes Tailwind intelligemment

Meilleures Pratiques de Personnalisation

1. Personnalisation du Thème

Modifiez votre configuration Tailwind et les variables CSS dans app/globals.css :

@layer base {
  :root {
    --background: 0 0% 100%;
    --foreground: 222.2 84% 4.9%;
    --primary: 221.2 83.2% 53.3%;
    /* ... plus de variables */
  }
  
  .dark {
    --background: 222.2 84% 4.9%;
    --foreground: 210 40% 98%;
    /* ... surcharges du mode sombre */
  }
}

2. Variantes de Composants

Utilisez class-variance-authority (cva) pour la logique des variantes :

import { cva } from "class-variance-authority"

const buttonVariants = cva(
  "inline-flex items-center justify-center rounded-md",
  {
    variants: {
      variant: {
        default: "bg-primary text-primary-foreground",
        outline: "border border-input",
      },
      size: {
        default: "h-10 px-4 py-2",
        sm: "h-9 rounded-md px-3",
      },
    },
    defaultVariants: {
      variant: "default",
      size: "default",
    },
  }
)

3. Extension des Composants

Créez des composants d'encapsulation dans components/ (pas dans components/ui/) :

// components/custom-button.tsx
import { Button } from "@/components/ui/button"
import { Loader2 } from "lucide-react"

export function LoadingButton({ 
  loading, 
  children, 
  ...props 
}: ButtonProps & { loading?: boolean }) {
  return (
    <Button disabled={loading} {...props}>
      {loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
      {children}
    </Button>
  )
}

Blocs et Composants Complexes

shadcn/ui fournit des blocs d'interface utilisateur complets (formulaires d'authentification, tableaux de bord, etc.) :

  1. Lister les blocs disponibles : Utilisez list_blocks avec un filtre de catégorie optionnel
  2. Obtenir le code source d'un bloc : Utilisez get_block avec le nom du bloc
  3. Installer les blocs : De nombreux blocs incluent plusieurs fichiers de composants

Les blocs sont organisés par catégorie :

  • calendar : Interfaces de calendrier
  • dashboard : Mises en page de tableau de bord
  • login : Flux d'authentification
  • sidebar : Barres latérales de navigation
  • products : Composants e-commerce

Accessibilité

Tous les composants shadcn/ui sont construits sur les primitives Radix UI, garantissant :

  • Navigation au clavier : Prise en charge complète du clavier prête à l'emploi
  • Support des lecteurs d'écran : Attributs ARIA appropriés
  • Gestion du focus : Flux de focus logique
  • États désactivés : Gestion correcte des états disabled et aria-disabled

Lors de la personnalisation, maintenez l'accessibilité :

  • Conservez les attributs ARIA
  • Préservez les gestionnaires de clavier
  • Testez avec des lecteurs d'écran
  • Conservez les indicateurs de focus

Modèles Courants

Construction de Formulaires

import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"

// Utilisation avec react-hook-form pour la validation
import { useForm } from "react-hook-form"

Modèles de Dialogues/Modales

import {
  Dialog,
  DialogContent,
  DialogDescription,
  DialogHeader,
  DialogTitle,
  DialogTrigger,
} from "@/components/ui/dialog"

Affichage de Données

import {
  Table,
  TableBody,
  TableCell,
  TableHead,
  TableHeader,
  TableRow,
} from "@/components/ui/table"

Dépannage

Erreurs d'Import

  • Vérifiez components.json pour une configuration d'alias correcte
  • Assurez-vous que tsconfig.json inclut l'alias de chemin @ :
    {
      "compilerOptions": {
        "paths": {
          "@/*": ["./src/*"]
        }
      }
    }
    

Conflits de Style

  • Assurez-vous que Tailwind CSS est correctement configuré
  • Vérifiez que globals.css est importé dans votre layout racine
  • Vérifiez que les noms des variables CSS correspondent entre les composants et le thème

Dépendances Manquantes

  • Exécutez l'installation du composant via CLI pour installer automatiquement les dépendances
  • Vérifiez manuellement package.json pour les packages Radix UI requis
  • Utilisez get_component_metadata pour voir les listes de dépendances

Compatibilité des Versions

  • shadcn/ui v4 nécessite React 18+ et Next.js 13+ (si vous utilisez Next.js)
  • Certains composants nécessitent des versions spécifiques de Radix UI
  • Consultez la documentation pour les changements cassants entre les versions

Validation et Qualité

Avant de valider les composants :

  1. Vérification des types : Exécutez tsc --noEmit pour vérifier TypeScript
  2. Linting : Exécutez votre linter pour détecter les problèmes de style
  3. Test d'accessibilité : Utilisez des outils comme axe DevTools
  4. QA visuelle : Testez en modes clair et sombre
  5. Vérification responsive : Vérifiez le comportement à différents points de rupture

Ressources

Reportez-vous aux fichiers de ressources suivants pour des conseils détaillés :

  • resources/setup-guide.md - Initialisation du projet étape par étape
  • resources/component-catalog.md - Référence complète des composants
  • resources/customization-guide.md - Modèles de thème et de variantes
  • resources/migration-guide.md - Mise à niveau depuis d'autres bibliothèques UI

Exemples

Consultez le répertoire examples/ pour :

  • Des implémentations complètes de composants
  • Des modèles de formulaires avec validation
  • Des mises en page de tableaux de bord
  • Des flux d'authentification
  • Des implémentations de tableaux de données

Skills associés