Explora Spectrum v3 de React mediante una tabla de recursos creativos seleccionables y un inspector de ajustes preestablecidos de exportación. Conoce los temas de Provider y la escala de entrada, las propiedades de estilo compatibles, las colecciones con claves y las diferencias entre la versión 3 y la implementación más reciente de Spectrum 2.
Interpretación original de HTML/CSS del flujo documentado de colección e inspección de v3. La paleta y las ilustraciones son ilustrativas; no se incluye un entorno de ejecución nativo de Spectrum ni conversión de imágenes. · Referencia de implementación
02
Referencia de diseño del sistema de diseño Adobe Spectrum
API de Spectrum v3 de React y correspondencias de dimensiones. La columna de dimensión numérica registra la conversión base de la tabla de migración de Adobe; los valores size-* que dependen de la escala pueden adaptarse al uso táctil. No es una exportación de tokens de Spectrum 2. Los colores de la vista previa y las ilustraciones personalizadas son decisiones de la aplicación.
Sistema de diseño Adobe Spectrum: elige v3 deliberadamente; no mezcles generaciones de Spectrum
Qué instala este ejemplo
Adobe ahora documenta Spectrum 2 junto con la biblioteca v3. Esta página elige @adobe/react-spectrum@3 porque sus contratos de Provider, colección y props de estilo ofrecen un ejemplo completo y documentado de revisión de recursos. Una receta para v3 resulta útil para una aplicación v3 existente, pero no debe presentarse como la implementación más reciente de Spectrum. Antes de decidir una nueva adopción, consulta la referencia de migración enlazada para elegir una generación.
La diferencia práctica se aprecia en el código. v3 pasa size-300 mediante props de estilo y proporciona defaultTheme a Provider. La guía de migración traslada estas convenciones a un API de estilo distinto. Cambiar únicamente el nombre del paquete no migraría el ejemplo; hay que revisar conjuntamente las importaciones de componentes, los estilos y las propiedades compatibles.
Adobe Spectrum El Provider del sistema de diseño coordina la apariencia, la escala y la configuración regional
Una raíz, varios ajustes independientes
Provider establece el entorno que utilizan la tabla, el selector y el botón. El objeto de tema incluye las definiciones de esquema de color y escala. colorScheme puede prevalecer sobre la preferencia del sistema operativo, mientras que scale tiene en cuenta las características de los dispositivos de entrada. Son ajustes independientes: una interfaz oscura en un ordenador de escritorio no requiere objetivos táctiles grandes, y una pantalla táctil clara no debería heredar accidentalmente una disposición compacta pensada para el ratón.
En producción, deja la escala en automático para el uso habitual. En un estudio de componentes, elegir explícitamente medium o large puede facilitar la comparación de controles, pero debe describirse como un ajuste de inspección. locale establece el contexto lingüístico, no traduce los datos de tu proyecto. Los nombres de campañas, las notas de revisión y las etiquetas de recetas siguen siendo contenido de la aplicación.
Sistema de diseño Adobe Spectrum: usa las dimensiones admitidas y props de diseño externos
Una escala con nombre es más que una referencia en píxeles
La correspondencia básica es size-100 para 8, size-200 para 16 y size-300 para 24. La tabla de referencia incluye otros pasos útiles. Una dimensión size-* puede adaptarse a la escala de la plataforma; un valor static-size-* no lo hace deliberadamente. Ten en cuenta esa diferencia al definir el tamaño de un inspector o de un objetivo de interacción. Copiar todos los valores resueltos para escritorio a CSS eliminaría la adaptación que proporciona el entorno de los componentes.
Flex y View proporcionan al ejemplo una estructura externa estable sin reescribir las partes internas de TableView. La tabla puede crecer con flex y reducirse con minWidth={0}; el inspector se apila en el tamaño base y queda limitado en el punto de ruptura explícito para tabletas. El relleno debe ir en el View que contiene la superficie. La documentación desaconseja anular los colores, bordes y la tipografía internos mediante mecanismos de escape no seguros.
Sistema de diseño Adobe Spectrum: deja que el tema controle el color y la tipografía nativos
Separa la paleta de muestra de la exportación de tokens
La vista previa tiene un lienzo gris discreto, controles neutros e ilustraciones originales y coloridas. Esos colores de las ilustraciones no son valores de tokens de Spectrum certificados. En el ejemplo nativo, los componentes compatibles obtienen su apariencia de defaultTheme. Para una superficie nativa personalizada, usa los valores documentados de backgroundColor en lugar de dar por hecho que un único valor hexadecimal muestreado funcionará en ambos esquemas.
Heading aporta estructura semántica y una presentación de Spectrum adecuada al contexto. El título de la página usa level={1}; Text proporciona contenido habitual, como el recuento de elementos seleccionados. La vista previa personalizada de HTML usa una tipografía del sistema elegida por la aplicación como alternativa, además de tamaños de texto propios. Es una demostración del flujo de trabajo y de la jerarquía relativa, no una afirmación de que la fuente de OpenDesign que la rodea o la tipografía de sus ilustraciones cumplan la especificación tipográfica de Spectrum.
Sistema de diseño Adobe Spectrum: una tabla de colección tiene claves, columnas y semántica de selección
La selección es un contrato de datos
La tabla se compone de TableHeader y Column, junto con TableBody, Row y Cell. Cada recurso tiene un id estable. selectedKeys y onSelectionChange hacen que la selección sea controlada, de modo que el inspector de exportación puede obtener el recuento a partir del mismo estado. Un usuario puede cambiar el nombre de un recurso sin modificar su identidad. Usar la posición de la fila como identidad haría que la selección fuera frágil al cambiar el orden.
La selección puede ser el valor centinela all. La configuración lo resuelve como todos los recursos actuales antes de crear una receta. Un Set vacío también es válido porque el lote es opcional; disallowEmptySelection no está activado deliberadamente. En una aplicación remota o paginada, define qué significa all para esa fuente de datos en vez de dar por hecho que las filas representadas en ese momento constituyen toda la colección.
Identidad del recurso: clave estable utilizada por la colección.
Inspección: qué ilustración se muestra ampliada en la muestra independiente.
Selección del lote: qué claves aparecen en la receta preparada.
Sistema de diseño Adobe Spectrum: Picker y Button completan el inspector de exportación
El formato se controla por separado del lote
Picker usa una etiqueta visible y claves estables en Item. selectedKey es png o jpeg; onSelectionChange proporciona la clave seleccionada. Esto difiere de leer event.target.value de un elemento select nativo. El formato sigue seleccionado cuando se vacía el lote, lo que permite a quien revisa ajustar la selección sin tener que volver a crear un ajuste preestablecido.
Button usa onPress para la activación y isDisabled cuando no hay recursos seleccionados. El ejemplo nativo serializa los identificadores y el formato en una receta local. No transforma datos de imagen, genera un archivo de exportación real ni se comunica con un servicio de recursos. Este es un límite de implementación útil: la acción y sus datos de entrada son concretos, aunque el motor de conversión quede fuera del sistema de diseño.
Sistema de diseño Adobe Spectrum Adapta la composición en lugar de comprimir la ilustración
Define el contrato de puntos de interrupción
Este ejemplo declara tablet:640 y desktop:1024. La elección es explícita porque la página Provider actualmente tiene valores predeterminados incoherentes entre el texto explicativo y los metadatos generados de API. Los valores adaptables hacen referencia a esas claves exactas. El inspector ocupa todo el ancho en el tamaño base y luego se sitúa junto a la tabla flexible. La aplicación define esos puntos de interrupción; no son un nuevo estándar universal de Spectrum.
La ilustración independiente usa un lienzo grande, un inspector lateral y una barra de miniaturas. En pantallas pequeñas, el inspector pasa al flujo normal y la ilustración conserva su relación de aspecto. Los textos, como las dimensiones y el formato, aparecen fuera de la ilustración, por lo que siguen siendo legibles y no alteran la obra que se inspecciona.
Sistema de diseño Adobe Spectrum Inspeccionar, seleccionar y preparar son acciones diferentes
Haz que la demostración se pueda probar
Al hacer clic en la miniatura de una ilustración, cambian la ilustración ampliada y sus metadatos descriptivos. Una casilla cambia el lote de exportación. Mantener estas acciones independientes permite inspeccionar un recurso sin seleccionarlo para exportar por accidente. La vista previa muestra la cantidad seleccionada y conserva el formato mientras quien revisa cambia el lote.
El TableView nativo proporciona la interacción con la colección; el ejemplo de HTML usa botones y casillas de verificación estándar y no afirma reproducir el modelo completo de navegación por teclado de la cuadrícula. Ambos ofrecen una forma de acceder mediante el teclado a las acciones demostradas. El resultado de la receta es texto, no solo un efecto visual temporal, de modo que quien revisa puede ver exactamente qué identificadores y formato se prepararon.
Sistema de diseño Adobe Spectrum Integra primero la parte nativa y después amplía la herramienta
Conecta un servicio de exportación real en un límite explícito
Instala la suite v3 en una aplicación React existente y luego usa la entrada completa que aparece a continuación. El ejemplo incluye el proveedor, las importaciones, los datos de la colección, el estado de selección, el estado del formato y el estado del resultado. En una integración de producción, se reemplazaría la preparación de la receta por una solicitud de exportación y se mostraría el resultado confirmado de cada recurso. No llames «Exportación completada» a la respuesta local antes de que exista ese servicio.
Al migrar a Spectrum 2, usa las correspondencias de Adobe para las dimensiones, los puntos de interrupción y los cambios en los componentes. Vuelve a verificar el comportamiento de selección y la persistencia del formato; una tabla de aspecto similar puede tener un contrato diferente. Indica explícitamente la generación de origen para que quienes contribuyan en el futuro no combinen un Provider de v3 con ejemplos incompatibles.
Selecciona un recurso y confirma que su identificador aparezca en la receta local.
Selecciona todo, cambia PNG por JPEG e inspecciona el conjunto completo seleccionado.
Borra la selección y comprueba que la acción se desactive mientras el formato siga seleccionado.
Reduce el ancho de la ventana y confirma que se pueda acceder a la inspección, la selección y el resultado de la receta.
Adobe Spectrum Ejemplos de componentes del sistema de diseño
Muestra interactiva independiente completa
Guarda el documento completo como index.html y ábrelo en un navegador. Interpretación original de HTML/CSS del flujo de trabajo documentado de inspección y colecciones de v3. La paleta y las ilustraciones son orientativas; no se incluye el entorno de ejecución nativo de Spectrum ni conversión de imágenes.
HTML
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Spectrum asset inspector study</title><style>*{box-sizing:border-box}body{margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#2c2c2c;background:#f5f5f5}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #999;border-radius:16px;background:white;color:inherit;padding:5px 16px;font-weight:600}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #1473e6;outline-offset:3px}button:disabled{opacity:.45;cursor:not-allowed}header{padding:16px 24px;background:white;border-bottom:1px solid #ddd;display:flex;justify-content:space-between;gap:16px;align-items:center}header b{font-size:16px}header span{font-size:12px;color:#666}.workspace{display:grid;grid-template-columns:160px minmax(0,1fr) 230px;min-height:540px}.rail{padding:20px 16px;border-right:1px solid #ddd}.rail h2,.inspector h2{font-size:14px;margin:0 0 16px}.thumb{margin-bottom:20px}.thumb button{width:100%;border-radius:4px;padding:6px;background:transparent;border:2px solid transparent}.thumb button[aria-pressed=true]{border-color:#1473e6;background:#e7f1ff}.thumb label{display:flex;align-items:center;gap:6px;font-size:12px;margin-top:6px}.thumb input{accent-color:#1473e6}.mini{height:70px;display:grid;place-items:center;font-size:26px;font-weight:800;letter-spacing:-2px;background:linear-gradient(125deg,#fcab64,#ee6e63);color:#472c52;border-radius:2px}.thumb:nth-of-type(2) .mini{background:linear-gradient(125deg,#c4bdff,#8b7ddd)}.thumb:nth-of-type(3) .mini{background:linear-gradient(125deg,#9ed5c8,#449c8c)}.canvas-wrap{padding:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0}.canvas-meta{align-self:stretch;display:flex;justify-content:space-between;margin-bottom:20px;font-size:12px;color:#666;gap:12px}.art{width:min(100%,540px);aspect-ratio:4/3;background:linear-gradient(130deg,#ffbd7c,#ed8178);color:#412754;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;text-align:center;isolation:isolate}.art:before{content:'';position:absolute;z-index:-1;width:70%;aspect-ratio:1;border:45px solid rgba(255,240,197,.65);border-radius:50%;left:-24%;bottom:-25%}.art:after{content:'';position:absolute;z-index:-1;width:60%;aspect-ratio:1;background:rgba(217,69,117,.32);border-radius:50%;right:-25%;top:-25%}.art small{letter-spacing:3px;font-size:11px;font-weight:700}.art h1{font-size:clamp(28px,5vw,64px);line-height:.96;margin:16px 0 18px;letter-spacing:-3px;font-weight:800}.art p{font-size:12px;margin:0}.art[data-art=square]{aspect-ratio:1;background:linear-gradient(130deg,#d8d0ff,#9588dd)}.art[data-art=story]{aspect-ratio:9/16;max-height:470px;width:auto;min-width:210px;background:linear-gradient(130deg,#caeee2,#69b7a5)}.art[data-art=story] h1{font-size:40px;letter-spacing:-2px}.canvas-note{font-size:12px;color:#666;margin-top:16px}.inspector{background:white;padding:24px 20px;border-left:1px solid #ddd}.inspector dl{margin:0 0 24px}.inspector dt{font-size:12px;color:#666;margin-top:16px}.inspector dd{margin:4px 0 0;overflow-wrap:anywhere}.inspector hr{border:0;border-top:1px solid #ddd;margin:24px 0}.inspector label{display:block;font-size:12px;font-weight:600;margin-bottom:6px}.inspector select{width:100%;border:1px solid #999;border-radius:4px;padding:8px;background:white}.selected-count{font-size:12px;margin:16px 0}.primary{background:#1473e6;border-color:#1473e6;color:white;width:100%}.primary:hover{background:#0d66d0}.result{margin:0 24px 20px;padding:16px;background:white;border:1px solid #ddd;border-radius:4px}.result[hidden]{display:none}.result h2{font-size:16px;margin:0 0 8px}.result pre{white-space:pre-wrap;font:12px/1.5 ui-monospace,monospace}.result p{font-size:12px;margin:0}footer{padding:12px 24px;color:#666;font-size:12px;border-top:1px solid #ddd;background:white}@media(max-width:760px){.workspace{grid-template-columns:110px minmax(0,1fr)}.rail{padding:16px 8px}.inspector{grid-column:1/-1;border-left:0;border-top:1px solid #ddd;display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}.inspector h2{grid-column:1/-1;margin:0}.inspector dl{margin:0}.inspector hr{display:none}.canvas-wrap{padding:16px}.art h1{letter-spacing:-1px}.art p{padding:0 12px}.canvas-meta{display:block}.art:before{border-width:24px}header span{display:none}.inspector dt:first-child{margin-top:0}}@media(max-width:440px){.workspace{grid-template-columns:1fr}.rail{border-right:0;border-bottom:1px solid #ddd;display:flex;gap:8px}.rail h2{display:none}.thumb{flex:1;min-width:0;margin:0}.mini{height:44px;font-size:20px}.thumb label{font-size:11px}.art[data-art=story]{max-height:390px}.canvas-meta{display:flex}.inspector{grid-template-columns:1fr 1fr;padding:20px 16px}header{padding:16px}.result{margin:0 16px 16px}}
</style></head><body><header><b>Campaign library <span>/ Autumn collection</span></b><button id="select-all">Select all</button></header><main><div class="workspace"><nav class="rail" aria-label="Artwork variants"><h2>Assets</h2><div class="thumb"><button data-id="hero" aria-label="Inspect campaign master" aria-pressed="true"><div class="mini" aria-hidden="true">Made.</div></button><label><input type="checkbox" value="hero" checked>Master</label></div><div class="thumb"><button data-id="square" aria-label="Inspect social square" aria-pressed="false"><div class="mini" aria-hidden="true">Made.</div></button><label><input type="checkbox" value="square">Square</label></div><div class="thumb"><button data-id="story" aria-label="Inspect vertical story" aria-pressed="false"><div class="mini" aria-hidden="true">Made.</div></button><label><input type="checkbox" value="story">Story</label></div></nav><section class="canvas-wrap" aria-label="Selected artwork"><div class="canvas-meta"><span id="art-name">Campaign master</span><span id="dimensions">1600 × 1200</span></div><div class="art" id="art" data-art="hero" role="img" aria-label="Original orange campaign artwork with the words Made for what comes next"><div><small>AUTUMN COLLECTION</small><h1>Made for<br>what comes<br>next.</h1><p>Small ideas. A different perspective.</p></div></div><p class="canvas-note">Original artwork · illustrative preview</p></section><aside class="inspector"><h2>Export inspector</h2><dl><dt>Selected artwork</dt><dd id="detail-name">Campaign master</dd><dt>Source dimensions</dt><dd id="detail-dimensions">1600 × 1200 px</dd><dt>Review</dt><dd>Draft artwork</dd></dl><hr><div><label for="format">Export format</label><select id="format"><option value="png">PNG</option><option value="jpeg">JPEG</option></select><p class="selected-count" id="selected-count">1 asset selected</p><button class="primary" id="prepare">Prepare recipe</button><p style="font-size:12px;color:#666">Creates a local recipe only. No files are converted.</p></div></aside></div><section class="result" id="result" hidden><h2>Local export recipe</h2><pre id="recipe"></pre><p role="status" id="status"></p></section></main><footer>React Spectrum v3 collection study · HTML/CSS interpretation with illustrative colors. Inspecting an artwork and selecting it for export are independent.</footer><script>
const assets={hero:{name:'Campaign master',dimensions:'1600 × 1200',color:'orange'},square:{name:'Social square',dimensions:'1080 × 1080',color:'purple'},story:{name:'Vertical story',dimensions:'1080 × 1920',color:'green'}};const boxes=[...document.querySelectorAll('.thumb input')],$=id=>document.getElementById(id);document.querySelectorAll('[data-id]').forEach(button=>button.onclick=()=>{document.querySelectorAll('[data-id]').forEach(b=>b.setAttribute('aria-pressed',String(b===button)));const id=button.dataset.id,a=assets[id];$('art').dataset.art=id;$('art').setAttribute('aria-label','Original '+a.color+' campaign artwork with the words Made for what comes next');$('art-name').textContent=$('detail-name').textContent=a.name;$('dimensions').textContent=a.dimensions;$('detail-dimensions').textContent=a.dimensions+' px';});function update(){let n=boxes.filter(b=>b.checked).length;$('selected-count').textContent=n+' asset'+(n===1?'':'s')+' selected';$('prepare').disabled=n===0;$('select-all').textContent=n===boxes.length?'Clear selection':'Select all';$('result').hidden=true;}boxes.forEach(b=>b.onchange=update);$('format').onchange=()=>{$('result').hidden=true;};$('select-all').onclick=()=>{const all=boxes.every(b=>b.checked);boxes.forEach(b=>b.checked=!all);update();};$('prepare').onclick=()=>{const ids=boxes.filter(b=>b.checked).map(b=>b.value);$('recipe').textContent=JSON.stringify({format:$('format').value,assets:ids},null,2);$('status').textContent='Recipe prepared for '+ids.length+' assets. No image files were converted.';$('result').hidden=false;};
</script></body></html>
La ilustración es contenido de muestra original. Preparar una receta genera metadatos de selección, no archivos de imagen convertidos; este documento no carga Spectrum v3 ni Spectrum 2.
Entrada de implementación nativa completa
La implementación completa de la configuración, reunida aquí junto con las explicaciones específicas de API. Sigue los requisitos documentados de paquetes y compilación en la sección de configuración.
Ejemplo completo de colección e inspector de v3 para una aplicación React existente. Crea una receta de exportación en el estado local, no archivos de imagen. Mantén la versión resuelta del paquete en el archivo de bloqueo y no combines esta entrada con importaciones de Spectrum 2.
La selección puede ser «todo», no solo un Set
Normaliza el contrato de la colección antes de calcular el lote o habilitar la acción. Este fragmento usa los recursos y las claves de la configuración completa.
El texto de referencia de Provider y la tabla de valores predeterminados generada discrepan sobre los puntos de interrupción predeterminados; un mapa explícito elimina la ambigüedad.
Los márgenes lógicos marginStart y marginEnd se adaptan mejor que los márgenes físicos izquierdo y derecho.
04
Adobe Spectrum Configuración del agente de IA del sistema de diseño
Punto de partida para la implementación
Ejemplo completo de colección e inspector de v3 para una aplicación React existente. Crea una receta de exportación en el estado local, no archivos de imagen. Mantén la versión resuelta del paquete en el archivo de bloqueo y no combines esta entrada con importaciones de Spectrum 2.
Usa @adobe/react-spectrum v3 con Provider y defaultTheme. Crea el TableView con claves y el inspector de exportación proporcionados mediante Picker, Item, Flex, View y Button. Gestiona la selección como un Set o como «todo», conserva el formato al cambiar la selección y denomina el resultado receta local hasta que se conecte un servicio de conversión real. Usa claves explícitas tablet/desktop para los puntos de interrupción y propiedades de estilo compatibles. Mantén separadas las API de v3 y Spectrum 2.
05
Adobe Spectrum Fuentes y alcance del sistema de diseño
Estudio de implementación de OpenDesign basado en la documentación mantenida de Spectrum v3 React, con @adobe/react-spectrum. Spectrum 2 también está disponible y tiene API diferentes; esta página no presenta v3 como la implementación más reciente. La vista previa independiente del panel de recursos es una interpretación original de HTML/CSS, con ilustraciones orientativas y colores elegidos por la aplicación; no es un componente nativo de Spectrum ni un editor de imágenes con gestión de color.