Un guide de configuration Cloudscape avec de véritables jetons de mise à jour visuelle, un espacement adapté à la densité, des API de formulaire contrôlées et un assistant fonctionnel en deux étapes pour la création de ressources.
Guide OpenDesign8 chapitres50 entrées de référenceGuide de l’application d’origine
01
Aperçu de l’interface du système de design AWS Cloudscape
Testez des noms invalides, choisissez un profil de capacité, passez de la configuration à la vérification, changez l’apparence et confirmez la recette localement.
Cloudscape natif 3.0.1390 avec React 18.3.1 ; composition Wizard originale et état exclusivement local. · Référence de mise en œuvre
02
Référence de conception du système de design AWS Cloudscape
Composants Cloudscape 3.0.1390 et design-tokens 3.0.114, thème visual-refresh. Les valeurs sont extraites du JSON des jetons publié. Les modes de couleur et les densités de contenu sont deux dimensions distinctes. Il s’agit d’une référence d’implémentation ciblée, et non de l’export complet des jetons.
Rôles de couleur sémantiques en mode clair et sombre
Architecture de configuration du système de design AWS Cloudscape
Adaptez le workflow à Wizard
Cet exemple sépare la configuration de la vérification. Wizard fournit la navigation entre les étapes et les actions ; l’application gère l’index actuel, les valeurs des champs, la règle de validation et la confirmation finale. Le lecteur peut revenir à la configuration sans recréer le formulaire ni perdre la capacité sélectionnée. Cette approche convient mieux que d’enfermer tout un workflow à plusieurs étapes dans une seule Card générique.
Créez la mise en page avec les conteneurs natifs
Container, Header et SpaceBetween définissent la section du formulaire. Le h1 présente l’opération ; le h2 nomme le groupe de paramètres. Le texte explicatif est placé à côté du champ ou de l’étape qu’il décrit. La largeur maximale de 1200px et le padding de la page sont des choix explicites de mise en page de l’application CSS, et non des jetons de mise en page Cloudscape exportés.
Jetons sémantiques et modes visuels du système de design AWS Cloudscape
Choisissez un rôle avant une valeur
La référence distingue l’arrière-plan de la mise en page, le contenu des conteneurs, le texte du corps, le texte interactif et les retours d’état. Leurs valeurs ne forment pas une palette uniforme. Pour une interface personnalisée, importez le jeton nommé depuis @cloudscape-design/design-tokens plutôt que de recopier une valeur hexadécimale claire dans chaque état. Le jeton définit une fonction ; sa valeur peut évoluer.
Changer de mode depuis la bibliothèque
L’aperçu appelle applyMode avec Mode.Light ou Mode.Dark depuis global-styles. Cela met à jour le mode utilisé par les composants au lieu de remplacer des couleurs CSS arbitraires. En mode sombre, l’écran de vérification conserve les mêmes libellés, la capacité sélectionnée et l’état de navigation. Le JSON source consigne les valeurs en mode clair et sombre, ce qui permet de les examiner séparément.
Typographie et hiérarchie des titres du système de design AWS Cloudscape
Associez les rôles de police et de hauteur de ligne
La référence visual-refresh body-m utilise une taille de 14px et une hauteur de ligne de 20px. Le rôle heading-xl correspond à 24px avec une hauteur de ligne de 30px, heading-l à 20px avec 24px, et heading-m à 18px avec 22px. Ces rôles définissent la hiérarchie compacte du formulaire ; ils ne sont pas des tailles d’affichage marketing interchangeables.
Utilisez les variantes sémantiques des composants
La variante Header h1 affiche « Créer un espace de travail ». Les en-têtes des conteneurs utilisent h2, tandis que la variante Box awsui-key-label applique un style secondaire cohérent aux libellés de révision. Les valeurs restent du texte ordinaire et lisible. Ne transformez pas tous les libellés de champ en titres dans le seul but de leur donner plus de poids visuel.
Système de design AWS Cloudscape : champs contrôlés et composition de la révision
Comprendre le contrat des événements detail
Input émet un événement dont detail.value contient le nouveau texte. Select émet detail.selectedOption, qui est un objet option et non une simple chaîne. L’exemple complet stocke cet objet et affiche son libellé dans la révision. Cela évite une erreur d’intégration fréquente : un Select qui semble vide parce que selectedOption reçoit uniquement un identifiant.
Associez les instructions au champ concerné
La politique de format des champs relève de cette application d’exemple.
Les options de capacité ne constituent ni des affirmations sur les produits ni des tarifs.
Les composants natifs gèrent la présentation ; l’état React contient la configuration.
Système de design AWS Cloudscape : densité et mise en page adaptative
Ne considérez pas le mode compact comme un niveau de zoom
Les valeurs d’espacement à l’échelle publiées varient selon la densité. Par exemple, space-scaled-m vaut 16px en mode confortable et 12px en mode compact, tandis que space-scaled-l vaut respectivement 20px et 16px. Ces différences resserrent le rythme vertical sans redéfinir le contenu ni réduire arbitrairement la taille du texte. Les composants natifs appliquent leurs propres règles de densité.
Laissez les structures d’étapes et de révision s’adapter
Wizard adapte la présentation de sa navigation à l’espace disponible ; ColumnLayout organise les métadonnées de révision de façon adaptative. L’application CSS réduit la marge intérieure extérieure en dessous de 600px. L’exemple ne fixe pas en dur la largeur de la navigation des étapes sur ordinateur, et sa version mobile conserve des actions visibles Next, Previous et Confirm, disponibles localement.
Système de design AWS Cloudscape : validation et confirmation avec Wizard
Validez avant d’accepter la navigation
onNavigate reçoit requestedStepIndex. Avant de passer à la révision, l’application vérifie le nom et conserve l’étape actuelle s’il est invalide. Toute modification efface l’erreur afin que la saisie suivante puisse être évaluée à nouveau. Le retour aux paramètres préserve le nom et l’option sélectionnée.
Saisissez un nom invalide et restez dans la configuration.
Corrigez le nom et choisissez un autre profil de capacité.
Passez à la révision et vérifiez les deux valeurs.
Utilisez Edit settings pour revenir sans perdre l’une ou l’autre valeur.
Confirmez localement et relancez l’exemple.
Distinguez une démonstration d’un provisionnement
L’action finale affiche une alerte de réussite locale et un récapitulatif de la configuration. Elle ne prétend pas créer une véritable ressource. Dans une application réelle, maintenez l’action de soumission en attente pendant le provisionnement, distinguez les demandes acceptées des ressources effectivement créées et proposez une procédure de récupération en cas d’échec sans supprimer la configuration.
Système de design AWS Cloudscape : accessibilité des formulaires
Conservez les libellés et les noms de navigation
Wizard reçoit navigationAriaLabel et les chaînes d’action traduites. Chaque Input et Select est inclus dans un FormField doté d’un libellé. Alert communique les résultats invalides ou réussis au moyen des sémantiques natives du composant. Les contraintes visibles complètent le libellé du champ au lieu de le remplacer.
Vérifiez le parcours au clavier dans l’ensemble de l’opération
Utilisez le clavier pour accéder au champ du nom, ouvrir le sélecteur de capacité, passer à l’étape suivante, revenir en arrière, modifier la valeur et confirmer. Le comportement natif de la gestion du focus est utile, mais la règle de validation des étapes et la signification de la confirmation restent du ressort de l’application. Une bibliothèque de composants ne peut pas valider seule une règle métier manquante.
Système de design AWS Cloudscape : installation et limites de personnalisation
Installez ensemble les packages associés
L’implémentation importe les composants depuis leurs sous-chemins de package individuels et charge une seule fois global-styles. design-tokens fournit une référence pour les styles personnalisés. Le fichier d’entrée React fourni et le fichier compact CSS reproduisent l’exemple interactif dans une application Vite React. Conservez des versions compatibles des packages Cloudscape.
Utilisez l’exemple fourni comme véritable point de départ
Système de design AWS Cloudscape : exemples de composants
main.jsx — assistant de configuration complet
Wizard, FormField, Select et métadonnées de révision natifs, avec navigation contrôlée et confirmation locale.
jsx
import React, { useState } from "react";
import { createRoot } from "react-dom/client";
import Wizard from "@cloudscape-design/components/wizard";
import Container from "@cloudscape-design/components/container";
import Header from "@cloudscape-design/components/header";
import FormField from "@cloudscape-design/components/form-field";
import Input from "@cloudscape-design/components/input";
import Select from "@cloudscape-design/components/select";
import SpaceBetween from "@cloudscape-design/components/space-between";
import ColumnLayout from "@cloudscape-design/components/column-layout";
import Box from "@cloudscape-design/components/box";
import Button from "@cloudscape-design/components/button";
import Alert from "@cloudscape-design/components/alert";
import Toggle from "@cloudscape-design/components/toggle";
import { applyMode, Mode } from "@cloudscape-design/global-styles";
import "@cloudscape-design/global-styles/index.css";
import "./cloudscape.css";
const sizes = [
{ label: "Development · 2 vCPU / 4 GiB", value: "dev" },
{ label: "Standard · 4 vCPU / 8 GiB", value: "standard" },
{ label: "Compute · 8 vCPU / 16 GiB", value: "compute" },
];
function App() {
const [name, setName] = useState("analytics-sandbox"),
[size, setSize] = useState(sizes[0]),
[step, setStep] = useState(0),
[error, setError] = useState(""),
[complete, setComplete] = useState(false),
[dark, setDark] = useState(false);
function next(index) {
if (index > 0 && !/^[a-z][a-z0-9-]{2,29}$/.test(name)) {
setError(
"Use 3–30 lowercase letters, numbers or hyphens, starting with a letter.",
);
return;
}
setError("");
setStep(index);
}
function reset() {
setStep(0);
setComplete(false);
setError("");
setName("analytics-sandbox");
setSize(sizes[0]);
}
return (
<main className="awsui-typography cloudscape-example">
<div className="appearance">
<span>CLOUDSCAPE · RESOURCE CONFIGURATION</span>
<Toggle
checked={dark}
onChange={({ detail }) => {
setDark(detail.checked);
applyMode(detail.checked ? Mode.Dark : Mode.Light);
}}
>
Dark mode
</Toggle>
</div>
<Header
variant="h1"
description="Configure a fictional compute workspace. This example does not create a cloud resource."
>
Create a workspace
</Header>
<div className="wizard-content">
{complete ? (
<SpaceBetween size="l">
<Alert type="success" header="Configuration confirmed locally">
The {name} recipe is ready for review. No cloud API was called and
no resource was provisioned.
</Alert>
<Container header={<Header variant="h2">Workspace recipe</Header>}>
<ColumnLayout columns={2} variant="text-grid">
<div>
<Box variant="awsui-key-label">Name</Box>
{name}
</div>
<div>
<Box variant="awsui-key-label">Capacity</Box>
{size.label}
</div>
</ColumnLayout>
</Container>
<Button onClick={reset}>Start another example</Button>
</SpaceBetween>
) : (
<Wizard
activeStepIndex={step}
onNavigate={({ detail }) => next(detail.requestedStepIndex)}
onCancel={reset}
onSubmit={() => setComplete(true)}
i18nStrings={{
stepNumberLabel: (stepNumber) => `Step ${stepNumber}`,
collapsedStepsLabel: (stepNumber, stepsCount) =>
`Step ${stepNumber} of ${stepsCount}`,
skipToButtonLabel: (step) => `Skip to ${step.title}`,
navigationAriaLabel: "Configuration steps",
cancelButton: "Reset",
previousButton: "Previous",
nextButton: "Next",
submitButton: "Confirm locally",
optional: "optional",
}}
steps={[
{
title: "Configure workspace",
description: "Choose the identity and capacity.",
content: (
<Container
header={<Header variant="h2">Workspace settings</Header>}
>
<SpaceBetween size="l">
<FormField
label="Workspace name"
constraintText="3–30 characters; lowercase letters, numbers and hyphens."
errorText={error}
>
<Input
value={name}
onChange={({ detail }) => {
setName(detail.value);
setError("");
}}
/>
</FormField>
<FormField
label="Capacity profile"
description="These profiles are sample application data, not real cloud products or prices."
>
<Select
selectedOption={size}
onChange={({ detail }) =>
setSize(detail.selectedOption)
}
options={sizes}
/>
</FormField>
</SpaceBetween>
</Container>
),
},
{
title: "Review configuration",
description:
"Check the values before confirming the local example.",
content: (
<SpaceBetween size="l">
<Container
header={
<Header
variant="h2"
actions={
<Button onClick={() => setStep(0)}>
Edit settings
</Button>
}
>
Workspace settings
</Header>
}
>
<ColumnLayout columns={2} variant="text-grid">
<div>
<Box variant="awsui-key-label">Workspace name</Box>
{name}
</div>
<div>
<Box variant="awsui-key-label">Capacity profile</Box>
{size.label}
</div>
</ColumnLayout>
</Container>
<Alert type="info">
Confirmation changes the preview only. Production
provisioning would require a real service, permissions and
a verified response.
</Alert>
</SpaceBetween>
),
},
]}
/>
)}
</div>
<footer>
Native Cloudscape components 3.0.1390 · configuration, validation,
review and local confirmation.
</footer>
</main>
);
}
createRoot(document.getElementById("root")).render(<App />);
Ne remplacez pas les noms de classes natifs des composants par ceux de cette feuille de style d’application.
04
AWS Cloudscape Configuration de l’agent pour le système de design
Point de départ de l’implémentation
L’exemple natif affiché a été compilé avec React 18.3.1. Utilisez une version de Node.js prise en charge par la version de Vite que vous installez ; conservez les versions utilisées dans le fichier de verrouillage de votre application.
sh
npm create vite@latest cloudscape-workspace -- --template react
cd cloudscape-workspace
npm install
npm install [email protected][email protected] @cloudscape-design/[email protected] @cloudscape-design/[email protected] @cloudscape-design/global-styles
# Replace src/main.jsx and add src/cloudscape.css from the full examples.
npm run dev
Un prompt pour votre projet
Prompt pour l’agent IA
Créez un parcours de configuration de ressources avec Cloudscape. Utilisez le code natif Wizard/Container/FormField/Input/Select fourni et les rôles des jetons visual-refresh. Préservez les valeurs des champs entre les étapes, validez avant la navigation et affichez une révision complète. Considérez les profils de capacité d’exemple comme des espaces réservés pour mon modèle métier, et non comme de véritables produits cloud. N’intégrez le provisionnement qu’après la fourniture d’un API ; distinguez les résultats en attente, les échecs et les confirmations.
05
AWS Cloudscape Sources et périmètre du système de design
Guide OpenDesign et exemple original de configuration d’espace de travail local utilisant les composants Cloudscape natifs 3.0.1390. Les profils de capacité sont des données fictives propres à l’application. Aucun compte cloud, API de provisionnement ni tarif de service réel n’est utilisé.