/* You don't need to change anything in here. */ import { FunctionComponent } from "react"; import ReactDOM from "react-dom/client"; import "./index.scss"; import { BrowserRouter, Routes, Route, useParams, Navigate, } from "react-router-dom"; import Intro from "./Intro"; import { NavLink } from "react-router-dom"; import Task1 from "./1"; import Task2 from "./2"; import Task3 from "./3"; import Task4 from "./4"; import Task5 from "./5"; import Task6 from "./6"; const Menu: FunctionComponent = () => { return ( ); }; interface ContainerProps { children: React.ReactNode; } const Container: FunctionComponent = (props) => { return ( <>
{props.children}
); }; interface TaskContainerProps { children: React.ReactNode; } const TaskContainer: FunctionComponent = (props) => { return
{props.children}
; }; const Task: FunctionComponent = () => { let { id } = useParams<{ id: string }>(); switch (id) { case "1": return ( <>

Task 1 - Create a list

This first task is purely about using JSX. Make an ordinary unordered list using 'ul' and li'. The list must{" "} not be static. You have to use the array in state and{" "} iterate over it.

); case "2": return ( <>

Task 2 - Create a controlled input

This task is purely about using React's synthetic event{" "} system. Use the existing input and paragraph to display the{" "} the input value in the paragraph. The paragraph must be kept in sync.

); case "3": return ( <>

Task 3 - Create a searchable list

Use the knowledge you used in the previous 2 tasks to make at searchable list. You must have a input and a{" "} list. The list should be filtered using the value in the input as the user types.

); case "4": return ( <>

Task 4 - Use styles

This task is mainly about styling in ReactJS in order to create a beautiful UI. Use Less to style the form with interaction feedback such as hover, focus and so on. The goal is to make the form as aesthetically pleasing as possible.

); case "5": return ( <>

Task 5 - Use component composition

Use the knowledge you used in the previous tasks to make a searchable list. The requirement is the same as with Task 3.

Except, this time you must encapsulate the UI parts into small components. This means the Input and List goes into different small components. In order to communicate between the input and the list, the parent component must be used by passing props and managing state.

); case "6": return ( <>

Task 6 - Create a Todo List and/or Freestyle

This task is mainly about combining different concepts from ReactJS in order to create a small and simple application.

You can either choose to create a tiny application your self or follow the description below to create a todo app:

    Create todos Mark them as done See a list of done todos and a list of pending todos. Search for todos Delete todos

Feel free to use Less to style the applications and to install third-party packages if needed.

); default: return ; } }; const root = ReactDOM.createRoot( document.getElementById("root") as HTMLElement ); root.render( } /> } /> } /> );