{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "meeting-agenda-notes",
  "title": "Meeting Agenda Notes",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-react/blocks/meeting-agenda-notes/MeetingAgendaNotes.tsx",
      "content": "'use client'\n\nimport * as React from 'react'\nimport {\n  Calendar,\n  Check,\n  CheckCircle2,\n  Clock,\n  Copy,\n  ExternalLink,\n  FileDown,\n  FileSpreadsheet,\n  FileText,\n  GitPullRequest,\n  ListOrdered,\n  Lock,\n  Plus,\n  Radio,\n  UserCheck,\n  Video,\n} from 'lucide-react'\nimport { cn } from '@/lib/utils'\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Checkbox } from '@/components/ui/checkbox'\nimport { Separator } from '@/components/ui/separator'\n\nexport interface MeetingAgendaNotesProps {\n  className?: string\n}\n\ninterface Attendee {\n  id: string\n  name: string\n  role: string\n  initials: string\n  isHost?: boolean\n  status: 'online' | 'present' | 'away'\n  colorClass: string\n}\n\ninterface AgendaTopic {\n  id: string\n  number: number\n  title: string\n  duration: string\n  timeRange: string\n  lead: string\n  leadInitials: string\n  status: 'completed' | 'active' | 'upcoming'\n  summary: string\n  tags: string[]\n}\n\ninterface NoteEntry {\n  id: string\n  author: string\n  authorInitials: string\n  authorColor: string\n  timestamp: string\n  content: string\n  tag: string\n}\n\ninterface ActionItem {\n  id: string\n  title: string\n  assignee: string\n  assigneeInitials: string\n  assigneeColor: string\n  dueDate: string\n  priority: 'Urgent' | 'High' | 'Medium' | 'Low'\n  completed: boolean\n}\n\ninterface KeyDecision {\n  id: string\n  number: number\n  title: string\n  context: string\n  status: 'Adopted' | 'Under Review'\n  decidedBy: string\n  time: string\n}\n\nconst INITIAL_ATTENDEES: Attendee[] = [\n  {\n    id: 'att-1',\n    name: 'Elena Rostova',\n    role: 'Principal Architect',\n    initials: 'ER',\n    isHost: true,\n    status: 'online',\n    colorClass: 'bg-success/15 text-success font-semibold',\n  },\n  {\n    id: 'att-2',\n    name: 'Marcus Vance',\n    role: 'Staff Engineer',\n    initials: 'MV',\n    status: 'online',\n    colorClass: 'bg-info/15 text-info font-semibold',\n  },\n  {\n    id: 'att-3',\n    name: 'Sarah Jenkins',\n    role: 'Product Lead',\n    initials: 'SJ',\n    status: 'online',\n    colorClass: 'bg-chart-1/15 text-chart-1 font-semibold',\n  },\n  {\n    id: 'att-4',\n    name: 'David Chen',\n    role: 'Core Infra',\n    initials: 'DC',\n    status: 'online',\n    colorClass: 'bg-warning/15 text-warning font-semibold',\n  },\n  {\n    id: 'att-5',\n    name: 'Sofia Rossi',\n    role: 'Design Systems',\n    initials: 'SR',\n    status: 'online',\n    colorClass: 'bg-destructive/15 text-destructive font-semibold',\n  },\n  {\n    id: 'att-6',\n    name: 'Alex Rivera',\n    role: 'DevRel',\n    initials: 'AR',\n    status: 'online',\n    colorClass: 'bg-chart-2/15 text-chart-2 font-semibold',\n  },\n]\n\nconst INITIAL_TOPICS: AgendaTopic[] = [\n  {\n    id: 'topic-1',\n    number: 1,\n    title: 'OKLCH Token Migration Status',\n    duration: '15m',\n    timeRange: '14:00 - 14:15',\n    lead: 'Elena Rostova',\n    leadInitials: 'ER',\n    status: 'completed',\n    summary:\n      'Audit of 140+ CSS custom properties completed. Confirmed wide-gamut Display P3 color spaces with zero degradation in legacy sRGB browsers.',\n    tags: ['Design System', 'Tailwind v4'],\n  },\n  {\n    id: 'topic-2',\n    number: 2,\n    title: 'Dual-Framework AST Verification Pipeline',\n    duration: '20m',\n    timeRange: '14:15 - 14:35',\n    lead: 'Marcus Vance',\n    leadInitials: 'MV',\n    status: 'active',\n    summary:\n      'Live AST comparisons between Vue SFC templates and React TSX JSX trees. Validating component prop parity, variant definitions, and event handlers automatically in CI.',\n    tags: ['Compiler', 'CI/CD', 'Parity'],\n  },\n  {\n    id: 'topic-3',\n    number: 3,\n    title: '100-Block Registry Expansion Strategy',\n    duration: '15m',\n    timeRange: '14:35 - 14:50',\n    lead: 'Sarah Jenkins',\n    leadInitials: 'SJ',\n    status: 'upcoming',\n    summary:\n      'Prioritization matrix for upcoming vertical blocks: Healthcare appointment management, HRMS payroll ledger, and DevTools query workbench.',\n    tags: ['Roadmap', 'Blocks'],\n  },\n  {\n    id: 'topic-4',\n    number: 4,\n    title: 'Q&A & Retrospective',\n    duration: '10m',\n    timeRange: '14:50 - 15:00',\n    lead: 'Open Floor',\n    leadInitials: 'OF',\n    status: 'upcoming',\n    summary:\n      'Consensus check on flat URL dependency format, open architectural blockers, and sprint task assignment review.',\n    tags: ['Open Floor', 'Review'],\n  },\n]\n\nconst INITIAL_NOTES: NoteEntry[] = [\n  {\n    id: 'note-1',\n    author: 'Marcus Vance',\n    authorInitials: 'MV',\n    authorColor: 'bg-info/15 text-info',\n    timestamp: '14:22 PST',\n    content:\n      'The AST parity checker runs under 340ms locally with caching. We will add a strict blocking threshold in GitHub Actions.',\n    tag: '#pipeline',\n  },\n  {\n    id: 'note-2',\n    author: 'Sofia Rossi',\n    authorInitials: 'SR',\n    authorColor: 'bg-destructive/15 text-destructive',\n    timestamp: '14:31 PST',\n    content:\n      'All color tokens now satisfy WCAG AAA for text-foreground and AA for muted-foreground across dark surfaces.',\n    tag: '#design-tokens',\n  },\n]\n\nconst INITIAL_TASKS: ActionItem[] = [\n  {\n    id: 'task-1',\n    title: 'Publish OKLCH color token specification to documentation',\n    assignee: 'Elena Rostova',\n    assigneeInitials: 'ER',\n    assigneeColor: 'bg-success/15 text-success',\n    dueDate: 'Aug 24, 2026',\n    priority: 'High',\n    completed: true,\n  },\n  {\n    id: 'task-2',\n    title: 'Configure AST parity tests in GitHub Actions CI workflow',\n    assignee: 'Marcus Vance',\n    assigneeInitials: 'MV',\n    assigneeColor: 'bg-info/15 text-info',\n    dueDate: 'Aug 26, 2026',\n    priority: 'Urgent',\n    completed: false,\n  },\n  {\n    id: 'task-3',\n    title: 'Draft block wireframes for Healthcare & HRMS verticals',\n    assignee: 'Sarah Jenkins',\n    assigneeInitials: 'SJ',\n    assigneeColor: 'bg-chart-1/15 text-chart-1',\n    dueDate: 'Aug 28, 2026',\n    priority: 'Medium',\n    completed: false,\n  },\n  {\n    id: 'task-4',\n    title: 'Benchmark bundle size delta across 50+ imported primitives',\n    assignee: 'David Chen',\n    assigneeInitials: 'DC',\n    assigneeColor: 'bg-warning/15 text-warning',\n    dueDate: 'Sep 02, 2026',\n    priority: 'Low',\n    completed: false,\n  },\n]\n\nconst INITIAL_DECISIONS: KeyDecision[] = [\n  {\n    id: 'dec-1',\n    number: 1,\n    title: 'Adopt flat registryDependencies URLs across all 300+ items',\n    context:\n      'Declaring flat JSON URLs eliminates circular dependency warnings and simplifies downstream registry resolver graphs.',\n    status: 'Adopted',\n    decidedBy: 'Elena Rostova',\n    time: '14:18 PST',\n  },\n  {\n    id: 'dec-2',\n    number: 2,\n    title: 'Enforce strict 120-char line width & no-semicolons styleguide',\n    context:\n      'Standardizes AST transpilation outputs so generated Vue SFC and React TSX items maintain identical formatting invariants.',\n    status: 'Adopted',\n    decidedBy: 'Squad Consensus',\n    time: '14:32 PST',\n  },\n  {\n    id: 'dec-3',\n    number: 3,\n    title: 'Deprecate legacy /r/nuxt/ aliases by end of Q3',\n    context:\n      'Consumers will be directed to unified /r/vue/ endpoints while maintaining backwards-compatible 301 redirects.',\n    status: 'Under Review',\n    decidedBy: 'Sarah Jenkins',\n    time: '14:45 PST',\n  },\n]\n\nexport function MeetingAgendaNotes({ className }: MeetingAgendaNotesProps) {\n  const [copiedRoomLink, setCopiedRoomLink] = React.useState(false)\n  const [copiedNotes, setCopiedNotes] = React.useState(false)\n  const [copiedSnippet, setCopiedSnippet] = React.useState(false)\n\n  const [attendees] = React.useState<Attendee[]>(INITIAL_ATTENDEES)\n  const [agendaTopics] = React.useState<AgendaTopic[]>(INITIAL_TOPICS)\n  const [liveNotes, setLiveNotes] = React.useState<NoteEntry[]>(INITIAL_NOTES)\n  const [newNoteDraft, setNewNoteDraft] = React.useState('')\n  const [newNoteTag, setNewNoteTag] = React.useState('#architecture')\n\n  const [actionItems, setActionItems] = React.useState<ActionItem[]>(INITIAL_TASKS)\n  const [newTaskTitle, setNewTaskTitle] = React.useState('')\n  const [newTaskAssignee, setNewTaskAssignee] = React.useState('Alex Rivera')\n  const [newTaskPriority, setNewTaskPriority] = React.useState<'Urgent' | 'High' | 'Medium' | 'Low'>('Medium')\n\n  const [keyDecisions] = React.useState<KeyDecision[]>(INITIAL_DECISIONS)\n\n  const completedTasksCount = actionItems.filter((t) => t.completed).length\n  const totalTasksCount = actionItems.length\n  const completionPercentage = totalTasksCount === 0 ? 0 : Math.round((completedTasksCount / totalTasksCount) * 100)\n\n  const copyRoomLink = () => {\n    navigator.clipboard?.writeText('https://zoom.us/j/4829017734')\n    setCopiedRoomLink(true)\n    setTimeout(() => setCopiedRoomLink(false), 2000)\n  }\n\n  const copyCodeSnippet = () => {\n    const code = `export default defineRegistryItem({\n  name: 'meeting-agenda-notes',\n  type: 'registry:block',\n  categories: ['productivity', 'collaboration'],\n  framework: 'react',\n  dependencies: ['lucide-react'],\n  registryDependencies: [\n    'https://uipkge.dev/r/avatar.json',\n    'https://uipkge.dev/r/badge.json',\n    'https://uipkge.dev/r/button.json',\n    'https://uipkge.dev/r/card.json',\n    'https://uipkge.dev/r/checkbox.json',\n    'https://uipkge.dev/r/separator.json',\n  ],\n})`\n    navigator.clipboard?.writeText(code)\n    setCopiedSnippet(true)\n    setTimeout(() => setCopiedSnippet(false), 2000)\n  }\n\n  const exportNotesMarkdown = () => {\n    const md = `# Q3 Product Architecture & Monorepo Scaling Sync\n**Date:** Friday, Aug 21, 2026 · 14:00 - 15:00 PST\n**Meeting Room:** Zoom Room #482-901\n**Attendees:** Elena Rostova (Host), Marcus Vance, Sarah Jenkins, David Chen, Sofia Rossi, Alex Rivera\n\n---\n\n## 📋 Timeboxed Agenda\n- [x] **OKLCH Token Migration Status** (15m · 14:00 - 14:15) - Elena Rostova\n- [x] **Dual-Framework AST Verification Pipeline** (20m · 14:15 - 14:35) - Marcus Vance [ACTIVE]\n- [ ] **100-Block Registry Expansion Strategy** (15m · 14:35 - 14:50) - Sarah Jenkins\n- [ ] **Q&A & Retrospective** (10m · 14:50 - 15:00) - Open Floor\n\n---\n\n## 💡 Key Architectural Decisions\n1. **Adopt flat registryDependencies URLs across all 300+ items** [Adopted]\n   - *Decided by:* Elena Rostova · 14:18 PST\n   - *Context:* Eliminates circular dependency warnings in shadcn resolver.\n2. **Enforce strict 120-char line width & no-semicolons styleguide** [Adopted]\n   - *Decided by:* Squad Consensus · 14:32 PST\n   - *Context:* Standardizes AST transpilation outputs across Vue & React.\n3. **Deprecate legacy /r/nuxt/ aliases by end of Q3** [Under Review]\n   - *Decided by:* Sarah Jenkins · 14:45 PST\n   - *Context:* Directs consumers to unified /r/vue/ endpoints.\n\n---\n\n## ✅ Action Items\n${actionItems\n  .map(\n    (task) =>\n      `- [${task.completed ? 'x' : ' '}] **${task.title}** (Assignee: @${task.assignee}, Due: ${task.dueDate}, Priority: ${task.priority})`,\n  )\n  .join('\\n')}\n`\n    navigator.clipboard?.writeText(md)\n    setCopiedNotes(true)\n    setTimeout(() => setCopiedNotes(false), 2000)\n  }\n\n  const toggleTask = (id: string, checked: boolean) => {\n    setActionItems((prev) => prev.map((item) => (item.id === id ? { ...item, completed: checked } : item)))\n  }\n\n  const addTask = () => {\n    if (!newTaskTitle.trim()) return\n    const attendee = attendees.find((a) => a.name === newTaskAssignee) || attendees[0]\n    setActionItems((prev) => [\n      ...prev,\n      {\n        id: `task-${Date.now()}`,\n        title: newTaskTitle.trim(),\n        assignee: attendee.name,\n        assigneeInitials: attendee.initials,\n        assigneeColor: attendee.colorClass,\n        dueDate: 'Aug 30, 2026',\n        priority: newTaskPriority,\n        completed: false,\n      },\n    ])\n    setNewTaskTitle('')\n  }\n\n  const addNote = () => {\n    if (!newNoteDraft.trim()) return\n    setLiveNotes((prev) => [\n      ...prev,\n      {\n        id: `note-${Date.now()}`,\n        author: 'Elena Rostova',\n        authorInitials: 'ER',\n        authorColor: 'bg-success/15 text-success',\n        timestamp: 'Just now',\n        content: newNoteDraft.trim(),\n        tag: newNoteTag,\n      },\n    ])\n    setNewNoteDraft('')\n  }\n\n  return (\n    <div data-slot=\"meeting-agenda-notes\" className={cn('text-foreground w-full space-y-6', className)}>\n      {/* Meeting Header Card */}\n      <Card className=\"border-border bg-card shadow-xs\">\n        <CardContent className=\"space-y-5 p-4 sm:p-6\">\n          {/* Top Badges & Status Row */}\n          <div className=\"flex flex-wrap items-center justify-between gap-3\">\n            <div className=\"flex flex-wrap items-center gap-2\">\n              <Badge variant=\"secondary\" className=\"gap-1.5 px-2.5 py-1 text-xs font-medium\">\n                <span className=\"bg-destructive size-2 animate-pulse rounded-full\" />\n                <span className=\"font-mono tracking-tight tabular-nums\">REC · 45:12</span>\n              </Badge>\n              <Badge variant=\"outline\" className=\"text-muted-foreground text-xs\">\n                Architecture Sync\n              </Badge>\n              <Badge variant=\"outline\" className=\"text-muted-foreground text-xs\">\n                Bi-Weekly Cadence\n              </Badge>\n            </div>\n\n            {/* Meeting Actions */}\n            <div className=\"flex flex-wrap items-center gap-2\">\n              <Button\n                variant=\"outline\"\n                size=\"sm\"\n                className=\"h-8 gap-1.5 text-xs shadow-xs\"\n                onClick={exportNotesMarkdown}\n              >\n                {copiedNotes ? (\n                  <Check className=\"text-success size-3.5\" />\n                ) : (\n                  <FileDown className=\"text-muted-foreground size-3.5\" />\n                )}\n                {copiedNotes ? 'Notes Copied!' : 'Export Notes Markdown'}\n              </Button>\n              <Button size=\"sm\" className=\"h-8 gap-1.5 text-xs shadow-xs\">\n                <Video className=\"size-3.5\" />\n                Join Call\n              </Button>\n            </div>\n          </div>\n\n          {/* Meeting Title & Meta Info */}\n          <div className=\"space-y-2\">\n            <h1 className=\"text-foreground text-xl font-bold tracking-tight sm:text-2xl\">\n              Q3 Product Architecture & Monorepo Scaling Sync\n            </h1>\n\n            <div className=\"text-muted-foreground flex flex-wrap items-center gap-x-5 gap-y-2 text-xs\">\n              {/* Date & Time */}\n              <div className=\"flex items-center gap-1.5\">\n                <Calendar className=\"text-foreground/70 size-3.5\" />\n                <span className=\"text-foreground/90 font-medium\">Friday, Aug 21, 2026</span>\n                <span>·</span>\n                <span className=\"font-mono tabular-nums\">14:00 - 15:00 PST</span>\n              </div>\n\n              {/* Duration Badge */}\n              <div className=\"flex items-center gap-1.5\">\n                <Clock className=\"text-foreground/70 size-3.5\" />\n                <Badge variant=\"secondary\" className=\"px-2 py-0.5 font-mono text-xs tabular-nums\">\n                  60 mins · 45 mins elapsed\n                </Badge>\n              </div>\n\n              {/* Meeting Room Link */}\n              <div className=\"flex items-center gap-1.5\">\n                <Video className=\"text-foreground/70 size-3.5\" />\n                <button\n                  type=\"button\"\n                  className=\"text-foreground hover:text-primary inline-flex min-h-6 cursor-pointer items-center gap-1 font-medium transition-colors\"\n                  onClick={copyRoomLink}\n                >\n                  <span>Zoom Room #482-901</span>\n                  {copiedRoomLink ? (\n                    <Check className=\"text-success size-3\" />\n                  ) : (\n                    <Copy className=\"text-muted-foreground size-3\" />\n                  )}\n                </button>\n              </div>\n            </div>\n          </div>\n\n          <Separator className=\"bg-border/60\" />\n\n          {/* Attendee Avatars Row */}\n          <div className=\"flex flex-col justify-between gap-4 sm:flex-row sm:items-center\">\n            <div className=\"space-y-2\">\n              <div className=\"flex items-center gap-2\">\n                <span className=\"text-muted-foreground text-xs font-semibold tracking-wider uppercase\">Attendees</span>\n                <Badge variant=\"secondary\" className=\"h-4.5 px-1.5 py-0 font-mono text-xs tabular-nums\">\n                  6 Present\n                </Badge>\n              </div>\n\n              {/* Avatars with online status dots */}\n              <div className=\"flex flex-wrap items-center gap-2.5\">\n                {attendees.map((attendee) => (\n                  <div\n                    key={attendee.id}\n                    className=\"group border-border/80 bg-background/80 hover:border-border hover:bg-muted/40 relative flex items-center gap-2 rounded-full border py-1 pr-2.5 pl-1 shadow-xs transition-colors\"\n                  >\n                    <div className=\"relative flex items-center justify-center\">\n                      <Avatar size=\"sm\" className=\"size-6 text-xs\">\n                        <AvatarFallback className={attendee.colorClass}>{attendee.initials}</AvatarFallback>\n                      </Avatar>\n                      {/* Presence Status Dot */}\n                      <span\n                        className=\"border-background bg-success absolute -right-0.5 -bottom-0.5 size-2 rounded-full border-2\"\n                        title=\"Present in meeting\"\n                      />\n                    </div>\n                    <span className=\"text-foreground text-xs font-medium\">{attendee.name}</span>\n                    {attendee.isHost && (\n                      <Badge variant=\"default\" className=\"h-4 px-1 text-xs leading-none font-semibold uppercase\">\n                        Host\n                      </Badge>\n                    )}\n                  </div>\n                ))}\n              </div>\n            </div>\n\n            {/* Quick Access Code / Status */}\n            <div className=\"border-border/60 bg-muted/30 text-muted-foreground hidden items-center gap-3 rounded-lg border p-2.5 text-xs xl:flex\">\n              <Radio className=\"text-success size-4 animate-pulse\" />\n              <div>\n                <div className=\"text-foreground font-medium\">Live Transcription</div>\n                <div className=\"text-muted-foreground font-mono\">Whisper-v3 Active</div>\n              </div>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n\n      {/* 2-Column Meeting Workspace */}\n      <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-12\">\n        {/* Left Panel: Timeboxed Agenda & Rich Notes (8 cols) */}\n        <div className=\"space-y-6 lg:col-span-7 xl:col-span-8\">\n          {/* Section 1: 4 Timeboxed Agenda Topics */}\n          <Card className=\"border-border bg-card shadow-xs\">\n            <CardHeader className=\"px-5 pt-5 pb-3 sm:px-6\">\n              <div className=\"flex flex-wrap items-center justify-between gap-2\">\n                <div className=\"flex items-center gap-2\">\n                  <div className=\"bg-primary/10 text-primary flex size-7 items-center justify-center rounded-md\">\n                    <ListOrdered className=\"size-4\" />\n                  </div>\n                  <div>\n                    <CardTitle className=\"text-base font-semibold\">Timeboxed Agenda</CardTitle>\n                    <CardDescription className=\"text-xs\">\n                      4 topics structured with real-time progress indicators\n                    </CardDescription>\n                  </div>\n                </div>\n\n                {/* Time Allocation Summary */}\n                <Badge variant=\"outline\" className=\"text-muted-foreground font-mono text-xs tabular-nums\">\n                  60m Total · 45m Elapsed (75%)\n                </Badge>\n              </div>\n\n              {/* Elapsed Visual Bar */}\n              <div className=\"bg-muted mt-3 h-1.5 w-full overflow-hidden rounded-full\">\n                <div className=\"bg-primary h-full w-3/4 rounded-full\" />\n              </div>\n            </CardHeader>\n\n            <CardContent className=\"space-y-3 p-5 pt-2 sm:p-6\">\n              {agendaTopics.map((topic) => (\n                <div\n                  key={topic.id}\n                  className={cn(\n                    'group relative rounded-lg border p-4 transition-colors duration-150',\n                    topic.status === 'active'\n                      ? 'border-primary/50 bg-primary/[0.03] shadow-xs'\n                      : topic.status === 'completed'\n                        ? 'border-border/80 bg-muted/20'\n                        : 'border-border/60 bg-card hover:border-border',\n                  )}\n                >\n                  <div className=\"flex flex-col justify-between gap-3 sm:flex-row sm:items-start\">\n                    {/* Topic Details */}\n                    <div className=\"flex-1 space-y-1.5\">\n                      <div className=\"flex flex-wrap items-center gap-2\">\n                        <span className=\"bg-muted text-muted-foreground flex size-5 items-center justify-center rounded-full font-mono text-xs font-semibold\">\n                          {topic.number}\n                        </span>\n\n                        <h3 className=\"text-foreground text-sm font-semibold\">{topic.title}</h3>\n\n                        {/* Status Badges */}\n                        {topic.status === 'completed' && (\n                          <Badge variant=\"success\" className=\"gap-1 text-xs\">\n                            <CheckCircle2 className=\"text-success size-3\" />\n                            Completed\n                          </Badge>\n                        )}\n                        {topic.status === 'active' && (\n                          <Badge variant=\"default\" className=\"gap-1.5 text-xs font-medium\">\n                            <span className=\"bg-primary-foreground size-1.5 rounded-full\" />\n                            Current Topic\n                          </Badge>\n                        )}\n                        {topic.status === 'upcoming' && (\n                          <Badge variant=\"outline\" className=\"text-muted-foreground gap-1 text-xs\">\n                            <Clock className=\"size-3\" />\n                            Upcoming\n                          </Badge>\n                        )}\n                      </div>\n\n                      <p className=\"text-muted-foreground text-xs leading-relaxed\">{topic.summary}</p>\n\n                      {/* Tags */}\n                      <div className=\"flex flex-wrap items-center gap-1.5 pt-1\">\n                        {topic.tags.map((tag) => (\n                          <Badge\n                            key={tag}\n                            variant=\"secondary\"\n                            className=\"text-muted-foreground px-1.5 py-0 text-xs font-normal\"\n                          >\n                            {tag}\n                          </Badge>\n                        ))}\n                      </div>\n                    </div>\n\n                    {/* Presenter & Timebox Metadata */}\n                    <div className=\"border-border/50 flex shrink-0 items-center justify-between gap-1.5 border-t pt-2 sm:flex-col sm:items-end sm:border-t-0 sm:pt-0\">\n                      <div className=\"flex items-center gap-1.5\">\n                        <span className=\"text-muted-foreground font-mono text-xs tabular-nums\">{topic.duration}</span>\n                        <span className=\"text-muted-foreground font-mono text-xs tabular-nums\">{topic.timeRange}</span>\n                      </div>\n\n                      <div className=\"flex items-center gap-1.5\">\n                        <Avatar size=\"xs\" className=\"size-4.5 text-xs\">\n                          <AvatarFallback className=\"bg-muted text-muted-foreground text-xs font-semibold\">\n                            {topic.leadInitials}\n                          </AvatarFallback>\n                        </Avatar>\n                        <span className=\"text-foreground/80 text-xs font-medium\">{topic.lead}</span>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              ))}\n            </CardContent>\n          </Card>\n\n          {/* Section 2: Rich Discussion Notes Area */}\n          <Card className=\"border-border bg-card shadow-xs\">\n            <CardHeader className=\"px-5 pt-5 pb-3 sm:px-6\">\n              <div className=\"flex flex-wrap items-center justify-between gap-2\">\n                <div className=\"flex items-center gap-2\">\n                  <div className=\"bg-primary/10 text-primary flex size-7 items-center justify-center rounded-md\">\n                    <FileText className=\"size-4\" />\n                  </div>\n                  <div>\n                    <CardTitle className=\"text-base font-semibold\">Discussion Notes & Technical Blueprint</CardTitle>\n                    <CardDescription className=\"text-xs\">\n                      Structured architectural takeaways and runtime benchmarks\n                    </CardDescription>\n                  </div>\n                </div>\n\n                <span className=\"text-muted-foreground font-mono text-xs tabular-nums\">\n                  Last edited 2m ago by Elena Rostova\n                </span>\n              </div>\n            </CardHeader>\n\n            <CardContent className=\"space-y-5 p-5 pt-2 sm:p-6\">\n              {/* Context Callout Box */}\n              <div className=\"border-border bg-muted/40 space-y-1 rounded-lg border p-3.5\">\n                <div className=\"text-foreground flex items-center gap-1.5 text-xs font-semibold\">\n                  <FileText className=\"text-primary size-3.5\" />\n                  Core Monorepo Mandate\n                </div>\n                <p className=\"text-muted-foreground text-xs leading-relaxed\">\n                  Components are the product, not an npm library. Consumers run{' '}\n                  <code className=\"bg-muted text-foreground rounded px-1.5 py-0.5 font-mono font-medium\">\n                    npx shadcn add &lt;url&gt;\n                  </code>{' '}\n                  and own the code directly. All block primitives must compose raw layouts without baking rigid data\n                  arrays into primitives.\n                </p>\n              </div>\n\n              {/* Structured Takeaways Section */}\n              <div className=\"space-y-2.5\">\n                <h4 className=\"text-muted-foreground text-xs font-bold tracking-wider uppercase\">\n                  Architectural Takeaways\n                </h4>\n\n                <div className=\"space-y-2\">\n                  <div className=\"border-border/60 bg-card flex items-start gap-2.5 rounded-md border p-3 shadow-xs\">\n                    <div className=\"bg-success/10 text-success mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full\">\n                      <Check className=\"size-3\" />\n                    </div>\n                    <div className=\"space-y-0.5 text-xs\">\n                      <span className=\"text-foreground font-semibold\">Zero Runtime Overhead Delivery Model</span>\n                      <p className=\"text-muted-foreground leading-relaxed\">\n                        Zero build-time vendor lock-in. Primitives handle focus rings, keyboard navigation, and\n                        accessibility semantics while leaving styling tokens fully customizable by end consumers.\n                      </p>\n                    </div>\n                  </div>\n\n                  <div className=\"border-border/60 bg-card flex items-start gap-2.5 rounded-md border p-3 shadow-xs\">\n                    <div className=\"bg-info/10 text-info mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full\">\n                      <Check className=\"size-3\" />\n                    </div>\n                    <div className=\"space-y-0.5 text-xs\">\n                      <span className=\"text-foreground font-semibold\">Perceptually Uniform OKLCH Palette</span>\n                      <p className=\"text-muted-foreground leading-relaxed\">\n                        Color spaces mapped directly to standard OKLCH coordinates via Tailwind CSS v4{' '}\n                        <code className=\"bg-muted text-foreground rounded px-1.5 py-0.5 font-mono\">@theme inline</code>{' '}\n                        tokens, ensuring high-fidelity rendering across Apple P3 displays.\n                      </p>\n                    </div>\n                  </div>\n\n                  <div className=\"border-border/60 bg-card flex items-start gap-2.5 rounded-md border p-3 shadow-xs\">\n                    <div className=\"bg-primary/10 text-primary mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full\">\n                      <Check className=\"size-3\" />\n                    </div>\n                    <div className=\"space-y-0.5 text-xs\">\n                      <span className=\"text-foreground font-semibold\">Flat Registry Dependencies Graph</span>\n                      <p className=\"text-muted-foreground leading-relaxed\">\n                        All{' '}\n                        <code className=\"bg-muted text-foreground rounded px-1.5 py-0.5 font-mono\">\n                          registryDependencies\n                        </code>{' '}\n                        declare flat URLs (\n                        <code className=\"bg-muted text-foreground rounded px-1 py-0.5 font-mono\">\n                          https://uipkge.dev/r/button.json\n                        </code>\n                        ), eliminating nested resolver locks in downstream CLIs.\n                      </p>\n                    </div>\n                  </div>\n                </div>\n              </div>\n\n              {/* Code Architecture Blueprint */}\n              <div className=\"space-y-2\">\n                <div className=\"flex items-center justify-between\">\n                  <h4 className=\"text-muted-foreground text-xs font-bold tracking-wider uppercase\">\n                    Manifest Blueprint\n                  </h4>\n                  <button\n                    type=\"button\"\n                    className=\"text-muted-foreground hover:text-foreground flex min-h-6 cursor-pointer items-center gap-1 text-xs transition-colors\"\n                    onClick={copyCodeSnippet}\n                  >\n                    {copiedSnippet ? <Check className=\"text-success size-3\" /> : <Copy className=\"size-3\" />}\n                    <span className=\"font-mono text-xs\">{copiedSnippet ? 'Copied' : 'Copy Manifest'}</span>\n                  </button>\n                </div>\n\n                <div className=\"border-border/80 bg-muted/60 relative overflow-hidden rounded-lg border p-3 font-mono text-xs\">\n                  <pre className=\"text-foreground/90 overflow-x-auto leading-relaxed\">\n                    <code>\n                      <span className=\"text-primary font-semibold\">export default</span>{' '}\n                      <span className=\"text-info\">defineRegistryItem</span>(\n                      {`{\n  name: `}\n                      <span className=\"text-success\">'meeting-agenda-notes'</span>\n                      {`,\n  type: `}\n                      <span className=\"text-success\">'registry:block'</span>\n                      {`,\n  categories: [`}\n                      <span className=\"text-success\">'productivity'</span>\n                      {`, `}\n                      <span className=\"text-success\">'collaboration'</span>\n                      {`],\n  dependencies: [`}\n                      <span className=\"text-success\">'lucide-react'</span>\n                      {`],\n  registryDependencies: [\n    `}\n                      <span className=\"text-warning\">'https://uipkge.dev/r/avatar.json'</span>\n                      {`,\n    `}\n                      <span className=\"text-warning\">'https://uipkge.dev/r/badge.json'</span>\n                      {`,\n    `}\n                      <span className=\"text-warning\">'https://uipkge.dev/r/button.json'</span>\n                      {`,\n    `}\n                      <span className=\"text-warning\">'https://uipkge.dev/r/card.json'</span>\n                      {`,\n    `}\n                      <span className=\"text-warning\">'https://uipkge.dev/r/checkbox.json'</span>\n                      {`,\n    `}\n                      <span className=\"text-warning\">'https://uipkge.dev/r/separator.json'</span>\n                      {`,\n  ],\n}`}\n                      )\n                    </code>\n                  </pre>\n                </div>\n              </div>\n\n              {/* Live Meeting Annotations & Comment Thread */}\n              <div className=\"space-y-3 pt-2\">\n                <h4 className=\"text-muted-foreground text-xs font-bold tracking-wider uppercase\">Live Annotations</h4>\n\n                <div className=\"space-y-2.5\">\n                  {liveNotes.map((note) => (\n                    <div\n                      key={note.id}\n                      className=\"border-border/60 bg-muted/20 flex items-start gap-2.5 rounded-lg border p-3\"\n                    >\n                      <Avatar size=\"sm\" className=\"size-6 shrink-0 text-xs\">\n                        <AvatarFallback className={note.authorColor}>{note.authorInitials}</AvatarFallback>\n                      </Avatar>\n\n                      <div className=\"flex-1 space-y-1\">\n                        <div className=\"flex items-center justify-between gap-2\">\n                          <div className=\"flex items-center gap-1.5\">\n                            <span className=\"text-foreground text-xs font-semibold\">{note.author}</span>\n                            <Badge variant=\"outline\" className=\"text-muted-foreground px-1 py-0 font-mono text-xs\">\n                              {note.tag}\n                            </Badge>\n                          </div>\n                          <span className=\"text-muted-foreground font-mono text-xs tabular-nums\">{note.timestamp}</span>\n                        </div>\n                        <p className=\"text-foreground/90 text-xs leading-relaxed\">{note.content}</p>\n                      </div>\n                    </div>\n                  ))}\n                </div>\n\n                {/* Inline Note Composer */}\n                <div className=\"flex flex-col items-stretch gap-2 pt-2 sm:flex-row sm:items-center\">\n                  <div className=\"relative flex-1\">\n                    <input\n                      value={newNoteDraft}\n                      onChange={(e) => setNewNoteDraft(e.target.value)}\n                      type=\"text\"\n                      placeholder=\"Append architecture note or observation...\"\n                      className=\"border-input bg-background text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/40 h-8 w-full rounded-md border px-3 py-1 text-xs shadow-xs outline-none focus-visible:ring-2\"\n                      onKeyDown={(e) => {\n                        if (e.key === 'Enter') addNote()\n                      }}\n                    />\n                  </div>\n\n                  <div className=\"flex items-center gap-1.5\">\n                    <select\n                      value={newNoteTag}\n                      onChange={(e) => setNewNoteTag(e.target.value)}\n                      className=\"border-input bg-background text-foreground focus-visible:border-ring focus-visible:ring-ring/40 h-8 rounded-md border px-2 text-xs shadow-xs outline-none focus-visible:ring-2\"\n                    >\n                      <option value=\"#architecture\">#architecture</option>\n                      <option value=\"#pipeline\">#pipeline</option>\n                      <option value=\"#decision\">#decision</option>\n                      <option value=\"#action\">#action</option>\n                    </select>\n\n                    <Button\n                      size=\"sm\"\n                      variant=\"secondary\"\n                      className=\"h-8 gap-1 text-xs shadow-xs\"\n                      disabled={!newNoteDraft.trim()}\n                      onClick={addNote}\n                    >\n                      <Plus className=\"size-3.5\" />\n                      Post\n                    </Button>\n                  </div>\n                </div>\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n\n        {/* Right Sidebar: Action Items, Decisions, & Meta (4-5 cols) */}\n        <div className=\"space-y-6 lg:col-span-5 xl:col-span-4\">\n          {/* Action Items Checklist Card */}\n          <Card className=\"border-border bg-card shadow-xs\">\n            <CardHeader className=\"px-5 pt-5 pb-3\">\n              <div className=\"flex items-center justify-between gap-2\">\n                <div className=\"flex items-center gap-2\">\n                  <div className=\"bg-success/10 text-success flex size-7 items-center justify-center rounded-md\">\n                    <UserCheck className=\"size-4\" />\n                  </div>\n                  <div>\n                    <CardTitle className=\"text-base font-semibold\">Action Items</CardTitle>\n                    <CardDescription className=\"text-xs\">Assigned deliverables & deadlines</CardDescription>\n                  </div>\n                </div>\n\n                {/* Completion Counter Badge */}\n                <Badge variant=\"secondary\" className=\"font-mono text-xs tabular-nums\">\n                  {completedTasksCount}/{totalTasksCount} Done ({completionPercentage}%)\n                </Badge>\n              </div>\n\n              {/* Progress bar */}\n              <div className=\"bg-muted mt-3 h-1.5 w-full overflow-hidden rounded-full\">\n                <div\n                  className=\"bg-success h-full rounded-full transition-[width] duration-300\"\n                  style={{ width: `${completionPercentage}%` }}\n                />\n              </div>\n            </CardHeader>\n\n            <CardContent className=\"space-y-4 p-5 pt-2\">\n              {/* Checklist items */}\n              <div className=\"space-y-2.5\">\n                {actionItems.map((task) => (\n                  <div\n                    key={task.id}\n                    className={cn(\n                      'group flex items-start gap-3 rounded-lg border p-3 transition-colors',\n                      task.completed\n                        ? 'border-border/40 bg-muted/20 opacity-75'\n                        : 'border-border/80 bg-card hover:border-border hover:bg-muted/10',\n                    )}\n                  >\n                    {/* Checkbox */}\n                    <div className=\"pt-0.5\">\n                      <Checkbox\n                        id={task.id}\n                        checked={task.completed}\n                        onCheckedChange={(checked) => toggleTask(task.id, Boolean(checked))}\n                      />\n                    </div>\n\n                    {/* Task content */}\n                    <div className=\"flex-1 space-y-1.5\">\n                      <label\n                        htmlFor={task.id}\n                        className={cn(\n                          'block cursor-pointer text-xs leading-relaxed font-medium transition-colors select-none',\n                          task.completed ? 'text-muted-foreground line-through' : 'text-foreground',\n                        )}\n                      >\n                        {task.title}\n                      </label>\n\n                      <div className=\"text-muted-foreground flex flex-wrap items-center justify-between gap-1.5 text-xs\">\n                        {/* Assignee */}\n                        <div className=\"flex items-center gap-1.5\">\n                          <Avatar size=\"xs\" className=\"size-4 text-xs\">\n                            <AvatarFallback className={cn('text-xs', task.assigneeColor)}>\n                              {task.assigneeInitials}\n                            </AvatarFallback>\n                          </Avatar>\n                          <span className=\"text-foreground/80 text-xs font-medium\">{task.assignee}</span>\n                        </div>\n\n                        {/* Priority & Date */}\n                        <div className=\"flex items-center gap-1.5\">\n                          <Badge\n                            variant={\n                              task.priority === 'Urgent' || task.priority === 'High'\n                                ? 'destructive'\n                                : task.priority === 'Medium'\n                                  ? 'warning'\n                                  : 'secondary'\n                            }\n                            className=\"h-4.5 px-1.5 text-xs font-semibold uppercase\"\n                          >\n                            {task.priority}\n                          </Badge>\n                          <span className=\"text-muted-foreground font-mono text-xs tabular-nums\">{task.dueDate}</span>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                ))}\n              </div>\n\n              {/* Quick Add Action Item */}\n              <div className=\"border-border/80 bg-muted/20 space-y-2 rounded-lg border border-dashed p-3\">\n                <input\n                  value={newTaskTitle}\n                  onChange={(e) => setNewTaskTitle(e.target.value)}\n                  type=\"text\"\n                  placeholder=\"New action item description...\"\n                  className=\"border-input bg-background text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring h-7 w-full rounded border px-2.5 text-xs shadow-xs outline-none focus-visible:ring-1\"\n                  onKeyDown={(e) => {\n                    if (e.key === 'Enter') addTask()\n                  }}\n                />\n\n                <div className=\"flex items-center justify-between gap-2\">\n                  <select\n                    value={newTaskAssignee}\n                    onChange={(e) => setNewTaskAssignee(e.target.value)}\n                    className=\"border-input bg-background text-foreground h-7 rounded border px-2 text-xs shadow-xs outline-none\"\n                  >\n                    {attendees.map((att) => (\n                      <option key={att.id} value={att.name}>\n                        {att.name}\n                      </option>\n                    ))}\n                  </select>\n\n                  <select\n                    value={newTaskPriority}\n                    onChange={(e) => setNewTaskPriority(e.target.value as 'Urgent' | 'High' | 'Medium' | 'Low')}\n                    className=\"border-input bg-background text-foreground h-7 rounded border px-2 text-xs shadow-xs outline-none\"\n                  >\n                    <option value=\"Urgent\">Urgent</option>\n                    <option value=\"High\">High</option>\n                    <option value=\"Medium\">Medium</option>\n                    <option value=\"Low\">Low</option>\n                  </select>\n\n                  <Button\n                    size=\"xs\"\n                    variant=\"default\"\n                    className=\"h-7 gap-1 text-xs\"\n                    disabled={!newTaskTitle.trim()}\n                    onClick={addTask}\n                  >\n                    <Plus className=\"size-3\" />\n                    Add\n                  </Button>\n                </div>\n              </div>\n            </CardContent>\n          </Card>\n\n          {/* Key Decisions Log Card */}\n          <Card className=\"border-border bg-card shadow-xs\">\n            <CardHeader className=\"px-5 pt-5 pb-3\">\n              <div className=\"flex items-center justify-between gap-2\">\n                <div className=\"flex items-center gap-2\">\n                  <div className=\"bg-primary/10 text-primary flex size-7 items-center justify-center rounded-md\">\n                    <CheckCircle2 className=\"size-4\" />\n                  </div>\n                  <div>\n                    <CardTitle className=\"text-base font-semibold\">Key Decisions Log</CardTitle>\n                    <CardDescription className=\"text-xs\">Recorded architectural consensus</CardDescription>\n                  </div>\n                </div>\n\n                <Badge variant=\"outline\" className=\"text-muted-foreground font-mono text-xs tabular-nums\">\n                  {keyDecisions.length} Recorded\n                </Badge>\n              </div>\n            </CardHeader>\n\n            <CardContent className=\"space-y-3 p-5 pt-2\">\n              {keyDecisions.map((decision) => (\n                <div key={decision.id} className=\"border-border/80 bg-card space-y-2 rounded-lg border p-3.5 shadow-xs\">\n                  <div className=\"flex items-start justify-between gap-2\">\n                    <div className=\"flex items-center gap-1.5\">\n                      <span className=\"text-muted-foreground font-mono text-xs font-bold\">D-0{decision.number}</span>\n                      <Badge\n                        variant={decision.status === 'Adopted' ? 'success' : 'warning'}\n                        className=\"h-4.5 px-1.5 text-xs font-semibold uppercase\"\n                      >\n                        {decision.status}\n                      </Badge>\n                    </div>\n\n                    <span className=\"text-muted-foreground font-mono text-xs tabular-nums\">{decision.time}</span>\n                  </div>\n\n                  <h4 className=\"text-foreground text-xs leading-snug font-semibold\">{decision.title}</h4>\n\n                  <p className=\"text-muted-foreground text-xs leading-relaxed\">{decision.context}</p>\n\n                  <div className=\"text-muted-foreground border-border/40 flex items-center gap-1 border-t pt-1 text-xs\">\n                    <span>Decided by:</span>\n                    <span className=\"text-foreground font-medium\">{decision.decidedBy}</span>\n                  </div>\n                </div>\n              ))}\n            </CardContent>\n          </Card>\n\n          {/* Meeting Metadata & Shared Resources Card */}\n          <Card className=\"border-border bg-card shadow-xs\">\n            <CardHeader className=\"px-5 pt-4 pb-2\">\n              <CardTitle className=\"text-muted-foreground text-xs font-bold tracking-wider uppercase\">\n                Session Resources & Security\n              </CardTitle>\n            </CardHeader>\n\n            <CardContent className=\"space-y-3 p-5 pt-1\">\n              <div className=\"space-y-2 text-xs\">\n                <div className=\"text-muted-foreground flex items-center justify-between\">\n                  <span className=\"flex items-center gap-1.5\">\n                    <Lock className=\"text-foreground/70 size-3.5\" />\n                    Access Level\n                  </span>\n                  <span className=\"text-foreground font-medium\">Internal (SSO Auth)</span>\n                </div>\n\n                <div className=\"text-muted-foreground flex items-center justify-between\">\n                  <span className=\"flex items-center gap-1.5\">\n                    <Calendar className=\"text-foreground/70 size-3.5\" />\n                    Next Sync\n                  </span>\n                  <span className=\"text-foreground font-mono font-medium tabular-nums\">Aug 28 · 14:00 PST</span>\n                </div>\n              </div>\n\n              <Separator className=\"bg-border/60\" />\n\n              {/* Linked Resources */}\n              <div className=\"space-y-1.5\">\n                <span className=\"text-muted-foreground text-xs font-semibold\">Attached Artifacts</span>\n\n                <div className=\"space-y-1\">\n                  <a\n                    href=\"#artifacts\"\n                    className=\"text-foreground hover:bg-muted group flex items-center justify-between rounded-md p-1.5 text-xs transition-colors\"\n                  >\n                    <span className=\"flex items-center gap-2\">\n                      <FileSpreadsheet className=\"text-success size-3.5\" />\n                      <span>OKLCH Token Audit Matrix.xlsx</span>\n                    </span>\n                    <ExternalLink className=\"text-muted-foreground group-hover:text-foreground size-3 transition-colors\" />\n                  </a>\n\n                  <a\n                    href=\"#artifacts\"\n                    className=\"text-foreground hover:bg-muted group flex items-center justify-between rounded-md p-1.5 text-xs transition-colors\"\n                  >\n                    <span className=\"flex items-center gap-2\">\n                      <GitPullRequest className=\"text-chart-2 size-3.5\" />\n                      <span>PR #412: Flat Dependency Resolution</span>\n                    </span>\n                    <ExternalLink className=\"text-muted-foreground group-hover:text-foreground size-3 transition-colors\" />\n                  </a>\n                </div>\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n      </div>\n    </div>\n  )\n}\n",
      "type": "registry:block",
      "target": "~/components/blocks/MeetingAgendaNotes.tsx"
    }
  ],
  "dependencies": [
    "lucide-react"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/react/avatar.json",
    "https://uipkge.dev/r/react/badge.json",
    "https://uipkge.dev/r/react/button.json",
    "https://uipkge.dev/r/react/card.json",
    "https://uipkge.dev/r/react/checkbox.json",
    "https://uipkge.dev/r/react/separator.json"
  ],
  "description": "Linear and Notion style structured meeting document with attendee avatars, timeboxed agenda topics, rich discussion notes, interactive action items checklist, and key decisions log.",
  "categories": [
    "productivity",
    "app",
    "collaboration"
  ]
}