1.0.1 • Published 2 years ago
mui-tw-merge v1.0.1
mui-tw-merge
Installation
1. Install @mui/material and tailwindcss:
npm:
npm i @mui/material @emotion/react @emotion/stylednpm i -D tailwindcss postcss autoprefixeryarn:
yarn add @mui/material @emotion/react @emotion/styledyarn i -D tailwindcss postcss autoprefixerpnpm:
pnpm i @mui/material @emotion/react @emotion/styledpnpm i -D tailwindcss postcss autoprefixer2. Install mui-tw-merge as a dev dependency:
npm:
npm i -D mui-tw-mergeyarn:
yarn add -D mui-tw-mergepnpm:
pnpm i -D mui-tw-mergeUsage
1. Create a new Material UI theme in tailwind.config.ts
import { Config } from "tailwindcss";
import { createTheme } from "@mui/material/styles";
import {
  mergeSpacing,
  mergeScreens,
  mergePalette,
  mergeShadows,
  mergeTransitionEasing,
  mergeTransitionDuration,
} from "mui-tw-merge";
const materialTheme = createTheme({ /* your MUI theme config */ })
const config: Config = {
  content: [],
  theme: {
    extend: {
      spacing: mergeSpacing(materialTheme),
      screens: mergeScreens(materialTheme),
      colors: mergePalette(materialTheme),
      boxShadow: mergeShadows(materialTheme),
      dropShadow: mergeShadows(materialTheme),
      transitionTimingFunction: mergeTransitionEasing(materialTheme),
      transitionDuration: mergeTransitionDuration(materialTheme),
    },
  },
};
export default config;2. Use MUI theme's properties as tailwind classes
import Button from "@mui/material/Button";
export const MyComponent = () => {
  return (
    <div className="flex flex-col gap-3">
      <p className="mb-1">My margin-bottom is theme.spacing(1)</p>
      <button type="button" className="bg-primary-main">
        My background-color is theme.palette.primary.main
      </button>
      <Button className="duration-shortest ease-sharp transition-shadow hover:shadow-18">
        It also works with MUI Components
      </Button>
    </div>
  );
};