Software empresarial · Nuevo recurso

Sistema de diseño Infor.

Crea un formulario de mantenimiento empresarial con estados reales de entrada de IDS, alias de tema y un identificador de recurso exacto. Inspecciona los tokens del tema público actual, un paquete de Web Components fijado en una versión concreta y un flujo local de borradores con validación y restablecimiento.

Guía de OpenDesign7 capítulos53 entradas de referenciaGuía de aplicación original
01

Vista previa de la interfaz de sistema de diseño Infor

Valida un resumen y un contacto, prepara una solicitud local y bórrala sin enviar nada.

Borrador de solicitud de mantenimientoAbrir ejemplo completo
Interpretación independiente de HTML/CSS, basada en valores verificados de tokens de IDS core/light y una fuente alternativa del sistema. No es el entorno de ejecución nativo de IDS. · Referencia de implementación
02

Referencia de diseño de sistema de diseño Infor

La hoja de estilos de tema de la tabla pública de tokens de Infor consultada en esta revisión, además de ids-enterprise-wc 1.17.1 y los ejemplos oficiales de entradas y botones publicados. La URL de la tabla de tokens más reciente ofrece una instantánea dinámica, no garantiza una versión del paquete.

Roles del tema

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--ids-color-action-defaultvar(--ids-color-blue-60)Alias semántico del tema público core/light.
--ids-color-action-strongervar(--ids-color-blue-70)Alias semántico del tema público core/light.
--ids-color-background-defaultvar(--ids-color-white-100)Alias semántico del tema público core/light.
--ids-color-foreground-default-defaultvar(--ids-color-neutral-100)Alias semántico del tema público core/light.
--ids-color-foreground-default-secondaryvar(--ids-color-neutral-80)Alias semántico del tema público core/light.
--ids-color-border-defaultvar(--ids-color-neutral-60)Alias semántico del tema público core/light.
--ids-color-border-weakvar(--ids-color-neutral-40)Alias semántico del tema público core/light.

Valores de primitivas resueltos

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--ids-color-blue-60#0072ed Primitiva del tema público; no des por sentado que tiene el mismo valor en el modo oscuro o de alto contraste.
--ids-color-blue-70#0066d4 Primitiva del tema público; no des por sentado que tiene el mismo valor en el modo oscuro o de alto contraste.
--ids-color-neutral-100#161618 Primitiva del tema público; no des por sentado que tiene el mismo valor en el modo oscuro o de alto contraste.
--ids-color-neutral-80#3b3b3f Primitiva del tema público; no des por sentado que tiene el mismo valor en el modo oscuro o de alto contraste.
--ids-color-neutral-60#6f6f76 Primitiva del tema público; no des por sentado que tiene el mismo valor en el modo oscuro o de alto contraste.
--ids-color-neutral-10#f5f5f5 Primitiva del tema público; no des por sentado que tiene el mismo valor en el modo oscuro o de alto contraste.
--ids-color-red-60#da1217 Primitiva del tema público; no des por sentado que tiene el mismo valor en el modo oscuro o de alto contraste.

Alias de espaciado

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--ids-space-2xsvar(--ids-space-04)Usa el alias para el espaciado personalizado de la aplicación.
--ids-space-xsvar(--ids-space-08)Usa el alias para el espaciado personalizado de la aplicación.
--ids-space-smvar(--ids-space-16)Usa el alias para el espaciado personalizado de la aplicación.
--ids-space-mdvar(--ids-space-24)Usa el alias para el espaciado personalizado de la aplicación.
--ids-space-lgvar(--ids-space-32)Usa el alias para el espaciado personalizado de la aplicación.
--ids-space-xlvar(--ids-space-40)Usa el alias para el espaciado personalizado de la aplicación.
--ids-space-2xlvar(--ids-space-48)Usa el alias para el espaciado personalizado de la aplicación.

