{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "mcpcn",
  "homepage": "https://mcpcn.dev",
  "items": [
    {
      "name": "apps-sdk-theme",
      "type": "registry:style",
      "title": "Apps SDK Theme",
      "description": "A scoped OpenAI Apps SDK UI compatibility theme for mcpcn blocks.",
      "author": "mcpcn",
      "categories": ["style"],
      "cssVars": {
        "theme": {
          "color-app-text": "var(--apps-sdk-text)",
          "color-app-text-secondary": "var(--apps-sdk-text-secondary)",
          "color-app-text-tertiary": "var(--apps-sdk-text-tertiary)",
          "color-app-surface": "var(--apps-sdk-surface)",
          "color-app-surface-secondary": "var(--apps-sdk-surface-secondary)",
          "color-app-surface-tertiary": "var(--apps-sdk-surface-tertiary)",
          "color-app-surface-elevated": "var(--apps-sdk-surface-elevated)",
          "color-app-border": "var(--apps-sdk-border)",
          "color-app-border-subtle": "var(--apps-sdk-border-subtle)",
          "color-app-border-strong": "var(--apps-sdk-border-strong)",
          "color-app-info": "var(--apps-sdk-info)",
          "color-app-info-soft": "var(--apps-sdk-info-soft)",
          "color-app-success": "var(--apps-sdk-success)",
          "color-app-success-soft": "var(--apps-sdk-success-soft)",
          "color-app-warning": "var(--apps-sdk-warning)",
          "color-app-warning-soft": "var(--apps-sdk-warning-soft)",
          "color-app-danger": "var(--apps-sdk-danger)",
          "color-app-danger-soft": "var(--apps-sdk-danger-soft)",
          "color-app-discovery": "var(--apps-sdk-discovery)",
          "color-app-discovery-soft": "var(--apps-sdk-discovery-soft)",
          "radius-app-card": "var(--apps-sdk-card-radius)"
        }
      },
      "files": [
        {
          "path": "styles/apps-sdk.css",
          "type": "registry:style",
          "target": "styles/apps-sdk.css"
        }
      ],
      "category": "style"
    },
    {
      "name": "contact-form",
      "type": "registry:block",
      "title": "Contact Form",
      "description": "A complete contact form with name fields, phone with country selector, email, message textarea, and file attachment.",
      "author": "mcpcn",
      "categories": ["form"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "input",
        "label",
        "popover",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/form/contact-form.tsx",
          "type": "registry:block",
          "target": "components/ui/contact-form.tsx"
        }
      ],
      "category": "form"
    },
    {
      "name": "date-time-picker",
      "type": "registry:block",
      "title": "Date & Time Picker",
      "description": "A Calendly-style date and time picker with calendar, available time slots, and timezone display.",
      "author": "mcpcn",
      "categories": ["form"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "popover",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/form/date-time-picker.tsx",
          "type": "registry:block",
          "target": "components/ui/date-time-picker.tsx"
        }
      ],
      "category": "form"
    },
    {
      "name": "issue-report-form",
      "type": "registry:block",
      "title": "Issue Report Form",
      "description": "A compact issue reporting form for team members with categories, impact/urgency levels, and file attachments.",
      "author": "mcpcn",
      "categories": ["form"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "input",
        "label",
        "select",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/form/issue-report-form.tsx",
          "type": "registry:block",
          "target": "components/ui/issue-report-form.tsx"
        }
      ],
      "category": "form"
    },
    {
      "name": "order-confirm",
      "type": "registry:block",
      "title": "Order Confirm",
      "description": "Order confirmation with product image, delivery info, and confirm action.",
      "author": "mcpcn",
      "categories": ["payment"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/apps-sdk-theme.json",
        "https://mcpcn.dev/r/shared-types.json"
      ],
      "files": [
        {
          "path": "registry/payment/order-confirm.tsx",
          "type": "registry:block",
          "target": "components/ui/order-confirm.tsx"
        }
      ],
      "category": "payment"
    },
    {
      "name": "payment-confirmed",
      "type": "registry:block",
      "title": "Payment Confirmed",
      "description": "Payment confirmation card with product image, price, delivery info, and tracking button. Supports default and compressed variants.",
      "author": "mcpcn",
      "categories": ["payment"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/apps-sdk-theme.json",
        "https://mcpcn.dev/r/shared-types.json"
      ],
      "files": [
        {
          "path": "registry/payment/payment-confirmed.tsx",
          "type": "registry:block",
          "target": "components/ui/payment-confirmed.tsx"
        }
      ],
      "category": "payment"
    },
    {
      "name": "product-list",
      "type": "registry:block",
      "title": "Product List",
      "description": "Product list with list, grid, carousel, and picker variants.",
      "author": "mcpcn",
      "categories": ["list"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/list/product-list.tsx",
          "type": "registry:block",
          "target": "components/ui/product-list.tsx"
        }
      ],
      "category": "list"
    },
    {
      "name": "option-list",
      "type": "registry:block",
      "title": "Option List",
      "description": "Tag-style option selector with single or multiple selection modes.",
      "author": "mcpcn",
      "categories": ["selection"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/selection/option-list.tsx",
          "type": "registry:block",
          "target": "components/ui/option-list.tsx"
        }
      ],
      "category": "selection"
    },
    {
      "name": "amount-input",
      "type": "registry:block",
      "title": "Amount Input",
      "description": "Amount input with increment/decrement buttons and preset values.",
      "author": "mcpcn",
      "categories": ["payment"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/payment/amount-input.tsx",
          "type": "registry:block",
          "target": "components/ui/amount-input.tsx"
        }
      ],
      "category": "payment"
    },
    {
      "name": "tag-select",
      "type": "registry:block",
      "title": "Tag Select",
      "description": "Colored tag selector with single or multiple selection and color variants.",
      "author": "mcpcn",
      "categories": ["selection"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/selection/tag-select.tsx",
          "type": "registry:block",
          "target": "components/ui/tag-select.tsx"
        }
      ],
      "category": "selection"
    },
    {
      "name": "quick-reply",
      "type": "registry:block",
      "title": "Quick Reply",
      "description": "Quick reply buttons for common chat responses.",
      "author": "mcpcn",
      "categories": ["selection"],
      "dependencies": [],
      "registryDependencies": ["https://mcpcn.dev/r/apps-sdk-theme.json"],
      "files": [
        {
          "path": "registry/selection/quick-reply.tsx",
          "type": "registry:block",
          "target": "components/ui/quick-reply.tsx"
        }
      ],
      "category": "selection"
    },
    {
      "name": "progress-steps",
      "type": "registry:block",
      "title": "Progress Steps",
      "description": "Progress indicator with horizontal or vertical layout and step statuses.",
      "author": "mcpcn",
      "categories": ["status"],
      "dependencies": ["lucide-react"],
      "registryDependencies": ["https://mcpcn.dev/r/apps-sdk-theme.json"],
      "files": [
        {
          "path": "registry/status/progress-steps.tsx",
          "type": "registry:block",
          "target": "components/ui/progress-steps.tsx"
        }
      ],
      "category": "status"
    },
    {
      "name": "status-badge",
      "type": "registry:block",
      "title": "Status Badge",
      "description": "Status badge with multiple states (success, pending, processing, error, shipped, delivered).",
      "author": "mcpcn",
      "categories": ["status"],
      "dependencies": ["lucide-react"],
      "registryDependencies": ["https://mcpcn.dev/r/apps-sdk-theme.json"],
      "files": [
        {
          "path": "registry/status/status-badge.tsx",
          "type": "registry:block",
          "target": "components/ui/status-badge.tsx"
        }
      ],
      "category": "status"
    },
    {
      "name": "stat-card",
      "type": "registry:block",
      "title": "Stat Card",
      "description": "Scrollable stat cards with values, trends, and change indicators.",
      "author": "mcpcn",
      "categories": ["miscellaneous"],
      "dependencies": ["lucide-react"],
      "registryDependencies": ["https://mcpcn.dev/r/apps-sdk-theme.json"],
      "files": [
        {
          "path": "registry/miscellaneous/stat-card.tsx",
          "type": "registry:block",
          "target": "components/ui/stat-card.tsx"
        }
      ],
      "category": "miscellaneous"
    },
    {
      "name": "post-card",
      "type": "registry:block",
      "title": "Post Card",
      "description": "Post card with image, title, excerpt, author info and read more button. Supports default, compact, horizontal, and covered variants. Includes post-detail for fullscreen view.",
      "author": "mcpcn",
      "categories": ["blogging"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "tooltip",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/blogging/post-card.tsx",
          "type": "registry:block",
          "target": "components/ui/post-card.tsx"
        },
        {
          "path": "registry/blogging/post-detail.tsx",
          "type": "registry:block",
          "target": "components/ui/post-detail.tsx"
        }
      ],
      "category": "blogging"
    },
    {
      "name": "post-list",
      "type": "registry:block",
      "title": "Post List",
      "description": "Post list with list, grid, carousel, and fullwidth variants. Fullwidth mode shows paginated posts.",
      "author": "mcpcn",
      "categories": ["blogging"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "tooltip",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/blogging/post-list.tsx",
          "type": "registry:block",
          "target": "components/ui/post-list.tsx"
        },
        {
          "path": "registry/blogging/post-card.tsx",
          "type": "registry:block",
          "target": "components/ui/post-card.tsx"
        },
        {
          "path": "registry/blogging/post-detail.tsx",
          "type": "registry:block",
          "target": "components/ui/post-detail.tsx"
        }
      ],
      "category": "blogging"
    },
    {
      "name": "post-detail",
      "type": "registry:block",
      "title": "Post Detail",
      "description": "Full post view with cover image, author info, content, tags and related posts section.",
      "author": "mcpcn",
      "categories": ["blogging"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "tooltip",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/blogging/post-detail.tsx",
          "type": "registry:block",
          "target": "components/ui/post-detail.tsx"
        },
        {
          "path": "registry/blogging/post-card.tsx",
          "type": "registry:block",
          "target": "components/ui/post-card.tsx"
        }
      ],
      "category": "blogging"
    },
    {
      "name": "table",
      "type": "registry:block",
      "title": "Table",
      "description": "Data table with optional single or multi-select modes for chat interfaces.",
      "author": "mcpcn",
      "categories": ["list"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "popover",
        "select",
        "input",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/list/table.tsx",
          "type": "registry:block",
          "target": "components/ui/table.tsx"
        }
      ],
      "category": "list"
    },
    {
      "name": "message-bubble",
      "type": "registry:block",
      "title": "Message Bubble",
      "description": "Chat message bubbles with text, image, voice, and reaction variants.",
      "author": "mcpcn",
      "categories": ["messaging"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "dropdown-menu",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/messaging/message-bubble.tsx",
          "type": "registry:block",
          "target": "components/ui/message-bubble.tsx"
        }
      ],
      "category": "messaging"
    },
    {
      "name": "chat-conversation",
      "type": "registry:block",
      "title": "Chat Conversation",
      "description": "Full chat conversation component with multiple message types.",
      "author": "mcpcn",
      "categories": ["messaging"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "dropdown-menu",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/messaging/chat-conversation.tsx",
          "type": "registry:block",
          "target": "components/ui/chat-conversation.tsx"
        },
        {
          "path": "registry/messaging/message-bubble.tsx",
          "type": "registry:block",
          "target": "components/ui/message-bubble.tsx"
        }
      ],
      "category": "messaging"
    },
    {
      "name": "x-post",
      "type": "registry:block",
      "title": "X Post",
      "description": "X (Twitter) post card with engagement metrics.",
      "author": "mcpcn",
      "categories": ["social"],
      "dependencies": ["lucide-react"],
      "registryDependencies": ["https://mcpcn.dev/r/apps-sdk-theme.json"],
      "files": [
        {
          "path": "registry/social/x-post.tsx",
          "type": "registry:block",
          "target": "components/ui/x-post.tsx"
        }
      ],
      "category": "social"
    },
    {
      "name": "instagram-post",
      "type": "registry:block",
      "title": "Instagram Post",
      "description": "Instagram post card with image and engagement.",
      "author": "mcpcn",
      "categories": ["social"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "dropdown-menu",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/social/instagram-post.tsx",
          "type": "registry:block",
          "target": "components/ui/instagram-post.tsx"
        }
      ],
      "category": "social"
    },
    {
      "name": "linkedin-post",
      "type": "registry:block",
      "title": "LinkedIn Post",
      "description": "LinkedIn post card with professional styling.",
      "author": "mcpcn",
      "categories": ["social"],
      "dependencies": ["lucide-react"],
      "files": [
        {
          "path": "registry/social/linkedin-post.tsx",
          "type": "registry:block",
          "target": "components/ui/linkedin-post.tsx"
        }
      ],
      "category": "social",
      "registryDependencies": ["https://mcpcn.dev/r/apps-sdk-theme.json"]
    },
    {
      "name": "youtube-post",
      "type": "registry:block",
      "title": "YouTube Post",
      "description": "YouTube video card with playable embed.",
      "author": "mcpcn",
      "categories": ["social"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "dropdown-menu",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/social/youtube-post.tsx",
          "type": "registry:block",
          "target": "components/ui/youtube-post.tsx"
        }
      ],
      "category": "social"
    },
    {
      "name": "map-carousel",
      "type": "registry:block",
      "title": "Map Carousel",
      "description": "Interactive map with location markers and a draggable carousel of cards.",
      "author": "mcpcn",
      "categories": ["map"],
      "dependencies": ["@base-ui/react", "lucide-react", "leaflet"],
      "devDependencies": ["@types/leaflet"],
      "registryDependencies": [
        "button",
        "checkbox",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/map/map-carousel.tsx",
          "type": "registry:block",
          "target": "components/ui/map-carousel.tsx"
        }
      ],
      "category": "map"
    },
    {
      "name": "event-card",
      "type": "registry:block",
      "title": "Event Card",
      "description": "Display event information with multiple layouts. Supports events with images, signals, vibe tags, and display-formatted date/time. Entire card is clickable.",
      "author": "mcpcn",
      "categories": ["events"],
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/events/event-card.tsx",
          "type": "registry:block",
          "target": "components/ui/event-card.tsx"
        }
      ],
      "category": "events"
    },
    {
      "name": "event-list",
      "type": "registry:block",
      "title": "Event List",
      "description": "Display events in grid, list, or carousel layouts. Fullscreen mode shows interactive split-screen map with Leaflet and animated filter panel.",
      "author": "mcpcn",
      "categories": ["events"],
      "dependencies": [
        "@base-ui/react",
        "lucide-react",
        "react-leaflet",
        "leaflet"
      ],
      "devDependencies": ["@types/leaflet"],
      "registryDependencies": [
        "button",
        "checkbox",
        "https://mcpcn.dev/r/event-card.json",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/event-shared.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/events/event-list.tsx",
          "type": "registry:block",
          "target": "components/ui/event-list.tsx"
        }
      ],
      "category": "events"
    },
    {
      "name": "event-detail",
      "type": "registry:block",
      "title": "Event Detail",
      "description": "Full event detail view with organizer info, interactive map, policies, and ticket purchase. Fullwidth mode only.",
      "author": "mcpcn",
      "categories": ["events"],
      "dependencies": [
        "@base-ui/react",
        "lucide-react",
        "react-leaflet",
        "leaflet"
      ],
      "devDependencies": ["@types/leaflet"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/shared-types.json",
        "https://mcpcn.dev/r/event-shared.json",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/events/event-detail.tsx",
          "type": "registry:block",
          "target": "components/ui/event-detail.tsx"
        }
      ],
      "category": "events"
    },
    {
      "name": "ticket-tier-select",
      "type": "registry:block",
      "title": "Ticket Tier Select",
      "description": "Ticket tier selection with quantity controls and order summary. Shows price breakdown with fees.",
      "author": "mcpcn",
      "categories": ["events"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/events/ticket-tier-select.tsx",
          "type": "registry:block",
          "target": "components/ui/ticket-tier-select.tsx"
        }
      ],
      "category": "events"
    },
    {
      "name": "event-confirmation",
      "type": "registry:block",
      "title": "Event Confirmation",
      "description": "Order confirmation with event details, ticket delivery info, organizer follow, and social sharing.",
      "author": "mcpcn",
      "categories": ["events"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/events/event-confirmation.tsx",
          "type": "registry:block",
          "target": "components/ui/event-confirmation.tsx"
        }
      ],
      "category": "events"
    },
    {
      "name": "hero",
      "type": "registry:block",
      "title": "Hero",
      "description": "Landing hero section with optional logos, title, subtitle, CTA buttons, and tech logos footer. Supports image or text logos with separator.",
      "author": "mcpcn",
      "categories": ["miscellaneous"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "button",
        "https://mcpcn.dev/r/apps-sdk-theme.json"
      ],
      "files": [
        {
          "path": "registry/miscellaneous/hero.tsx",
          "type": "registry:block",
          "target": "components/ui/hero.tsx"
        }
      ],
      "category": "miscellaneous"
    },
    {
      "name": "event-shared",
      "type": "registry:lib",
      "title": "Event Shared Utilities",
      "description": "Shared utilities for event components (Leaflet map helpers, signal badges).",
      "author": "mcpcn",
      "categories": ["events"],
      "dependencies": ["lucide-react", "react-leaflet", "leaflet"],
      "devDependencies": ["@types/leaflet"],
      "registryDependencies": ["https://mcpcn.dev/r/shared-types.json"],
      "files": [
        {
          "path": "registry/events/shared.tsx",
          "type": "registry:lib",
          "target": "components/ui/shared.tsx"
        }
      ],
      "category": "events"
    },
    {
      "name": "shared-types",
      "type": "registry:lib",
      "title": "Shared Types",
      "description": "Shared type definitions for mcpcn components.",
      "author": "mcpcn",
      "categories": ["lib"],
      "files": [
        {
          "path": "registry/shared-types.ts",
          "type": "registry:lib",
          "target": "components/ui/types.ts"
        }
      ],
      "category": "lib"
    }
  ]
}
