Docs
ReminderReminder
Glance at open tasks by list and see what is coming up next.
Loading...
How it works
The card is a fixed size-52 tile. Pass buckets for the two summary counts (work, home, or any labels you define) and nextLabel for the single line people read first — usually the next meeting or errand. Styling stays in your story or app; the primitive only handles layout.
Installation
CLI
pnpm dlx shadcn@latest add https://animata.design/r/widget/reminder.json
Manual
Run the following command
It will create a new file called reminder.tsx inside the components/animata/widget directory.
mkdir -p components/animata/widget && touch components/animata/widget/reminder.tsxPaste the code
Open the newly created file and paste the following code:
import { ArrowRight } from "lucide-react";
import { cn } from "@/lib/utils";
export type ReminderBucket = {
label: string;
count: number;
/** Tailwind classes for the bucket chip (e.g. `bg-violet-200 dark:bg-violet-500/35`). */
className?: string;
};
export type ReminderProps = {
className?: string;
title?: string;
buckets?: ReminderBucket[];
/** Next commitment — the primary glance line. */
nextLabel?: string;
};
const DEFAULT_BUCKETS: ReminderBucket[] = [
{ label: "Work", count: 2, className: "bg-violet-200 dark:bg-violet-500/35" },
{ label: "Home", count: 3, className: "bg-emerald-200 dark:bg-emerald-500/35" },
];
export default function Reminder({
className,
title = "Today",
buckets = DEFAULT_BUCKETS,
nextLabel = "Meeting in 30 min",
}: ReminderProps) {
return (
<div
className={cn(
"flex size-52 flex-col justify-between rounded-3xl border border-border bg-background p-4 shadow-md",
className,
)}
>
<p className="text-center text-xs font-medium uppercase tracking-wide text-muted-foreground">
{title}
</p>
<div className="flex items-stretch justify-between gap-2">
{buckets.slice(0, 2).map((bucket) => (
<div
key={bucket.label}
className={cn(
"flex min-w-0 flex-1 flex-col items-center justify-center gap-1 rounded-xl px-2 py-3",
bucket.className,
)}
>
<span className="text-2xl font-semibold tabular-nums leading-none text-foreground">
{bucket.count}
</span>
<span className="w-full border-t border-border/60 pt-1.5 text-center text-xs font-medium text-muted-foreground">
{bucket.label}
</span>
</div>
))}
</div>
<div className="flex items-start gap-1.5 text-foreground">
<ArrowRight size={16} className="mt-0.5 shrink-0 text-muted-foreground" aria-hidden />
<p className="line-clamp-2 text-sm font-medium leading-snug">{nextLabel}</p>
</div>
</div>
);
}Credits
Built by Laxmi Lamichhane