Creating a Responsive Login Form with Material-UI

Creating a Responsive Login Form with Material-UI

In today's tutorial, we'll walk through the process of creating a responsive login form using Material-UI, a popular React UI framework. This form includes features such as client-side validation for email and password inputs, and it can display alerts for successful logins.

Prerequisites

Before we get started, ensure you have the following:

  • Basic knowledge of React.

  • Node.js and npm (Node Package Manager) installed on your system.

Setting Up the Project

First, create a new React project using Create React App or your preferred method. You'll need to install Material-UI for the UI components used in the form. You can do this with:

npm install @mui/material @mui/icons-material

Now, let's dive into the code.

The LoginForm Component

The heart of our login form is the LoginForm component. This component is built with various Material-UI components and manages state using React's useState hook. Let's go through its key parts:

Importing Dependencies

We start by importing the necessary components and dependencies. These include Alert, Button, TextField, Paper, Box, Grid, Snackbar, Typography, and the logo image we want to display.

Setting Up State

In our LoginForm component, we initialize the showAlert state variable using the useState hook. This variable will control whether to display alerts.

Form Validation

The validateForm function is responsible for form validation. It extracts the email and password from the form data and uses the email-validator library to validate the email's format. It also checks whether the password meets specific criteria (8 characters, one uppercase, one lowercase, one number, one special character).

Handling Form Submission

The handleSubmit function handles form submission. It logs the email and password and calls the validateForm function. If the form is valid, it sets showAlert to "Login Successful."

Displaying Alerts

We use the Snackbar and Alert components from Material-UI to display alerts. The Snackbar displays an alert message when showAlert is true, and it automatically hides after 6 seconds.

Creating the Form

Inside a Material-UI Grid, we have a Paper component for the login form. A Box component is used to center its contents, which include an image, a heading, and the form itself.

Custom Styles

We set custom styles for elements using the sx prop, allowing us to style components in a more React-friendly way.

Conclusion

By following this tutorial, you've learned how to create a responsive login form with client-side validation using Material-UI and React. This form provides an excellent starting point for building authentication systems in your web applications.

Feel free to enhance and customize this form to suit your specific project needs. You can add more advanced validation, integrate it with a backend server for authentication, or adapt the design to your application's theme.

Happy coding!