Published on October 24, 2024By DeveloperBreeze

Integrating Flowbite with Tailwind CSS: A Step-by-Step Tutorial

Enhancing your web development workflow with Tailwind CSS is a fantastic choice for creating modern, responsive designs. To further streamline your UI development, Flowbite offers a comprehensive collection of pre-designed components built on top of Tailwind CSS. This tutorial will guide you through the process of adding Flowbite to your Tailwind CSS project, enabling you to utilize its rich set of UI components effortlessly.

Table of Contents

  1. [Prerequisites](#prerequisites)
  2. [Setting Up Your Project](#setting-up-your-project)
  3. [Installing Tailwind CSS](#installing-tailwind-css)
  4. [Installing Flowbite](#installing-flowbite)
  5. [Configuring Tailwind CSS to Include Flowbite](#configuring-tailwind-css-to-include-flowbite)
  6. [Using Flowbite Components in Your HTML](#using-flowbite-components-in-your-html)
  7. [Building Your CSS](#building-your-css)
  8. [Linking the CSS in Your HTML](#linking-the-css-in-your-html)
  9. [Final Steps and Testing](#final-steps-and-testing)
  10. [Conclusion](#conclusion)

Prerequisites

Before you begin, ensure you have the following:

  • Node.js and npm Installed: Tailwind CSS and Flowbite are Node.js-based tools. Download and install Node.js from the [official website](https://nodejs.org/), which includes npm.
  • Basic Knowledge of HTML and CSS: Familiarity with HTML structure and CSS will help you follow along more effectively.
  • Code Editor: Use any code editor of your choice, such as [Visual Studio Code](https://code.visualstudio.com/).

Setting Up Your Project

  1. Create a New Project Directory

Open your terminal or command prompt and create a new directory for your project:

   mkdir tailwind-flowbite-project
   cd tailwind-flowbite-project
  1. Initialize a New Node.js Project

Initialize your project with default settings by creating a package.json file:

   npm init -y

This command generates a package.json file with default configurations, which will manage your project's dependencies.


Installing Tailwind CSS

Tailwind CSS is a utility-first CSS framework that allows for rapid UI development. Follow these steps to install and configure Tailwind CSS in your project.

  1. Install Tailwind CSS via npm

Run the following command to install Tailwind CSS and its peer dependencies:

   npm install -D tailwindcss postcss autoprefixer
  1. Initialize Tailwind CSS Configuration

Generate tailwind.config.js and postcss.config.js files by running:

   npx tailwindcss init -p
  • tailwind.config.js: This file allows you to customize Tailwind's default configuration.
  • postcss.config.js: Configures PostCSS plugins, including Tailwind CSS and Autoprefixer.
  1. Configure the Template Paths

Open tailwind.config.js and specify the paths to all of your template files. This ensures that Tailwind can purge unused styles in production, optimizing your CSS bundle.

   // tailwind.config.js

   module.exports = {
     content: [
       "./src/**/*.{html,js}", // Adjust the paths according to your project structure
       "./node_modules/flowbite/**/*.js", // Include Flowbite's components
     ],
     theme: {
       extend: {},
     },
     plugins: [
       require('flowbite/plugin') // Include Flowbite's plugin
     ],
   };

> Note: Including ./node_modules/flowbite/**/*.js ensures that Tailwind scans Flowbite's components for class names.

  1. Create Your CSS File

Inside your project directory, create a src folder and add a styles.css file:

   mkdir src
   touch src/styles.css

Populate styles.css with the following directives to include Tailwind's base, components, and utilities:

   /* src/styles.css */

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

   /* Optionally, add any custom styles below */

Installing Flowbite

Flowbite provides a set of interactive UI components built with Tailwind CSS. Integrating Flowbite into your project enhances your ability to create sophisticated interfaces quickly.

  1. Install Flowbite via npm

Run the following command in your project directory:

   npm install flowbite

This command adds Flowbite to your project's dependencies, allowing you to utilize its components.


Configuring Tailwind CSS to Include Flowbite

To ensure that Tailwind CSS recognizes Flowbite's components and styles, you need to configure your tailwind.config.js appropriately.

  1. Update tailwind.config.js

Ensure your tailwind.config.js includes Flowbite's plugin and content paths as shown earlier. Here's the complete configuration for reference:

   // tailwind.config.js

   module.exports = {
     content: [
       "./src/**/*.{html,js}",
       "./node_modules/flowbite/**/*.js",
     ],
     theme: {
       extend: {},
     },
     plugins: [
       require('flowbite/plugin')
     ],
   };

This configuration tells Tailwind to scan both your project's source files and Flowbite's components for class names, enabling the proper generation of styles.


Using Flowbite Components in Your HTML

With Flowbite installed and configured, you can now incorporate its components into your HTML files. Flowbite offers a variety of components such as buttons, modals, navbars, and more.

  1. Create an HTML File

Inside the src directory, create an index.html file:

   touch src/index.html
  1. Set Up the Basic HTML Structure

Populate index.html with a basic HTML structure and include Flowbite's JavaScript bundle for interactive components:

   <!-- src/index.html -->

   <!DOCTYPE html>
   <html lang="en">
   <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Tailwind CSS with Flowbite</title>
     <link rel="stylesheet" href="output.css"> <!-- Link to the built CSS file -->
   </head>
   <body>
     <!-- Example Flowbite Button -->
     <button data-modal-target="authentication-modal" data-modal-toggle="authentication-modal" class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center" type="button">
       Toggle Modal
     </button>

     <!-- Flowbite Modal Component -->
     <div id="authentication-modal" tabindex="-1" aria-hidden="true" class="hidden overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 w-full md:inset-0 h-modal md:h-full">
       <div class="relative p-4 w-full max-w-md h-full md:h-auto">
         <!-- Modal content -->
         <div class="relative bg-white rounded-lg shadow dark:bg-gray-700">
           <button type="button" class="absolute top-3 right-2.5 text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-800 dark:hover:text-white" data-modal-hide="authentication-modal">
             <svg aria-hidden="true" class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
               <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
             </svg>
             <span class="sr-only">Close modal</span>
           </button>
           <div class="py-6 px-6 lg:px-8">
             <h3 class="mb-4 text-xl font-medium text-gray-900 dark:text-white">Sign in to our platform</h3>
             <form class="space-y-6" action="#">
               <div>
                 <label for="email" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Your email</label>
                 <input type="email" name="email" id="email" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white" placeholder="name@company.com" required>
               </div>
               <div>
                 <label for="password" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Your password</label>
                 <input type="password" name="password" id="password" placeholder="••••••••" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white" required>
               </div>
               <button type="submit" class="w-full text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">Sign in</button>
             </form>
           </div>
         </div>
       </div>
     </div>

     <script src="https://unpkg.com/flowbite@1.6.5/dist/flowbite.js"></script>
   </body>
   </html>

Explanation:

  • Flowbite Components: The example includes a Flowbite button that toggles a modal. You can replace this with any Flowbite component as per your requirements.
  • JavaScript Bundle: Flowbite's JavaScript is included via a CDN link. For production projects, consider installing Flowbite's JavaScript via npm for better performance and control.

Building Your CSS

To generate the final CSS file that includes both Tailwind CSS and Flowbite styles, you need to build your CSS using Tailwind's CLI tool.

  1. Update package.json Scripts

For convenience, add a build script to your package.json to streamline the CSS building process:

   // package.json

   {
     "name": "tailwind-flowbite-project",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
       "build:css": "npx tailwindcss build src/styles.css -o src/output.css"
     },
     "keywords": [],
     "author": "",
     "license": "ISC",
     "devDependencies": {
       "autoprefixer": "^10.4.12",
       "flowbite": "^1.6.5",
       "postcss": "^8.4.18",
       "tailwindcss": "^3.1.8"
     }
   }

Explanation:

  • build:css Script: This script tells Tailwind to process src/styles.css and output the final CSS to src/output.css.
  1. Build the CSS File

Run the build script to generate the output.css file:

   npm run build:css

Expected Output:

   @tailwind base;
   @tailwind components;
   @tailwind utilities;
   /* ...additional Flowbite and custom styles... */

This command compiles Tailwind's directives along with Flowbite's styles into a single CSS file.

> Tip: For continuous development, consider setting up a watch script to automatically rebuild CSS on file changes.


Linking the CSS in Your HTML

Ensure that your HTML file references the newly built CSS file so that Tailwind and Flowbite styles are applied correctly.

  1. Update the <link> Tag in index.html

Modify the <link> tag in your index.html to point to output.css:

   <!-- src/index.html -->

   <link rel="stylesheet" href="output.css">

Full Example:

   <!DOCTYPE html>
   <html lang="en">
   <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Tailwind CSS with Flowbite</title>
     <link rel="stylesheet" href="output.css"> <!-- Link to the built CSS file -->
   </head>
   <body>
     <!-- Your HTML content with Flowbite components -->
   </body>
   </html>

Final Steps and Testing

  1. Serve Your Project Locally

To view your project in the browser, you can use a simple HTTP server. Install the live-server package globally:

   npm install -g live-server

Then, run the server from your project's src directory:

   live-server src

This command opens your project in the default browser and reloads automatically on file changes.

  1. Test Flowbite Components

Interact with the Flowbite components in your index.html to ensure they function correctly. For instance, clicking the "Toggle Modal" button should open the modal dialog as expected.

![Flowbite Modal Example](https://flowbite.com/docs/images/modal-example.png)

> Note: Ensure that JavaScript components like modals, dropdowns, and carousels are working by testing their interactivity.

  1. Customize and Expand

Explore Flowbite's [documentation](https://flowbite.com/docs/) to discover a wide range of components and utilities. Customize components to fit your project's design requirements, leveraging Tailwind CSS's utility classes for flexibility.


Conclusion

Integrating Flowbite with Tailwind CSS significantly accelerates your UI development process by providing ready-to-use, customizable components that adhere to modern design principles. By following this tutorial, you've successfully:

  • Set Up: Initialized a Node.js project and installed Tailwind CSS.
  • Installed Flowbite: Added Flowbite to your project via npm.
  • Configured Tailwind: Updated Tailwind's configuration to include Flowbite's styles.
  • Built CSS: Compiled Tailwind and Flowbite styles into a single CSS file.
  • Implemented Components: Utilized Flowbite's components in your HTML.

Key Takeaways:

  • Seamless Integration: Flowbite complements Tailwind CSS by offering a plethora of interactive components, enhancing the design and functionality of your web projects.
  • Customization: Both Tailwind CSS and Flowbite are highly customizable, allowing you to tailor components to match your design aesthetics precisely.
  • Efficiency: Leveraging pre-built components reduces development time, enabling you to focus on building unique features rather than reinventing UI elements.

As you continue to develop your project, explore more of Flowbite's components and Tailwind CSS's utilities to create a dynamic and responsive user interface. Always refer to the official [Flowbite documentation](https://flowbite.com/docs/) and [Tailwind CSS documentation](https://tailwindcss.com/docs) for the latest updates, best practices, and advanced configurations.

Happy Coding!

Comments

Please log in to leave a comment.

Continue Reading:

Tailwind Browser Mockup

Published on January 26, 2024

Tailwind & AlpineJs Accordion

Published on January 26, 2024

Drag and drop Input

Published on January 26, 2024

Tailwind Drag and Drop Input

Published on January 26, 2024

Simple and Clean Tailwind Buttons

Published on January 26, 2024

Tailwind Buttons with Arrow Icon

Published on January 26, 2024

AI Interactive Chat Interface

Published on January 26, 2024

Tailwind CSS message box Container

Published on January 26, 2024

AI Chat Interface with Online Assistant

Published on January 26, 2024