Valores de espaciado

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--ids-space-044pxValor concreto de la escala de la hoja de estilos de tokens.
--ids-space-088pxValor concreto de la escala de la hoja de estilos de tokens.
--ids-space-1616pxValor concreto de la escala de la hoja de estilos de tokens.
--ids-space-2424pxValor concreto de la escala de la hoja de estilos de tokens.
--ids-space-3232pxValor concreto de la escala de la hoja de estilos de tokens.
--ids-space-4040pxValor concreto de la escala de la hoja de estilos de tokens.
--ids-space-4848pxValor concreto de la escala de la hoja de estilos de tokens.

Tipografía

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--ids-font-family-sanssource sans proReferencia tipográfica; los archivos de fuentes deben cargarse por separado.
--ids-font-family-monosource code proReferencia tipográfica; los archivos de fuentes deben cargarse por separado.
--ids-font-size-defaultvar(--ids-font-size-sm)Referencia tipográfica; los archivos de fuentes deben cargarse por separado.
--ids-font-size-smvar(--ids-font-size-40)Referencia tipográfica; los archivos de fuentes deben cargarse por separado.
--ids-font-size-3014pxReferencia tipográfica; los archivos de fuentes deben cargarse por separado.
--ids-font-size-4016pxReferencia tipográfica; los archivos de fuentes deben cargarse por separado.
--ids-font-size-5020pxReferencia tipográfica; los archivos de fuentes deben cargarse por separado.
--ids-font-size-6024pxReferencia tipográfica; los archivos de fuentes deben cargarse por separado.

Alias de radio

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--ids-border-radius-xsvar(--ids-border-radius-04)El alias hace referencia a una primitiva; no des por sentado que todos los controles usan el radio más grande.
--ids-border-radius-smvar(--ids-border-radius-08)El alias hace referencia a una primitiva; no des por sentado que todos los controles usan el radio más grande.
--ids-border-radius-mdvar(--ids-border-radius-16)El alias hace referencia a una primitiva; no des por sentado que todos los controles usan el radio más grande.
--ids-border-radius-lgvar(--ids-border-radius-24)El alias hace referencia a una primitiva; no des por sentado que todos los controles usan el radio más grande.
--ids-border-radius-circlevar(--ids-border-radius-99)El alias hace referencia a una primitiva; no des por sentado que todos los controles usan el radio más grande.

Anatomía de entradas y botones

Fuente
Nombre / ReglaValor / ConfiguraciónUso
labelVisible input labelÚsalo para identificar el campo, no como único texto del marcador de posición.
validaterequired / email requiredReglas de validación documentadas.
readonlytrueConserva un identificador de recurso legible y no editable.
disabledtrueEstado independiente para entradas no disponibles.
clearabletrueOpción para borrar a nivel de campo.
dirty-trackertrueSeguimiento opcional de los valores modificados.
text-alignstart | center | endAlineación lógica para presentar texto o números.

Jerarquía de acciones

Fuente
Nombre / ReglaValor / ConfiguraciónUso
appearanceprimaryPreparar el borrador local.
appearancesecondaryBorrar el borrador como acción secundaria.
appearancetertiaryAlternativa con menor énfasis.
appearanceprimary-destructive / tertiary-destructivePara acciones destructivas reales, no para una cancelación rutinaria.
disabledBoolean attributeEstado de componente nativo no disponible.
03

Sistema de diseño Infor Guía completa

Una guía práctica para elegir, aplicar y revisar este sistema en una interfaz real.

DESIGN-infor.md

Orientación completa, un punto de partida para la implementación y enlaces al código fuente.

Descargar la guía

Sistema de diseño Infor Un formulario empresarial con identidad de registro estable

Mantén el identificador del equipo separado de la solicitud editable

Infor denomina SoHo a su lenguaje de diseño y presenta IDS como una solución centrada en las funciones empresariales y la productividad. El ejemplo aplica ese enfoque a una solicitud de mantenimiento: el identificador del activo permanece fijo, mientras que el resumen del trabajo, el contacto y la urgencia son los datos editables de la tarea.

