Ein Konfigurationsleitfaden für Cloudscape mit echten Tokens zur visuellen Aktualisierung, dichteabhängigen Abständen, APIs für kontrollierte Formulare und einem funktionsfähigen zweistufigen Ressourcen-Assistenten.
AWS Cloudscape-Design-System: Vorschau der Benutzeroberfläche
Testen Sie ungültige Namen, wählen Sie ein Kapazitätsprofil aus, wechseln Sie zwischen Konfiguration und Überprüfung, ändern Sie das Erscheinungsbild und bestätigen Sie die Einstellungen lokal.
Natives Cloudscape 3.0.1390 mit React 18.3.1; originale Wizard-Komposition und ausschließlich lokaler Zustand. · Implementierungsreferenz
02
AWS Cloudscape-Design-System: Designreferenz
Cloudscape-Komponenten 3.0.1390 und design-tokens 3.0.114, Theme visual-refresh. Die Werte stammen aus der veröffentlichten Token-JSON-Datei. Farbmodi und Inhaltsdichten sind separate Dimensionen. Dies ist eine ausgewählte Implementierungsreferenz, kein vollständiger Token-Export.
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-background-container-content
light: #ffffff; dark: #161d26
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-text-body-default
light: #0f141a; dark: #c6c6cd
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-text-body-secondary
light: #424650; dark: #c6c6cd
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-text-interactive-default
light: #424650; dark: #dedee3
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-text-link-default
light: #006ce0; dark: #42b4ff
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-text-status-error
light: #db0000; dark: #ff7a7a
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-text-status-success
light: #00802f; dark: #2bb534
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-border-input-default
light: #8c8c94; dark: #656871
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
color-background-button-primary-default
light: #006ce0; dark: #42b4ff
Verwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-xxs
comfortable: 4px; compact: 2px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-xs
comfortable: 8px; compact: 4px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-s
comfortable: 12px; compact: 8px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-m
comfortable: 16px; compact: 12px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-l
comfortable: 20px; compact: 16px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-xl
comfortable: 24px; compact: 20px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-xxl
comfortable: 32px; compact: 24px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
space-scaled-xxxl
comfortable: 40px; compact: 32px
Verwenden Sie je nach aktiver Dichte die Auflösung für komfortable oder kompakte Abstände. Skalieren Sie den Text nicht zusammen mit diesen Abstandsänderungen.
Das Beispiel trennt die Konfiguration von der Überprüfung. Wizard stellt die Schrittnavigation und Aktionen bereit; die Anwendung verwaltet den aktuellen Index, Feldwerte, Validierungsregel und abschließende Bestätigung. Lesende können zur Konfiguration zurückkehren, ohne das Formular neu aufzubauen oder die ausgewählte Kapazität zu verlieren. Das ist besser geeignet, als einen mehrstufigen Workflow in einer einzigen generischen Card zu verbergen.
Mit nativen Containern arbeiten
Container, Header und SpaceBetween strukturieren den Formularbereich. Die h1-Überschrift leitet den Vorgang ein; h2 benennt die Einstellungsgruppe. Erläuterungen stehen neben dem Feld oder Schritt, auf den sie sich beziehen. Die maximale Breite von 1200px und der Seitenabstand sind explizite Vorgaben der Anwendung CSS und keine exportierten Cloudscape-Layout-Tokens.
AWS Cloudscape-Design-System: semantische Tokens und Darstellungsmodi
Rolle vor Wert auswählen
Die Referenz unterscheidet zwischen Layout-Hintergrund, Containerinhalt, Fließtext, interaktivem Text und Statusrückmeldungen. Ihre Werte bilden keine flache Palette. Importieren Sie für benutzerdefinierte Benutzeroberflächen das benannte Token aus @cloudscape-design/design-tokens, statt einen hellen Hexadezimalwert in jeden Zustand zu kopieren. Das Token definiert den Zweck, während sich der Wert weiterentwickeln kann.
Modi über die Bibliothek wechseln
Die Vorschau ruft applyMode mit Mode.Light oder Mode.Dark aus global-styles auf. Dadurch wird der von den Komponenten verwendete Modus aktualisiert, anstatt beliebige CSS-Farben zu ersetzen. In der dunklen Prüfansicht bleiben Beschriftungen, ausgewählte Kapazität und Navigationsstatus unverändert. Die Quelldatei im JSON-Format enthält beide hellen und dunklen Auflösungen, sodass sich der Unterschied nachvollziehen lässt.
AWS Cloudscape-Design-System: Typografie und Überschriftenhierarchie
Schriftgrößen- und Zeilenhöhenrollen kombinieren
Die Referenz für Fließtext in visual-refresh verwendet 14px bei einer Zeilenhöhe von 20px. Heading-xl entspricht 24px bei 30px Zeilenhöhe, heading-l 20px bei 24px und heading-m 18px bei 22px. Diese Rollen definieren die kompakte Formularhierarchie; sie sind keine austauschbaren Größen für große Marketingüberschriften.
Semantische Komponentenvarianten verwenden
Die Variante h1 von Header benennt „Arbeitsbereich erstellen“. Container-Überschriften verwenden h2, und die Variante awsui-key-label von Box sorgt für eine einheitliche sekundäre Darstellung der Beschriftungen in der Prüfansicht. Die angezeigten Werte bleiben gewöhnlicher, gut lesbarer Text. Erhöhen Sie nicht jede Feldbeschriftung zu einer Überschrift, nur um ihr mehr visuelles Gewicht zu verleihen.
AWS Cloudscape-Design-System: gesteuerte Felder und Prüfkomposition
Ereignisvertrag von detail verstehen
Input löst ein Ereignis aus, dessen detail.value den neuen Text enthält. Select liefert detail.selectedOption, also ein Optionsobjekt statt einer einfachen Zeichenfolge. Das vollständige Beispiel speichert dieses Objekt und zeigt sein Label in der Prüfansicht an. So vermeiden Sie einen häufigen Integrationsfehler, bei dem ein Select leer erscheint, weil selectedOption nur eine Kennung erhält.
Feldhinweise beim jeweiligen Feld platzieren
Die Richtlinie zum Feldformat gilt nur für diese Beispielanwendung.
Die Kapazitätsoptionen sind keine Produkt- oder Preisangaben.
Die nativen Komponenten übernehmen die Darstellung; der Konfigurationsstatus liegt in React.
AWS Cloudscape-Designsystem: Dichte und responsives Layout
Kompaktmodus ist keine Zoomstufe
Die veröffentlichten skalierten Abstände unterscheiden sich je nach Dichte. So beträgt space-scaled-m bei komfortabler Dichte 16px und bei kompakter Dichte 12px; space-scaled-l beträgt 20px beziehungsweise 16px. Diese Unterschiede verdichten den vertikalen Rhythmus, ohne den Inhalt neu zu definieren oder Text willkürlich zu verkleinern. Native Komponenten wenden ihre eigenen Dichtesignale an.
Schritt- und Prüfstrukturen anpassen lassen
Wizard passt die Darstellung der Navigation an die verfügbare Breite an; ColumnLayout ordnet die Metadaten der Prüfung responsiv an. Die Anwendung CSS verringert die Außenabstände unter 600px. Das Beispiel legt die Breite der Desktop-Schrittnavigation nicht fest und behält in der mobilen Version die lokal sichtbaren Aktionen Weiter, Zurück und Bestätigen bei.
AWS Cloudscape-Designsystem: Validierung und Bestätigung mit Wizard
Vor dem Wechsel validieren
onNavigate erhält requestedStepIndex. Die Anwendung prüft den aktuellen Namen, bevor sie zur Prüfung wechselt, und behält den aktuellen Schritt bei, wenn der Name ungültig ist. Beim Bearbeiten wird der Fehler zurückgesetzt, sodass die nächste Übermittlung neu geprüft werden kann. Wenn Sie zu den Einstellungen zurückkehren, bleiben der Name und die ausgewählte Option erhalten.
Geben Sie einen ungültigen Namen ein und bleiben Sie bei der Konfiguration.
Korrigieren Sie den Namen und wählen Sie ein anderes Kapazitätsprofil.
Wechseln Sie zur Prüfung und bestätigen Sie beide Werte.
Wählen Sie „Einstellungen bearbeiten“, um zurückzukehren, ohne einen der beiden Werte zu verlieren.
Bestätigen Sie lokal und starten Sie das Beispiel neu.
Ein Beispiel von einer tatsächlichen Bereitstellung unterscheiden
Die letzte Aktion zeigt eine lokale Erfolgsmeldung mit Alert und eine Konfigurationsübersicht an. Sie erweckt nicht den Eindruck, eine echte Ressource zu erstellen. Halten Sie in einer tatsächlichen Anwendung die Übermittlung ausstehend, solange die Bereitstellung läuft. Unterscheiden Sie zwischen angenommenen Anfragen und fertiggestellten Ressourcen und ermöglichen Sie die Fehlerbehebung, ohne die Konfiguration zu verwerfen.
AWS Cloudscape-Designsystem: Barrierefreiheit von Formularen
Beschriftungen und Navigationsnamen beibehalten
Wizard erhält navigationAriaLabel und übersetzte Beschriftungen für Aktionen. Jedes Input und Select befindet sich in einem beschrifteten FormField. Alert vermittelt ungültige oder erfolgreiche Ergebnisse mithilfe der Semantik der nativen Komponente. Die sichtbaren Hinweise ergänzen die Feldbeschriftung, statt sie zu ersetzen.
Den Tastaturpfad durch den gesamten Vorgang prüfen
Verwenden Sie die Tastatur, um das Namensfeld aufzurufen, die Kapazitätsauswahl zu öffnen, fortzufahren, zurückzukehren, Änderungen vorzunehmen und die Eingabe zu bestätigen. Das native Fokusverhalten hilft dabei, doch die Anwendung ist weiterhin für die Validierungsregel des Schritts und die Bedeutung der Bestätigung zuständig. Eine Komponentenbibliothek kann eine fehlende Geschäftsregel nicht selbst validieren.
AWS Cloudscape-Designsystem: Installation und Grenzen benutzerdefinierter Komponenten
Zusammengehörige Pakete gemeinsam installieren
Die Implementierung importiert Komponenten über ihre jeweiligen Paketunterpfade und lädt global-styles einmal. design-tokens dient als Referenz für benutzerdefinierte Styles. Die bereitgestellte Einstiegsdatei React und die kompakte Datei CSS bilden das interaktive Beispiel in einer Vite-Anwendung React nach. Verwenden Sie kompatible Versionen der Cloudscape-Pakete.
Das bereitgestellte Beispiel als Ausgangspunkt verwenden
AWS Cloudscape-Designsystem: Komponentenbeispiele
main.jsx — vollständiger Konfigurationsassistent
Native Komponenten Wizard, FormField und Select sowie Prüfmetadaten mit kontrollierter Navigation und lokaler Bestätigung.
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 />);
Überschreiben Sie native Komponentennamen nicht mit diesem Anwendungs-Stylesheet.
04
AWS Cloudscape-Designsystem: Einrichtung des Agenten
Ausgangspunkt für die Implementierung
Das gezeigte native Beispiel wurde mit React 18.3.1 gebündelt. Verwenden Sie eine von der installierten Vite-Version unterstützte Node.js-Version und behalten Sie die Versionen aus der Lockdatei Ihrer Anwendung bei.
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
Ein Prompt für dein Projekt
Agenten-Prompt
Erstellen Sie mit Cloudscape einen Ablauf zur Ressourcenkonfiguration. Verwenden Sie den bereitgestellten nativen Code für Wizard/Container/FormField/Input/Select sowie die Rollen der Visual-Refresh-Tokens. Behalten Sie Feldwerte zwischen den Schritten bei, validieren Sie vor der Navigation und zeigen Sie eine vollständige Prüfung an. Behandeln Sie Beispiel-Kapazitätsprofile als Platzhalter für mein Domänenmodell, nicht als echte Cloud-Produkte. Integrieren Sie die Bereitstellung erst, wenn API bereitgestellt wurde; unterscheiden Sie zwischen ausstehenden, fehlgeschlagenen und bestätigten Ergebnissen.
05
AWS Cloudscape-Designsystem: Quellen und Geltungsbereich
OpenDesign-Leitfaden und originales lokales Beispiel zur Workspace-Konfiguration mit nativen Cloudscape-Komponenten 3.0.1390. Die Kapazitätsprofile sind fiktive Anwendungsdaten. Es sind weder ein Cloud-Konto noch eine Bereitstellungs-API oder tatsächliche Servicepreise beteiligt.