Open In App

Create Drawer Component using React and Tailwind CSS

Last Updated : 01 Oct, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

A drawer component is a sliding panel that comes from the side of the screen, often used for navigation menus or displaying additional content. In this article, we will learn how to create a responsive drawer component in React using Tailwind CSS for styling.

Prerequisites

Approach to Create Drawer Component

  • Use tools like Create React App to set up a new project quickly. Add Tailwind CSS to your project to utilize its utility-first CSS classes.
  • In your main application file, implement state management to control whether the Drawer is open or closed.
  • Develop a mechanism that allows users to open and close the Drawer with a button click.
  • Utilize Tailwind CSS utility classes to style the Drawer, ensuring a smooth user experience with transitions and responsiveness.

Steps to Create Drawer Component

Step 1: Set up the React project using the command

npx create-react-app drawer-component-app  

Step 2: Navigate to the path of the directory and install Tailwind CSS using the command

cd drawer-component-app  
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

Step 3: Configure the Tailwind paths in your tailwind.config.js file

/** @type {import('tailwindcss').Config} */  
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}

Step 4: Add Tailwind directives to your index.css file

@tailwind base;  
@tailwind components;
@tailwind utilities;

Project Structure

dra
Project Structure

Updated Dependencies

"dependencies": {
"@material-tailwind/react": "^2.1.10",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
}

Example: Below is an example of a responsive drawer component using React. The component includes a button to toggle the drawer and Tailwind CSS classes for smooth transitions and responsive design.

JavaScript
// src/App.js 

import React, { useState } from "react";

const App = () => {
    const [isOpen, setIsOpen] = useState(false);

    const toggleDrawer = () => {
        setIsOpen(!isOpen);
    };

    return (
        <div className="h-screen flex items-center justify-center
        bg-gray-100">
            <button
                onClick={toggleDrawer}
                className="bg-blue-500 text-white px-4 py-2 rounded-lg 
                hover:bg-blue-600 transition-colors"
            >
                Drawer component
            </button>

            <div
                className={`fixed top-0 left-0 w-64 h-full bg-white shadow-lg
                transition-transform transform ${isOpen ? "translate-x-0" : 
                "-translate-x-full"}`}
            >
                <div className="p-4">
                    <h2 className="text-xl font-semibold mb-4">Drawer Menu</h2>
                    <ul className="space-y-4">
                        <li><a href="#" className="text-gray-800 hover:text-blue-500">
                        Home</a></li>
                        <li><a href="#" className="text-gray-800 hover:text-blue-500">
                        Profile</a></li>
                        <li><a href="#" className="text-gray-800 hover:text-blue-500">
                        Settings</a></li>
                        <li><a href="#" className="text-gray-800 hover:text-blue-500">
                        Help</a></li>
                    </ul>
                </div>
                <button
                    onClick={toggleDrawer}
                    className="absolute top-4 right-4 text-gray-600"
                >
                    Close
                </button>
            </div>
        </div>
    );
};

export default App;  


To start the Application, run the following command

npm start  

Output

The drawer component will appear from the left side of the screen when the "Toggle Drawer" button is clicked. It will slide in and out smoothly, offering a clean and responsive drawer navigation experience. The drawer menu items can be customized as needed, making it suitable for various applications.


Next Article

Similar Reads