Reconstruction du thème Meta : nouveaux icônes, page d'accueil personnalisée et premier aperçu de l'API Blocks

Nous venons de déployer une deuxième itération de notre refonte de thème. Alors que la première mise à jour était un rafraîchissement visuel construit sur la base du thème précédent Meta Branded, cette version est essentiellement un nouveau thème entièrement reconstruit. Le nouveau langage de marque avait déjà été introduit avec la version précédente, il n’y a donc pas de changement visible majeur de ce côté. Ce qui a considérablement changé avec cette mise à jour, c’est l’implémentation du thème elle-même, et ce qu’elle révèle de notre direction en matière de personnalisation de Discourse plus largement.

Je vais parcourir quelques détails d’implémentation, en commençant par les éléments les plus modestes :

Icônes Lucide

Lucide est une bibliothèque open source d’icônes modernes en traits, et nous l’avons adoptée dans plusieurs de nos projets de personnalisation. Avec cette itération, nous l’avons également intégrée au thème Meta Branded. Il n’est pas prévu de remplacer Font Awesome dans le cœur de Discourse, mais la version gratuite de Font Awesome ne propose qu’un éventail limité d’icônes en traits, insuffisant pour former un système cohérent d’icônes en traits. Le composant de thème est disponible sur Discourse Lucide Icons.

Modificateur de thème pour restreindre les palettes de couleurs

Nous avons ajouté un nouveau modificateur de thème only_theme_color_schemes qui restreint les palettes de couleurs disponibles pour un thème donné, tant pour les administrateurs que pour les utilisateurs dans leurs préférences d’interface. Meta propose plusieurs palettes sélectionnables par l’utilisateur qui entreraient en conflit avec l’identité visuelle du thème Meta Branded. Grâce à ce modificateur, seules les palettes incluses avec le thème sont proposées comme options. :link: PR : FEATURE: add modifier to restrict theme color schemes

Mise en page pleine largeur

Nous testons également quelques ajustements du composant Discourse Full-width pour mieux centrer le contenu principal de la page. De nombreux éléments dynamiques dans l’en-tête compliquent la configuration, et pour l’instant, cela reste expérimental et n’est disponible que sur une branche du composant.

Transformateur de valeur pour contrôler la visibilité de la bannière de bienvenue

Nous avons utilisé un nouveau transformateur de valeur welcome-banner-display-for-route pour contrôler programmatiquement sur quelles routes la bannière de bienvenue principale s’affiche. Nous l’utilisons pour nous assurer que la bannière n’apparaît que sur la page d’accueil personnalisée par défaut et non sur les pages qu’un utilisateur pourrait avoir définies comme sa page d’atterrissage personnelle. :link: PR : DEV: Add welcome-banner-display-for-route value transformer

Cela nous amène aux deux changements les plus importants :

Page d’accueil personnalisée via un modificateur de thème

Le modificateur de thème custom_homepage est disponible depuis près de deux ans, mais c’est la première fois que nous l’utilisons pour façonner l’expérience de la page d’accueil sur Meta lui-même. Nous introduisons une page d’atterrissage personnalisée remplie de composants en vedette. Pour le lancement initial, cela comprend des catégories mises en avant et un aperçu des derniers sujets de discussion.

Nous avons créé ces composants en vedette en utilisant notre nouvelle API Blocks expérimentale, ce qui nous amène au changement le plus important :

API Blocks : première utilisation en production

L’API Blocks est un nouveau framework pour créer des mises en page modulaires et composables dans Discourse. Elle permet aux développeurs de thèmes d’assembler des pages à partir de composants autonomes et réutilisables, qui peuvent être placés dans des zones de mise en page définies. Le thème Meta est notre premier déploiement en production de cette API.

Le framework propose un riche ensemble d’outils pour les développeurs : activez les outils de développement et vous pourrez inspecter la structure des blocs de n’importe quelle page grâce à une superposition intégrée qui visualise toutes les zones de mise en page actives et leurs composants.

Au-delà de la page d’accueil, nous utilisons également des blocs pour afficher des bannières de catégories personnalisées qui montrent les sous-catégories de chaque catégorie :

Il s’agit toujours d’un aperçu précoce du système dans un contexte de production. Nous prévoyons de publier une documentation et davantage d’exemples prochainement. :link: PR : DEV: Add Block API for declarative, validated UI extension points

19 « J'aime »

C’est un bon choix. Cet ensemble a attiré mon attention lorsque j’examinais les jeux d’icônes disponibles pour Discourse. Il est raffiné et élégant.

L’absence totale d’icônes pleines posait quelques problèmes : par exemple, l’indicateur de non-lu était à peine visible sous forme de cercle coloré, ou le bouton de bascule entre le mode sombre et clair était difficile à rendre correctement sans partie pleine.

Je remarque que vous avez résolu ces problèmes sur le thème de marque de meta. Avez-vous ajouté des icônes personnalisées pour cela ?


D’ailleurs, le logo Discourse en haut à gauche n’est pas cliquable sur le thème de marque de meta (cela fait des mois, je crois) :grimacing:

1 « J'aime »

Non, nous n’avons tout simplement pas mappé certaines icônes comme circle et square vers la version Lucide. Ou plutôt, nous avons uniquement mappé la version contour de Fontawesome pour ces icônes (far-circle, etc.). Il pourrait y avoir d’autres cas où nous devrons continuer à améliorer ce mappage.

