Activity Timeline
A beautiful, responsive, and composable timeline/stepper component system. Built specifically for LGU document routing audit trails, leave application steppers, and system administrator event logs.
Interactive Demo
Explore three distinct municipal configurations: Document Routing History, Leave Application Stepper, and Composable IT Audit Logs.
Document Routing Audit Trail
Using <ActivityTimelineList items={DOCUMENT_HISTORY} /> shorthand.
Purchase Request Submitted
Oct 24, 2026 · 09:15 AMPR-2026-009 submitted for IT Equipment procurement (20x Laptops).
Endorsed by Department Head
Oct 24, 2026 · 11:30 AMReviewed and endorsed by Municipal ICT Officer. Verified itemized budget allocation.
Pending Budget Clearance
Oct 25, 2026 · 02:00 PMForwarded to Municipal Budget Office for CAO (Certificate of Availability of Funds).
Mayor's Final Approval
Awaiting final electronic signature from Office of the Municipal Mayor.
Release & Bidding
Endorsed to BAC (Bids and Awards Committee) for posting on PhilGEPS.
Interactive Leave Approval Stepper
Horizontal orientation for multi-step wizards or application progress.
Filing
Submit Form 6
HRMO Review
Leave credits check
Supervisor
Workload clearance
Approved
Final notice
Composable API & Custom Dots
Using individual <ActivityTimelineItem> nodes for absolute layout control.
IP: 192.168.1.45 via HRMO Biometrics Gateway
Timeout waiting for MSWD Angono Cloud Replica.
Re-establishing handshake protocol...
Installation
Install the component via the shadcn/ui CLI.
pnpm dlx shadcn@latest add https://micto-ui-kit.misangono.net/r/micto/activity-timeline.jsonData-Driven Shorthand
Pass an array of structured items to ActivityTimelineList for instant rendering of document routing histories.
import { ActivityTimelineList } from "@/components/micto/activity-timeline"
import { Badge } from "@/components/ui/badge"
const history = [
{
id: 1,
title: "Purchase Request Submitted",
description: "PR-2026-009 submitted for IT Equipment procurement.",
timestamp: "Oct 24, 2026 · 09:15 AM",
status: "completed" as const,
actor: { name: "Nehry Dedoro", avatar: "/avatars/nehry.jpg", role: "Lead Architect" },
metadata: [<Badge key="1">ICT Fund</Badge>],
attachments: [{ label: "Specs.pdf", url: "#" }]
},
{
id: 2,
title: "Pending Budget Clearance",
description: "Forwarded to Municipal Budget Office.",
status: "in-progress" as const,
}
]
export default function DocumentHistory() {
return <ActivityTimelineList items={history} orientation="vertical" />
}Horizontal Stepper
Change orientation to horizontal for multi-step wizards or application progress tracking.
import { ActivityTimelineList } from "@/components/micto/activity-timeline"
const steps = [
{ id: 1, title: "Filing", description: "Submit Form 6", status: "completed" as const },
{ id: 2, title: "HRMO Review", description: "Leave credits check", status: "in-progress" as const },
{ id: 3, title: "Supervisor Approval", description: "Workload clearance", status: "pending" as const },
]
export default function LeaveStepper() {
return <ActivityTimelineList items={steps} orientation="horizontal" />
}Composable Primitives
Use individual ActivityTimelineItem nodes for absolute layout control and custom status icons.
import {
ActivityTimeline,
ActivityTimelineItem,
ActivityTimelineTrack,
ActivityTimelineConnector,
ActivityTimelineDot,
ActivityTimelineContent,
} from "@/components/micto/activity-timeline"
import { UserCheck, AlertTriangle } from "lucide-react"
export default function SystemAuditLog() {
return (
<ActivityTimeline orientation="vertical" className="gap-2">
<ActivityTimelineItem status="completed">
<ActivityTimelineTrack>
<ActivityTimelineConnector />
<ActivityTimelineDot className="border-blue-500 bg-blue-50 text-blue-600">
<UserCheck className="size-4" />
</ActivityTimelineDot>
</ActivityTimelineTrack>
<ActivityTimelineContent>
<div className="flex justify-between items-center">
<span className="text-xs font-bold">User Auth Success</span>
<span className="text-[10px] text-muted-foreground">10:02:14 AM</span>
</div>
<p className="text-[11px] text-muted-foreground">IP: 192.168.1.45 via Biometrics Gateway</p>
</ActivityTimelineContent>
</ActivityTimelineItem>
</ActivityTimeline>
)
}ActivityTimeline Props
Root container configuration.
| Prop | Type | Default | Description |
|---|---|---|---|
| orientation | 'vertical' | 'horizontal' | 'vertical' | Defines the layout orientation. Vertical stacks items down; horizontal places them side-by-side. |
| className | string | undefined | Additional CSS classes for the outer wrapper container. |
ActivityTimelineList Props
High-level shorthand wrapper configuration.
| Prop | Type | Default | Description |
|---|---|---|---|
| items | ActivityTimelineItemData[] | Array of structured item configuration objects for the data-driven shorthand. | |
| orientation | 'vertical' | 'horizontal' | 'vertical' | Forwarded to the root container to dictate layout flow. |
ActivityTimelineItemData
Structure of each item object in the items array.
| Prop | Type | Default | Description |
|---|---|---|---|
| id | string | number | Unique identifier for React list keys. | |
| title | ReactNode | Primary title of the timeline step or event. | |
| description | ReactNode | undefined | Secondary details text or paragraph. |
| timestamp | string | undefined | Formatted date/time string displayed next to or below the title. |
| status | 'completed' | 'in-progress' | 'pending' | 'error' | 'muted' | 'pending' | Visual status state for this step. |
| actor | { name?: string; avatar?: string; role?: string } | undefined | Actor information. Renders a clickable tooltip badge in vertical mode, or a pill in horizontal mode. |
| metadata | ReactNode[] | undefined | Array of Badge components or status pills rendered below the description. |
| attachments | { label: string; url?: string; onClick?: () => void }[] | undefined | Document attachments. Renders underlined clickable attachment links. |
| customDot | ReactNode | undefined | Completely replaces the built-in status dot with a custom React element. |
ActivityTimelineItem Props
Individual composable node configuration.
| Prop | Type | Default | Description |
|---|---|---|---|
| status | 'completed' | 'in-progress' | 'pending' | 'error' | 'muted' | 'pending' | Sets the visual styling state of the dot and connector line. |
| isLast | boolean | false | When true, hides the connector line running from this item. |