libreria-astro-lefebvre 0.1.119 → 0.1.121

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 (87) hide show
  1. package/package.json +1 -1
  2. package/src/carbins/Author_2025_Algarve.ts +2 -2
  3. package/src/carbins/Boton_2026_Elx.ts +1 -1
  4. package/src/carbins/CTA_2025_Formentera.ts +3 -3
  5. package/src/carbins/Cabecera_2027_Guadalajara.ts +69 -0
  6. package/src/carbins/Contenido_2025_Cordoba.ts +1 -1
  7. package/src/carbins/Contenido_2025_Granada.ts +1 -1
  8. package/src/carbins/Contenido_2025_Malaga.ts +1 -1
  9. package/src/carbins/Contenido_2026_Castellon.ts +1 -1
  10. package/src/carbins/Contenido_2026_Denia.ts +4 -4
  11. package/src/carbins/Contenido_2026_Jaen.ts +4 -4
  12. package/src/carbins/FAQ_2026_Takayama.ts +3 -3
  13. package/src/carbins/Hero_2026_Lliria.ts +1 -1
  14. package/src/carbins/Modal_2025_Sagunto.ts +3 -3
  15. package/src/carbins/Modal_2026_Almeria.ts +3 -3
  16. package/src/carbins/Separador_2026_Teulada.ts +1 -1
  17. package/src/carbins/Texto_2025_Kyoto.ts +3 -3
  18. package/src/carbins/Texto_2026_Alicante.ts +6 -6
  19. package/src/carbins/Texto_2026_Castellon.ts +2 -2
  20. package/src/carbins/Titulo_2025_Algeciras.ts +7 -7
  21. package/src/carbins/Titulo_2025_Santorini.ts +1 -1
  22. package/src/components/Astro/Author_2025_Algarve.astro +4 -4
  23. package/src/components/Astro/Boton_2026_Elx.astro +6 -6
  24. package/src/components/Astro/CTA_2025_Formentera.astro +3 -3
  25. package/src/components/Astro/Cabecera_2027_Guadalajara.astro +266 -0
  26. package/src/components/Astro/Calculadora_2026_Lisboa.astro +8 -8
  27. package/src/components/Astro/Card_2025_Malta.astro +2 -2
  28. package/src/components/Astro/Contenido_2025_Alcorcon.astro +51 -51
  29. package/src/components/Astro/Contenido_2025_Cordoba.astro +5 -5
  30. package/src/components/Astro/Contenido_2025_Granada.astro +138 -138
  31. package/src/components/Astro/Contenido_2025_Malaga.astro +27 -27
  32. package/src/components/Astro/Contenido_2025_Montevideo.astro +44 -44
  33. package/src/components/Astro/Contenido_2026_Cabra.astro +2 -2
  34. package/src/components/Astro/Contenido_2026_Castellon.astro +6 -6
  35. package/src/components/Astro/Contenido_2026_Denia.astro +88 -88
  36. package/src/components/Astro/Contenido_2026_Dubai.astro +27 -27
  37. package/src/components/Astro/Contenido_2026_Estepona.astro +1 -1
  38. package/src/components/Astro/Contenido_2026_Huesca.astro +8 -8
  39. package/src/components/Astro/Contenido_2026_Jaen.astro +14 -14
  40. package/src/components/Astro/Contenido_2026_Lleida.astro +16 -16
  41. package/src/components/Astro/Contenido_2026_Marruecos.astro +11 -11
  42. package/src/components/Astro/Contenido_2026_Moraira.astro +9 -9
  43. package/src/components/Astro/Contenido_2026_Mostoles.astro +9 -9
  44. package/src/components/Astro/Contenido_2026_Orcasitas.astro +338 -338
  45. package/src/components/Astro/Contenido_2026_Quito.astro +3 -3
  46. package/src/components/Astro/Contenido_2026_Sevilla.astro +23 -23
  47. package/src/components/Astro/Contenido_2026_Tokyo.astro +3 -3
  48. package/src/components/Astro/Contenido_2026_Ubeda.astro +2 -2
  49. package/src/components/Astro/Contenido_2026_Yakarta.astro +4 -4
  50. package/src/components/Astro/Enlace_2025_Venecia.astro +5 -5
  51. package/src/components/Astro/FAQ_2025_Hiroshima.astro +3 -3
  52. package/src/components/Astro/FAQ_2026_Takayama.astro +4 -4
  53. package/src/components/Astro/Footer_2025_Napoles.astro +10 -11
  54. package/src/components/Astro/Footer_2026_Napoles.astro +15 -16
  55. package/src/components/Astro/Footer_2027_Napoles.astro +13 -14
  56. package/src/components/Astro/Formulario_2025_Nara.astro +2 -2
  57. package/src/components/Astro/Formulario_2025_Seul.astro +2 -2
  58. package/src/components/Astro/Formulario_2025_Teruel.astro +159 -159
  59. package/src/components/Astro/Formulario_2026_Wichita.astro +4 -4
  60. package/src/components/Astro/Grid_2026_Aldaia.astro +5 -5
  61. package/src/components/Astro/Hero_2025_Benidorm.astro +2 -2
  62. package/src/components/Astro/Hero_2026_Benidorm.astro +82 -82
  63. package/src/components/Astro/Hero_2026_Lliria.astro +3 -3
  64. package/src/components/Astro/Imagen_2025_Bogota.astro +4 -4
  65. package/src/components/Astro/Indice_2025_Taiwan.astro +2 -2
  66. package/src/components/Astro/Mapa_2026_Girona.astro +8 -8
  67. package/src/components/Astro/Modal_2025_Sagunto.astro +5 -5
  68. package/src/components/Astro/Modal_2026_Almeria.astro +5 -5
  69. package/src/components/Astro/Paginacion_2025_Paris.astro +8 -8
  70. package/src/components/Astro/Separador_2026_Teulada.astro +2 -2
  71. package/src/components/Astro/Sumario_2025_Beijing.astro +4 -4
  72. package/src/components/Astro/Tabla_2025_Fuenlabrada.astro +12 -12
  73. package/src/components/Astro/Tabla_2026_Cadiz.astro +17 -17
  74. package/src/components/Astro/Tag_2025_Bolonia.astro +1 -1
  75. package/src/components/Astro/TextImageBlock.astro +32 -32
  76. package/src/components/Astro/TextImageCard.astro +28 -28
  77. package/src/components/Astro/Texto_2025_Kyoto.astro +43 -43
  78. package/src/components/Astro/Texto_2026_Alicante.astro +4 -4
  79. package/src/components/Astro/Texto_2026_Castellon.astro +10 -10
  80. package/src/components/Astro/Tiempo_2025_Londres.astro +1 -1
  81. package/src/components/Astro/Titulo_2025_Algeciras.astro +24 -21
  82. package/src/components/Astro/Titulo_2025_Santorini.astro +1 -1
  83. package/src/components/Astro/VideoAutoplay.astro +19 -19
  84. package/src/components/Astro/Video_2025_Polop.astro +2 -2
  85. package/src/components/Astro/Video_2026_Andujar.astro +4 -4
  86. package/src/generated/componentRegistry.ts +2 -0
  87. package/src/index.ts +3 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libreria-astro-lefebvre",
