Docs

Sleep Tracker

An elegant sleep tracker for your use

Installation

Install dependencies

This uses BarChart for the bar graph. Install it by following the instructions here.

Run the following command

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

mkdir -p components/animata/widget && touch components/animata/widget/sleep-tracker.tsx

Paste the code

Open the newly created file and paste the following code:

"use client";
import BarChart from "@/animata/graphs/bar-chart";
 
interface ISleepTrackerProps {
  items: {
    progress: number;
    label: string;
    className?: string;
    containerClassName?: string;
  }[];
  image: string;
}
 
export const testSleepTrackerProps: ISleepTrackerProps = {
  items: [
    {
      label: "A",
      progress: 45,
      className: "rounded-md dark:bg-blue-400/45 bg-blue-600/45",
    },
    {
      label: "B",
      progress: 25,
      className: "rounded-md dark:bg-blue-400/25 bg-blue-600/25",
    },
    {
      label: "C",
      progress: 15,
      className: "rounded-md dark:bg-blue-400/15 bg-blue-600/15",
    },
    {
      label: "B",
      progress: 10,
      className: "rounded-md dark:bg-blue-400/20 bg-blue-600/20",
    },
    {
      label: "C",
      progress: 15,
      className: "rounded-md dark:bg-blue-300/15 bg-blue-600/15",
    },
    {
      label: "D",
      progress: 30,
      className: "rounded-md dark:bg-blue-300/30 bg-blue-600/30",
    },
    {
      label: "E",
      progress: 70,
      className: "rounded-md dark:bg-blue-300/70 bg-blue-600/70",
    },
    {
      label: "A",
      progress: 45,
      className: "rounded-md dark:bg-blue-300/45 bg-blue-600/45",
    },
    {
      label: "B",
      progress: 10,
      className: "rounded-md dark:bg-blue-300/20 bg-blue-600/20",
    },
    {
      label: "C",
      progress: 15,
      className: "rounded-md dark:bg-blue-300/15 bg-blue-600/15",
    },
    {
      label: "B",
      progress: 10,
      className: "rounded-md dark:bg-blue-300/20 bg-blue-600/20",
    },
    {
      label: "B",
      progress: 10,
      className: "rounded-md dark:bg-blue-300/20 bg-blue-600/20",
    },
    {
      label: "B",
      progress: 10,
      className: "rounded-md dark:bg-blue-300/20 bg-blue-600/20",
    },
    {
      label: "C",
      progress: 85,
      className: "rounded-md dark:bg-blue-300/85 bg-blue-600/85",
    },
    {
      label: "D",
      progress: 90,
      className: "rounded-md dark:bg-blue-300/90 bg-blue-600/90",
    },
    {
      label: "E",
      progress: 15,
      className: "rounded-md dark:bg-blue-300/15 bg-blue-600/15",
    },
  ],
  image:
    "https://plus.unsplash.com/premium_photo-1675107359574-e3ba5f47a1a2?q=80&w=1287&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
};
 
export default function SleepTracker({
  items = testSleepTrackerProps.items,
  image = testSleepTrackerProps.image,
}: ISleepTrackerProps) {
  return (
    <div className="flex size-52 flex-col justify-evenly rounded-3xl border border-gray-200 bg-white p-4 dark:border-zinc-700 dark:bg-slate-800">
      <div className="mb-2 flex flex-row items-center gap-3">
        <div className="icon flex h-4 w-4 items-center justify-center rounded-full bg-red-50">
          <div className="inner-icon h-2 w-2 rounded-full bg-red-500"></div>
        </div>
        <p className="text-sm text-gray-600 dark:text-white">Sleep Tracker</p>
      </div>
      <img className="h-16 w-full rounded-xl object-cover" src={image} alt="Sleep Tracker" />
 
      <BarChart className="pt-1" items={items} height={40} />
      <div className="activity mt-2 flex flex-row justify-between text-sm">
        <p className="text-primary opacity-70">Activity</p>
        <p className="text-muted-foreground">
          <strong>32m</strong> ago
        </p>
      </div>
    </div>
  );
}

Credits

Built by Aadarsh Baral yevhenyurchuk