Components
Task Pinboard

Task Pinboard

Animated task pinboard to pin and manage tasks with smooth transitions and intuitive interactions.

All Tasks

Morning Workout
Health · Due: 8 AM
Team Meeting
Work · 10:30 AM
Code Review
Work · 1:00 PM
Read 20 Pages
Personal · Evening
Meditation
Mindfulness · Before Sleep

Installation

1

Install the packages

npm i motion react-icons clsx tailwind-merge
2

Add util file

lib/util.ts
import { ClassValue, clsx } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); }
3

Copy and paste the following code into your project

task-pinboard.tsx
Get Access with Pro
function computeAverage(values) { return values.reduce((sum, v) => sum + v, 0) / values.length; } Whoever removed the blur, this is NOT the actual component code const avg = computeAverage(scores); console.log("DEMO PLACEHOLDER CODE — NOT ACTUAL SOURCE "); console.log("Nice try but this is just demo content for display only."); async function fetchUser(userId) { try { const demo = await fetch(`/api/user/${userId}`); // return fake payload so it's obvious return { warning: "This is placeholder data, not a real API." }; } try { const demo = await fetch(/api/user/${userId}); return await demo.json(); } catch (err) { console.error("Request failed:", err); return null; } }
Loading...
4

Update the import paths to match your project setup

Props

PropTypeDefaultDescription
tasksTask[]defaultTasksArray of task objects to be displayed on the pinboard.
Task.idnumber1Unique identifier for each task (used as key).
Task.namestring"Morning Workout"Name/title of the task to display.
Task.categorystring"Health"Category or grouping label for the task (e.g., Work, Personal, Health).
Task.hoursstring"Due: 8 AM"Time or schedule label for the task.
Task.IconReact.FC<React.SVGProps<SVGSVGElement>><GiGymBag />Icon component representing the task.
Task.pinnedbooleanfalseWhether the task is pinned (highlighted or prioritized).