1. Import the necessary UI components (ToolCall, ToolResult, ToolApproval) from the library.
2. Determine the current state of the tool (pending, running, approval, success, error).
3. Based on the tool's state, render the appropriate UI component.
4. Pass the tool's name, arguments, and status as props to the component.
5. For ToolApproval, provide functions for handling approval and denial actions.
6. Style the tool cards using CSS classes for visual customization.
7. Integrate the components within an Agent component to handle the tool lifecycle automatically.