+ {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */}
+
+
+ {isEditing ? (
+
setEditTitle(e.target.value)}
+ onBlur={doSubmit}
+ onKeyDown={handleKeyDown}
+ onKeyUp={handleKeyUp}
+ />
+ ) : (
+ <>
+
+ {todo.title}
+
+
+ >
+ )}
+
+
+
+ );
+};
diff --git a/src/components/TodoList.tsx b/src/components/TodoList.tsx
new file mode 100644
index 0000000000..5a5aeb903b
--- /dev/null
+++ b/src/components/TodoList.tsx
@@ -0,0 +1,48 @@
+import React from 'react';
+import { TransitionGroup, CSSTransition } from 'react-transition-group';
+import { Todo } from '../types/Todo';
+import { TodoItem } from './TodoItem';
+
+type Props = {
+ todos: Todo[];
+ tempTodo: Todo | null;
+ loadingIds: number[];
+ onDelete: (id: number) => Promise