Utiliser le schéma de couleurs couleur si schéma sombre, sinon utiliser ma couleur dans le thème

Je souhaite réaliser quelque chose comme ceci

.some-link {
  @if var(--scheme-type) == 'dark' {
    color: var(--primary);
  } @else {
    color: #3b5998;
}

mais bien sûr, ce n’est pas possible car il n’y a pas de if en CSS et SCSS n’est pas traité à l’exécution.

À ma connaissance, Discourse n’ajoute aucune classe pour indiquer si le thème sombre est actif, et le CSS ne permet pas d’utiliser des propriétés personnalisées dans les sélecteurs.

Avez-vous des idées sur la meilleure solution de contournement possible ?

Je pense que c’est ce que vous recherchez :

Ainsi, dans color_definitions.scss, vous pouvez faire :

$my-theme-color: dark-light-choose($primary, red);

:root {
  --my-theme-color: #{$my-theme-color};
}

Ensuite, vous utiliserez la nouvelle propriété personnalisée pour le changement sombre/clair dans votre thème :

body {
  color: var(--my-theme-color);
}

Yay, ça semble fonctionner :yum:

C’est un peu étrange que les paramètres ne soient pas dans le même ordre que le nom de la fonction.

Il faut donc utiliser dark-light-choose(#3b5998, $primary)