Transformation en variables CSS
Les jetons de conception fournissent un langage commun aux concepteurs et aux développeurs pour communiquer leurs décisions de conception. Les jetons de conception doivent être transformés en variables CSS pour que l'application fonctionne avec la définition du thème. Guidewire fournit une commande de transformation basée sur le dictionnaire de style pour gérer cette transformation, y compris une logique de transformation prédéfinie pour tous les jetons de conception définis par Guidewire.
Ce document explique comment fonctionne la transformation des jetons de conception en variables CSS, une fois que le concepteur a remis les jetons définis à un développeur.
Processus général d'utilisation des jetons de conception
- Le concepteur d'expérience utilisateur définit les jetons de conception et leurs valeurs à l'aide du plug-in « Tokens Studio for Figma » (ou de tout autre outil pris en charge).
- Le concepteur d'expérience utilisateur exporte les jetons dans un format
JSONet partage le résultat avec le développeur. - Le développeur convertit les jetons de conception en variables CSS afin qu'ils puissent être utilisés pour contrôler les thèmes dans une application. Cette étape peut être effectuée manuellement ou automatiquement pendant le processus de compilation de l'application. Ce processus de transformation est expliqué ci-dessous.
Définition des jetons de conception et de leurs valeurs
Guidewire fournit une liste de tous les jetons utilisés par les composants Jutro Design System. Le concepteur d'expérience utilisateur utilise cette liste et configure les valeurs appropriées correspondant aux exigences du thème spécifique.
Si le projet nécessite la création de composants personnalisés, des jetons de conception supplémentaires peuvent être ajoutés à la liste initiale. De cette façon, tous les thèmes seront traités de manière unifiée, pour les composants fournis par Guidewire et les composants personnalisés.
Exportation de jetons de conception
Lorsque le concepteur d'expérience utilisateur exporte la définition des jetons à l'aide du plug-in « Tokens Studio for Figma », trois fichiers JSON distincts correspondant à chacun des types de jetons de conception sont créés. Vous trouverez ci-dessous un exemple de fichier JSON contenant des jetons de conception de composants :
{
"jds": {
"color": {
"background": {
"neutral": {
"value": "{jds.color.palette-neutral.20}",
"type": "color",
"description": "Neutral background color"
},
"neutral-hover": {
"value": "{jds.color.palette-neutral.30}",
"type": "color",
"description": "Neutral background color hover state"
}
}
}
},
"custom": {
"some-component": {
"color": {
"background": {
"value": "{jds.color.background.neutral}",
"type": "color",
"description": "Background color for SomeComponent"
}
}
}
}
}
Préparation de la transformation
Avant d'exécuter la transformation des jetons de conception en variables CSS, assurez-vous de suivre d'abord les étapes de préparation suivantes :
- Les fichiers de définition des jetons de conception sont disponibles.
- Les paramètres du processus de transformation sont correctement définis.
- La CLI est installée.
Ajout de fichiers de définition de jeton de conception
Placez les fichiers JSON du jeton de conception dans la base de code de votre application, par exemple dans un emplacement tel que src/tokens/yourThemeName/.... Chaque fois qu'une nouvelle version des jetons de conception est créée, mettez à jour ces fichiers.
Ces fichiers seront référencés dans le fichier de configuration comme expliqué plus loin dans ce document.
JSON exporté ou les variables CSS. Un concepteur doit toujours définir ces valeurs dans le référentiel qui contient la source de ces jetons de conception.Si vous utilisez l'approche automatisée, transmettez ces fichiers au référentiel de code source avec le reste du code de l'application et de la configuration.
Si vous utilisez l'approche manuelle, vous n'avez pas besoin de transmettre ces fichiers au référentiel de code source, car ils ne seront pas utilisés. Toutefois, il est recommandé de les inclure afin de garantir la traçabilité de la version du jeton de conception utilisée pour générer le thème.
Fichier .themesConfig.json
Pour que le thème fonctionne, vous devez configurer le fichier .themesConfig.json. Ce fichier est créé automatiquement lorsque vous créez une nouvelle application Jutro. Vous pouvez également utiliser une commande d'interface de ligne de commande pour la créer. Pour en savoir plus, reportez-vous à la section Génération de .themesConfig.json.
.themesConfig.json contient les éléments suivants :
- Informations sur le thème requises par l'application.
- Informations requises par le processus de transformation des jetons de conception en variables CSS.
Le fichier ressemble à ce qui suit :
{
"sampleTheme": {
"name": "sampleTheme",
"tokens": {
"input-path": "src/tokens/sampleTheme/**/*.json",
"output-file-name": "tokenOverrides.css",
"custom-mappings": "src/tokens/customMappings.json",
"custom-transformations": "src/tokens/customTransformations.js"
}
}
}
Notez que le fichier .themesConfig.json doit contenir tous les thèmes de votre application (s'il en comporte plusieurs).
Vous pouvez définir les propriétés suivantes pour chaque thème défini :
| Propriété | Utilisée par la définition du thème | Utilisée par le processus de transformation | Description |
|---|---|---|---|
name | Oui | Oui | Obligatoire. Nom pour identifier le thème. |
tokens/input-path | Non | Oui | Obligatoire. Il s'agit du chemin (relatif à la racine du projet) dans l'application où vous avez stocké les jetons. |
tokens/output-file-name | Oui | Oui | Obligatoire. Le fichier dans lequel les remplacements des variables CSS qui résultent de la transformation seront stockés. Ce fichier sera toujours créé sous src/assets/. |
tokens/custom-mappings | Non | Oui | Mappage des jetons sur les variables CSS personnalisées (chemin relatif à la racine du projet). Vous trouverez plus d'informations ici : |
tokens/custom-transformations | Non | Oui | Fonctions de transformation personnalisées pour les types de jetons personnalisés (chemin relatif à la racine du projet). Vous trouverez plus d'informations ici : |
Exécution de la transformation
Vous pouvez déclencher le processus de transformation manuellement ou utiliser l'option automatisée. Le résultat est le même, quelle que soit l'option choisie : un fichier CSS avec des variables CSS générées qui est stocké dans le fichier de sortie prédéfini dans le répertoire assets.
/**
* Do not edit directly
* Generated on Mon, 25 Mar 2024 15:35:16 GMT
*/
.themeRoot,
.themeRoot.dynamicRoot {
--JDS-COLOR-BACKGROUND-NEUTRAL: #f0f3f6;
--JDS-COLOR-BACKGROUND-NEUTRAL-HOVER: #dfe5ec;
--CUSTOM-SOME-COMPONENT-COLOR-BACKGROUND: #f0f3f6;
}
Transformation manuelle
Vous pouvez déclencher la transformation manuelle en exécutant le script build-themes à partir du fichier package.json ou de la commande d'interface de ligne de commande jutro generate:themes. Cette option est principalement recommandée pour le mode développement, car elle vous permet de vérifier le résultat de la transformation du thème et son utilisation dans l'application.
Pour en savoir plus, reportez-vous à la section « Générer des définitions de thème pour les applications Jutro » de la documentation CLI.
Pour en savoir plus sur l'utilisation de JUTRO_APP_ID, reportez-vous à la section Intégrer un micro front-end dans une application shell pour la fédération de modules.
Transformation automatisée
Le processus de transformation s'exécutera automatiquement lorsque vous créerez l'application une fois que vous aurez ajouté le script "build-themes" : "jutro generate:themes" au fichier package.json. Le résultat de la transformation sera inclus dans le lot généré, l'application peut donc l'utiliser.
build-themes doit être ajouté avant le script build-webpack dans package.json, sinon il ne sera pas inclus dans le lot.La transformation automatisée est recommandée. L'exécution du processus de transformation pendant le processus de compilation de l'application garantit que le thème généré est à jour et utilise les dernières variables CSS. Cela facilitera la mise à niveau de l'application sans effort et sans intervention manuelle requise.
Génération du fichier .themesConfig.json
Si vous exécutez la commande CLI jutro generate:themes, mais que le fichier .themesConfig.json est introuvable, le processus vous permet de créer un nouveau fichier de configuration.
Pour en savoir plus, reportez-vous à la section « Générer des définitions de thème pour les applications Jutro » de la documentation CLI.
Transformation des jetons de conception de hauteur de ligne
Les jetons de conception de hauteur de ligne peuvent être définis soit en tant que jetons autonomes de type lineHeights, où la valeur représente directement la hauteur de ligne, soit en tant que partie de jetons typography composites, où lineHeight est spécifié avec d’autres propriétés de police telles que fontSize.
Leurs transformations suivent des règles spécifiques en fonction de l’unité et du type :
Hauteurs de ligne sans unité
Quel que soit le type de définition de hauteur de ligne, les hauteurs de ligne sans unité sont traitées comme des valeurs de pixel et px est ajouté à la valeur pendant le processus de transformation. Par exemple, si la valeur d’un jeton de conception correspond à 14, alors la valeur de la variable CSS qui en découle est 14px.
Hauteurs de ligne en pourcentage
- Si le jeton est autonome, de type
lineHeights, l’unité reste%. Par exemple, si la valeur du jeton correspond à80%, la valeur de la variable CSS qui en découle sera également80%. - Si le jeton est spécifié avec une propriété
lineHeight, dans le cadre d’un jeton composite de typetypography, pendant la transformation, la valeur de la hauteur de ligne est calculée en fonction de la propriétéfontSize. L’unité de la hauteur de ligne calculée correspond à l’unité de la propriétéfontSize. Par exemple :- Si la propriété
lineHeightest définie sur150%et la propriétéfontSizesur16px, alors la valeur de la variable CSS qui en découle est24px. - Si la propriété
lineHeightest définie sur125%et la propriétéfontSizesur1rem, alors la valeur de la variable CSS qui en découle est1.25rem.
- Si la propriété
Hauteurs de ligne avec d’autres unités
Quel que soit le type de définition de hauteur de ligne, pour les autres unités, l’unité et la valeur après transformation restent les mêmes que celles définies dans le jeton de conception. Par exemple, si la valeur d’un jeton de conception correspond à 1rem, alors la valeur de la variable CSS qui en découle est 1rem.