Alternar modo oscuro/claro

|||
-|-|-|
:discourse2: | Resumen | Dark/Light Mode Toggle añade un botón de alternancia de esquema de color en el menú hamburguesa. El interruptor alterna entre un esquema de color claro u oscuro para un tema.
:hammer_and_wrench: | Enlace al repositorio | https://github.com/discourse/discourse-color-scheme-toggle
:open_book: |¿Nuevo en los temas de Discourse? | Guía para principiantes sobre el uso de temas de Discourse

Instalar este componente de tema

Características

Este componente permite un icono de alternancia de modo oscuro/claro en su foro de Discourse. También cambiará automáticamente si cambia el sistema operativo a un modo diferente a su esquema de color actual.

Puede elegir que el interruptor se muestre en la nueva Barra lateral de Discourse o en la cabecera junto con otros iconos.

Barra lateral

Kapture 2022-12-02 at 10.55.59

Cabecera

Kapture 2022-12-02 at 10.57.54

Pasos importantes

Para que esto funcione correctamente, se deben habilitar al menos 2 opciones de esquema de color en su área /admin/customize/colors. Al menos dos colores deben tener habilitado color scheme can be selected by users.

Se debe establecer un esquema de color predeterminado para el modo oscuro: /admin/site_settings/category/basic?filter=dark

Una vez hecho esto, los usuarios deberían poder elegir entre dos esquemas de color como sus preferencias claro y oscuro en su menú de interfaz de preferencias de usuario.

Ajustes

Nombre Descripciones
svg icons
add color scheme toggle to header Añadir botón de alternancia de esquema de color a la cabecera del sitio
Traducción Predeterminado
toggle_button_title Alternar esquema de color

:discourse2: ¿Alojado por nosotros? Los componentes de tema están disponibles para su uso en nuestros planes Estándar, Business y Enterprise.

45 Me gusta

¿Esto solo funciona con la entrada del usuario yendo a sus preferencias y habilitándolo? Sería mucho mejor si pudiera ser una implementación en todo el sitio en lugar de basarse en el usuario.

Un administrador habilitaría este componente para todo el sitio.

A partir de ahí, dependiendo de lo que haya configurado el administrador que configuró el componente, el interruptor estará en el menú hamburguesa del usuario o en la cabecera del foro. Todos los usuarios pueden usarlo una vez que haya sido habilitado por un administrador.

1 me gusta

Lo siento, no creo haber sido claro con mi pregunta. Al mirar su tutorial de instalación, después de que se habilita en el lado del administrador, ya sea en el menú hamburguesa o en la cabecera, parece que cada usuario individual tiene que ir a sus preferencias y habilitar/agregar los esquemas de color claro/oscuro. De lo contrario, no funciona para un nuevo usuario / alguien que no ha iniciado sesión. Entonces mi pregunta es:

¿Es posible implementar el esquema de color en todo el sitio en lugar de basarse en cada usuario?

Su foto está abajo como referencia

Creo que un esquema claro y un esquema oscuro se asignarán automáticamente una vez que un administrador lo habilite. A partir de ahí, un usuario puede editar qué esquemas de colores oscuros y claros se utilizan según su preferencia personal.

Es posible que también tenga que agregar una selección aquí /admin/site_settings/category/basic?filter=dark

He actualizado las instrucciones para reflejar esta adición. ¡Disculpas por la confusión!

3 Me gusta

Parece que no funciona correctamente cuando el esquema de color predeterminado es oscuro. ¿Cómo podemos adaptar esto?

Cuando el esquema de color predeterminado es oscuro, el interruptor no funciona a menos que el usuario haya seleccionado el esquema de color claro en las preferencias de la interfaz.

2 Me gusta

Hmmm, creo que esto está sucediendo porque estoy verificando la configuración del esquema de usuario prefers-dark basándome en la configuración del navegador y del sistema.

¿Puedes mirar en la consola de tu inspector y ver si aparece algo al intentar usar el interruptor?

Puede que tenga que investigar esto.

1 me gusta

Advertencias en domain.com/logs ;

El componente/tema de alternancia oscuro/claro está generando errores

initialize@https://develcoder.com/theme-javascripts/1d5669cf8344e0837406cef0be37bb086b5968f5.js?__ws=develcoder.com:153:73

initialize@https://develcoder.com/assets/application-01686ed6ee22a989833acbbce970ba63.js:1:11855

https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:268273

each@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:429458

walk@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:428478

each@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:427828

topsort@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:427874

_runInitializer@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:268501

runInstanceInitializers@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:268222

_bootSync@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:252462

didBecomeReady@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:257791

invoke@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:418024

flush@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:417018

flush@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:418946

_end@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:424401

end@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:421081

_run@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:36:424937

u@https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:26:26509


https://develcoder.com/assets/vendor-0cc77969943fbfe61f9ee3bae9d7291d.js:26:26807
1 me gusta

A mí también. El componente de luz oscura está generando errores.

Hmmm… no estoy seguro de dónde viene eso, ya que no tengo ningún código que deba enviarlo. La única comunicación que tengo sobre un error está aquí:

https://github.dev/discourse/discourse-color-scheme-toggle/blob/3474a80d81d89f1264be5d55652dc65b5aea68e2/javascripts/discourse/initializers/dark-light-toggle-hamburger.js#L56-L59

¿Puedes enlazar tu sitio aquí si es posible? ¿Está tu instancia actualizada?

1 me gusta

Hola,

