Dropdown Select-kit: elementos seleccionados/resaltados tienen poco contraste de color, texto e iconos desaparecen

Al usar el menú desplegable de notificación de temas (Watching/Tracking/Normal/Muted), el texto y el icono del elemento actualmente seleccionado se vuelven invisibles debido al contraste insuficiente entre el color de fondo de la selección y los colores del primer plano.

Pasos para reproducir

  1. Abrir cualquier tema

  2. Hacer clic en el botón de la campana de notificación en la parte inferior del tema

  3. Observar el nivel de notificación actualmente seleccionado (por ejemplo, “Tracking”)

Comportamiento esperado

El elemento seleccionado debe tener texto e icono claramente visibles con buen contraste.

Comportamiento actual

  • La etiqueta de texto desaparece o se vuelve muy difícil de leer

  • El icono de la campana se vuelve invisible

  • El problema es más notable en los temas oscuros, pero puede afectar a cualquier tema dependiendo de la paleta de colores

Detalles técnicos

En app/assets/stylesheets/common/select-kit/select-kit.scss, el estado .is-selected solo establece el color de fondo sin garantizar el contraste del primer plano:

&.is-selected,
&.is-selected.is-highlighted {
  background: var(--d-selected);
  // Sin anulación de color para texto o iconos
}

La variable CSS --d-selected proviene del color $selected del tema, pero el texto (.name, .desc) y los iconos (.d-icon) conservan sus colores predeterminados, que pueden no contrastar bien con el fondo de la selección.

Capturas de pantalla

Nota: Habría añadido la otra imagen donde desaparece el icono para el estado seleccionado, pero soy nuevo y solo puedo añadir una imagen por ahora.

Entorno

  • Versión de Discourse: latest

  • Navegador: Edge

  • Tema: Tema Foundation

2 Me gusta

Esta es una restricción para los usuarios nuevos. Puedes explorar algunos temas existentes para que tu nivel de confianza aumente rápidamente a 1.

No puedo reproducir este error.

@BrettH ¿Sucede esto en modo seguro?

Parece que tu paleta de colores no se ha actualizado en mucho tiempo, porque ese no es el color de selección normal. ¿Cuándo fue la última vez que actualizaste tu foro?

2 Me gusta

¿Podría estar relacionado con

?

Sí, este es probablemente el caso; he visto situaciones como esta en las que una paleta de colores personalizada creada antes de que se añadieran nuevos colores termina con un contraste deficiente… @BrettH si creas una nueva paleta de colores y usas esa, ¿persiste el problema?

2 Me gusta

Gracias a todos por las sugerencias. Permítanme abordar las preguntas:

NateDhaliwal: Todavía no he probado en modo seguro, pero basándome en lo que describen chapoi y Kris, sospecho que el modo seguro lo resolvería ya que volvería a la paleta Light predeterminada en lugar de mi paleta personalizada.

@chapoi: Buena pregunta. Nuestra paleta de colores se creó hace bastante tiempo, definitivamente antes de que se agregaran los colores selected y hover a la paleta base. Creo que la paleta se configuró cuando lanzamos la comunidad y no la hemos actualizado desde entonces.

@awesomerobot: Eso tiene sentido. Al observar el código, puedo ver que resolved_colors calcula valores de reserva para hover y selected usando dark_light_diff si faltan en la paleta. Pero el problema es que los colores del texto (.name, .desc, .d-icon) todavía usan sus valores predeterminados, que fueron diseñados para el color de selección de la paleta Light predeterminada, no para el valor de reserva calculado para mi tema más oscuro.

Crearé una nueva paleta y estableceré explícitamente los colores selected y hover a valores que contrasten adecuadamente. Sospecho que eso lo solucionará.

Una idea mientras pruebo: ¿tendría sentido que el cálculo de reserva también considere el contraste del texto? De esa manera, las paletas más antiguas manejarían con elegancia las nuevas adiciones de color sin intervención manual. Solo es una idea; sé que los sistemas de color son complicados de acertar, y el enfoque actual probablemente cubre la mayoría de los casos. Estaré encantado de presentar una solicitud de función separada si eso es útil.

¡Gracias por la ayuda para rastrear esto!

2 Me gusta