Render a file edit/write tool call as a diff card with header, +/- line stats, line-level diff body, and an optional Apply/Skip approval footer. State-driven (completed / pending / waiting). Self-contained port from 21st.dev Agent Elements.
import { EditTool } from "@/components/ui/edit-tool"; const oldContent = `export const metadata = { title: 'Old' }; export default function Page() { return <div>Old content</div>; } `; const newContent = `export const metadata = { title: 'Updated' }; export default function Page() { return ( <div> <h1>Release notes</h1> <p>New layout applied.</p> </div> ); } `; export default function Demo() { return ( <div className="flex items-center justify-center w-full min-h-screen bg-background p-8 overflow-hidden"> <div className="w-full max-w-md"> <EditTool filePath="/app/page.tsx" oldContent={oldContent} newContent={newContent} /> </div> </div> ); }
Part of Agent Elements — browse the full library on 21st.dev.