De esta guía de OpenDesign

El ID 02006 es deliberadamente una cadena de texto. Convertirlo en número eliminaría el cero inicial y cambiaría su identidad. El ejemplo nativo de IDS usa un campo de entrada de solo lectura para mantener visible el contexto del registro sin que parezca un campo vacío o no disponible.

Consulta la especificación complementaria

Sistema de diseño Infor Los alias del tema se resuelven mediante primitivas

Usa el alias que corresponda a cada función

El tema público capturado define action-default mediante blue-60, el primer plano predeterminado mediante neutral-100 y el primer plano secundario mediante neutral-80. Esta estructura de dos capas permite que un formulario personalizado se integre con el tema sin duplicar colores literales por toda la aplicación.

La página pública de tokens ofrece los modos Núcleo, Oscuro y Contraste. Los valores de esta guía corresponden a una captura de la hoja de estilos claro/núcleo. La vista previa no afirma que un valor hexadecimal azul sea universal en los tres modos; un componente de producción debe usar su alias semántico y dejar que el tema seleccionado lo resuelva.

Consulta la especificación complementaria

Sistema de diseño Infor Una escala concreta sin inventar un sistema de densidad

El espaciado, la tipografía y el radio tienen conjuntos de alias distintos

Los alias de espaciado incluyen xs, que corresponde a la primitiva de 8 píxeles; sm, a 16; md, a 24; y lg, a 32. El componente nativo proporcionado en CSS usa md para el margen interior principal y sm entre campos. Así, la intención queda clara en el código fuente y se conservan los valores concretos en la tabla de referencia.

La familia tipográfica predeterminada es Source Sans Pro, y Source Code Pro se usa para el tipo monoespaciado. El alias font-size-default corresponde a la entrada de 16 píxeles de la escala. Cargar la biblioteca no elimina la necesidad de proporcionar los archivos de fuentes descritos en el README del paquete. La vista previa sin conexión usa una fuente alternativa común.

Los nombres de radio son distintos de los nombres de espaciado: radius-sm corresponde a 8 píxeles, mientras que space-sm corresponde a 16. Reutilizar de memoria un número solo porque ambos nombres terminan en sm da un resultado incorrecto.

Consulta la especificación complementaria

Sistema de diseño Infor Estados de entrada con significados distintos

Solo lectura, deshabilitado y con cambios no son intercambiables

Los ejemplos oficiales incluyen readonly, disabled, dirty-tracker, clearable, uppercase, lowercase y alineación lógica del texto. La solicitud solo necesita readonly para la identidad del activo y clearable para el resumen del trabajo. No activa la conversión automática de mayúsculas o minúsculas en un correo electrónico ni transforma silenciosamente una descripción de texto libre.

El ejemplo nativo de entrada declara validate="email required" para el campo de contacto. La declaración de tipos publicada proporciona value, focus() y checkValidation(). Como checkValidation devuelve void, el código no lo confunde con un resultado booleano de validez del formulario; en su lugar, comprueba por separado las condiciones que permiten preparar el registro local.

  • Solo lectura mantiene un activo fijo visible y legible.
  • Deshabilitado significa que el campo no se puede usar en este momento.
  • El seguimiento de cambios describe la diferencia respecto a un valor inicial; no es un estado de éxito ni de validación.

Consulta la especificación complementaria

Sistema de diseño Infor El seguimiento de cambios y la validación tienen funciones distintas

Registra las ediciones sin considerarlas datos válidos

La galería oficial de entradas de IDS muestra dirty-tracker="true" en un campo con un valor inicial. El seguimiento de cambios se ocupa de las modificaciones de un campo; es independiente del atributo validate, cuyas reglas email y required describen qué entradas son aceptables. Un campo de contacto modificado aún puede contener una dirección no válida.

