8-bit Chart Area Step

PreviousNext

A simple 8-bit chart area step component

Docs
8bitcnblock

Preview

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

import { Activity } from "lucide-react";
import { Area, AreaChart, CartesianGrid, XAxis } from "recharts";

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

export const description = "A step area chart";

const chartData = [
  { month: "January", desktop: 99 },
  { month: "February", desktop: 204 },
  { month: "March", desktop: 180 },
  { month: "April", desktop: 120 },
  { month: "May", desktop: 180 },
  { month: "June", desktop: 42 },
];

const chartConfig = {
  desktop: {
    label: "Desktop",
    color: "var(--chart-1)",
    icon: Activity,
  },
} satisfies ChartConfig;

export default function ChartAreaStep() {
  return (
    <ChartContainer config={chartConfig}>
      <AreaChart
        data={chartData}
        margin={{
          left: 20,
          right: 20,
        }}
      >
        <CartesianGrid vertical={false} />
        <XAxis
          dataKey="month"
          tickLine={false}
          axisLine={false}
          tickMargin={8}
          tickFormatter={(value) => value.slice(0, 3)}
        />
        <ChartTooltip
          cursor={false}
          content={<ChartTooltipContent hideLabel />}
        />
        <Area
          dataKey="desktop"
          type="step"
          fill="var(--color-desktop)"
          stroke="var(--color-desktop)"
          activeDot={{
            fill: "var(--chart-active-dot)",
          }}
        />
      </AreaChart>
    </ChartContainer>
  );
}

Installation

npx shadcn@latest add @8bitcn/chart-area-step

Usage

import { ChartAreaStep } from "@/components/chart-area-step"
<ChartAreaStep />