next.js 如何使用TypeScript在Tailwind中自定义DaisyUI主题?

iyfjxgzm  于 12个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(116)

我想在我的tailwind.config.ts文件中自定义一个现有的DaisyUI主题。我使用Next.js。
在DaisyUI页面上,有仅用于JavaScript的文档(text.以及其他我能在JavaScript中找到的例子。
下面是我的tailwind.config.ts(作为一个例子,我想把我的主题基于复古主题):

import type { Config } from 'tailwindcss'

const config: Config = {
  content: [
    './pages/**/*.{js,ts,jsx,tsx,mdx}',
    './components/**/*.{js,ts,jsx,tsx,mdx}',
    './app/**/*.{js,ts,jsx,tsx,mdx}',
  ],
  theme: {
    extend: {
      backgroundImage: {
        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
        'gradient-conic':
          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
      },
    },
  },
  daisyui: {
    themes: [
      {
        mytheme: {
          ...require("daisyui")['[data-theme=retro]'],
          primary: "magenta",
          ".btn": {
            "border-radius": "0px",
          }
        },
      },
    ],
  },
  // needs to be after custom theme declaration above?
  plugins: [require("daisyui")],
}
export default config

下面是我的Next.js主页面布局.tsx(我将mytheme声明为DaisyUI数据主题):

import './globals.css'
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'

const inter = Inter({ subsets: ['latin'] })

export const metadata: Metadata = {
  title: 'Title',
  description: 'Descr.',
}

export default function RootLayout(
  { children, }: { children: React.ReactNode }) {
  return (
    <html lang="en" data-theme="mytheme">
      <body className={inter.className}>
        <div className='btn btn-primary'>Button</div>
        {children}
      </body>
    </html>
  )
}

我看到的是:

所以我可以看到,自定义颜色和边界半径的工作,但它不是基于复古主题,否则背景的颜色如下所示。
这是什么不变的复古主题看起来像:

我知道我也许可以改变单个类的属性,比如.btn,.在CSS中使用@apply,但我想在一个地方为tailwind配置中的所有元素执行此操作。

oxiaedzo

oxiaedzo1#

先生,试着用import代替require daisyui。看这个例子!

import type { Config } from "tailwindcss";
import daisyui from "daisyui";

const config: Config = {
  content: [
    "./pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./components/**/*.{js,ts,jsx,tsx,mdx}",
    "./app/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    extend: {
      backgroundImage: {
        "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
        "gradient-conic":
          "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
      },
    },
  },
  plugins: [daisyui],
  daisyui: {
    //themes: true
    themes: [
      {
        mytheme: {
          ...daisyui["data-theme=retro"],
          primary: "magenta",
          ".btn": {
            "border-radius": "1px",
            "border": "10px",
            "color":"yellow"
          },
        },
      },
    ],
  },
};
export default config;

相关问题