Tengo un problema. Después de añadir el tema, los iconos de alternancia no se añaden en el menú hamburguesa. Ni siquiera existen en el código base. Además, demostración aquí los botones no funcionan. Es decir, no cambian entre temas claro y oscuro.

¿Alguien más tiene el mismo problema?

¿Puedes revisar la consola de las herramientas de desarrollador y ver si aparece algo relacionado con esto? Estoy viendo que los iconos funcionan bien en el sitio de demostración.

Aquí está el video:

Mi principal problema es que en mi foro, ni siquiera veo estas opciones en el menú hamburguesa:

No tienes la pestaña console abierta en tu grabación de pantalla, por lo que es difícil ver si se están produciendo errores.

¿Te has asegurado de seguir cada paso en la publicación original de este tema?

al menos 2 opciones de esquema de color deben estar habilitadas en tu área /admin/customize/colors
Un tema oscuro debe estar habilitado en: /admin/site_settings/category/basic?filter=dark

¿Y tú, como usuario, tienes seleccionados dos esquemas de color, uno para claro y otro para oscuro, en tus preferencias de usuario?

1 me gusta

Hola,

Sí, esto se ejecutó correctamente. Hoy todo se muestra correctamente. Esto se debió a las cookies. Fue extraño que en otros navegadores (donde nunca visité el foro) también se mostrara como faltante. Ahora todo está correcto. Gracias y disculpas por la confusión que he causado.

Lo único es que todos los usuarios, incluidos los invitados, pueden ver el interruptor en la cabecera. Pero como administrador, cuando estoy conectado, no puedo ver los interruptores. ¿Es esto intencional? ¿Podría ser caché del servidor o algo así?

1 me gusta

Hmm, eso es interesante. ¿Tienes un esquema de color oscuro y claro seleccionado en tus preferencias de usuario?

¿Y estás usando el tema que tiene el componente instalado?

2 Me gusta

Tuve que ir a mi perfil y habilitar esta opción (Habilitar esquema de color automático en modo oscuro) para que apareciera en la cabecera. Probablemente estuve jugueteando y me perdí esa casilla de verificación.

2 Me gusta

¡Me encanta este componente! :heart_eyes: Pero tengo un pequeño problema.

Parece que el componente solo funciona cuando la opción “Habilitar esquema de color automático en modo oscuro” está activada. Mi problema ocurre cuando la opción está activada y la preferencia del sistema está configurada en modo oscuro (es decir, esquema de color preferido: oscuro).

En el escenario anterior, cuando intento cambiar a un tema claro a través de Preferencias > Interfaz > Tema, no sucede nada, lo cual está bien para mí. Presumiblemente, dado que mi preferencia del sistema ya está configurada en modo oscuro, cambiar a modo claro en Discourse no la anula.

Cuando hago lo mismo con el componente de alternancia de modo oscuro/claro, y si mi preferencia de tema en Discourse está configurada en claro, el interruptor realmente me permite cambiar a modo claro (lo cual es aún mejor en mi opinión), pero el logotipo del sitio en el encabezado permanece en modo oscuro y es difícil de ver en modo claro. Cuando miro en el inspector, veo que el elemento se ve así:

<div><a href="/" data-auto-route="true"><picture><source srcset="<link to image>" media="(prefers-color-scheme: dark)"><img src="<link to image>" id="site-logo" class="logo-big"></picture></a></div>

Noté la parte media=“(prefers-color-scheme: dark)” aunque ahora estamos en modo claro establecido por el interruptor.

Debo agregar que el logotipo del sitio normalmente cambia bien entre el modo claro y oscuro cuando la opción “Habilitar esquema de color automático en modo oscuro” en Discourse está desmarcada. Pero esto evita que se muestre el interruptor de modo oscuro/claro :man_shrugging:t2:

Además, si mi preferencia de tema en Discourse está configurada en Oscuro desde Preferencias > Interfaz > Tema, y mi preferencia del sistema también es oscura, el interruptor no cambia entre claro y oscuro; siempre permanece en el tema oscuro.

Idealmente, preferiría que el componente de alternancia de modo oscuro/claro funcionara como lo hace ahora, pero que el logotipo del sitio en el encabezado siga la configuración clara/oscura actualmente activa, no el esquema de color preferido del sistema del usuario.

1 me gusta

¡Lo mismo aquí! ¿Encontraste una solución?

No soy desarrollador frontend, pero hice algunas depuraciones:
Cuando está en modo oscuro, como lo tiene configurado mi computadora, el HTML del logo se ve así:

image

Y el logo se ve bien, con el modo oscuro funcionando completamente. Al cambiar al modo claro, el tema se vuelve claro pero el logo desaparece (el logo oscuro permanece).

Así es como se ve el HTML:

Hay una línea adicional, <source srcset="https://radixtalk.com/uploads/default/original/1X/19838ecb731d3f87d9db76c927e793ab2e159f1e.png" media="(prefers-color-scheme: dark)"> que “bloquea” la carga del logo correcto. Si elimino esa línea con Inspect Element, y solo dejo <img src="https://radixtalk.com/uploads/default/original/1X/237090c67d33a1a38f9f031336dab420c4c4a37d.png" alt="RadixTalk" id="site-logo" class="logo-small" width="36">, aparece el logo correcto.

Espero que esta información haya sido útil.

1 me gusta

Me temo que no. Terminé cambiando el color de fondo del encabezado de una manera que ya no importaba cambiar el logotipo entre el modo claro y el oscuro :man_shrugging:t2: