Search

Search documentation

Chart

Beautiful charts built with Recharts and Tailwind CSS.

Installation

pnpm dlx shadcn@latest add @evolphin/chart

Usage

import {
  ChartContainer,
  ChartTooltip,
  ChartTooltipContent,
} from "@/components/ui/chart";
import { Bar, BarChart } from "recharts";
const chartConfig = {
  desktop: {
    label: "Desktop",
    color: "#2563eb",
  },
  mobile: {
    label: "Mobile",
    color: "#60a5fa",
  },
}

<ChartContainer config={chartConfig} className="min-h-[200px] w-full">
  <BarChart accessibilityLayer data={chartData}>
    <Bar dataKey="desktop" fill="var(--color-desktop)" radius={4} />
    <Bar dataKey="mobile" fill="var(--color-mobile)" radius={4} />
  </BarChart>
</ChartContainer>

Type Definitions

interface ChartConfig {
  [k: string]: {
    label?: React.ReactNode;
    icon?: React.ComponentType;
  } & (
    | { color?: string; theme?: never }
    | { color?: never; theme: Record<"light" | "dark", string> }
  );
}

Examples

Bar Chart

const chartData = [
  { month: "January", desktop: 186, mobile: 80 },
  { month: "February", desktop: 305, mobile: 200 },
  { month: "March", desktop: 237, mobile: 120 },
  { month: "April", desktop: 73, mobile: 190 },
  { month: "May", desktop: 209, mobile: 130 },
  { month: "June", desktop: 214, mobile: 140 },
]

const chartConfig = {
  desktop: {
    label: "Desktop",
    color: "#2563eb",
  },
  mobile: {
    label: "Mobile",
    color: "#60a5fa",
  },
}

<ChartContainer config={chartConfig} className="min-h-[200px] w-full">
  <BarChart accessibilityLayer data={chartData}>
    <CartesianGrid vertical={false} />
    <XAxis
      dataKey="month"
      tickLine={false}
      tickMargin={10}
      axisLine={false}
      tickFormatter={(value) => value.slice(0, 3)}
    />
    <ChartTooltip content={<ChartTooltipContent />} />
    <ChartLegend content={<ChartLegendContent />} />
    <Bar dataKey="desktop" fill="var(--color-desktop)" radius={4} />
    <Bar dataKey="mobile" fill="var(--color-mobile)" radius={4} />
  </BarChart>
</ChartContainer>

Charts require Recharts library and specific data structure. See the Recharts documentation for more examples.

API Reference

ChartContainer

PropTypeDefaultDescription
configChartConfig-Configuration for the chart colors and labels.
childrenReact.ReactNode-The Recharts component.
classNamestring-Additional CSS classes

ChartTooltip

A wrapper around Recharts Tooltip that uses the chart config.

ChartTooltipContent

PropTypeDefaultDescription
hideLabelbooleanfalseHide the label in the tooltip.
hideIndicatorbooleanfalseHide the indicator in the tooltip.
indicator`"line" \"dot" \"dashed"`
labelKeystring-The key to use for the label.
nameKeystring-The key to use for the name.

ChartLegend

A wrapper around Recharts Legend that uses the chart config.

ChartLegendContent

PropTypeDefaultDescription
hideIconbooleanfalseHide the icon in the legend.
nameKeystring-The key to use for the name.

On this page