Par exemple, l’icône cœur est délicate. Je pense qu’une version remplie serait préférable lorsqu’un contenu est liké, mais pour l’instant, je ne suis pas sûr de la meilleure façon de procéder..

[quote=“Canapin, post:5, topic:400013”]
Au fait, le logo Discourse en haut à gauche n’est pas cliquable sur le thème officiel de Meta (je crois que c’est le cas depuis des mois).
[/quote] Je n’arrive pas à reproduire ce problème. Avez-vous plus de détails ?

3 « J'aime »

Je suis curieux, quelle est la différence que Blocks apporte et que Plugin Outlets n’offre pas ?

2 « J'aime »

Testé uniquement sur Chrome et Edge, et le problème ne se produit que sur ordinateur de bureau :

Le div de bascule de la barre latérale recouvre le logo, le rendant impossible à cliquer.

(et oui, le cœur liké en contour n’est pas très joli :broken_heart: )

1 « J'aime »

Je n’aime absolument pas l’icône actuelle pour « répondu à » :

Je suppose que c’est temporaire, car il n’existe pas de bonne équivalence FA dans Lucide ?


Les icônes sur la liste des sujets sont très, très petites :

Édition : c’est pareil sur les autres thèmes.


Les icônes de catégorie semblent plus petites que celles des tags, ce qui est étrange. J’ai l’impression que la taille choisie pour les icônes de catégorie a été globalement contrainte par le style de catégorie en boîte, ce qui laisse moins de place… :thinking:

3 « J'aime »

Je ne m’attendais pas à voir quelque chose comme Lucide ajouté à un thème officiel de cette manière. Ça a l’air super ! J’aurais juste préféré que le cœur soit rempli. Mis à part ce détail, le thème est magnifique sur mobile, à mon avis.

Il semble qu’il n’y ait pas de padding sur le corps dans les messages privés :

2 « J'aime »

Je suis d’accord !

Et je suis d’accord avec ce qui précède, le cœur vide n’est pas bien.

2 « J'aime »

Hmm… une chose que je pense pourrait être modifiée, c’est l’icône de chat : passer de message-square-text à message-square ? Les lignes semblent un peu distrayantes. Ce changement rend l’interface plus épurée, c’est une modification vraiment sympa.

1 « J'aime »

Merci pour tous vos retours sur les icônes ! J’ai justement créé un sujet dédié pour l’ensemble : Icônes Lucide de Discourse.

Idéalement, nous souhaiterions recueillir d’autres retours là-bas et continuer à peaufiner l’ensemble au fur et à mesure.

Je suis d’accord, les icônes sont presque illisibles à l’actuel .74em. Elles ont besoin d’environ 1em.

1 « J'aime »

Est-ce mon imagination ou bien le padding vertical au sein de la liste des sujets a-t-il augmenté aujourd’hui ? Soit elle est moins dense, soit je le suis davantage.

1 « J'aime »

J’ai aussi remarqué cela et j’ai essayé de revenir manuellement dessus (car je privilégie la densité d’information à l’esthétique), mais sans succès :frowning:

La principale différence, d’un point de vue conception, est qu’un PluginOutlet est un point d’insertion. Vous injectez directement votre composant dans un modèle de base. Chaque personnalisation modifie effectivement la structure de l’application.

Un BlockOutlet est un cadre de mise en page. Vous enregistrez un ou plusieurs composants avec ce cadre. Ensuite, les personnalisations ont lieu dans ce cadre plutôt que dans les modèles de l’application. Nous obtenons ainsi des mises en page plus prévisibles et stables.

Une autre grande différence est que l’API Blocks peut gérer l’ensemble du spectre de la logique de rendu conditionnel. Vous n’avez pas besoin d’ajouter cela à votre composant. Un composant de bloc peut se concentrer uniquement sur le contenu et le modèle, et nous avons beaucoup moins de logique répétée.

1 « J'aime »

Si quelqu’un souhaite avoir une liste de sujets plus compacte, voici ce qui a fonctionné pour moi :

.topic-list .topic-list-data {
  padding: 8px 0px;
  line-height: 0px;
}

Le nouveau thème aux couleurs de Meta a, à mon goût, trop d’espacement sur mobile.

  • Un premier espace entre la bordure de l’écran et le conteneur du contenu
  • Un deuxième espace entre le conteneur de la page et le contenu réel

Les autres thèmes n’ont pas ce premier écart entre la bordure de l’écran et le conteneur du contenu.

Cela rend le contenu un peu « écrasé » horizontalement ; il y a très peu d’espace. C’est particulièrement visible sur la page « mon message », par rapport à Horizon :

Horizon permet d’afficher beaucoup plus de contenu sans perdre en lisibilité.

Je comprends l’intention derrière le fond violet en « contour » pour que l’aspect de la marque soit visible sur une page contenant tout le contenu, mais je pense que nous perdons trop d’espace sur ces écrans étroits.

Quelques autres petites critiques :

L’icône en haut à gauche n’est pas parfaitement ronde. Elle est très légèrement aplatie.
image image

La fenêtre contextuelle des catégories/étiquettes laisse légèrement déborder la zone de texte (je ne suis pas sûr que cela soit lié à ce thème) :

. Il vaudrait mieux qu’elle la recouvre entièrement.

1 « J'aime »