| title | Adapters: Tailwind |
|---|---|
| description | Tailwind CSS v4 integration patterns for Variable Design Standard (VDS). Generate CSS custom properties from Variable Design Standard (VDS) JSON using Tailwind CSS v4's CSS-first approach. |
Tailwind CSS v4 integration patterns for Variable Design Standard (VDS). Generate CSS custom properties from Variable Design Standard (VDS) JSON using Tailwind CSS v4's CSS-first approach.
Tailwind adapter generates CSS custom properties from Variable Design Standard (VDS) JSON. Variables map to Tailwind CSS v4's @theme directive. No JavaScript config files. Pure CSS.
Tailwind CSS v4 is pure CSS. No JavaScript config. Design Engineers MUST master Tailwind CSS v4. Variable Design Standard (VDS) variables map directly to CSS custom properties that Tailwind CSS v4 consumes.
Tailwind CSS v4 uses CSS-first configuration:
- Define theme in CSS using
@themedirective - Use CSS custom properties (CSS theme variables)
- No
tailwind.config.jsfile needed - Aligns with native web standards
- Dynamic utility values (spacing scale accepts any value)
- Automatic content detection (no
contentarray needed) - Built-in import support (no
postcss-importneeded)
See Tailwind CSS v4 documentation for complete details.
Generate CSS custom properties from Variable Design Standard (VDS) JSON. Tailwind CSS v4 reads CSS variables directly.
Style Dictionary config:
{
"source": ["tokens/**/*.json"],
"platforms": {
"css": {
"transformGroup": "css",
"buildPath": "dist/",
"files": [
{
"destination": "theme.css",
"format": "css/variables"
}
]
}
}
}Generated output (dist/theme.css):
@import "tailwindcss";
@theme {
/* Colors */
--color-primary-500: #0066cc;
--color-primary-50: #e6f2ff;
--color-primary-900: #003366;
--color-text-primary: #1a1a1a;
--color-text-secondary: #666666;
--color-surface-brand: var(--color-primary-500);
/* Spacing */
--spacing-xs: 0.25rem;
--spacing-sm: 0.5rem;
--spacing-md: 1rem;
--spacing-lg: 1.5rem;
--spacing-xl: 2rem;
/* Typography */
--font-family-sans: "Inter", system-ui, sans-serif;
--font-size-base: 1rem;
--font-size-lg: 1.125rem;
}Component usage:
<button className="bg-surface-brand text-white px-4 py-2">Click me</button>Transform Variable Design Standard (VDS) JSON directly to CSS custom properties.
Variable Design Standard (VDS):
{
"color": {
"primary": {
"500": {
"$type": "color",
"$value": "#0066cc"
}
},
"surface": {
"brand": {
"$type": "color",
"$value": "{color.primary.500}"
}
}
},
"spacing": {
"md": {
"$type": "dimension",
"$value": "1rem"
}
}
}Generated CSS:
@import "tailwindcss";
@theme {
--color-primary-500: #0066cc;
--color-surface-brand: var(--color-primary-500);
--spacing-md: 1rem;
}Variable Design Standard (VDS): color.primary.500
CSS: --color-primary-500: #0066cc
Tailwind: bg-primary-500 or text-primary-500
Variable Design Standard (VDS): spacing.md
CSS: --spacing-md: 1rem
Tailwind: p-md or m-md
Tailwind CSS v4 uses a dynamic spacing scale. The --spacing variable defines the base unit, and utilities like px-8, mt-17, w-29 are generated dynamically using calc(var(--spacing) * N).
Variable Design Standard (VDS): typography.fontFamily.sans
CSS: --font-family-sans: "Inter", sans-serif
Tailwind: font-sans
Tailwind CSS v4 handles modes via CSS custom properties. Generate mode-specific CSS or use CSS variable overrides.
Variable Design Standard (VDS) with modes:
{
"color": {
"surface": {
"background": {
"$type": "color",
"$value": {
"light": "#ffffff",
"dark": "#000000"
}
}
}
}
}Generated CSS:
@theme {
--color-surface-background: #ffffff; /* default: light */
}
@media (prefers-color-scheme: dark) {
@theme {
--color-surface-background: #000000; /* dark mode */
}
}Design Engineer MUST:
- Master Tailwind CSS v4 CSS-first approach
- Understand CSS custom properties and
@themedirective - Map Variable Design Standard (VDS) structure to CSS custom properties
- Test variables in Tailwind components before approval
- Maintain CSS generation pipeline (no JavaScript config)
- Designer creates variables in Figma
- Export from Figma
- Design Engineer normalizes with adapter
- Design Engineer generates CSS custom properties from Variable Design Standard (VDS) JSON
- Design Engineer tests variables in Tailwind CSS v4 components
- Commit Variable Design Standard (VDS) JSON and generated CSS
- Frontend Engineer consumes Tailwind utilities in components
Variable Design Standard (VDS):
{
"color": {
"surface": {
"brand": {
"$type": "color",
"$value": "{color.primary.500}"
}
}
}
}Generated CSS:
@import "tailwindcss";
@theme {
--color-primary-500: #0066cc;
--color-surface-brand: var(--color-primary-500);
}Component usage:
<button className="bg-surface-brand text-white px-4 py-2">Click me</button>Tailwind CSS v4 generates: background-color: var(--color-surface-brand)
Tailwind adapter MUST:
- Generate valid CSS custom properties syntax
- Map all Variable Design Standard (VDS) variables to CSS custom properties
- Preserve variable references (use CSS
var()syntax) - Handle modes (generate mode-specific CSS or CSS variable overrides)
- Follow Tailwind CSS v4 naming conventions (
--color-*,--spacing-*,--font-*)
If Tailwind adapter fails:
- Variables don't map to CSS custom properties (wrong structure)
- CSS syntax errors (invalid custom property names)
- Missing variables in CSS (generation incomplete)
- Mode values not handled (light/dark themes broken)
- Wrong naming convention (Tailwind CSS v4 doesn't recognize variables)
Tailwind CSS v4 installation:
-
Install Tailwind CSS:
npm i tailwindcss @tailwindcss/postcss
-
Add PostCSS plugin:
export default { plugins: ["@tailwindcss/postcss"], };
-
Import Tailwind in CSS:
@import "tailwindcss";
For Vite projects, use @tailwindcss/vite plugin instead. See Tailwind CSS v4 installation guide for details.
- Tailwind utility class generation (use Tailwind's built-in utilities)
- Custom Tailwind plugins (separate concern)
- JavaScript config files (Tailwind CSS v4 doesn't use them)
- Vite/PostCSS setup details (see Tailwind CSS v4 docs)