Description
Me llamó la atención como está implementado los temas.
UbiCate-v2/app/hooks/useThemeObserver.tsx
Lines 5 to 30 in 3882a9b
¿Por qué es el hook que dicta el estilo del mapa? ¿No debería ser al revés?
UbiCate-v2/app/components/darkModeSelector.tsx
Lines 5 to 40 in 3882a9b
Este botón tiene mucha responsabilidad, yo haría que solo cambie le tema y no se preocupe de sincronizarlo.
Yo lo que recomendaría es cambiarlo para que sea como estos selectores de 3 estados: tema del dispositivo, dark mode, light mode.
- Crear un contexto global del tema.
Hacer un contexto de theme, donde se exponga el estado del tema actual (que depende de la clase dark o del prefers-color-scheme si es que no está la clase), y una función que cambie el tema a light, dark o reiniciar(null) que permita modificar la clase que modifica el tema.
El botón para cambiar el estilo usuarioa esta función, y cualquier js que requiera el tema actual, lo podría sacar de este hook.
- Aprovechar el css para definir cambios de colores (esto no está probado)
:root:not(.dark) {
--bg-color: white;
--text-color: black;
}
@media (prefers-color-scheme: dark) {
:root:not(.light) {
--bg-color: black;
--text-color: white;
}
}