libreria-astro-lefebvre
Version:
Librería de componentes Astro, React y Vue para Lefebvre
57 lines (56 loc) • 5.5 kB
text/typescript
import type { ComponentMetadata } from '../interfaces/types';
export const metadata: ComponentMetadata = {
component_name: 'Contenido_2026_Estocolmo',
category: 'Contenido con listas',
name: 'Wrapper grid responsive que renderiza cards Contenido_2025_Montevideo 2026',
description: 'Contenedor grid responsive (1 columna en móvil, 2 en tablet hasta 400px cada una, 3 en desktop hasta 400px cada una) que itera un listado de ítems y renderiza cada uno como Contenido_2025_Montevideo. No añade cabecera ni botones propios — es un wrapper puro que agrupa cards clicables con imagen, tag, título, descripción y autor',
framework: 'Astro',
priority: 1,
tags: ['contenido', 'card', 'grid', 'wrapper', 'imagen', 'autor'],
fields: [
{
name: 'etiquetaVisible',
type: 'select',
options: ['fecha', 'keywords'],
options_labels: ['Fecha', 'Keywords'],
mandatory: false,
label: 'Etiqueta visible en la card',
help: 'Qué se muestra como badge sobre el título de cada card: la fecha o las keywords. Los datos estructurados (JSON-LD) incluyen ambos siempre, independientemente de esta opción',
example_value: 'fecha'
},
{
name: 'showAutor',
type: 'select',
options: ['false', 'true'],
options_labels: ['No mostrar', 'Mostrar'],
mandatory: false,
label: 'Mostrar autor en la card',
help: 'Si está ACTIVADO, se muestra "Por [autor]" debajo de la descripción de cada card. El nombre del autor se incluye SIEMPRE en los datos estructurados (JSON-LD), con independencia de esta opción. Default: desactivado',
example_value: 'false'
},
{
name: 'items',
type: 'list',
help: 'Listado de cards que se muestran en un grid responsive: 1 columna en móvil, 2 en tablet (máx 400px cada una) y 3 en escritorio (máx 400px cada una). Cada card es clicable y se renderiza con el componente Contenido_2025_Montevideo',
label: 'Listado de items',
mandatory: false,
items: {
type: 'object',
fields: [
{ name: 'title', type: 'text', help: 'Título de la card (h3). Se muestra siempre; si se deja vacío, aparece el h3 vacío', label: 'Título', example_value: 'Automatización de contratos con GenIA-L' },
{ name: 'description', type: 'textArea', help: 'Descripción de la card. Se muestra siempre como párrafo; si se deja vacía, aparece el párrafo vacío', label: 'Descripción', example_value: 'Redacta borradores de contratos en segundos a partir de plantillas personalizables' },
{ name: 'link', type: 'text', help: 'URL de destino al hacer click en la card (toda la card es clicable). Si se deja vacío, apunta a "#" (no navega)', label: 'Url del enlace', example_value: '/genia-l/blog/automatizacion-contratos' },
{ name: 'fecha', type: 'text', help: 'Fecha (badge) que aparece sobre el título cuando "Etiqueta visible" es Fecha. Si se deja vacía, NO se muestra', label: 'Fecha (etiqueta)', example_value: '10 de enero de 2026' },
{ name: 'image', type: 'image', help: 'Imagen de la card (aparece en la parte superior). Se renderiza siempre; si se deja vacía aparece una imagen rota', label: 'Imagen', example_value: 'https://assets.lefebvre.es/media/img/preview-comp/comp-16-9.png' },
{ name: 'altImage', type: 'text', help: 'Texto alternativo de la imagen para accesibilidad', label: 'Alt de la imagen', example_value: 'Captura de la interfaz de GenIA-L generando un contrato automáticamente' },
{ name: 'author', type: 'text', help: 'Nombre del autor del contenido. Se incluye SIEMPRE en los datos estructurados (JSON-LD author). Solo se muestra visualmente como "Por [nombre]" si "Mostrar autor en la card" está activado. Si se deja vacío, no se emite autoría', label: 'Nombre del autor', example_value: 'María García López' },
{ name: 'authorUrl', type: 'text', help: 'Url a la ficha del autor del contenido. Se incluye SIEMPRE en los datos estructurados (JSON-LD author). Si se deja vacío, no se emite autoría', label: 'Url del autor', example_value: 'https://lefebvre.es/genia-l/blog/autor/maria-garcia-lopez/' },
{ name: 'authorType', type: 'select', options: ['Person', 'Organization'], options_labels: ['Persona', 'Organización'], help: 'Tipo schema.org del autor en el JSON-LD. Usar "Organización" cuando el autor sea la propia entidad (p. ej. "Lefebvre"); en el resto de casos, "Persona". Default: Persona', label: 'Tipo de autor (SEO)', example_value: 'Person' },
{ name: 'datePublished', type: 'text', help: 'Fecha de publicación en formato ISO 8601 para los datos estructurados (JSON-LD datePublished). No se muestra visualmente. Ej: 2026-01-10T00:00:00.000Z', label: 'Fecha publicación (ISO)', example_value: '2026-01-10T00:00:00.000Z' },
{ name: 'dateModified', type: 'text', help: 'Fecha de última modificación en formato ISO 8601 para los datos estructurados (JSON-LD dateModified). No se muestra visualmente. Si se deja vacía, no se emite. Ej: 2026-02-15T00:00:00.000Z', label: 'Fecha modificación (ISO)', example_value: '2026-02-15T00:00:00.000Z' },
{ name: 'keywords', type: 'text', help: 'Palabras clave reales para los datos estructurados (JSON-LD keywords), separadas por comas. Se muestran como badge si "Etiqueta visible" es Keywords', label: 'Keywords (SEO)', example_value: 'Legaltech, Contratos, IA' }
]
}
}
]
};