Vous voulez une plateforme intégrée, Tout-en-Un, pour que votre équipe de développeurs travaille ensemble avec une productivité maximale ?
Apidog répond à toutes vos exigences et remplace Postman à un prix beaucoup plus abordable !
Pour les développeurs front-end, la demande d'interfaces utilisateur esthétiquement plaisantes, hautement performantes et profondément personnalisables n'a jamais été aussi forte. Les développeurs recherchent constamment des outils capables d'accélérer leur flux de travail sans sacrifier la qualité ou le contrôle créatif. Si les bibliothèques de composants UI monolithiques ont bien servi la communauté pendant des années, un nouveau paradigme émerge – un paradigme qui privilégie la propriété par le développeur, la modularité et l'intégration transparente avec les frameworks modernes. C'est dans ce nouveau paradigme que HeroUI se taille une place.
HeroUI n'est pas juste une autre bibliothèque de composants ; c'est une collection méticuleusement conçue de composants UI réutilisables, conçus pour être intégrés directement dans vos projets. Il défend une philosophie qui donne aux développeurs le contrôle ultime sur leur base de code. Au lieu d'importer des composants opaques à partir d'un module node, vous utilisez l'Interface de Ligne de Commande (CLI) de HeroUI pour ajouter le code source réel des composants dont vous avez besoin dans votre projet. Cette évolution du "copier-coller" signifie que chaque bouton, carte et boîte de dialogue devient une partie de votre propre application, prête à être ajustée, restylée et adaptée à vos besoins spécifiques.
Construit sur les épaules de géants comme React, Tailwind CSS et Next.js, HeroUI fournit les blocs de construction pour créer des interfaces utilisateur belles, accessibles et réactives. Il est conçu pour le développeur moderne qui valorise à la fois la vitesse et la spécificité, offrant un point de départ robuste qui ne vous enferme pas dans un système de conception rigide. Cet article servira de guide complet pour comprendre les principes fondamentaux de HeroUI, l'installer dans votre projet, personnaliser son apparence et exploiter sa puissante CLI pour construire la prochaine génération d'applications web.
Partie 1 : Déconstruire HeroUI - Philosophie et fonctionnalités clés
Avant de plonger dans les détails techniques de l'installation et de l'utilisation, il est crucial de comprendre le "pourquoi" derrière HeroUI. Quels problèmes résout-il, et qu'est-ce qui en fait un choix convaincant dans un domaine encombré d'outils UI ?
La Philosophie : Propriété et Personnalisation Sans Compromis
La différence fondamentale entre HeroUI et les bibliothèques UI traditionnelles comme Material-UI ou Ant Design réside dans le concept de propriété. Lorsque vous installez une bibliothèque traditionnelle, vous ajoutez une dépendance à votre package.json
. Votre application importe ensuite des composants pré-compilés à partir de ce package. Bien que cela soit pratique, cela présente plusieurs inconvénients :
- Personnalisation Limitée : Les surcharges de style peuvent être complexes, vous obligeant souvent à lutter contre les styles par défaut de la bibliothèque avec des balises
!important
ou des configurations de fournisseur de thème compliquées. - Composants Boîtes Noires : La logique interne des composants est cachée dans le dossier
node_modules
. Déboguer un comportement inattendu ou comprendre le fonctionnement interne devient beaucoup plus difficile. - Gonflement de la Taille du Bundle : Vous importez souvent la bibliothèque entière, ou du moins une partie importante de celle-ci, même si vous n'utilisez qu'une poignée de composants, ce qui peut potentiellement augmenter la taille finale du bundle de votre application.
- L'Enfer des Dépendances : Vous êtes lié au cycle de mise à jour de la bibliothèque et à ses dépendances. Un changement majeur dans la bibliothèque peut forcer un refactoring important dans votre application.
HeroUI contourne entièrement ces problèmes. En permettant à la CLI de placer le code source du composant directement dans le répertoire de votre projet (par exemple, /components/ui
), il vous donne du pouvoir de plusieurs manières clés :
- Vous Possédez le Code : Le composant est maintenant le vôtre. Vous pouvez changer sa structure, ses styles, sa logique – tout. Il n'y a pas de limitations artificielles. Si vous avez besoin d'un bouton avec une animation unique ou une structure interne légèrement différente, vous pouvez simplement modifier le fichier.
- Transparence Totale : Vous pouvez lire le code de chaque composant que vous utilisez. C'est inestimable pour l'apprentissage, le débogage et l'acquisition d'une compréhension plus approfondie de la manière de construire des éléments UI accessibles et robustes.
- Zéro Code Inutilisé : Le bundle de votre application n'inclura que le code des composants que vous avez explicitement ajoutés. Rien de plus.
- Découplé et Pérenne : Étant donné que les composants font partie de votre base de code, vous n'êtes pas lié à la gestion de version de HeroUI de la même manière. Vous pouvez mettre à jour les composants selon votre propre calendrier ou choisir de ne pas les mettre à jour du tout.
Cette philosophie s'adresse aux développeurs et aux équipes qui souhaitent construire un système de conception unique pour leur produit sans partir de zéro. Il fournit les primitives fondamentales, non stylisées (ou légèrement stylisées), et vous fournissez l'identité de la marque.
Fonctionnalités Clés en un Coup d'Œil
HeroUI est plus qu'une simple méthode d'installation. Il est doté de fonctionnalités conçues pour un flux de travail de développement moderne.
- Collection Riche de Composants : HeroUI offre un ensemble complet des composants UI les plus couramment nécessaires, y compris les boutons, les formulaires, les boîtes de dialogue, les menus déroulants, les tableaux de données, et plus encore. Chaque composant est soigneusement conçu en tenant compte de l'accessibilité (attributs ARIA) et de l'expérience utilisateur.
- Propulsé par Tailwind CSS : Au cœur des capacités de style de HeroUI se trouve Tailwind CSS, le framework CSS utility-first. Cela signifie que la personnalisation ne se fait pas en surchargeant des classes CSS, mais en composant des classes utilitaires. Cette approche est incroyablement rapide, intuitive et aide à maintenir un langage de conception cohérent. HeroUI utilise les capacités de theming de Tailwind à leur plein potentiel, permettant des changements à l'échelle du projet avec seulement quelques lignes de configuration.
- Theming et Personnalisation Approfondis : L'apparence et la convivialité des composants peuvent être contrôlées via une configuration de thème centrale. Cela inclut les couleurs, les polices, les rayons de bordure, l'espacement, et plus encore. Tout cela est alimenté par des variables CSS, ce qui rend le theming dynamique, comme l'implémentation d'un mode sombre, incroyablement simple.
- Puissante Interface de Ligne de Commande (CLI) : Le
heroui-cli
est votre outil principal pour interagir avec l'écosystème HeroUI. Il gère l'initialisation du projet, ajoute de nouveaux composants et s'assure que votre projet est configuré correctement, vous faisant gagner des heures de configuration manuelle. - Intégration Framework-First : HeroUI est conçu pour s'intégrer de manière transparente avec les frameworks modernes. La documentation fournit un support de premier ordre et des guides pour Next.js, démontrant un engagement à bien fonctionner au sein des outils les plus populaires de l'écosystème React. Il est construit avec React et peut être adapté à d'autres frameworks basés sur React comme Vite ou Create React App.
- Mode Sombre par Défaut : Le mode sombre n'est pas une réflexion après coup. L'ensemble du système est construit en pensant au mode sombre, en exploitant les variables CSS et la variante
dark:
de Tailwind pour rendre l'implémentation triviale. - Support TypeScript et RSC : HeroUI est écrit en TypeScript, offrant une excellente sécurité de type prête à l'emploi. Il est également compatible avec les Composants Serveur React (RSC), l'alignant sur les dernières avancées des écosystèmes Next.js et React.
Ă€ Qui S'Adresse HeroUI ?
HeroUI est un choix idéal pour un type spécifique de développeur et de projet :
- Les développeurs qui recherchent le contrôle : Si vous avez déjà été frustré par la rigidité d'une bibliothèque de composants, HeroUI vous semblera une bouffée d'air frais.
- Les projets avec une identité de marque forte et unique : Il fournit la base parfaite pour construire un système de conception personnalisé qui ne ressemble pas à tous les autres sites web.
- Les startups et les équipes produit : Les équipes qui doivent agir rapidement mais qui souhaitent également construire une architecture front-end évolutive et maintenable trouveront HeroUI comme un puissant accélérateur.
- L'apprentissage et le développement : Parce que vous obtenez le code source, c'est un excellent outil pour apprendre à construire des composants React de haute qualité et accessibles.
Il peut être moins adapté aux débutants absolus qui préfèrent une solution plus "prête à l'emploi", avec tout inclus, où une configuration minimale est requise. Le pouvoir de HeroUI réside dans sa configurabilité, qui nécessite une compréhension fondamentale de Tailwind CSS et de l'environnement de développement front-end moderne.
Partie 2 : Démarrer - Un Guide Détaillé de l'Installation et de la Configuration
Maintenant que nous comprenons la philosophie, passons à la pratique. Cette section fournit un guide méticuleux, étape par étape, pour intégrer HeroUI dans un projet nouveau ou existant. La méthode recommandée et la plus efficace est d'utiliser la CLI officielle de HeroUI.
Prérequis
Avant de commencer, assurez-vous que votre environnement de développement répond aux exigences suivantes :
- Node.js : Vous devez avoir une version récente de Node.js installée (généralement la version 18 ou supérieure). Vous pouvez vérifier votre version en exécutant
node -v
dans votre terminal. - Gestionnaire de Paquets : Vous aurez besoin d'un gestionnaire de paquets comme
npm
,yarn
oupnpm
. Ce guide utiliseranpx
, qui est inclus avecnpm
. - Un Projet de Framework React : HeroUI est conçu pour être ajouté à un projet construit avec un framework React. Le guide principal se concentre sur Next.js, mais il peut être adapté pour d'autres comme Vite ou Create React App. Pour la meilleure expérience, nous supposerons que vous commencez avec un projet Next.js frais. Vous pouvez en créer un avec la commande : Bash
npx create-next-app@latest my-heroui-app
Lors de la configuration de Next.js, il est recommandé de choisir TypeScript et Tailwind CSS, car ils sont fondamentaux pour l'écosystème HeroUI.
La Commande init
de l'Interface de Ligne de Commande (CLI) HeroUI : Votre Point de Départ
La commande init
est le point d'entrée magique dans le monde de HeroUI. Elle inspecte intelligemment votre projet, vous pose une série de questions, puis configure automatiquement tout ce dont vous avez besoin.
Naviguez dans le répertoire de votre projet :Bash
cd my-heroui-app
Maintenant, exécutez la commande d'initialisation :Bash
npx heroui-cli@latest init
La CLI va maintenant vous guider à travers le processus de configuration. Décomposons chaque question qu'elle pose et ce que signifient vos choix.
1. "Quel style souhaitez-vous utiliser ?"
- Options :
Default
,New York
- Explication : Ce choix définit l'esthétique de base des composants.
Default
est un style plus moderne et minimaliste, tandis queNew York
offre un look légèrement plus traditionnel et corporatif. Ce choix affecte principalement le style par défaut, comme les rayons de bordure et l'espacement, que la CLI mettra en place. Vous n'êtes pas enfermé dans ce choix ; ce n'est qu'un point de départ qui peut être entièrement personnalisé plus tard. Pour une ardoise propre,Default
est souvent un excellent choix.
2. "Quelle couleur souhaitez-vous utiliser comme couleur de base ?"
- Options :
Slate
,Gray
,Zinc
,Neutral
,Stone
- Explication : Le système de couleurs de HeroUI est entièrement basé sur des nuances d'une couleur de base neutre. Ce choix détermine la palette principale pour les arrière-plans, le texte, les bordures et les états des composants. Par exemple, choisir
Slate
donnera à votre UI un ton gris froid et bleuté, tandis queStone
donnera une sensation plus chaude et terreuse. La CLI générera automatiquement un spectre complet de variables CSS basé sur votre sélection.
3. "OĂą se trouve votre fichier CSS global ?"
- Par défaut :
app/globals.css
(pour Next.js App Router) oustyles/globals.css
(pour Pages Router). - Explication : La CLI a besoin de savoir où injecter les variables CSS de base et les directives Tailwind. Elle est généralement assez intelligente pour détecter le chemin correct dans un projet Next.js standard. Vous ne devriez modifier cela que si vous avez une structure de projet non standard.
4. "Voulez-vous utiliser des variables CSS pour les couleurs ?"
- Par défaut :
Yes
- Explication : Vous devriez presque toujours dire oui. L'utilisation de variables CSS est la pierre angulaire du système de theming de HeroUI. Elle vous permet de définir votre palette de couleurs en un seul endroit (
globals.css
) et de l'appliquer automatiquement partout. Plus important encore, c'est ce qui rend possibles les fonctionnalités dynamiques comme le mode sombre.
5. "OĂą se trouve votre fichier tailwind.config.js
?"
- Par défaut :
tailwind.config.js
- Explication : La CLI a besoin de modifier votre configuration Tailwind pour intégrer les préréglages et les plugins de thème de HeroUI. Encore une fois, elle devrait détecter cela automatiquement.
6. "Configurer l'alias d'importation pour les composants :"
- Par défaut :
@/components
- Explication : Les alias de chemin sont une bonne pratique pour des instructions d'importation propres. Au lieu d'écrire
import { Button } from '../../../components/ui/button'
, vous pouvez écrireimport { Button } from '@/components/ui/button'
. La CLI a besoin de savoir quel alias vous souhaitez utiliser pour les composants afin de pouvoir le configurer dans votretsconfig.json
(oujsconfig.json
). L'alias par défaut@/components
est un choix judicieux.
7. "Configurer l'alias d'importation pour les utilitaires :"
- Par défaut :
@/lib/utils
- Explication : HeroUI s'appuie sur quelques fonctions utilitaires, notamment une fonction pour fusionner conditionnellement les classes Tailwind (souvent appelée
cn
). La CLI créera ce fichier utilitaire pour vous et a besoin de savoir où le placer et quel alias utiliser. L'alias par défaut@/lib/utils
est standard.
8. "Utilisez-vous des Composants Serveur React ?"
- Par défaut : Elle détectera automatiquement en fonction de votre version et de votre configuration Next.js.
- Explication : C'est crucial pour les applications Next.js modernes utilisant l'App Router. Répondre
Yes
garantit que les composants ajoutés par la CLI incluent la directive"use client"
là où c'est nécessaire. Cette directive marque les composants qui nécessitent une interactivité côté client (comme la gestion des événementsonClick
ou l'utilisation de hooks commeuseState
), les rendant compatibles avec les Composants Serveur React.
Une fois que vous avez répondu à toutes les questions, la CLI accomplira sa magie. Elle va :
- Installer les dépendances nécessaires (
tailwindcss-animate
,class-variance-authority
,lucide-react
, etc.). - Créer un fichier
components.json
Ă la racine de votre projet. - Modifier votre
tailwind.config.js
avec les paramètres de thème corrects. - Remplir votre
globals.css
avec les styles de base et toutes les variables CSS pour le thème de couleur choisi. - Mettre à jour votre
tsconfig.json
oujsconfig.json
avec les alias de chemin que vous avez configurés. - Créer le fichier
lib/utils.ts
avec la fonction utilitairecn
.
Votre projet est maintenant entièrement configuré et prêt pour HeroUI.
Anatomie des Changements
Examinons de plus près les fichiers clés que la CLI a modifiés ou créés.
components.json
Ce fichier est le manifeste de HeroUI au sein de votre projet. Il stocke les choix que vous avez faits pendant le processus init
et indique à la CLI comment votre projet est configuré.JSON
{
"style": "default",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "app/globals.css",
"baseColor": "slate",
"cssVariables": true
},
"aliases": {
"utils": "@/lib/utils",
"components": "@/components"
}
}
Vous devriez rarement avoir besoin de modifier ce fichier manuellement, mais il est utile de comprendre son objectif. C'est le cerveau derrière les opérations de la CLI.
tailwind.config.js
Votre configuration Tailwind sera étendue pour ressembler à ceci. Les ajouts clés sont les extensions theme
et le plugin tailwindcss-animate
.JavaScript
/** @type {import('tailwindcss').Config} */
module.exports = {
darkMode: ["class"],
content: [
'./pages/**/*.{ts,tsx}',
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
],
theme: {
container: {
center: true,
padding: "2rem",
screens: {
"2xl": "1400px",
},
},
extend: {
colors: {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
// ... et bien d'autres définitions de couleurs liées aux variables CSS
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
},
// ...
},
borderRadius: {
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
keyframes: {
// ... keyframes pour les animations
},
animation: {
// ... utilitaires d'animation
},
},
},
plugins: [require("tailwindcss-animate")],
}
Notez comment les couleurs comme primary
ne sont pas définies avec un code hexadécimal mais avec hsl(var(--primary))
. Cela indique à Tailwind d'utiliser la variable CSS nommée --primary
, qui est définie dans votre CSS global.
app/globals.css
Ce fichier est maintenant le cœur du thème de votre système de conception. Il contiendra les directives Tailwind de base et un grand bloc de variables CSS.CSS
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
/* ... de nombreuses autres variables pour le thème clair */
--radius: 0.5rem;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
/* ... de nombreuses autres variables pour le thème sombre */
}
}
Ici, vous pouvez voir la puissance de cette configuration. Toutes vos couleurs de thème clair sont définies dans la portée :root
, et toutes vos couleurs de thème sombre sont définies dans la portée de la classe .dark
. Lorsque la classe .dark
est ajoutée à l'élément <html>
, le navigateur utilisera automatiquement les variables du thème sombre.
Partie 3 : Maîtriser la Personnalisation - Thème, Mise en Page et Mode Sombre
Avec HeroUI initialisé, le vrai plaisir commence : le personnaliser. L'architecture est explicitement conçue pour une personnalisation profonde et intuitive.
L'Art du Thème avec les Variables CSS
Le theming dans HeroUI est un départ par rapport aux objets de thème complexes basés sur JavaScript que vous pourriez trouver dans d'autres bibliothèques. C'est plus simple, plus puissant et exploite les fonctionnalités CSS modernes. L'ensemble du thème — couleurs, rayons de bordure, polices — est contrôlé par des variables CSS définies dans votre fichier globals.css
.
Changer les Couleurs
Supposons que vous souhaitiez changer la couleur principale de votre marque. Vous n'avez pas besoin d'aller dans la configuration Tailwind. Vous trouvez simplement les variables CSS pertinentes dans globals.css
et modifiez leurs valeurs.
Les couleurs sont définies à l'aide de valeurs HSL (Teinte, Saturation, Luminosité), mais sans l'enveloppe hsl()
. Par exemple :CSS
:root {
/* ... */
--primary: 221.2 83.2% 53.3%;
--primary-foreground: 210 40% 98%;
/* ... */
}
.dark {
/* ... */
--primary: 217.2 91.2% 59.8%;
--primary-foreground: 210 40% 98%;
/* ... */
}
Pour changer votre couleur principale en un vert éclatant, vous pouvez utiliser un sélecteur de couleurs en ligne pour trouver les valeurs HSL de la nuance choisie et mettre à jour les variables :CSS
/* Dans globals.css */
:root {
/* ... */
--primary: 142.1 76.2% 36.3%; /* Nouvelle couleur principale verte */
--primary-foreground: 355.7 100% 97.3%; /* Une couleur claire contrastante pour le texte sur la couleur principale */
/* ... */
}
.dark {
/* ... */
--primary: 142.1 70.2% 46.3%; /* Un vert légèrement différent pour le mode sombre */
--primary-foreground: 355.7 100% 97.3%;
/* ... */
}
Une fois que vous enregistrez ce fichier, chaque composant qui utilise la couleur "primary" (comme <Button>
) se mettra instantanément à jour dans toute votre application pour refléter cette nouvelle couleur verte. C'est incroyablement puissant.
Changer le Rayon de Bordure
La rondeur des coins des composants comme les cartes et les champs de saisie est contrôlée par une seule variable CSS : --radius
.CSS
/* Dans globals.css */
:root {
/* ... */
--radius: 0.5rem; /* La valeur par défaut */
}
Si vous préférez un look plus net et plus carré, vous pouvez réduire cette valeur :CSS
:root {
--radius: 0.25rem; /* Moins arrondi */
}
Ou, pour une esthétique très douce et arrondie, vous pouvez l'augmenter :CSS
:root {
--radius: 1.5rem; /* Très arrondi */
}
Ce changement d'une seule ligne se propagera à tous vos composants, assurant un rayon de bordure cohérent dans toute votre UI.
Ajouter de Nouvelles Couleurs
Vous n'êtes pas limité aux couleurs fournies par la commande init
. Vous pouvez facilement ajouter vos propres couleurs sémantiques. Par exemple, ajoutons une couleur de marque "spéciale".
Définir les variables CSS dans globals.css
:CSS
/* Dans globals.css */
:root {
/* ... */
--special: 320 86% 59%;
--special-foreground: 330 100% 98%;
}
.dark {
/* ... */
--special: 320 80% 69%;
--special-foreground: 330 100% 98%;
}
Les exposer Ă Tailwind dans tailwind.config.js
:JavaScript
// Dans tailwind.config.js
// ...
extend: {
colors: {
// ...
special: {
DEFAULT: "hsl(var(--special))",
foreground: "hsl(var(--special-foreground))",
},
},
},
// ...
Vous pouvez maintenant utiliser ces couleurs dans vos composants avec les classes utilitaires de Tailwind, telles que bg-special
et text-special-foreground
.
Construire des Mises en Page Réactives
Les composants HeroUI sont construits avec Tailwind CSS, ce qui signifie qu'ils sont intrinsèquement réactifs. Vous pouvez utiliser les préfixes réactifs de Tailwind (sm:
, md:
, lg:
, xl:
) sur n'importe quelle classe utilitaire pour modifier le style d'un composant à différentes tailles d'écran.
Imaginons la construction d'une mise en page simple avec une barre latérale visible sur ordinateur mais qui se réduit sur mobile. Bien que HeroUI fournisse les composants de bas niveau (Card
, Button
), vous ĂŞtes responsable de leur composition en une mise en page plus large.
Voici un exemple de la façon dont vous pourriez structurer cela dans un composant de page Next.js :TypeScript
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
export default function DashboardPage() {
return (
<div className="flex min-h-screen flex-col md:flex-row">
{/* Barre latérale */}
<aside className="w-full border-b bg-muted p-4 md:w-64 md:border-b-0 md:border-r">
<h2 className="text-lg font-semibold">Navigation</h2>
<nav className="mt-4 flex flex-row space-x-2 md:flex-col md:space-x-0 md:space-y-2">
<Button variant="ghost" className="justify-start">Tableau de bord</Button>
<Button variant="ghost" className="justify-start">Paramètres</Button>
<Button variant="ghost" className="justify-start">Profil</Button>
</nav>
</aside>
{/* Contenu principal */}
<main className="flex-1 p-8">
<h1 className="text-4xl font-bold tracking-tight">Tableau de bord</h1>
<p className="mt-2 text-muted-foreground">
Bienvenue sur votre tableau de bord.
</p>
<div className="mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
<Card>
<CardHeader>
<CardTitle>Revenus</CardTitle>
</CardHeader>
<CardContent>
<p className="text-3xl font-bold">$45,231.89</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Abonnements</CardTitle>
</CardHeader>
<CardContent>
<p className="text-3xl font-bold">+2350</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Utilisateurs Actifs</CardTitle>
</CardHeader>
<CardContent>
<p className="text-3xl font-bold">+573</p>
</CardContent>
</Card>
</div>
</main>
</div>
);
}
Dans cet exemple :
- Le conteneur principal est un conteneur
flex
. Sur mobile (flex-col
), la barre latérale est en haut. Sur les écrans moyens et supérieurs (md:flex-row
), elle passe à une disposition côte à côte. - L'élément
aside
a une largeur complète sur mobile (w-full
) mais une largeur fixe sur ordinateur (md:w-64
). - La zone de contenu principal utilise une disposition
grid
qui ajuste le nombre de colonnes en fonction de la taille de l'écran (sm:grid-cols-2
,lg:grid-cols-3
).
Cela démontre le principe fondamental : HeroUI fournit les primitives stylisées (Card
, Button
), et vous utilisez toute la puissance de Tailwind CSS pour les organiser en mises en page réactives et complexes.
Implémenter un Mode Sombre Impeccable
L'une des fonctionnalités les plus élégantes de HeroUI est son support intégré pour le mode sombre. Étant donné que la commande init
a déjà configuré les variables de couleur pour les thèmes clair (:root
) et sombre (.dark
), son implémentation est étonnamment simple.
L'approche la plus courante consiste Ă utiliser le package next-themes
, qui gère la commutation de thème et persiste le choix de l'utilisateur dans le stockage local.
Installer next-themes
:Bash
npm install next-themes
Créer un Fournisseur de Thème :
Créer un nouveau fichier, par exemple, dans components/theme-provider.tsx.TypeScript
"use client";
import * as React from "react";
import { ThemeProvider as NextThemesProvider } from "next-themes";
import { type ThemeProviderProps } from "next-themes/dist/types";
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
return <NextThemesProvider {...props}>{children}</NextThemesProvider>;
}
Envelopper Votre Layout Racine avec le Fournisseur :
Dans votre layout racine Next.js (app/layout.tsx), importer et utiliser le ThemeProvider.TypeScript
import { ThemeProvider } from "@/components/theme-provider";
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" suppressHydrationWarning>
<body className={inter.className}>
<ThemeProvider
attribute="class"
defaultTheme="system"
enableSystem
disableTransitionOnChange
>
{children}
</ThemeProvider>
</body>
</html>
);
}
Les props clés ici sont :
attribute="class"
: Indique Ănext-themes
de basculer les thèmes en ajoutant/supprimant une classe à l'élément<html>
.defaultTheme="system"
: Définit automatiquement le thème en fonction de la préférence du système d'exploitation de l'utilisateur.enableSystem
: Active l'option de thème "system".
Créer un Bouton de Bascule de Thème :
Maintenant, il vous suffit d'un élément d'interface utilisateur pour permettre à l'utilisateur de changer de thème.TypeScript
"use client";
import * as React from "react";
import { Moon, Sun } from "lucide-react";
import { useTheme } from "next-themes";
import { Button } from "@/components/ui/button";
export function ModeToggle() {
const { setTheme, theme } = useTheme();
const toggleTheme = () => {
setTheme(theme === "light" ? "dark" : "light");
};
return (
<Button variant="outline" size="icon" onClick={toggleTheme}>
<Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
<Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
<span className="sr-only">Basculer le thème</span>
</Button>
);
}
Ce1 composant utilise le hook useTheme
de next-themes
pour vérifier le thème actuel et en définir un nouveau. Les icônes rotatives du soleil et de la lune offrent une belle transition visuelle. Placez simplement ce composant <ModeToggle />
quelque part dans votre UI (comme un en-tête), et vous aurez un bouton de bascule de mode sombre entièrement fonctionnel et persistant.
Partie 4 : L'Interface de Ligne de Commande (CLI) HeroUI et son Workflow Centré sur les Composants
Le heroui-cli
est plus qu'un simple programme d'installation. C'est l'outil principal que vous utiliserez pour gérer et développer votre bibliothèque de composants. Son objectif principal après l'initialisation est d'ajouter de nouveaux composants à votre projet.
Ajouter des Composants : Le Workflow Principal
Supposons que vous ayez besoin d'une boîte de dialogue modale pour votre application. Au lieu d'en écrire une à partir de zéro, vous pouvez demander à la CLI d'ajouter le composant Dialog
pré-construit et accessible de HeroUI.
La commande est simple :Bash
npx heroui-cli@latest add dialog
La CLI effectuera les actions suivantes :
- Elle lit votre fichier
components.json
pour comprendre la structure de votre projet (alias de chemin, utilisation de TypeScript, etc.). - Elle récupère le code source le plus récent du composant
Dialog
et de toutes ses dépendances (par exemple,Dialog
peut dépendre deButton
). - Elle place les fichiers du composant directement dans votre répertoire de composants, par exemple :
components/ui/dialog.tsx
. - Elle vous informera de toute autre dépendance que vous pourriez avoir besoin d'installer.
Maintenant, vous avez un fichier dialog.tsx
dans votre projet. Vous pouvez inspecter son code, en tirer des leçons et même le modifier. Si le Dialog
par défaut a une transition que vous n'aimez pas, vous pouvez simplement ouvrir le fichier et modifier les classes Tailwind qui contrôlent l'animation. Ce niveau de contrôle est la pierre angulaire de l'expérience HeroUI.
Vous pouvez ajouter plusieurs composants Ă la fois :Bash
npx heroui-cli@latest add card button input label
Cette commande ajoutera les quatre composants et leurs dépendances à votre projet en une seule fois.
Comprendre l'API de la CLI : components.json
Le fichier components.json
est le contrat entre votre projet et la CLI HeroUI. Revoyons ses propriétés pour comprendre comment elles influencent le comportement de la CLI.
style
: Rappelle Ă la CLI quel style de base (default
ounew-york
) utiliser lors de la récupération du code des composants, assurant une cohérence stylistique.rsc
: Détermine si la CLI doit ajouter la directive"use client"
aux composants. C'est essentiel pour la compatibilité avec l'App Router de Next.js.tsx
: Indique à la CLI s'il faut récupérer les versions TypeScript (.tsx
) ou JavaScript (.jsx
) des fichiers de composants.tailwind
:config
: Le chemin vers votre fichiertailwind.config.js
. La CLI pourrait en avoir besoin pour de futures mises Ă jour ou analyses.css
: Le chemin vers votre fichier CSS global où les variables sont stockées.baseColor
: La palette de couleurs neutres que vous avez choisie lors de l'init
.cssVariables
: Confirme que votre projet est configuré pour utiliser des variables CSS pour le theming.aliases
:utils
: Définit le chemin d'importation pour les utilitaires partagés comme la fonctioncn
. Lorsque la CLI ajoute un composant qui a besoin de cet utilitaire, elle utilisera cet alias dans l'instruction d'importation.components
: Définit le chemin d'importation pour les composants UI eux-mêmes. Cela permet aux composants d'importer d'autres composants (par exemple, unDialog
peut importer unButton
) en utilisant un chemin propre et cohérent.
En comprenant cette configuration, vous pouvez même ajuster manuellement le comportement de la CLI si vous décidez de refactoriser la structure de votre projet, par exemple, en déplaçant votre répertoire de composants de @/components
Ă @/ui
.
Conclusion : Construisez à Votre Façon avec HeroUI
HeroUI représente un changement significatif dans la manière dont les développeurs peuvent concevoir et utiliser les bibliothèques UI. Il s'éloigne du modèle unique et boîte noire pour aller vers une expérience développeur transparente, responsabilisante et profondément personnalisable. En fournissant des composants non stylisés et accessibles directement sous forme de code source, il trouve l'équilibre parfait entre le développement rapide et la conception sur mesure.
Les points forts de HeroUI sont clairs :
- Propriété Ultime : Les composants sont votre code. Vous pouvez les modifier, les étendre et les adapter sans limitation.
- Personnalisation Approfondie : Un système de theming puissant basé sur des variables CSS rend trivial le changement des couleurs, de l'espacement et des rayons dans toute votre application.
- Architecture Moderne : Construit avec TypeScript, Tailwind CSS, et un support de premier ordre pour Next.js et les Composants Serveur React, c'est un outil conçu pour l'avenir du développement web.
- Outils Conviviaux pour les Développeurs : La CLI intelligente automatise le processus de configuration fastidieux et rend l'ajout de nouveaux composants une expérience fluide.
HeroUI s'adresse aux constructeurs, aux artisans et aux équipes qui croient que leur interface utilisateur est une partie essentielle de l'identité de leur produit. Il ne vous donne pas une maison finie ; il vous donne les matériaux de la plus haute qualité et un atelier parfaitement organisé pour construire la maison de vos rêves. Pour votre prochain projet qui exige un front-end unique, soigné et maintenable, ne cherchez pas plus loin que HeroUI. C'est peut-être l'outil qui vous permettra de construire votre UI la plus héroïque à ce jour.
Vous voulez une plateforme intégrée, Tout-en-Un, pour que votre équipe de développeurs travaille ensemble avec une productivité maximale ?
Apidog répond à toutes vos exigences et replaces Postman at a much more affordable price !