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