Skip to content

Instalación

This content is not available in your language yet.

  1. Instala los paquetes:

    Ventana de terminal
    pnpm add @prolibu-suite/cobalt-form-vue @prolibu-suite/cobalt-core @prolibu-suite/cobalt-tokens

    cobalt-form-vue arrastra cobalt-form-core y AJV automáticamente.

  2. Carga los Web Components Cobalt (co-input, co-select, etc.) en el entry de tu app:

    main.js
    import { defineCustomElements } from '@prolibu-suite/cobalt-core/loader';
    defineCustomElements(window);
  3. Configura Vue para reconocer custom elements:

    vite.config.js
    import vue from '@vitejs/plugin-vue';
    export default {
    plugins: [vue({
    template: {
    compilerOptions: { isCustomElement: (tag) => tag.startsWith('co-') }
    }
    })]
    };
  4. Importa los tokens y los estilos del form en tu CSS global:

    @import '@prolibu-suite/cobalt-tokens/css';
    @import '@prolibu-suite/cobalt-tokens/css/dark';
    @import '@prolibu-suite/cobalt-form-vue/dist/style.css';
  5. Úsalo en cualquier componente:

    <script setup>
    import { useForm, CoFormRenderer } from '@prolibu-suite/cobalt-form-vue';
    const form = useForm(() => ({
    schema: {
    modelSchema: {
    email: { type: 'String', required: true, format: 'email' },
    },
    locale: 'es',
    },
    }));
    </script>
    <template>
    <CoFormRenderer :form="form" @submit="(p) => console.log(p.values)" />
    </template>

Vanilla / cualquier framework (Web Component)

Sección titulada «Vanilla / cualquier framework (Web Component)»
  1. Instala el paquete del Web Component:

    Ventana de terminal
    pnpm add @prolibu-suite/cobalt-form @prolibu-suite/cobalt-core @prolibu-suite/cobalt-tokens
  2. Registra <co-form> y los componentes base de Cobalt:

    import { defineCustomElements as defineCoreElements } from '@prolibu-suite/cobalt-core/loader';
    import { defineCustomElements as defineFormElements } from '@prolibu-suite/cobalt-form/loader';
    defineCoreElements(window);
    defineFormElements(window);
  3. Usa el tag en HTML:

    <co-form
    locale="es"
    layout="grid"
    schema='{
    "email": { "type": "String", "required": true, "format": "email" },
    "password": { "type": "String", "required": true, "minLength": 8 }
    }'
    ></co-form>
    <script>
    const form = document.querySelector('co-form');
    form.addEventListener('coSubmit', (e) => {
    console.log('values:', e.detail.values);
    });
    </script>
  1. Instala:

    Ventana de terminal
    pnpm add @prolibu-suite/cobalt-form-core
  2. Crea un controller:

    import { createForm } from '@prolibu-suite/cobalt-form-core';
    const form = createForm({
    schema: { modelSchema: yourSchema, locale: 'es' },
    initialValues: { email: '' },
    });
    form.subscribe((state) => {
    console.log(state.values, state.errors, state.isValid);
    });
    form.setValue('email', 'foo@bar.com');
    await form.submit();
  3. Construye tu UI consumiendo form.state y form.fields.

Para prototipos rápidos o cualquier HTML vanilla, podés cargar <co-form> directamente desde unpkg — sin npm, sin bundler. Copy-paste:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://unpkg.com/@prolibu-suite/cobalt-tokens@0.1.0/build/css/tokens.css">
<script type="module" src="https://unpkg.com/@prolibu-suite/cobalt-core@0.1.0/dist/cobalt/cobalt.esm.js"></script>
<script type="module" src="https://unpkg.com/@prolibu-suite/cobalt-form@0.1.0/dist/cobalt-form/cobalt-form.esm.js"></script>
</head>
<body>
<co-form
locale="es"
layout="grid"
schema='{
"email": { "type": "String", "required": true, "format": "email" },
"password": { "type": "String", "required": true, "minLength": 8 }
}'
></co-form>
<script>
document.querySelector('co-form').addEventListener('coSubmit', (e) => {
console.log('values:', e.detail.values);
});
</script>
</body>
</html>
PaqueteURL unpkg
cobalt-tokens (CSS)https://unpkg.com/@prolibu-suite/cobalt-tokens@0.1.0/build/css/tokens.css
Dark modehttps://unpkg.com/@prolibu-suite/cobalt-tokens@0.1.0/build/css/tokens-dark.css
cobalt-core (Web Components base)https://unpkg.com/@prolibu-suite/cobalt-core@0.1.0/dist/cobalt/cobalt.esm.js
cobalt-form (<co-form>)https://unpkg.com/@prolibu-suite/cobalt-form@0.1.0/dist/cobalt-form/cobalt-form.esm.js
cobalt-form-core (controller framework-agnostic)https://unpkg.com/@prolibu-suite/cobalt-form-core@0.1.0/dist/index.js

5 ejemplos consumiendo <co-form> desde CDN, de menos invasivo a totalmente custom:

Importa el form, renderízalo y abre devtools. Si ves:

  • Los co-input renderizados con label correcto
  • Errores en tiempo real al escribir (rojos debajo del input)
  • En consola, form.values, form.errors, form.isValid actualizándose

…entonces todo está conectado.