@poupe/tailwindcss
Version:
TailwindCSS v4 plugin for Poupe UI framework with theme customization support
66 lines (63 loc) • 3.03 kB
JavaScript
import { m as makeThemeBases, a as makeThemeVariants, d as defaultPersistentColors, b as makeShadowRules, c as makeThemeComponents } from './shared/tailwindcss.BlKYX9OC.mjs';
export { e as defaultColors, o as defaultPrimaryColor, i as defaultShades, y as defaultShapePrefix, x as defaultSurfacePrefix, s as defaultThemeContrastLevel, q as defaultThemeDarkSuffix, r as defaultThemeLightSuffix, p as defaultThemePrefix, u as defaultThemeScheme, g as makeConfig, j as makeHexShades, k as makeShades, l as makeShadows, n as makeTheme, h as makeThemeFromPartialOptions, g as themeConfigFunction, t as themePlugin, f as themePluginFunction, v as validShade, w as withDefaultThemeOptions } from './shared/tailwindcss.BlKYX9OC.mjs';
export { Hct } from '@poupe/theme-builder';
export { colorFormatter } from '@poupe/theme-builder/core';
import { interleavedRules, formatCSSRulesArray, renameRules, keys } from '@poupe/css';
import 'tailwindcss/colors';
import './shared/tailwindcss.CwibpYHY.mjs';
const utilityName = (name) => `@utility ${name.startsWith(".") ? name.slice(1) : name}`;
const variantName = (name) => `@custom-variant ${name}`;
const prepareComponents = (components) => components.map((group) => renameRules(group, utilityName));
const prepareVariants = (variants) => variants.map((group) => renameRules(group, variantName));
function formatTheme(theme, darkMode = "class", indent = " ", stringify) {
const { extendColors = false } = theme.options;
const bases = makeThemeBases(theme, darkMode, stringify);
const variants = makeThemeVariants(theme, darkMode);
const rules = [
// variants
...prepareVariants(variants),
// bases
...bases.length > 0 ? [{ "@layer base": bases }] : [],
// theme
{
"@theme": interleavedRules([
// colors
...themeColors(theme.colors, extendColors),
// shadows
...makeShadowRules(theme)
])
},
// components
...prepareComponents(makeThemeComponents(theme))
];
return formatCSSRulesArray(interleavedRules(rules), {
indent
});
}
function themeColors(colors, extendColors = false, persistentColors = defaultPersistentColors) {
const rules = [];
if (!extendColors) {
rules.push({ "--color-*": "initial" });
const colorRules = {};
for (const key of [...keys(persistentColors)].sort((a, b) => a.localeCompare(b))) {
if (!(key in colors)) {
colorRules[`--color-${key}`] = persistentColors[key];
}
}
rules.push(colorRules);
}
const themeColors2 = {};
for (const key of [...keys(colors)].sort((a, b) => a.localeCompare(b))) {
const c = colors[key];
themeColors2[`--color-${key}`] = `var(${c.value})`;
if (c.shades) {
for (const shade of [...keys(c.shades)].sort((a, b) => a - b)) {
themeColors2[`--color-${key}-${shade}`] = `var(${c.shades[shade]})`;
}
}
}
rules.push(themeColors2);
return rules;
}
export { formatTheme, makeShadowRules, makeThemeBases, makeThemeComponents };
//# sourceMappingURL=theme.mjs.map