3
- "version": "0.1.119",
3
+ "version": "0.1.121",
4
4
  "description": "Librería de componentes Astro, React y Vue para Lefebvre",
5
5
  "author": "Equipo web desarrollo Lefebvre",
6
6
  "type": "module",
@@ -12,7 +12,7 @@ export const metadata: ComponentMetadata = {
12
12
  {
13
13
  name: 'nameAuthor',
14
14
  type: 'text',
15
- help: 'Nombre del autor. Se renderiza como párrafo subrayado (Inter 16px color #262626) y admite HTML (set:html). Conviene que ocupe una sola línea',
15
+ help: 'Nombre del autor. Se renderiza como párrafo subrayado (IBM Plex Sans 16px color #262626) y admite HTML (set:html). Conviene que ocupe una sola línea',
16
16
  label: 'Nombre del autor',
17
17
  mandatory: false,
18
18
  example_value: 'María García López'
@@ -28,7 +28,7 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'descriptionAuthor',
30
30
  type: 'text',
31
- help: 'Profesión o descripción del autor. Se renderiza como párrafo (Inter 14px color #363942) debajo del nombre y admite HTML (set:html). Conviene que ocupe una sola línea',
31
+ help: 'Profesión o descripción del autor. Se renderiza como párrafo (IBM Plex Sans 14px color #363942) debajo del nombre y admite HTML (set:html). Conviene que ocupe una sola línea',
32
32
  label: 'Descripción del autor',
33
33
  mandatory: false,
34
34
  example_value: 'Abogada especialista en Derecho Fiscal con 15 años de experiencia'
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Boton_2026_Elx',
5
5
  category: 'CTA',
6
6
  name: 'Grupo de botones inline primario/secundario con icono opcional 2026',
7
- description: 'Fila de uno o varios botones colocados inline (con salto de línea si no caben). Cada botón puede ser Primario (fondo azul #2134F1, texto blanco) o Secundario (fondo blanco, borde y texto azul #2134F1), ambos de 48px de alto, esquinas de 8px y sombra suave, según el diseño de Figma. Opcionalmente muestra un icono de "abrir" a la derecha del texto. Cada botón puede navegar a una URL o abrir un modal con formulario LF2 (el mismo modal de Contenido_2025_Malaga, compartido por todos los botones marcados como modal). Siempre renderiza al menos un botón',
7
+ description: 'Fila de uno o varios botones colocados inline (con salto de línea si no caben). Cada botón puede ser Primario (fondo azul #001978, texto blanco) o Secundario (fondo blanco, borde y texto azul #001978), ambos de 48px de alto, esquinas de 8px y sombra suave, según el diseño de Figma. Opcionalmente muestra un icono de "abrir" a la derecha del texto. Cada botón puede navegar a una URL o abrir un modal con formulario LF2 (el mismo modal de Contenido_2025_Malaga, compartido por todos los botones marcados como modal). Siempre renderiza al menos un botón',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['boton', 'cta', 'botones', 'inline', 'primario', 'secundario', 'modal', 'formulario', 'lf2'],
@@ -28,7 +28,7 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'frontColor',
30
30
  type: 'text',
31
- help: 'Color del texto en reposo (y del fondo al hacer hover). Acepta nombre CSS (ej. "white", "black") o código hex (ej. "#2134F1"). En hover, este valor y "Color de fondo" se intercambian',
31
+ help: 'Color del texto en reposo (y del fondo al hacer hover). Acepta nombre CSS (ej. "white", "black") o código hex (ej. "#001978"). En hover, este valor y "Color de fondo" se intercambian',
32
32
  label: 'Color del texto (frontal)',
33
33
  mandatory: false,
34
34
  example_value: '#ffffff'
@@ -39,7 +39,7 @@ export const metadata: ComponentMetadata = {
39
39
  help: 'Color de fondo en reposo (y del texto al hacer hover). Acepta nombre CSS o código hex. En hover, este valor y "Color del texto" se intercambian',
40
40
  label: 'Color de fondo',
41
41
  mandatory: false,
42
- example_value: '#2134F1'
42
+ example_value: '#001978'
43
43
  },
44
44
  {
45
45
  name: 'borderColor',
@@ -47,7 +47,7 @@ export const metadata: ComponentMetadata = {
47
47
  help: 'Color del borde del botón (1px sólido). Acepta nombre CSS o código hex. NO cambia en hover',
48
48
  label: 'Color del borde',
49
49
  mandatory: false,
50
- example_value: '#2134F1'
50
+ example_value: '#001978'
51
51
  },
52
52
  ]
53
53
  };
@@ -0,0 +1,69 @@
1
+ import type { ComponentMetadata } from '../interfaces/types';
2
+
3
+ export const metadata: ComponentMetadata = {
4
+ component_name: 'Cabecera_2027_Guadalajara',
5
+ category: 'Header',
6
+ name: 'Cabecera sticky con menú configurable y subcategorías 2027',
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 (SiteNavigationElement raíz con la jerarquía del menú)',
8
+ framework: 'Astro',
9
+ priority: 1,
10
+ tags: ['header', 'cabecera', 'navegacion', 'sticky', 'menu', 'cta', 'configurable'],
11
+ fields: [
12
+ {
13
+ name: 'label',
14
+ type: 'text',
15
+ help: 'Texto del botón CTA principal que aparece en la esquina superior derecha de la cabecera',
16
+ label: 'Texto del botón CTA',
17
+ mandatory: false,
18
+ example_value: 'Pruébalo ya'
19
+ },
20
+ {
21
+ name: 'subdirectory',
22
+ type: 'text',
23
+ help: 'Ruta base del sitio (p. ej. "/genia-l"). Se concatena al enlace del logo y a las rutas del menú por defecto, y se usa en la URL del structured data SEO. Si se pasa un menú custom en "categories", este valor NO se aplica a esos enlaces — debes incluir la ruta completa en cada ítem',
24
+ label: 'Subdirectorio',
25
+ mandatory: false,
26
+ example_value: '/genia-l'
27
+ },
28
+ {
29
+ name: 'url',
30
+ type: 'text',
31
+ help: 'URL de destino del botón CTA. Por defecto "#"',
32
+ label: 'Enlace del botón CTA',
33
+ mandatory: false,
34
+ example_value: '/genia-l/pruebalo'
35
+ },
36
+ {
37
+ name: 'loading',
38
+ type: 'select',
39
+ help: 'Tipo de carga del logo de la cabecera. Usa "eager" si el logo está above the fold (recomendado en páginas con cabecera visible al cargar); "lazy" si el componente se renderiza fuera del viewport inicial',
40
+ label: 'Carga del logo',
41
+ options: ['lazy', 'eager'],
42
+ options_labels: ['Diferida', 'Inmediata'],
43
+ example_value: 'eager'
44
+ },
45
+ {
46
+ name: 'categories',
47
+ type: 'list',
48
+ help: 'Ítems del menú principal de navegación. Si se deja vacío o no se pasa, se muestra el menú por defecto (Cómo funciona, Seguridad, Casos reales, Contacto, Blog). Si defines este listado, debes incluir la ruta completa en cada "link" — el campo "subdirectory" NO se concatena',
49
+ label: 'Ítems del menú (opcional)',
50
+ mandatory: false,
51
+ items: {
52
+ type: 'object',
53
+ fields: [
54
+ { name: 'name', type: 'text', help: 'Texto visible del ítem del menú principal', label: 'Texto del ítem', example_value: 'Cómo funciona' },
55
+ { name: 'link', type: 'text', help: 'URL de destino del ítem. Debe ser la ruta completa (no se le concatena "subdirectory")', label: 'URL del ítem', example_value: '/genia-l/conoce-genia-l/' },
56
+ { name: 'target', type: 'select', help: 'Cómo se abre el enlace: "_self" en la misma pestaña, "_blank" en una pestaña nueva', label: 'Apertura del enlace', options: ['_self', '_blank'], options_labels: ['Misma pestaña', 'Nueva pestaña'], example_value: '_self' },
57
+ ]
58
+ }
59
+ },
60
+ {
61
+ name: 'siteUrl',
62
+ type: 'text',
63
+ help: 'Origen público del sitio (protocolo + host, sin barra final, p. ej. "https://lefebvre.es"). Se usa para la URL del SiteNavigationElement en el structured data SEO. Necesario en SSR tras un proxy, donde Astro.url resuelve al host interno (localhost). Si se deja vacío, se usa Astro.site o el host de la petición',
64
+ label: 'URL del sitio',
65
+ mandatory: false,
66
+ example_value: ''
67
+ }
68
+ ]
69
+ };
@@ -28,7 +28,7 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'tipo',
30
30
  type: 'select',
31
- help: 'Etiqueta HTML y tamaño del título. Cada opción aplica estilos distintos: "h1" 56px alineado a la izquierda, "h2" 40px izquierda, "h3" 2xl semibold izquierda, "h3-center" 2xl semibold centrado, "h4" 2xl semibold izquierda, "h5"/"h6" sin estilos, "span" texto gris sin formato',
31
+ help: 'Etiqueta HTML y tamaño del título. Cada opción aplica estilos distintos: "h1" 56px (40px en móvil) alineado a la izquierda, "h2" 40px (36px en móvil) izquierda, "h3" 2xl semibold izquierda, "h3-center" 2xl semibold centrado, "h4" 2xl semibold izquierda, "h5"/"h6" sin estilos, "span" texto gris sin formato',
32
32
  label: 'Etiqueta del título',
33
33
  options: ['h1', 'h2', 'h3', 'h3-center', 'h4', 'h5', 'h6', 'span'],
34
34
  options_labels: ['H1', 'H2', 'H3', 'H3 centrado', 'H4', 'H5', 'H6', 'Span'],
@@ -28,7 +28,7 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'tipo',
30
30
  type: 'select',
31
- help: 'Etiqueta HTML y tamaño del título. "h1" 56px izquierda, "h2" 40px izquierda, "h3"/"h4" 2xl semibold izquierda, "h3-20"/"h4-20" 20px regular centrado, "h5"/"h6" sin estilos, "span" texto gris sin formato',
31
+ help: 'Etiqueta HTML y tamaño del título. "h1" 56px (40px en móvil) izquierda, "h2" 40px (36px en móvil) izquierda, "h3"/"h4" 2xl semibold izquierda, "h3-20"/"h4-20" 20px regular centrado, "h5"/"h6" sin estilos, "span" texto gris sin formato',
32
32
  label: 'Etiqueta del título',
33
33
  options: ['h1', 'h2', 'h3', 'h3-20', 'h4', 'h4-20', 'h5', 'h6', 'span'],
34
34
  options_labels: ['H1', 'H2', 'H3', 'H3 20px', 'H4', 'H4 20px', 'H5', 'H6', 'Span'],
@@ -72,7 +72,7 @@ export const metadata: ComponentMetadata = {
72
72
  {
73
73
  name: 'h2Size',
74
74
  type: 'select',
75
- help: 'Tamaño del subtítulo h2 en desktop. "Por defecto" = 56px (o 46px si "Mostrar icono" + "Mostrar imagen" están ambos activados). "40px" = 40px fijo. En móvil siempre 36px',
75
+ help: 'Tamaño del subtítulo h2 en desktop. "Por defecto" = 56px (o 46px si "Mostrar icono" + "Mostrar imagen" están ambos activados). "40px" = 40px fijo. En móvil 36px (40px si es el tamaño por defecto)',
76
76
  label: 'Tamaño del h2',
77
77
  options: ['default', '40px'],
78
78
  options_labels: ['Por defecto', '40px'],
@@ -12,7 +12,7 @@ export const metadata: ComponentMetadata = {
12
12
  {
13
13
  name: 'title',
14
14
  type: 'text',
15
- help: 'Título de la sección (h1, 56px en desktop y 36px en móvil). Admite HTML. Si se deja vacío, NO se muestra',
15
+ help: 'Título de la sección (h1, 56px en desktop y 40px en móvil). Admite HTML. Si se deja vacío, NO se muestra',
16
16
  label: 'Texto del título',
17
17
  mandatory: false,
18
18
  example_value: 'Novedades'
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Denia',
5
5
  category: 'Contenido de Imagen',
6
6
  name: 'Sección con título, descripción e imagen lateral fija 2026',
7
- description: 'Sección de contenido con layout horizontal: bloque de texto a la izquierda (título h2 a 28px/32px en Poppins y descripción en Inter 16px) e imagen lateral a la derecha (ocupa la mitad derecha en desktop). La imagen es fija (calculadora de GenIA-L) y no configurable. Incluye datos estructurados (schema.org WebPageElement) generados automáticamente a partir del título y descripción para SEO',
7
+ description: 'Sección de contenido con layout horizontal: bloque de texto a la izquierda (título h2 a 28px/32px en IBM Plex Serif y descripción en IBM Plex Sans 16px) e imagen lateral a la derecha (ocupa la mitad derecha en desktop). La imagen es fija (calculadora de GenIA-L) y no configurable. Incluye datos estructurados (schema.org WebPageElement) generados automáticamente a partir del título y descripción para SEO',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['contenido', 'imagen', 'texto', 'seo', 'schema'],
@@ -12,7 +12,7 @@ export const metadata: ComponentMetadata = {
12
12
  {
13
13
  name: 'title',
14
14
  type: 'text',
15
- help: 'Título principal del bloque (se renderiza como h2 en Poppins 28px en móvil / 32px en desktop, color #262626). Admite HTML. También se inyecta en los datos estructurados (schema.org) como nombre del elemento',
15
+ help: 'Título principal del bloque (se renderiza como h2 en IBM Plex Serif 28px en móvil / 32px en desktop, color #262626). Admite HTML. También se inyecta en los datos estructurados (schema.org) como nombre del elemento',
16
16
  label: 'Texto del título',
17
17
  mandatory: false,
18
18
  example_value: 'Calculadora de productividad con IA jurídica'
@@ -20,7 +20,7 @@ export const metadata: ComponentMetadata = {
20
20
  {
21
21
  name: 'description',
22
22
  type: 'text',
23
- help: 'Descripción que aparece debajo del título (Inter 16px, color #363942). Admite HTML. También se inyecta en los datos estructurados (schema.org) como descripción del elemento (con etiquetas HTML eliminadas automáticamente)',
23
+ help: 'Descripción que aparece debajo del título (IBM Plex Sans 16px, color #363942). Admite HTML. También se inyecta en los datos estructurados (schema.org) como descripción del elemento (con etiquetas HTML eliminadas automáticamente)',
24
24
  label: 'Texto de la descripción',
25
25
  mandatory: false,
26
26
  example_value: 'Estima cuántas horas de trabajo puede ahorrarte la inteligencia artificial aplicada al Derecho en tu despacho.'
@@ -28,7 +28,7 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'contentHTML',
30
30
  type: 'textArea',
31
- help: 'Contenido HTML adicional que se renderiza debajo de la descripción (admite <p>, <h2>, <ul>, <strong>, etc.). Se aplican estilos globales: <p> internos en Inter 1em color #363942 y <h2> internos en Poppins 1.5em semibold color #262626. Si se deja vacío, no se renderiza el bloque',
31
+ help: 'Contenido HTML adicional que se renderiza debajo de la descripción (admite <p>, <h2>, <ul>, <strong>, etc.). Se aplican estilos globales: <p> internos en IBM Plex Sans 1em color #363942 y <h2> internos en IBM Plex Serif 1.5em semibold color #262626. Si se deja vacío, no se renderiza el bloque',
32
32
  label: 'Contenido HTML adicional',
33
33
  mandatory: false,
34
34
  example_value: '<p>Incluye fórmulas configurables y exporta el resultado a PDF.</p>'
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Contenido_2026_Jaen',
5
5
  category: 'Contenido de Imagen',
6
6
  name: 'Cabecera enriquecida de post con autor, colegiado, imagen lateral y RRSS 2026',
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',
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 (IBM Plex Serif grande o IBM Plex Sans 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',
9
9
  priority: 1,
10
10
  tags: ['contenido', 'blog', 'cabecera', 'rrss', 'autor', 'imagen', 'titulo'],
@@ -60,7 +60,7 @@ export const metadata: ComponentMetadata = {
60
60
  {
61
61
  name: 'tipo',
62
62
  type: 'select',
63
- help: 'Etiqueta HTML y estilo del título. Cada opción aplica estilos distintos: "h1 categoría blog" 40px centrado normal, "h1 autor blog" 40px izquierda semibold, "h1 post blog" 40px centrado semibold, "h1 post enriquecido" 40px izquierda semibold, "h2 blog" 28px/32px izquierda normal, "h2" 36px/40px centrado normal, "h3" 20px/24px izquierda semibold, "h4" xl izquierda semibold, "h3 (como párrafo)" mismo estilo visual que H3 pero renderizado como <p> (sin que cuente como encabezado en la jerarquía SEO). Si se elige un valor fuera de la lista, el título se renderiza como párrafo simple',
63
+ help: 'Etiqueta HTML y estilo del título. Cada opción aplica estilos distintos: "h1 categoría blog" 36px/40px centrado normal, "h1 autor blog" 36px/40px izquierda semibold, "h1 post blog" 36px/40px centrado semibold, "h1 post enriquecido" 36px/40px izquierda semibold, "h2 blog" 28px/32px izquierda normal, "h2" 36px/40px centrado normal, "h3" 24px izquierda semibold, "h4" xl izquierda semibold, "h3 (como párrafo)" mismo estilo visual que H3 pero renderizado como <p> (sin que cuente como encabezado en la jerarquía SEO). Si se elige un valor fuera de la lista, el título se renderiza como párrafo simple',
64
64
  label: 'Etiqueta del título',
65
65
  options: ['h1-blog-categoria', 'h1-blog-autor', 'h1-blog-post', 'h1-blog-postenriquecido', 'h2-blog', 'h2', 'h3', 'h3-p', 'h4'],
66
66
  options_labels: ['H1 categoría blog', 'H1 autor blog', 'H1 post blog', 'H1 post enriquecido blog', 'H2 blog', 'H2', 'H3', 'H3 (como párrafo)', 'H4'],
@@ -87,10 +87,10 @@ export const metadata: ComponentMetadata = {
87
87
  {
88
88
  name: 'descriptionStyle',
89
89
  type: 'select',
90
- help: 'Tipografía y tamaño del párrafo de descripción. "Poppins" aplica Poppins xl con leading 7 y margen inferior grande (para descripciones destacadas); "Inter" aplica Inter base sin margen (para descripciones compactas)',
90
+ help: 'Tipografía y tamaño del párrafo de descripción. "IBM Plex Serif" aplica IBM Plex Serif xl con leading 7 y margen inferior grande (para descripciones destacadas); "IBM Plex Sans" aplica IBM Plex Sans base sin margen (para descripciones compactas)',
91
91
  label: 'Estilo de la descripción',
92
92
  options: ['poppins', 'inter'],
93
- options_labels: ['Poppins (grande)', 'Inter (compacto)'],
93
+ options_labels: ['IBM Plex Serif (grande)', 'IBM Plex Sans (compacto)'],
94
94
  example_value: 'poppins'
95
95
  },
96
96
  {
@@ -3,8 +3,8 @@ import type { ComponentMetadata } from '../interfaces/types';
3
3
  export const metadata: ComponentMetadata = {
4
4
  component_name: 'FAQ_2026_Takayama',
5
5
  category: 'Contenido con listas',
6
- name: 'Acordeón de tarjetas blancas con título Poppins 24px, chevron y listas a 3 columnas con check 2026',
7
- description: 'Acordeón según diseño de Figma (Apuntes y Consejos): etiqueta pequeña opcional sobre fondo azul muy claro y, debajo, una tarjeta blanca por ítem (esquinas 16px, sombra suave, padding 24px) con título Poppins 24px semibold y chevron a la derecha que gira al abrir. Comportamiento exclusivo: al abrir una pregunta se cierran las demás; un segundo click la cierra. Estado inicial configurable. Las respuestas admiten HTML: los párrafos se muestran en Inter 16px y las listas <ul><li> se pintan a 3 columnas en escritorio (1 en móvil) con un icono de check a la izquierda de cada elemento. Incluye datos estructurados FAQPage.',
6
+ name: 'Acordeón de tarjetas blancas con título IBM Plex Serif 24px, chevron y listas a 3 columnas con check 2026',
7
+ description: 'Acordeón según diseño de Figma (Apuntes y Consejos): etiqueta pequeña opcional sobre fondo azul muy claro y, debajo, una tarjeta blanca por ítem (esquinas 16px, sombra suave, padding 24px) con título IBM Plex Serif 24px semibold y chevron a la derecha que gira al abrir. Comportamiento exclusivo: al abrir una pregunta se cierran las demás; un segundo click la cierra. Estado inicial configurable. Las respuestas admiten HTML: los párrafos se muestran en IBM Plex Sans 16px y las listas <ul><li> se pintan a 3 columnas en escritorio (1 en móvil) con un icono de check a la izquierda de cada elemento. Incluye datos estructurados FAQPage.',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['texto', 'faq', 'acordeon', 'preguntas', 'interactivo', 'sumario', 'tarjeta'],
@@ -36,7 +36,7 @@ export const metadata: ComponentMetadata = {
36
36
  items: {
37
37
  type: 'object',
38
38
  fields: [
39
- { name: 'question', type: 'text', help: 'Título de la tarjeta (Poppins 24px semibold). No admite HTML', label: 'Título de la tarjeta', example_value: 'Sumario' },
39
+ { name: 'question', type: 'text', help: 'Título de la tarjeta (IBM Plex Serif 24px semibold). No admite HTML', label: 'Título de la tarjeta', example_value: 'Sumario' },
40
40
  { name: 'answer', type: 'textArea', help: 'Contenido que aparece al abrir la tarjeta. Admite HTML. Los <p> se muestran como párrafo de 16px; las listas <ul><li> se pintan a 3 columnas en escritorio con un icono de check delante de cada elemento. Evitar scripts', label: 'Contenido de la tarjeta', example_value: '<p>Los siguientes temas son abordados de manera regular:</p><ul><li>Actualidad</li><li>Facturación</li><li>IRPF</li><li>ITP</li><li>Recaudación</li><li>Sanciones tributarias</li></ul>' }
41
41
  ]
42
42
  }
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Hero_2026_Lliria',
5
5
  category: 'Contenido de Imagen',
6
6
  name: 'Hero de portada con título, descripción, imagen de fondo y CTA móvil 2026',
7
- description: 'Cabecera de portada a todo el ancho con imagen de fondo cover y 600px de alto mínimo, con el texto centrado verticalmente. En escritorio el texto (título h1 en Poppins 56px regular y descripción en 32px, ambos en color oscuro #262626) ocupa la mitad izquierda, dejando visible la imagen en la mitad derecha. En móvil el texto ocupa todo el ancho (título 36px semibold, descripción 28px), la imagen muestra su zona izquierda (object-position: left) y aparece un botón CTA opcional (SOLO visible en móvil, según diseño)',
7
+ description: 'Cabecera de portada a todo el ancho con imagen de fondo cover y 600px de alto mínimo, con el texto centrado verticalmente. En escritorio el texto (título h1 en IBM Plex Serif 56px regular y descripción en 32px, ambos en color oscuro #262626) ocupa la mitad izquierda, dejando visible la imagen en la mitad derecha. En móvil el texto ocupa todo el ancho (título 40px semibold, descripción 28px), la imagen muestra su zona izquierda (object-position: left) y aparece un botón CTA opcional (SOLO visible en móvil, según diseño)',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['hero', 'banner', 'imagen', 'portada', 'cabecera', 'inicio'],
@@ -20,7 +20,7 @@ export const metadata: ComponentMetadata = {
20
20
  {
21
21
  name: 'frontColor',
22
22
  type: 'text',
23
- help: 'Color del texto del botón. Acepta nombre CSS (ej. "white", "black") o código hex (ej. "#2134F1"). NO se invierte en hover (a diferencia de CTA_2025_Formentera)',
23
+ help: 'Color del texto del botón. Acepta nombre CSS (ej. "white", "black") o código hex (ej. "#001978"). NO se invierte en hover (a diferencia de CTA_2025_Formentera)',
24
24
  label: 'Color del texto (frontal)',
25
25
  mandatory: false,
26
26
  example_value: '#ffffff'
@@ -31,7 +31,7 @@ export const metadata: ComponentMetadata = {
31
31
  help: 'Color de fondo del botón. Acepta nombre CSS o código hex',
32
32
  label: 'Color de fondo',
33
33
  mandatory: false,
34
- example_value: '#2134F1'
34
+ example_value: '#001978'
35
35
  },
36
36
  {
37
37
  name: 'borderColor',
@@ -39,7 +39,7 @@ export const metadata: ComponentMetadata = {
39
39
  help: 'Color del borde del botón (1px sólido). Acepta nombre CSS o código hex',
40
40
  label: 'Color del borde',
41
41
  mandatory: false,
42
- example_value: '#2134F1'
42
+ example_value: '#001978'
43
43
  },
44
44
  {
45
45
  name: 'imageModal',
@@ -20,7 +20,7 @@ export const metadata: ComponentMetadata = {
20
20
  {
21
21
  name: 'frontColor',
22
22
  type: 'text',
23
- help: 'Color del texto del botón propio. Acepta nombre CSS (ej. "white") o hex (ej. "#2134F1"). No se invierte en hover. Solo aplica si hay buttonText',
23
+ help: 'Color del texto del botón propio. Acepta nombre CSS (ej. "white") o hex (ej. "#001978"). No se invierte en hover. Solo aplica si hay buttonText',
24
24
  label: 'Color del texto (frontal)',
25
25
  mandatory: false,
26
26
  example_value: '#ffffff'
@@ -31,7 +31,7 @@ export const metadata: ComponentMetadata = {
31
31
  help: 'Color de fondo del botón propio. Acepta nombre CSS o hex. Solo aplica si hay buttonText',
32
32
  label: 'Color de fondo',
33
33
  mandatory: false,
34
- example_value: '#2134F1'
34
+ example_value: '#001978'
35
35
  },
36
36
  {
37
37
  name: 'borderColor',
@@ -39,7 +39,7 @@ export const metadata: ComponentMetadata = {
39
39
  help: 'Color del borde del botón propio (1px sólido). Acepta nombre CSS o hex. Solo aplica si hay buttonText',
40
40
  label: 'Color del borde',
41
41
  mandatory: false,
42
- example_value: '#2134F1'
42
+ example_value: '#001978'
43
43
  },
44
44
  {
45
45
  name: 'triggerHash',
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Separador_2026_Teulada',
5
5
  category: 'Separador',
6
6
  name: 'Separador con imagen de fondo, título y botón 2026',
7
- description: 'Franja separadora a todo el ancho con imagen de fondo (background cover centrado) y 64px de padding vertical. Sobre la imagen se muestra, centrado y en blanco, un título h2 opcional (Poppins 20px semibold) y un botón opcional con borde blanco que al pasar el ratón se rellena de blanco con texto azul #2134F1. Para separadores sin imagen usa Separador_2025_Toledo o Separador_2025_Reinosa',
7
+ description: 'Franja separadora a todo el ancho con imagen de fondo (background cover centrado) y 64px de padding vertical. Sobre la imagen se muestra, centrado y en blanco, un título h2 opcional (IBM Plex Serif 20px semibold) y un botón opcional con borde blanco que al pasar el ratón se rellena de blanco con texto azul #001978. Para separadores sin imagen usa Separador_2025_Toledo o Separador_2025_Reinosa',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['separador', 'banner', 'imagen', 'cta', 'boton', 'franja'],
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Texto_2025_Kyoto',
5
5
  category: 'Contenido de Texto',
6
6
  name: 'Bloque de texto HTML libre con título de 7 variantes y estilos globales 2025',
7
- description: 'Bloque de texto con contenido HTML libre (admite <p>, <h1>-<h4>, <ul>, <strong>, etc.) renderizado vía set:html, precedido opcionalmente por un título con 7 variantes de etiqueta/tamaño (Sin título; H1 40/48; H2 32/40; H2 24/32; H3 24/32; H3 20/28; H4 20/28). Los <p> y <h2> internos del HTML reciben estilos globales Inter/Poppins automáticamente',
7
+ description: 'Bloque de texto con contenido HTML libre (admite <p>, <h1>-<h4>, <ul>, <strong>, etc.) renderizado vía set:html, precedido opcionalmente por un título con 7 variantes de etiqueta/tamaño (Sin título; H1 40/48 (36/44 en móvil); H2 32/40 (28/36 en móvil); H2 24/32; H3 24/32; H3 20/28; H4 20/28). Los <p> y <h2> internos del HTML reciben estilos globales IBM Plex Sans/IBM Plex Serif automáticamente',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['texto', 'html', 'titulo', 'contenido'],
@@ -20,7 +20,7 @@ export const metadata: ComponentMetadata = {
20
20
  {
21
21
  name: 'tipo',
22
22
  type: 'select',
23
- help: 'Controla etiqueta HTML Y tamaño del título (van ligados). Todos los tipos usan Poppins semibold color #262626. "Sin título" NO muestra el título aunque "Texto del título" tenga valor. "H1" → <h1> a 40px / line-height 48px. "H2 32px" → <h2> a 32px / line-height 40px. "H2 32px Normal" → <h2> a 32px / line-height 40px con peso normal. "H2" → <h2> a 24px / line-height 32px. "H3 24px" → <h3> a 24px / line-height 32px (mismo tamaño visual que "H2" pero etiqueta HTML distinta). "H3" → <h3> a 20px / line-height 28px. "H4" → <h4> a 20px / line-height 28px (mismo tamaño visual que "H3" pero etiqueta HTML distinta)',
23
+ help: 'Controla etiqueta HTML Y tamaño del título (van ligados). Todos los tipos usan IBM Plex Serif semibold color #262626. "Sin título" NO muestra el título aunque "Texto del título" tenga valor. "H1" → <h1> a 40px / line-height 48px (36px / 44px en móvil). "H2 32px" → <h2> a 32px / line-height 40px (28px / 36px en móvil). "H2 32px Normal" → <h2> a 32px / line-height 40px (28px / 36px en móvil) con peso normal. "H2" → <h2> a 24px / line-height 32px. "H3 24px" → <h3> a 24px / line-height 32px (mismo tamaño visual que "H2" pero etiqueta HTML distinta). "H3" → <h3> a 20px / line-height 28px. "H4" → <h4> a 20px / line-height 28px (mismo tamaño visual que "H3" pero etiqueta HTML distinta)',
24
24
  label: 'Etiqueta del título',
25
25
  options: ['none', 'h1', 'h2-40', 'h2-32', 'h2-32-normal', 'h2', 'h3-24', 'h3', 'h4'],
26
26
  options_labels: ['Sin título', 'H1', 'H2 40px', 'H2 32px', 'H2 32px Normal', 'H2', 'H3 24px', 'H3', 'H4'],
@@ -29,7 +29,7 @@ export const metadata: ComponentMetadata = {
29
29
  {
30
30
  name: 'contentHTML',
31
31
  type: 'textArea',
32
- help: 'Contenido HTML del bloque (admite <p>, <h2>, <ul>, <strong>, etc.). Se renderiza con set:html. Los <p> internos adoptan estilo Inter 1em, los <h2> internos Poppins 1.5em semibold',
32
+ help: 'Contenido HTML del bloque (admite <p>, <h2>, <ul>, <strong>, etc.). Se renderiza con set:html. Los <p> internos adoptan estilo IBM Plex Sans 1em, los <h2> internos IBM Plex Serif 1.5em semibold',
33
33
  label: 'Contenido HTML',
34
34
  mandatory: false,
35
35
  example_value: '<p>La inteligencia artificial aplicada al Derecho permite automatizar tareas repetitivas, buscar jurisprudencia en segundos y redactar borradores de contratos con plantillas personalizables.</p>'
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Texto_2026_Alicante',
5
5
  category: 'Contenido de Texto',
6
6
  name: 'Bloque centrado con icono circular, título, descripción y botón CTA 2026',
7
- description: 'Bloque de contenido centrado con cuatro elementos verticales: (1) icono SVG fijo (campana de notificación azul) dentro de un chip circular con fondo #F2F3F8 y padding de 12px; (2) título h3 en Poppins 20px / 24px en desktop semibold; (3) descripción en Inter 16px; (4) botón CTA primario con fondo azul #2134F1, hover invertido (fondo blanco, texto azul). Todos los elementos (icono, descripción y botón) son ocultables independientemente. El título se renderiza siempre si tiene valor',
7
+ description: 'Bloque de contenido centrado con cuatro elementos verticales: (1) icono SVG fijo (campana de notificación azul) dentro de un chip circular con fondo #F2F3F8 y padding de 12px; (2) título h3 en IBM Plex Serif 20px / 24px en desktop semibold; (3) descripción en IBM Plex Sans 16px; (4) botón CTA primario con fondo azul #001978, hover invertido (fondo blanco, texto azul). Todos los elementos (icono, descripción y botón) son ocultables independientemente. El título se renderiza siempre si tiene valor',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['texto', 'icono', 'cta', 'boton', 'centrado'],
@@ -12,7 +12,7 @@ export const metadata: ComponentMetadata = {
12
12
  {
13
13
  name: 'title',
14
14
  type: 'text',
15
- help: 'Título principal del bloque (se renderiza como h3 en Poppins 20px en móvil / 24px en desktop, semibold). Admite HTML. Si está vacío, el h3 se renderiza vacío',
15
+ help: 'Título principal del bloque (se renderiza como h3 en IBM Plex Serif 20px en móvil / 24px en desktop, semibold). Admite HTML. Si está vacío, el h3 se renderiza vacío',
16
16
  label: 'Texto del título',
17
17
  mandatory: false,
18
18
  example_value: '¿Quieres saber más sobre GenIA-L?'
@@ -20,7 +20,7 @@ export const metadata: ComponentMetadata = {
20
20
  {
21
21
  name: 'description',
22
22
  type: 'text',
23
- help: 'Descripción que aparece debajo del título (Inter 16px, line-height 24px). Admite HTML. Solo se renderiza si "Mostrar descripción" está activado',
23
+ help: 'Descripción que aparece debajo del título (IBM Plex Sans 16px, line-height 24px). Admite HTML. Solo se renderiza si "Mostrar descripción" está activado',
24
24
  label: 'Texto de la descripción',
25
25
  mandatory: false,
26
26
  example_value: 'Solicita una demo personalizada y descubre cómo la IA jurídica puede transformar tu despacho.'
@@ -38,7 +38,7 @@ export const metadata: ComponentMetadata = {
38
38
  {
39
39
  name: 'showIco',
40
40
  type: 'boolean',
41
- help: 'Si está activado, muestra un icono SVG fijo (campana de notificación azul #2134F1) dentro de un chip circular (fondo #F2F3F8, padding 12px, border-radius 48px). Si está desactivado, NO se renderiza el chip y el bloque empieza directamente por el título sin hueco residual',
41
+ help: 'Si está activado, muestra un icono SVG fijo (campana de notificación azul #001978) dentro de un chip circular (fondo #F2F3F8, padding 12px, border-radius 48px). Si está desactivado, NO se renderiza el chip y el bloque empieza directamente por el título sin hueco residual',
42
42
  label: 'Mostrar icono',
43
43
  mandatory: false,
44
44
  options: ['false', 'true'],
@@ -58,7 +58,7 @@ export const metadata: ComponentMetadata = {
58
58
  {
59
59
  name: 'txtBtn',
60
60
  type: 'text',
61
- help: 'Texto del botón CTA primario. Solo se muestra si "Mostrar botón" está activado. Estilo: fondo azul #2134F1, texto blanco, hover invertido (fondo blanco con texto y borde azul)',
61
+ help: 'Texto del botón CTA primario. Solo se muestra si "Mostrar botón" está activado. Estilo: fondo azul #001978, texto blanco, hover invertido (fondo blanco con texto y borde azul)',
62
62
  label: 'Texto del botón',
63
63
  mandatory: false,
64
64
  example_value: 'Solicitar demo'
@@ -74,7 +74,7 @@ export const metadata: ComponentMetadata = {
74
74
  {
75
75
  name: 'color',
76
76
  type: 'text',
77
- help: 'Color de texto aplicado al título y a la descripción (vía clase Tailwind text-[${color}]). Acepta cualquier valor CSS válido: hex (#262626), rgb(), nombre de color, etc. Por defecto #262626. NO afecta al color del botón CTA ni del icono (ambos azul #2134F1 fijo)',
77
+ help: 'Color de texto aplicado al título y a la descripción (vía clase Tailwind text-[${color}]). Acepta cualquier valor CSS válido: hex (#262626), rgb(), nombre de color, etc. Por defecto #262626. NO afecta al color del botón CTA ni del icono (ambos azul #001978 fijo)',
78
78
  label: 'Color del texto',
79
79
  mandatory: false,
80
80
  example_value: '#262626'
@@ -28,10 +28,10 @@ export const metadata: ComponentMetadata = {
28
28
  {
29
29
  name: 'titleTag',
30
30
  type: 'select',
31
- help: 'Etiqueta HTML y estilo visual del título. Variantes: "h1" 36-56px con padding lateral; "h1-40" 40px con mb-8; "h2" 36-40px; "h3" 2xl semibold; "h4" 20px semibold; "h5" y "h6" sin estilos complejos. La alineación horizontal se controla con el campo "Alineación".',
31
+ help: 'Etiqueta HTML y estilo visual del título. Variantes: "h1" 40-56px con padding lateral; "h1-40" 36-40px con mb-8; "h2" 36-40px; "h3" 2xl semibold; "h4" 20px semibold; "h5" y "h6" sin estilos complejos. La alineación horizontal se controla con el campo "Alineación".',
32
32
  label: 'Etiqueta del título',
33
33
  options: ['h1', 'h1-40', 'h2', 'h3', 'h4', 'h5', 'h6'],
34
- options_labels: ['H1 (36-56px)', 'H1 40px', 'H2 (36-40px)', 'H3 (2xl semibold)', 'H4 (20px semibold)', 'H5', 'H6'],
34
+ options_labels: ['H1 (40-56px)', 'H1 36-40px', 'H2 (36-40px)', 'H3 (2xl semibold)', 'H4 (20px semibold)', 'H5', 'H6'],
35
35
  example_value: 'h2'
36
36
  },
37
37
  {
@@ -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 (Inter 16px, centrada). Admite HTML. Solo se muestra si tiene valor',
23
+ help: 'Descripción opcional debajo del título (IBM Plex Sans 16px, centrada). 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,10 +28,10 @@ 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" 36-56px centrado, "h1-40" 40px centrado mb-8, "h1-40-left" 40px izquierda, "h1-home" 36-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" 32px izquierda, "h3-40-left" 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, "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',
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
- options_labels: ['H1 (36-56px centrado)', 'H1 40px centrado', 'H1 40px izquierda', 'H1 home', 'H2 36-40px centrado', 'H2 badge', 'H2 con padding', 'H2 padding max-900', 'H3 centrado', 'H3 32px izquierda', 'H3 40px izquierda', 'H4', 'H5', 'H6', 'Párrafo'],
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'],
35
35
  example_value: 'h1'
36
36
  },
37
37
  {
@@ -63,18 +63,18 @@ export const metadata: ComponentMetadata = {
63
63
  {
64
64
  name: 'subdescription',
65
65
  type: 'text',
66
- help: 'Sub-descripción adicional (Poppins 20px, centrada). Solo se muestra si tiene valor. Aparece debajo de "description". Admite HTML',
67
- label: 'Sub-descripción (Poppins 20px)',
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)',
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. "Inter" (por defecto) o "Poppins". No afecta a los títulos (h1–h6), que siempre usan Poppins',
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
75
  label: 'Tipografía de la descripción',
76
76
  options: ['inter', 'poppins'],
77
- options_labels: ['Inter', 'Poppins'],
77
+ options_labels: ['IBM Plex Sans', 'IBM Plex Serif'],
78
78
  example_value: 'inter'
79
79
  },
80
80
  {
@@ -4,7 +4,7 @@ export const metadata: ComponentMetadata = {
4
4
  component_name: 'Titulo_2025_Santorini',
5
5
  category: 'Título',
6
6
  name: 'Pastilla mini en mayúsculas con color azul corporativo 2025',
7
- description: 'Pequeño <p> con texto renderizado en MAYÚSCULAS (CSS uppercase), color azul oscuro corporativo (#001978), semibold, tamaño pequeño (14px) y tracking ampliado. Pensado como etiqueta/badge de categoría por encima de títulos de contenido. No admite HTML: el texto se renderiza como texto plano',
7
+ description: 'Pequeño <p> con texto renderizado en MAYÚSCULAS (CSS uppercase), color azul oscuro corporativo (#001978), peso regular, tamaño pequeño (14px) y tracking ampliado. Pensado como etiqueta/badge de categoría por encima de títulos de contenido. No admite HTML: el texto se renderiza como texto plano',
8
8
  framework: 'Astro',
9
9
  priority: 1,
10
10
  tags: ['titulo', 'texto', 'badge', 'etiqueta', 'pastilla'],
@@ -48,12 +48,12 @@ const sizeClass = sizeClassMap[imageSize] ?? "max-w-[240px] max-h-[240px]";
48
48
 
49
49
  <div class="w-full h-auto flex items-center self-stretch">
50
50
  <div class="w-full flex flex-col items-start gap-2">
51
- <p class="font-inter text-[#262626] text-base font-normal leading-6 underline">
51
+ <p class="font-body text-[#262626] text-base font-normal leading-6 underline">
52
52
  {urlAuthor
53
53
  ? <a href={urlAuthor} class="hover:opacity-80 transition-opacity" set:html={nameAuthor}></a>
54
54
  : <Fragment set:html={nameAuthor} />}
55
55
  </p>
56
- <p class="font-inter text-[#363942] text-sm font-normal leading-5" set:html={descriptionAuthor}></p>
56
+ <p class="font-body text-[#363942] text-sm font-normal leading-[21px]" set:html={descriptionAuthor}></p>
57
57
  </div>
58
58
  </div>
59
59
  </div>
@@ -70,12 +70,12 @@ const sizeClass = sizeClassMap[imageSize] ?? "max-w-[240px] max-h-[240px]";
70
70
 
71
71
  <div class="w-full h-auto flex items-center self-stretch">
72
72
  <div class="w-full flex flex-col items-start gap-2">
73
- <p class="font-inter text-[#262626] text-base font-normal leading-6 underline">
73
+ <p class="font-body text-[#262626] text-base font-normal leading-6 underline">
74
74
  {urlAuthor
75
75
  ? <a href={urlAuthor} class="hover:opacity-80 transition-opacity" set:html={nameAuthor}></a>
76
76
  : <Fragment set:html={nameAuthor} />}
77
77
  </p>
78
- <p class="font-inter text-[#363942] text-sm font-normal leading-5" set:html={descriptionAuthor}></p>
78
+ <p class="font-body text-[#363942] text-sm font-normal leading-[21px]" set:html={descriptionAuthor}></p>
79
79
  </div>
80
80
  </div>
81
81
  </div>
@@ -28,11 +28,11 @@ const hasModal = items.some((btn) => isTrue(btn.openModal));
28
28
  const imageModalUrl = extractImageUrl(imageModal);
29
29
  const randomId = Math.floor(Math.random() * 1000);
30
30
 
31
- // Estilos del diseño de Figma (Button / Medium): 48px alto, radio 8px, Inter 16px semibold, sombra "Raised".
32
- const baseClass = 'inline-flex items-center justify-center h-12 px-4 gap-1 rounded-lg font-inter text-base font-semibold leading-6 no-underline hover:underline transition-all duration-300 cursor-pointer shadow-[0_2px_4px_-2px_rgba(0,0,0,0.08),0_4px_8px_-2px_rgba(0,0,0,0.04)]';
31
+ // Estilos del diseño de Figma (Button / Medium): 48px alto, radio 8px, IBM Plex Sans 16px semibold, sombra "Raised".
32
+ const baseClass = 'inline-flex items-center justify-center h-12 px-4 gap-1 rounded-lg font-body text-base font-semibold leading-6 no-underline hover:underline transition-all duration-300 cursor-pointer shadow-[0_2px_4px_-2px_rgba(0,0,0,0.08),0_4px_8px_-2px_rgba(0,0,0,0.04)]';
33
33
  const typeClass = {
34
- primary: 'bg-[#2134F1] text-white',
35
- secondary: 'bg-[rgba(255,255,255,0.01)] border border-[#2134F1] text-[#2134F1]',
34
+ primary: 'bg-[#001978] text-white',
35
+ secondary: 'bg-[rgba(255,255,255,0.01)] border border-[#001978] text-[#001978]',
36
36
  };
37
37
  ---
38
38
 
@@ -67,8 +67,8 @@ const typeClass = {
67
67
  </div>
68
68
  )}
69
69
  <div class={imageModalUrl ? "w-full lg:w-2/3" : "w-full"}>
70
- <h2 class="font-poppins text-[#262626] text-[28px] lg:text-[32px] font-normal text-left leading-10 mb-8">{titleModal}</h2>
71
- <div class="font-inter text-base font-normal leading-6 mb-8" set:html={descriptionModal} />
70
+ <h2 class="font-heading text-[#262626] text-[28px] leading-9 lg:text-[32px] lg:leading-10 font-normal text-left mb-8">{titleModal}</h2>
71
+ <div class="font-body text-base font-normal leading-6 mb-8" set:html={descriptionModal} />
72
72
  <div id={`lf2-form-container-${randomId}`} class="w-full">
73
73
  <!--FORMULARIO -->
74
74
  </div>
@@ -4,14 +4,14 @@ const {
4
4
  buttonText = "xxx",
5
5
  buttonUrl = "#",
6
6
  frontColor = 'white',
7
- backColor = '#2134F1',
8
- borderColor = '#2134F1',
7
+ backColor = '#001978',
8
+ borderColor = '#001978',
9
9
  } = Astro.props;
10
10
 
11
11
  ---
12
12
  <a
13
13
  href={buttonUrl}
14
- class="text-base font-semibold font-inter inline-block mt-6 p-3 px-5 h-12 rounded-xl transition-colors duration-300 border border-solid w-fit"
14
+ class="text-base leading-6 font-semibold font-body inline-block mt-6 p-3 px-5 h-12 rounded-xl transition-colors duration-300 border border-solid w-fit"
15
15
  style={`border-color: ${borderColor}; background-color: ${backColor}; color: ${frontColor};`}
16
16
  onmouseover={`this.style.backgroundColor='${frontColor}'; this.style.color='${backColor}';`}
17
17
  onmouseout={`this.style.backgroundColor='${backColor}'; this.style.color='${frontColor}';`}