Ajouter un thème de point d’arrêt
Dans cette mission d’apprentissage, vous allez apprendre à gérer les différences de thème en fonction des points d’arrêt dans une application Jutro à l’aide de jetons de conception.
Qu’est-ce que la création de thèmes de point d’arrêt ?
La création de thèmes de point d’arrêt dans les applications React font référence à la pratique consistant à appliquer différents styles, mises en page ou même configurations de thèmes entiers en fonction des points d’arrêt de la taille de l’écran.
L’utilisation de points d’arrêt pour ajuster de manière réactive le thème CSS de votre application présente les avantages suivants :
- Expérience utilisateur optimisée : différentes tailles d’écran peuvent avoir des modèles d’expérience utilisateur complètement différents.
- Cohérence de la marque : conservez l’identité de la marque tout en vous adaptant aux contraintes de l’appareil d’un utilisateur.
- Accessibilité : des cibles tactiles plus grandes sur mobile ou des schémas de navigation entièrement différents.
Jutro ne dispose pas d’un mécanisme intégré pour la création de thèmes de point d’arrêt. Pour ajouter cette fonctionnalité à une application, vous devez utiliser des mécanismes CSS intégrés, tels que les requêtes multimédias.
Activité pratique : Ajouter des thèmes de point d’arrêt à l’application Sandbox d’apprentissage
Dans cet exercice, vous utiliserez des requêtes de média CSS pour déterminer quel ensemble de jetons de conception est actif en fonction de la largeur de la fenêtre d’affichage et s’il est affiché sur un périphérique à l’écran. Cet exemple couvre deux cas de figure :
screen and (min-width: 769px): actif lors de l’affichage sur un périphérique à écran et si la largeur est d’au moins 769 pixels.screen and (max-width: 768px): actif lors de l’affichage sur un périphérique à écran et si la largeur est inférieure ou égale à 768 pixels.
Celui-ci est divisé en deux parties. Tout d’abord, vous définissez les thèmes que vous souhaitez comme vous le feriez normalement et utilisez les CLI Jutro pour générer les fichiers CLI associés. Lorsque les fichiers CSS sont générés, vous définissez manuellement un thème combiné qui effectue l'importation à partir des fichiers CSS générés et le définissez comme thème actif.
1. Définissez les jetons de conception pour chaque thème
La première partie du processus consiste à suivre les mêmes étapes pour définir de nouveaux thèmes à partir de la mission d’apprentissage précédente.
-
Créez deux dossiers de jetons dans votre dossier
src/assets/styles/tokens. Nommez l’unLearning-Desktoppour les jetons de bureau et nommez l’autreLearning-Tabletpour les jetons de tablette. -
Dans chacun de ces dossiers, créez un fichier JSON avec les jetons à appliquer lorsque leur thème associé est actif. Nommez chacun d’entre eux à l’aide d’une dénomination spécifique au répertoire, par exemple
learning-desktop-tokens.jsonetlearning-tablet-tokens.json.
{
"jds": {
"color": {
"background": {
"page": {
"type": "color",
"value": "#ffffff",
"description": "Palette color White."
}
}
}
}
}
{
"jds": {
"color": {
"background": {
"page": {
"type": "color",
"value": "#000000",
"description": "Palette color Black."
}
}
}
}
}
- Ajoutez les nouveaux ensembles de jetons au fichier
.themesConfig.jsonet nommez-lesLearningDesktopetLearningTablet:
{
"LearningTablet": {
"name": "LearningTablet",
"tokens": {
"input-path": "src/assets/styles/tokens/Learning-Tablet/*.json",
"output-file-name": "styles/Learning-Tablet/learning-tablet-design-tokens.css"
}
},
"LearningDesktop": {
"name": "LearningDesktop",
"tokens": {
"input-path": "src/assets/styles/tokens/Learning-Desktop/*.json",
"output-file-name": "styles/Learning/learning-desktop-design-tokens.css"
}
},
"endlessSky": {
"name": "endlessSky",
"variableOverrides": "styles/endlessSky/variableOverrides.css",
"styleOverrides": "styles/endlessSky/styleOverrides.css",
"baseTheme": "Consumer"
},
"DSB": {
"name": "DSB",
"variableOverrides": "styles/dsbTheme/variableOverrides.css",
"styleOverrides": "styles/dsbTheme/styleOverrides.css",
"baseTheme": "Consumer"
},
"RedFarm": {
"name": "RedFarm",
"baseTheme": "Consumer",
"variableOverrides": "styles/redFarmTheme/variableOverrides.css",
"styleOverrides": "styles/redFarmTheme/styleOverrides.css"
},
"sampleTheme": {
"name": "sampleTheme",
"baseTheme": "Enterprise",
"variableOverrides": "styles/sampleTheme/variableOverrides.css",
"styleOverrides": "styles/sampleTheme/styleOverrides.css"
}
}
- Ouvrez un terminal dans le dossier
jutro-sandbox-app. Exécutez la commandejutro generate:themespour générer des fichiers CSS basés sur le fichier de jeton défini à l’étape 1. En cas de réussite, la sortie suivante s’affiche et les nouveaux fichiers sont créés au niveau des chemins indiqués.
> npm run jutro generate:themes
_____ __
/\___ \ /\ \__
\/__/\ \ __ __\ \ ,_\ _ __ ___
_\ \ \/\ \/\ \\ \ \/ /\`'__\/ __`\
/\ \_\ \ \ \_\ \\ \ \_\ \ \//\ \L\ \
\ \____/\ \____/ \ \__\\ \_\\ \____/
\/___/ \/___/ \/__/ \/_/ \/___/
[dotenv@17.2.3] injecting env (8) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject }
css
✔︎ src/assets/styles/Learning-Tablet/learning-tablet-design-tokens.css
css
✔︎ src/assets/styles/Learning-Desktop/learning-desktop-design-tokens.css
Pour en savoir plus sur la commande generate:themes, reportez-vous à la documentation CLI
2. Créez un thème combiné
L’étape suivante consiste à créer manuellement un fichier CSS qui importe à la fois les thèmes et définit celui à appliquer en fonction des requêtes média CSS.
- Créez un nouveau dossier dans le répertoire
stylesnomméCombined-Themes.
jutro-sandbox-app
├── src
│ └── assets
│ └── styles
| ├── Combined-Themes
| ├── Learning-Desktop
| | └── learning-desktop-design-tokens.css
| └── Learning-Tablet
| └── learning-tablet-tokens.css
- Créez manuellement un fichier dans le répertoire
Combined-Themesnommécombined-theme-design-tokens.cssavec le contenu suivant :
@import url('../Learning-Desktop/learning-desktop-design-tokens.css') screen and
(min-width: 769px);
@import url('../Learning-Tablet/learning-tablet-design-tokens.css') screen and
(max-width: 768px);
- Ajoutez l’ensemble de jetons combinés au fichier
.themesConfig.jsonen ajoutant un thème oùvariableOverridesest le chemin d’accès au fichier CSS que vous avez créé manuellement :
{
"CombinedTheme": {
"name": "CombinedTheme",
"variableOverrides": "styles/Combined-Theme/combined-theme-design-tokens.css"
},
"LearningTablet": {
"name": "LearningTablet",
"tokens": {
"input-path": "src/assets/styles/tokens/Learning-Tablet/*.json",
"output-file-name": "styles/Learning-Tablet/learning-tablet-design-tokens.css"
}
},
"Learning": {
"name": "LearningDesktop",
"tokens": {
"input-path": "src/assets/styles/tokens/Learning-Desktop/*.json",
"output-file-name": "styles/Learning/learning-desktop-design-tokens.css"
}
},
...
jutro generate:themes par la suite comme dans la section précédente, car vous avez créé manuellement le fichier CSS que ce thème utilise à l’étape 2.- Dans le fichier
startApp.tsde votre projet racine, mettez à jour l’argumentthemeConfigpour utiliserCombinedTheme:
start(Jutro, {
...
themeConfig: themesConfig.CombinedTheme,
});
- Démarrez le site à l’aide de la commande
npm startdans votre terminal, et diminuez la taille de votre fenêtre. L’arrière-plan devient noir lorsque la largeur de l’écran est inférieure à 769 pixels.
