c-timeline-11.tsx
import {
Timeline,
TimelineContent,
TimelineDate,
TimelineHeader,
TimelineIndicator,
TimelineItem,
TimelineSeparator,
} from "@/components/reui/timeline"
import {
Avatar,
AvatarFallback,
AvatarImage,
} from "@/components/ui/avatar"
const activities = [
{
id: 1,
user: "Alex Johnson",
avatar:
"https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=96&h=96&dpr=2&q=80",
action: "pushed 3 commits to",
target: "main",
date: "5 minutes ago",
},
{
id: 2,
user: "Sarah Chen",
avatar:
"https://images.unsplash.com/photo-1519699047748-de8e457a634e?w=96&h=96&dpr=2&q=80",
action: "opened pull request",
target: "#284 — Add dark mode",
date: "20 minutes ago",
},
{
id: 3,
user: "David Kim",
avatar:
"https://images.unsplash.com/photo-1607990281513-2c110a25bd8c?w=96&h=96&dpr=2&q=80",
action: "commented on",
target: "Issue #142",
date: "1 hour ago",
},
{
id: 4,
user: "Emma Wilson",
avatar:
"https://images.unsplash.com/photo-1485893086445-ed75865251e0?w=96&h=96&dpr=2&q=80",
action: "deployed to",
target: "production",
date: "2 hours ago",
},
{
id: 5,
user: "Michael Rodriguez",
avatar:
"https://images.unsplash.com/photo-1584308972272-9e4e7685e80f?w=96&h=96&dpr=2&q=80",
action: "merged branch",
target: "feat/notifications",
date: "3 hours ago",
},
]
export function Pattern() {
return (
<div className="w-full max-w-md">
<Timeline defaultValue={5}>
{activities.map((activity) => (
<TimelineItem
key={activity.id}
step={activity.id}
className="group-data-[orientation=vertical]/timeline:ms-10"
>
<TimelineHeader>
<TimelineSeparator className="bg-input! group-data-[orientation=vertical]/timeline:top-2 group-data-[orientation=vertical]/timeline:-left-8 group-data-[orientation=vertical]/timeline:h-[calc(100%-2.5rem)] group-data-[orientation=vertical]/timeline:translate-y-7" />
<TimelineIndicator className="size-8 overflow-hidden rounded-full border-none group-data-[orientation=vertical]/timeline:-left-8">
<Avatar className="size-8">
<AvatarImage src={activity.avatar} alt={activity.user} />
<AvatarFallback className="text-[10px]">
{activity.user
.split(" ")
.map((n) => n[0])
.join("")}
</AvatarFallback>
</Avatar>
</TimelineIndicator>
</TimelineHeader>
<TimelineContent>
<p className="text-sm">
<span className="font-medium">{activity.user}</span>{" "}
<span className="text-muted-foreground">{activity.action}</span>{" "}
<span className="font-medium">{activity.target}</span>
</p>
<TimelineDate className="mt-0.5 mb-0">
{activity.date}
</TimelineDate>
</TimelineContent>
</TimelineItem>
))}
</Timeline>
</div>
)
}



























