{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "Manifest UI",
  "homepage": "https://ui.manifest.build",
  "items": [
    {
      "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": "MNFST, Inc",
      "categories": [
        "form"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/contact-form.png",
        "version": "1.2.9",
        "changelog": {
          "1.0.0": "Initial release with name, phone, email, message and file attachment fields",
          "1.1.0": "Made phone, email, and message fields optional with defaults",
          "1.2.0": "Added initialValues prop to pre-fill form fields",
          "1.2.1": "Added aria-label to file removal button for screen reader accessibility",
          "1.2.3": "Added comprehensive JSDoc documentation",
          "1.2.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.2.5": "Fixed defensive property access to handle empty objects and null values",
          "1.2.6": "Removed default content data - component only renders explicitly provided data",
          "1.2.7": "Fixed missing popover dependency for shadcn CLI installation",
          "1.2.8": "Extracted country data to separate countries.ts file",
          "1.2.9": "Show demo data when rendered without props"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "label",
        "popover"
      ],
      "files": [
        {
          "path": "registry/form/contact-form.tsx",
          "type": "registry:block",
          "target": "components/ui/contact-form.tsx"
        },
        {
          "path": "registry/form/countries.ts",
          "type": "registry:lib",
          "target": "components/ui/countries.ts"
        },
        {
          "path": "registry/form/demo/form.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/form.ts"
        }
      ],
      "category": "form",
      "preview": "https://ui.manifest.build/previews/contact-form.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "form"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/date-time-picker.png",
        "version": "2.1.1",
        "changelog": {
          "1.0.0": "Initial release with calendar and time slot selection",
          "1.0.1": "Added aria-labels to navigation buttons for better screen reader accessibility",
          "1.0.3": "Added comprehensive JSDoc documentation",
          "1.0.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.0": "BREAKING: Removed onSelect action. Intermediate date/time selection is now internal.",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.0.2": "Fixed missing popover dependency for shadcn CLI installation",
          "2.0.3": "Replaced hardcoded UTC offsets with IANA timezone identifiers for correct DST handling",
          "2.1.0": "Added weekStartsOn appearance option to configure first day of the week (Sunday, Monday, or Saturday)",
          "2.1.1": "Show demo data when rendered without props"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "popover"
      ],
      "files": [
        {
          "path": "registry/form/date-time-picker.tsx",
          "type": "registry:block",
          "target": "components/ui/date-time-picker.tsx"
        },
        {
          "path": "registry/form/demo/form.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/form.ts"
        }
      ],
      "category": "form",
      "preview": "https://ui.manifest.build/previews/date-time-picker.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "form"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/issue-report-form.png",
        "version": "1.0.7",
        "changelog": {
          "1.0.0": "Initial release with categories, impact levels and file attachments",
          "1.0.1": "Added aria-label to file removal button for screen reader accessibility",
          "1.0.3": "Added comprehensive JSDoc documentation",
          "1.0.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.0.5": "Fixed defensive property access to handle empty objects and null values",
          "1.0.6": "Removed default content data - component only renders explicitly provided data",
          "1.0.7": "Show demo data when rendered without props"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "label",
        "select"
      ],
      "files": [
        {
          "path": "registry/form/issue-report-form.tsx",
          "type": "registry:block",
          "target": "components/ui/issue-report-form.tsx"
        },
        {
          "path": "registry/form/demo/form.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/form.ts"
        }
      ],
      "category": "form",
      "preview": "https://ui.manifest.build/previews/issue-report-form.png"
    },
    {
      "name": "order-confirm",
      "type": "registry:block",
      "title": "Order Confirm",
      "description": "Order confirmation with product image, delivery info, and confirm action.",
      "author": "MNFST, Inc",
      "categories": [
        "payment"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/order-confirm.png",
        "version": "1.1.0",
        "changelog": {
          "1.0.0": "Initial release with product image and delivery info",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.0.4": "Removed default content data - component only renders explicitly provided data",
          "1.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://ui.manifest.build/r/manifest-types.json"
      ],
      "files": [
        {
          "path": "registry/payment/order-confirm.tsx",
          "type": "registry:block",
          "target": "components/ui/order-confirm.tsx"
        },
        {
          "path": "registry/payment/demo/payment.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/payment.ts"
        }
      ],
      "category": "payment",
      "preview": "https://ui.manifest.build/previews/order-confirm.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "payment"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/payment-confirmed.png",
        "version": "2.1.0",
        "changelog": {
          "1.0.0": "Initial release with product image and tracking button",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.0": "Added compressed variant, merged payment-success into this component",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.0.2": "Fixed missing alt fallback on product image in compressed desktop variant",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://ui.manifest.build/r/manifest-types.json"
      ],
      "files": [
        {
          "path": "registry/payment/payment-confirmed.tsx",
          "type": "registry:block",
          "target": "components/ui/payment-confirmed.tsx"
        },
        {
          "path": "registry/payment/demo/payment.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/payment.ts"
        }
      ],
      "category": "payment",
      "preview": "https://ui.manifest.build/previews/payment-confirmed.png"
    },
    {
      "name": "product-list",
      "type": "registry:block",
      "title": "Product List",
      "description": "Product list with list, grid, carousel, and picker variants.",
      "author": "MNFST, Inc",
      "categories": [
        "list"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/product-list.png",
        "version": "2.1.0",
        "changelog": {
          "1.0.0": "Initial release with list, grid, carousel and picker variants",
          "2.0.0": "BREAKING: Removed id from Product interface. Use array index for selection tracking.",
          "2.0.1": "Added aria-labels to carousel navigation buttons and dots for accessibility",
          "2.0.2": "Moved demo data to separate file for cleaner component code",
          "2.0.3": "Added comprehensive JSDoc documentation",
          "2.0.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.5": "Fixed defensive property access to handle empty objects and null values",
          "2.0.6": "Fixed circular dependency by adding types.ts and demo/data.ts to registry",
          "2.0.7": "Removed default content data - component only renders explicitly provided data",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://ui.manifest.build/r/manifest-types.json"
      ],
      "files": [
        {
          "path": "registry/list/product-list.tsx",
          "type": "registry:block",
          "target": "components/ui/product-list.tsx"
        },
        {
          "path": "registry/list/demo/list.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/list.ts"
        }
      ],
      "category": "list",
      "preview": "https://ui.manifest.build/previews/product-list.png"
    },
    {
      "name": "option-list",
      "type": "registry:block",
      "title": "Option List",
      "description": "Tag-style option selector with single or multiple selection modes.",
      "author": "MNFST, Inc",
      "categories": [
        "selection"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/option-list.png",
        "version": "3.1.0",
        "changelog": {
          "1.0.0": "Initial release with single and multiple selection modes",
          "2.0.0": "BREAKING: Removed id from Option interface. Use array index for selection tracking.",
          "2.0.1": "Moved demo data to separate file for cleaner component code",
          "2.0.2": "Added comprehensive JSDoc documentation",
          "2.1.0": "Moved to selection category for better organization",
          "2.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.1.2": "Fixed defensive property access to handle empty objects and null values",
          "2.1.3": "Fixed circular dependency by adding types.ts and demo/data.ts to registry",
          "3.0.0": "BREAKING: Replaced onSelectOption and onSelectOptions with single onSubmit action. Added confirm button.",
          "3.0.1": "Removed default content data - component only renders explicitly provided data",
          "3.0.2": "Fixed stale controlled state and improved list item keys",
          "3.0.3": "Fixed infinite re-render loop when control prop is not provided",
          "3.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://ui.manifest.build/r/manifest-types.json"
      ],
      "files": [
        {
          "path": "registry/selection/option-list.tsx",
          "type": "registry:block",
          "target": "components/ui/option-list.tsx"
        },
        {
          "path": "registry/selection/demo/selection.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/selection.ts"
        }
      ],
      "category": "selection",
      "preview": "https://ui.manifest.build/previews/option-list.png"
    },
    {
      "name": "amount-input",
      "type": "registry:block",
      "title": "Amount Input",
      "description": "Amount input with increment/decrement buttons and preset values.",
      "author": "MNFST, Inc",
      "categories": [
        "payment"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/amount-input.png",
        "version": "2.0.3",
        "changelog": {
          "1.0.0": "Initial release with increment buttons and preset values",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.0.4": "Fixed defensive property access to handle empty objects and null values",
          "2.0.0": "BREAKING: Removed onChange action. Value changes are now internal.",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.0.2": "Fixed stale controlled state sync and memoized currency symbol computation",
          "2.0.3": "Show demo data when rendered without props"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://ui.manifest.build/r/manifest-types.json"
      ],
      "files": [
        {
          "path": "registry/payment/amount-input.tsx",
          "type": "registry:block",
          "target": "components/ui/amount-input.tsx"
        },
        {
          "path": "registry/payment/demo/payment.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/payment.ts"
        }
      ],
      "category": "payment",
      "preview": "https://ui.manifest.build/previews/amount-input.png"
    },
    {
      "name": "tag-select",
      "type": "registry:block",
      "title": "Tag Select",
      "description": "Colored tag selector with single or multiple selection and color variants.",
      "author": "MNFST, Inc",
      "categories": [
        "selection"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/tag-select.png",
        "version": "2.1.0",
        "changelog": {
          "1.0.0": "Initial release with color variants and multi-select",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.1.0": "Moved to selection category for better organization",
          "1.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.1.2": "Fixed defensive property access to handle empty objects and null values",
          "1.1.3": "Additional defensive property access improvements",
          "2.0.0": "BREAKING: Removed onSelectTags action. Tag toggling is now internal.",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.0.2": "Fixed stale controlled state sync for selectedTagIds",
          "2.0.3": "Fixed infinite re-render loop when control prop is not provided",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/selection/tag-select.tsx",
          "type": "registry:block",
          "target": "components/ui/tag-select.tsx"
        },
        {
          "path": "registry/selection/demo/selection.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/selection.ts"
        }
      ],
      "category": "selection",
      "preview": "https://ui.manifest.build/previews/tag-select.png"
    },
    {
      "name": "quick-reply",
      "type": "registry:block",
      "title": "Quick Reply",
      "description": "Quick reply buttons for common chat responses.",
      "author": "MNFST, Inc",
      "categories": [
        "selection"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/quick-reply.png",
        "version": "3.2.0",
        "changelog": {
          "1.0.0": "Initial release with quick reply button options",
          "2.0.0": "BREAKING: Removed unused value prop from QuickReply interface",
          "3.0.0": "BREAKING: Removed id from QuickReply interface. Use array index for key.",
          "3.0.2": "Added comprehensive JSDoc documentation",
          "3.1.0": "Moved to selection category for better organization",
          "3.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "3.1.2": "Fixed defensive property access to handle empty objects and null values",
          "3.1.3": "Additional defensive property access improvements",
          "3.1.4": "Removed default content data - component only renders explicitly provided data",
          "3.2.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/selection/quick-reply.tsx",
          "type": "registry:block",
          "target": "components/ui/quick-reply.tsx"
        },
        {
          "path": "registry/selection/demo/selection.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/selection.ts"
        }
      ],
      "category": "selection",
      "preview": "https://ui.manifest.build/previews/quick-reply.png"
    },
    {
      "name": "progress-steps",
      "type": "registry:block",
      "title": "Progress Steps",
      "description": "Progress indicator with horizontal or vertical layout and step statuses.",
      "author": "MNFST, Inc",
      "categories": [
        "status"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/progress-steps.png",
        "version": "2.1.0",
        "changelog": {
          "1.0.0": "Initial release with horizontal and vertical layouts",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.1.0": "Moved to status category for better organization",
          "1.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.1.2": "Fixed defensive property access to handle empty objects and null values",
          "1.1.3": "Additional defensive property access improvements",
          "2.0.0": "BREAKING: Removed id from Step interface, use array index for key",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/status/progress-steps.tsx",
          "type": "registry:block",
          "target": "components/ui/progress-steps.tsx"
        },
        {
          "path": "registry/status/demo/status.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/status.ts"
        }
      ],
      "category": "status",
      "preview": "https://ui.manifest.build/previews/progress-steps.png"
    },
    {
      "name": "status-badge",
      "type": "registry:block",
      "title": "Status Badge",
      "description": "Status badge with multiple states (success, pending, processing, error, shipped, delivered).",
      "author": "MNFST, Inc",
      "categories": [
        "status"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/status-badge.png",
        "version": "1.2.0",
        "changelog": {
          "1.0.0": "Initial release with multiple status states",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.1.0": "Moved to status category for better organization",
          "1.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.1.2": "Fixed defensive property access to handle empty objects and null values",
          "1.2.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/status/status-badge.tsx",
          "type": "registry:block",
          "target": "components/ui/status-badge.tsx"
        },
        {
          "path": "registry/status/demo/status.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/status.ts"
        }
      ],
      "category": "status",
      "preview": "https://ui.manifest.build/previews/status-badge.png"
    },
    {
      "name": "stat-card",
      "type": "registry:block",
      "title": "Stat Card",
      "description": "Scrollable stat cards with values, trends, and change indicators.",
      "author": "MNFST, Inc",
      "categories": [
        "miscellaneous"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/stat-card.png",
        "version": "2.0.0",
        "changelog": {
          "1.0.0": "Initial release with scrollable stat cards and trends",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.0.4": "Fixed defensive property access to handle empty objects and null values",
          "1.0.5": "Additional defensive property access improvements",
          "1.0.6": "Removed default content data - component only renders explicitly provided data",
          "1.1.0": "Added demo data defaults - component renders demo content when no data prop is provided",
          "2.0.0": "BREAKING: Renamed component export from Stats to StatCard and StatsProps to StatCardProps for naming consistency"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/miscellaneous/stat-card.tsx",
          "type": "registry:block",
          "target": "components/ui/stat-card.tsx"
        },
        {
          "path": "registry/miscellaneous/demo/miscellaneous.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/miscellaneous.ts"
        }
      ],
      "category": "miscellaneous",
      "preview": "https://ui.manifest.build/previews/stat-card.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "blogging"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/post-card.png",
        "version": "2.1.0",
        "changelog": {
          "1.0.0": "Initial release with default, compact, horizontal and covered variants",
          "2.0.0": "BREAKING: Removed id from Post interface. Use array index for key.",
          "2.0.1": "Moved demo data to separate file for cleaner component code",
          "2.0.2": "Added comprehensive JSDoc documentation",
          "2.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.4": "Fixed defensive property access to handle empty objects and null values",
          "2.0.5": "Fixed circular dependency by moving Post interface to types.ts",
          "2.0.6": "Removed unused OpenAI types side-effect import",
          "2.0.7": "Removed default content data - component only renders explicitly provided data",
          "2.0.8": "Fixed missing tooltip dependency for shadcn CLI installation",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "tooltip",
        "https://ui.manifest.build/r/manifest-types.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"
        },
        {
          "path": "registry/blogging/demo/blogging.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/blogging.ts"
        }
      ],
      "category": "blogging",
      "preview": "https://ui.manifest.build/previews/post-card.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "blogging"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/post-list.png",
        "version": "3.1.0",
        "changelog": {
          "1.0.0": "Initial release with list, grid and carousel variants",
          "1.1.0": "Added fullwidth variant with pagination for fullscreen mode",
          "2.0.0": "BREAKING: Removed id from Post interface. Use array index for key.",
          "2.0.1": "Added aria-labels to pagination and carousel navigation buttons for accessibility",
          "2.0.2": "Moved demo data to separate file for cleaner component code",
          "2.0.3": "Added comprehensive JSDoc documentation",
          "2.0.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.5": "Fixed defensive property access to handle empty objects and null values",
          "2.0.6": "Fixed circular dependency by moving Post interface to types.ts",
          "2.0.7": "Added bg-card background and margin to list variant for better dark/light mode support",
          "3.0.0": "BREAKING: Removed pagination (onPageChange, postsPerPage, control). Fullwidth variant now renders all posts.",
          "3.0.1": "Removed default content data - component only renders explicitly provided data",
          "3.0.2": "Fixed missing tooltip dependency for shadcn CLI installation",
          "3.0.3": "Replaced key={index} with stable content-based keys",
          "3.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "tooltip",
        "https://ui.manifest.build/r/manifest-types.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"
        },
        {
          "path": "registry/blogging/demo/blogging.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/blogging.ts"
        }
      ],
      "category": "blogging",
      "preview": "https://ui.manifest.build/previews/post-list.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "blogging"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/post-detail.png",
        "version": "2.2.0",
        "changelog": {
          "1.0.0": "Initial release with cover image, author info and related posts",
          "2.0.0": "BREAKING: Removed id from Post interface. Use array index for key.",
          "2.0.1": "Updated post-card dependency with extracted demo data",
          "2.0.2": "Added comprehensive JSDoc documentation",
          "2.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.4": "Fixed defensive property access to handle empty objects and null values",
          "2.0.5": "Added missing tooltip dependency to registryDependencies",
          "2.0.6": "Fixed circular dependency by importing Post from types.ts",
          "2.1.0": "Added pip display mode. Content is now truncated in inline and pip modes.",
          "2.1.1": "Improved pip mode with horizontal layout showing all post metadata",
          "2.1.2": "Fixed display mode detection to read from OpenAI host API (window.openai.displayMode)",
          "2.1.3": "Added useSyncExternalStore hook to reactively subscribe to host displayMode changes in ChatGPT/MCP",
          "2.1.4": "Added expand icon in inline mode to quickly launch fullscreen view",
          "2.1.5": "Fixed expand button to always request fullscreen from host in ChatGPT/MCP",
          "2.1.6": "Removed default content - component only renders data explicitly provided by the user",
          "2.1.7": "Added cursor-pointer to expand button for better UX",
          "2.1.8": "Refactored to use HostAPI abstraction for multi-host support",
          "2.1.9": "Inlined host detection to remove external lib dependency for shadcn distribution",
          "2.1.10": "Updated post-card dependency with removed OpenAI types import",
          "2.1.11": "Removed default content data - component only renders explicitly provided data",
          "2.1.12": "Migrated from OpenAI Apps SDK to MCP Apps protocol for host communication",
          "2.1.13": "Added XSS sanitization for HTML content and replaced key={index} with stable keys",
          "2.2.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "tooltip",
        "https://ui.manifest.build/r/manifest-types.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"
        },
        {
          "path": "registry/blogging/demo/blogging.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/blogging.ts"
        }
      ],
      "category": "blogging",
      "preview": "https://ui.manifest.build/previews/post-detail.png"
    },
    {
      "name": "table",
      "type": "registry:block",
      "title": "Table",
      "description": "Data table with optional single or multi-select modes for chat interfaces.",
      "author": "MNFST, Inc",
      "categories": [
        "list"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/table.png",
        "version": "2.1.0",
        "changelog": {
          "1.0.0": "Initial release with single and multi-select modes",
          "1.0.1": "Added descriptive alt tags for title images",
          "1.0.2": "Added aria-label to filter removal button for screen reader accessibility",
          "1.0.4": "Added comprehensive JSDoc documentation",
          "1.0.5": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.0.6": "Fixed defensive property access to handle empty objects and null values",
          "1.0.7": "Inlined OpenAI display mode types to remove external lib dependency for shadcn distribution",
          "2.0.0": "BREAKING: Removed onSelectionChange and onExpand actions. Selection and expand are now internal.",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.0.2": "Removed unused checkbox from registry dependencies",
          "2.0.3": "Migrated from OpenAI Apps SDK to MCP Apps protocol for host communication",
          "2.0.4": "Removed stale sortedData from handleRowSelect dependency array",
          "2.0.5": "Fixed table preview not displaying data by passing demo columns and rows",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "popover",
        "select",
        "input"
      ],
      "files": [
        {
          "path": "registry/list/table.tsx",
          "type": "registry:block",
          "target": "components/ui/table.tsx"
        },
        {
          "path": "registry/list/demo/list.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/list.ts"
        }
      ],
      "category": "list",
      "preview": "https://ui.manifest.build/previews/table.png"
    },
    {
      "name": "message-bubble",
      "type": "registry:block",
      "title": "Message Bubble",
      "description": "Chat message bubbles with text, image, voice, and reaction variants.",
      "author": "MNFST, Inc",
      "categories": [
        "messaging"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/message-bubble.png",
        "version": "3.0.6",
        "changelog": {
          "1.0.0": "Initial release with text, image, voice and reaction variants",
          "1.0.1": "Added better image captions for accessibility",
          "1.0.2": "Improved alt text to use caption when available",
          "1.1.0": "Added avatarUrl prop for image avatars with letter fallback",
          "2.0.0": "BREAKING: Renamed avatar prop to avatarFallback for clarity",
          "3.0.0": "BREAKING: Renamed caption prop to content in ImageMessageBubble",
          "3.0.1": "Added aria-labels to reaction buttons and voice message controls for accessibility",
          "3.0.3": "Added comprehensive JSDoc documentation",
          "3.0.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "3.0.5": "Removed default content data - component only renders explicitly provided data",
          "3.0.6": "Show demo data when rendered without props"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "dropdown-menu"
      ],
      "files": [
        {
          "path": "registry/messaging/message-bubble.tsx",
          "type": "registry:block",
          "target": "components/ui/message-bubble.tsx"
        },
        {
          "path": "registry/messaging/demo/messaging.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/messaging.ts"
        }
      ],
      "category": "messaging",
      "preview": "https://ui.manifest.build/previews/message-bubble.png"
    },
    {
      "name": "chat-conversation",
      "type": "registry:block",
      "title": "Chat Conversation",
      "description": "Full chat conversation component with multiple message types.",
      "author": "MNFST, Inc",
      "categories": [
        "messaging"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/chat-conversation.png",
        "version": "4.1.0",
        "changelog": {
          "1.0.0": "Initial release with multiple message types",
          "1.0.1": "Updated to use improved message bubble styling",
          "1.0.2": "Synced with message-bubble alt tag improvements",
          "1.0.3": "Added default value 'text' for message type",
          "1.1.0": "Added avatarUrl prop for image avatars with letter fallback",
          "2.0.0": "BREAKING: Renamed avatar prop to avatarFallback for clarity",
          "3.0.0": "BREAKING: Removed caption prop, use content for image captions",
          "4.0.0": "BREAKING: Removed id from ChatMessage interface. Use array index for key.",
          "4.0.1": "Updated message-bubble dependency with improved accessibility for reaction buttons and voice controls",
          "4.0.2": "Moved demo data to separate file for cleaner component code",
          "4.0.3": "Added comprehensive JSDoc documentation",
          "4.0.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "4.0.5": "Fixed defensive property access to handle empty objects and null values",
          "4.0.6": "Fixed circular dependency by adding types.ts and demo/data.ts to registry",
          "4.0.7": "Removed default content data - component only renders explicitly provided data",
          "4.0.8": "Replaced key={index} with content-based keys for message list",
          "4.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "dropdown-menu",
        "https://ui.manifest.build/r/manifest-types.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"
        },
        {
          "path": "registry/messaging/demo/messaging.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/messaging.ts"
        }
      ],
      "category": "messaging",
      "preview": "https://ui.manifest.build/previews/chat-conversation.png"
    },
    {
      "name": "x-post",
      "type": "registry:block",
      "title": "X Post",
      "description": "X (Twitter) post card with engagement metrics.",
      "author": "MNFST, Inc",
      "categories": [
        "social"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/x-post.png",
        "version": "1.2.0",
        "changelog": {
          "1.0.0": "Initial release with engagement metrics display",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.1.0": "Moved to social category for better organization",
          "1.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.1.2": "Removed default content data - component only renders explicitly provided data",
          "1.1.3": "Added aria-labels to icon-only action buttons for accessibility",
          "1.2.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/social/x-post.tsx",
          "type": "registry:block",
          "target": "components/ui/x-post.tsx"
        },
        {
          "path": "registry/social/demo/social.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/social.ts"
        }
      ],
      "category": "social",
      "preview": "https://ui.manifest.build/previews/x-post.png"
    },
    {
      "name": "instagram-post",
      "type": "registry:block",
      "title": "Instagram Post",
      "description": "Instagram post card with image and engagement.",
      "author": "MNFST, Inc",
      "categories": [
        "social"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/instagram-post.png",
        "version": "1.2.0",
        "changelog": {
          "1.0.0": "Initial release with image and engagement display",
          "1.0.1": "Improved alt text to include author name",
          "1.0.3": "Added comprehensive JSDoc documentation",
          "1.1.0": "Moved to social category for better organization",
          "1.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.1.2": "Removed default content data - component only renders explicitly provided data",
          "1.1.3": "Added aria-labels to icon-only action buttons for accessibility",
          "1.2.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "dropdown-menu"
      ],
      "files": [
        {
          "path": "registry/social/instagram-post.tsx",
          "type": "registry:block",
          "target": "components/ui/instagram-post.tsx"
        },
        {
          "path": "registry/social/demo/social.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/social.ts"
        }
      ],
      "category": "social",
      "preview": "https://ui.manifest.build/previews/instagram-post.png"
    },
    {
      "name": "linkedin-post",
      "type": "registry:block",
      "title": "LinkedIn Post",
      "description": "LinkedIn post card with professional styling.",
      "author": "MNFST, Inc",
      "categories": [
        "social"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/linkedin-post.png",
        "version": "3.1.0",
        "changelog": {
          "1.0.0": "Initial release with professional styling",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.1.0": "Moved to social category for better organization",
          "1.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.0": "BREAKING: Simplified component - removed engagement stats and action buttons, added LinkedIn icon link and optional repost button",
          "2.1.0": "Added image support, engagement stats with reaction icons, expandable content with maxLines prop, and moved repost button to the right",
          "2.1.1": "Fixed avatar circle visibility - now hides entirely when avatar prop is not provided",
          "3.0.0": "BREAKING: Moved postUrl and repostUrl from actions to data prop",
          "3.0.1": "Fixed JSX namespace deprecation and removed dynamic Tailwind class",
          "3.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/social/linkedin-post.tsx",
          "type": "registry:block",
          "target": "components/ui/linkedin-post.tsx"
        },
        {
          "path": "registry/social/demo/social.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/social.ts"
        }
      ],
      "category": "social",
      "preview": "https://ui.manifest.build/previews/linkedin-post.png"
    },
    {
      "name": "youtube-post",
      "type": "registry:block",
      "title": "YouTube Post",
      "description": "YouTube video card with playable embed.",
      "author": "MNFST, Inc",
      "categories": [
        "social"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/youtube-post.png",
        "version": "1.2.0",
        "changelog": {
          "1.0.0": "Initial release with playable video embed",
          "1.0.1": "Improved alt text to include video title",
          "1.0.3": "Added comprehensive JSDoc documentation",
          "1.1.0": "Moved to social category for better organization",
          "1.1.1": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.1.2": "Removed default content data - component only renders explicitly provided data",
          "1.2.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "dropdown-menu"
      ],
      "files": [
        {
          "path": "registry/social/youtube-post.tsx",
          "type": "registry:block",
          "target": "components/ui/youtube-post.tsx"
        },
        {
          "path": "registry/social/demo/social.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/social.ts"
        }
      ],
      "category": "social",
      "preview": "https://ui.manifest.build/previews/youtube-post.png"
    },
    {
      "name": "map-carousel",
      "type": "registry:block",
      "title": "Map Carousel",
      "description": "Interactive map with location markers and a draggable carousel of cards.",
      "author": "MNFST, Inc",
      "categories": [
        "map"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/map-carousel.png",
        "version": "2.1.2",
        "changelog": {
          "1.0.0": "Initial release with interactive map and location cards",
          "1.1.0": "Made image and price fields optional in Location interface",
          "1.1.2": "Added comprehensive JSDoc documentation",
          "1.2.0": "Moved to map category for better organization",
          "1.2.1": "Removed Next.js dependency - now uses React-only lazy loading for map components",
          "1.2.2": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "1.2.3": "Fixed defensive property access to handle empty objects and null values",
          "1.3.0": "Added display modes (inline/fullscreen) with split-screen layout, filters, and ChatGPT host integration",
          "1.4.0": "Made filters fully configurable via data prop with custom filter sections and match functions",
          "2.0.0": "BREAKING: Removed onExpand and onFiltersApply actions. Expand and filter apply are now internal.",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.0.2": "Migrated from OpenAI Apps SDK to MCP Apps protocol for host communication",
          "2.0.3": "Fixed Leaflet CSS injection deduplication and hardcoded date display",
          "2.0.4": "Adjusted demo map zoom level to show more of the San Francisco bay area",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided",
          "2.1.1": "Fixed react-leaflet Invalid hook call errors by using React.lazy instead of useEffect dynamic imports",
          "2.1.2": "Fixed Invalid hook call errors by replacing react-leaflet with vanilla leaflet API"
        }
      },
      "dependencies": [
        "lucide-react",
        "leaflet"
      ],
      "devDependencies": [
        "@types/leaflet"
      ],
      "registryDependencies": [
        "button",
        "checkbox"
      ],
      "files": [
        {
          "path": "registry/map/map-carousel.tsx",
          "type": "registry:block",
          "target": "components/ui/map-carousel.tsx"
        },
        {
          "path": "registry/map/demo/map.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/map.ts"
        }
      ],
      "category": "map",
      "preview": "https://ui.manifest.build/previews/map-carousel.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "events"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/event-card.png",
        "version": "5.1.0",
        "changelog": {
          "1.0.0": "Initial release with default, compact, horizontal and covered variants. Supports physical, online, and hybrid events with signals and vibe tags.",
          "2.0.0": "BREAKING: Simplified Event interface - replaced startDateTime/endDateTime with display-formatted dateTime string, removed image/locationType/onlineUrl, changed ticketTiers to string array",
          "3.0.0": "Added image support to Event type and default variant for displaying cover images.",
          "4.0.0": "BREAKING: Removed View button from all variants. Entire card is now clickable.",
          "4.1.0": "Added image display to horizontal (list) and compact (carousel) variants",
          "5.0.0": "BREAKING: Removed id from Event interface. Use array index for key.",
          "5.0.1": "Added accessibility support with role, tabIndex, keyboard handlers, and aria-label for all card variants",
          "5.0.2": "Moved demo data to separate file for cleaner component code",
          "5.0.3": "Added comprehensive JSDoc documentation",
          "5.0.4": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "5.0.5": "Fixed defensive property access to handle empty objects and null values",
          "5.0.6": "Added types.ts to registry for proper installation",
          "5.0.7": "Added demo/data.ts to registry for proper installation via shadcn CLI",
          "5.0.8": "Removed unused OpenAI types side-effect import",
          "5.0.9": "Removed default content data - component only renders explicitly provided data",
          "5.0.10": "Removed unused button from registry dependencies",
          "5.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.manifest.build/r/manifest-types.json"
      ],
      "files": [
        {
          "path": "registry/events/event-card.tsx",
          "type": "registry:block",
          "target": "components/ui/event-card.tsx"
        },
        {
          "path": "registry/events/demo/events.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/events.ts"
        }
      ],
      "category": "events",
      "preview": "https://ui.manifest.build/previews/event-card.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "events"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/event-list.png",
        "version": "7.1.1",
        "changelog": {
          "1.0.0": "Initial release with grid, list and carousel layouts. Includes pagination support.",
          "2.0.0": "BREAKING: Updated to use simplified Event interface with display-formatted dateTime",
          "3.0.0": "Updated grid variant to show 3 cards with images and View More button. Added onViewMore action.",
          "4.0.0": "BREAKING: Added fullwidth variant with split-screen map layout. Updated to 15 events. Added coordinates to Event type.",
          "5.0.0": "BREAKING: Fullwidth is no longer a variant - use fullscreenComponent instead. Map now uses real Leaflet.",
          "5.1.0": "Added animated filter panel with Category, Date, Neighborhood, Price, and Format filters. Filters apply to both list and map markers.",
          "5.2.0": "Added expand button next to title in list and carousel variants with onExpand action",
          "5.2.1": "Fixed event-card dependency resolution for shadcn CLI installation",
          "6.0.0": "BREAKING: Removed id from Event interface. Use array index for selection and key.",
          "6.0.1": "Added aria-labels to navigation buttons, carousel dots, filter close, and expand buttons for accessibility",
          "6.0.2": "Moved demo data to separate file for cleaner component code",
          "6.0.3": "Added comprehensive JSDoc documentation",
          "6.0.4": "Removed Next.js dependency - now uses React-only lazy loading for map components",
          "6.0.5": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "6.0.6": "Fixed defensive property access to handle empty objects and null values",
          "6.0.7": "Added types.ts to registry for proper installation",
          "6.0.8": "Added demo/data.ts to registry for proper installation via shadcn CLI",
          "7.0.0": "BREAKING: Removed onPageChange, onViewMore, onExpand, onFilterClick, onFiltersApply actions. Filters and expand are now internal.",
          "7.0.1": "Removed default content data - component only renders explicitly provided data",
          "7.0.2": "Extracted shared map utilities to shared.tsx and fixed Leaflet CSS deduplication",
          "7.1.0": "Added demo data defaults - component renders demo content when no data prop is provided",
          "7.1.1": "Fixed react-leaflet Invalid hook call errors by using React.lazy instead of useEffect dynamic imports"
        }
      },
      "dependencies": [
        "lucide-react",
        "react-leaflet",
        "leaflet"
      ],
      "devDependencies": [
        "@types/leaflet"
      ],
      "registryDependencies": [
        "button",
        "checkbox",
        "https://ui.manifest.build/r/event-card.json",
        "https://ui.manifest.build/r/manifest-types.json",
        "https://ui.manifest.build/r/event-shared.json"
      ],
      "files": [
        {
          "path": "registry/events/event-list.tsx",
          "type": "registry:block",
          "target": "components/ui/event-list.tsx"
        },
        {
          "path": "registry/events/demo/events.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/events.ts"
        }
      ],
      "category": "events",
      "preview": "https://ui.manifest.build/previews/event-list.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "events"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/event-detail.png",
        "version": "3.1.1",
        "changelog": {
          "1.0.0": "Initial release with image carousel, organizer info, location, policies, FAQs, and ticket purchase.",
          "2.0.0": "BREAKING: Updated to use simplified Event interface with display-formatted dateTime and string ticketTiers",
          "2.1.0": "Moved Get Tickets CTA from sticky bottom to end of content for fullscreen mode.",
          "2.2.0": "Changed CTA buttons and map tooltip from orange to dark theme colors",
          "3.0.0": "BREAKING: Removed id from EventDetails, Organizer, and tier interfaces. Use array index for key.",
          "3.0.1": "Added aria-labels to image navigation, share, save, and back buttons for accessibility",
          "3.0.2": "Moved demo data to separate file for cleaner component code",
          "3.0.3": "Added comprehensive JSDoc documentation",
          "3.0.4": "Removed Next.js dependency - now uses React-only lazy loading for map components",
          "3.0.5": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "3.0.6": "Fixed defensive property access to handle empty objects and null values",
          "3.0.7": "Added types.ts to registry for proper installation",
          "3.0.8": "Added demo/data.ts to registry for proper installation via shadcn CLI",
          "3.0.9": "Removed default content data - component only renders explicitly provided data",
          "3.0.10": "Extracted shared map utilities to shared.tsx and fixed Leaflet CSS deduplication",
          "3.1.0": "Added demo data defaults - component renders demo content when no data prop is provided",
          "3.1.1": "Fixed react-leaflet Invalid hook call errors by using React.lazy instead of useEffect dynamic imports"
        }
      },
      "dependencies": [
        "lucide-react",
        "react-leaflet",
        "leaflet"
      ],
      "devDependencies": [
        "@types/leaflet"
      ],
      "registryDependencies": [
        "button",
        "https://ui.manifest.build/r/manifest-types.json",
        "https://ui.manifest.build/r/event-shared.json"
      ],
      "files": [
        {
          "path": "registry/events/event-detail.tsx",
          "type": "registry:block",
          "target": "components/ui/event-detail.tsx"
        },
        {
          "path": "registry/events/demo/events.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/events.ts"
        }
      ],
      "category": "events",
      "preview": "https://ui.manifest.build/previews/event-detail.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "events"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/ticket-tier-select.png",
        "version": "4.1.0",
        "changelog": {
          "1.0.0": "Initial release with ticket tier cards, quantity controls, price breakdown, and order summary sidebar",
          "1.1.0": "Added optional event image above order summary. Order summary now always visible with fixed width.",
          "2.0.0": "BREAKING: Refactored to use nested event object (event.title, event.date, event.image, event.currency) instead of flat props",
          "2.0.2": "Added comprehensive JSDoc documentation",
          "2.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "3.0.0": "BREAKING: Removed id from TicketTier interface, made name and price optional.",
          "3.0.1": "Simplified TicketSelection interface by removing tierIndex",
          "4.0.0": "BREAKING: Removed onSelectionChange action. Tier quantity changes are now internal.",
          "4.0.1": "Removed default content data - component only renders explicitly provided data",
          "4.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/events/ticket-tier-select.tsx",
          "type": "registry:block",
          "target": "components/ui/ticket-tier-select.tsx"
        },
        {
          "path": "registry/events/demo/events.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/events.ts"
        }
      ],
      "category": "events",
      "preview": "https://ui.manifest.build/previews/ticket-tier-select.png"
    },
    {
      "name": "event-confirmation",
      "type": "registry:block",
      "title": "Event Confirmation",
      "description": "Order confirmation with event details, ticket delivery info, organizer follow, and social sharing.",
      "author": "MNFST, Inc",
      "categories": [
        "events"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/event-confirmation.png",
        "version": "2.1.0",
        "changelog": {
          "1.0.0": "Initial release with success message, event details, organizer follow, and social sharing",
          "1.0.2": "Added comprehensive JSDoc documentation",
          "1.0.3": "Updated Props interface with decorative header and sub-parameter JSDoc documentation",
          "2.0.0": "BREAKING: Removed onChangeEmail action and Change email link",
          "2.0.1": "Removed default content data - component only renders explicitly provided data",
          "2.1.0": "Added demo data defaults - component renders demo content when no data prop is provided"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/events/event-confirmation.tsx",
          "type": "registry:block",
          "target": "components/ui/event-confirmation.tsx"
        },
        {
          "path": "registry/events/demo/events.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/events.ts"
        }
      ],
      "category": "events",
      "preview": "https://ui.manifest.build/previews/event-confirmation.png"
    },
    {
      "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": "MNFST, Inc",
      "categories": [
        "miscellaneous"
      ],
      "meta": {
        "preview": "https://ui.manifest.build/previews/hero.png",
        "version": "2.2.1",
        "changelog": {
          "1.0.0": "Initial release with logos, title, subtitle, CTA buttons, and tech logos footer",
          "1.1.0": "Added card wrapper, text logo support, improved light/dark mode compatibility",
          "2.0.0": "BREAKING: Changed button props from string labels to HeroButton objects with optional label and icon",
          "2.0.1": "Image logos now display without bordered container, text logos remain in bordered square",
          "2.1.0": "Added urlLight prop for dark mode logo variant support",
          "2.1.1": "Reduced logo image height for better visual balance",
          "2.1.2": "Removed default content data - component only renders explicitly provided data",
          "2.1.3": "Replaced key={index} with stable content-based keys for tech logos",
          "2.2.0": "Added demo data defaults - component renders demo content when no data prop is provided",
          "2.2.1": "Fixed import type for verbatimModuleSyntax compatibility"
        }
      },
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/miscellaneous/hero.tsx",
          "type": "registry:block",
          "target": "components/ui/hero.tsx"
        },
        {
          "path": "registry/miscellaneous/demo/miscellaneous.ts",
          "type": "registry:lib",
          "target": "components/ui/demo/miscellaneous.ts"
        }
      ],
      "category": "miscellaneous",
      "preview": "https://ui.manifest.build/previews/hero.png"
    },
    {
      "name": "event-shared",
      "type": "registry:lib",
      "title": "Event Shared Utilities",
      "description": "Shared utilities for event components (Leaflet map helpers, signal badges).",
      "author": "MNFST, Inc",
      "categories": [
        "events"
      ],
      "meta": {
        "version": "1.0.1",
        "changelog": {
          "1.0.0": "Extracted shared map utilities and signal badges from event-list and event-detail",
          "1.0.1": "Replaced useReactLeaflet hook with React.lazy to fix Invalid hook call errors"
        }
      },
      "dependencies": [
        "lucide-react",
        "react-leaflet",
        "leaflet"
      ],
      "devDependencies": [
        "@types/leaflet"
      ],
      "registryDependencies": [
        "https://ui.manifest.build/r/manifest-types.json"
      ],
      "files": [
        {
          "path": "registry/events/shared.tsx",
          "type": "registry:lib",
          "target": "components/ui/shared.tsx"
        }
      ],
      "category": "events"
    },
    {
      "name": "manifest-types",
      "type": "registry:lib",
      "title": "Manifest Types",
      "description": "Shared type definitions for Manifest UI components.",
      "author": "MNFST, Inc",
      "categories": [
        "lib"
      ],
      "files": [
        {
          "path": "registry/shared-types.ts",
          "type": "registry:lib",
          "target": "components/ui/types.ts"
        }
      ],
      "category": "lib"
    }
  ]
}
