libreria-astro-lefebvre 0.0.178 → 0.0.179

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/package.json +1 -1
  2. package/src/carbins/AstroButton.ts +1 -1
  3. package/src/carbins/Author_2025_Algarve.ts +1 -1
  4. package/src/carbins/CTA_2025_Formentera.ts +1 -1
  5. package/src/carbins/Cabecera_2025_Barcelona.ts +1 -1
  6. package/src/carbins/Cabecera_2025_Madrid.ts +1 -1
  7. package/src/carbins/Cabecera_2026_Bilbao.ts +1 -1
  8. package/src/carbins/Cabecera_2026_Madrid.ts +1 -1
  9. package/src/carbins/Card_2025_Malta.ts +27 -27
  10. package/src/carbins/Contenido_2025_Alcorcon.ts +1 -1
  11. package/src/carbins/Contenido_2025_Cordoba.ts +1 -1
  12. package/src/carbins/Contenido_2025_Granada.ts +1 -1
  13. package/src/carbins/Contenido_2025_Malaga.ts +1 -1
  14. package/src/carbins/Contenido_2025_Montevideo.ts +1 -1
  15. package/src/carbins/Contenido_2026_Cabra.ts +2 -2
  16. package/src/carbins/Contenido_2026_Dubai.ts +1 -1
  17. package/src/carbins/Contenido_2026_Estocolmo.ts +1 -1
  18. package/src/carbins/Contenido_2026_Jaen.ts +1 -1
  19. package/src/carbins/Contenido_2026_Leon.ts +1 -1
  20. package/src/carbins/Contenido_2026_Mallorca.ts +1 -1
  21. package/src/carbins/Contenido_2026_Marruecos.ts +52 -52
  22. package/src/carbins/Contenido_2026_Menorca.ts +112 -112
  23. package/src/carbins/Contenido_2026_Michigan.ts +1 -1
  24. package/src/carbins/Contenido_2026_Mostoles.ts +130 -130
  25. package/src/carbins/Contenido_2026_Orcasitas.ts +1 -1
  26. package/src/carbins/Contenido_2026_Oslo.ts +1 -1
  27. package/src/carbins/Contenido_2026_Quito.ts +1 -1
  28. package/src/carbins/Contenido_2026_Seattle.ts +1 -1
  29. package/src/carbins/Contenido_2026_Sevilla.ts +169 -169
  30. package/src/carbins/Contenido_2026_Tokyo.ts +1 -1
  31. package/src/carbins/Contenido_2026_Ubeda.ts +1 -1
  32. package/src/carbins/Contenido_2026_Yakarta.ts +1 -1
  33. package/src/carbins/CorpHero.ts +1 -1
  34. package/src/carbins/Enlace_2025_Venecia.ts +48 -48
  35. package/src/carbins/FAQ_2025_Hiroshima.ts +35 -35
  36. package/src/carbins/Formulario_2026_Wichita.ts +3 -3
  37. package/src/carbins/HeaderCorporativo.ts +1 -1
  38. package/src/carbins/Hero_2025_Benidorm.ts +108 -108
  39. package/src/carbins/Hero_2026_Benidorm.ts +108 -108
  40. package/src/carbins/Indice_2025_Taiwan.ts +35 -35
  41. package/src/carbins/Paginacion_2025_Paris.ts +71 -71
  42. package/src/carbins/ReactButton.ts +1 -1
  43. package/src/carbins/Share_2025_Florencia.ts +99 -99
  44. package/src/carbins/Sumario_2025_Beijing.ts +40 -40
  45. package/src/carbins/Tabla_2025_Fuenlabrada.ts +67 -67
  46. package/src/carbins/Tag_2025_Bolonia.ts +24 -24
  47. package/src/carbins/TestPadre.ts +21 -21
  48. package/src/carbins/TextBox.ts +1 -1
  49. package/src/carbins/TextImageBackground.ts +50 -50
  50. package/src/carbins/TextImageBlock.ts +65 -65
  51. package/src/carbins/TextImageCard.ts +47 -47
  52. package/src/carbins/TextImageHeader.ts +73 -73
  53. package/src/carbins/Texto_2025_Kyoto.ts +1 -1
  54. package/src/carbins/Tiempo_2025_Londres.ts +1 -1
  55. package/src/carbins/VideoAutoplay.ts +38 -38
  56. package/src/carbins/Video_2025_Polop.ts +1 -1
  57. package/src/carbins/Video_2025_Valencia.ts +1 -1
  58. package/src/carbins/VueButton.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libreria-astro-lefebvre",
3
- "version": "0.0.178",
3
+ "version": "0.0.179",
4
4
  "description": "Librería de componentes Astro, React y Vue para Lefebvre",
5
5
  "author": "Equipo web desarrollo Lefebvre",
6
6
  "type": "module",
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Button',
5
- category: 'Call to Action',
5
+ category: 'CTA',
6
6
  name: 'Botón en Astro',
7
7
  description: 'Botón de prueba en Astro',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Author_2025_Algarve',
5
- category: 'Contenido',
5
+ category: 'Contenido de Imagen',
6
6
  name: 'Ficha de autor con imagen y tiempo de lectura 2025',
7
7
  description: 'Ficha compacta de autor para cabeceras de artículo: imagen a la izquierda (con border-radius configurable), nombre subrayado y profesión a la derecha, y bloque opcional de "tiempo de lectura" al final. Incluye structured data schema.org. Para la corporativa de Lefebvre',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'CTA_2025_Formentera',
5
- category: 'Call to Action',
5
+ category: 'CTA',
6
6
  name: 'Botón CTA con colores de texto y fondo intercambiables en hover 2025',
7
7
  description: 'Botón Call To Action cuyo color de texto y color de fondo se intercambian automáticamente al hacer hover (p. ej. blanco sobre azul → azul sobre blanco). Acepta nombres CSS o códigos hex para los tres colores (texto, fondo, borde). El borde NO cambia en hover. El botón se ajusta al ancho de su contenido (w-fit)',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Cabecera_2025_Barcelona',
5
- category: 'Cabecera',
5
+ category: 'Header',
6
6
  name: 'Breadcrumb 2025',
7
7
  description: 'Breadcrumb de 2 niveles con icono de home y enlace apuntando al subdirectorio raíz, seguido del título de la página actual. Incluye structured data schema.org (BreadcrumbList) con URLs absolutas para SEO.',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Cabecera_2025_Madrid',
5
- category: 'Cabecera',
5
+ category: 'Header',
6
6
  name: 'Cabecera sticky con menú horizontal, CTA y submenús 2025',
7
7
  description: 'Cabecera fija (sticky top-0) con logo de Lefebvre a la izquierda, botón CTA configurable a la derecha y barra de navegación horizontal debajo con 5 categorías (una de ellas con dropdown de subcategorías al hacer hover). En móvil, el menú se oculta y se activa con un botón hamburguesa. Incluye structured data schema.org (WebSite + SiteNavigationElement)',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Cabecera_2026_Bilbao',
5
- category: 'Cabecera',
5
+ category: 'Header',
6
6
  name: 'Cabecera con logo Lefebvre 2026',
7
7
  description: 'Cabecera minimalista solo con el logo de Lefebvre, alineado a la izquierda o al centro',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Cabecera_2026_Madrid',
5
- category: 'Cabecera',
5
+ category: 'Header',
6
6
  name: 'Cabecera sticky con menú configurable y subcategorías 2026',
7
7
  description: 'Cabecera fija (sticky top-0) con logo de Lefebvre, botón CTA y menú horizontal completamente configurable vía prop "categories". Cada ítem admite target (_self o _blank) y una lista opcional de subcategorías en dropdown al hacer hover. Si no se pasa menú custom, cae en un menú por defecto. Incluye hamburguesa en móvil y structured data schema.org (WebSite + SiteNavigationElement)',
8
8
  framework: 'Astro',
@@ -1,27 +1,27 @@
1
- import type { ComponentMetadata } from '../interfaces/types';
2
-
3
- export const metadata: ComponentMetadata = {
4
- component_name: 'Card_2025_Malta',
5
- category: 'Contenido',
6
- name: 'Grid responsive de cards minimalistas solo-título 2025',
7
- description: 'Grid responsive (1 columna en móvil, 2 en tablet, 4 en desktop) de cards minimalistas que contienen únicamente un título h3 centrado, sin imagen ni descripción. Toda la card es clicable (navega al URL indicado) y muestra un borde degradado corporativo (indigo → azul → rosa) al hacer hover',
8
- framework: 'Astro',
9
- priority: 1,
10
- tags: ['contenido', 'card', 'grid', 'clicable', 'minimalista'],
11
- fields: [
12
- {
13
- name: 'items',
14
- type: 'list',
15
- help: 'Listado de cards que se muestran en un grid responsive: 1 columna en móvil, 2 en tablet (sm) y 4 en escritorio (lg)',
16
- label: 'Listado de cards',
17
- mandatory: false,
18
- items: {
19
- type: 'object',
20
- fields: [
21
- { name: 'title', type: 'text', help: 'Texto visible de la card. Es el único contenido que se muestra (no hay imagen ni descripción en este componente)', label: 'Texto del título', example_value: 'Guía de contratos digitales' },
22
- { name: 'link', type: 'text', help: 'URL de destino cuando se hace click en la card. Si se deja vacío, la card apunta a "#" (no navega a ningún sitio pero conserva el estilo clicable)', label: 'URL de enlace', example_value: '/genia-l/guia-contratos-digitales' }
23
- ]
24
- }
25
- }
26
- ]
27
- };
1
+ import type { ComponentMetadata } from '../interfaces/types';
2
+
3
+ export const metadata: ComponentMetadata = {
4
+ component_name: 'Card_2025_Malta',
5
+ category: 'Contenido con listas',
6
+ name: 'Grid responsive de cards minimalistas solo-título 2025',
7
+ description: 'Grid responsive (1 columna en móvil, 2 en tablet, 4 en desktop) de cards minimalistas que contienen únicamente un título h3 centrado, sin imagen ni descripción. Toda la card es clicable (navega al URL indicado) y muestra un borde degradado corporativo (indigo → azul → rosa) al hacer hover',
8
+ framework: 'Astro',
9
+ priority: 1,
10
+ tags: ['contenido', 'card', 'grid', 'clicable', 'minimalista'],
11
+ fields: [
12
+ {
13
+ name: 'items',
14
+ type: 'list',
15
+ help: 'Listado de cards que se muestran en un grid responsive: 1 columna en móvil, 2 en tablet (sm) y 4 en escritorio (lg)',
16
+ label: 'Listado de cards',
17
+ mandatory: false,
18
+ items: {
19
+ type: 'object',
20
+ fields: [
21
+ { name: 'title', type: 'text', help: 'Texto visible de la card. Es el único contenido que se muestra (no hay imagen ni descripción en este componente)', label: 'Texto del título', example_value: 'Guía de contratos digitales' },
22
+ { name: 'link', type: 'text', help: 'URL de destino cuando se hace click en la card. Si se deja vacío, la card apunta a "#" (no navega a ningún sitio pero conserva el estilo clicable)', label: 'URL de enlace', example_value: '/genia-l/guia-contratos-digitales' }
23
+ ]
24
+ }
25
+ }
26
+ ]
27
+ };
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2025_Alcorcon',
5
- category: 'Contenido',
5
+ category: 'Contenido de Imagen',
6
6
  name: 'Hero promocional con media de fondo y overlay de 4 niveles 2025',
7
7
  description: 'Sección hero con esquinas redondeadas (rounded-2xl) que muestra una imagen o un vídeo MP4 como fondo y superpone un overlay centrado con cuatro niveles de texto: título h2 de tamaño grande responsive (hasta 64px en desktop), subtítulo, descripción HTML y botón CTA opcional. El vídeo se reproduce con autoplay, loop y muted. Media mutuamente excluyente: si se rellena el vídeo, la imagen se ignora',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2025_Cordoba',
5
- category: 'Contenido',
5
+ category: 'Contenido de Texto',
6
6
  name: 'Ítem con icono grande de certificación y título configurable 2025',
7
7
  description: 'Ítem para destacar una certificación, acreditación o hito con un icono grande (5 variantes predefinidas: IA, ISO1, ISO2, GDPR, ISO3), título con etiqueta HTML seleccionable entre h1-h6/span (cada opción con tamaño y alineación distintos) y descripción centrada. Layout flex configurable: horizontal (icono al lado) o vertical (icono encima), con control de alineación vertical entre icono y texto',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2025_Granada',
5
- category: 'Contenido',
5
+ category: 'Contenido de Texto',
6
6
  name: 'Ítem con icono pequeño en recuadro gris y ancho configurable 2025',
7
7
  description: 'Ítem compacto para listados categorizados con un icono pequeño sobre fondo gris claro (23 variantes predefinidas: más, tienda, correcto, formación, caso, medalla, IA, balanza, compliance, librería, etc.), título con etiqueta HTML seleccionable (h1-h6/span) y descripción con soporte HTML. Layout flex configurable con control extra de ancho del bloque en orientación vertical (1/4 o 1/3 de columna)',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2025_Malaga',
5
- category: 'Contenido',
5
+ category: 'Contenido de Imagen',
6
6
  name: 'Sección hiper-configurable con texto, imagen lateral, botón y modal LF2 2025',
7
7
  description: 'Sección de contenido altamente configurable con más de 20 campos: título pequeño tipo badge, subtítulo h2 con tamaño conmutable (56px/46px/40px), descripción HTML, imagen lateral opcional (posicionable a izquierda o derecha), botón primario y botón secundario que abre un modal con formulario LF2 inyectado dinámicamente. Ofrece controles finos de alineación vertical, tamaño de fuente del texto, padding horizontal, ancho del contenedor (full/3-5/7xl) y variantes de orientación icono-texto',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2025_Montevideo',
5
- category: 'Contenido',
5
+ category: 'Contenido de Imagen',
6
6
  name: 'Card clicable con imagen, tag, título, descripción y autor 2025',
7
7
  description: 'Card individual totalmente clicable (la card entera es un enlace, no solo un botón) con imagen superior, etiqueta tipo badge opcional, título h3, descripción y línea de autor opcional. Muestra un borde degradado corporativo (indigo → azul → rosa) al hacer hover. Diseñada para usarse como unidad base dentro de grids como Contenido_2026_Estocolmo o Contenido_2026_Seattle',
8
8
  framework: 'Astro',
@@ -2,12 +2,12 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Cabra',
5
- category: 'Contenido',
5
+ category: 'Contenido con listas',
6
6
  name: 'Sección de tabs interactivas con contenido y miniatura lateral 2026',
7
7
  description: 'Sección con pestañas horizontales en la parte superior que, al hacerse click, muestran un panel con título grande, listado de ítems (icono + texto) a la izquierda e imagen a la derecha. Incluye script inline que gestiona la conmutación entre pestañas y resalta la activa. La pestaña marcada como "default" es la que se muestra al cargar la página. Incluye structured data schema.org (ItemList + InteractionCounter)',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
