"use client"; import { useEffect, useState } from "react"; export default function JsonInput({ value, onChange, className = "", ...props }: { value: string; onChange: (v: string) => void; className?: string; [key: string]: any; }) { const [error, setError] = useState(null); useEffect(() => { // Auto-format valid JSON on mount or when value changes externally if (value.trim() !== "") { try { const parsed = JSON.parse(value); const formatted = JSON.stringify(parsed, null, 2); if (formatted !== value) { onChange(formatted); } setError(null); } catch (err: any) { setError(err.message); } } }, [value, onChange]); function handleInput(e: React.ChangeEvent) { const val = e.target.value; try { if (val.trim() !== "") { JSON.parse(val); } setError(null); onChange(val); } catch (err: any) { setError(err.message); onChange(val); } } function handleFormat() { try { const formatted = JSON.stringify(JSON.parse(value), null, 2); setError(null); onChange(formatted); } catch (err: any) { setError("Invalid JSON"); } } return (