187 lines
5.9 KiB
JavaScript
187 lines
5.9 KiB
JavaScript
const tailwindColors = require("tailwindcss/colors")
|
||
|
||
const postcssJs = require("postcss-js")
|
||
const postcssPrefix = require("./lib/addPrefix")
|
||
|
||
const daisyuiInfo = require("../package.json")
|
||
const colors = require("./theming/index")
|
||
const utilities = require("../dist/utilities")
|
||
const base = require("../dist/base")
|
||
const unstyled = require("../dist/unstyled")
|
||
const unstyledRtl = require("../dist/unstyled.rtl")
|
||
const styled = require("../dist/styled")
|
||
const styledRtl = require("../dist/styled.rtl")
|
||
const utilitiesUnstyled = require("../dist/utilities-unstyled")
|
||
const utilitiesStyled = require("../dist/utilities-styled")
|
||
const themes = require("./theming/themes")
|
||
const colorFunctions = require("./theming/functions")
|
||
|
||
const mainFunction = ({ addBase, addComponents, config }) => {
|
||
let logs = false
|
||
if (config("daisyui.logs") != false) {
|
||
logs = true
|
||
}
|
||
if (logs) {
|
||
console.log()
|
||
console.log(
|
||
"\x1b[35m%s\x1b[0m",
|
||
"🌼 daisyUI " + daisyuiInfo.version,
|
||
"\x1b[0m" + daisyuiInfo.homepage
|
||
)
|
||
}
|
||
|
||
// inject @base style
|
||
if (config("daisyui.base") != false) {
|
||
addBase(base)
|
||
}
|
||
|
||
// inject components
|
||
// because rollupjs doesn't supprt dynamic require
|
||
let file = styled
|
||
if (config("daisyui.styled") == false && config("daisyui.rtl") != true) {
|
||
file = unstyled
|
||
} else if (config("daisyui.styled") == false && config("daisyui.rtl") == true) {
|
||
file = unstyledRtl
|
||
} else if (config("daisyui.styled") != false && config("daisyui.rtl") != true) {
|
||
file = styled
|
||
} else if (config("daisyui.styled") !== false && config("daisyui.rtl") == true) {
|
||
file = styledRtl
|
||
}
|
||
|
||
// add prefix to class names if specified
|
||
const prefix = config("daisyui.prefix")
|
||
let postcssJsProcess
|
||
if (prefix) {
|
||
try {
|
||
postcssJsProcess = postcssJs.sync(postcssPrefix({ prefix, ignore: [] }))
|
||
} catch (error) {
|
||
logs && console.error(`Error occurred and prevent applying the "prefix" option:`, error)
|
||
}
|
||
}
|
||
const shouldApplyPrefix = prefix && postcssJsProcess
|
||
if (shouldApplyPrefix) {
|
||
file = postcssJsProcess(file)
|
||
}
|
||
|
||
addComponents(file)
|
||
|
||
const themeInjectorHsl = colorFunctions.injectThemes(addBase, config, themes, "hsl")
|
||
themeInjectorHsl
|
||
|
||
// inject @utilities style needed by components
|
||
if (config("daisyui.utils") != false) {
|
||
addComponents(utilities, { variants: ["responsive"] })
|
||
|
||
let toAdd = utilitiesUnstyled // shadow clone here to avoid mutate the original
|
||
if (shouldApplyPrefix) {
|
||
toAdd = postcssJsProcess(toAdd)
|
||
}
|
||
addComponents(toAdd, { variants: ["responsive"] })
|
||
|
||
toAdd = utilitiesStyled
|
||
if (shouldApplyPrefix) {
|
||
toAdd = postcssJsProcess(toAdd)
|
||
}
|
||
addComponents(toAdd, { variants: ["responsive"] })
|
||
}
|
||
|
||
if (logs) {
|
||
console.log("╰╮")
|
||
if (config("daisyui.styled") == false) {
|
||
console.log(
|
||
" ├─",
|
||
"\x1b[33m" + "◆" + "\x1b[0m" + "\x1b[2m",
|
||
"daisyui.styled",
|
||
"\x1b[0m" + "config is",
|
||
"\x1b[2m" + "false" + "\x1b[0m",
|
||
"– your components will have no design decisions" + "\n │"
|
||
)
|
||
}
|
||
if (config("daisyui.utils") == false) {
|
||
console.log(
|
||
" ├─",
|
||
"\x1b[33m" + "◆" + "\x1b[0m" + "\x1b[2m",
|
||
"daisyui.utils",
|
||
"\x1b[0m" + "config is",
|
||
"\x1b[2m" + "false" + "\x1b[0m",
|
||
"– daisyUI modifier utility classes are disabled" + "\n │"
|
||
)
|
||
}
|
||
if (config("daisyui.prefix") && config("daisyui.prefix") !== "") {
|
||
console.log(
|
||
" ├─",
|
||
"\x1b[32m" + "✔︎" + "\x1b[0m",
|
||
"Prefix is enabled, daisyUI classnames must use",
|
||
"\x1b[2m" + `${config("daisyui.prefix")}`,
|
||
"\x1b[0m" + "prefix. like:",
|
||
"\x1b[2m" + `${config("daisyui.prefix")}btn`,
|
||
"\x1b[0m" + "\n │ https://daisyui.com/docs/config" + "\n │"
|
||
)
|
||
}
|
||
if (config("daisyui.rtl") == true) {
|
||
console.log(
|
||
" ├─",
|
||
"\x1b[32m" + "✔︎" + "\x1b[0m",
|
||
"Using RTL, make sure you're using",
|
||
"\x1b[2m" + "<html dir=rtl>" + "\x1b[0m",
|
||
"and you have",
|
||
"\x1b[2m",
|
||
"tailwindcss-flip",
|
||
"\x1b[0m",
|
||
"plugin",
|
||
"\n │ https://daisyui.com/docs/config" + "\n │"
|
||
)
|
||
}
|
||
if (themeInjectorHsl.themeOrder.length > 0) {
|
||
console.log(
|
||
" ╰─",
|
||
"\x1b[32m" + "✔︎" + "\x1b[0m",
|
||
"\x1b[2m" +
|
||
"[ " +
|
||
"\x1b[0m" +
|
||
`${themeInjectorHsl.themeOrder.length}` +
|
||
"\x1b[2m" +
|
||
" ]" +
|
||
"\x1b[0m" +
|
||
` ${themeInjectorHsl.themeOrder.length > 1 ? "themes are" : "theme is"}` +
|
||
` enabled. You can add more themes or make your own theme:` +
|
||
"\n https://daisyui.com/docs/themes"
|
||
)
|
||
}
|
||
if (themeInjectorHsl.themeOrder.length === 0) {
|
||
console.log(
|
||
" ╰─",
|
||
"\x1b[33m" + "◆" + "\x1b[0m",
|
||
`All themes are disabled in the config. You can add themes or make your own theme:` +
|
||
"\n https://daisyui.com/docs/themes"
|
||
)
|
||
}
|
||
console.log(
|
||
"\n\x1b[32m%s\x1b[0m",
|
||
" ❤︎ Support daisyUI" + "\x1b[0m" + `: ${daisyuiInfo.funding.url}`
|
||
)
|
||
console.log()
|
||
}
|
||
}
|
||
|
||
module.exports = require("tailwindcss/plugin")(mainFunction, {
|
||
theme: {
|
||
extend: {
|
||
colors: {
|
||
...colors,
|
||
// adding all Tailwind `neutral` shades here so they don't get overridden by daisyUI `neutral` color
|
||
"neutral-50": tailwindColors.neutral[50],
|
||
"neutral-100": tailwindColors.neutral[100],
|
||
"neutral-200": tailwindColors.neutral[200],
|
||
"neutral-300": tailwindColors.neutral[300],
|
||
"neutral-400": tailwindColors.neutral[400],
|
||
"neutral-500": tailwindColors.neutral[500],
|
||
"neutral-600": tailwindColors.neutral[600],
|
||
"neutral-700": tailwindColors.neutral[700],
|
||
"neutral-800": tailwindColors.neutral[800],
|
||
"neutral-900": tailwindColors.neutral[900],
|
||
},
|
||
},
|
||
},
|
||
})
|