Create theme

You can create a new theme based on the default ones. Let's say you need a purple-dark theme. You can create it by adding the following code to your tailwind.config.js file.

We recommend adding a palette that ranges from 50 to 900. You can use tools like Eva Design System, Smart Watch, Palette or Color Box to generate your palette.

Add the new theme to the plugin

// tailwind.config.js
const {nextui} = require("@nextui-org/react");
/** @type {import('tailwindcss').Config} */
module.exports = { plugins: [
nextui({
themes: {
"purple-dark": {
extend: "dark", // <- inherit default values from dark theme
colors: {
background: "#0D001A",
foreground: "#ffffff",
primary: {
50: "#3B096C",
100: "#520F83",
200: "#7318A2",
300: "#9823C2",
400: "#c031e2",
500: "#DD62ED",
600: "#F182F6",
700: "#FCADF9",
800: "#FDD5F9",
900: "#FEECFE",
DEFAULT: "#DD62ED",
foreground: "#ffffff",
},
focus: "#F182F6",
},
layout: {
disabledOpacity: "0.3",
radius: {
small: "4px",
medium: "6px",
large: "8px",
},
borderWidth: {
small: "1px",
medium: "2px",
large: "3px",
},
},
},
},
}),
],
};
plugins: [
nextui({
themes: {
"purple-dark": {
extend: "dark", // <- inherit default values from dark theme
colors: {
background: "#0D001A",
foreground: "#ffffff",
primary: {
50: "#3B096C",
100: "#520F83",
200: "#7318A2",
300: "#9823C2",
400: "#c031e2",
500: "#DD62ED",
600: "#F182F6",
700: "#FCADF9",
800: "#FDD5F9",
900: "#FEECFE",
DEFAULT: "#DD62ED",
foreground: "#ffffff",
},
focus: "#F182F6",
},
layout: {
disabledOpacity: "0.3",
radius: {
small: "4px",
medium: "6px",
large: "8px",
},
borderWidth: {
small: "1px",
medium: "2px",
large: "3px",
},
},
},
},
}),
],
};

Apply the new theme

Now, applying the new theme is as simple as adding the theme name purple-dark to the className of the html / body or main element.

// main.tsx or main.jsx
import React from "react";
import ReactDOM from "react-dom/client";
import {NextUIProvider} from "@nextui-org/react";
import App from "./App";
import "./index.css";
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<NextUIProvider>
<main className="purple-dark text-foreground bg-background">
<App />
</main>
</NextUIProvider>
</React.StrictMode>,
);

Use the new theme

All components that use the primary color will be affected by this change.

import {Button} from "@nextui-org/react";
export default function App() { return (
<div className="flex flex-wrap gap-4 items-center">
<Button color="primary" variant="solid">
Solid </Button>
<Button color="primary" variant="faded">
Faded </Button>
<Button color="primary" variant="bordered">
Bordered </Button>
<Button color="primary" variant="light">
Light </Button>
<Button color="primary" variant="flat">
Flat </Button>
<Button color="primary" variant="ghost">
Ghost </Button>
<Button color="primary" variant="shadow">
Shadow </Button>
</div>
);
}
return (
<div className="flex flex-wrap gap-4 items-center">
<Button color="primary" variant="solid">
Solid
</Button>
<Button color="primary" variant="faded">
Faded
</Button>
<Button color="primary" variant="bordered">
Bordered
</Button>
<Button color="primary" variant="light">
Light
</Button>
<Button color="primary" variant="flat">
Flat
</Button>
<Button color="primary" variant="ghost">
Ghost
</Button>
<Button color="primary" variant="shadow">
Shadow
</Button>
</div>
);
}