Cloud-Plattform · Neue Ressource

AWS Cloudscape Design-System.

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.

OpenDesign-Leitfaden8 Kapitel50 ReferenzeinträgeOriginaler Anwendungsleitfaden
01

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.

Arbeitsbereich konfigurieren und überprüfenVollständiges Beispiel öffnen
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.

Semantische Farbrollen in hellen und dunklen Modi

Quelle
Name / RegelWert / KonfigurationVerwendung
color-background-layout-mainlight: #ffffff; dark: #161d26Verwenden 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-contentlight: #ffffff; dark: #161d26Verwenden 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-defaultlight: #0f141a; dark: #c6c6cdVerwenden 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-secondarylight: #424650; dark: #c6c6cdVerwenden 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-defaultlight: #424650; dark: #dedee3Verwenden 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-defaultlight: #006ce0; dark: #42b4ffVerwenden 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-errorlight: #db0000; dark: #ff7a7aVerwenden 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-successlight: #00802f; dark: #2bb534Verwenden 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-defaultlight: #8c8c94; dark: #656871Verwenden 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-defaultlight: #006ce0; dark: #42b4ffVerwenden Sie diese benannte Rolle im vorgesehenen Kontext. Das Paar zeigt die Auflösungen für den hellen und dunklen Modus, keine austauschbaren Farbfelder.

Typografie für Fließtext und Überschriften

Quelle
Name / RegelWert / KonfigurationVerwendung
font-size-body-m14pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
font-size-body-s12pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
font-size-heading-l20pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
font-size-heading-m18pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
font-size-heading-s16pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
font-size-heading-xl24pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
font-size-heading-xs14pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
line-height-body-m20pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
line-height-body-s16pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
line-height-heading-l24pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
line-height-heading-m22pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
line-height-heading-s20pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
line-height-heading-xl30pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.
line-height-heading-xs18pxKombinieren Sie Schriftgröße und Zeilenhöhe derselben Rolle. Die Varianten von Header und Box setzen die Komponentenhierarchie um.

Dichteabhängige Abstände

Quelle
Name / RegelWert / KonfigurationVerwendung
space-scaled-xxxscomfortable: 2px; compact: 0pxVerwenden 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-xxscomfortable: 4px; compact: 2pxVerwenden 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-xscomfortable: 8px; compact: 4pxVerwenden 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-scomfortable: 12px; compact: 8pxVerwenden 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-mcomfortable: 16px; compact: 12pxVerwenden 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-lcomfortable: 20px; compact: 16pxVerwenden 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-xlcomfortable: 24px; compact: 20pxVerwenden 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-xxlcomfortable: 32px; compact: 24pxVerwenden 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-xxxlcomfortable: 40px; compact: 32pxVerwenden 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.

Komponentenform

Quelle
Name / RegelWert / KonfigurationVerwendung
border-radius-container16pxBehalten Sie die Form der benannten Komponente bei. Der Eckenradius eines Buttons ist kein universeller Radius für Container.
border-radius-button20pxBehalten Sie die Form der benannten Komponente bei. Der Eckenradius eines Buttons ist kein universeller Radius für Container.
border-radius-input8pxBehalten Sie die Form der benannten Komponente bei. Der Eckenradius eines Buttons ist kein universeller Radius für Container.
border-radius-alert12pxBehalten Sie die Form der benannten Komponente bei. Der Eckenradius eines Buttons ist kein universeller Radius für Container.
border-radius-dropdown8pxBehalten Sie die Form der benannten Komponente bei. Der Eckenradius eines Buttons ist kein universeller Radius für Container.
border-radius-card-embedded8pxBehalten Sie die Form der benannten Komponente bei. Der Eckenradius eines Buttons ist kein universeller Radius für Container.

Interaktionsdauer

