Tailwind Palette Pro: Master Color Management with CSS
Creating visually stunning UIs often boils down to one essential factor: color management. With TailwindPalettePro, you can effortlessly integrate CSS variables with Tailwind CSS to build dynamic, responsive, and customizable color palettes that work seamlessly in both light and dark modes. Whether you’re a seasoned developer or just getting started, TailwindPalettePro provides you with the tools and best practices to streamline your workflow and create beautiful designs.
What is TailwindPalettePro?
TailwindPalettePro is a comprehensive guide that merges the power of CSS variables with the flexibility of Tailwind CSS. It enables developers to define and manage colors with precision, ensuring consistent theming across light and dark modes. With clear examples and a step-by-step approach, this guide helps you customize color schemes for your projects while maintaining a clean and scalable codebase.
Table of Contents
- Feature
- Concept
- How to use
Features
- CSS Variables Integration: Seamlessly manage colors with CSS variables such as
primary
,secondary
,warning
, and more.
- Example:
-primary-light
and-primary-dark
for light and dark modes.
- Light and Dark Themes: Easily toggle between light and dark modes using:
- A ThemeProvider component.
- A
useTheme
hook for theme switching.
- Tailwind CSS Support: Fully compatible with Tailwind’s utility classes, ensuring smooth integration with your existing projects.
- Customizable: Modify color palettes to match your project’s branding effortlessly.
Concept
TailwindPalettePro uses a consistent pattern for defining color variables:
{variable}-light
for light mode colors.{variable}-dark
for dark mode colors.
These variables are globally applied using the :root
selector for light mode and the .dark
class for dark mode overrides. By doing so, you can switch themes seamlessly while maintaining flexibility and control.
Example CSS Setup:
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
/* Light theme colors */
--primary-light: #1d4ed8; /* Blue *//* Dark theme colors */
--primary-dark: #60a5fa; /* Light Blue *//* Default to light theme values */
--primary: var(--primary-light);
}/* Dark theme overrides */
.dark {
--primary: var(--primary-dark);
}
}
With this setup, your primary
color will adapt based on the active theme, ensuring a cohesive experience.
How to Use
1. Define Your Colors
Define colors using CSS variables for both light and dark themes. Place these variables within the :root
selector for the light theme and within the .dark
class for the dark theme.
2. Extend Tailwind Config
Extend your Tailwind CSS configuration to integrate these variables as Tailwind utilities.
module.exports = {
theme: {
extend: {
colors: {
primary: {
DEFAULT: "var(--primary)",
light: "var(--primary-light)",
dark: "var(--primary-dark)",
},
},
},
},
};
This setup makes your colors available as Tailwind utilities, such as bg-primary
, bg-primary-light
, and bg-primary-dark
.
3. Apply Colors in HTML/JSX
Use Tailwind classes to apply theme-based colors in your components.
Theme-Based Color:
<div className="bg-primary text-white p-4 rounded-lg">
Welcome to light/dark mode!
</div>
Light Mode Only:
<div className="bg-primary-light text-black p-4 rounded-lg">
Always light mode color
</div>
Dark Mode Only:
<div className="bg-primary-dark text-white p-4 rounded-lg">
Always dark mode color
</div>
4. Switch Themes
Enable theme switching with the ThemeProvider and useTheme
hook.
Step 1: Set Up the Theme Provider
Wrap your application with the ThemeProvider to make the theme context available.
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import App from "./App";
import "./index.css";
import { ThemeProvider } from "./HOC/theme-provider";
createRoot(document.getElementById("root")).render(
<StrictMode>
<ThemeProvider>
<App />
</ThemeProvider>
</StrictMode>
);
Step 2: Implement Theme Switching
Use the useTheme
hook to toggle themes.
import React from "react";
import { useTheme } from "@Hooks/useTheme";
const App = () => {
const { setTheme, theme } = useTheme();return (
<div className="flex flex-col items-center justify-center min-h-screen">
<h1 className="text-2xl mb-4">Current Theme: {theme}</h1>
<div className="space-x-3">
<button
className="px-5 py-2.5 bg-gray-800 text-white rounded-full hover:bg-gray-700 transition duration-300 shadow-lg"
onClick={() => setTheme("dark")}
>
Dark
</button>
<button
className="px-5 py-2.5 bg-gray-200 text-gray-800 rounded-full hover:bg-gray-300 transition duration-300 shadow-lg"
onClick={() => setTheme("light")}
>
Light
</button>
<button
className="px-5 py-2.5 bg-blue-500 text-white rounded-full hover:bg-blue-400 transition duration-300 shadow-lg"
onClick={() => setTheme("system")}
>
System
</button>
</div>
</div>
);
};export default App;
With these steps, users can toggle between light, dark, and system themes seamlessly.
To Get more information checkout the Github
Happy coding 😄;