import { useState } from 'react';
function App() {
const [todos, setTodos] = useState([
{ id: 1, text: "買い物に行く", completed: false },
{ id: 2, text: "レポートを書く", completed: true },
{ id: 3, text: "メールを返信する", completed: false },
]);
const toggleTodo = (id: number) => {
setTodos(todos.map(todo =>
todo.id === id ? { ...todo, completed: !todo.completed } : todo
));
};
return (
<div style={{ padding: '20px', maxWidth: '500px', margin: '0 auto' }}>
<h2>Todo リスト</h2>
<div style={{ marginTop: '20px' }}>
{todos.map(todo => (
<div
key={todo.id}
style={{
padding: '15px',
marginBottom: '10px',
backgroundColor: todo.completed ? '#d4edda' : '#f8f9fa',
border: `1px solid ${todo.completed ? '#c3e6cb' : '#dee2e6'}`,
borderRadius: '4px',
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center'
}}
>
<div style={{ display: 'flex', alignItems: 'center', gap: '10px' }}>
<span style={{ fontSize: '20px' }}>
{todo.completed ? '☑' : '□'}
</span>
<span style={{
textDecoration: todo.completed ? 'line-through' : 'none',
color: todo.completed ? '#666' : '#000'
}}>
{todo.text}
</span>
</div>
<button
onClick={() => toggleTodo(todo.id)}
style={{
padding: '5px 15px',
fontSize: '14px',
backgroundColor: todo.completed ? '#ffc107' : '#28a745',
color: 'white',
border: 'none',
borderRadius: '4px',
cursor: 'pointer'
}}
>
{todo.completed ? '未完了' : '完了'}
</button>
</div>
))}
</div>
</div>
);
}
export default App;