Xzero UI
Pro library

Meeting summaryPro

An AI meeting notes card: the header shows the Google Meet or Zoom mark, the attendees and the duration. Summary, Decisions and Action items stream in after a short summarizing pass. Hover any line to see the transcript quote it came from, then check off action items or send them to Linear or Notion.

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

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/meeting-summary

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 { MeetingSummary } from "@/components/xzero/meeting-summary/meeting-summary";

export function CallNotes({ meeting, status, createIssue }) {
  return (
    <MeetingSummary
      meeting={meeting}
      status={status}
      onSend={(item, target, signal) => createIssue({ title: item.text, target, signal })}
      onActionItemChange={(item, done) => console.log(item.id, done)}
    />
  );
}

API reference

MeetingSummary

AI notes for one call: a meeting header, then Summary, Decisions and Action items that stream in after a short summarizing pass. Each point links to its transcript quote, and each action item can be checked off or sent to Linear or Notion. With no props it plays a sample and simulates every send.

PropTypeDefaultDescription
meetingMeetingSummaryDatameetingSummarySampleTitle, platform (google-meet, zoom or other), startsAt, durationMinutes, transcriptWords, attendees, and the summary, decisions and actionItems lists. Points carry an optional quote { speakerId, at (seconds), text }; action items add ownerId, due (ISO date) and done.
status"summarizing" | "ready" | "error"–Controlled status. Leave it out and the card plays its own summarizing pass when it scrolls into view. Ready with empty lists shows the no transcript state.
errorstring–Message shown under the error title when status is error.
autoPlaybooleantrueUncontrolled only: start summarizing and play the pass. False starts on the finished notes.
streamInbooleantrueStream the notes in, a few words at a time, when status moves from summarizing to ready.
model{ name: string; icon?: ReactNode } | nullClaude Sonnet 5.5The model credited in the footer. Pass null to hide it.
sendTargets("linear" | "notion")[]["linear", "notion"]Where action items can be sent. Pass [] to hide the send buttons.
onSend(item, target, signal: AbortSignal) => Promise<{ reference?: string; url?: string } | void>–Creates the issue or page. Resolve with a reference ("PRC-142") and optional url to show a sent chip; reject to show a retry. The signal aborts on unmount and on regenerate. Without it, sending is simulated.
onActionItemChange(item: MeetingActionItem, done: boolean) => void–An action item was checked or unchecked. The card keeps the checked state itself.
onRegenerate() => void–Regenerate in the footer and Try again in the error state. Uncontrolled cards also replay their own pass.
classNamestring–Class on the root article.

Keyboard interactions

KeysAction
TabMoves through the attendees, each timestamp, checkbox and send button, then copy and regenerate.
Focus on a timestampShows the transcript quote for that line.
Enter / SpaceOn a timestamp, pins or closes its quote. On a checkbox, toggles it. On Linear or Notion, sends the item.
EscapeCloses an open quote.

Accessibility

Motion

Responsive behavior

Performance

Notes for AI

Also in ai

Guidance for AI tools

Meeting summary: An AI meeting notes card: the header shows the Google Meet or Zoom mark, the attendees and the duration. Summary, Decisions and Action items stream in after a short summarizing pass. Hover any line to see the transcript quote it came from, then check off action items or send them to Linear or Notion. 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