Activity Feed

PreviousNext

Compact animated activity feed for product events, audit trails, workspace logs, and operational timelines.

Activity

Latest workspace changes.

  1. Production release shipped

    Release

    Version 3.12.0 is live for all enterprise workspaces.

    MDMatos Deploy4 min ago18 checks
  2. Checkout flow review requested

    Review

    The billing team opened a final review for plan upgrades.

    ALAna Lima22 min ago9 checks
  3. Customer health summary generated

    AI

    New expansion risks were added to the QBR workspace brief.

    AIWorkspace AI46 min ago6 checks
  4. Usage threshold notification sent

    Usage

    Acme Labs crossed 80% of their monthly automation quota.

    RORevenue Ops1 h ago4 checks
  5. Security audit passed

    Audit

    SSO enforcement and approvals are compliant.

    SCSecurity3 h ago12 checks
"use client";

import {
  Bell,
  CheckCircle2,
  GitPullRequestArrow,
  Sparkles,
  Zap,
} from "lucide-react";
import {
  ActivityFeed,
  type ActivityFeedItem,
} from "@/components/matos-ui/activity-feed";

const activityItems: ActivityFeedItem[] = [
  {
    id: "release",
    title: "Production release shipped",
    description: "Version 3.12.0 is live for all enterprise workspaces.",
    time: "4 min ago",
    badge: "Release",
    actor: { name: "Matos Deploy", initials: "MD" },
    icon: <Zap />,
    tone: "success",
    unread: true,
    checks: "18 checks",
  },
  {
    id: "review",
    title: "Checkout flow review requested",
    description: "The billing team opened a final review for plan upgrades.",
    time: "22 min ago",
    badge: "Review",
    actor: { name: "Ana Lima", initials: "AL" },
    icon: <GitPullRequestArrow />,
    tone: "info",
    checks: "9 checks",
  },
  {
    id: "summary",
    title: "Customer health summary generated",
    description: "New expansion risks were added to the QBR workspace brief.",
    time: "46 min ago",
    badge: "AI",
    actor: { name: "Workspace AI", initials: "AI" },
    icon: <Sparkles />,
    tone: "violet",
    unread: true,
    checks: "6 checks",
  },
  {
    id: "alert",
    title: "Usage threshold notification sent",
    description: "Acme Labs crossed 80% of their monthly automation quota.",
    time: "1 h ago",
    badge: "Usage",
    actor: { name: "Revenue Ops", initials: "RO" },
    icon: <Bell />,
    tone: "warning",
    checks: "4 checks",
  },
  {
    id: "audit",
    title: "Security audit passed",
    description: "SSO enforcement and approvals are compliant.",
    time: "3 h ago",
    badge: "Audit",
    actor: { name: "Security", initials: "SC" },
    icon: <CheckCircle2 />,
    tone: "success",
    checks: "12 checks",
  },
];

export function ActivityFeedDemo() {
  return (
    <div className="flex w-full justify-center">
      <ActivityFeed
        className="max-w-[420px]"
        compact
        title="Activity"
        description="Latest workspace changes."
        items={activityItems}
      />
    </div>
  );
}

Installation

pnpm dlx shadcn@latest add https://matos-ui.com/r/activity-feed.json

Usage

import { ActivityFeed } from "@/components/matos-ui/activity-feed"
<ActivityFeed
  title="Activity"
  description="Recent product events and operational changes."
  items={[
    {
      id: "deploy",
      title: "Production deploy completed",
      description: "Release v2.8.0 is now serving all workspaces.",
      time: "2 min ago",
      badge: "Deploy",
      tone: "success",
      unread: true,
    },
  ]}
/>

Reference

ActivityFeed Props

PropTypeDefaultDescription
itemsActivityFeedItem[]-Feed items to render.
titleReactNode?-Optional header title.
descriptionReactNode?-Optional header description.
actionReactNode?-Optional header action.
showActionbooleanfalseShows the built-in View all action.
emptyTextReactNode?"No activity yet"Empty state content.
compactbooleanfalseReduces row padding.
size"sm" | "md" | "lg"-Optional max width preset.

ActivityFeedItem

FieldTypeDescription
idstringUnique item id.
titleReactNodeMain row title.
descriptionReactNodeOptional supporting text.
timeReactNodeOptional timestamp.
badgeReactNodeOptional status badge.
checksReactNodeOptional checks metadata.
metaReactNodeOptional secondary metadata.
actorobjectOptional actor with name and initials.
iconReactNodeOptional marker icon.
toneActivityFeedToneneutral, info, success, warning, or violet.
unreadbooleanAdds a subtle pulse and active row signal.

Also exported: ActivityFeedEmpty, activityFeedVariants, and related types.