{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "media-upload-toast",
  "title": "Media Upload Toast",
  "description": "Show toast notifications for media uploads.",
  "dependencies": [
    "@platejs/media",
    "sonner"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "src/registry/ui/media-upload-toast.tsx",
      "content": "'use client';\n\nimport * as React from 'react';\n\nimport { PlaceholderPlugin, UploadErrorCode } from '@platejs/media/react';\nimport { usePluginOption } from 'platejs/react';\nimport { toast } from 'sonner';\n\nexport function MediaUploadToast() {\n  useUploadErrorToast();\n\n  return null;\n}\n\nconst useUploadErrorToast = () => {\n  const uploadError = usePluginOption(PlaceholderPlugin, 'error');\n\n  React.useEffect(() => {\n    if (!uploadError) return;\n\n    const { code, data } = uploadError;\n\n    switch (code) {\n      case UploadErrorCode.INVALID_FILE_SIZE: {\n        toast.error(\n          `The size of files ${data.files\n            .map((f) => f.name)\n            .join(', ')} is invalid`\n        );\n\n        break;\n      }\n      case UploadErrorCode.INVALID_FILE_TYPE: {\n        toast.error(\n          `The type of files ${data.files\n            .map((f) => f.name)\n            .join(', ')} is invalid`\n        );\n\n        break;\n      }\n      case UploadErrorCode.TOO_LARGE: {\n        toast.error(\n          `The size of files ${data.files\n            .map((f) => f.name)\n            .join(', ')} is too large than ${data.maxFileSize}`\n        );\n\n        break;\n      }\n      case UploadErrorCode.TOO_LESS_FILES: {\n        toast.error(\n          `The mini um number of files is ${data.minFileCount} for ${data.fileType}`\n        );\n\n        break;\n      }\n      case UploadErrorCode.TOO_MANY_FILES: {\n        toast.error(\n          `The maximum number of files is ${data.maxFileCount} ${\n            data.fileType ? `for ${data.fileType}` : ''\n          }`\n        );\n\n        break;\n      }\n    }\n  }, [uploadError]);\n};\n",
      "type": "registry:ui"
    }
  ],
  "meta": {
    "docs": [
      {
        "route": "/docs/media"
      }
    ],
    "examples": [
      "media-demo",
      "media-pro"
    ]
  },
  "type": "registry:ui"
}