# Intelligent Components
URL: /docs/copilots/motivation
Add intelligence to React components through readable interfaces and assistant tools.
React revolutionized web development with components that combine logic, structure, and style. Now, with assistant-ui, we're adding a fourth dimension: intelligence. Let's learn how to build smart components through a practical banking app example.
The Evolution of Components \[#the-evolution-of-components]
Traditional React components combine three elements:
```tsx
// Traditional React Component
function TransactionHistory({ transactions }) {
// 1. Logic (JavaScript/TypeScript)
const handleRefund = (transactionId) => {
// Process refund...
};
// 2. Structure (JSX/TSX)
return (
// 3. Style (CSS via className)
{transactions.map((transaction) => (
${transaction.amount}{transaction.merchant}
))}
);
}
```
Adding Intelligence \[#adding-intelligence]
With assistant-ui, we can enhance this component with intelligence using four powerful APIs:
1. Making Components Readable (makeAssistantVisible) \[#1-making-components-readable-makeassistantvisible]
First, let's make our buttons "readable" and interactive:
```tsx
import { makeAssistantVisible } from "@assistant-ui/react";
// Make the refund button intelligent
const SmartButton = makeAssistantVisible(
({ onClick, children }) => ,
{
clickable: true, // Allow the assistant to click the button
},
);
function TransactionHistory({ transactions }) {
return (