Xzero UI
Pro library

Activity feedPro

A team activity feed grouped by day on a quiet avatar timeline, with a type filter, a live new updates button, expandable details, and a mark all read sweep.

$ pnpm dlx shadcn@4.23.0 add @xzero-ui-pro/activity-feed
Live · keyboard ready

Use this for a workspace or project activity page. Load events from your activity API, stream new ones in through the items prop, and persist read state through onReadChange; new events in the preview are simulated.

When to use

When not to use

Installation

Register both Xzero UI namespaces in your project's components.json:

{
  "registries": {
    "@xzero-ui": "https://mcp.xzero.co.uk/r/{name}.json",
    "@xzero-ui-pro": "https://mcp.xzero.co.uk/r/pro/{name}.json"
  }
}
npx shadcn@4.23.0 add @xzero-ui-pro/activity-feed

Install xzero-foundation once, and import @/components/xzero/foundation.css in your app root. No Xzero token is used by this snapshot. For sample portraits, photos, fonts, or logos, download https://mcp.xzero.co.uk/install-assets.mjs and run node xzero-install-assets.mjs <receiving-project>.

Usage

import { ActivityFeed } from "@/components/xzero/blocks/activity-feed/activity-feed";

export function ProjectActivity({ events, live }: { events: Activity[]; live: Activity[] }) {
  return <ActivityFeed items={events} incoming={live} onRead={ids => markRead(ids)} />;
}

API reference

ActivityFeed

A team activity feed grouped by day on a quiet avatar timeline, with one type filter, expandable comments, diffs, deploy details, and photos, a new updates button that lands above the list, and a mark all read sweep.

PropTypeDefaultDescription
itemsActivity[]activitiesEvents, newest first: id, type, actor, action, target, project, day offset, time, unread, and an optional detail.
incomingActivity[]incomingActivitiesEvents that arrive while the feed is open. They wait behind the new updates button. Pass [] to turn off the simulation.
incomingIntervalnumber6000Milliseconds between simulated arrivals.
todaystring"2026-09-24"ISO date the day offsets count back from.
defaultRange"today" | "week" | "month""week"How far back the feed reaches.
onRead(ids: string[]) => void–Called when events are marked read, one at a time or all at once.
titlestring"Activity"Heading.
classNamestring–Class on the root.

Keyboard interactions

KeysAction
TabMoves through the type filter, the new updates button, and each expandable event.
Enter / SpaceExpands or collapses an event and marks it read.
Arrow keysMove the type filter selection.

Accessibility

Motion

Responsive behavior

Performance

Notes for AI

Guidance for AI tools

Blocks are complete, self-contained screens with sample data. Replace the sample data and connect the callbacks described above. Follow the declared prop types and do not invent props. Keep keyboard access, reduced motion support, and both light and dark themes intact when adapting it.

Full library index: https://ui.xzero.co.uk/llms.txt

Browse all components