import React, { useState } from "react"; interface JsonViewProps { data: unknown; depth?: number; } export function JsonView({ data, depth = 0 }: JsonViewProps) { const [collapsed, setCollapsed] = useState(depth > 2); if (data === null) { return null; } if (typeof data === "boolean") { return {String(data)}; } if (typeof data === "number") { return {String(data)}; } if (typeof data === "string") { return "{data}"; } if (Array.isArray(data)) { if (collapsed) { return ( setCollapsed(false)} > [{data.length} items] ); } return ( setCollapsed(true)} > [ {data.map((item, i) => ( {i < data.length - 1 ? "," : ""} ))} ] ); } if (typeof data === "object") { const keys = Object.keys(data); if (collapsed) { return ( setCollapsed(false)} > {"{" + keys.length + " keys}"} ); } return ( setCollapsed(true)} > {"{"} {keys.map((key, i) => ( "{key}":{" "} )[key]} depth={depth + 1} /> {i < keys.length - 1 ? "," : ""} ))} {"}"} ); } return {String(data)}; }