Styling Guide¶
Tailwind CSS Configuration¶
Base Configuration (tailwind.config.js)¶
module.exports = {
content: [
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {
colors: {
"blue-925": "#166CDD",
"pink-525": "#EE2A7B",
},
},
},
plugins: [],
};
Style Organisation¶
-
Global Styles
-
Base styles in
styles/globals.css - Theme variables
- Typography defaults
-
Reset styles
-
Component Styles
-
Tailwind utility classes
- Component-specific styles
- Responsive variants
-
State variations
-
Theme Configuration
- Custom colours
- Typography scale
- Spacing system
- Breakpoints
Best Practices¶
-
Utility-First Approach
-
Use Tailwind utilities
- Avoid custom CSS
- Maintain consistency
-
Follow DRY principles
-
Responsive Design
-
Mobile-first approach
- Breakpoint consistency
- Fluid typography
-
Flexible layouts
-
Performance
- Purge unused styles
- Optimise for production
- Minimise custom CSS
- Use CSS variables
Common Patterns¶
Button Styles¶
// Primary Button
<button className="bg-blue-925 text-white px-4 py-2 rounded-md hover:bg-blue-800">
Click Me
</button>
// Secondary Button
<button className="border border-pink-525 text-pink-525 px-4 py-2 rounded-md hover:bg-pink-50">
Cancel
</button>
Form Elements¶
// Input Field
<input className="border rounded-md px-3 py-2 focus:ring-2 focus:ring-blue-925" />
// Select Dropdown
<select className="border rounded-md px-3 py-2 appearance-none bg-white">
{/* options */}
</select>
Layout Components¶
// Card Container
<div className="bg-white rounded-lg shadow-md p-6">
{/* content */}
</div>
// Grid Layout
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{/* items */}
</div>
Dark Mode Support¶
-
Configuration
-
System preference detection
- Manual toggle support
-
Persistent preference
-
Implementation
Notes¶
- Uses CSS-in-JS sparingly
- Maintains design system
- Supports theming
- Optimises for production
- Follows accessibility guidelines