libreria-astro-lefebvre 0.1.124 → 0.1.126

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 (42) hide show
  1. package/package.json +1 -1
  2. package/src/carbins/Contenido_2025_Granada.ts +3 -3
  3. package/src/carbins/Contenido_2026_Yakarta.ts +2 -1
  4. package/src/carbins/Titulo_2025_Algeciras.ts +7 -7
  5. package/src/carbins/Video_2025_Polop.ts +13 -1
  6. package/src/components/Astro/Cabecera_2025_Barcelona.astro +1 -1
  7. package/src/components/Astro/Cabecera_2025_Madrid.astro +3 -3
  8. package/src/components/Astro/Cabecera_2026_Madrid.astro +1 -1
  9. package/src/components/Astro/Cabecera_2027_Guadalajara.astro +1 -1
  10. package/src/components/Astro/Contenido_2025_Alcorcon.astro +2 -2
  11. package/src/components/Astro/Contenido_2025_Cordoba.astro +1 -1
  12. package/src/components/Astro/Contenido_2025_Granada.astro +19 -2
  13. package/src/components/Astro/Contenido_2025_Malaga.astro +4 -4
  14. package/src/components/Astro/Contenido_2025_Montevideo.astro +1 -1
  15. package/src/components/Astro/Contenido_2026_Cabra.astro +1 -1
  16. package/src/components/Astro/Contenido_2026_Dubai.astro +1 -1
  17. package/src/components/Astro/Contenido_2026_Estepona.astro +1 -1
  18. package/src/components/Astro/Contenido_2026_Lleida.astro +4 -4
  19. package/src/components/Astro/Contenido_2026_Marruecos.astro +1 -1
  20. package/src/components/Astro/Contenido_2026_Orcasitas.astro +1 -1
  21. package/src/components/Astro/Contenido_2026_Oslo.astro +1 -1
  22. package/src/components/Astro/Contenido_2026_Yakarta.astro +10 -6
  23. package/src/components/Astro/CorpFooter.astro +2 -2
  24. package/src/components/Astro/CorpHero.astro +1 -1
  25. package/src/components/Astro/CorpNavigation.astro +1 -1
  26. package/src/components/Astro/Footer_2025_Napoles.astro +1 -1
  27. package/src/components/Astro/GeometricShapeCard.astro +1 -1
  28. package/src/components/Astro/Hero_2025_Benidorm.astro +1 -1
  29. package/src/components/Astro/Hero_2026_Benidorm.astro +1 -1
  30. package/src/components/Astro/ImageTextSimple.astro +1 -1
  31. package/src/components/Astro/Imagen_2025_Fukushima.astro +2 -2
  32. package/src/components/Astro/RRSS_2025_Pisa.astro +1 -1
  33. package/src/components/Astro/Share_2025_Florencia.astro +1 -1
  34. package/src/components/Astro/Tabla_2025_Fuenlabrada.astro +5 -5
  35. package/src/components/Astro/Tabla_2026_Cadiz.astro +3 -3
  36. package/src/components/Astro/Test_2026_Gaza.astro +10 -10
  37. package/src/components/Astro/TextImageBackground.astro +1 -1
  38. package/src/components/Astro/TextImageCard.astro +1 -1
  39. package/src/components/Astro/TextImageHeader.astro +2 -2
  40. package/src/components/Astro/Titulo_2025_Algeciras.astro +5 -5
  41. package/src/components/Astro/VideoAutoplay.astro +2 -2
  42. package/src/components/Astro/Video_2025_Polop.astro +6 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libreria-astro-lefebvre",
3
- "version": "0.1.124",
3
+ "version": "0.1.126",
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_Granada',
5
5
  category: 'Contenido de Texto',
6
6
  name: 'Ítem con icono pequeño en recuadro gris y ancho configurable 2025',
7
- description: 'Ítem compacto para listados categorizados con un icono pequeño sobre fondo gris claro (44 variantes predefinidas: más, tienda, correcto, formación, caso, medalla, IA, balanza, compliance, librería, bombilla, noticias, euro, despertador, 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)',
7
+ description: 'Ítem compacto para listados categorizados con un icono pequeño sobre fondo gris claro (47 variantes predefinidas: más, tienda, correcto, formación, caso, medalla, IA, balanza, compliance, librería, bombilla, noticias, euro, despertador, deep, paso completado, calculadora, 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',
9
9
  priority: 1,
10
10
  tags: ['contenido', 'icono', 'item', 'listado'],
@@ -49,8 +49,8 @@ export const metadata: ComponentMetadata = {
49
49
  type: 'select',
50
50
  help: 'Icono que se muestra junto al contenido (solo si "Mostrar icono" está activado). Si se elige un valor fuera de la lista, no aparece ningún icono',
51
51
  label: 'Icono',
52
- 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', 'shield-check', 'clock-circle', 'bell', 'user', 'database', 'dollar', 'folder-files', 'hand-money', 'link', 'lock', 'lock-password', 'notification-unread', 'shield-line', 'tools', 'hastag', 'transparency-report', 'hand-sphere', 'light-bulb', 'news', 'euro', 'clock'],
53
- 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', 'Escudo check', 'Reloj', 'Campana', 'Usuario', 'Base de datos', 'Dólar', 'Carpeta con archivos', 'Mano con dinero', 'Enlace', 'Candado', 'Candado contraseña', 'Notificación', 'Escudo línea', 'Herramientas', 'Hashtag', 'Informe de transparencia', 'Mano con esfera', 'Bombilla', 'Noticias', 'Euro', 'Despertador'],
52
+ 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', 'shield-check', 'clock-circle', 'bell', 'user', 'database', 'dollar', 'folder-files', 'hand-money', 'link', 'lock', 'lock-password', 'notification-unread', 'shield-line', 'tools', 'hastag', 'transparency-report', 'hand-sphere', 'light-bulb', 'news', 'euro', 'clock', 'deep', 'step-done', 'calculator'],
53
+ 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', 'Escudo check', 'Reloj', 'Campana', 'Usuario', 'Base de datos', 'Dólar', 'Carpeta con archivos', 'Mano con dinero', 'Enlace', 'Candado', 'Candado contraseña', 'Notificación', 'Escudo línea', 'Herramientas', 'Hashtag', 'Informe de transparencia', 'Mano con esfera', 'Bombilla', 'Noticias', 'Euro', 'Despertador', 'Búsqueda en profundidad', 'Paso completado', 'Calculadora'],
54
54
  example_value: 'more'
55
55
  },
