Chart
Recharts-Diagramme mit Theme-Farben, einem Tooltip und einer Legende, die Labels aus einer Konfiguration lesen, und Tastaturnavigation mit sichtbarem Fokusring.
pnpm dlx shadcn@latest add https://hextaui.com/r/chart.jsonFügt die Komponente, die HextaUI-Theme-Tokens und alle HextaUI-Komponenten hinzu, von denen sie abhängt.
Füge die Theme-Tokens zu deinem globalen CSS hinzu, falls du das noch nicht getan hast.
Installiere die Abhängigkeiten.
pnpm add recharts cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/chart.tsx Passe die Importpfade an dein Projekt-Setup an.
Du baust Charts mit Recharts-Komponenten und fügst die Teile aus chart nur dort hinzu, wo du sie brauchst. Recharts wird nicht umschlossen, daher gelten seine eigene Dokumentation und Upgrade-Anleitungen unverändert.
Eine ChartConfig ordnet jedem Datenschlüssel ein Label, ein optionales Icon und eine Farbe zu. Sie bleibt von den Daten getrennt, sodass eine Config mehrere Charts bedienen kann.
Gib <ChartContainer /> eine Höhe, ein min-h-* oder ein aspect-*, damit sich der Chart beim ersten Rendern selbst messen kann. Ohne eines fällt er auf aspect-video zurück.
Jeder Config-Schlüssel wird zu einer --color-KEY-Variable, die auf seinen Chart begrenzt ist. Verweise damit auf ein Theme-Token, auf eine beliebige CSS-Farbe oder gib getrennte light- und dark-Werte an.
Verwende die Variable überall dort, wo Recharts eine Farbe nimmt: an Komponenten, in deinen Daten oder in Tailwind-Klassen.
Das Theme liefert fünf Chart-Tokens, --chart-1 bis --chart-5: Blau, Türkis, Bernstein, Violett und Rosé. In dieser Reihenfolge bleiben benachbarte Farben bei den gängigen Formen der Farbfehlsichtigkeit unterscheidbar, und jede hat mindestens 3:1 Kontrast gegenüber hellem und dunklem Hintergrund. Verwende sie der Reihe nach und lass Legende oder Labels eingeschaltet, damit Farbe nie der einzige Hinweis ist.
Schlüssel, die in einem CSS-Namen ungültig sind, etwa Mobile users, werden zu --color-Mobile-users.
Balkendiagramm
Ein Raster, eine Achse, <ChartTooltip /> und <ChartLegend />. Tooltip und Legende lesen ihre Labels und Farben aus der Config.
Liniendiagramm
indicator="line" ordnet die Tooltip-Schlüssel den Linien zu, die sie beschreiben.
Gestapelte Balken
Balken mit derselben stackId werden gestapelt. Runde nur die äußeren Enden ab, damit der Stapel als ein Balken wirkt.
Horizontale Balken
Setze layout="vertical" am Chart und tausche die Achsentypen. <LabelList /> gibt jeden Wert am Ende seines Balkens aus.
Donut
Jedes Segment erhält seine Farbe aus fill in den Daten. nameKey am Tooltip und an der Legende sucht das Label jedes Segments in der Config.
Radar
Polare Raster und Achsen übernehmen dieselben gedämpften Linien und Labels wie kartesische.
Tooltip
Wechsle zwischen den Indikatoren dot, line und dashed und blende das Label mit hideLabel aus. defaultIndex auf <ChartTooltip /> zeigt beim ersten Rendern einen Punkt.
Werte formatieren
valueFormatter formatiert die Zahl und behält Indikator und Namen. labelFormatter tut dasselbe für das Label. Um stattdessen eine ganze Zeile zu ersetzen, verwende formatter.
Icons
Ein icon in der Config ersetzt den Farbmarker im Tooltip und in der Legende.
Helle und dunkle Farben
Ein theme-Objekt wählt in jedem Theme eine andere Farbe. Wechsle das Theme der Seite, um die Änderung zu sehen.
Negative Werte
Färbe jeden Balken mit <Cell /> und markiere Null mit <ReferenceLine />.
Lange Labels
Lange Serienamen werden in Legende und Tooltip umgebrochen, und große Werte bleiben daneben in einer Zeile.
Rechts nach links
Recharts spiegelt Achsen nicht von selbst. Setze reversed auf der x-Achse und verschiebe die y-Achse nach rechts. Übergib locale an den Tooltip, um die Ziffern des Lesers anzuzeigen.
Recharts schaltet accessibilityLayer standardmäßig ein, sodass der Chart ein einziger Tab-Stopp ist, durch den du Punkt für Punkt gehst.
| Taste | Aktion |
|---|---|
| Tab | Fokussiert den Chart und zeigt einen Fokusring. |
| ←→ | Bewegt den Tooltip zum nächsten oder vorherigen Punkt. Bei einer umgekehrten Achse folgen die Tasten dem Bildschirm. |
| Enter | Zeigt den Tooltip am aktuellen Punkt an oder blendet ihn aus. |
- Charts sind für Screenreader Bilder. Benenne jeden mit einem sichtbaren Titel in der Nähe oder einem
aria-labelam Recharts-Chart und biete eine Tabelle an, wenn Nutzer die exakten Werte brauchen. - Tooltip und Legende benennen jede Serie im Text, sodass ein Leser nie allein anhand von Farben zuordnen muss.
- Bei reduzierter Bewegung überspringt Recharts seine Einblendanimationen, und der Tooltip springt zwischen Punkten, statt zu gleiten.
- Tooltip-Werte werden in
en-USformatiert, sofern du keinlocaleübergibst, sodass Server und Browser denselben Text rendern.
Die Teile sitzen auf Recharts auf. Jede Recharts-Prop funktioniert weiterhin an den Chart-Komponenten, die du hineinsetzt.
Stellt die Config bereit, schreibt die Farbvariablen und rendert ein Recharts-<ResponsiveContainer /> um sein Kind. Nimmt alle <div>-Props.
| Prop | Typ | Standard |
|---|---|---|
configLabels, Icons und Farben für jeden Datenschlüssel. | ChartConfig | – |
childrenEin Recharts-Chart, etwa <BarChart />. | ReactElement | – |
initialDimensionDie Größe, die verwendet wird, bevor der Container gemessen wurde. | { width: number; height: number } | { width: 320, height: 200 } |
idBenennt den Chart in data-chart. Wird erzeugt, wenn nicht angegeben. | string | – |
| Attribut | Beschreibung |
|---|---|
data-slot="chart" | Der Container. |
data-chart | Die ID, auf die die Farbvariablen begrenzt sind. |
--color-KEY | Eine Farbvariable pro konfiguriertem Schlüssel. |
| Prop | Typ | Standard |
|---|---|---|
label | ReactNode | – |
iconErsetzt den Farbmarker im Tooltip und in der Legende. | ComponentType | – |
colorJede CSS-Farbe oder Variable. | string | – |
themeVerwende es statt color für eine Farbe pro Theme. | { light: string; dark: string } | – |
Das Recharts-<Tooltip />, mit kürzerem Gleiten zwischen Punkten. Nimmt alle Recharts-Tooltip-Props.
| Prop | Typ | Standard |
|---|---|---|
contentNormalerweise <ChartTooltipContent />. | ReactElement | (props) => ReactNode | – |
animationDuration | number | 200 |
animationEasing | string | "ease-out" |
defaultIndexZeigt den Tooltip beim ersten Rendern an diesem Punkt. | number | – |
| Prop | Typ | Standard |
|---|---|---|
indicator | "dot" | "line" | "dashed" | "dot" |
hideLabel | boolean | false |
hideIndicator | boolean | false |
labelKeyDer Config- oder Datenschlüssel, der für das Label verwendet wird. | string | – |
nameKeyDer Config- oder Datenschlüssel, der für jeden Namen verwendet wird. | string | – |
valueFormatterFormatiert jeden Wert und behält Indikator und Namen. | (value, name, item) => ReactNode | – |
labelFormatter | (label, payload) => ReactNode | – |
formatterErsetzt jede Zeile. | (value, name, item, index, payload) => ReactNode | – |
localeFormatiert numerische Werte. | Intl.LocalesArgument | "en-US" |
colorEine Indikatorfarbe für jede Zeile. | string | – |
className | string | – |
labelClassName | string | – |
| Attribut | Beschreibung |
|---|---|
data-slot="chart-tooltip" | Die Box. |
data-slot="chart-tooltip-label" | Das Label. |
data-slot="chart-tooltip-item" | Eine Zeile pro Serie. |
data-slot="chart-tooltip-indicator" | Der Farbschlüssel. |
data-indicator | Am Schlüssel: dot, line oder dashed. |
--chart-indicator | Die Farbe des Schlüssels. |
Das Recharts-<Legend />. Nimmt alle Recharts-Legenden-Props und listet Serien in der Reihenfolge auf, in der du sie deklarierst, statt alphabetisch.
| Prop | Typ | Standard |
|---|---|---|
contentNormalerweise <ChartLegendContent />. | ReactElement | (props) => ReactNode | – |
itemSorternull behält die deklarierte Reihenfolge. | "value" | "dataKey" | (item) => number | string | null | null |
| Prop | Typ | Standard |
|---|---|---|
hideIcon | boolean | false |
nameKeyDer Config- oder Datenschlüssel, der für jeden Namen verwendet wird. | string | – |
className | string | – |
| Attribut | Beschreibung |
|---|---|
data-slot="chart-legend" | Die Liste. |
data-slot="chart-legend-item" | Ein Eintrag pro Serie. |
data-slot="chart-legend-indicator" | Das Farbfeld. |
Gibt innerhalb eines <ChartContainer /> { config } zurück, um eigene Tooltip- oder Legendeninhalte zu bauen.
- AvatarNutzerfotos mit Initialen als Fallback, Statusbadges und gestapelte Gruppen, die zu einer Zahl einklappen.
- BadgeStatuslabels mit farbigen Punkten, entfernbare Tags, die zugleiten, und Zähler, die zu ihrem neuen Wert rollen.
- CardEine Fläche zum Gruppieren von Inhalten, mit drei Varianten, randlosen Medien, konzentrischen Radien und Links über die ganze Karte.
- Data tableEine Tabelle für echte Daten, mit Sortierung, Suche, Zeilenauswahl, fixierten Spalten, Sticky Header und Paginierung.
- ItemEine Zeile aus Medien, Text und Aktionen für Listen, Einstellungen und Auswahlen, mit gruppierter Fläche und einer Hover-Hervorhebung, die zwischen den Zeilen gleitet.
- KbdTastenkappen für Tastenkürzel, die auf jeder Plattform die richtigen Symbole zeigen, korrekt vorgelesen werden und sich wie echte Tasten eindrücken.
In Blocks verwendet
Blocks, die auf Chart aufbauen.
- BillingPlan & Nutzung für ein KI-Produkt, im Stil von Cursor, Claude und Vercel. Eine nach Modell aufgeteilte Nutzungsanzeige, die das Ende des Zyklus hochrechnet und warnt, bevor die Credits ausgehen, ein tägliches Diagramm zum Scrubben, ein Ausgabenlimit mit Warnungen, die du auf der Anzeige in der Vorschau siehst, Planwechsel mit exakter Anteilsberechnung, ein Kartenformular mit echter Validierung und Rechnungen als PDF-Download.
- SettingsEinstellungen für ein KI-Produkt, gestaltet wie bei Cursor und Claude. Eine gefüllte Seitenleiste mit Suche, Gruppen und externen Links, Karten mit Zeilen, dezenten Pickern und verschachtelten Optionen, eine dunkle Speicher-Insel, die nur erscheint, wenn sich etwas geändert hat, ⌘S zum Speichern, Feldfehler aus deinen Prüfungen oder deinem Server und Ladezustände in der Form des Inhalts.