Una guía de configuración de Cloudscape con tokens reales de actualización visual, espaciado que se adapta a la densidad, API controladas para formularios y un asistente funcional de dos pasos para crear recursos.
Guía de OpenDesign8 capítulos50 entradas de referenciaGuía de aplicación original
01
Vista previa de la interfaz del sistema de diseño AWS Cloudscape
Prueba nombres no válidos, elige un perfil de capacidad, alterna entre la configuración y la revisión, cambia la apariencia y confirma la receta localmente.
Cloudscape nativo 3.0.1390 con React 18.3.1; composición original de Wizard y estado solo local. · Referencia de implementación
02
Referencia de diseño del sistema de diseño AWS Cloudscape
Componentes de Cloudscape 3.0.1390 y design-tokens 3.0.114, tema visual-refresh. Los valores se leen del JSON de tokens publicado. Los modos de color y las densidades de contenido son dimensiones independientes. Esta es una referencia de implementación seleccionada, no la exportación completa de tokens.
Arquitectura de configuración del sistema de diseño AWS Cloudscape
Adapta el flujo de trabajo a Wizard
El ejemplo separa la configuración de la revisión. Wizard proporciona la navegación entre pasos y las acciones; la aplicación proporciona el índice actual, los valores de los campos, la regla de validación y la confirmación final. El lector puede volver a la configuración sin reconstruir el formulario ni perder la capacidad seleccionada. Es una opción más adecuada que ocultar todo un flujo de varios pasos dentro de una única Card genérica.
Construye con contenedores nativos
Container, Header y SpaceBetween definen la sección del formulario. El h1 presenta la operación; el h2 nombra el grupo de ajustes. El texto explicativo aparece junto al campo o al paso que describe. El ancho máximo de 1200px y el relleno de página que rodean el contenido son opciones explícitas de la aplicación CSS, no tokens de diseño de Cloudscape exportados.
Tokens semánticos y modos visuales del sistema de diseño AWS Cloudscape
Elige un rol antes que un valor
La referencia distingue entre el fondo de disposición, el contenido de los contenedores, el texto del cuerpo, el texto interactivo y los mensajes de estado. Sus valores no forman una paleta plana. Para una interfaz personalizada, importa el token con nombre desde @cloudscape-design/design-tokens en lugar de copiar un valor hexadecimal del modo claro en cada estado. El token establece un propósito, mientras que su valor puede evolucionar.
Cambiar de modo desde la biblioteca
La vista previa llama a applyMode con Mode.Light o Mode.Dark desde global-styles. Esto actualiza el modo que usan los componentes, en lugar de reemplazar colores CSS arbitrarios. Una pantalla de revisión en modo oscuro conserva las mismas etiquetas, la capacidad seleccionada y el estado de navegación. El JSON de origen registra los valores de los modos claro y oscuro, por lo que se pueden examinar por separado.
Tipografía y jerarquía de encabezados del sistema de diseño AWS Cloudscape
Combina los roles de fuente y altura de línea
La referencia body-m de visual-refresh es de 14px con una altura de línea de 20px. heading-xl es de 24px con una altura de línea de 30px; heading-l, de 20px con 24px; y heading-m, de 18px con 22px. Estos roles definen la jerarquía compacta del formulario; no son tamaños intercambiables para titulares de marketing.
Usa variantes semánticas de componentes
La variante h1 de Header se titula Crear un espacio de trabajo. Los encabezados de Container usan h2, y la variante awsui-key-label de Box da a las etiquetas de revisión un tratamiento secundario uniforme. Los valores de la revisión siguen siendo texto normal y legible. No conviertas todas las etiquetas de campo en encabezados solo para darles más peso visual.
Campos controlados y composición de revisión del sistema de diseño AWS Cloudscape
Comprende el contrato del evento detail
Input emite un evento cuyo detail.value contiene el nuevo texto. Select emite detail.selectedOption, que es un objeto de opción, no una cadena simple. El ejemplo completo almacena ese objeto y muestra su label en la revisión. Así se evita un error común de integración en el que Select aparece vacío porque se proporciona solo un identificador a selectedOption.
Mantén las instrucciones junto al campo
La política de formato del campo corresponde a esta aplicación de ejemplo.
Las opciones de capacidad no son afirmaciones sobre productos ni precios.
Los componentes nativos se encargan de la presentación; el estado de React mantiene la configuración.
Densidad y diseño adaptable del sistema de diseño AWS Cloudscape
No trates el modo compacto como un nivel de zoom
Los valores de espaciado escalados publicados varían según la densidad. Por ejemplo, space-scaled-m es de 16px en modo cómodo y de 12px en modo compacto, mientras que space-scaled-l es de 20px y 16px, respectivamente. Estas diferencias comprimen el ritmo vertical sin redefinir el contenido ni reducir el texto arbitrariamente. Los componentes nativos aplican sus propias reglas de densidad.
Adapta las estructuras de pasos y revisión
Wizard cambia la presentación de la navegación según el espacio disponible; ColumnLayout distribuye los metadatos de revisión de forma adaptable. La aplicación CSS reduce el relleno exterior por debajo de 600px. El ejemplo no fija de forma rígida el ancho de la navegación de pasos para escritorio y, en la versión móvil, mantiene visibles las acciones Next, Previous y Confirm.
Validación y confirmación de Wizard de sistema de diseño AWS Cloudscape
Valida antes de aceptar la navegación
onNavigate recibe requestedStepIndex. La aplicación comprueba el nombre actual antes de avanzar a la revisión y mantiene el paso actual si el nombre no es válido. Al editarlo, se borra el error para que el siguiente envío se pueda evaluar desde cero. Al volver a la configuración, se conservan el nombre y la opción seleccionada.
Envía un nombre no válido y permanece en la configuración.
Corrige el nombre y elige otro perfil de capacidad.
Avanza a la revisión y confirma ambos valores.
Usa Edit settings para volver sin perder ninguno de los valores.
Confirma localmente y reinicia el ejemplo.
Distingue una configuración de la provisión
La acción final muestra un Alert de éxito local y un resumen de la configuración. No da a entender que se haya creado un recurso real. En una aplicación real, mantén pendiente la acción de envío mientras se ejecuta la provisión, distingue las solicitudes aceptadas de los recursos completados y ofrece una forma de recuperarse de los errores sin descartar la configuración.
Accesibilidad de formularios de sistema de diseño AWS Cloudscape
Conserva las etiquetas y los nombres de navegación
Wizard recibe navigationAriaLabel y las cadenas traducidas de las acciones. Cada Input y Select está dentro de un FormField etiquetado. Alert comunica los resultados no válidos o satisfactorios mediante la semántica nativa del componente. Las restricciones visibles complementan la etiqueta del campo, no la sustituyen.
Revisa el recorrido con teclado en toda la operación
Usa el teclado para ir al campo del nombre, abrir el selector de capacidad, avanzar, volver, editar y confirmar. El comportamiento de foco nativo ayuda, pero la aplicación sigue siendo responsable de la regla de validación del paso y del significado de la confirmación. Una biblioteca de componentes no puede validar por sí sola una regla de negocio que no se haya definido.
Instalación y límites personalizados de sistema de diseño AWS Cloudscape
Instala juntos los paquetes relacionados
La implementación importa los componentes mediante sus subrutas de paquete individuales y carga global-styles una sola vez. design-tokens proporciona la referencia para los estilos personalizados. El archivo de entrada React y el archivo compacto CSS incluidos reproducen el ejemplo interactivo en una aplicación Vite React. Mantén juntas las versiones compatibles de los paquetes de Cloudscape.
Usa el ejemplo proporcionado como punto de partida real
Ejemplos de componentes de sistema de diseño AWS Cloudscape
main.jsx — asistente de configuración completo
Wizard, FormField, Select y metadatos de revisión nativos, con navegación controlada y confirmación local.
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 />);
No sobrescribas los nombres de clase de los componentes nativos con esta hoja de estilos de la aplicación.
04
Configuración del agente de sistema de diseño AWS Cloudscape
Punto de partida para la implementación
El ejemplo nativo mostrado se compiló con React 18.3.1. Usa una versión de Node.js compatible con la versión de Vite que instales; conserva las versiones que utiliza el archivo de bloqueo de tu aplicación.
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
Una instrucción para tu proyecto
Instrucción para el agente
Crea un flujo de configuración de recursos con Cloudscape. Usa el código nativo proporcionado de Wizard/Container/FormField/Input/Select y los roles de tokens de visual-refresh. Conserva los valores de los campos entre pasos, valida antes de navegar y muestra una revisión completa. Trata los perfiles de capacidad de ejemplo como marcadores de posición para mi modelo de dominio, no como productos reales de la nube. Integra la provisión solo después de que se proporcione un API; distingue los resultados pendientes, fallidos y confirmados.
05
Fuentes y alcance de sistema de diseño AWS Cloudscape
Guía de OpenDesign y ejemplo original de configuración de un espacio de trabajo local, creado con componentes nativos de Cloudscape 3.0.1390. Los perfiles de capacidad son datos ficticios de la aplicación. No se utiliza ninguna cuenta en la nube, API de provisión ni precio de servicio real.