- tags: ['contenido', 'genial'],
10
+ tags: ['contenido'],
11
11
  fields: [
12
12
  {
13
13
  name: 'items',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Dubai',
5
- category: 'Contenido',
5
+ category: 'Contenido con listas',
6
6
  name: 'Bloque intro con título, descripción, CTA y carrusel mixto vídeo/imagen 2026',
7
7
  description: 'Bloque compuesto de cabecera (título h2, descripción HTML, botón CTA opcional) seguida de un carrusel horizontal que mezcla ítems de vídeo (iframe con thumbnail antes de reproducir) e ítems de imagen en el mismo listado. Los ítems de vídeo incluyen testimonio + autor + cargo y structured data SEO (VideoObject). Los ítems de imagen exponen alt y descripción para el structured data',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Estocolmo',
5
- category: 'Contenido',
5
+ category: 'Contenido con listas',
6
6
  name: 'Wrapper grid responsive que renderiza cards Contenido_2025_Montevideo 2026',
7
7
  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',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Jaen',
5
- category: 'Contenido',
5
+ category: 'Contenido de Imagen',
6
6
  name: 'Cabecera enriquecida de post con autor, colegiado, imagen lateral y RRSS 2026',
7
7
  description: 'Cabecera de artículo de blog con título configurable mediante 8 variantes de estilo preestablecidas (H1 categoría blog, H1 autor blog, H1 post blog, H1 post enriquecido, H2 blog, H2, H3, H4), subtítulo, número de colegiado del autor, descripción con tipografía conmutable (Poppins grande o Inter compacto), imagen lateral opcional con posición configurable (izquierda o derecha) y bloque de redes sociales al final con iconos que solo aparecen si su URL está rellena',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Leon',
5
- category: 'Contenido',
5
+ category: 'Contenido de Texto',
6
6
  name: 'Contenido de prueba Paco 2026',
7
7
  description: 'Componente de prueba que renderiza un saludo simple "Hola, soy [nombre]". Uso interno / testing',
8
8
  framework: 'Astro',
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Mallorca',
5
- category: 'Contenido',
5
+ category: 'Contenido con listas',
6
6
  name: 'Wrapper de ítems con icono grande de certificación y botón CTA 2026',
7
7
  description: 'Contenedor que itera un listado de bloques tipo certificación/hito: cada ítem combina un icono grande (5 variantes: IA, ISO1, ISO2, GDPR, ISO3) con título de etiqueta HTML configurable y descripción. Ofrece controles de alineación vertical, orientación icono-texto intra-ítem y entre ítems (fila/columna), más un botón CTA opcional al final. Cada ítem se renderiza con Contenido_2025_Cordoba',
8
8
  framework: 'Astro',
@@ -1,52 +1,52 @@
1
- import type { ComponentMetadata } from '../interfaces/types';
2
-
3
- export const metadata: ComponentMetadata = {
4
- component_name: 'Contenido_2026_Marruecos',
5
- category: 'Contenido',
6
- name: 'Caja con borde degradado, ítems con icono SVG y CTA siempre visible 2026',
7
- description: 'Caja rectangular con borde degradado corporativo que contiene título h2, listado de ítems apilados verticalmente (cada uno con icono SVG de 3 variantes fijas — chat, libro o check — subtítulo h3 y descripción) y un botón CTA en la esquina inferior. IMPORTANTE: el botón se renderiza SIEMPRE (no hay toggle para ocultarlo); si el texto está vacío aparece un botón sin label',
8
- framework: 'Astro',
9
- priority: 1,
10
- tags: ['contenido', 'icono', 'card', 'cta', 'boton', 'gradiente'],
11
- fields: [
12
- {
13
- name: 'title',
14
- type: 'text',
15
- help: 'Título principal del bloque (h2) que aparece en la parte superior de la caja. Se renderiza siempre; si se deja vacío, aparece el h2 vacío. No admite HTML',
16
- label: 'Título',
17
- mandatory: false,
18
- example_value: 'Ventajas de GenIA-L para tu despacho'
19
- },
20
- {
21
- name: 'buttonText',
22
- type: 'text',
23
- help: 'Texto del botón CTA en la esquina inferior. ATENCIÓN: este componente NO tiene prop "Mostrar botón" — el botón aparece SIEMPRE. Si se deja vacío, aparecerá un botón sin texto',
24
- label: 'Texto del botón',
25
- mandatory: false,
26
- example_value: 'Solicitar demo'
27
- },
28
- {
29
- name: 'buttonHref',
30
- type: 'text',
31
- help: 'URL de destino del botón CTA. Por defecto "#". Recuerda que el botón se renderiza siempre; si dejas esta URL vacía, apuntará a "#" (no navegará)',
32
- label: 'Enlace del botón',
33
- mandatory: false,
34
- example_value: '/genia-l/demo'
35
- },
36
- {
37
- name: 'items',
38
- type: 'list',
39
- help: 'Listado de items de la caja. Cada item tiene un icono (de 3 opciones fijas), un subtítulo y una descripción. Los items se apilan verticalmente con un gap',
40
- label: 'Listado de items',
41
- mandatory: false,
42
- items: {
43
- type: 'object',
44
- fields: [
45
- { name: 'icon', type: 'select', help: 'Icono del item (SVG con gradiente de color). Solo se reconocen 3 valores: "chat" (burbuja de chat), "book" (libro) y "check" (marca de verificación). Si se elige cualquier otro valor, no aparece ningún icono y el hueco queda vacío', label: 'Icono', options: ['chat', 'book', 'check'], options_labels: ['Chat', 'Libro', 'Check'], example_value: 'chat' },
46
- { name: 'subtitle', type: 'text', help: 'Subtítulo del item (h3). Se renderiza siempre; si se deja vacío, aparece el h3 vacío. No admite HTML', label: 'Subtítulo', example_value: 'Asistente conversacional' },
47
- { name: 'description', type: 'textArea', help: 'Descripción del item. Se renderiza siempre como párrafo; si se deja vacía, aparece el párrafo vacío. No admite HTML', label: 'Descripción', example_value: 'Consulta jurisprudencia y doctrina en lenguaje natural, sin necesidad de construir queries complejas' }
48
- ]
49
- }
50
- }
51
- ]
52
- };
1
+ import type { ComponentMetadata } from '../interfaces/types';
2
+
3
+ export const metadata: ComponentMetadata = {
4
+ component_name: 'Contenido_2026_Marruecos',
5
+ category: 'Contenido con listas',
6
+ name: 'Caja con borde degradado, ítems con icono SVG y CTA siempre visible 2026',
7
+ description: 'Caja rectangular con borde degradado corporativo que contiene título h2, listado de ítems apilados verticalmente (cada uno con icono SVG de 3 variantes fijas — chat, libro o check — subtítulo h3 y descripción) y un botón CTA en la esquina inferior. IMPORTANTE: el botón se renderiza SIEMPRE (no hay toggle para ocultarlo); si el texto está vacío aparece un botón sin label',
8
+ framework: 'Astro',
9
+ priority: 1,
10
+ tags: ['contenido', 'icono', 'card', 'cta', 'boton', 'gradiente'],
11
+ fields: [
12
+ {
13
+ name: 'title',
14
+ type: 'text',
15
+ help: 'Título principal del bloque (h2) que aparece en la parte superior de la caja. Se renderiza siempre; si se deja vacío, aparece el h2 vacío. No admite HTML',
16
+ label: 'Título',
17
+ mandatory: false,
18
+ example_value: 'Ventajas de GenIA-L para tu despacho'
19
+ },
20
+ {
21
+ name: 'buttonText',
22
+ type: 'text',
23
+ help: 'Texto del botón CTA en la esquina inferior. ATENCIÓN: este componente NO tiene prop "Mostrar botón" — el botón aparece SIEMPRE. Si se deja vacío, aparecerá un botón sin texto',
24
+ label: 'Texto del botón',
25
+ mandatory: false,
26
+ example_value: 'Solicitar demo'
27
+ },
28
+ {
29
+ name: 'buttonHref',
30
+ type: 'text',
31
+ help: 'URL de destino del botón CTA. Por defecto "#". Recuerda que el botón se renderiza siempre; si dejas esta URL vacía, apuntará a "#" (no navegará)',
32
+ label: 'Enlace del botón',
33
+ mandatory: false,
34
+ example_value: '/genia-l/demo'
35
+ },
36
+ {
37
+ name: 'items',
38
+ type: 'list',
39
+ help: 'Listado de items de la caja. Cada item tiene un icono (de 3 opciones fijas), un subtítulo y una descripción. Los items se apilan verticalmente con un gap',
40
+ label: 'Listado de items',
41
+ mandatory: false,
42
+ items: {
43
+ type: 'object',
44
+ fields: [
45
+ { name: 'icon', type: 'select', help: 'Icono del item (SVG con gradiente de color). Solo se reconocen 3 valores: "chat" (burbuja de chat), "book" (libro) y "check" (marca de verificación). Si se elige cualquier otro valor, no aparece ningún icono y el hueco queda vacío', label: 'Icono', options: ['chat', 'book', 'check'], options_labels: ['Chat', 'Libro', 'Check'], example_value: 'chat' },
46
+ { name: 'subtitle', type: 'text', help: 'Subtítulo del item (h3). Se renderiza siempre; si se deja vacío, aparece el h3 vacío. No admite HTML', label: 'Subtítulo', example_value: 'Asistente conversacional' },
47
+ { name: 'description', type: 'textArea', help: 'Descripción del item. Se renderiza siempre como párrafo; si se deja vacía, aparece el párrafo vacío. No admite HTML', label: 'Descripción', example_value: 'Consulta jurisprudencia y doctrina en lenguaje natural, sin necesidad de construir queries complejas' }
48
+ ]
49
+ }
50
+ }
51
+ ]
52
+ };
@@ -1,112 +1,112 @@
1
- import type { ComponentMetadata } from '../interfaces/types';
2
-
3
- export const metadata: ComponentMetadata = {
4
- component_name: 'Contenido_2026_Menorca',
5
- category: 'Contenido',
6
- name: 'Wrapper de ítems con icono pequeño en recuadro gris y botón CTA 2026',
7
- description: 'Contenedor que itera bloques de contenido con icono pequeño sobre fondo gris claro (23 variantes predefinidas: más, tienda, correcto, formación, caso, medalla, IA, balanza, compliance, librería, etc.), título con etiqueta HTML configurable y descripción HTML. Permite controlar orientación intra-ítem y entre ítems, ancho por ítem (1/4 o 1/3 en vertical) y añadir un botón CTA opcional al final. Cada ítem se renderiza con Contenido_2025_Granada',
8
- framework: 'Astro',
9
- priority: 1,
10
- tags: ['contenido', 'icono', 'wrapper', 'cta', 'boton', 'item'],
11
- fields: [
12
-
13
- {
14
- name: 'positionFlex',
15
- type: 'select',
16
- help: 'Alineación vertical del contenedor principal. "Centrado" centra verticalmente los items; "Principio" los alinea arriba',
17
- label: 'Posición del item',
18
- options: ['items-start', 'items-center'],
19
- options_labels: ['Principio', 'Centrado'],
20
- example_value: 'items-start'
21
- },
22
- {
23
- name: 'positionBtnFlex',
24
- type: 'select',
25
- help: 'Alineación horizontal del botón CTA inferior. "Centrado" sitúa el botón en el centro; "Principio" lo alinea a la izquierda. Solo aplica si "Mostrar botón" está activado',
26
- label: 'Posición del botón',
27
- options: ['justify-center', 'justify-start'],
28
- options_labels: ['Centrado', 'Principio'],
29
- example_value: 'justify-center'
30
- },
31
- {
32
- name: 'flexOrientationIcoText',
33
- type: 'select',
34
- help: 'Orientación del icono respecto al texto DENTRO de cada item. "Horizontal" coloca el icono al lado del texto; "Vertical" apila el icono encima',
35
- label: 'Flex del icono del item',
36
- options: ['flex-row', 'flex-col'],
37
- options_labels: ['Horizontal', 'Vertical'],
38
- example_value: 'flex-row'
39
- },
40
- {
41
- name: 'flexOrientationBlockIcoText',
42
- type: 'select',
43
- help: 'Orientación del conjunto de items entre sí. "Horizontal" coloca los items en fila (con flex-wrap); "Vertical" los apila en columna',
44
- label: 'Flex del item',
45
- options: ['flex-row', 'flex-col'],
46
- options_labels: ['Horizontal', 'Vertical'],
47
- example_value: 'flex-row'
48
- },
49
- {
50
- name: 'headingType',
51
- type: 'select',
52
- help: 'Etiqueta HTML y estilo del título de cada item. "h1" 56px izquierda, "h2" 40px izquierda, "h3"/"h4" 2xl semibold izquierda, "h5"/"h6" sin estilos, "span" texto gris sin formato',
53
- label: 'Etiqueta del título',
54
- options: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span'],
55
- options_labels: ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'Span'],
56
- example_value: 'h2'
57
- },
58
- {
59
- name: 'btnLabel',
60
- type: 'text',
61
- help: 'Texto del botón CTA inferior. Solo se muestra si "Mostrar botón" está activado',
62
- label: 'Label del botón',
63
- mandatory: false,
64
- example_value: 'Ver todas las funcionalidades'
65
- },
66
- {
67
- name: 'buttonUrl',
68
- type: 'text',
69
- help: 'URL de destino del botón CTA. ATENCIÓN: si "Mostrar botón" está activado pero esta URL está vacía, el botón se muestra igualmente con un href inválido. Rellena siempre esta URL si activas el botón',
70
- label: 'Enlace del botón',
71
- mandatory: false,
72
- example_value: '/genia-l/funcionalidades'
73
- },
74
- {
75
- name: 'showBtn',
76
- type: 'boolean',
77
- help: 'Activa o desactiva la visualización del botón CTA inferior. ATENCIÓN: no valida que "Enlace del botón" tenga valor — si activas el botón con URL vacía, el enlace será inválido',
78
- label: 'Mostrar botón',
79
- mandatory: false,
80
- options: ['false', 'true'],
81
- options_labels: ['Falso', 'Verdadero'],
82
- example_value: true
83
- },
84
- {
85
- name: 'widthArticle',
86
- type: 'select',
87
- help: 'Ancho del contenedor principal. Actualmente solo está soportado "w-full" (100%)',
88
- label: 'Ancho del Article',
89
- options: ['w-full'],
90
- options_labels: ['Ancho completo'],
91
- example_value: 'w-full'
92
- },
93
- {
94
- name: 'items',
95
- type: 'list',
96
- help: 'Listado de items de contenido con icono pequeño, título y descripción. Cada item se renderiza con el componente Contenido_2025_Granada',
97
- label: 'Listado de items',
98
- mandatory: false,
99
- items: {
100
- type: 'object',
101
- fields: [
102
- { name: 'title', type: 'text', help: 'Título del item. Se renderiza con la etiqueta HTML seleccionada en "Etiqueta del título". No admite HTML', label: 'Título', example_value: 'Búsqueda semántica' },
103
- { name: 'description', type: 'textArea', help: 'Descripción del item. Se muestra debajo del título y admite HTML', label: 'Descripción', example_value: 'Encuentra jurisprudencia y doctrina relevante con consultas en lenguaje natural' },
104
- { name: 'showIco', type: 'boolean', help: 'Si está activado, muestra el icono seleccionado con fondo gris claro. Si está desactivado, no se renderiza el bloque del icono', label: '¿Mostrar icono?', options: ['false', 'true'], options_labels: ['Falso', 'Verdadero'], example_value: true },
105
- { name: 'icon', type: 'select', help: 'Icono que se muestra junto al item (solo si "Mostrar icono" está activado). Si se elige un valor fuera de la lista, no aparece ningún icono', label: 'Icono', options: ['more', 'shop', 'correct', 'formation', 'case', 'medal', 'medal2', 'search-text', 'checklist', 'certificate', 'ico-ok', 'shield', 'edit', 'ia', 'users', 'graphic', 'balance', 'calendar-check', 'documents', 'compliance', 'library', 'support', 'defendant'], options_labels: ['Más', 'Tienda', 'Correcto', 'Formación', 'Caso', 'Medalla', 'Medalla 2', 'Buscar texto', 'Checklist', 'Certificado', 'OK', 'Escudo', 'Editar', 'IA', 'Usuarios', 'Gráfico', 'Balanza', 'Calendario check', 'Documentos', 'Compliance', 'Librería', 'Soporte', 'Demandado'], example_value: 'search-text' },
106
- { name: 'widthBlock', type: 'select', help: 'Ancho del item cuando se usa orientación vertical en "Flex del item" (Vertical). "1/4" = 50% tablet / 25% desktop. "1/3" = 33% desktop. En orientación horizontal este campo se ignora', label: 'Ancho del bloque (solo en orientación Vertical)', options: ['lg:w-1/4 md:w-2/4', 'lg:w-1/3'], options_labels: ['1/4', '1/3'], example_value: 'lg:w-1/4 md:w-2/4' },
107
- ]
108
- }
109
-
110
- }
111
- ]
112
- };
1
+ import type { ComponentMetadata } from '../interfaces/types';
2
+
3
+ export const metadata: ComponentMetadata = {
4
+ component_name: 'Contenido_2026_Menorca',
5
+ category: 'Contenido con listas',
6
+ name: 'Wrapper de ítems con icono pequeño en recuadro gris y botón CTA 2026',
7
+ description: 'Contenedor que itera bloques de contenido con icono pequeño sobre fondo gris claro (23 variantes predefinidas: más, tienda, correcto, formación, caso, medalla, IA, balanza, compliance, librería, etc.), título con etiqueta HTML configurable y descripción HTML. Permite controlar orientación intra-ítem y entre ítems, ancho por ítem (1/4 o 1/3 en vertical) y añadir un botón CTA opcional al final. Cada ítem se renderiza con Contenido_2025_Granada',
8
+ framework: 'Astro',
9
+ priority: 1,
10
+ tags: ['contenido', 'icono', 'wrapper', 'cta', 'boton', 'item'],
11
+ fields: [
12
+
13
+ {
14
+ name: 'positionFlex',
15
+ type: 'select',
16
+ help: 'Alineación vertical del contenedor principal. "Centrado" centra verticalmente los items; "Principio" los alinea arriba',
17
+ label: 'Posición del item',
18
+ options: ['items-start', 'items-center'],
19
+ options_labels: ['Principio', 'Centrado'],
20
+ example_value: 'items-start'
21
+ },
22
+ {
23
+ name: 'positionBtnFlex',
24
+ type: 'select',
25
+ help: 'Alineación horizontal del botón CTA inferior. "Centrado" sitúa el botón en el centro; "Principio" lo alinea a la izquierda. Solo aplica si "Mostrar botón" está activado',
26
+ label: 'Posición del botón',
27
+ options: ['justify-center', 'justify-start'],
28
+ options_labels: ['Centrado', 'Principio'],
29
+ example_value: 'justify-center'
30
+ },
31
+ {
32
+ name: 'flexOrientationIcoText',
33
+ type: 'select',
34
+ help: 'Orientación del icono respecto al texto DENTRO de cada item. "Horizontal" coloca el icono al lado del texto; "Vertical" apila el icono encima',
35
+ label: 'Flex del icono del item',
36
+ options: ['flex-row', 'flex-col'],
37
+ options_labels: ['Horizontal', 'Vertical'],
38
+ example_value: 'flex-row'
39
+ },
40
+ {
41
+ name: 'flexOrientationBlockIcoText',
42
+ type: 'select',
43
+ help: 'Orientación del conjunto de items entre sí. "Horizontal" coloca los items en fila (con flex-wrap); "Vertical" los apila en columna',
44
+ label: 'Flex del item',
45
+ options: ['flex-row', 'flex-col'],
46
+ options_labels: ['Horizontal', 'Vertical'],
47
+ example_value: 'flex-row'
48
+ },
49
+ {
50
+ name: 'headingType',
51
+ type: 'select',
52
+ help: 'Etiqueta HTML y estilo del título de cada item. "h1" 56px izquierda, "h2" 40px izquierda, "h3"/"h4" 2xl semibold izquierda, "h5"/"h6" sin estilos, "span" texto gris sin formato',
53
+ label: 'Etiqueta del título',
54
+ options: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span'],
55
+ options_labels: ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'Span'],
56
+ example_value: 'h2'
57
+ },
58
+ {
59
+ name: 'btnLabel',
60
+ type: 'text',
61
+ help: 'Texto del botón CTA inferior. Solo se muestra si "Mostrar botón" está activado',
62
+ label: 'Label del botón',
63
+ mandatory: false,
64
+ example_value: 'Ver todas las funcionalidades'
65
+ },
66
+ {
67
+ name: 'buttonUrl',
68
+ type: 'text',
69
+ help: 'URL de destino del botón CTA. ATENCIÓN: si "Mostrar botón" está activado pero esta URL está vacía, el botón se muestra igualmente con un href inválido. Rellena siempre esta URL si activas el botón',
70
+ label: 'Enlace del botón',
71
+ mandatory: false,
72
+ example_value: '/genia-l/funcionalidades'
73
+ },
74
+ {
75
+ name: 'showBtn',
76
+ type: 'boolean',
77
+ help: 'Activa o desactiva la visualización del botón CTA inferior. ATENCIÓN: no valida que "Enlace del botón" tenga valor — si activas el botón con URL vacía, el enlace será inválido',
78
+ label: 'Mostrar botón',
79
+ mandatory: false,
80
+ options: ['false', 'true'],
81
+ options_labels: ['Falso', 'Verdadero'],
82
+ example_value: true
83
+ },
84
+ {
85
+ name: 'widthArticle',
86
+ type: 'select',
87
+ help: 'Ancho del contenedor principal. Actualmente solo está soportado "w-full" (100%)',
88
+ label: 'Ancho del Article',
89
+ options: ['w-full'],
90
+ options_labels: ['Ancho completo'],
91
+ example_value: 'w-full'
92
+ },
93
+ {
94
+ name: 'items',
95
+ type: 'list',
96
+ help: 'Listado de items de contenido con icono pequeño, título y descripción. Cada item se renderiza con el componente Contenido_2025_Granada',
97
+ label: 'Listado de items',
98
+ mandatory: false,
99
+ items: {
100
+ type: 'object',
101
+ fields: [
102
+ { name: 'title', type: 'text', help: 'Título del item. Se renderiza con la etiqueta HTML seleccionada en "Etiqueta del título". No admite HTML', label: 'Título', example_value: 'Búsqueda semántica' },
103
+ { name: 'description', type: 'textArea', help: 'Descripción del item. Se muestra debajo del título y admite HTML', label: 'Descripción', example_value: 'Encuentra jurisprudencia y doctrina relevante con consultas en lenguaje natural' },
104
+ { name: 'showIco', type: 'boolean', help: 'Si está activado, muestra el icono seleccionado con fondo gris claro. Si está desactivado, no se renderiza el bloque del icono', label: '¿Mostrar icono?', options: ['false', 'true'], options_labels: ['Falso', 'Verdadero'], example_value: true },
105
+ { name: 'icon', type: 'select', help: 'Icono que se muestra junto al item (solo si "Mostrar icono" está activado). Si se elige un valor fuera de la lista, no aparece ningún icono', label: 'Icono', options: ['more', 'shop', 'correct', 'formation', 'case', 'medal', 'medal2', 'search-text', 'checklist', 'certificate', 'ico-ok', 'shield', 'edit', 'ia', 'users', 'graphic', 'balance', 'calendar-check', 'documents', 'compliance', 'library', 'support', 'defendant'], options_labels: ['Más', 'Tienda', 'Correcto', 'Formación', 'Caso', 'Medalla', 'Medalla 2', 'Buscar texto', 'Checklist', 'Certificado', 'OK', 'Escudo', 'Editar', 'IA', 'Usuarios', 'Gráfico', 'Balanza', 'Calendario check', 'Documentos', 'Compliance', 'Librería', 'Soporte', 'Demandado'], example_value: 'search-text' },
106
+ { name: 'widthBlock', type: 'select', help: 'Ancho del item cuando se usa orientación vertical en "Flex del item" (Vertical). "1/4" = 50% tablet / 25% desktop. "1/3" = 33% desktop. En orientación horizontal este campo se ignora', label: 'Ancho del bloque (solo en orientación Vertical)', options: ['lg:w-1/4 md:w-2/4', 'lg:w-1/3'], options_labels: ['1/4', '1/3'], example_value: 'lg:w-1/4 md:w-2/4' },
107
+ ]
108
+ }
109
+
110
+ }
111
+ ]
112
+ };
@@ -2,7 +2,7 @@ import type { ComponentMetadata } from '../interfaces/types';
2
2
 
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Michigan',
5
- category: 'Contenido',
5
+ category: 'Contenido con listas',
6
6
  name: 'Listado de artículos con texto, imagen y modal LF2 con botones globales 2026',
7
7
  description: 'Listado vertical de artículos renderizados con Formulario_2025_Teruel, donde imagen lateral y orientación son globales (se aplican a todos los ítems por igual). El botón primario y su URL también son globales (todos los artículos comparten texto y enlace), pero el contenido del modal LF2 (imagen, título, subtítulo, descripción, nombre del formulario) es específico por ítem. Todos los artículos llevan borde inferior separador salvo el último',
8
8
  framework: 'Astro',