Möchten Sie eine integrierte All-in-One-Plattform, damit Ihr Entwicklerteam mit maximaler Produktivität zusammenarbeiten kann?
Apidog erfüllt all Ihre Anforderungen und ersetzt Postman zu einem viel günstigeren Preis!
Für Frontend-Entwickler war die Nachfrage nach ästhetisch ansprechenden, hochperformanten und tiefgreifend anpassbaren Benutzeroberflächen nie größer. Entwickler suchen ständig nach Tools, die ihren Workflow beschleunigen, ohne dabei an Qualität oder kreativer Kontrolle einzubüßen. Während monolithische UI-Komponentenbibliotheken der Community jahrelang gute Dienste geleistet haben, entsteht ein neues Paradigma – eines, das Entwicklerverantwortung, Modularität und nahtlose Integration mit modernen Frameworks priorisiert. Innerhalb dieses neuen Paradigmas findet HeroUI seine Nische.
HeroUI ist nicht nur eine weitere Komponentenbibliothek; es ist eine sorgfältig ausgearbeitete Sammlung wiederverwendbarer UI-Komponenten, die direkt in Ihre Projekte integriert werden können. Es vertritt eine Philosophie, die Entwicklern die ultimative Kontrolle über ihre Codebasis gibt. Anstatt undurchsichtige Komponenten aus einem Node-Modul zu importieren, verwenden Sie die HeroUI Command Line Interface (CLI), um den tatsächlichen Quellcode der benötigten Komponenten in Ihr Projekt einzufügen. Diese "Copy-and-Paste"-Evolution bedeutet, dass jede Schaltfläche, jede Karte und jedes Dialogfeld Teil Ihrer eigenen Anwendung wird, bereit, angepasst, neu gestaltet und an Ihre spezifischen Bedürfnisse angepasst zu werden.
Aufgebaut auf den Schultern von Giganten wie React, Tailwind CSS und Next.js, bietet HeroUI die Bausteine für die Erstellung schöner, zugänglicher und responsiver Benutzeroberflächen. Es wurde für den modernen Entwickler entwickelt, der sowohl Geschwindigkeit als auch Spezifität schätzt, und bietet einen robusten Ausgangspunkt, der Sie nicht in ein starres Designsystem einsperrt. Dieser Artikel dient als umfassender Leitfaden zum Verständnis der Kernprinzipien von HeroUI, zur Installation in Ihrem Projekt, zur Anpassung seines Aussehens und Verhaltens und zur Nutzung seiner leistungsstarken CLI zum Erstellen der nächsten Generation von Webanwendungen.
Teil 1: HeroUI zerlegen – Philosophie und Kernfunktionen
Bevor wir uns mit den technischen Details der Installation und Nutzung befassen, ist es entscheidend, das "Warum" hinter HeroUI zu verstehen. Welche Probleme löst es und was macht es zu einer überzeugenden Wahl in einem überfüllten Bereich von UI-Tools?
Die Philosophie: Eigentum und kompromisslose Anpassung
Der grundlegende Unterschied zwischen HeroUI und traditionellen UI-Bibliotheken wie Material-UI oder Ant Design liegt im Konzept des Eigentums. Wenn Sie eine traditionelle Bibliothek installieren, fügen Sie eine Abhängigkeit zu Ihrer package.json
hinzu. Ihre Anwendung importiert dann vorkompilierte Komponenten aus diesem Paket. Obwohl dies bequem ist, birgt es mehrere Nachteile:
- Begrenzte Anpassung: Styling-Überschreibungen können komplex sein und erfordern oft, dass Sie mit
!important
-Tags oder komplizierten Theme-Provider-Konfigurationen gegen die Standard-Styles der Bibliothek ankämpfen müssen. - Black-Box-Komponenten: Die interne Logik der Komponenten ist im Ordner
node_modules
verborgen. Das Debugging unerwarteten Verhaltens oder das Verständnis der inneren Funktionsweise wird erheblich schwieriger. - Aufblähen der Bundle-Größe: Sie importieren oft die gesamte Bibliothek oder zumindest einen erheblichen Teil davon, selbst wenn Sie nur eine Handvoll Komponenten verwenden, was potenziell die endgültige Bundle-Größe Ihrer Anwendung erhöht.
- Abhängigkeits-Hölle: Sie sind an den Update-Zyklus der Bibliothek und ihre Abhängigkeiten gebunden. Eine breaking change in der Bibliothek kann einen größeren Refaktor in Ihrer Anwendung erzwingen.
HeroUI umgeht diese Probleme vollständig. Indem die CLI den Quellcode der Komponente direkt in das Verzeichnis Ihres Projekts platziert (z. B. /components/ui
), ermöglicht es Ihnen dies auf verschiedene wichtige Weisen:
- Sie besitzen den Code: Die Komponente gehört Ihnen. Sie können ihre Struktur, ihre Styles, ihre Logik – alles – ändern. Es gibt keine künstlichen Einschränkungen. Wenn Sie eine Schaltfläche mit einer einzigartigen Animation oder einer leicht anderen internen Struktur benötigen, können Sie einfach die Datei bearbeiten.
- Vollständige Transparenz: Sie können den Code für jede von Ihnen verwendete Komponente lesen. Dies ist von unschätzbarem Wert zum Lernen, Debugging und zum tieferen Verständnis, wie zugängliche und robuste UI-Elemente erstellt werden.
- Kein ungenutzter Code: Das Bundle Ihrer Anwendung enthält nur den Code für die Komponenten, die Sie explizit hinzugefügt haben. Nichts weiter.
- Entkoppelt und zukunftssicher: Da die Komponenten Teil Ihrer Codebasis sind, sind Sie nicht auf dieselbe Weise an die Versionierung von HeroUI gebunden. Sie können Komponenten nach Ihrem eigenen Zeitplan aktualisieren oder sich entscheiden, sie überhaupt nicht zu aktualisieren.
Diese Philosophie richtet sich an Entwickler und Teams, die ein einzigartiges Designsystem für ihr Produkt erstellen möchten, ohne bei Null anzufangen. Sie bietet die grundlegenden, ungestylten (oder leicht gestylten) Primitiven, und Sie liefern die Markenidentität.
Wichtige Funktionen im Überblick
HeroUI ist mehr als nur seine Installationsmethode. Es ist vollgepackt mit Funktionen, die für einen modernen Entwicklungs-Workflow entwickelt wurden.
- Umfangreiche Komponentensammlung: HeroUI bietet eine umfassende Sammlung der am häufigsten benötigten UI-Komponenten, darunter Schaltflächen, Formulare, Dialoge, Dropdowns, Datentabellen und mehr. Jede Komponente ist sorgfältig auf Zugänglichkeit (ARIA-Attribute) und Benutzererfahrung ausgelegt.
- Powered by Tailwind CSS: Das Herzstück der Styling-Fähigkeiten von HeroUI ist Tailwind CSS, das Utility-First-CSS-Framework. Das bedeutet, dass die Anpassung nicht durch Überschreiben von CSS-Klassen erfolgt, sondern durch das Komponieren von Utility-Klassen. Dieser Ansatz ist unglaublich schnell, intuitiv und hilft, eine konsistente Designsprache beizubehalten. HeroUI nutzt die Theming-Fähigkeiten von Tailwind voll aus und ermöglicht projektweite Änderungen mit nur wenigen Konfigurationszeilen.
- Umfassendes Theming und Anpassung: Das gesamte Erscheinungsbild der Komponenten kann über eine zentrale Theme-Konfiguration gesteuert werden. Dies umfasst Farben, Schriftarten, Border-Radien, Abstände und mehr. All dies wird durch CSS-Variablen ermöglicht, was dynamisches Theming, wie die Implementierung eines Dark Mode, unglaublich einfach macht.
- Leistungsstarke Command Line Interface (CLI): Die
heroui-cli
ist Ihr primäres Werkzeug für die Interaktion mit dem HeroUI-Ökosystem. Sie kümmert sich um die Projektinitialisierung, fügt neue Komponenten hinzu und stellt sicher, dass Ihr Projekt korrekt konfiguriert ist, was Ihnen Stunden manueller Einrichtung erspart. - Framework-First Integration: HeroUI ist so konzipiert, dass es sich nahtlos in moderne Frameworks integriert. Die Dokumentation bietet erstklassige Unterstützung und Anleitungen für Next.js und demonstriert damit die Verpflichtung, gut mit den beliebtesten Tools im React-Ökosystem zusammenzuarbeiten. Es ist mit React erstellt und kann an andere React-basierte Frameworks wie Vite oder Create React App angepasst werden.
- Dark Mode standardmäßig: Dark Mode ist kein nachträglicher Einfall. Das gesamte System wurde mit Blick auf den Dark Mode entwickelt und nutzt CSS-Variablen und Tailwinds
dark:
-Variante, um die Implementierung trivial zu gestalten. - TypeScript und RSC-Unterstützung: HeroUI ist in TypeScript geschrieben und bietet standardmäßig ausgezeichnete Typensicherheit. Es ist auch mit React Server Components (RSC) kompatibel und passt sich damit den neuesten Fortschritten im Next.js- und React-Ökosystem an.
Für wen ist HeroUI geeignet?
HeroUI ist eine ideale Wahl für einen bestimmten Typ von Entwickler und Projekt:
- Entwickler, die Kontrolle wünschen: Wenn Sie jemals von der Starrheit einer Komponentenbibliothek frustriert waren, wird sich HeroUI wie ein Hauch frischer Luft anfühlen.
- Projekte mit einer starken, einzigartigen Markenidentität: Es bietet die perfekte Grundlage für den Aufbau eines benutzerdefinierten Designsystems, das nicht wie jede andere Website aussieht.
- Startups und Produktteams: Teams, die schnell agieren müssen, aber auch eine skalierbare und wartbare Frontend-Architektur aufbauen wollen, werden HeroUI als leistungsstarken Beschleuniger empfinden.
- Lernen und Entwicklung: Da Sie den Quellcode erhalten, ist es ein ausgezeichnetes Werkzeug, um zu lernen, wie man qualitativ hochwertige, zugängliche React-Komponenten erstellt.
Es ist möglicherweise weniger geeignet für absolute Anfänger, die eine eher "Out-of-the-box"-Lösung mit allem Drum und Dran bevorzugen, bei der minimale Konfiguration erforderlich ist. Die Stärke von HeroUI liegt in seiner Konfigurierbarkeit, die ein grundlegendes Verständnis von Tailwind CSS und der modernen Frontend-Entwicklungsumgebung erfordert.
Teil 2: Erste Schritte – Eine detaillierte Anleitung zur Installation und Einrichtung
Nachdem wir nun die Philosophie verstanden haben, krempeln wir die Ärmel hoch. Dieser Abschnitt bietet eine sorgfältige Schritt-für-Schritt-Anleitung zur Integration von HeroUI in ein neues oder bestehendes Projekt. Die empfohlene und effizienteste Methode ist die Verwendung der offiziellen HeroUI CLI.
Voraussetzungen
Stellen Sie vor Beginn sicher, dass Ihre Entwicklungsumgebung die folgenden Anforderungen erfüllt:
- Node.js: Sie müssen eine aktuelle Version von Node.js installiert haben (typischerweise Version 18 oder neuer). Sie können Ihre Version überprüfen, indem Sie
node -v
in Ihrem Terminal ausführen. - Paketmanager: Sie benötigen einen Paketmanager wie
npm
,yarn
oderpnpm
. Dieser Leitfaden verwendetnpx
, das innpm
enthalten ist. - Ein React Framework Projekt: HeroUI ist dafür konzipiert, einem Projekt hinzugefügt zu werden, das mit einem React Framework erstellt wurde. Der primäre Leitfaden konzentriert sich auf Next.js, kann aber auch an andere wie Vite oder Create React App angepasst werden. Für die beste Erfahrung gehen wir davon aus, dass Sie mit einem neuen Next.js-Projekt beginnen. Sie können eines mit dem Befehl erstellen: Bash
npx create-next-app@latest my-heroui-app
Während der Next.js-Einrichtung wird empfohlen, TypeScript und Tailwind CSS zu wählen, da diese grundlegend für das HeroUI-Ökosystem sind.
Der HeroUI CLI init
Befehl: Ihr Ausgangspunkt
Der init
Befehl ist der magische Einstiegspunkt in die Welt von HeroUI. Er inspiziert intelligent Ihr Projekt, stellt Ihnen eine Reihe von Fragen und konfiguriert dann automatisch alles, was Sie benötigen.
Navigieren Sie in Ihr Projektverzeichnis: Bash
cd my-heroui-app
Führen Sie nun den Initialisierungsbefehl aus: Bash
npx heroui-cli@latest init
Die CLI führt Sie nun durch den Einrichtungsprozess. Lassen Sie uns jede Frage, die sie stellt, und die Bedeutung Ihrer Antworten aufschlüsseln.
1. "Welchen Stil möchten Sie verwenden?"
- Optionen:
Default
,New York
- Erklärung: Diese Wahl definiert die grundlegende Ästhetik der Komponenten.
Default
ist ein modernerer, minimalistischer Stil, währendNew York
einen etwas traditionelleren, geschäftlichen Look bietet. Diese Wahl beeinflusst hauptsächlich das Standard-Styling, wie z. B. Border-Radien und Abstände, das die CLI einrichtet. Sie sind nicht an diese Wahl gebunden; es ist lediglich ein Ausgangspunkt, der später vollständig angepasst werden kann. Für einen sauberen Start istDefault
oft eine gute Wahl.
2. "Welche Farbe möchten Sie als Grundfarbe verwenden?"
- Optionen:
Slate
,Gray
,Zinc
,Neutral
,Stone
- Erklärung: Das gesamte Farbsystem von HeroUI basiert auf Schattierungen einer neutralen Grundfarbe. Diese Wahl bestimmt die primäre Palette für Hintergründe, Text, Ränder und Komponentenzustände. Wenn Sie beispielsweise
Slate
wählen, erhält Ihre Benutzeroberfläche einen kühlen, bläulich-grauen Ton, währendStone
ein wärmeres, erdigeres Gefühl vermittelt. Die CLI generiert automatisch ein vollständiges Spektrum von CSS-Variablen basierend auf Ihrer Auswahl.
3. "Wo befindet sich Ihre globale CSS-Datei?"
- Standard:
app/globals.css
(für Next.js App Router) oderstyles/globals.css
(für Pages Router). - Erklärung: Die CLI muss wissen, wo die Kern-CSS-Variablen und Tailwind-Direktiven eingefügt werden sollen. Sie ist normalerweise intelligent genug, um den korrekten Pfad in einem Standard-Next.js-Projekt zu erkennen. Sie sollten dies nur ändern, wenn Sie eine nicht standardmäßige Projektstruktur haben.
4. "Möchten Sie CSS-Variablen für Farben verwenden?"
- Standard:
Ja
- Erklärung: Sie sollten fast immer Ja sagen. Die Verwendung von CSS-Variablen ist der Eckpfeiler des Theming-Systems von HeroUI. Sie ermöglicht es Ihnen, Ihre Farbpalette an einem Ort (
globals.css
) zu definieren und sie automatisch überall anzuwenden. Noch wichtiger ist, dass dies dynamische Funktionen wie den Dark Mode ermöglicht.
5. "Wo befindet sich Ihre tailwind.config.js
Datei?"
- Standard:
tailwind.config.js
- Erklärung: Die CLI muss Ihre Tailwind-Konfiguration ändern, um die Theme-Presets und Plugins von HeroUI zu integrieren. Auch hier sollte sie dies automatisch erkennen.
6. "Import-Alias für Komponenten konfigurieren:"
- Standard:
@/components
- Erklärung: Pfad-Aliase sind eine Best Practice für saubere Import-Statements. Anstatt
import { Button } from '../../../components/ui/button'
zu schreiben, können Sieimport { Button } from '@/components/ui/button'
schreiben. Die CLI muss wissen, welchen Alias Sie für Komponenten verwenden möchten, damit sie ihn in Ihrertsconfig.json
(oderjsconfig.json
) konfigurieren kann. Der Standard-Alias@/components
ist eine sinnvolle Wahl.
7. "Import-Alias für Utilities konfigurieren:"
- Standard:
@/lib/utils
- Erklärung: HeroUI stützt sich auf einige Utility-Funktionen, insbesondere eine Funktion zum bedingten Zusammenführen von Tailwind-Klassen (oft
cn
genannt). Die CLI erstellt diese Utility-Datei für Sie und muss wissen, wo sie platziert werden soll und welchen Alias sie verwenden soll. Der Standard-Alias@/lib/utils
ist üblich.
8. "Verwenden Sie React Server Components?"
- Standard: Wird basierend auf Ihrer Next.js-Version und Einrichtung automatisch erkannt.
- Erklärung: Dies ist entscheidend für moderne Next.js-Anwendungen, die den App Router verwenden. Wenn Sie
Ja
antworten, stellt die CLI sicher, dass die hinzugefügten Komponenten die Direktive"use client"
enthalten, wo dies erforderlich ist. Diese Direktive kennzeichnet Komponenten, die clientseitige Interaktivität benötigen (wie das Behandeln vononClick
-Ereignissen oder die Verwendung von Hooks wieuseState
), wodurch sie mit React Server Components kompatibel werden.
Nachdem Sie alle Fragen beantwortet haben, wird die CLI ihre Magie entfalten. Sie wird:
- Notwendige Abhängigkeiten installieren (
tailwindcss-animate
,class-variance-authority
,lucide-react
, etc.). - Eine
components.json
Datei im Stammverzeichnis Ihres Projekts erstellen. - Ihre
tailwind.config.js
mit den korrekten Theme-Einstellungen ändern. - Ihre
globals.css
mit Basis-Styles und allen CSS-Variablen für Ihr gewähltes Farbthema füllen. - Ihre
tsconfig.json
oderjsconfig.json
mit den von Ihnen konfigurierten Pfad-Aliasen aktualisieren. - Die Datei
lib/utils.ts
mit dercn
Utility-Funktion erstellen.
Ihr Projekt ist nun vollständig konfiguriert und bereit für HeroUI.
Anatomie der Änderungen
Schauen wir uns die wichtigsten Dateien, die die CLI geändert oder erstellt hat, genauer an.
components.json
Diese Datei ist das Manifest für HeroUI in Ihrem Projekt. Sie speichert die Entscheidungen, die Sie während des init
-Prozesses getroffen haben, und teilt der CLI mit, wie Ihr Projekt konfiguriert ist. 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"
}
}
Sie sollten diese Datei selten manuell bearbeiten müssen, aber es ist hilfreich, ihren Zweck zu verstehen. Sie ist das Gehirn hinter den Operationen der CLI.
tailwind.config.js
Ihre Tailwind-Konfiguration wird erweitert und sieht in etwa so aus. Die wichtigsten Ergänzungen sind die theme
-Erweiterungen und das tailwindcss-animate
-Plugin. 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))",
// ... und viele weitere Farbdefinitionen, die mit CSS-Variablen verknüpft sind
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 für Animationen
},
animation: {
// ... Animations-Utilities
},
},
},
plugins: [require("tailwindcss-animate")],
}
Beachten Sie, wie Farben wie primary
nicht mit einem Hex-Code, sondern mit hsl(var(--primary))
definiert sind. Dies weist Tailwind an, die CSS-Variable namens --primary
zu verwenden, die in Ihrem globalen CSS definiert ist.
app/globals.css
Diese Datei ist nun das Herzstück des Themes Ihres Designsystems. Sie enthält die grundlegenden Tailwind-Direktiven und einen großen Block von CSS-Variablen. CSS
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
/* ... viele weitere Variablen für das helle Theme */
--radius: 0.5rem;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
/* ... viele weitere Variablen für das dunkle Theme */
}
}
Hier sehen Sie die Stärke dieses Setups. Alle Ihre hellen Theme-Farben sind im :root
-Scope definiert, und alle Ihre dunklen Theme-Farben sind innerhalb des .dark
-Klassen-Scopes definiert. Wenn die Klasse .dark
zum <html>
-Element hinzugefügt wird, verwendet der Browser automatisch die Variablen des dunklen Themes.
Teil 3: Anpassung meistern – Theming, Layout und Dark Mode
Nachdem HeroUI initialisiert ist, beginnt der eigentliche Spaß: Machen Sie es zu Ihrem eigenen. Die Architektur ist explizit für eine tiefe und intuitive Anpassung konzipiert.
Die Kunst des Themings mit CSS-Variablen
Theming in HeroUI unterscheidet sich von den komplexen JavaScript-basierten Theme-Objekten, die Sie möglicherweise in anderen Bibliotheken finden. Es ist einfacher, leistungsfähiger und nutzt moderne CSS-Funktionen. Das gesamte Theme – Farben, Border-Radien, Schriftarten – wird durch CSS-Variablen gesteuert, die in Ihrer globals.css
-Datei definiert sind.
Farben ändern
Angenommen, Sie möchten Ihre primäre Markenfarbe ändern. Sie müssen nicht in die Tailwind-Konfiguration gehen. Sie finden einfach die relevanten CSS-Variablen in globals.css
und ändern deren Werte.
Die Farben werden mit HSL-Werten (Hue, Saturation, Lightness) definiert, jedoch ohne den hsl()
-Wrapper. Zum Beispiel: 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%;
/* ... */
}
Um Ihre Primärfarbe in ein lebendiges Grün zu ändern, könnten Sie einen Online-Farbpicker verwenden, um die HSL-Werte für Ihren gewählten Farbton zu finden und die Variablen zu aktualisieren: CSS
/* In globals.css */
:root {
/* ... */
--primary: 142.1 76.2% 36.3%; /* Neue grüne Primärfarbe */
--primary-foreground: 355.7 100% 97.3%; /* Eine kontrastierende helle Farbe für Text auf der Primärfarbe */
/* ... */
}
.dark {
/* ... */
--primary: 142.1 70.2% 46.3%; /* Ein etwas anderes Grün für den Dark Mode */
--primary-foreground: 355.7 100% 97.3%;
/* ... */
}
Sobald Sie diese Datei speichern, wird jede Komponente, die die Farbe "primary" verwendet (wie <Button>
), sofort in Ihrer gesamten Anwendung aktualisiert, um diese neue grüne Farbe widerzuspiegeln. Das ist unglaublich leistungsfähig.
Border Radius ändern
Die Rundheit der Ecken von Komponenten wie Karten und Eingabefeldern wird durch eine einzige CSS-Variable gesteuert: --radius
. CSS
/* In globals.css */
:root {
/* ... */
--radius: 0.5rem; /* Der Standardwert */
}
Wenn Sie ein schärferes, quadratischeres Aussehen bevorzugen, können Sie diesen Wert reduzieren: CSS
:root {
--radius: 0.25rem; /* Weniger abgerundet */
}
Oder, für eine sehr weiche, abgerundete Ästhetik, können Sie ihn erhöhen: CSS
:root {
--radius: 1.5rem; /* Sehr abgerundet */
}
Diese einzelne Zeilenänderung wird sich durch alle Ihre Komponenten ziehen und einen konsistenten Border Radius in Ihrer gesamten Benutzeroberfläche gewährleisten.
Neue Farben hinzufügen
Sie sind nicht auf die Farben beschränkt, die der init
-Befehl bereitstellt. Sie können ganz einfach Ihre eigenen semantischen Farben hinzufügen. Fügen wir zum Beispiel eine "besondere" Markenfarbe hinzu.
Definieren Sie die CSS-Variablen in globals.css
: CSS
/* In globals.css */
:root {
/* ... */
--special: 320 86% 59%;
--special-foreground: 330 100% 98%;
}
.dark {
/* ... */
--special: 320 80% 69%;
--special-foreground: 330 100% 98%;
}
Machen Sie sie Tailwind in tailwind.config.js
zugänglich: JavaScript
// In tailwind.config.js
// ...
extend: {
colors: {
// ...
special: {
DEFAULT: "hsl(var(--special))",
foreground: "hsl(var(--special-foreground))",
},
},
},
// ...
Jetzt können Sie diese Farben in Ihren Komponenten mit den Utility-Klassen von Tailwind verwenden, wie z. B. bg-special
und text-special-foreground
.
Responsive Layouts erstellen
HeroUI-Komponenten sind mit Tailwind CSS erstellt, was bedeutet, dass sie von Natur aus responsiv sind. Sie können Tailwinds responsive Präfixe (sm:
, md:
, lg:
, xl:
) auf jede Utility-Klasse anwenden, um den Stil einer Komponente bei unterschiedlichen Bildschirmgrößen zu ändern.
Stellen Sie sich vor, Sie erstellen ein einfaches Seitenlayout mit einer Seitenleiste, die auf dem Desktop sichtbar ist, aber auf Mobilgeräten zusammenklappt. Während HeroUI die Low-Level-Komponenten (Card
, Button
) bereitstellt, sind Sie dafür verantwortlich, diese zu einem größeren Layout zusammenzusetzen.
Hier ist ein Beispiel, wie Sie dies in einer Next.js-Seitenkomponente strukturieren könnten: 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">
{/* Seitenleiste */}
<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">Dashboard</Button>
<Button variant="ghost" className="justify-start">Einstellungen</Button>
<Button variant="ghost" className="justify-start">Profil</Button>
</nav>
</aside>
{/* Hauptinhalt */}
<main className="flex-1 p-8">
<h1 className="text-4xl font-bold tracking-tight">Dashboard</h1>
<p className="mt-2 text-muted-foreground">
Willkommen zu Ihrem Dashboard.
</p>
<div className="mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
<Card>
<CardHeader>
<CardTitle>Umsatz</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>Aktive Benutzer</CardTitle>
</CardHeader>
<CardContent>
<p className="text-3xl font-bold">+573</p>
</CardContent>
</Card>
</div>
</main>
</div>
);
}
In diesem Beispiel:
- Der Hauptcontainer ist ein
flex
-Container. Auf Mobilgeräten (flex-col
) befindet sich die Seitenleiste oben. Auf mittleren Bildschirmen und größer (md:flex-row
) wechselt sie zu einem nebeneinander liegenden Layout. - Die
aside
hat auf Mobilgeräten die volle Breite (w-full
), auf dem Desktop jedoch eine feste Breite (md:w-64
). - Der Hauptinhaltsbereich verwendet ein
grid
-Layout, das die Anzahl der Spalten basierend auf der Bildschirmgröße anpasst (sm:grid-cols-2
,lg:grid-cols-3
).
Dies demonstriert das Kernprinzip: HeroUI liefert die gestylten Primitiven (Card
, Button
), und Sie nutzen die volle Kraft von Tailwind CSS, um sie zu responsiven, komplexen Layouts anzuordnen.
Makellosen Dark Mode implementieren
Eine der elegantesten Funktionen von HeroUI ist die integrierte Unterstützung für den Dark Mode. Da der init
-Befehl bereits die Farbvariablen für helle (:root
) und dunkle (.dark
) Themes eingerichtet hat, ist die Implementierung überraschend einfach.
Der gebräuchlichste Ansatz ist die Verwendung des next-themes
-Pakets, das das Umschalten des Themes und das Speichern der Benutzerauswahl im lokalen Speicher übernimmt.
Installieren Sie next-themes
: Bash
npm install next-themes
Erstellen Sie einen Theme Provider:
Erstellen Sie eine neue Datei, zum Beispiel unter 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>;
}
Umschließen Sie Ihr Root Layout mit dem Provider:
Importieren und verwenden Sie in Ihrem Next.js Root Layout (app/layout.tsx) den 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>
);
}
Die wichtigsten Props hier sind:
attribute="class"
: Weistnext-themes
an, Themes durch Hinzufügen/Entfernen einer Klasse zum<html>
-Element umzuschalten.defaultTheme="system"
: Stellt das Theme automatisch basierend auf der Betriebssystemeinstellung des Benutzers ein.enableSystem
: Aktiviert die Option "system" Theme.
Erstellen Sie eine Theme-Umschalt-Schaltfläche:
Nun benötigen Sie lediglich ein UI-Element, mit dem der Benutzer das Theme wechseln kann. 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">Theme umschalten</span>
</Button>
);
}
Diese1 Komponente verwendet den useTheme
-Hook von next-themes
, um das aktuelle Theme zu überprüfen und ein neues festzulegen. Die rotierenden Sonnen- und Mondsymbole sorgen für einen schönen visuellen Übergang. Platzieren Sie diese <ModeToggle />
Komponente einfach irgendwo in Ihrer Benutzeroberfläche (z. B. in einem Header), und Sie haben einen voll funktionsfähigen, persistenten Dark Mode-Umschalter.
Teil 4: Die HeroUI CLI und ihr komponentenzentrierter Workflow
Die heroui-cli
ist mehr als nur ein Installer. Sie ist das primäre Werkzeug, das Sie zum Verwalten und Erweitern Ihrer Komponentenbibliothek verwenden werden. Ihr Hauptzweck nach der Initialisierung ist das Hinzufügen neuer Komponenten zu Ihrem Projekt.
Komponenten hinzufügen: Der Kern-Workflow
Nehmen wir an, Sie benötigen ein Dialogfenster für Ihre Anwendung. Anstatt eines von Grund auf neu zu schreiben, können Sie die CLI bitten, die vorgefertigte, zugängliche Dialog
-Komponente von HeroUI hinzuzufügen.
Der Befehl ist einfach: Bash
npx heroui-cli@latest add dialog
Die CLI führt die folgenden Aktionen aus:
- Sie liest Ihre
components.json
-Datei, um die Struktur Ihres Projekts zu verstehen (Pfad-Aliase, TypeScript-Nutzung usw.). - Sie ruft den neuesten Quellcode für die
Dialog
-Komponente und alle ihre Abhängigkeiten ab (z. B. könnteDialog
vonButton
abhängen). - Sie platziert die Komponentendateien direkt in Ihrem Komponentenverzeichnis, zum Beispiel:
components/ui/dialog.tsx
. - Sie informiert Sie über alle weiteren Abhängigkeiten, die Sie möglicherweise installieren müssen.
Jetzt haben Sie eine dialog.tsx
-Datei in Ihrem Projekt. Sie können ihren Code überprüfen, daraus lernen und ihn sogar ändern. Wenn der Standard-Dialog
eine Transition hat, die Ihnen nicht gefällt, können Sie einfach die Datei öffnen und die Tailwind-Klassen ändern, die die Animation steuern. Dieses Maß an Kontrolle ist der Eckpfeiler der HeroUI-Erfahrung.
Sie können mehrere Komponenten gleichzeitig hinzufügen: Bash
npx heroui-cli@latest add card button input label
Dieser Befehl fügt alle vier Komponenten und ihre Abhängigkeiten in einem Durchgang zu Ihrem Projekt hinzu.
Die CLI API verstehen: components.json
Die components.json
-Datei ist der Vertrag zwischen Ihrem Projekt und der HeroUI CLI. Lassen Sie uns ihre Eigenschaften erneut betrachten, um zu verstehen, wie sie das Verhalten der CLI beeinflussen.
style
: Erinnert die CLI daran, welchen Basisstil (default
odernew-york
) sie beim Abrufen von Komponentencode verwenden soll, um stilistische Konsistenz zu gewährleisten.rsc
: Bestimmt, ob die CLI die Direktive"use client"
zu Komponenten hinzufügen soll. Dies ist entscheidend für die Kompatibilität mit dem Next.js App Router.tsx
: Teilt der CLI mit, ob sie TypeScript- (.tsx
) oder JavaScript- (.jsx
) Versionen der Komponentendateien abrufen soll.tailwind
:config
: Der Pfad zu Ihrertailwind.config.js
. Die CLI benötigt dies möglicherweise für zukünftige Updates oder Analysen.css
: Der Pfad zu Ihrer globalen CSS-Datei, in der Variablen gespeichert sind.baseColor
: Die neutrale Farbpalette, die Sie während derinit
gewählt haben.cssVariables
: Bestätigt, dass Ihr Projekt für die Verwendung von CSS-Variablen für das Theming eingerichtet ist.aliases
:utils
: Definiert den Importpfad für gemeinsam genutzte Utilities wie diecn
-Funktion. Wenn die CLI eine Komponente hinzufügt, die dieses Utility benötigt, verwendet sie diesen Alias im Import-Statement.components
: Definiert den Importpfad für die UI-Komponenten selbst. Dies ermöglicht es Komponenten, andere Komponenten (z. B. könnte einDialog
einenButton
importieren) über einen sauberen, konsistenten Pfad zu importieren.
Durch das Verständnis dieser Konfiguration können Sie das Verhalten der CLI sogar manuell anpassen, wenn Sie sich entscheiden, die Struktur Ihres Projekts zu refaktorieren, z. B. indem Sie Ihr Komponentenverzeichnis von @/components
nach @/ui
verschieben.
Fazit: Bauen Sie auf Ihre Weise mit HeroUI
HeroUI stellt eine bedeutende Verschiebung in der Art und Weise dar, wie Entwickler über UI-Bibliotheken denken und sie verwenden können. Es bewegt sich weg vom Einheitsmodell der Black Box hin zu einer transparenten, befähigenden und tiefgreifend anpassbaren Entwicklererfahrung. Durch die Bereitstellung ungestylter, zugänglicher Komponenten direkt als Quellcode schafft es die perfekte Balance zwischen schneller Entwicklung und maßgeschneidertem Design.
Die Kernstärken von HeroUI sind klar:
- Ultimatives Eigentum: Die Komponenten sind Ihr Code. Sie können sie ohne Einschränkungen ändern, erweitern und anpassen.
- Tiefe Anpassung: Ein leistungsstarkes Theming-System auf Basis von CSS-Variablen macht es trivial, Farben, Abstände und Radien in Ihrer gesamten Anwendung zu ändern.
- Moderne Architektur: Erstellt mit TypeScript, Tailwind CSS und erstklassiger Unterstützung für Next.js und React Server Components, ist es ein Werkzeug, das für die Zukunft der Webentwicklung konzipiert ist.
- Entwicklerfreundliche Tools: Die intelligente CLI automatisiert den mühsamen Einrichtungsprozess und macht das Hinzufügen neuer Komponenten zu einem nahtlosen Erlebnis.
HeroUI ist für die Bauherren, die Handwerker und die Teams, die glauben, dass ihre Benutzeroberfläche ein Kernbestandteil der Identität ihres Produkts ist. Es gibt Ihnen kein fertiges Haus; es gibt Ihnen die hochwertigsten Materialien und eine perfekt organisierte Werkstatt, um das Haus Ihrer Träume zu bauen. Für Ihr nächstes Projekt, das eine einzigartige, ausgefeilte und wartbare Frontend erfordert, suchen Sie nicht weiter als HeroUI. Es könnte genau das Werkzeug sein, das Sie befähigt, Ihre bisher heldenhafteste Benutzeroberfläche zu bauen.
Möchten Sie eine integrierte All-in-One-Plattform, damit Ihr Entwicklerteam mit maximaler Produktivität zusammenarbeiten kann?
Apidog erfüllt all Ihre Anforderungen und ersetzt Postman zu einem viel günstigeren Preis!