libreria-astro-lefebvre 0.1.91 → 0.1.93

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libreria-astro-lefebvre",
3
- "version": "0.1.91",
3
+ "version": "0.1.93",
4
4
  "description": "Librería de componentes Astro, React y Vue para Lefebvre",
5
5
  "author": "Equipo web desarrollo Lefebvre",
6
6
  "type": "module",
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2025_Cordoba',
5
5
  category: 'Contenido de Texto',
6
6
  name: 'Ítem con icono grande de certificación y título configurable 2025',
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',
7
+ description: 'Ítem para destacar una certificación, acreditación o hito con un icono grande (5 variantes predefinidas: IA, ISO1, ISO2, GDPR, ISO3, o una imagen subida desde Limbo que sustituye al SVG), 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',
9
9
  priority: 1,
10
10
  tags: ['contenido', 'icono', 'certificacion', 'item'],
@@ -47,12 +47,20 @@ export const metadata: ComponentMetadata = {
47
47
  {
48
48
  name: 'bigIcon',
49
49
  type: 'select',
50
- help: 'Icono grande que se muestra junto al contenido (solo si "Mostrar icono grande" está activado). Si se elige un valor fuera de la lista, no aparece ningún icono',
50
+ help: 'Icono grande que se muestra junto al contenido (solo si "Mostrar icono grande" está activado). Si se elige un valor fuera de la lista, no aparece ningún icono. Se ignora si se rellena "Imagen del icono"',
51
51
  label: 'Icono',
52
52
  options: ['bigIA', 'bigIso1', 'bigIso2', 'bigGDPR', 'bigIso3'],
53
53
  options_labels: ['IA', 'Iso1', 'Iso2', 'GDPR', 'Iso3'],
54
54
  example_value: 'bigIso2'
55
55
  },
56
+ {
57
+ name: 'bigImage',
58
+ type: 'image',
59
+ help: 'Imagen subida desde Limbo que sustituye al icono SVG predefinido (solo si "Mostrar icono grande" está activado). Opcional: si se deja vacía se usa el icono seleccionado en "Icono". Se muestra a 66x66 px dentro de la caja blanca de 90x90 y usa el "Texto del título" como texto alternativo',
60
+ label: 'Imagen del icono (Limbo)',
61
+ mandatory: false,
62
+ example_value: 'https://assets.lefebvre.es/media/img/preview-comp/comp-16-9.png'
63
+ },
56
64
  {
57
65
  name: 'bigIconUrl',
58
66
  type: 'text',
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Mallorca',
5
5
  category: 'Contenido con listas',
6
6
  name: 'Wrapper de ítems con icono grande de certificación y botón CTA 2026',
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',
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, o una imagen subida desde Limbo que sustituye al SVG) 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',
9
9
  priority: 1,
10
10
  tags: ['contenido', 'icono', 'boton', 'cta'],
@@ -93,7 +93,8 @@ export const metadata: ComponentMetadata = {
93
93
  { 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: 'Certificación ISO 27001' },
94
94
  { name: 'description', type: 'textArea', help: 'Descripción del item. Se muestra debajo del título centrada y como texto plano (no admite HTML)', label: 'Descripción', example_value: 'Gestión de la seguridad de la información conforme a estándares internacionales' },
95
95
  { name: 'showBigIco', type: 'boolean', help: 'Si está activado, muestra el icono grande seleccionado junto al contenido del item. Si está desactivado, NO se muestra icono (el hueco queda vacío)', label: 'Mostrar icono grande', options: ['false', 'true'], options_labels: ['Falso', 'Verdadero'], example_value: true },
96
- { name: 'bigIcon', type: 'select', help: 'Icono grande que se muestra junto al item (solo si "Mostrar icono grande" está activado). Si se elige un valor fuera de la lista, no aparece ningún icono', label: 'Icono grande', options: ['bigIA', 'bigIso1', 'bigIso2', 'bigGDPR', 'bigIso3'], options_labels: ['IA', 'Iso1', 'Iso2', 'GDPR', 'Iso3'], example_value: 'bigIso2' },
96
+ { name: 'bigIcon', type: 'select', help: 'Icono grande que se muestra junto al item (solo si "Mostrar icono grande" está activado). Si se elige un valor fuera de la lista, no aparece ningún icono. Se ignora si se rellena "Imagen del icono"', label: 'Icono grande', options: ['bigIA', 'bigIso1', 'bigIso2', 'bigGDPR', 'bigIso3'], options_labels: ['IA', 'Iso1', 'Iso2', 'GDPR', 'Iso3'], example_value: 'bigIso2' },
97
+ { name: 'bigImage', type: 'image', help: 'Imagen subida desde Limbo que sustituye al icono SVG predefinido (solo si "Mostrar icono grande" está activado). Opcional: si se deja vacía se usa el icono seleccionado en "Icono grande". Se muestra a 66x66 px dentro de la caja blanca de 90x90 y usa el "Título" del item como texto alternativo', label: 'Imagen del icono (Limbo)', example_value: 'https://assets.lefebvre.es/media/img/preview-comp/comp-16-9.png' },
97
98
  { name: 'bigIconUrl', type: 'text', help: 'URL de descarga del icono. Si se rellena, el icono se convierte en un enlace de descarga (atributo download). Si se deja vacío, el icono se muestra sin enlace. ATENCIÓN: el navegador solo fuerza la descarga si el archivo es del mismo origen', label: 'Enlace de descarga del icono', mandatory: false }
98
99
  ]
99
100
  }
@@ -1,10 +1,13 @@
1
1
  ---
2
+ import { extractImageUrl } from '../../lib/functions.js';
3
+
2
4
  const {
3
5
  title = "",
4
6
  description = "",
5
7
  tipo = "h3",
6
8
  showBigIco = true,
7
9
  bigIcon,
10
+ bigImage = "",
8
11
  bigIconUrl = "",
9
12
  positionFlex = "items-center",
10
13
  flexOrientationIcoText = "flex-row",
@@ -54,7 +57,12 @@ const icons = {
54
57
  </svg>`,
55
58
  };
56
59
 
57
- const iconSvg = icons[bigIcon] ?? "";
60
+ // bigImage llega como JSON de Limbo (original + recortes). extractImageUrl lo resuelve a la URL final.
61
+ // Si hay imagen de Limbo prevalece sobre el SVG predefinido.
62
+ const limboImageUrl = extractImageUrl(bigImage);
63
+ const iconSvg = limboImageUrl
64
+ ? `<img src="${limboImageUrl}" alt="${title.replace(/"/g, '&quot;')}" width="66" height="66" class="w-full h-full object-contain" loading="lazy" />`
65
+ : (icons[bigIcon] ?? "");
58
66
 
59
67
  ---
60
68
 
@@ -29,6 +29,7 @@ const {
29
29
  positionFlex={positionFlex}
30
30
  showBigIco={item.showBigIco}
31
31
  bigIcon={item.bigIcon}
32
+ bigImage={item.bigImage}
32
33
  bigIconUrl={item.bigIconUrl}
33
34
  />
34
35
  ))}