La declaración publicada de Input incluye checkValidation(): void. Llámalo para activar el comportamiento de validación del componente, no como condición booleana que autoriza una acción de orden de trabajo. El ejemplo nativo también comprueba los valores obligatorios de la aplicación antes de generar un borrador. El resumen con clearable y el activo de solo lectura muestran otras dos funciones independientes de la entrada.

El seguimiento de cambios es una función documentada, pero no está activada en esta vista previa. La demostración borra el resumen preparado tras las ediciones y devuelve el foco al campo del resumen del trabajo; no indica que se haya guardado una solicitud de mantenimiento.

Consulta la especificación complementaria

Sistema de diseño Infor Usa un espacio de trabajo en dos partes sin ocultar el formulario

Primero el formulario, después el contexto

La vista previa combina un formulario con una tarjeta compacta de contexto del equipo y un diagrama original sencillo de la máquina. El orden de lectura principal sigue siendo encabezado, campos, acciones y resultado. En pantallas estrechas, el contexto se desplaza debajo del formulario en lugar de comprimir los campos en columnas ilegibles.

Los ejemplos de la biblioteca usan ids-layout-grid con atributos de columna específicos para cada punto de quiebre. Este ejemplo mantiene deliberadamente un diseño adaptable más sencillo; el ancho máximo y el punto de quiebre son valores de la aplicación. Lo que se muestra aquí son los espacios basados en tokens y las etiquetas de controles nativos.

Consulta la especificación complementaria

Sistema de diseño Infor Fija el paquete nativo e inicialízalo antes de leer valores

El paquete publicado es el punto de entrada fiable

El paquete verificado indica la versión 1.17.1, una entrada de módulo ES en enterprise-wc.js y el repositorio de origen actual alojado por Infor. Por tanto, la antigua ubicación de GitHub no es una instrucción de instalación fiable. El código importa el paquete publicado, inserta la composición y espera a que se definan los elementos personalizados antes de asociar el comportamiento.

Los ejemplos oficiales activos contienen URL de fragmentos específicas de cada compilación. Copiar el nombre de un fragmento al azar en una aplicación la vincularía a un artefacto de despliegue; la entrada del paquete permite que el empaquetador resuelva esas dependencias. Esta guía verifica las declaraciones públicas de métodos y mantiene el ejemplo del navegador claramente separado de cualquier afirmación de compilación nativa.

  1. Instala el paquete con versión fijada en la plantilla Vanilla de Vite e incluye la fuente documentada según la política de recursos de tu aplicación.
  2. Usa la entrada proporcionada y CSS, espera a que se definan los elementos personalizados y luego asocia las acciones principal y de restablecimiento.
  3. Prueba un resumen vacío, un correo electrónico mal formado, un borrador local válido y una edición posterior; asegúrate de que la instantánea mostrada nunca quede desactualizada.

Consulta la especificación complementaria

Ejemplos de componentes del sistema de diseño sistema de diseño Infor

Muestra interactiva independiente completa

Guarda el documento completo como index.html y ábrelo en un navegador. Interpretación independiente de HTML/CSS mediante valores verificados de tokens IDS core/light y una fuente del sistema como alternativa. No es el entorno de ejecución nativo de IDS.

