Implement a simple TODO app that functions as described below.
If you are unsure about how a feature should work, open the real TodoApp and observe its behavior.
- Learn the markup in
App.tsx. - Show only a field to create a new todo if there are no todos yet.
- Use React Context to manage todos.
- Each todo should have an
id(you can use+new Date()), atitle, and acompletedstatus (falseby default). - Save
todostolocalStorageusingJSON.stringifyafter each change. - Display the number of not completed todos in
TodoApp. - Implement filtering by status (
All/Active/Completed). - Add the ability to delete a todo using the
xbutton. - Implement the
clearCompletedbutton (disabled if there are no completed todos). - Implement individual todo status toggling.
- Implement the
toggleAllcheckbox (checked only when all todos are completed). - Enable inline editing for the
TodoItem:- Double-clicking on the todo title shows a text field instead of the title and
deleteButton. - Form submission saves changes (press
Enterto save). - Trim the saved text.
- Delete the todo if the title is empty.
- Save changes
onBlur. - Pressing
Escapecancels editing (useonKeyUpand check ifevent.key === 'Escape').
- Double-clicking on the todo title shows a text field instead of the title and
- Install the Prettier Extension and use these VSCode settings to enable format on save.
- Implement a solution following the React task guidelines.
- Use the React TypeScript cheat sheet.
- Open another terminal and run tests with
npm testto ensure your solution is correct. - Replace
<your_account>with your GitHub username in the DEMO LINK and add it to the PR description.