Quelle
Name / RegelWert / KonfigurationVerwendung
motion-duration-responsivedefault: 115ms; disabled: 0msIm Modus für deaktivierte Animationen wird die native Bewegung auf null gesetzt. Fügen Sie derselben Interaktion keinen unabhängigen Übergang hinzu.
motion-duration-expressivedefault: 165ms; disabled: 0msIm Modus für deaktivierte Animationen wird die native Bewegung auf null gesetzt. Fügen Sie derselben Interaktion keinen unabhängigen Übergang hinzu.
motion-duration-complexdefault: 250ms; disabled: 0msIm Modus für deaktivierte Animationen wird die native Bewegung auf null gesetzt. Fügen Sie derselben Interaktion keinen unabhängigen Übergang hinzu.

Native Komposition API

Quelle
Name / RegelWert / KonfigurationVerwendung
WizardactiveStepIndex · onNavigate · onSubmitVerwalten Sie den aktuellen Schritt in React und prüfen Sie die Eingaben, bevor Sie den angeforderten nächsten Index übernehmen.
FormFieldlabel · constraintText · errorTextPlatzieren Sie die Formatregel und die Fehlermeldung direkt beim Namensfeld.
Inputvalue · onChange({ detail })Lesen Sie detail.value statt auf ein DOM-Ereignisziel zuzugreifen.
SelectselectedOption · options · onChangeBehalten Sie das ausgewählte Optionsobjekt einschließlich Label und Wert bei.
Containerheader={<Header variant="h2" />}Gruppieren Sie zusammengehörige Konfigurationsfelder, ohne ein neues Kartensystem zu erfinden.
ColumnLayoutcolumns={2} · variant="text-grid"Zeigen Sie kompakte Metadaten zur Überprüfung in responsiven Spalten der Bibliothek an.
SpaceBetweensize="l"Verwenden Sie die Abstandsskala der Bibliothek, um Felder und Prüfbereiche voneinander abzusetzen.
applyModeMode.Light / Mode.DarkWechseln Sie den globalen Darstellungsmodus für native Komponenten und semantische Tokens.
03

AWS Cloudscape-Design-System: vollständiger Leitfaden

Ein praktischer Leitfaden zur Auswahl, Anwendung und Überprüfung dieses Systems für ein echtes Interface.

DESIGN-aws-cloudscape.md

Umfassende Anleitung, Einstieg in die Implementierung und Links zu den Quellen.

Leitfaden herunterladen

AWS Cloudscape-Design-System: Konfigurationsarchitektur

Workflow an Wizard anpassen

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.

Aus diesem OpenDesign-Leitfaden

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.

  1. Geben Sie einen ungültigen Namen ein und bleiben Sie bei der Konfiguration.
  2. Korrigieren Sie den Namen und wählen Sie ein anderes Kapazitätsprofil.
  3. Wechseln Sie zur Prüfung und bestätigen Sie beide Werte.
  4. Wählen Sie „Einstellungen bearbeiten“, um zurückzukehren, ohne einen der beiden Werte zu verlieren.
  5. 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 />);

Code-Referenz

  • Speichern Sie dies als src/main.jsx. Der nächste Codeblock enthält das importierte src/cloudscape.css.

cloudscape.css — Gerüst der Beispielseite

Anwendungsbreite und Innenabstand rund um native Cloudscape-Komponenten.

css
body {
  margin: 0;
}
.cloudscape-example {
  padding: 24px;
  max-width: 1200px;
  margin: auto;
}
.appearance {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 24px;
}
.appearance > span {
  font-size: 11px;
  letter-spacing: 0.06em;
  font-weight: 700;
}
.wizard-content {
  margin-top: 32px;
}
.cloudscape-example footer {
  font-size: 12px;
  margin-top: 32px;
  color: #5f6b7a;
}
@media (max-width: 600px) {
  .cloudscape-example {
    padding: 16px;
  }
  .appearance {
    align-items: start;
  }
  .appearance > span {
    max-width: 180px;
  }
  .wizard-content {
    margin-top: 24px;
  }
}

Code-Referenz

  • Ü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.