テーマを作成する

デフォルトのテーマに基づいて新しいテーマを作成できます。例えば、purple-dark というテーマが必要だとします。その場合、tailwind.config.js ファイルに以下のコードを追加することで作成できます。

色のパレットは50から900の範囲で追加することをお勧めします。パレットの生成には、Eva Design SystemSmart WatchPalette、またはColor Boxなどのツールをご利用いただけます。

新しいテーマをプラグインに追加します

// 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",
},
},
},
},
}),
],
};

新しいテーマを適用します

新しいテーマの適用は、purple-darkのようなテーマ名をclassNamehtml / bodyまたはmain要素に追加するだけで簡単です。

// 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>,
);

新しいテーマを使用します

primaryカラーを使用するすべてのコンポーネントがこの変更の影響を受けます。

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>
);
}