Estructura

Shell

El armazón en el que vive una página entera: una barra superior fija con la marca, un panel lateral con la navegación, una columna de contenido y un pie. Es lo único que no cambia al navegar.

Uso

<vadavo-shell name="…"> genera la marca de la barra —logotipo y nombre, con su highlight— a partir del atributo name. El resto son huecos: search (un buscador), actions, sidebar para la navegación, el hueco por defecto para el contenido y footer.

El menú de pantallas estrechas es del propio shell, que genera el panel que abre y cierra.

La columna de lectura expone --shell--size--reading-width y --shell--padding--reading, así que su ancho se redefine desde fuera sin tocar el shadow root.

El shell ocupa el viewport de borde a borde

El shell no tiene radio, ni borde, ni sombra propia. El recuadro que envuelve los ejemplos de abajo es el marco de figura de esta documentación.

Piezas

Configuración de aplicación

La barra lleva los avisos y la cuenta de quien ha entrado, porque hay una sesión detrás, y el índice apunta a los datos de ese cliente. El buscador lleva el atajo Ctrl+K / ⌘K.

Hosting WordPress

Plan de 25 GB con copias de seguridad diarias y certificado SSL incluido.

Estado
Activo
Próximo cargo
11,40 €
Uso

<style>
    /* De esta página, no del sistema: el shell coloca lo que va en sus
       huecos y la aplicación decide qué aspecto tiene. */
    vadavo-shell .account {
        display: inline-flex;
        align-items: center;
        height: var(--control--height--compact);
        gap: 0.5625rem;
        padding: 0 0.8125rem 0 0.3125rem;
        font-size: 0.875rem;
        white-space: nowrap;
        color: var(--text--color--ui);
        border: var(--border--width--line) var(--border--style--line) var(--border--color--rest);
        border-radius: var(--control--radius--pill);
    }

    vadavo-shell .account > vadavo-avatar {
        --avatar--size--box: 1.75rem;
        --avatar--font-size--initials: 0.6875rem;

        flex: none;
    }

    vadavo-shell .dot {
        position: absolute;
        top: 0.4375rem;
        right: 0.5rem;
        width: 0.5rem;
        height: 0.5rem;
        border: 1.5px solid var(--control--background--rest);
        border-radius: var(--indicator--radius--dot);
        background: var(--state--color--error);
    }

    vadavo-shell .description {
        max-width: 56ch;
        margin: 0.625rem 0 1.375rem;
    }

    vadavo-shell .statistics {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
        gap: 0.875rem;
    }

    vadavo-shell .statistic {
        padding: 1rem 1.125rem;
        border: var(--surface--border-width--container) var(--surface--border-style--container) var(--surface--border--container);
        border-radius: 0.875rem;
        background: var(--surface--color--container);
    }

    vadavo-shell .statistic > .label {
        margin-bottom: 0.375rem;
        font-size: var(--text--font-size--eyebrow);
        letter-spacing: var(--text--letter-spacing--eyebrow);
        text-transform: uppercase;
        color: var(--text--color--meta);
    }

    vadavo-shell .statistic > .value {
        font-family: var(--text--font-family--display);
        font-weight: var(--text--font-weight--display);
        font-size: 1.25rem;
        font-variant-numeric: tabular-nums;
        color: var(--text--color--display);
    }