56
56
  {
@@ -21,7 +21,8 @@ export const metadata: ComponentMetadata = {
21
21
  { name: 'name', type: 'text', help: 'Texto del botón tipo pestaña (aparece en la barra superior). Se muestra también en móvil como icono con texto oculto salvo al hacer hover/active', label: 'Nombre o tag de la pestaña', example_value: 'Redacción' },
22
22
  { name: 'title', type: 'text', help: 'Título del vídeo (h3) que aparece sobre la descripción dentro del panel', label: 'Título del vídeo', example_value: 'Redacción automática de contratos' },
23
23
  { name: 'description', type: 'textArea', help: 'Descripción del vídeo que aparece debajo del título. Admite HTML', label: 'Descripción', example_value: 'Genera borradores de contratos en segundos a partir de plantillas personalizables' },
24
- { name: 'iframeSrc', type: 'text', help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como src de una etiqueta <video><source src="..." type="video/mp4">. Ejemplos válidos: .mp4, .webm alojados en CDN', label: 'URL del archivo de vídeo (MP4)', example_value: 'https://assets.lefebvre.es/media/videos/genial/redaccion-demo.mp4' },
24
+ { name: 'iframeSrc', type: 'text', help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como src de una etiqueta <video><source src="..." type="video/mp4">. Ejemplos válidos: .mp4, .webm alojados en CDN. Tiene prioridad sobre "Vídeo desde Limbo": si este campo está relleno, se ignora el de Limbo', label: 'URL del archivo de vídeo (MP4)', example_value: 'https://assets.lefebvre.es/media/videos/genial/redaccion-demo.mp4' },
25
+ { name: 'limboVideo', type: 'image', help: 'Vídeo MP4 seleccionado desde el gestor Limbo. Solo se usa si "URL del archivo de vídeo (MP4)" está vacío', label: 'Vídeo desde Limbo', example_value: '' },
25
26
  { name: 'thumbnailUrl', type: 'text', help: 'URL de la miniatura del vídeo usada en el structured data SEO (VideoObject)', label: 'URL de la miniatura (SEO)', example_value: 'https://assets.lefebvre.es/media/img/preview-comp/comp-16-9.png' },
26
27
  { name: 'imageSrc', type: 'text', help: 'URL alternativa de miniatura (fallback de "URL de la miniatura" en el structured data SEO). Si "URL de la miniatura" tiene valor, este campo se ignora', label: 'URL alternativa de miniatura (fallback SEO)', example_value: '' },
27
28
  { name: 'duration', type: 'text', help: 'Duración del vídeo en formato ISO 8601 (p. ej. "PT2M30S" para 2 min 30 s). Se usa en el structured data SEO. Si se deja vacío, se omite del schema (no se inventa valor)', label: 'Duración del vídeo (ISO 8601)', example_value: 'PT2M30S' },
@@ -20,7 +20,7 @@ export const metadata: ComponentMetadata = {
20
20
  {
21
21
  name: 'description',
22
22
  type: 'text',
23
- help: 'Descripción opcional debajo del título (IBM Plex Sans 16px, centrada). Admite HTML. Solo se muestra si tiene valor',
23
+ help: 'Descripción opcional debajo del título (centrada; 16px por defecto, la tipografía depende del tamaño elegido en "Tamaño del texto de la descripción"). Admite HTML. Solo se muestra si tiene valor',
24
24
  label: 'Texto de la descripción',
25
25
  mandatory: false,
26
26
  example_value: 'Descubre cómo GenIA-L transforma el trabajo diario de los despachos de abogados'
@@ -28,7 +28,7 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'tipo',
30
30
  type: 'select',
31
- help: 'Estilo y etiqueta HTML del título. 15 variantes con distintos tamaños, alineaciones y márgenes: "h1" 40-56px centrado (móvil-desktop), "h1-40" 36-40px centrado mb-8, "h1-40-left" 36-40px izquierda, "h1-home" 40-56px centrado (usado como subtítulo del Home), "h2" 36-40px centrado, "h2-mb24" estilo badge fondo gris, "h2-mb64" 36-40px con padding, "h2-mb64-max900" igual con max-width 900px, "h3" 2xl semibold centrado, "h3-mb32" 28-32px izquierda, "h3-40-left" 36-40px izquierda, "h4"/"h5"/"h6" centrados sin estilos complejos, "p" párrafo simple. Si se pasa "h1Subtitle", el título se renderiza como badge (fondo gris, padding) y el "h1Subtitle" adopta el estilo principal',
31
+ help: 'Estilo y etiqueta HTML del título. 15 variantes con distintos tamaños, alineaciones y márgenes: "h1" 40-56px centrado (móvil-desktop), "h1-40" 36-40px centrado mb-8, "h1-40-left" 36-40px izquierda, "h1-home" 40-56px centrado (usado como subtítulo del Home), "h2" 36-40px centrado, "h2-mb24" estilo badge fondo gris (16px, IBM Plex Sans), "h2-mb64" 36-40px con padding, "h2-mb64-max900" igual con max-width 900px, "h3" 2xl semibold centrado, "h3-mb32" 28-32px izquierda, "h3-40-left" 36-40px izquierda, "h4"/"h5"/"h6" centrados sin estilos complejos, "p" párrafo simple. Si se pasa "h1Subtitle", el título se renderiza como badge (fondo gris, padding, 16px, IBM Plex Sans) y el "h1Subtitle" adopta el estilo principal',
32
32
  label: 'Etiqueta del título',
33
33
  options: ['h1', 'h1-40', 'h1-40-left', 'h1-home', 'h2', 'h2-mb24', 'h2-mb64', 'h2-mb64-max900', 'h3', 'h3-mb32', 'h3-40-left', 'h4', 'h5', 'h6', 'p'],
34
34
  options_labels: ['H1 (40-56px centrado)', 'H1 36-40px centrado', 'H1 36-40px izquierda', 'H1 home', 'H2 36-40px centrado', 'H2 badge', 'H2 con padding', 'H2 padding max-900', 'H3 centrado', 'H3 28-32px izquierda', 'H3 36-40px izquierda', 'H4', 'H5', 'H6', 'Párrafo'],
@@ -63,16 +63,16 @@ export const metadata: ComponentMetadata = {
63
63
  {
64
64
  name: 'subdescription',
65
65
  type: 'text',
66
- help: 'Sub-descripción adicional (IBM Plex Serif 20px, centrada). Solo se muestra si tiene valor. Aparece debajo de "description". Admite HTML',
67
- label: 'Sub-descripción (IBM Plex Serif 20px)',
66
+ help: 'Sub-descripción adicional (centrada; mismo tamaño y tipografía que la descripción, según "Tamaño del texto de la descripción"). Solo se muestra si tiene valor. Aparece debajo de "description". Admite HTML',
67
+ label: 'Sub-descripción',
68
68
  mandatory: false,
69
69
  example_value: 'Automatiza tareas, redacta documentos y encuentra jurisprudencia en segundos'
70
70
  },
71
71
  {
72
72
  name: 'fontFamily',
73
73
  type: 'select',
74
- help: 'Tipografía de la descripción y sub-descripción. "IBM Plex Sans" (por defecto) o "IBM Plex Serif". No afecta a los títulos (h1–h6), que siempre usan IBM Plex Serif',
75
- label: 'Tipografía de la descripción',
74
+ help: 'OBSOLETO: este campo se ignora. La tipografía de la descripción y sub-descripción se deduce del tamaño: 20px o más (XL, 2XL) usa IBM Plex Serif; menos de 20px (SM, Base, LG) usa IBM Plex Sans. Se mantiene solo por compatibilidad con contenido ya guardado',
75
+ label: 'Tipografía de la descripción (obsoleto, se ignora)',
76
76
  options: ['inter', 'poppins'],
77
77
  options_labels: ['IBM Plex Sans', 'IBM Plex Serif'],
78
78
  example_value: 'inter'
@@ -80,7 +80,7 @@ export const metadata: ComponentMetadata = {
80
80
  {
81
81
  name: 'fontSize',
82
82
  type: 'select',
83
- help: 'Tamaño del texto de la descripción y sub-descripción. "base" 16px (por defecto), "sm" 14px, "lg" 18px, "xl" 20px, "2xl" 24px. No afecta a los títulos. ATENCIÓN: Tailwind JIT no genera clases desde template strings dinámicos (text-${fontSize}), por lo que requiere estar en la safelist del tailwind.config',
83
+ help: 'Tamaño del texto de la descripción y sub-descripción. "base" 16px (por defecto), "sm" 14px, "lg" 18px, "xl" 20px, "2xl" 24px. Determina también la tipografía: "xl" y "2xl" usan IBM Plex Serif; "sm", "base" y "lg" usan IBM Plex Sans. No afecta a los títulos. ATENCIÓN: Tailwind JIT no genera clases desde template strings dinámicos (text-${fontSize}), por lo que requiere estar en la safelist del tailwind.config',
84
84
  label: 'Tamaño del texto de la descripción',
85
85
  options: ['sm', 'base', 'lg', 'xl', '2xl'],
86
86
  options_labels: ['SM (14px)', 'Base (16px)', 'LG (18px)', 'XL (20px)', '2XL (24px)'],
@@ -28,10 +28,22 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'iframeSrc',
30
30
  type: 'video',
31
- help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como <source src="..." type="video/mp4"> con autoplay, loop y muted',
31
+ help: 'URL del archivo de vídeo MP4 directo (NO es un iframe de Vimeo/YouTube, a pesar del nombre del campo). Se usa como <source src="..." type="video/mp4"> con autoplay, loop y muted. Tiene prioridad sobre "Vídeo desde Limbo": si este campo está relleno, se ignora el de Limbo',
32
32
  label: 'URL del archivo de vídeo (MP4)',
33
33
  mandatory: false,
34
+ exclusive_group: 'video',
35
+ exclusive_group_label: 'Vídeo',
34
36
  example_value: 'https://lefebvre.es/genia-l/videos/genial/video-trazabilidad.mp4'
37
+ },
38
+ {
39
+ name: 'limboVideo',
40
+ type: 'image',
41
+ help: 'Vídeo MP4 seleccionado desde el gestor Limbo. Solo se usa si "URL del archivo de vídeo (MP4)" está vacío',
42
+ label: 'Vídeo desde Limbo',
43
+ mandatory: false,
44
+ exclusive_group: 'video',
45
+ exclusive_group_label: 'Vídeo',
46
+ example_value: ''
35
47
  }
36
48
  ]
37
49
  };
@@ -49,7 +49,7 @@ const {
49
49
  ---
50
50
 
51
51
  <nav class="w-full flex">
52
- <div class="max-w-7xl w-full mx-auto flex gap-2 bg-white text-[#363942] px-6 md:px-2 py-2 text-sm items-center">
52
+ <div class="font-body max-w-7xl w-full mx-auto flex gap-2 bg-white text-[#363942] px-6 md:px-2 py-2 text-sm items-center">
53
53
  <a href={subdirectory + '/'} class="flex items-center gap-2 underline">
54
54
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
55
55
  <path fill-rule="evenodd" clip-rule="evenodd" d="M11.607 2.26475C11.1639 2.32582 10.6509 2.48899 10.1624 2.72428C9.60055 2.99492 9.00859 3.34706 6.66084 4.80718C4.31852 6.26394 3.93572 6.53182 3.40193 7.08788C2.90464 7.60592 2.64374 8.07514 2.46575 8.77158C2.28122 9.49354 2.26758 9.74391 2.2535 12.6665C2.24172 15.1104 2.25893 16.3111 2.31649 17.061C2.44485 18.7333 2.80188 19.7175 3.55237 20.4678C4.28974 21.2051 5.2235 21.5501 6.83418 21.6806C7.50612 21.735 8.61888 21.75 11.9999 21.75C15.3809 21.75 16.4937 21.735 17.1656 21.6806C18.7575 21.5516 19.699 21.2081 20.4254 20.4911C20.9976 19.9264 21.341 19.2288 21.5307 18.2464C21.724 17.2457 21.7637 16.2126 21.7463 12.6447C21.7321 9.7458 21.7182 9.49232 21.534 8.77158C21.356 8.07514 21.0951 7.60592 20.5979 7.08788C20.0641 6.53182 19.6813 6.26394 17.3389 4.80718C14.9942 3.34893 14.4021 2.99663 13.8362 2.72324C13.4707 2.54669 13.003 2.3831 12.6586 2.3114C12.3947 2.25643 11.8444 2.23204 11.607 2.26475ZM11.6269 3.73267C11.5426 3.74947 11.3777 3.79614 11.2605 3.83636C10.6997 4.02896 10.2326 4.29571 7.66624 5.88901C5.52292 7.21964 5.04514 7.53681 4.65608 7.88712C3.98123 8.49478 3.78607 9.00003 3.72514 10.2972C3.69616 10.9139 3.69657 15.5359 3.72565 16.2378C3.80342 18.1147 4.03097 18.9336 4.63227 19.501C5.0201 19.867 5.59984 20.0807 6.49905 20.189C7.24869 20.2793 7.46553 20.283 11.9999 20.283C16.5343 20.283 16.7511 20.2793 17.5007 20.189C19.2668 19.9762 19.925 19.3378 20.1684 17.6016C20.2815 16.7945 20.3028 15.9639 20.291 12.8283C20.284 10.9976 20.272 10.0331 20.254 9.86956C20.1456 8.88351 19.9347 8.41609 19.3684 7.90674C18.9506 7.53089 18.535 7.25522 16.2312 5.82558C13.7693 4.29779 13.2896 4.02434 12.7476 3.83985C12.3354 3.69954 11.9691 3.6645 11.6269 3.73267Z" fill="#363942"/>
@@ -93,7 +93,7 @@ const categories = [
93
93
  <a href={url} class="h-12 max-[375px] px-3 md:px-5 py-3 font-body font-semibold max-[375px]:text-sm text-base border-1 border-[#001978] text-[#001978] hover:text-[#ffffff] hover:border-[#001978] hover:bg-[#001978] transition-all duration-300 rounded-lg cursor-pointer shadow-sm">{label}</a>
94
94
  </div>
95
95
  <button onclick="document.getElementById('navbar-default').classList.toggle('hidden'); event.target.classList.toggle('bg-gray-50');"
96
- type="button" class="inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100
96
+ type="button" class="font-body inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100
97
97
  focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"
98
98
  aria-controls="navbar-default" aria-expanded="false">
99
99
  <span class="sr-only pointer-events-none">Abrir menú</span>
@@ -117,7 +117,7 @@ const categories = [
117
117
  {category.name}
118
118
  </span>
119
119
  {category.subcategories.length > 0 && (
120
- <span class="ml-2 text-xs">
120
+ <span class="font-body ml-2 text-xs">
121
121
  <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 32 32" fill="none">
122
122
  <path fill-rule="evenodd" clip-rule="evenodd" d="M4.26007 10.3273C4.63157 9.91868 5.26402 9.88856 5.67268 10.2601L16 19.6485L26.3273 10.2601C26.736 9.88856 27.3684 9.91868 27.7399 10.3273C28.1115 10.736 28.0813 11.3684 27.6727 11.7399L16.6727 21.7399C16.2913 22.0867 15.7088 22.0867 15.3273 21.7399L4.32733 11.7399C3.91868 11.3684 3.88856 10.736 4.26007 10.3273Z" fill="currentColor"/>
123
123
  </svg>
@@ -154,7 +154,7 @@ const categories = [
154
154
  {category.name}
155
155
  </span>
156
156
  {category.subcategories.length > 0 && (
157
- <span class="ml-2 text-xs">
157
+ <span class="font-body ml-2 text-xs">
158
158
  <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 32 32" fill="none">
159
159
  <path fill-rule="evenodd" clip-rule="evenodd" d="M4.26007 10.3273C4.63157 9.91868 5.26402 9.88856 5.67268 10.2601L16 19.6485L26.3273 10.2601C26.736 9.88856 27.3684 9.91868 27.7399 10.3273C28.1115 10.736 28.0813 11.3684 27.6727 11.7399L16.6727 21.7399C16.2913 22.0867 15.7088 22.0867 15.3273 21.7399L4.32733 11.7399C3.91868 11.3684 3.88856 10.736 4.26007 10.3273Z" fill="currentColor"/>
160
160
  </svg>
@@ -100,7 +100,7 @@ const categories: MenuItem[] = (categoriesProp && categoriesProp.length > 0)
100
100
  <a href={url} class="h-12 max-[375px] px-3 md:px-5 py-3 font-body font-semibold max-[375px]:text-sm text-base border-1 border-[#001978] text-[#001978] hover:text-[#ffffff] hover:border-[#001978] hover:bg-[#001978] transition-all duration-300 rounded-lg cursor-pointer shadow-sm">{label}</a>
101
101
  </div>
102
102
  <button onclick="document.getElementById('navbar-default').classList.toggle('hidden'); event.target.classList.toggle('bg-gray-50');"
103
- type="button" class="inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100
103
+ type="button" class="font-body inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100
104
104
  focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"
105
105
  aria-controls="navbar-default" aria-expanded="false">
106
106
  <span class="sr-only pointer-events-none">Abrir menú</span>
@@ -105,7 +105,7 @@ const categories: MenuItem[] = (categoriesProp && categoriesProp.length > 0)
105
105
  </div>
106
106
  )}
107
107
  <button onclick="document.getElementById('navbar-default').classList.toggle('hidden'); event.target.classList.toggle('bg-gray-50');"
108
- type="button" class="inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100
108
+ type="button" class="font-body inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100
109
109
  focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"
110
110
  aria-controls="navbar-default" aria-expanded="false">
111
111
  <span class="sr-only pointer-events-none">Abrir menú</span>
@@ -35,8 +35,8 @@ const srcUrl = extractImageUrl(src);
35
35
  <div class="absolute inset-0 flex flex-col justify-center items-center p-4 md:p-6 lg:p-8 z-10">
36
36
  <div class="max-w-4xl w-full text-center">
37
37
  {title && <h2 class="text-[#262626] font-heading text-[28px] sm:text-[36px] md:text-[48px] lg:text-[64px] font-medium text-center leading-tight mb-4">{title}</h2>}
38
- {subtitle && <p class="text-[#262626] font-heading text-[18px] sm:text-[22px] md:text-[28px] lg:text-[32px] font-normal leading-tight text-center mb-4">{subtitle}</p>}
39
- {description && <div class="text-[#363942] font-heading text-sm sm:text-base md:text-lg lg:text-xl font-normal leading-7 mb-6 text-center" set:html={description}></div>}
38
+ {subtitle && <p class="text-[#262626] font-body sm:font-heading text-[18px] sm:text-[22px] md:text-[28px] lg:text-[32px] font-normal leading-tight text-center mb-4">{subtitle}</p>}
39
+ {description && <div class="text-[#363942] font-body lg:font-heading text-sm sm:text-base md:text-lg lg:text-xl font-normal leading-7 mb-6 text-center" set:html={description}></div>}
40
40
 
41
41
  {showBtn && linkBtn && (
42
42
  <a href={linkBtn} target="_self" class="inline-block h-11 md:h-12 text-[#ffffff] font-body font-semibold bg-[#001978] px-5 md:px-7 py-2.5 md:py-3 border border-[#001978] rounded-xl hover:bg-[#ffffff] transition-all duration-300 hover:text-[#262626] hover:border-[#262626] text-sm leading-[21px] md:text-base md:leading-6">{txtBtn}</a>
@@ -94,7 +94,7 @@ const iconSvg = limboImageUrl
94
94
  : tipo === "h4" ? <h4 class="font-heading text-[#262626] text-2xl leading-8 font-semibold text-left mb-2">{title}</h4>
95
95
  : tipo === "h5" ? <h5>{title}</h5>
96
96
  : tipo === "h6" ? <h6>{title}</h6>
97
- : <span class="text-[#363942]">{title}</span>
97
+ : <span class="text-[#363942] font-body">{title}</span>
98
98
  }
99
99
  <p class="text-[#363942] text-center">{description}</p>
100
100
  </div>
@@ -303,6 +303,23 @@ const {
303
303
  <path fill-rule="evenodd" clip-rule="evenodd" d="M10.2237 3.02144C10.0906 3.06412 10.0762 3.07275 7.4958 4.65442C6.05716 5.53626 4.94666 6.23678 4.87214 6.30954C4.68466 6.49245 4.5992 6.73367 4.61648 7.03082C4.63776 7.39586 4.81896 7.66833 5.14775 7.82968C5.3131 7.91084 5.37507 7.92437 5.57902 7.92378C5.74108 7.92332 5.85726 7.9052 5.94267 7.86709C6.19224 7.75563 11.0294 4.76499 11.1737 4.63288C11.6522 4.19488 11.5077 3.37532 10.901 3.08689C10.7381 3.00942 10.3715 2.97401 10.2237 3.02144ZM21.2197 3.03589C20.8149 3.16615 20.5428 3.53217 20.5419 3.94777C20.5413 4.23143 20.6355 4.46047 20.8239 4.63288C20.976 4.77211 25.8193 7.7633 26.0678 7.87146C26.2774 7.96274 26.6559 7.93685 26.8826 7.81572C27.1881 7.65237 27.3607 7.38061 27.3811 7.03082C27.3984 6.73367 27.3129 6.49245 27.1255 6.30954C27.0153 6.20202 22.2292 3.23625 21.8976 3.06997C21.7562 2.9991 21.3912 2.98076 21.2197 3.03589ZM15.136 5.43207C13.615 5.53589 12.0051 5.97075 10.6204 6.6518C7.50848 8.18239 5.2154 10.9752 4.3607 14.2757C4.09131 15.316 4 16.0563 4 17.1998C4 18.0509 4.03909 18.5532 4.15591 19.2028C4.80587 22.8173 7.06965 25.892 10.3476 27.6124C11.7937 28.3713 13.3069 28.811 14.9663 28.9545C19.4616 29.343 23.7739 27.2237 26.2016 23.4329C26.5228 22.9314 27.0227 21.9362 27.243 21.3599C27.5981 20.4308 27.8113 19.5574 27.9425 18.494C28.0192 17.8723 28.0192 16.5269 27.9424 15.9056C27.7058 13.989 27.0837 12.29 26.0527 10.744C24.8858 8.99427 23.2735 7.583 21.3772 6.65158C20.8306 6.38309 20.392 6.20689 19.7483 5.99722C18.2724 5.51648 16.708 5.32481 15.136 5.43207ZM15.1189 7.36976C13.1672 7.54316 11.3279 8.26315 9.76579 9.46519C9.32501 9.80437 8.46138 10.6521 8.12245 11.0783C6.95506 12.5462 6.26224 14.185 6.01647 16.0597C5.95284 16.5451 5.96244 17.9704 6.03266 18.4632C6.3377 20.6035 7.26041 22.4993 8.7267 23.9983C10.3243 25.6315 12.2729 26.6206 14.5869 26.9727C14.9843 27.0332 15.1627 27.0419 15.9988 27.0419C16.8349 27.0419 17.0133 27.0332 17.4107 26.9727C19.1305 26.711 20.6867 26.0788 22.0052 25.1061C24.1938 23.4917 25.5796 21.1668 25.965 18.4632C26.0352 17.9704 26.0448 16.5451 25.9811 16.0597C25.6924 13.8574 24.764 11.9298 23.2441 10.377C21.6591 8.7578 19.6979 7.77008 17.3951 7.4313C16.8962 7.3579 15.636 7.32381 15.1189 7.36976ZM15.8375 11.4396C15.5246 11.488 15.2673 11.6787 15.1209 11.9707L15.0248 12.1625L15.0333 14.8275L15.0418 17.4926L15.1154 17.6312C15.1651 17.7248 15.7307 18.3016 16.8568 19.4071C18.429 20.9505 18.535 21.0481 18.7062 21.1097C19.3792 21.3517 20.0868 20.846 20.0385 20.1576C20.0114 19.7708 20.0239 19.786 18.429 18.2163L16.9715 16.7817L16.9708 14.4716C16.9701 12.2174 16.9686 12.1582 16.9065 12.0237C16.7073 11.5925 16.2974 11.3685 15.8375 11.4396Z" fill="#001978"/>
304
304
  </svg>
305
305
  )
306
+ : icon === "deep" ? (
307
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
308
+ <path d="M20.0635 5.01172C21.1308 5.06326 22.1825 5.29451 23.1719 5.69629C24.3028 6.15558 25.3317 6.82811 26.1973 7.67676C27.0626 8.52533 27.7494 9.53296 28.2178 10.6416C28.6862 11.7504 28.9267 12.9395 28.9268 14.1396L28.916 14.5889C28.8635 15.6354 28.6275 16.6666 28.2178 17.6367C27.7493 18.7455 27.0628 19.7539 26.1973 20.6025C25.9421 20.8527 25.6706 21.085 25.3887 21.3037L28.7773 25.4072L28.8379 25.4883C29.1145 25.9029 29.0311 26.4637 28.6299 26.7822C28.2287 27.1005 27.652 27.0642 27.2959 26.7129L27.2275 26.6377L23.6885 22.3525C23.5186 22.4337 23.3469 22.5119 23.1719 22.583C22.1825 22.9847 21.1308 23.216 20.0635 23.2676L19.6055 23.2783C18.3814 23.2783 17.1689 23.0423 16.0381 22.583C14.9075 22.1238 13.88 21.4509 13.0146 20.6025C12.5766 20.173 12.1851 19.7018 11.8438 19.1982H8.9873C8.57257 20.3845 7.42862 21.2383 6.07812 21.2383C4.37825 21.2382 3.00025 19.8873 3 18.2207C3.00004 16.5539 4.37812 15.2022 6.07812 15.2021C7.42857 15.2022 8.57253 16.056 8.9873 17.2422H10.8389C10.586 16.5553 10.4194 15.8419 10.3398 15.1172H9.19922C8.64859 15.1172 8.20229 14.6795 8.20215 14.1396C8.20215 13.5997 8.6485 13.1621 9.19922 13.1621H10.3389C10.4185 12.437 10.5858 11.7233 10.8389 11.0361H8.9873C8.57268 12.2226 7.42877 13.0771 6.07812 13.0771C4.3781 13.0771 3.00001 11.7254 3 10.0586C3.00004 8.39181 4.37812 7.04007 6.07812 7.04004C7.42876 7.04004 8.57267 7.89464 8.9873 9.08105H11.8428C12.1842 8.57746 12.5764 8.10644 13.0146 7.67676C13.8801 6.82831 14.9074 6.15553 16.0381 5.69629C17.169 5.23701 18.3814 5.00002 19.6055 5L20.0635 5.01172ZM19.6055 6.95508C18.6434 6.9551 17.6906 7.14194 16.8018 7.50293C15.9129 7.86392 15.1051 8.39258 14.4248 9.05957C13.7444 9.72667 13.2042 10.519 12.8359 11.3906C12.4678 12.2621 12.2783 13.1964 12.2783 14.1396L12.2871 14.4922C12.3284 15.3148 12.5139 16.1261 12.8359 16.8887C13.2042 17.7601 13.7446 18.5528 14.4248 19.2197C15.1051 19.8866 15.913 20.4164 16.8018 20.7773C17.6905 21.1382 18.6435 21.3232 19.6055 21.3232L19.9658 21.3145C20.8049 21.2739 21.6324 21.0932 22.4102 20.7773C23.2989 20.4163 24.1068 19.8867 24.7871 19.2197C25.4674 18.5527 26.0068 17.7601 26.375 16.8887C26.7431 16.0173 26.9316 15.0828 26.9316 14.1396L26.9238 13.7861C26.8825 12.9636 26.697 12.1531 26.375 11.3906C26.0069 10.5192 25.4673 9.72659 24.7871 9.05957C24.107 8.39272 23.2987 7.86395 22.4102 7.50293C21.6324 7.18705 20.8049 7.00439 19.9658 6.96387L19.6055 6.95508ZM6.07812 17.1572C5.47964 17.1573 4.99418 17.6338 4.99414 18.2207C4.99439 18.8075 5.47977 19.2832 6.07812 19.2832C6.67652 19.2832 7.16186 18.8075 7.16211 18.2207C7.16207 17.6338 6.67664 17.1572 6.07812 17.1572ZM6.07812 8.99609C5.47964 8.99613 4.99418 9.47168 4.99414 10.0586C4.99415 10.6455 5.47962 11.1211 6.07812 11.1211C6.67667 11.1211 7.1621 10.6456 7.16211 10.0586C7.16207 9.47165 6.67664 8.9961 6.07812 8.99609Z" fill="#001978"/>
309
+ </svg>
310
+ )
311
+ : icon === "step-done" ? (
312
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
313
+ <path d="M6.80761 6.80761C9.24558 4.36964 12.5522 3 16 3C19.4478 3 22.7544 4.36964 25.1924 6.80761C27.6304 9.24558 29 12.5522 29 16C29 19.4478 27.6304 22.7544 25.1924 25.1924C22.7544 27.6304 19.4478 29 16 29C12.5522 29 9.24558 27.6304 6.80761 25.1924C4.36964 22.7544 3 19.4478 3 16C3 12.5522 4.36964 9.24558 6.80761 6.80761ZM16 4.92593C13.063 4.92593 10.2462 6.09266 8.16945 8.16945C6.09266 10.2462 4.92593 13.063 4.92593 16C4.92593 18.937 6.09266 21.7538 8.16945 23.8306C10.2462 25.9073 13.063 27.0741 16 27.0741C18.937 27.0741 21.7538 25.9073 23.8306 23.8306C25.9073 21.7538 27.0741 18.937 27.0741 16C27.0741 13.063 25.9073 10.2462 23.8306 8.16945C21.7538 6.09266 18.937 4.92593 16 4.92593Z" fill-rule="evenodd" clip-rule="evenodd" fill="#001978"/>
314
+ <path d="M19.6761 10.2541C20.0756 10.6219 20.1103 11.254 19.7536 11.666L15.4247 16.666C15.2407 16.8785 14.9776 17 14.7013 17C14.4251 17 14.162 16.8785 13.978 16.666L12.2464 14.666C11.8897 14.2541 11.9244 13.6219 12.3239 13.2541C12.7233 12.8862 13.3363 12.922 13.693 13.334L14.7013 14.4985L18.307 10.334C18.6636 9.92203 19.2766 9.88624 19.6761 10.2541Z" fill-rule="evenodd" clip-rule="evenodd" fill="#001978"/>
315
+ <path d="M9 20C9 19.4477 9.44772 19 10 19H22C22.5523 19 23 19.4477 23 20C23 20.5523 22.5523 21 22 21H10C9.44772 21 9 20.5523 9 20Z" fill-rule="evenodd" clip-rule="evenodd" fill="#001978"/>
316
+ </svg>
317
+ )
318
+ : icon === "calculator" ? (
319
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
320
+ <path d="M12.1005 3.02622C10.2614 3.07765 8.95935 3.21821 7.94664 3.47462C5.57009 4.07638 4.0814 5.5652 3.47969 7.94196C3.09628 9.45648 3 11.073 3 15.996C3 20.9191 3.09628 22.5356 3.47969 24.0501C3.81691 25.3822 4.46823 26.4913 5.34571 27.2279C6.58187 28.2655 8.05491 28.7256 10.7164 28.9055C12.5807 29.0315 19.4194 29.0315 21.2837 28.9055C23.1635 28.7785 24.3846 28.5217 25.3899 28.0421C27.0231 27.2629 28.0642 25.9158 28.5404 23.9654C28.9076 22.4616 28.9998 20.8585 29 15.9806C29.0001 11.137 28.9072 9.529 28.5404 8.02669C27.9456 5.59084 26.4604 4.08409 24.0534 3.47462C23.0048 3.20912 21.8061 3.0835 19.7586 3.02459C18.5906 2.99098 13.321 2.99212 12.1005 3.02622ZM12.1952 4.95413C8.81991 5.06646 7.41271 5.42249 6.42006 6.41525C5.51735 7.31801 5.16003 8.52648 4.99472 11.2357C4.93886 12.1513 4.93886 19.8408 4.99472 20.7563C5.16003 23.4656 5.51735 24.6741 6.42006 25.5768C7.32275 26.4796 8.53111 26.837 11.2401 27.0023C12.1556 27.0582 19.8444 27.0582 20.7599 27.0023C23.469 26.837 24.6773 26.4796 25.58 25.5768C26.4827 24.6741 26.84 23.4656 27.0053 20.7563C27.0612 19.8408 27.0612 12.1513 27.0053 11.2357C26.84 8.52648 26.4827 7.31801 25.58 6.41525C24.6878 5.52296 23.5175 5.17085 20.8523 4.99286C20.3792 4.96128 12.9761 4.92815 12.1952 4.95413ZM10.8373 8.47838C10.6081 8.56881 10.4419 8.72635 10.3249 8.96402L10.2235 9.17L10.2128 9.9949L10.2022 10.8198H9.40443C8.69633 10.8198 8.58946 10.8264 8.45323 10.8781C7.78801 11.1309 7.60433 11.9616 8.10238 12.4647C8.16757 12.5306 8.29718 12.6206 8.39038 12.6647C8.55751 12.7439 8.57094 12.7451 9.38102 12.7559L10.2022 12.7667L10.2131 13.588C10.2238 14.3982 10.2251 14.4116 10.3042 14.5787C10.5169 15.028 11.0109 15.2472 11.4948 15.1071C11.6918 15.0501 11.9323 14.838 12.0411 14.6255L12.1336 14.4447L12.1427 13.6028L12.1518 12.7609H12.8641C13.256 12.7609 13.6639 12.7457 13.7706 12.7271C14.1113 12.6678 14.4347 12.3738 14.5239 12.0423C14.5758 11.8495 14.5479 11.5371 14.4641 11.3744C14.3694 11.1903 14.1806 10.9997 14.0031 10.909C13.8628 10.8372 13.8356 10.835 13.0057 10.8257L12.1525 10.8163L12.1431 9.96301C12.1338 9.13305 12.1316 9.10585 12.0598 8.9655C11.9692 8.78825 11.7788 8.59944 11.5944 8.50405C11.4016 8.40428 11.0548 8.39254 10.8373 8.47838ZM18.1301 10.8551C17.8771 10.9279 17.5814 11.2097 17.4965 11.4586C17.4412 11.6212 17.4336 11.8913 17.4798 12.0577C17.5703 12.3833 17.8971 12.6708 18.243 12.7289C18.3873 12.7532 19.1998 12.7609 20.9448 12.7545L23.4402 12.7455L23.6097 12.665C24.3985 12.2902 24.3597 11.187 23.5468 10.8781C23.4005 10.8225 23.2738 10.8199 20.8135 10.8226C19.253 10.8243 18.1927 10.8371 18.1301 10.8551ZM9.15569 18.0714C8.88035 18.132 8.65465 18.314 8.50495 18.596C8.40547 18.7835 8.40717 19.2204 8.50816 19.4161C8.55203 19.501 8.82006 19.7961 9.20011 20.1777L9.82047 20.8007L9.18726 21.4409C8.6235 22.011 8.54673 22.1008 8.48761 22.2596C8.34346 22.6465 8.419 22.9928 8.71143 23.2853C9.00386 23.5777 9.35012 23.6533 9.73707 23.5091C9.89583 23.45 9.98563 23.3732 10.5556 22.8094L11.1958 22.1761L11.8188 22.7966C12.1891 23.1654 12.4956 23.4446 12.5748 23.4851C12.7346 23.5669 13.0636 23.5975 13.2475 23.5478C13.4386 23.4961 13.6583 23.3341 13.7858 23.1509C13.988 22.8604 14.0064 22.4417 13.8299 22.1452C13.7888 22.0761 13.484 21.7495 13.1526 21.4194L12.5502 20.8192L13.1468 20.2178C13.475 19.887 13.7789 19.5592 13.8222 19.4893C13.9275 19.3194 13.9761 19.0431 13.9371 18.837C13.8085 18.1591 13.0456 17.8256 12.4752 18.198C12.389 18.2543 12.0622 18.5582 11.7491 18.8733L11.1798 19.4463L10.5476 18.8166C9.87697 18.1487 9.7851 18.0824 9.48407 18.0497C9.39935 18.0405 9.25156 18.0502 9.15569 18.0714ZM18.187 18.0708C17.9009 18.1333 17.6861 18.3049 17.5335 18.5927C17.4769 18.6993 17.4644 18.7729 17.4639 19.0001C17.4635 19.2344 17.4751 19.3004 17.539 19.4254C17.6434 19.6297 17.8615 19.8248 18.0746 19.9045C18.2501 19.9702 18.2688 19.9707 20.8017 19.9707C23.6231 19.9707 23.5337 19.9766 23.8007 19.7726C24.1673 19.4927 24.2857 18.9713 24.0757 18.5616C23.9883 18.3911 23.8022 18.217 23.6097 18.1255L23.4402 18.045L20.8986 18.0393C19.0125 18.0351 18.3131 18.0433 18.187 18.0708ZM18.2602 21.6653C17.7737 21.7366 17.4242 22.1747 17.4533 22.6769C17.4735 23.0271 17.6773 23.3316 17.9966 23.4889L18.1412 23.5601L20.7547 23.5684C22.4772 23.5738 23.4084 23.5658 23.4861 23.5448C23.7594 23.4713 24.063 23.1803 24.1385 22.9195C24.3076 22.336 23.9525 21.7625 23.3632 21.6673C23.1319 21.6299 18.5141 21.6281 18.2602 21.6653Z" fill-rule="evenodd" clip-rule="evenodd" fill="#001978"/>
321
+ </svg>
322
+ )
306
323
  : (
307
324
  <span></span>
308
325
  )
@@ -323,8 +340,8 @@ const {
323
340
  : tipo === "h4-20" ? <h4 class="font-heading text-[#262626] text-center text-xl leading-7 font-normal mb-2">{title}</h4>
324
341
  : tipo === "h5" ? <h5>{title}</h5>
325
342
  : tipo === "h6" ? <h6>{title}</h6>
326
- : <span class="text-[#363942]">{title}</span>
343
+ : <span class="text-[#363942] font-body">{title}</span>
327
344
  }
328
- <p class="text-[#363942]" set:html={description}></p>
345
+ <p class="text-[#363942] font-body" set:html={description}></p>
329
346
  </div>
330
347
  </div>
@@ -97,7 +97,7 @@ const videoUrl = iframeSrc || '';
97
97
  </g>
98
98
  </svg>
99
99
  <div class={`w-full ${orientation === 'left' ? `pl-[${paddingLeft}px]` : `pr-[${paddingLeft}px]`}`}>
100
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
100
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
101
101
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 ${h2Size === '40px' ? `text-[36px] leading-[44px] ${h2AltSizeClass} ${h2AltLeadingClass}` : `text-[36px] leading-[44px] ${h2IcoSizeClass} ${h2IcoLeadingClass}`}`} set:html={subtitle}></h2>
102
102
 
103
103
  <div
@@ -134,7 +134,7 @@ const videoUrl = iframeSrc || '';
134
134
  </style>
135
135
  <div class={`w-full ${contentFlex1Class} ${contentMinW0Class} ${contentPaddingClass} ${orientation === 'left' ? 'css-mq-pl-767' : 'pr-[var(--padding-left)] pl-0' }`}
136
136
  style={{ 'padding-left': `${paddingLeft}px` }}>
137
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
137
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
138
138
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 ${h2Size === '40px' ? `text-[36px] leading-[44px] ${h2AltSizeClass} ${h2AltLeadingClass}` : `text-[40px] leading-[48px] ${h2LargeSizeClass} ${h2LargeLeadingClass}`}`} set:html={subtitle}></h2>
139
139
  <div
140
140
  class={`text-[#363942] font-body font-normal text-${fontSize} not-italic leading-6 flex flex-col gap-4 mb-8`}
@@ -186,7 +186,7 @@ const videoUrl = iframeSrc || '';
186
186
  </svg>
187
187
 
188
188
  <div class="w-1/2 p-4 flex flex-col flex-wrap ">
189
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
189
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
190
190
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 ${h2Size === '40px' ? `text-[36px] leading-[44px] ${h2AltSizeClass} ${h2AltLeadingClass}` : `text-[40px] leading-[48px] ${h2LargeSizeClass} ${h2LargeLeadingClass}`}`} set:html={subtitle}></h2>
191
191
  <div
192
192
  class="text-[#363942] font-body font-normal text-base not-italic leading-6 flex flex-col gap-4 mb-8"
@@ -209,7 +209,7 @@ const videoUrl = iframeSrc || '';
209
209
 
210
210
  ) : (
211
211
  <div class="w-1/2 p-4 flex flex-col flex-wrap ">
212
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
212
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
213
213
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 ${h2Size === '40px' ? `text-[36px] leading-[44px] ${h2AltSizeClass} ${h2AltLeadingClass}` : `text-[40px] leading-[48px] ${h2LargeSizeClass} ${h2LargeLeadingClass}`}`} set:html={subtitle}></h2>
214
214
  <div
215
215
  class="text-[#363942] font-body font-normal text-base not-italic leading-6 flex flex-col gap-4 mb-8"
@@ -28,7 +28,7 @@ const imageUrl = extractImageUrl(image);
28
28
  <a href={link} class="cursor-pointer no-underline after:absolute after:inset-0 after:content-['']"><h3 class="font-heading text-xl leading-7 font-semibold text-[#262626] overflow-hidden text-ellipsis mb-2">{title}</h3></a>
29
29
  <p class="font-body text-base leading-6 font-normal text-[#363942] overflow-hidden text-ellipsis mb-2">{description}</p>
30
30
  {author && author !== '' &&
31
- <p class="font-body text-base leading-6 font-normal mt-6 text-[#363942] text-left"><span class="text-[#363942]">Por {author}</span></p>
31
+ <p class="font-body text-base leading-6 font-normal mt-6 text-[#363942] text-left"><span class="font-body text-[#363942]">Por {author}</span></p>
32
32
  }
33
33
  </div>
34
34
  </div>
@@ -68,7 +68,7 @@ const structuredData = `<script type="application/ld+json">
68
68
  <!-- <div class="flex bg-transparent md:bg-gray-50 md:border md:border-[#B6B7BB] rounded-lg"> -->
69
69
  <div class="flex gap-1 md:gap-8 items-center">
70
70
  {tabs.map((tab: Tab, index: number) => (
71
- <p class="text-base">
71
+ <p class="font-body text-base">
72
72
  <button data-linkedto={`${identifier}${index + 1}`}
73
73
  class={`
74
74
  btn py-3.5 px-5 font-body
@@ -13,7 +13,7 @@ import Contenido_2026_Orcasitas from './Contenido_2026_Orcasitas.astro';
13
13
  <article class="w-full flex flex-col text-center items-center justify-center p-12 pb-4 bg-[#ffffff] rounded-2xl">
14
14
  <h2 class="text-[36px] md:text-[40px] font-heading leading-[44px] md:leading-[48px] mb-[23px] text-[#262626] font-normal not-italic">{title}</h2>
15
15
  <div class="max-w-[900px] text-[#363942] font-body font-normal text-base not-italic leading-6 flex flex-col gap-4 mb-8">
16
- <p class="font-heading text-lg leading-7 md:text-xl md:leading-7" set:html={description}></p>
16
+ <p class="font-body md:font-heading text-lg leading-7 md:text-xl md:leading-7" set:html={description}></p>
17
17
  </div>
18
18
  <div class="max-w-7xl flex-wrap md:flex-nowrap w-full flex items-center ">
19
19
  <Contenido_2026_Orcasitas items={items} />
@@ -74,7 +74,7 @@ const structuredData = `<script type="application/ld+json">
74
74
  <!-- <div class="flex bg-transparent md:bg-gray-50 md:border md:border-[#B6B7BB] rounded-lg"> -->
75
75
  <div class="flex gap-1 md:gap-8 items-center">
76
76
  {tabs.map((tab: Tab, index: number) => (
77
- <p class="text-base">
77
+ <p class="font-body text-base">
78
78
  <button data-linkedto={`${identifier}${index + 1}`}
79
79
  class={`
80
80
  btn py-3.5 px-5 font-body
@@ -90,7 +90,7 @@ const hasButtons = Array.isArray(buttons) && buttons.length > 0;
90
90
  </g>
91
91
  </svg>
92
92
  <div class={`w-full ${orientation === 'left' ? `pl-[${paddingLeft}px]` : `pr-[${paddingLeft}px]`}`}>
93
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
93
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
94
94
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 text-[36px] ${h2Size === '40px' ? `${h2AltSizeClass} leading-[44px] ${h2AltLeadingClass}` : `${h2IcoSizeClass} leading-[44px] ${h2IcoLeadingClass}`}`} set:html={subtitle}></h2>
95
95
 
96
96
  <div
@@ -118,7 +118,7 @@ const hasButtons = Array.isArray(buttons) && buttons.length > 0;
118
118
  </style>
119
119
  <div class={`w-full ${contentFlex1Class} ${contentMinW0Class} ${contentPaddingClass} ${orientation === 'left' ? 'css-mq-pl-767' : 'pr-[var(--padding-left)] pl-0' }`}
120
120
  style={{ 'padding-left': `${paddingLeft}px` }}>
121
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
121
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
122
122
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 ${h2Size === '40px' ? `text-[36px] leading-[44px] ${h2AltSizeClass} ${h2AltLeadingClass}` : `text-[40px] leading-[48px] ${h2LargeSizeClass} ${h2LargeLeadingClass}`}`} set:html={subtitle}></h2>
123
123
  <div
124
124
  class={`text-[#363942] font-body font-normal text-${fontSize} not-italic leading-6 flex flex-col gap-4 mb-8`}
@@ -157,7 +157,7 @@ const hasButtons = Array.isArray(buttons) && buttons.length > 0;
157
157
  </svg>
158
158
 
159
159
  <div class="w-1/2 p-4 flex flex-col flex-wrap ">
160
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
160
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
161
161
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 ${h2Size === '40px' ? `text-[36px] leading-[44px] ${h2AltSizeClass} ${h2AltLeadingClass}` : `text-[40px] leading-[48px] ${h2LargeSizeClass} ${h2LargeLeadingClass}`}`} set:html={subtitle}></h2>
162
162
  <div
163
163
  class="text-[#363942] font-body font-normal text-base not-italic leading-6 flex flex-col gap-4 mb-8"
@@ -171,7 +171,7 @@ const hasButtons = Array.isArray(buttons) && buttons.length > 0;
171
171
 
172
172
  ) : (
173
173
  <div class="w-1/2 p-4 flex flex-col flex-wrap ">
174
- {title && <h1 class="font-heading text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
174
+ {title && <h1 class="font-body text-[#262626] text-center lg:text-left text-base font-normal leading-6 rounded bg-[#F2F3F8] mb-8 w-fit py-2 px-3 mx-auto lg:mx-0" set:html={title}></h1>}
175
175
  <h2 class={`font-heading text-[#262626] font-normal ${h2AlignClass} ${h2TrackingClass} pr-6 ${h2MarginBottom} mx-auto lg:mx-0 ${h2Size === '40px' ? `text-[36px] leading-[44px] ${h2AltSizeClass} ${h2AltLeadingClass}` : `text-[40px] leading-[48px] ${h2LargeSizeClass} ${h2LargeLeadingClass}`}`} set:html={subtitle}></h2>
176
176
  <div
177
177
  class="text-[#363942] font-body font-normal text-base not-italic leading-6 flex flex-col gap-4 mb-8"
@@ -60,7 +60,7 @@ const {
60
60
  )}
61
61
  </div>
62
62
  <div class="flex flex-col">
63
- <h3 class="font-heading text-[#262626] text-lg font-semibold leading-7 mb-1">{item.subtitle}</h3>
63
+ <h3 class="font-body text-[#262626] text-lg font-semibold leading-7 mb-1">{item.subtitle}</h3>
64
64
  <p class="text-[#363942] font-body text-base font-normal leading-6">{item.description}</p>
65
65
  </div>
66
66
  </div>
@@ -113,7 +113,7 @@ const structuredData = items.length > 0 ? `<script type="application/ld+json">
113
113
  <p class="text-base font-body font-normal leading-6 mb-6">{item.description}</p>
114
114
  )}
115
115
  {(item.author || item.positionCompany) && (
116
- <p class="text-sm leading-[21px] font-semibold">
116
+ <p class="font-body text-sm leading-[21px] font-semibold">
117
117
  {item.author}
118
118
  {item.author && item.positionCompany && <br />}
119
119
  {item.positionCompany}
@@ -41,7 +41,7 @@ const structuredDataScript = `<script type="application/ld+json">${structuredDat
41
41
  <p class={`popup-iframe-trigger-${randomId} cursor-pointer`} data-iframesrc={item.iframeSrc}>
42
42
  <img src={item.imageSrc} alt={item.description?.replace(/<[^>]*>/g, '') || 'Video thumbnail'} width="400" height="225" class="w-full h-full rounded-2xl p-2 transition-transform hover:scale-105 cursor-pointer" loading="lazy"/>
43
43
  </p>
44
- <p set:html={item.description} class="text-sm text-[#363942] text-center font-semibold"></p>
44
+ <p set:html={item.description} class="font-body text-sm text-[#363942] text-center font-semibold"></p>
45
45
  </article>
46
46
  ))}
47
47
  </div>
@@ -8,6 +8,7 @@ interface VideoItem {
8
8
  thumbnailUrl?: string;
9
9
  imageSrc?: string;
10
10
  iframeSrc?: string;
11
+ limboVideo?: string;
11
12
  duration?: string;
12
13
  uploadDate?: string;
13
14
  default?: boolean;
@@ -22,7 +23,10 @@ const { pageId = PAGE_ENTITY_ID, itemListId = '' } = Astro.props;
22
23
 
23
24
  const idAccordion = 'js-acordeon-' + Math.random().toString(36).substring(2, 15);
24
25
 
25
- const escapeJson = (s = "") => String(s).replace(/<[^>]*>/g, '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/</g, '\\u003c').replace(/>/g, '\\u003e').replace(/[\n\r\t]+/g, ' ');
26
+ // El src manual tiene prioridad sobre el vídeo de Limbo
27
+ const getVideoUrl = (item: VideoItem) => item.iframeSrc || extractImageUrl(item.limboVideo || '', { prefer: 'original' });
28
+
29
+ const escapeJson =(s = "") => String(s).replace(/<[^>]*>/g, '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/</g, '\\u003c').replace(/>/g, '\\u003e').replace(/[\n\r\t]+/g, ' ');
26
30
 
27
31
  const structuredData = items.length > 0 ? `<script type="application/ld+json">
28
32
  {
@@ -38,9 +42,9 @@ const structuredData = items.length > 0 ? `<script type="application/ld+json">
38
42
  "@type": "VideoObject",
39
43
  "name": "${escapeJson(item.title)}"${item.description ? `,
40
44
  "description": "${escapeJson(item.description)}"` : ''}${item.thumbnailUrl || item.imageSrc ? `,
41
- "thumbnailUrl": "${escapeJson(extractImageUrl(item.thumbnailUrl || item.imageSrc || ''))}"` : ''}${item.iframeSrc ? `,
42
- "contentUrl": "${escapeJson(item.iframeSrc)}",
43
- "embedUrl": "${escapeJson(item.iframeSrc)}"` : ''}${item.duration ? `,
45
+ "thumbnailUrl": "${escapeJson(extractImageUrl(item.thumbnailUrl || item.imageSrc || ''))}"` : ''}${getVideoUrl(item) ? `,
46
+ "contentUrl": "${escapeJson(getVideoUrl(item))}",
47
+ "embedUrl": "${escapeJson(getVideoUrl(item))}"` : ''}${item.duration ? `,
44
48
  "duration": "${escapeJson(item.duration)}"` : ''}${item.uploadDate ? `,
45
49
  "uploadDate": "${escapeJson(item.uploadDate)}"` : ''}
46
50
  }
@@ -56,7 +60,7 @@ const structuredData = items.length > 0 ? `<script type="application/ld+json">
56
60
  <!-- <div class="flex bg-[#001978]/4 border border-[#B6B7BB] rounded-lg"> -->
57
61
  <div class="flex gap-1 md:gap-8 items-center">
58
62
  {items.map((item, index) => (
59
- <p class="text-base">
63
+ <p class="font-body text-base">
60
64
  {/* <a href={`#accordion${index + 1}`} class="btn py-[20px] px-[16px]">{item}</a> */}
61
65
  <button data-linkedto={`${idAccordion}${index + 1}`}
62
66
  class={`
@@ -87,7 +91,7 @@ const structuredData = items.length > 0 ? `<script type="application/ld+json">
87
91
  <div class="w-full lg:w-2/2 flex items-start">
88
92
  {/* <img src="/assets/images/genial/gradient-bg.webp" alt="Imagen" class="w-full h-auto rounded-xl" loading="lazy" /> */}
89
93
  <video autoplay loop muted playsinline class="w-full h-auto rounded-xl">
90
- <source src={item.iframeSrc} type="video/mp4" />
94
+ <source src={getVideoUrl(item)} type="video/mp4" />
91
95
  </video>
92
96
  </div>
93
97
  </div>
@@ -33,7 +33,7 @@ const categories = [
33
33
  <div class="flex gap-8 max-w-6xl mx-auto">
34
34
  {categories.map(category => (
35
35
  <div class="flex-1">
36
- <div class="text-xl font-semibold mb-4">{category.name}</div>
36
+ <div class="font-heading text-xl font-semibold mb-4">{category.name}</div>
37
37
  <ul>
38
38
  {category.subcategories.length > 0 ? (
39
39
  category.subcategories.map(sub => (
@@ -63,7 +63,7 @@ const categories = [
63
63
  <img src="https://assets.lefebvre.es/media/logos-2/svg/lefebvre.svg" alt="Logo" class="h-10" loading="lazy" />
64
64
  </div>
65
65
  <div>
66
- <ul class="flex flex-wrap gap-4 text-sm text-gray-800">
66
+ <ul class="font-body flex flex-wrap gap-4 text-sm text-gray-800">
67
67
  <li>
68
68
  <span class="flex items-center gap-1 ">
69
69
  &copy; {new Date().getFullYear()} Lefebvre. Todos los derechos reservados.
@@ -15,7 +15,7 @@ const {
15
15
  loop
16
16
  autoplay
17
17
  ></dotlottie-player>
18
- <div class="absolute bottom-25 left-0 right-0 w-full h-auto p-8 text-center text-white text-3xl leading-snug" set:html={text}></div>
18
+ <div class="font-heading absolute bottom-25 left-0 right-0 w-full h-auto p-8 text-center text-white text-3xl leading-snug" set:html={text}></div>
19
19
 
20
20
  </article>
21
21
  </section>
@@ -65,7 +65,7 @@ const categories = [
65
65
  {category.name}
66
66
  </span>
67
67
  {category.subcategories.length > 0 && (
68
- <span class="ml-1 text-xs">∨</span>
68
+ <span class="font-body ml-1 text-xs">∨</span>
69
69
  )}
70
70
  </a>
71
71
  {category.subcategories.length > 0 && (
@@ -88,7 +88,7 @@ const categories = [
88
88
  <img src="https://assets.lefebvre.es/media/logos-2/svg/lefebvre.svg" alt="Lefebvre" width="160" height="40" class="h-10" loading="lazy" />
89
89
  </div>
90
90
  <div>
91
- <ul class="flex flex-wrap gap-2 text-sm leading-[21px] text-gray-800">
91
+ <ul class="font-body flex flex-wrap gap-2 text-sm leading-[21px] text-gray-800">
92
92
  <li>
93
93
  <span class="flex items-center font-body gap-1">
94
94
  &copy; Lefebvre {new Date().getFullYear()}. Todos los derechos reservados.
@@ -24,7 +24,7 @@ const randomId = `geo-shape-card-`+ Math.random().toString(36).substring(2, 15);
24
24
  <GeometricShape imageSrc={imageSrcUrl} orientation={orientation} figure={figure} gradiantIndex={gradiantIndex} />
25
25
  </div>
26
26
  <div class={`flex text-gray-800 flex-col w-3/5 mx-auto ${orientation === 'right' ? 'text-left items-start' : 'text-right items-end'}`}>
27
- <h2 class="text-4xl font-bold mb-5 max-w-3xl">{title}</h2>
27
+ <h2 class="font-heading text-4xl font-bold mb-5 max-w-3xl">{title}</h2>
28
28
  <div class={`flex flex-col w-full max-w-3xl gap-4 ${orientation === 'right' ? 'text-left items-start' : 'text-left items-end'}`}>
29
29
  <div set:html={mainContent}></div>
30
30
  {secondaryContent && (
@@ -68,7 +68,7 @@ const structuredData = `<script type="application/ld+json">
68
68
  <p class="my-3 text-center font-mono text-sm font-normal leading-5 tracking-[2px] uppercase text-[#363942]">
69
69
  {date}
70
70
  </p>
71
- <div class="max-w-[590px] font-bold text-5xl xl:text-6xl text-white mt-3 mb-9">
71
+ <div class="font-heading max-w-[590px] font-bold text-5xl xl:text-6xl text-white mt-3 mb-9">
72
72
  <Contenido_2026_Jaen
73
73
  title={title}
74
74
  description={description}
@@ -55,7 +55,7 @@ const imageUrl = extractImageUrl(image);
55
55
  <p class="my-3 text-center font-mono text-sm font-normal leading-5 tracking-[2px] uppercase text-[#363942]">
56
56
  {date}
57
57
  </p>
58
- <div class="max-w-[590px] font-bold text-5xl xl:text-6xl text-white mt-3 mb-9">
58
+ <div class="font-heading max-w-[590px] font-bold text-5xl xl:text-6xl text-white mt-3 mb-9">
59
59
  <Contenido_2026_Jaen
60
60
  title={title}
61
61
  description={description}
@@ -49,7 +49,7 @@ const imageUrl = extractImageUrl(image);
49
49
  window.addEventListener('scroll', onScroll);
50
50
  </script>
51
51
  <div class="w-full lg:w-1/2 lg:mx-4 mt-3 lg:mt-0">
52
- <h2 class="text-4xl font-bold">
52
+ <h2 class="font-heading text-4xl font-bold">
53
53
  {title}
54
54
  </h2>
55
55
  <div class="my-4" set:html={description}></div>
@@ -19,14 +19,14 @@ const imageUrl = extractImageUrl(image);
19
19
  {(link && link !== '') ? (
20
20
  <a href={link} target={newTab ? "_blank" : "_self"} class="w-full flex flex-col flex-1 justify-center items-center">
21
21
  <img class="max-w-20 w-fit mb-4" src={imageUrl} alt={altImage} width="80" height="80" loading="lazy"/>
22
- <p class="text-[14px] text-[#363942]" set:html={descriptionImage}></p>
22
+ <p class="font-body text-[14px] text-[#363942]" set:html={descriptionImage}></p>
23
23
  </a>
24
24
  ) : (
25
25
  <div class="w-full flex flex-col flex-1 justify-center items-center max-h-[94px]">
26
26
  <img class="max-w-20 w-fit mb-4" src={imageUrl} alt={altImage} width="80" height="80" loading="lazy"/>
27
27
  </div>
28
28
  <div class="w-full flex flex-col flex-1 justify-center items-center">
29
- <p class="text-[14px] text-[#363942]" set:html={descriptionImage}></p>
29
+ <p class="font-body text-[14px] text-[#363942]" set:html={descriptionImage}></p>
30
30
  </div>
31
31
  )}
32
32
  </div>
@@ -86,7 +86,7 @@ const {
86
86
  <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
87
87
  <path fill-rule="evenodd" clip-rule="evenodd" d="M19.0218 3.02184C17.1786 3.19701 15.5136 3.87009 14.0647 5.0257C13.6203 5.38015 12.4056 6.57322 12.2494 6.80868C11.6675 7.6857 12.6077 8.78401 13.5742 8.3563C13.685 8.30725 13.9475 8.07326 14.5001 7.53098C15.499 6.55064 15.9279 6.22727 16.7676 5.82147C19.1359 4.67697 21.9777 4.96341 24.0914 6.55971C24.477 6.8509 25.1777 7.55962 25.4621 7.94599C26.4425 9.27785 26.9111 10.779 26.8554 12.4091C26.8236 13.3385 26.6459 14.1319 26.2779 14.9866C25.8846 15.9002 25.4705 16.472 24.4496 17.5107C23.6469 18.3276 23.579 18.423 23.5467 18.7799C23.4678 19.65 24.4557 20.2317 25.1872 19.7459C25.4171 19.5933 26.6006 18.3854 26.9644 17.9322C29.9113 14.2605 29.6295 9.00337 26.308 5.68432C24.8906 4.26798 23.1397 3.38671 21.1439 3.08509C20.6322 3.00778 19.519 2.97459 19.0218 3.02184ZM7.1387 12.0952C6.88575 12.1548 6.66998 12.33 5.96326 13.0496C5.20886 13.8178 4.95398 14.1205 4.54041 14.7393C2.86973 17.2393 2.53547 20.4142 3.64816 23.2137C4.46045 25.2573 6.00726 26.9611 7.96898 27.9732C9.21426 28.6156 10.4372 28.9377 11.8408 28.993C14.0409 29.0796 16.1953 28.3627 17.9353 26.965C18.3883 26.6011 19.5957 25.4171 19.7483 25.187C20.2339 24.4552 19.6524 23.4669 18.7827 23.5458C18.4259 23.5782 18.3306 23.6461 17.514 24.4492C17.0774 24.8787 16.6088 25.3043 16.4078 25.4539C13.8767 27.3384 10.5047 27.3416 7.95326 25.4621C7.56704 25.1776 6.85862 24.4765 6.56755 24.0908C4.64943 21.5489 4.65839 18.074 6.58965 15.5212C6.69538 15.3814 7.12233 14.9198 7.53842 14.4955C8.41022 13.6065 8.44577 13.5527 8.44363 13.1259C8.44258 12.924 8.42374 12.8132 8.37023 12.6947C8.28056 12.496 8.0509 12.2627 7.84865 12.1647C7.66578 12.0762 7.35046 12.0453 7.1387 12.0952ZM18.5803 12.1018C18.4962 12.1245 18.3586 12.1911 18.2747 12.2498C18.1908 12.3084 16.7988 13.6836 15.1814 15.3056C12.9416 17.552 12.224 18.2913 12.1704 18.4077C11.8084 19.1946 12.4951 20.0735 13.3383 19.9025C13.4484 19.8801 13.6072 19.818 13.6912 19.7644C13.879 19.6447 19.6974 13.8181 19.7948 13.6524C19.8332 13.587 19.8828 13.4402 19.905 13.3262C20.0114 12.78 19.6604 12.2274 19.1273 12.1018C18.897 12.0476 18.7812 12.0476 18.5803 12.1018Z" fill="#363942"/>
88
88
  </svg>
89
- <span class="copy-ok hidden absolute -top-8 left-1/2 -translate-x-1/2 bg-[#363942] text-white text-xs px-2 py-1 rounded whitespace-nowrap">Enlace copiado</span>
89
+ <span class="font-body copy-ok hidden absolute -top-8 left-1/2 -translate-x-1/2 bg-[#363942] text-white text-xs px-2 py-1 rounded whitespace-nowrap">Enlace copiado</span>
90
90
  </button>
91
91
  )}
92
92
  </div>
@@ -75,7 +75,7 @@ const emailUrl = `mailto:?subject=${encodedTitle}&body=${encodedUrl}`;
75
75
  <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
76
76
  <path fill-rule="evenodd" clip-rule="evenodd" d="M19.0218 3.02184C17.1786 3.19701 15.5136 3.87009 14.0647 5.0257C13.6203 5.38015 12.4056 6.57322 12.2494 6.80868C11.6675 7.6857 12.6077 8.78401 13.5742 8.3563C13.685 8.30725 13.9475 8.07326 14.5001 7.53098C15.499 6.55064 15.9279 6.22727 16.7676 5.82147C19.1359 4.67697 21.9777 4.96341 24.0914 6.55971C24.477 6.8509 25.1777 7.55962 25.4621 7.94599C26.4425 9.27785 26.9111 10.779 26.8554 12.4091C26.8236 13.3385 26.6459 14.1319 26.2779 14.9866C25.8846 15.9002 25.4705 16.472 24.4496 17.5107C23.6469 18.3276 23.579 18.423 23.5467 18.7799C23.4678 19.65 24.4557 20.2317 25.1872 19.7459C25.4171 19.5933 26.6006 18.3854 26.9644 17.9322C29.9113 14.2605 29.6295 9.00337 26.308 5.68432C24.8906 4.26798 23.1397 3.38671 21.1439 3.08509C20.6322 3.00778 19.519 2.97459 19.0218 3.02184ZM7.1387 12.0952C6.88575 12.1548 6.66998 12.33 5.96326 13.0496C5.20886 13.8178 4.95398 14.1205 4.54041 14.7393C2.86973 17.2393 2.53547 20.4142 3.64816 23.2137C4.46045 25.2573 6.00726 26.9611 7.96898 27.9732C9.21426 28.6156 10.4372 28.9377 11.8408 28.993C14.0409 29.0796 16.1953 28.3627 17.9353 26.965C18.3883 26.6011 19.5957 25.4171 19.7483 25.187C20.2339 24.4552 19.6524 23.4669 18.7827 23.5458C18.4259 23.5782 18.3306 23.6461 17.514 24.4492C17.0774 24.8787 16.6088 25.3043 16.4078 25.4539C13.8767 27.3384 10.5047 27.3416 7.95326 25.4621C7.56704 25.1776 6.85862 24.4765 6.56755 24.0908C4.64943 21.5489 4.65839 18.074 6.58965 15.5212C6.69538 15.3814 7.12233 14.9198 7.53842 14.4955C8.41022 13.6065 8.44577 13.5527 8.44363 13.1259C8.44258 12.924 8.42374 12.8132 8.37023 12.6947C8.28056 12.496 8.0509 12.2627 7.84865 12.1647C7.66578 12.0762 7.35046 12.0453 7.1387 12.0952ZM18.5803 12.1018C18.4962 12.1245 18.3586 12.1911 18.2747 12.2498C18.1908 12.3084 16.7988 13.6836 15.1814 15.3056C12.9416 17.552 12.224 18.2913 12.1704 18.4077C11.8084 19.1946 12.4951 20.0735 13.3383 19.9025C13.4484 19.8801 13.6072 19.818 13.6912 19.7644C13.879 19.6447 19.6974 13.8181 19.7948 13.6524C19.8332 13.587 19.8828 13.4402 19.905 13.3262C20.0114 12.78 19.6604 12.2274 19.1273 12.1018C18.897 12.0476 18.7812 12.0476 18.5803 12.1018Z" fill="#363942"/>
77
77
  </svg>
78
- <span class="copy-ok hidden absolute -top-8 left-1/2 -translate-x-1/2 bg-[#363942] text-white text-xs px-2 py-1 rounded whitespace-nowrap">Enlace copiado</span>
78
+ <span class="font-body copy-ok hidden absolute -top-8 left-1/2 -translate-x-1/2 bg-[#363942] text-white text-xs px-2 py-1 rounded whitespace-nowrap">Enlace copiado</span>
79
79
  </button>
80
80
  )}
81
81
  </div>
@@ -24,7 +24,7 @@ const maxRows = Math.max(leftItems.length, rightItems.length);
24
24
  <div class="flex flex-col gap-4 md:hidden">
25
25
  <div class="w-full flex flex-col rounded-2xl bg-white">
26
26
  <div class="p-4 border-b border-[#E0E0E0]">
27
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{leftTitle}</span>
27
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{leftTitle}</span>
28
28
  </div>
29
29
  {leftItems.map((item, i: number) => {
30
30
  const isLast = i === leftItems.length - 1;
@@ -37,7 +37,7 @@ const maxRows = Math.max(leftItems.length, rightItems.length);
37
37
  </div>
38
38
  <div class="w-full flex flex-col rounded-2xl bg-white">
39
39
  <div class="p-4 border-b border-[#E0E0E0]">
40
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{rightTitle}</span>
40
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{rightTitle}</span>
41
41
  </div>
42
42
  {rightItems.map((item, i: number) => {
43
43
  const isLast = i === rightItems.length - 1;
@@ -53,11 +53,11 @@ const maxRows = Math.max(leftItems.length, rightItems.length);
53
53
  {/* Desktop: grid con flechas */}
54
54
  <div class="hidden md:grid w-full" style="grid-template-columns: 1fr auto 1fr;">
55
55
  <div class="p-4 border-b border-[#E0E0E0] bg-white rounded-tl-2xl rounded-tr-2xl">
56
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{leftTitle}</span>
56
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{leftTitle}</span>
57
57
  </div>
58
58
  <div></div>
59
59
  <div class="p-4 border-b border-[#E0E0E0] bg-white rounded-tl-2xl rounded-tr-2xl">
60
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{rightTitle}</span>
60
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{rightTitle}</span>
61
61
  </div>
62
62
 
63
63
  {Array.from({ length: maxRows }).map((_, i) => {
@@ -83,7 +83,7 @@ const maxRows = Math.max(leftItems.length, rightItems.length);
83
83
  ) : (
84
84
  <div class="w-full flex flex-col rounded-2xl bg-white">
85
85
  <div class="p-4 border-b border-[#E0E0E0]">
86
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{hasLeft ? leftTitle : rightTitle}</span>
86
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{hasLeft ? leftTitle : rightTitle}</span>
87
87
  </div>
88
88
  {(hasLeft ? leftItems : rightItems).map((item, i: number) => {
89
89
  const isLast = i === (hasLeft ? leftItems : rightItems).length - 1;
@@ -93,7 +93,7 @@ const structuredData = noSchema ? '' : [
93
93
  <div class="hidden md:grid gap-4 w-full" style="grid-template-columns: 1fr 1fr;">
94
94
  <div class="flex flex-col rounded-2xl bg-white">
95
95
  <div class="p-4">
96
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{leftTitle}</span>
96
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{leftTitle}</span>
97
97
  </div>
98
98
  {leftItems.map((item: Item) => (
99
99
  <div class="p-2 hover:bg-[rgba(0,25,120,0.04)]">
@@ -107,7 +107,7 @@ const structuredData = noSchema ? '' : [
107
107
  </div>
108
108
  <div class="flex flex-col rounded-2xl bg-white">
109
109
  <div class="p-4">
110
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{rightTitle}</span>
110
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{rightTitle}</span>
111
111
  </div>
112
112
  {rightItems.map((item: Item) => (
113
113
  <div class="p-2 hover:bg-[rgba(0,25,120,0.04)]">
@@ -124,7 +124,7 @@ const structuredData = noSchema ? '' : [
124
124
  ) : (
125
125
  <div class="w-full flex flex-col rounded-2xl bg-white">
126
126
  <div class="p-4">
127
- <span class="font-heading text-[#262626] text-base font-semibold leading-6">{hasLeft ? leftTitle : rightTitle}</span>
127
+ <span class="font-body text-[#262626] text-base font-semibold leading-6">{hasLeft ? leftTitle : rightTitle}</span>
128
128
  </div>
129
129
  {(hasLeft ? leftItems : rightItems).map((item: Item) => (
130
130
  <div class="p-2 hover:bg-[rgba(0,25,120,0.04)]">
@@ -23,22 +23,22 @@ fichasProfesores -> es un array de OBJETOS (tipo de dato mas complejo), cada obj
23
23
 
24
24
  <div class="max-w-md rounded-xl border border-gray-200 shadow-md p-6 bg-white space-y-4">
25
25
  <div>
26
- <h2 class="text-xl font-bold text-gray-800">{nombreEscuela}</h2>
27
- <span class="text-sm text-gray-500">{tipoEscuela}</span>
26
+ <h2 class="font-heading text-xl font-bold text-gray-800">{nombreEscuela}</h2>
27
+ <span class="font-body text-sm text-gray-500">{tipoEscuela}</span>
28
28
  </div>
29
29
 
30
- <p class="text-gray-600 text-sm">{descripcionEscuela}</p>
30
+ <p class="font-body text-gray-600 text-sm">{descripcionEscuela}</p>
31
31
 
32
32
  {estaEnEEUU && (
33
- <span class="inline-block text-xs font-medium bg-[#001978]/10 text-[#001978] px-2 py-1 rounded-full">
33
+ <span class="font-body inline-block text-xs font-medium bg-[#001978]/10 text-[#001978] px-2 py-1 rounded-full">
34
34
  {estaEnEEUU === true || estaEnEEUU === "true" ? "En EE.UU." : estaEnEEUU}
35
35
  </span>
36
36
  )}
37
37
 
38
38
  {nombresAlumnosProblematicos.length > 0 && (
39
39
  <div>
40
- <h3 class="text-sm font-semibold text-red-600 mb-1">Alumnos problemáticos</h3>
41
- <ul class="list-disc list-inside text-sm text-gray-700 space-y-1">
40
+ <h3 class="font-body text-sm font-semibold text-red-600 mb-1">Alumnos problemáticos</h3>
41
+ <ul class="font-body list-disc list-inside text-sm text-gray-700 space-y-1">
42
42
  {nombresAlumnosProblematicos.map((nombre: string) => (
43
43
  <li>{nombre}</li>
44
44
  ))}
@@ -48,17 +48,17 @@ fichasProfesores -> es un array de OBJETOS (tipo de dato mas complejo), cada obj
48
48
 
49
49
  {fichasProfesores.length > 0 && (
50
50
  <div>
51
- <h3 class="text-sm font-semibold text-gray-700 mb-2">Profesores</h3>
51
+ <h3 class="font-body text-sm font-semibold text-gray-700 mb-2">Profesores</h3>
52
52
  <div class="space-y-2">
53
53
  {fichasProfesores.map((profesor: { nombre: string; descripcion: string; asignatura: string; esViolento: boolean }) => (
54
- <div class="bg-gray-50 rounded-lg p-3 text-sm flex items-center justify-between">
54
+ <div class="font-body bg-gray-50 rounded-lg p-3 text-sm flex items-center justify-between">
55
55
  <div>
56
56
  <p class="font-medium text-gray-800">{profesor.nombre}</p>
57
57
  <p class="text-gray-500">{profesor.asignatura}</p>
58
- <p class="text-gray-400 text-xs mt-1">{profesor.descripcion}</p>
58
+ <p class="font-body text-gray-400 text-xs mt-1">{profesor.descripcion}</p>
59
59
  </div>
60
60
  {profesor.esViolento && (
61
- <span class="text-xs font-medium bg-red-100 text-red-700 px-2 py-1 rounded-full">Violento</span>
61
+ <span class="font-body text-xs font-medium bg-red-100 text-red-700 px-2 py-1 rounded-full">Violento</span>
62
62
  )}
63
63
  </div>
64
64
  ))}
@@ -15,7 +15,7 @@ const imageUrl = extractImageUrl(image);
15
15
  <section class={`w-full flex items-center justify-center bg-white bg-no-repeat ${orientation === 'left' ? 'bg-right' : 'bg-left'} bg-cover `} style={`background-image: url('${imageUrl}');`}>
16
16
  <article class={`flex ${orientation === 'left' ? 'flex-row' : 'flex-row-reverse'} py-12 w-4/5 center mx-auto `}>
17
17
  <div class="basis-1/2">
18
- <h3 class="font-semibold mb-4 text-[2.313em]" style="line-height:47px;" set:html={title}/>
18
+ <h3 class="font-heading font-semibold mb-4 text-[2.313em]" style="line-height:47px;" set:html={title}/>
19
19
  <div set:html={description}/>
20
20
  </div>
21
21
  </article>
@@ -12,7 +12,7 @@ const imageUrl = extractImageUrl(image);
12
12
  ---
13
13
  <article class={`flex ${orientation === 'left' ? 'flex-row' : 'flex-row-reverse'} items-center gap-4 w-full rounded-xl overflow-hidden border border-slate-300 shadow-lg bg-white`}>
14
14
  <div class="w-2/3 p-8 flex flex-col flex-wrap justify-center items-start">
15
- <h2 class="text-[2.5em] leading-[47px] mb-[23px] text-[#262626] font-semibold not-italic">{title}</h2>
15
+ <h2 class="font-heading text-[2.5em] leading-[47px] mb-[23px] text-[#262626] font-semibold not-italic">{title}</h2>
16
16
  <div
17
17
  class="text-[#363942] font-body font-normal text-lg not-italic flex flex-col gap-4 mb-8"
18
18
  set:html={description}
@@ -18,10 +18,10 @@ const imageUrl = extractImageUrl(image);
18
18
  <div class="w-full lg:w-[70%] h-full transition duration-900 ease-in-out bg-[#001978] lg:[clip-path:polygon(0_0,100%_0,88%_86%,68%_100%,0_100%)]">
19
19
  <div class="flex flex-row w-4/5 center mx-auto pt-20 sm:pt-30">
20
20
  <div class={`w-full ${orientation === "right" ? "rotate-y-180" : ""}`}>
21
- <h1 class="my-3 text-4xl text-white">
21
+ <h1 class="font-heading my-3 text-4xl text-white">
22
22
  {pretitle}
23
23
  </h1>
24
- <div class="font-bold text-5xl xl:text-6xl text-white mt-3 mb-9">{title}</div>
24
+ <div class="font-heading font-bold text-5xl xl:text-6xl text-white mt-3 mb-9">{title}</div>
25
25
  <div class="font-bold text-md text-white mt-3 mb-9" set:html={description}>
26
26
  </div>
27
27
  <div class={`flex ${orientation === "right" ? "flex-row-reverse" : "flex-row"} gap-2 mb-5`}>
@@ -8,7 +8,7 @@ const {
8
8
  descriptionWidth = "1/3", // 1/3 3/5 full
9
9
  flexJustify = "justify-center",
10
10
  subdescription = "",
11
- fontFamily = "inter", // inter | poppins
11
+ fontFamily = "inter", // OBSOLETO: se ignora, la fuente se deduce de fontSize
12
12
  fontSize = "base", // sm | base | lg | xl | 2xl
13
13
  background = "#FFFFFF", // hex o 'transparent'
14
14
  } = Astro.props;
@@ -16,19 +16,19 @@ const {
16
16
  // Fondo aplicado en línea (no como clase Tailwind) para que cualquier color del select funcione sin safelist.
17
17
  const backgroundStyle = background && background !== 'transparent' ? `background-color:${background}` : undefined;
18
18
 
19
- // Los valores guardados en contenido ('inter' | 'poppins') se mantienen; se traducen a las clases de marca.
20
- const fontClass = fontFamily === 'poppins' ? 'font-heading' : 'font-body';
19
+ // Regla de marca: 20px o más → font-heading (Serif); menos de 20px → font-body (Sans).
20
+ const fontClass = fontSize === 'xl' || fontSize === '2xl' ? 'font-heading' : 'font-body';
21
21
 
22
22
  ---
23
23
 
24
24
  <div class={`w-full md:w-3/5 max-w-auto flex ${flexJustify === 'justify-center' ? 'justify-center' : 'justify-start'} flex-col p-4 md:p-0 mx-auto`} style={backgroundStyle}>
25
25
  {
26
26
  h1Subtitle && h1Subtitle.trim() !== ""
27
- ? <h1 class="font-heading text-[#262626] text-center text-base leading-6 font-normal rounded-sm bg-[#F2F3F8] mt-20 mb-8 w-fit py-2 px-3 mx-auto" set:html={title}></h1>
27
+ ? <h1 class="font-body text-[#262626] text-center text-base leading-6 font-normal rounded-sm bg-[#F2F3F8] mt-20 mb-8 w-fit py-2 px-3 mx-auto" set:html={title}></h1>
28
28
  : tipo === "h1" ? <h1 class="font-heading text-[#262626] text-[40px] md:text-[56px] font-normal text-center leading-[48px] md:leading-[64px] px-6 md:my-12" set:html={title}></h1>
29
29
  : tipo === "h1-40" ? <h1 class="font-heading text-[#262626] text-[36px] md:text-[40px] font-normal text-center leading-[44px] md:leading-[48px] mb-8" set:html={title}></h1>
30
30
  : tipo === "h1-40-left" ? <h1 class="font-heading text-[#262626] text-[36px] md:text-[40px] font-normal text-left leading-[44px] md:leading-[48px] mb-0 md:mb-8" set:html={title}></h1>
31
- : tipo === "h2-mb24" ? <h2 class="font-heading text-[#262626] text-center text-base leading-6 font-normal rounded-sm bg-[#F2F3F8] mb-6 w-fit py-2 px-3 mx-auto" set:html={title}></h2>
31
+ : tipo === "h2-mb24" ? <h2 class="font-body text-[#262626] text-center text-base leading-6 font-normal rounded-sm bg-[#F2F3F8] mb-6 w-fit py-2 px-3 mx-auto" set:html={title}></h2>
32
32
  : tipo === "h2" ? <h2 class="font-heading text-[#262626] text-[36px] md:text-[40px] font-normal text-center leading-[44px] md:leading-[48px] my-8 md:mb-8" set:html={title}></h2>
33
33
  : tipo === "h2-mb64" ? <h2 class="font-heading text-[#262626] text-[36px] md:text-[40px] font-normal text-center leading-[44px] md:leading-[48px] p-6 md:p-2 md:pb-6 mb-0" set:html={title}></h2>
34
34
  : tipo === "h2-mb64-max900" ? <h2 class="font-heading text-[#262626] text-[36px] md:text-[40px] max-w-[900px] mx-auto font-normal text-center leading-[44px] md:leading-[48px] p-6 md:p-2 md:pb-6 mb-0" set:html={title}></h2>
@@ -7,10 +7,10 @@ const {
7
7
  ---
8
8
  <section class="w-full flex items-center justify-center">
9
9
  <article class="w-3/5 flex flex-col items-center justify-center p-12 mb-12">
10
- <h2 class="text-[#262626] font-heading font-sans text-[2.625em] not-italic font-semibold leading-[46px] text-center mb-8">
10
+ <h2 class="text-[#262626] font-heading text-[2.625em] not-italic font-semibold leading-[46px] text-center mb-8">
11
11
  {title}
12
12
  </h2>
13
- <p class="text-[#363942] font-body font-sans text-[1.625em] not-italic font-normal leading-[39px] mb-[71px] text-center mb-8">
13
+ <p class="text-[#363942] font-heading text-[1.625em] not-italic font-normal leading-[39px] mb-[71px] text-center mb-8">
14
14
  {description}
15
15
  </p>
16
16
  <div class="w-4/5 h-full aspect-video relative">
@@ -1,11 +1,15 @@
1
1
  ---
2
+ import { extractImageUrl } from '../../lib/functions.js';
2
3
 
3
4
  const {
4
5
  title='',
5
6
  description='',
6
- iframeSrc=''
7
+ iframeSrc='',
8
+ limboVideo=''
7
9
  } = Astro.props;
8
10
 
11
+ // El src manual tiene prioridad sobre el vídeo de Limbo
12
+ const videoUrl = iframeSrc || extractImageUrl(limboVideo, { prefer: 'original' });
9
13
 
10
14
  ---
11
15
 
@@ -17,7 +21,7 @@ const {
17
21
  <div class="w-full lg:w-1/2 flex items-start">
18
22
  {/* <img src="/assets/images/genial/gradient-bg.webp" alt="Imagen" class="w-full h-auto rounded-xl" loading="lazy" /> */}
19
23
  <video autoplay loop muted playsinline preload="metadata" width="640" height="360" class="w-full h-auto rounded-xl">
20
- <source src={iframeSrc} type="video/mp4" />
24
+ <source src={videoUrl} type="video/mp4" />
21
25
  </video>
22
26
  </div>
23
27
  </div>