TailwindCSS is a utility-first CSS framework with a programmatic API for CSS compilation, plugin system, and theme management. Version 4.x introduces an AST-based architecture with direct compilation APIs and extensive TypeScript support.
import { compile } from 'tailwindcss';
const css = `
@theme {
--color-primary: #3b82f6;
}
.button {
@apply bg-primary text-white px-4 py-2 rounded;
}
`;
const result = await compile(css, { base: process.cwd() });
const output = result.build(['bg-primary', 'text-white', 'px-4', 'py-2', 'rounded']);Installation: npm install tailwindcss@4.1.18
Documentation: https://tailwindcss.com
TailwindCSS v4 provides:
compile() and compileAst() for processing CSS with @apply, @theme, utilities, and variantsimport { compile, compileAst, type CompileOptions } from 'tailwindcss';
import plugin from 'tailwindcss/plugin';
import colors from 'tailwindcss/colors';
import defaultTheme from 'tailwindcss/defaultTheme';| API | Purpose | Reference |
|---|---|---|
compile() | Compile CSS with TailwindCSS processing | Compilation |
plugin() | Create custom plugins | Plugin API |
UserConfig | Configuration interface | Configuration |
DesignSystem | Theme, utilities, variants coordination | Design System |
Theme | Programmatic theme management | Theme System |
// Compilation
function compile(css: string, opts?: CompileOptions): Promise<CompileResult>;
interface CompileResult {
build: (candidates: string[]) => string;
buildSourceMap: () => DecodedSourceMap;
features: Features;
sources: { base: string; pattern: string; negated: boolean }[];
root: Root;
}
// Plugin
function plugin(handler: (api: PluginAPI) => void, config?: Partial<Config>): PluginWithConfig;
interface PluginAPI {
addUtilities(utilities: Record<string, CssInJs> | Record<string, CssInJs>[]): void;
addComponents(utilities: Record<string, CssInJs> | Record<string, CssInJs>[]): void;
addVariant(name: string, variant: string | string[] | CssInJs): void;
matchUtilities(utilities: Record<string, (value: string, extra: { modifier: string | null }) => CssInJs>): void;
theme(path: string, defaultValue?: any): any;
config(path?: string, defaultValue?: any): any;
prefix(className: string): string;
}
// Configuration
interface UserConfig {
presets?: UserConfig[];
theme?: ThemeConfig;
plugins?: Plugin[];
content?: ContentFile[] | { relative?: boolean; files: ContentFile[] };
darkMode?: DarkModeStrategy;
prefix?: string;
blocklist?: string[];
important?: boolean | string;
future?: 'all' | Record<string, boolean>;
experimental?: 'all' | Record<string, boolean>;
}import { compile } from 'tailwindcss';
const result = await compile(css, { base: './src' });
const output = result.build(candidates);import plugin from 'tailwindcss/plugin';
const myPlugin = plugin(function ({ addUtilities }) {
addUtilities({
'.custom': { display: 'flex' },
});
});export default {
theme: {
extend: {
colors: { primary: '#3b82f6' },
},
},
};TailwindCSS v4 architecture: