Published on

How to Use Angular Material UI and Tailwind CSS Together

Authors
  • Name
    Ripal & Zalak
    Twitter

How to Use Angular Material UI and Tailwind CSS Together

Introduction

Combining Angular Material UI and Tailwind CSS can seem challenging but offers a powerful way to create visually appealing and responsive web applications. While Angular Material provides robust, pre-built UI components adhering to Material Design guidelines, Tailwind CSS is a utility-first CSS framework that enables faster and more customizable styling. This guide will explain how to integrate these technologies effectively.


Why Use Angular Material with Tailwind CSS?

Angular Material Benefits:

  • Pre-built components with Material Design.
  • High accessibility standards.
  • Seamless integration with Angular apps.

Tailwind CSS Benefits:

  • Utility-first approach for flexibility.
  • Reduces the need to write custom CSS.
  • Easy customization with a configuration file.

By combining these, you can leverage Angular Material's ready-to-use components and use Tailwind CSS to handle layout and design adjustments.


Setting Up Tailwind CSS in an Angular Project

To use Tailwind CSS in your Angular project, follow these steps:

  1. Install Tailwind CSS:

    npm install -D tailwindcss postcss autoprefixer
    npx tailwindcss init
    
  2. Configure Tailwind: Add the following paths to the content array in tailwind.config.js:

    module.exports = {
      content: ['./src/**/*.{html,ts}'],
      theme: {
        extend: {},
      },
      plugins: [],
    }
    
  3. Include Tailwind in Styles: Add Tailwind's base, components, and utilities to your src/styles.scss or src/styles.css file:

    @tailwind base;
    @tailwind components;
    @tailwind utilities;
    
  4. Build the Project: Run your Angular application to ensure Tailwind is integrated.

    ng serve
    

Using Angular Material and Tailwind Together

Step 1: Add Angular Material

Install Angular Material in your project if not already done:

ng add @angular/material

Configure the global theme in the angular-styles.scss file:

@use '@angular/material' as mat;

$my-theme: mat.define-light-theme(
  (
    color: (
      primary: mat.define-palette(mat.$indigo-palette),
      accent: mat.define-palette(mat.$pink-palette),
      warn: mat.define-palette(mat.$red-palette),
    ),
    typography: mat.define-typography-config(),
  )
);

@include mat.all-component-themes($my-theme);

Step 2: Match Tailwind Configuration with Angular Material

Synchronize Tailwind's theme configuration with Angular Material's palette:

module.exports = {
  theme: {
    colors: {
      primary: '#3f51b5', // Material Indigo
      accent: '#e91e63', // Material Pink
      warn: '#f44336', // Material Red
    },
    extend: {},
  },
}

Step 3: Combine Tailwind Classes with Material Components

Use Tailwind classes on Angular Material components for layout and spacing. Example:

<mat-card class="max-w-md rounded-lg p-4 shadow-lg">
  <mat-card-title class="text-xl font-bold">Card Title</mat-card-title>
  <mat-card-content>
    <p class="text-gray-600">This is an example of using Tailwind CSS with Angular Material.</p>
  </mat-card-content>
</mat-card>

Important Note:

Avoid using Tailwind to directly override Angular Material styles. Instead, use it for layout adjustments and container styling.


FAQs

Q: Can I use Tailwind classes directly on Angular Material components? Yes, you can apply Tailwind classes directly to Material components, e.g., <mat-card class="p-4 m-4">.

Q: How do I handle conflicts between Angular Material and Tailwind CSS styles? Use Tailwind's important configuration in tailwind.config.js:

module.exports = {
  important: true,
  theme: {},
}

Q: Is it sustainable to use both frameworks together? Yes, as long as you clearly separate concerns—using Material for components and Tailwind for layouts.