Dark Mode isn’t just a “cool feature” anymore — it’s a user expectation.
Let’s learn how to build a sleek Dark Mode Toggle for your website in just a few minutes using Vite + React + TailwindCSS 🚀
Step 1:Setup Your Project
# Create Vite project npm create vite@latest dark-mode-toggle cd dark-mode-toggle npm install # Add TailwindCSS npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p Enable dark mode in tailwind.config.cjs:
export default { darkMode: 'class', content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], theme: { extend: {} }, plugins: [], } Step 2: Create the Toggle Logic
Inside App.jsx:
import { useState, useEffect } from "react"; function App() { const [darkMode, setDarkMode] = useState( localStorage.getItem("theme") === "dark" ); useEffect(() => { if (darkMode) { document.documentElement.classList.add("dark"); localStorage.setItem("theme", "dark"); } else { document.documentElement.classList.remove("dark"); localStorage.setItem("theme", "light"); } }, [darkMode]); return ( <div className="min-h-screen flex items-center justify-center bg-white dark:bg-gray-900 text-gray-900 dark:text-white transition-colors duration-500"> <div className="text-center"> <h1 className="text-3xl font-bold mb-6">Dark Mode Toggle 🌗</h1> <button onClick={() => setDarkMode(!darkMode)} className="px-6 py-2 rounded-2xl bg-gray-200 dark:bg-gray-700 hover:scale-105 transition-transform" > {darkMode ? "☀ Light Mode" : "🌙 Dark Mode"} </button> </div> </div> ); } export default App; Step 3: Test It Out
Run your app:
npm run dev What You Achieved
✔ Fully working Dark/Light theme switch
✔ Theme preference saved in localStorage
✔ Smooth transition with Tailwind’s utility classes
🔥 That’s it! You’ve just built a modern Dark Mode Toggle for your React website.
Now your project looks sleek in both 🌞 Light and 🌙 Dark.
👉 Save this post for later & share it with a friend who loves Dark Mode!

Top comments (0)