Vamos a mejorar el tutorial de modo oscuro para que el modo oscuro se active automáticamente según la configuración del sistema o la hora del día.

🔹 1. Configurar Tailwind CSS (Si aún no lo hiciste)
Si aún no tienes Tailwind instalado, agrégalo:
npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p
En tailwind.config.js, aseguramos que el modo oscuro se base en clases:
export default {
darkMode: 'class',
content: ["./src/**/*.{js,ts,jsx,tsx}"],
theme: { extend: {} },
plugins: [],
};
🔹 2. Mejorar el Hook useDarkMode.ts
Vamos a actualizar useDarkMode.ts para:
✔️ Detectar el modo del sistema.
✔️ Activar el modo oscuro después de las 19:00 y antes de las 07:00 si no hay configuración previa en localStorage.
import { useEffect, useState } from "react";
export function useDarkMode() {
// Verificar si el sistema está en modo oscuro
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
// Obtener la preferencia del usuario o usar el sistema/hora
const getInitialTheme = () => {
const storedTheme = localStorage.getItem("theme");
if (storedTheme) return storedTheme === "dark";
// Si no hay configuración previa, usar la hora del día
const hour = new Date().getHours();
return prefersDark || (hour >= 19 || hour < 7);
};
const [darkMode, setDarkMode] = useState(getInitialTheme);
useEffect(() => {
if (darkMode) {
document.documentElement.classList.add("dark");
localStorage.setItem("theme", "dark");
} else {
document.documentElement.classList.remove("dark");
localStorage.setItem("theme", "light");
}
}, [darkMode]);
return { darkMode, setDarkMode };
}
🔹 3. Crear el botón de cambio de tema
import { useDarkMode } from "./useDarkMode";
const ToggleDarkMode = () => {
const { darkMode, setDarkMode } = useDarkMode();
return (
<button
onClick={() => setDarkMode(!darkMode)}
className="p-2 rounded-full bg-gray-200 dark:bg-gray-700 transition-all"
>
{darkMode ? "🌙 Modo Oscuro" : "☀️ Modo Claro"}
</button>
);
};
export default ToggleDarkMode;
🔹 4. Integrarlo en la App
import ToggleDarkMode from "./ToggleDarkMode";
const App = () => {
return (
<div className="h-screen flex flex-col items-center justify-center bg-white dark:bg-gray-900 text-black dark:text-white transition-all">
<h1 className="text-2xl font-bold">🌗 Modo Oscuro Automático</h1>
<ToggleDarkMode />
</div>
);
};
export default App;
🎯 Resultado Mejorado
✅ Modo oscuro automático según la hora (19:00 – 07:00).
✅ Modo oscuro automático según la configuración del sistema.
✅ El usuario aún puede cambiarlo manualmente y se guardará su preferencia.
Ahora tu aplicación cambia automáticamente al modo oscuro basado en la hora del día o preferencias del sistema, además de permitir que el usuario lo ajuste manualmente. 🔥

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.