8-bit Chart

PreviousNext

A simple 8-bit chart component

Docs
8bitcnblock

Preview

Loading preview…
components/ui/8bit/blocks/chart.tsx
"use client";

import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from "recharts";

import {
  type ChartConfig,
  ChartContainer,
  ChartTooltip,
  ChartTooltipContent,
} from "@/components/ui/8bit/chart";

export const description = "An area chart with axes";

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: "var(--chart-1)",
  },
  mobile: {
    label: "Mobile",
    color: "var(--chart-2)",
  },
} satisfies ChartConfig;

export function ChartExample() {
  return (
    <ChartContainer
      config={chartConfig}
      className={`min-h-[200px] w-full ${"retro"}`}
    >
      <AreaChart accessibilityLayer data={chartData}>
        <CartesianGrid />
        <XAxis
          dataKey="month"
          tickLine={false}
          axisLine={false}
          tickMargin={8}
          tickFormatter={(value) => value.slice(0, 3)}
        />
        <ChartTooltip cursor={false} content={<ChartTooltipContent />} />
        <YAxis
          width={47}
          tickLine={false}
          axisLine={false}
          tickMargin={8}
          tickCount={3}
        />
        <Area
          dataKey="mobile"
          fill="var(--chart-2)"
          stroke="var(--chart-2)"
          stackId="a"
        />
        <Area
          dataKey="desktop"
          fill="var(--chart-1)"
          stroke="var(--chart-1)"
          stackId="a"
        />
      </AreaChart>
    </ChartContainer>
  );
}

Installation

npx shadcn@latest add @8bitcn/chart

Usage

import { Chart } from "@/components/chart"
<Chart />