import React from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { FileJson } from "lucide-react"; import { JsonView, defaultStyles } from "react-json-view-lite"; import "react-json-view-lite/dist/index.css"; interface JsonMetadataViewerProps { title: string; metadata: any; trigger?: React.ReactNode; } export function JsonMetadataViewer({ title, metadata, trigger }: JsonMetadataViewerProps) { // Ensure metadata is a valid object const jsonData = React.useMemo(() => { if (!metadata) return {}; try { // If metadata is a string, try to parse it if (typeof metadata === "string") { return JSON.parse(metadata); } // Otherwise, use it as is return metadata; } catch (error) { console.error("Error parsing JSON metadata:", error); return { error: "Invalid JSON metadata" }; } }, [metadata]); return ( {trigger || ( )} {title} - Metadata
); }