Overview
Happy Habitat uses TailwindCSS v4.1.13 as its primary utility-first CSS framework. The new v4 version introduces a CSS-first configuration approach that simplifies setup and improves performance.Installation
TailwindCSS v4 is installed via npm along with PostCSS:package.json
Configuration
CSS-First Configuration
Tailwind v4 uses a CSS-first configuration approach instead of the traditional JavaScript config file. The configuration is defined directly insrc/styles.css:
src/styles.css
Key Changes from v3 to v4
- No
tailwind.config.jsfile - Configuration is now in CSS - CSS imports - Use
@import "tailwindcss"instead of@tailwinddirectives - Plugin configuration - Plugins are configured using
@pluginat-rule - Simplified setup - Less JavaScript configuration needed
Usage in Components
Utility Classes
Tailwind utility classes are used extensively throughout the application for styling:Responsive Design
Tailwind provides responsive utilities using breakpoint prefixes:sm:- Small devices (640px+)md:- Medium devices (768px+)lg:- Large devices (1024px+)xl:- Extra large devices (1280px+)2xl:- 2X large devices (1536px+)
Layout Utilities
Flexbox
Grid
Spacing
Tailwind uses a consistent spacing scale:p-2= 0.5rem (8px)p-4= 1rem (16px)p-6= 1.5rem (24px)
Typography
Colors
Tailwind provides semantic color utilities that work with DaisyUI themes:Borders and Shadows
Dynamic Classes with Angular
Conditional Classes
String Interpolation
Common Patterns
Container with Max Width
Full Width Forms
Flexible Menus
Custom Utilities and @apply
Using @apply Directive
The@apply directive allows you to extract repeated utility patterns into custom CSS classes. This is used selectively in the codebase for component-specific styles:
generic-list.component.css
banner-carousel.component.css
When to Use @apply
Use@apply when:
- You need to reuse complex utility combinations
- Component-specific styles benefit from abstraction
- You’re creating custom animations or gradients
@apply when:
- Simple utility classes suffice
- You’re duplicating existing DaisyUI components
- The pattern only appears once
Custom Layers
Tailwind v4 allows custom utilities via CSS layers:Best Practices
1. Use Semantic DaisyUI Classes
Prefer DaisyUI component classes over pure Tailwind when possible:2. Group Related Classes
3. Responsive Design First
Consider mobile-first responsive design:4. Avoid Inline Styles
Use Tailwind classes instead of inline styles:Integration with Angular
Component Styling
Components use inline templates with Tailwind classes:Component-Level CSS Files
While most components rely solely on Tailwind utility classes, some components use dedicated CSS files for:- Complex responsive layouts (header.component.css)
- Component-specific utilities via
@apply - Custom animations and transitions
header.component.css
- Complex media queries that benefit from traditional CSS
- Host element styling (
:host) - Custom gradients or complex backgrounds
- Component-specific animations
- Simple layouts and styling
- Standard responsive patterns
- DaisyUI component compositions
Resources
- TailwindCSS v4 Documentation
- TailwindCSS v4 Migration Guide
- DaisyUI Integration
- Utility-First Fundamentals
Next Steps
DaisyUI Components
Learn about DaisyUI component library integration
Theme Configuration
Configure and customize DaisyUI themes