Transformación a variables CSS
Los tokens de diseño proporcionan un lenguaje común para que los diseñadores y desarrolladores comuniquen sus decisiones de diseño. Los tokens de diseño deben transformarse en variables CSS para que la aplicación funcione con la definición del tema. Guidewire proporciona un comando de transformación basado en el diccionario de estilo para manejar esta transformación, incluida la lógica de transformación predefinida para todos los tokens de diseño definidos por Guidewire.
En este documento, se explica cómo funciona la transformación de tokens de diseño a variables CSS, una vez que el diseñador entrega los tokens definidos a un desarrollador.
Proceso general para trabajar con tokens de diseño
- El diseñador de UX define los tokens de diseño y sus valores mediante el plugin “Tokens Studio for Figma” (o cualquier otra herramienta compatible).
- El diseñador de UX exporta los tokens en un formato
JSONy envía el resultado al desarrollador. - El desarrollador convierte los tokens de diseño en variables CSS de modo que se puedan utilizar para controlar la tematización en una aplicación. Este paso se puede realizar de forma manual o automática durante el proceso de compilación de la aplicación. Este proceso de transformación se explica en los próximos párrafos.
Definición de los tokens de diseño y sus valores
Guidewire proporciona una lista con todos los tokens utilizados por los componentes de Jutro Design System. El diseñador de UX toma esta lista y configura los valores apropiados correspondientes a los requisitos del tema específico.
En caso de que el proyecto requiera la creación de algunos componentes personalizados, se pueden agregar tokens de diseño adicionales a la lista inicial. De esta manera, toda la tematización se manejará de manera unificada, tanto para los componentes proporcionados por Guidewire como para los personalizados.
Exportación de tokens de diseño
Cuando el diseñador de UX exporta la definición de tokens mediante el plugin “Tokens Studio for Figma”, se crean tres archivos JSON separados correspondientes a cada uno de los tipos de tokens de diseño. A continuación, se muestra un ejemplo de un archivo JSON que contiene tokens de diseño de componentes:
{
"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"
}
}
}
}
}
Preparación de la transformación
Antes de ejecutar la transformación de los tokens de diseño en variables CSS, asegúrese de cumplir primero los pasos de preparación:
- Los archivos de definición de token de diseño deben estar disponibles.
- Los parámetros del proceso de transformación deben estar correctamente configurados.
- La CLI debe estar instalada.
Agregado de archivos de definición de token de diseño
Ubique los archivos JSON de token de diseño en la base del código de su aplicación, por ejemplo, en una ubicación como src/tokens/yourThemeName/.... Cada vez que se cree una nueva versión de los tokens de diseño, actualice estos archivos.
Se hará referencia a estos archivos en el archivo de configuración como se explica más adelante en este documento.
JSON exportado ni las variables CSS. Un diseñador siempre debe establecer estos valores en el repositorio que contiene la fuente de estos tokens de diseño.Si está utilizando el método automatizado, inserte estos archivos en el repositorio de código fuente junto con el resto del código y la configuración de la aplicación.
Si utiliza el método manual, no tiene que enviar estos archivos al repositorio de código fuente, ya que no se utilizarán. Sin embargo, se recomienda incluirlos para proporcionar trazabilidad de la versión del token de diseño utilizada para generar el tema.
Archivo .themesConfig.json
Para que la tematización funcione, debe configurar el archivo .themesConfig.json. Este archivo se crea automáticamente el crear una nueva aplicación de Jutro. También puede usar un comando de la CLI para crearlo; para obtener más información, consulte la sección Generación de .themesConfig.json.
.themesConfig.json contiene lo siguiente:
- La información sobre el tema que requiere la aplicación.
- La información que requiere el proceso de transformación de tokens de diseño en variables CSS.
El archivo se parece a lo siguiente:
{
"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"
}
}
}
Tenga en cuenta que el archivo .themesConfig.json debe contener todos los temas de su aplicación (si tiene más de uno).
Puede establecer las siguientes propiedades para cada tema definido:
| Propiedad | Utilizada por definición de tema | Utilizada por el proceso de transformación | Descripción |
|---|---|---|---|
name | Sí | Sí | Obligatorio. Nombre para identificar el tema. |
tokens/input-path | No | Sí | Obligatorio. Esta es la ruta (relativa a la raíz del proyecto) en la aplicación donde almacenó los tokens. |
tokens/output-file-name | Sí | Sí | Obligatorio. Archivo donde la variable CSS invalida qué resultado de la transformación se almacenará. Este archivo siempre se creará en src/assets/. |
tokens/custom-mappings | No | Sí | Asignación de los tokens a variables CSS personalizadas (ruta relativa a la raíz del proyecto). Encontrará más información aquí. |
tokens/custom-transformations | No | Sí | Funciones de transformación personalizadas para los tipos de tokens personalizados (ruta relativa a la raíz del proyecto). Encontrará más información aquí. |
Ejecución de la transformación
Puede activar el proceso de transformación manualmente o utilizar la opción automatizada. El resultado es el mismo independientemente de la opción que elija: un archivo CSS con variables CSS generadas que se almacena en el archivo de salida predefinido en el directorio 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;
}
Transformación manual
Puede activar la transformación manual ejecutando el script build-themes desde el archivo package.json o el comando de la CLI jutro generate:themes. Esta opci ón se recomienda principalmente para el modo de desarrollo, ya que permite verificar el resultado de la transformación del tema y su uso en la aplicación.
Consulte la sección “Generación de definiciones de temas para aplicaciones de Jutro” de la documentación de la CLI para obtener más información.
Obtendrá más información sobre el uso de JUTRO_APP_ID en la sección sobre incrustación de un microfrontend en una aplicación shell para la federación de módulos.
Transformación automatizada
El proceso de transformación se ejecutará automáticamente cuando compile la aplicación una vez que agregue el script "build-themes" : "jutro generate:themes" al archivo package.json. El resultado de la transformación se incluirá en el paquete generado, de modo que esté disponible para que la aplicación lo use.
build-themes debe agregarse antes del script build-webpack en package.json, de lo contrario, no se incluirá en el paquete.Se recomienda la transformación automatizada. Tener el proceso de transformación ejecutado durante el proceso de compilación de la aplicación garantiza que el tema generado esté actualizado y utilice las variables CSS más recientes. Esto facilitará la actualización de la aplicación sin esfuerzo y sin necesidad de intervención manual.
Generación de .themesConfig.json
Si ejecuta el comando de la CLI jutro generate:themes, pero no se encuentra el archivo .themesConfig.json, el proceso le permite crear un nuevo archivo de configuración.
Consulte la sección “Generación de definiciones de temas para aplicaciones de Jutro” de la documentación de la CLI para obtener más información.
Transformación de los tokens de diseño de altura de línea
Los tokens de diseño de altura de línea se pueden definir como tokens independientes de tipo lineHeights, donde el valor representa directamente la altura de la línea, o como parte de tokens de typography compuestos, donde lineHeight se especifica junto con otras propiedades de fuente como fontSize.
Sus transformaciones siguen reglas específicas según la unidad y el tipo:
Alturas de línea sin unidades
Independientemente del tipo de definición de altura de línea, las alturas de línea sin unidades se tratan como valores de píxel y px se agrega al valor durante el proceso de transformación. Por ejemplo, si el valor de un token de diseño es 14, el valor de la variable CSS resultante es 14px.
Porcentaje de alturas de línea
- Si el token es independiente, del tipo
lineHeights, entonces la unidad permanece como%. Por ejemplo, si el valor del token es80%, el valor de la variable CSS resultante también será80%. - Si el token se especifica con una propiedad
lineHeight, como parte de un token compuesto del tipotypography, durante la transformación, el valor de la altura de la línea se calcula en función de la propiedadfontSize. La unidad de la altura de línea calculada coincide con la unidad de la propiedadfontSize. Por ejemplo:- Si la propiedad
lineHeightse establece en150%y la propiedadfontSizese establece en16px, entonces el valor resultante de la variable CSS es24px. - Si la propiedad
lineHeightse establece en125%y la propiedadfontSizese establece en1rem, entonces el valor resultante de la variable CSS es1.25rem.
- Si la propiedad
Alturas de línea con otras unidades
Independientemente del tipo de definición de altura de línea, para otras unidades, la unidad y el valor después de la transformación siguen siendo los mismos que los definidos en el token de diseño. Por ejemplo, si el valor de un token de diseño es 1rem, el valor de la variable CSS resultante es 1rem.