Styling Architecture
Our project uses a modern, utility-first approach to styling with Tailwind CSS, complemented by CSS Modules for component-specific styles when needed.Tech Stack
- Tailwind CSS - Utility-first CSS framework
- CSS Modules - Scoped styles for complex components
- CSS Variables - Theme tokens and design system values
- PostCSS - CSS processing and optimization
Tailwind CSS
Configuration
Tailwind is configured intailwind.config.ts:
Global Styles
Define global styles insrc/app/globals.css:
Utility Classes
Common patterns using Tailwind utilities:Component Styling Patterns
Class Variance Authority (CVA)
Use CVA for component variants:CSS Modules
For complex component styles, use CSS Modules:Theming
Dark Mode
Implement dark mode using Tailwind’s dark mode class strategy:Custom Themes
Create multiple theme variants:Responsive Design
Breakpoints
Tailwind’s default breakpoints:sm: 640pxmd: 768pxlg: 1024pxxl: 1280px2xl: 1536px
1
Mobile-First Approach
Start with mobile styles, then add larger breakpoints:
2
Responsive Typography
Scale text appropriately across breakpoints:
3
Conditional Rendering
Show/hide elements at different breakpoints:
Container Queries
Use container queries for component-level responsive design:Animation
Transitions
Keyframe Animations
Define custom animations in Tailwind config:Best Practices
Do’s
- Use the
cn()utility for conditional classes - Extract complex class strings into component variants
- Leverage CSS variables for theming
- Use semantic color names in your design system
- Test responsive layouts on real devices
- Optimize for accessibility (focus states, color contrast)
Don’ts
- Don’t use arbitrary values excessively (e.g.,
w-[37px]) - Don’t mix CSS methodologies unnecessarily
- Don’t forget to purge unused styles in production
- Don’t hardcode colors/spacing - use theme tokens
- Don’t ignore mobile viewport testing