</style>
<vadavo-shell name="Área de clientes">
    <vadavo-search slot="search" compact placeholder="Busca un servicio, dominio o factura…" shortcut="Ctrl+K / Cmd+K"></vadavo-search>
    <vadavo-tooltip slot="actions" placement="below end" text="3 avisos sin leer">
        <button class="button tertiary icon compact">
            <vadavo-icon name="bell"></vadavo-icon>
            <span class="dot"></span>
        </button>
    </vadavo-tooltip>
    <span slot="actions" class="account">
        <vadavo-avatar initials="CM"></vadavo-avatar>
        Christian M.
    </span>
    <nav slot="sidebar">
        <ul class="top-links">
            <li><a href="javascript:void(0)">Resumen</a></li>
        </ul>
        <section class="section">
            <span class="section-label">Contratado</span>
            <details class="group" open>
                <summary>
                    <vadavo-icon class="chevron" name="chevron"></vadavo-icon>
                    <span class="label">Servicios</span>
                    <span class="count">2</span>
                </summary>
                <ul>
                    <li><a href="javascript:void(0)" class="current">Hosting WordPress</a></li>
                    <li><a href="javascript:void(0)">Dominios</a></li>
                </ul>
            </details>
        </section>
    </nav>
    <nav>
        <vadavo-breadcrumb>
            <li><a href="javascript:void(0)">Inicio</a></li>
            <li><a href="javascript:void(0)">Servicios</a></li>
            <li><span class="current">Hosting WordPress</span></li>
        </vadavo-breadcrumb>
    </nav>
    <h1>Hosting WordPress</h1>
    <p class="description">Plan de 25 GB con copias de seguridad diarias y certificado SSL incluido.</p>
    <div class="statistics">
        <div class="statistic">
            <div class="label">Estado</div>
            <span class="badge success">Activo</span>
        </div>
        <div class="statistic">
            <div class="label">Próximo cargo</div>
            <div class="value">11,40 €</div>
        </div>
        <div class="statistic">
            <div class="label">Uso</div>
            <progress class="progress" value="64" max="100"></progress>
        </div>
    </div>
</vadavo-shell>

Configuración de documentación

La barra lleva marca y buscador, y nada más. El índice apunta a páginas que se leen, y el buscador entra en el contenido de cada una: cada sugerencia trae como subtítulo el fragmento donde aparece lo buscado.

Esta documentación

Este sitio usa esta configuración.

Contenedores

Modal

Una ventana centrada sobre un fondo oscurecido, para confirmaciones que requieren toda la atención.


<style>
    /* De esta página, no del sistema: el shell dibuja la franja del pie y
       el sitio reparte lo que pone dentro. */
    vadavo-shell .under-line {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
        width: 100%;
        font-size: var(--text--font-size--caption);
    }

    vadavo-shell .under-line > ul {
        display: flex;
        flex-wrap: wrap;
        gap: 1rem;
        margin: 0;
        padding: 0;
        list-style: none;
    }

    vadavo-shell .under-line a {
        color: var(--text--color--navigation);
    }

    vadavo-shell .under-line a:hover {
        color: var(--text--color--link-hover);
    }

    vadavo-shell .company-name {
        color: var(--text--color--meta);
    }
</style>
<vadavo-shell name="Diseño">
    <vadavo-search slot="search" compact placeholder="Busca en la documentación…"></vadavo-search>
    <aside slot="sidebar">
        <ul class="top-links">
            <li><a href="javascript:void(0)">Introducción</a></li>
        </ul>
        <section class="section">
            <span class="section-label">Catálogo</span>
            <details class="group" open>
                <summary>
                    <vadavo-icon class="chevron" name="chevron"></vadavo-icon>
                    <span class="label">Contenedores</span>
                    <span class="count">5</span>
                </summary>
                <ul>
                    <li><a href="javascript:void(0)">Tarjetas</a></li>
                    <li><a href="javascript:void(0)" class="current">Modal</a></li>
                </ul>
            </details>
        </section>
    </aside>
    <span class="eyebrow">Contenedores</span>
    <h1>Modal</h1>
    <p>Una ventana centrada sobre un fondo oscurecido, para confirmaciones que requieren toda la atención.</p>
    <vadavo-card heading="Ejemplo interactivo">
        <button class="button secondary">Eliminar dominio</button>
    </vadavo-card>
    <footer slot="footer" class="spotlight">
        <div class="under-line">
            <div class="company-name">© 2026 VADAVO · Todos los derechos reservados.</div>
            <ul>
                <li><a href="javascript:void(0)">Aviso legal</a></li>
                <li><a href="javascript:void(0)">Política de privacidad</a></li>
            </ul>
        </div>
    </footer>
</vadavo-shell>

Tokens semánticos

TokenQué es
--shell--height--topbarEl alto de la barra superior. La posición y el alto de la barra lateral se calculan a partir de él.
--shell--shadow--sidebar-drawerLa sombra de la barra lateral cuando se abre sobre el contenido en pantallas estrechas.
--shell--color--menu-toggleEl color del botón que abre el menú en pantallas estrechas.
--shell--size--reading-widthEl ancho máximo de la columna de lectura.
--shell--padding--readingEl relleno interior (padding) de la columna de lectura.