NEW
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
shadcn registry is live·
Learn more
Skip to content
Docs

Score Board

A widget that shows progress and score

Loading...

Installation

CLI

pnpm dlx shadcn@latest add https://animata.design/r/widget/score-board.json

Manual

Run the following command

It will create a new file called score-board.tsx inside the components/animata/widget directory.

mkdir -p components/animata/widget && touch components/animata/widget/score-board.tsx

Paste the code

Open the newly created file and paste the following code:

import BarChart from "@/animata/graphs/bar-chart";
 
interface ScoreBoardProps {
  items: {
    progress: number;
    label: string;
    className?: string;
    containerClassName?: string;
  }[];
}
 
export const testScoreBoardProps: ScoreBoardProps = {
  items: [
    {
      label: "A",
      progress: 34,
      className: "rounded-md bg-green-500",
    },
    {
      label: "B",
      progress: 14,
      className: "rounded-md bg-red-500",
    },
    {
      label: "C",
      progress: 34,
      className: "rounded-md bg-green-500",
    },
    {
      label: "D",
      progress: 70,
      className: "rounded-md bg-green-500",
    },
    {
      label: "E",
      progress: 52,
      className: "rounded-md bg-green-500",
    },
    {
      label: "F",
      progress: 30,
      className: "rounded-md bg-green-500",
    },
    {
      label: "G",
      progress: 37,
      className: "rounded-md bg-green-500",
    },
    {
      label: "H",
      progress: 72,
      className: "rounded-md bg-green-500",
    },
    {
      label: "I",
      progress: 42,
      className: "rounded-md bg-green-500",
    },
  ],
};
 
export default function ScoreBoard({
  items = testScoreBoardProps.items,
}: {
  items: {
    progress: number;
    label: string;
    className?: string;
    containerClassName?: string;
  }[];
}) {
  return (
    <div className="group/board flex size-52 flex-col rounded-3xl border bg-background p-4 shadow-sm shadow-black/15 transition duration-700 dark:border-zinc-700">
      <p className="text-base text-foreground">
        Status:
        <span className="font-semibold text-green-700 dark:text-green-500"> Good </span>
      </p>
      <div className="w-full flex-1">
        <BarChart height={90} items={items} />
      </div>
      <h5 className="mt-4 text-sm text-muted-foreground">Overall Progress</h5>
      <p className="font-semibold text-foreground">
        80% <span className="text-sm text-muted-foreground">(score, progress)</span>
      </p>
    </div>
  );
}

Credits

Built by Laxmi Lamichhane