HTML
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Maintenance request — IDS interpretation</title><style>*{box-sizing:border-box}body{margin:0;color:#161618;background:#f5f5f5;font:16px/1.45 Arial,sans-serif}main{max-width:1120px;padding:32px;margin:auto}header{display:flex;justify-content:space-between;border-bottom:1px solid #bbbbbf;padding-bottom:16px;gap:16px}header b{font-size:14px}header span{font-size:13px;color:#3b3b3f}h1{font-size:32px;line-height:1.2;font-weight:500;margin:24px 0 8px}h2{font-size:20px;font-weight:500;margin:0 0 16px}.intro{color:#3b3b3f;margin:0 0 24px}.grid{display:grid;grid-template-columns:1.4fr 1fr;gap:24px}.form,.context{background:white;border:1px solid #e0e0e1;border-radius:8px;padding:24px}label,.label{display:block;font-size:14px;margin-bottom:8px}input{width:100%;font:inherit;border:1px solid #6f6f76;border-radius:4px;padding:10px 12px;color:#161618}input[readonly]{background:#f5f5f5}input:focus,button:focus-visible{outline:3px solid #8abff7;outline-offset:2px}.field{margin-bottom:16px}.hint{font-size:12px;color:#3b3b3f;margin:4px 0 0}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px}button{font:inherit;border-radius:4px;padding:10px 16px;cursor:pointer;border:1px solid #6f6f76;background:white;color:#161618}.primary{background:#0072ed;color:white;border-color:#0072ed}.primary:hover{background:#0066d4}fieldset{padding:0;border:0;margin:24px 0 0}legend{font-size:14px;margin-bottom:8px}.radios{display:flex;gap:16px;flex-wrap:wrap}.radios label{display:flex;gap:8px;align-items:center;margin:0}.radios input{width:auto;accent-color:#0072ed}.equipment{height:190px;background:#e6f1fd;display:grid;place-content:center;margin-bottom:24px;border-radius:4px}.machine{border:3px solid #0054b1;width:165px;height:100px;position:relative;background:white}.machine:before{content:'';position:absolute;left:14px;top:16px;width:55px;height:55px;border:8px double #0054b1;border-radius:50%}.machine:after{content:'02006';position:absolute;right:10px;top:27px;color:#0054b1;font:16px monospace}.context dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0;font-size:14px}.context dt{color:#3b3b3f}.context dd{margin:0;text-align:right}.notice{font-size:13px;background:#f5f5f5;padding:16px;margin-top:24px}.error{color:#a30d11;font-size:14px;min-height:20px}.result{background:#e6f1fd;padding:16px;border-left:3px solid #0072ed;margin-top:20px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.result[hidden]{display:none}.foot{font-size:12px;color:#3b3b3f;margin-top:24px}@media(max-width:650px){main{padding:20px}.grid{grid-template-columns:1fr}.form,.context{padding:20px}header{flex-direction:column;gap:4px}h1{font-size:28px}.equipment{height:140px}}</style><main><header><b>ASSET SERVICE / LOCAL NOTEBOOK</b><span>Independent Infor IDS interpretation</span></header><h1>Prepare the work. Keep the context.</h1><p class="intro">Build a local maintenance draft for a fixed equipment record.</p><div class="grid"><form id="form" class="form" novalidate><div class="field"><label for="asset">Asset identifier</label><input id="asset" value="02006" readonly><p class="hint">Read-only record identity; leading zero preserved.</p></div><div class="field"><label for="summary">Work summary</label><input id="summary" required placeholder="For example, inspect the drive belt" aria-describedby="error"></div><div class="field"><label for="contact">Contact email</label><input id="contact" type="email" required placeholder="[email protected]" aria-describedby="error"></div><fieldset><legend>Planning urgency</legend><div class="radios"><label><input type="radio" name="urgency" value="Routine" checked>Routine</label><label><input type="radio" name="urgency" value="Soon">Soon</label></div></fieldset><div class="actions"><button class="primary" type="submit">Prepare local draft</button><button id="clear" type="button">Clear draft</button></div><p id="error" class="error" role="alert"></p><div id="result" class="result" role="status" hidden></div></form><aside class="context"><div class="equipment" role="img" aria-label="Original schematic of fictional equipment 02006"><div class="machine"></div></div><h2>Equipment context</h2><dl><dt>Record</dt><dd>02006</dd><dt>Area</dt><dd>Sample workshop</dd><dt>Type</dt><dd>Drive assembly</dd><dt>Connection</dt><dd>Offline sample</dd></dl><p class="notice">Preparing a draft changes only this page. It does not create a work order or send a message.</p></aside></div><p class="foot">Core/light IDS token values with native HTML controls and a system-font fallback. Original illustration and application layout; no native IDS runtime.</p></main><script>const form=document.querySelector('#form'),summary=document.querySelector('#summary'),contact=document.querySelector('#contact'),error=document.querySelector('#error'),result=document.querySelector('#result');function clearResult(){result.hidden=true;result.textContent='';error.textContent='';summary.removeAttribute('aria-invalid');contact.removeAttribute('aria-invalid')}form.addEventListener('input',clearResult);form.onsubmit=e=>{e.preventDefault();clearResult();if(!summary.value.trim()){error.textContent='Enter a work summary.';summary.setAttribute('aria-invalid','true');summary.focus();return}if(!contact.value.trim()||!contact.validity.valid){error.textContent='Enter a valid contact email.';contact.setAttribute('aria-invalid','true');contact.focus();return}result.hidden=false;result.textContent='LOCAL DRAFT / NOT SENT\n\nAsset: 02006\nSummary: '+summary.value.trim()+'\nContact: '+contact.value.trim()+'\nUrgency: '+form.elements.urgency.value};document.querySelector('#clear').onclick=()=>{form.reset();clearResult();summary.focus()};</script></html>

Referencia de código

  • El activo 02006 se mantiene como cadena. El ejemplo nativo de IDS, no este formulario HTML, ejercita el registro de elementos personalizados y checkValidation(); ninguno de los dos crea una orden de mantenimiento.

Identificador de solo lectura, resumen obligatorio y validación del contacto

La validación de entrada de IDS se invoca explícitamente; las comprobaciones de la aplicación impiden un borrador local vacío. El texto del usuario se representa con textContent.

javascript
// Vite vanilla project: npm install [email protected]
// src/main.js. Add Source Sans Pro through your approved font-hosting setup.
import 'ids-enterprise-wc';
import './style.css';
document.querySelector('#app').innerHTML=`<ids-container><main>
<h1>Maintenance request</h1><p>Local draft only; no work order is sent.</p>
<ids-input id="asset" label="Asset identifier" value="02006" readonly="true"></ids-input>
<ids-input id="summary" label="Work summary" validate="required" clearable="true"></ids-input>
<ids-input id="contact" label="Contact email" validate="email required"></ids-input>
<ids-button id="prepare" appearance="primary"><span>Prepare local draft</span></ids-button>
<ids-button id="reset" appearance="secondary"><span>Clear draft</span></ids-button>
<p id="message" role="status"></p><pre id="draft"></pre>
</main></ids-container>`;
await Promise.all(['ids-input','ids-button','ids-container'].map(n=>customElements.whenDefined(n)));
const summary=document.querySelector('#summary'),contact=document.querySelector('#contact');
const message=document.querySelector('#message'),draft=document.querySelector('#draft');
document.querySelector('#prepare').addEventListener('click',()=>{
 summary.checkValidation();contact.checkValidation();
 const title=summary.value.trim(),email=contact.value.trim();
 if(!title){message.textContent='Enter a work summary.';summary.focus();return;}
 if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)){message.textContent='Enter a complete contact email.';contact.focus();return;}
 draft.textContent=JSON.stringify({asset:'02006',summary:title,contact:email},null,2);
 message.textContent='Draft prepared in this page only. No request sent.';
});
function clearResult(){draft.textContent='';message.textContent='';}
summary.addEventListener('input',clearResult);contact.addEventListener('input',clearResult);
document.querySelector('#reset').addEventListener('click',()=>{summary.value='';contact.value='';clearResult();summary.focus();});

