About
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.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Edit Tool to your project and fits it to your theme.
Code
How Edit Tool is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
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>New content</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}
approval={{ approveLabel: "Apply", rejectLabel: "Skip" }}
/>
</div>
</div>
);
}















