Contact Form
FormulariosCore (sin librería)v1.0.0formcontactdeclarativeautosubmitcore
Formulario de contacto IA-First (nombre, email, mensaje) con API declarativa WebMCP y toolautosubmit: un agente puede rellenarlo y enviarlo sin intervención.
npx webmcpcss components import core-contact-form/* Componente: Contact Form */
/* Categoría: forms · Librería: core · Versión: 1.0.0 */
/* Formulario de contacto IA-First (nombre, email, mensaje) con API declarativa WebMCP y toolautosubmit: un agente puede rellenarlo y enviarlo sin intervención. */
/* Importar: npx webmcpcss components import core-contact-form */
.wm-form { display: grid; gap: 14px; width: min(100%, 380px); padding: 24px; background: var(--wm-surface, #fff); border: 1px solid #e5e7eb; border-radius: var(--wm-radius, 14px); box-shadow: 0 10px 30px -18px rgba(17, 24, 39, .35); font-family: system-ui, sans-serif; }
.wm-form__title { margin: 0 0 4px; font-size: 20px; }
.wm-field { display: grid; gap: 6px; }
.wm-field label { font-size: 13px; font-weight: 600; color: #374151; }
.wm-field input, .wm-field textarea { padding: 10px 12px; border: 1px solid #d1d5db; border-radius: calc(var(--wm-radius, 14px) - 6px); font: 15px system-ui, sans-serif; }
.wm-field input:focus-visible, .wm-field textarea:focus-visible { outline: 3px solid color-mix(in srgb, var(--wm-primary, #2563eb) 35%, white); border-color: var(--wm-primary, #2563eb); }
.wm-btn { min-height: 44px; padding: 10px 22px; border: 0; border-radius: calc(var(--wm-radius, 14px) - 4px); font: 600 15px/1 system-ui, sans-serif; cursor: pointer; }
.wm-btn--primary { background: var(--wm-primary, #2563eb); color: var(--wm-on-primary, #fff); }
/* Contrato WebMCP (equivalente al marcado declarativo del HTML: toolname/tooldescription/toolparamtitle) */
form[data-form="contact-form"] button[type="submit"] {
webmcp-tool: "sendMessage";
webmcp-description: "Envía un mensaje de contacto con nombre, correo y texto";
webmcp-param-name: value(form[data-form="contact-form"] [name="name"]);
webmcp-param-email: value(form[data-form="contact-form"] [name="email"]);
webmcp-param-message: value(form[data-form="contact-form"] [name="message"]);
webmcp-trigger: "submit" on form[data-form="contact-form"];
webmcp-intent: "submit";
webmcp-confirmation: "none";
webmcp-permissions: "restricted";
webmcp-autosubmit: "true";
webmcp-doc-name: "Nombre de quien escribe";
webmcp-doc-email: "Correo para responder";
webmcp-doc-message: "Texto del mensaje";
}
<form class="wm-form" data-form="contact-form" toolname="sendMessage" tooldescription="Envía un mensaje de contacto con nombre, correo y texto" toolautosubmit action="#" method="post" novalidate>
<h2 class="wm-form__title">Contacto</h2>
<div class="wm-field"><label for="name">Nombre</label><input id="name" name="name" type="text" required autocomplete="name" toolparamtitle="name" toolparamdescription="Nombre de quien escribe"></div>
<div class="wm-field"><label for="email">Correo electrónico</label><input id="email" name="email" type="email" required autocomplete="email" toolparamtitle="email" toolparamdescription="Correo para responder"></div>
<div class="wm-field"><label for="message">Mensaje</label><textarea id="message" name="message" rows="4" required toolparamtitle="message" toolparamdescription="Texto del mensaje"></textarea></div>
<button class="wm-btn wm-btn--primary" type="submit">Enviar mensaje</button>
</form>
{
"id": "core-contact-form",
"name": "Contact Form",
"category": "forms",
"library": "core",
"version": "1.0.0",
"description": "Formulario de contacto IA-First (nombre, email, mensaje) con API declarativa WebMCP y toolautosubmit: un agente puede rellenarlo y enviarlo sin intervención.",
"author": "WebMCPcss Team",
"tags": [
"form",
"contact",
"declarative",
"autosubmit",
"core"
],
"controls": [
{
"variable": "--wm-primary",
"label": "Color primario",
"type": "color",
"default": "#2563eb"
},
{
"variable": "--wm-on-primary",
"label": "Texto sobre primario",
"type": "color",
"default": "#ffffff"
},
{
"variable": "--wm-radius",
"label": "Radio",
"type": "range",
"default": "10px",
"min": 0,
"max": 24,
"step": 1,
"unit": "px"
},
{
"variable": "--wm-surface",
"label": "Fondo de la superficie",
"type": "color",
"default": "#ffffff"
}
],
"promptExamples": [
"añade un campo de teléfono al formulario de contacto",
"cambia el color del botón Enviar mensaje"
],
"animateExamples": [
"aplica slide-up al formulario de contacto",
"haz que el botón de enviar pulse cuando el formulario sea válido"
],
"related": [
"tailwind-contact-form",
"bootstrap-contact-form",
"mui-contact-form",
"shadcn-contact-form"
],
"preview": "preview.css",
"css": "contact-form.webmcp.css",
"html": "contact-form.html"
}Cómo usarlo
- Importa el componente a tu proyecto (HTML +
.webmcp.css+component.json):npx webmcpcss components import core-contact-form --output ./src/components - O añade solo el contrato a tu
webmcp.cssexistente (bloque delimitado y actualizable):npx webmcpcss components import core-contact-form --merge ./webmcp.css - Publícalo para los agentes: MCP (
webmcpcss mcp --serve --css ./webmcp.css),document.modelContext(webmcpcss standard compile ./webmcp.css --html index.html) o exporta a tu agente favorito (webmcpcss export --agent claude-code).
Herramientas para agentes
| Herramienta | Descripción | Parámetros | Intención | Confirmación | Selector |
|---|---|---|---|---|---|
sendMessage | Envía un mensaje de contacto con nombre, correo y texto | name email message | submit | none | form[data-form="contact-form"] button[type="submit"] |
Ejemplos con la CLI
webmcpcss prompt — lenguaje natural sobre el componente
añade un campo de teléfono al formulario de contactocambia el color del botón Enviar mensaje
webmcpcss animate — animaciones declarativas
aplica slide-up al formulario de contactohaz que el botón de enviar pulse cuando el formulario sea válido