Tailwind CSS for Next.js
Tailwind CSS for Next.js development. Covers Tailwind v4 (CSS-first configuration), v3 patterns, dark mode, responsive design, custom plugins, and performance optimization. Always verify against current docs before writing Tailwind configuration.
License: MIT Author: Bala Version: 0.1.0
Quick Reference
Installation & Setup
npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p
Configuration Approaches
Tailwind v4 (CSS-first)
No more tailwind.config.js needed. Configure via CSS:
/* globals.css */
@import "tailwindcss";
@theme {
--color-primary: #3b82f6;
--color-secondary: #ef4444;
--spacing-gutter: 2rem;
}
Tailwind v3 (JavaScript config)
// tailwind.config.ts
import type { Config } from 'tailwindcss'
export default {
content: [
'./app/**/*.{js,ts,jsx,tsx,mdx}',
'./components/**/*.{js,ts,jsx,tsx,mdx}',
],
theme: {
extend: {
colors: {
primary: '#3b82f6',
secondary: '#ef4444',
},
},
},
plugins: [],
} satisfies Config
PostCSS Configuration
// postcss.config.js
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
Global Styles
/* app/globals.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
html {
@apply scroll-smooth;
}
}
@layer components {
.btn-primary {
@apply px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors;
}
}
Dark Mode
Class Strategy (Recommended)
// tailwind.config.ts
export default {
darkMode: 'class',
// ...
}
Usage:
// app/layout.tsx
export default function RootLayout({ children }) {
return (
<html lang="en" className="dark">
<body>{children}</body>
</html>
)
}
In components:
<div className="bg-white dark:bg-slate-900 text-black dark:text-white"> Content </div>
Media Strategy (System Preference)
// tailwind.config.ts
export default {
darkMode: 'media',
// ...
}
Responsive Design
Breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px), 2xl (1536px)
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{items.map(item => <Item key={item.id} {...item} />)}
</div>
Common Patterns
Layout with Flexbox
<div className="flex flex-col md:flex-row gap-8"> <aside className="md:w-64">Sidebar</aside> <main className="flex-1">Content</main> </div>
Spacing & Sizing
<div className="space-y-4"> <h1 className="text-3xl font-bold">Title</h1> <p className="text-lg text-gray-600">Description</p> </div>
Typography Scale
<h1 className="text-4xl font-bold">h1</h1> <h2 className="text-3xl font-semibold">h2</h2> <h3 className="text-2xl font-semibold">h3</h3> <p className="text-base leading-relaxed">Body text</p>
Custom Utilities & Plugins
Custom Utility Class
/* globals.css */
@layer utilities {
.truncate-2 {
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
}
Plugin Example
// tailwind.config.ts
import plugin from 'tailwindcss/plugin'
export default {
plugins: [
plugin(function({ addComponents, theme }) {
addComponents({
'.card': {
backgroundColor: theme('colors.white'),
borderRadius: theme('borderRadius.lg'),
padding: theme('spacing.6'),
boxShadow: theme('boxShadow.md'),
}
})
})
],
}
Performance Optimization
JIT Mode (Default in v3+)
Just-in-time compilation is enabled by default. Tailwind watches your files and generates styles on-demand.
Content Purging
Ensure your content array covers all template files:
// tailwind.config.ts
export default {
content: [
'./app/**/*.{js,ts,jsx,tsx,mdx}',
'./components/**/*.{js,ts,jsx,tsx,mdx}',
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
],
}
Bundle Size Analysis
# Check what's included in your CSS npm run build
v3 → v4 Migration
See v4-migration.md for detailed migration steps.
Key Changes:
- •CSS-first configuration with
@themedirective - •No more
tailwind.config.js(optional) - •Automatic content detection
- •New PostCSS plugin syntax
- •Some utilities renamed/removed
Migration tool:
npm install -D @tailwindcss/upgrade npx @tailwindcss/upgrade
Documentation & Resources
- •Official Docs: https://tailwindcss.com/docs
- •Blog (v4 announcements): https://tailwindcss.com/blog
- •Tailwind UI (component examples): https://tailwindui.com
- •Community: https://discord.gg/tailwindcss
Doc Lookup Strategy
- •Latest official docs: https://tailwindcss.com/docs/
- •Library lookup via Context7:
- •
resolve-library-id("tailwindcss")→get-library-docs
- •
- •Blog for announcements: https://tailwindcss.com/blog
Always verify current Tailwind version and configuration approach before writing config files. Tailwind v4 is CSS-first, so check if the project is on v3 or v4.