/* src/style.css — application layout using the loaded IDS token roles */
main{max-width:44rem;margin:auto;padding:var(--ids-space-md);color:var(--ids-color-foreground-default-default)}
ids-input{display:block;margin-bottom:var(--ids-space-sm)}
ids-button{margin-inline-end:var(--ids-space-xs)}
pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--ids-color-accent-neutral-weakest);padding:var(--ids-space-sm)}

Referencia de código

  • checkValidation() devuelve void; no se trata como un resultado booleano.
  • El activo 02006 es texto, por lo que se conserva el cero inicial.
  • Preparar la vista previa solo cambia el estado local de la página.

La apariencia de las acciones es explícita

Las variantes de componentes primarios y secundarios dan al flujo de trabajo una acción principal clara.

HTML
<ids-button appearance="primary"><span>Prepare local draft</span></ids-button>
<ids-button appearance="secondary"><span>Clear draft</span></ids-button>

Referencia de código

  • Un componente no disponible usa disabled, no solo un estilo atenuado.
04

Configuración del agente sistema de diseño Infor

Punto de partida para la implementación

Entrada completa y hoja de estilos para un esqueleto vanilla de Vite con #app. La versión del paquete y los métodos se comprobaron en el paquete publicado; aquí no se ejecutó la compilación. Proporciona Source Sans Pro desde una fuente de tipografías aprobada. La vista previa integrada es una implementación nativa independiente de HTML.

