ADR-0017: Tailwind CSS for Styling
Status
Accepted - 2025-01-26
Context
TVL Platform web application needs a CSS solution for styling React components with requirements for fast development, consistency, and maintainability.
Decision
Tailwind CSS 3.x as the primary styling solution.
Rationale
- Utility-First: Rapid UI development with utility classes
- Design System: Built-in design tokens (colors, spacing, typography)
- Performance: PurgeCSS removes unused styles (small bundles)
- TypeScript Support: IntelliSense with tailwindcss-intellisense
- Next.js Integration: Official Next.js plugin
Alternatives Considered
Alternative 1: CSS Modules
Rejected - Requires separate CSS files, no design system
Alternative 2: Styled Components
Rejected - Runtime overhead, larger bundles, SSR complexity
Alternative 3: CSS-in-JS (Emotion)
Rejected - Performance overhead, React 18 SSR issues
Configuration
// tailwind.config.js
module.exports = {
  content: ['./app/**/*.{js,ts,jsx,tsx}'],
  theme: {
    extend: {
      colors: {
        primary: { 50: '#eff6ff', 500: '#3b82f6', 900: '#1e3a8a' },
      }
    }
  }
};
Usage Examples
// Utility classes
<button className="bg-primary-500 text-white px-4 py-2 rounded-lg hover:bg-primary-600">
  Confirm Booking
</button>
// Responsive design
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  {properties.map(...)}
</div>
// Dark mode
<div className="bg-white dark:bg-gray-900 text-black dark:text-white">
  Content
</div>