javascript / css
// Vite vanilla project: npm install [email protected]
// src/main.js. Add Source Sans Pro through your approved font-hosting setup.
import 'ids-enterprise-wc';
import './style.css';
document.querySelector('#app').innerHTML=`<ids-container><main>
<h1>Maintenance request</h1><p>Local draft only; no work order is sent.</p>
<ids-input id="asset" label="Asset identifier" value="02006" readonly="true"></ids-input>
<ids-input id="summary" label="Work summary" validate="required" clearable="true"></ids-input>
<ids-input id="contact" label="Contact email" validate="email required"></ids-input>
<ids-button id="prepare" appearance="primary"><span>Prepare local draft</span></ids-button>
<ids-button id="reset" appearance="secondary"><span>Clear draft</span></ids-button>
<p id="message" role="status"></p><pre id="draft"></pre>
</main></ids-container>`;
await Promise.all(['ids-input','ids-button','ids-container'].map(n=>customElements.whenDefined(n)));
const summary=document.querySelector('#summary'),contact=document.querySelector('#contact');
const message=document.querySelector('#message'),draft=document.querySelector('#draft');
document.querySelector('#prepare').addEventListener('click',()=>{
 summary.checkValidation();contact.checkValidation();
 const title=summary.value.trim(),email=contact.value.trim();
 if(!title){message.textContent='Enter a work summary.';summary.focus();return;}
 if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)){message.textContent='Enter a complete contact email.';contact.focus();return;}
 draft.textContent=JSON.stringify({asset:'02006',summary:title,contact:email},null,2);
 message.textContent='Draft prepared in this page only. No request sent.';
});
function clearResult(){draft.textContent='';message.textContent='';}
summary.addEventListener('input',clearResult);contact.addEventListener('input',clearResult);
document.querySelector('#reset').addEventListener('click',()=>{summary.value='';contact.value='';clearResult();summary.focus();});

/* src/style.css — application layout using the loaded IDS token roles */
main{max-width:44rem;margin:auto;padding:var(--ids-space-md);color:var(--ids-color-foreground-default-default)}
ids-input{display:block;margin-bottom:var(--ids-space-sm)}
ids-button{margin-inline-end:var(--ids-space-xs)}
pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--ids-color-accent-neutral-weakest);padding:var(--ids-space-sm)}

Una instrucción para tu proyecto

Instrucción para el agente
Crea un borrador de mantenimiento de Infor IDS con los alias verificados del tema claro y la estructura documentada de entradas y botones. Mantén el identificador del activo como cadena y en modo de solo lectura. Valida los campos editables, borra los resultados obsoletos después de las ediciones y distingue un borrador local de una orden de trabajo enviada. No trates checkValidation() como si devolviera un valor booleano.
05

Fuentes y alcance de sistema de diseño Infor

Guía independiente de OpenDesign. El activo y el flujo de trabajo son ficticios; no se envía nada. El código nativo hace referencia al paquete 1.17.1 comprobado, mientras que los valores de los tokens se identifican como una instantánea independiente y actual del tema core/light.