libreria-astro-lefebvre 0.0.5 → 0.0.7

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 (91) hide show
  1. package/README.md +46 -46
  2. package/package.json +30 -30
  3. package/src/carbins/AstroButton.ts +34 -10
  4. package/src/carbins/CTA_2025_Formentera.ts +48 -0
  5. package/src/carbins/Cabecera_2025_Barcelona.ts +34 -0
  6. package/src/carbins/Cabecera_2025_Madrid.ts +34 -0
  7. package/src/carbins/Contenido_2025_Alcorcon.ts +76 -0
  8. package/src/carbins/Contenido_2025_Granada.ts +59 -0
  9. package/src/carbins/Contenido_2025_Malaga.ts +100 -0
  10. package/src/carbins/CorpFooter.ts +13 -0
  11. package/src/carbins/CorpHero.ts +20 -0
  12. package/src/carbins/FooterCorporativo.ts +13 -0
  13. package/src/carbins/Footer_2025_Napoles.ts +12 -0
  14. package/src/carbins/Formulario_2025_Seul.ts +56 -0
  15. package/src/carbins/GeometricShapeCard.ts +19 -8
  16. package/src/carbins/HeaderCorporativo.ts +34 -0
  17. package/src/carbins/ImageTextSimple.ts +45 -0
  18. package/src/carbins/Imagen_2025_Bogota.ts +69 -0
  19. package/src/carbins/ReactButton.ts +32 -8
  20. package/src/carbins/Repetidor_2025_Cabra.ts +12 -0
  21. package/src/carbins/Repetidor_2025_Dubai.ts +48 -0
  22. package/src/carbins/Repetidor_2025_Estocolmo.ts +12 -0
  23. package/src/carbins/Repetidor_2025_Menorca.ts +75 -0
  24. package/src/carbins/Repetidor_2025_Michigan.ts +21 -0
  25. package/src/carbins/Repetidor_2025_Orcasitas.ts +34 -0
  26. package/src/carbins/Repetidor_2025_Oslo.ts +12 -0
  27. package/src/carbins/Repetidor_2025_Quito.ts +20 -0
  28. package/src/carbins/Repetidor_2025_Seatle.ts +12 -0
  29. package/src/carbins/Repetidor_2025_Tokyo.ts +48 -0
  30. package/src/carbins/Repetidor_2025_Ubeda.ts +12 -0
  31. package/src/carbins/Repetidor_2025_Yakarta.ts +12 -0
  32. package/src/carbins/Separador_2025_Reinosa.ts +12 -0
  33. package/src/carbins/SpectrumSeparator.ts +12 -0
  34. package/src/carbins/TestPadre.ts +20 -0
  35. package/src/carbins/TextBox.ts +27 -0
  36. package/src/carbins/TextImageBackground.ts +47 -0
  37. package/src/carbins/TextImageBlock.ts +62 -0
  38. package/src/carbins/TextImageCard.ts +44 -0
  39. package/src/carbins/TextImageHeader.ts +68 -0
  40. package/src/carbins/Titulo_2025_Algeciras.ts +43 -0
  41. package/src/carbins/Titulo_2025_Santorini.ts +20 -0
  42. package/src/carbins/VideoAutoplay.ts +36 -0
  43. package/src/carbins/VueButton.ts +35 -11
  44. package/src/components/Astro/Button.astro +5 -5
  45. package/src/components/Astro/CTA_2025_Formentera.astro +20 -0
  46. package/src/components/Astro/Cabecera_2025_Barcelona.astro +17 -0
  47. package/src/components/Astro/Cabecera_2025_Madrid.astro +147 -0
  48. package/src/components/Astro/Contenido_2025_Alcorcon.astro +46 -0
  49. package/src/components/Astro/Contenido_2025_Granada.astro +67 -0
  50. package/src/components/Astro/Contenido_2025_Malaga.astro +125 -0
  51. package/src/components/Astro/CorpFooter.astro +107 -0
  52. package/src/components/Astro/CorpHero.astro +21 -0
  53. package/src/components/Astro/CorpNavigation.astro +87 -0
  54. package/src/components/Astro/FooterCorporativo.astro +82 -0
  55. package/src/components/Astro/Footer_2025_Napoles.astro +128 -0
  56. package/src/components/Astro/Formulario_2025_Seul.astro +63 -0
  57. package/src/components/Astro/GeometricShape.astro +0 -0
  58. package/src/components/Astro/GeometricShapeCard.astro +0 -0
  59. package/src/components/Astro/HeaderCorporativo.astro +26 -0
  60. package/src/components/Astro/ImageTextSimple.astro +56 -0
  61. package/src/components/Astro/Imagen_2025_Bogota.astro +43 -0
  62. package/src/components/Astro/Repetidor_2025_Cabra.astro +121 -0
  63. package/src/components/Astro/Repetidor_2025_Dubai.astro +30 -0
  64. package/src/components/Astro/Repetidor_2025_Estocolmo.astro +34 -0
  65. package/src/components/Astro/Repetidor_2025_Menorca.astro +42 -0
  66. package/src/components/Astro/Repetidor_2025_Michigan.astro +24 -0
  67. package/src/components/Astro/Repetidor_2025_Orcasitas.astro +189 -0
  68. package/src/components/Astro/Repetidor_2025_Oslo.astro +54 -0
  69. package/src/components/Astro/Repetidor_2025_Quito.astro +43 -0
  70. package/src/components/Astro/Repetidor_2025_Seatle.astro +32 -0
  71. package/src/components/Astro/Repetidor_2025_Tokyo.astro +55 -0
  72. package/src/components/Astro/Repetidor_2025_Ubeda.astro +19 -0
  73. package/src/components/Astro/Repetidor_2025_Yakarta.astro +136 -0
  74. package/src/components/Astro/Separador_2025_Reinosa.astro +4 -0
  75. package/src/components/Astro/SpectrumSeparator.astro +11 -0
  76. package/src/components/Astro/TestHijo.astro +5 -0
  77. package/src/components/Astro/TestPadre.astro +7 -0
  78. package/src/components/Astro/TextBox.astro +11 -0
  79. package/src/components/Astro/TextImageBackground.astro +18 -0
  80. package/src/components/Astro/TextImageBlock.astro +29 -0
  81. package/src/components/Astro/TextImageCard.astro +25 -0
  82. package/src/components/Astro/TextImageHeader.astro +31 -0
  83. package/src/components/Astro/Titulo_2025_Algeciras.astro +27 -0
  84. package/src/components/Astro/Titulo_2025_Santorini.astro +9 -0
  85. package/src/components/Astro/VideoAutoplay.astro +20 -0
  86. package/src/components/React/ReactButton.jsx +0 -0
  87. package/src/components/Vue/VueButton.vue +0 -0
  88. package/src/generated/componentRegistry.ts +86 -12
  89. package/src/index.ts +113 -5
  90. package/src/interfaces/types.ts +3 -0
  91. package/src/lib/functions.js +0 -0
@@ -0,0 +1,128 @@
1
+ ---
2
+ import Separador_2025_Reinosa from './Separador_2025_Reinosa.astro';
3
+
4
+ const categories = [
5
+ {
6
+ name: 'Lefebvre',
7
+ link: '#',
8
+ subcategories: [
9
+ {name: 'Lefebvre.es', link: 'https://lefebvre.es/quienes-somos/'},
10
+ {name: 'Conócenos', link: 'https://lefebvre.es/cultura-empresarial/equipo-direccion/'},
11
+ {name: 'Trabaja con nosotros', link: 'https://lefebvre.es/talento'},
12
+ {name: 'Contacto Lefebvre', link: 'https://lefebvre.es/contacto/'},
13
+ {name: 'Canal ético', link: '#'},
14
+ {name: 'Partners', link: '#'}
15
+ ],
16
+ },
17
+ {
18
+ name: 'Explora GenIA-L',
19
+ link: '#',
20
+ subcategories: [
21
+ {name: 'IA Jurídica', link: '#'},
22
+ {name: 'Casos reales', link: '#'},
23
+ {name: 'Novedades y recursos', link: '#'},
24
+ {name: 'Preguntas Frecuentes', link: '#'},
25
+ {name: 'Contacto GenIA-L', link: '#'}
26
+ ],
27
+ },
28
+ {
29
+ name: 'Portales Lefebvre',
30
+ link: '#',
31
+ subcategories: [
32
+ {name: 'GenIA-L', link: '#'},
33
+ {name: 'Formacion', link: '#'},
34
+ {name: 'ElDerecho.com', link: '#'},
35
+ {name: 'EsapcioAsesoría.com', link: '#'},
36
+ {name: 'Derecholocal.es', link: '#'},
37
+ {name: 'ESG', link: '#'}
38
+ ],
39
+ },
40
+ {
41
+ name: 'Tienda Online',
42
+ link: '#',
43
+ subcategories: [
44
+ {name: 'Nuestros productos', link: '#'}
45
+ ],
46
+ },
47
+
48
+ ];
49
+ ---
50
+
51
+ <footer>
52
+ <div class="bg-white text-[#363942] py-10 border-t border-gray-300">
53
+ <div class="max-w-7xl flex-wrap md:flex-nowrap w-full px-4 flex items-start mx-auto">
54
+ {categories.map(category => (
55
+ <div class="w-1/2 flex-nowrap px-[16px] flex-1">
56
+ <div class="text-xl text-[#262626] font-semibold mb-4">{category.name}</div>
57
+ <ul>
58
+ {category.subcategories.length > 0 ? (
59
+ category.subcategories.map(sub => (
60
+ <li>
61
+ <a href={sub.link} class="text-[#363942] hover:underline transition-colors duration-200 block py-1" target="_blank">
62
+ {sub.name}
63
+ </a>
64
+ </li>
65
+ ))
66
+ ) : (
67
+ <li>
68
+ <a href={category.link} class="text-[#363942] hover:underline transition-colors duration-200 block py-1" target="_blank">
69
+ {category.name}
70
+ </a>
71
+ </li>
72
+ )}
73
+ </ul>
74
+ </div>
75
+ ))}
76
+ </div>
77
+ </div>
78
+ <div class="bg-[white] text-[#262626] border-t border-gray-300">
79
+ <div class="flex flex-col md:flex-row gap-8 max-w-7xl mx-auto p-[32px]">
80
+ <div class="flex flex-col flex-[4_4_0%]">
81
+ <div class="mb-8">
82
+ <img src="https://assets.lefebvre.es/media/logos-2/svg/lefebvre.svg" alt="Logo" class="h-10" />
83
+ </div>
84
+ <div>
85
+ <ul class="flex flex-wrap gap-2 text-sm text-gray-800">
86
+ <li>
87
+ <span class="flex items-center gap-1">
88
+ &copy; {new Date().getFullYear()} Lefebvre. Todos los derechos reservados.
89
+ </span>
90
+ </li>
91
+ <li><a href="https://lefebvre.es/aviso-legal/" class="ml-[8px] hover:underline">Aviso legal</a></li> ·
92
+ <li><a href="https://lefebvre.es/politica-privacidad/" class="hover:underline">Política de privacidad</a></li> ·
93
+ <li><a href="https://lefebvre.es/politica-de-cookies/" class="hover:underline">Política de cookies</a></li> ·
94
+ <li><a href="https://lefebvre.es/condiciones/" class="hover:underline">Condiciones de contratación</a></li>
95
+ </ul>
96
+ </div>
97
+ </div>
98
+ <div class="flex flex-1 items-start justify-start md:justify-end">
99
+ <a href="https://www.instagram.com/lefebvre_es/" class="mx-2 first-of-type:ml-0" aria-label="Instagram">
100
+ <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" fill="none">
101
+ <path d="M21.2725 0C22.5262 0 23.7287 0.49823 24.6152 1.38477C25.5018 2.2713 26 3.47379 26 4.72754V21.2725C26 22.5262 25.5018 23.7287 24.6152 24.6152C23.7287 25.5018 22.5262 26 21.2725 26H4.72754C3.47379 26 2.2713 25.5018 1.38477 24.6152C0.49823 23.7287 0 22.5262 0 21.2725V4.72754C0 3.47379 0.49823 2.2713 1.38477 1.38477C2.2713 0.49823 3.47379 0 4.72754 0H21.2725ZM8.10742 3.5459C5.58811 3.5459 3.5459 5.58811 3.5459 8.10742V17.8926C3.5459 20.4119 5.58811 22.4541 8.10742 22.4541H17.8926C20.4119 22.4541 22.4541 20.4119 22.4541 17.8926V8.10742C22.4541 5.58811 20.4119 3.5459 17.8926 3.5459H8.10742ZM17.8926 5.3291C19.4267 5.3291 20.6709 6.57331 20.6709 8.10742V17.8926C20.6709 19.4267 19.4267 20.6709 17.8926 20.6709H8.10742C6.57331 20.6709 5.3291 19.4267 5.3291 17.8926V8.10742C5.3291 6.57331 6.57331 5.3291 8.10742 5.3291H17.8926ZM13 8.30273C11.7541 8.30273 10.5597 8.79775 9.67871 9.67871C8.79775 10.5597 8.30273 11.7541 8.30273 13C8.30274 14.2459 8.79775 15.4403 9.67871 16.3213C10.5597 17.2022 11.7541 17.6973 13 17.6973C14.2459 17.6973 15.4403 17.2022 16.3213 16.3213C17.2022 15.4403 17.6973 14.2459 17.6973 13C17.6973 11.7541 17.2022 10.5597 16.3213 9.67871C15.4403 8.79775 14.2459 8.30274 13 8.30273ZM13 10.0859C13.7728 10.0859 14.5141 10.393 15.0605 10.9395C15.607 11.4859 15.9141 12.2272 15.9141 13C15.9141 13.7728 15.607 14.5141 15.0605 15.0605C14.5141 15.607 13.7728 15.9141 13 15.9141C12.2272 15.9141 11.4859 15.607 10.9395 15.0605C10.393 14.5141 10.0859 13.7728 10.0859 13C10.0859 12.2272 10.393 11.4859 10.9395 10.9395C11.4859 10.393 12.2272 10.0859 13 10.0859ZM17.6973 7.41016C17.2048 7.41016 16.8059 7.80937 16.8057 8.30176C16.8057 8.79436 17.2047 9.19434 17.6973 9.19434C18.1898 9.1943 18.5889 8.79434 18.5889 8.30176C18.5886 7.80939 18.1897 7.4102 17.6973 7.41016Z" fill="#363942"/>
102
+ </svg>
103
+ </a>
104
+ <a href="https://www.facebook.com/Lefebvre.ES/" class="mx-2" aria-label="Facebook">
105
+ <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" fill="none">
106
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4.72727 0C3.47352 0 2.27112 0.498051 1.38459 1.38459C0.498051 2.27112 0 3.47352 0 4.72727V21.2727C0 22.5265 0.498051 23.7289 1.38459 24.6154C2.27112 25.502 3.47352 26 4.72727 26H21.2727C22.5265 26 23.7289 25.502 24.6154 24.6154C25.502 23.7289 26 22.5265 26 21.2727V4.72727C26 3.47352 25.502 2.27112 24.6154 1.38459C23.7289 0.498051 22.5265 0 21.2727 0H4.72727ZM10.2605 7.41355C10.2605 6.38787 10.6679 5.40418 11.3931 4.67881C12.1182 3.95344 13.1018 3.54577 14.1275 3.54545H17.5665C17.8029 3.54545 17.9955 3.73809 17.9955 3.97564V7.41355C17.9955 7.64991 17.8029 7.84255 17.5665 7.84255H15.847C15.6777 7.84255 15.5101 7.87591 15.3538 7.94072C15.1974 8.00553 15.0553 8.10052 14.9357 8.22026C14.8161 8.34001 14.7212 8.48215 14.6565 8.63858C14.5919 8.79501 14.5587 8.96264 14.5588 9.13191V10.4213H17.5665C17.6318 10.4215 17.6961 10.4365 17.7546 10.4653C17.8132 10.494 17.8645 10.5357 17.9045 10.5871C17.9446 10.6386 17.9725 10.6985 17.986 10.7623C17.9995 10.8261 17.9983 10.8922 17.9825 10.9555L17.1234 14.3945C17.0999 14.4873 17.0461 14.5696 16.9705 14.6283C16.8949 14.6869 16.8019 14.7186 16.7062 14.7184H14.5576V22.0244C14.5576 22.1385 14.5123 22.2479 14.4316 22.3285C14.351 22.4092 14.2415 22.4545 14.1275 22.4545H10.6895C10.5757 22.4542 10.4665 22.4088 10.3861 22.3281C10.3057 22.2475 10.2605 22.1383 10.2605 22.0244V14.7195H8.112C7.99791 14.7195 7.88849 14.6742 7.80782 14.5935C7.72714 14.5129 7.68182 14.4035 7.68182 14.2894V10.8503C7.68182 10.6139 7.87446 10.4213 8.112 10.4213H10.2605V7.41355Z" fill="#363942"/>
107
+ </svg>
108
+ </a>
109
+ <a href="https://www.linkedin.com/company/lefebvre_es" class="mx-2" aria-label="LinkedIn">
110
+ <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" fill="none">
111
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4.72727 0C3.47352 0 2.27112 0.498051 1.38459 1.38459C0.498051 2.27112 0 3.47352 0 4.72727V21.2727C0 22.5265 0.498051 23.7289 1.38459 24.6154C2.27112 25.502 3.47352 26 4.72727 26H21.2727C22.5265 26 23.7289 25.502 24.6154 24.6154C25.502 23.7289 26 22.5265 26 21.2727V4.72727C26 3.47352 25.502 2.27112 24.6154 1.38459C23.7289 0.498051 22.5265 0 21.2727 0H4.72727ZM6.15136 8.16636C6.68578 8.16636 7.1983 7.95407 7.57618 7.57618C7.95407 7.1983 8.16636 6.68578 8.16636 6.15136C8.16636 5.61695 7.95407 5.10443 7.57618 4.72654C7.1983 4.34866 6.68578 4.13636 6.15136 4.13636C5.61695 4.13636 5.10443 4.34866 4.72654 4.72654C4.34866 5.10443 4.13636 5.61695 4.13636 6.15136C4.13636 6.68578 4.34866 7.1983 4.72654 7.57618C5.10443 7.95407 5.61695 8.16636 6.15136 8.16636ZM8.16518 21.8636V9.77718H4.13636V21.8636H8.16636H8.16518ZM13.403 9.77718H9.77718V21.8636H13.403V14.5718C13.8698 13.8131 14.6758 13 15.8198 13C17.4318 13 17.8348 14.612 17.8348 15.418V21.8636H21.8636V15.418C21.8636 13.2576 20.9217 9.77718 17.4318 9.77718C15.2124 9.77718 13.9809 10.5867 13.4018 11.3455V9.77718H13.403Z" fill="#363942"/>
112
+ </svg>
113
+ </a>
114
+ <a href="https://twitter.com/Lefebvre_ES" class="mx-2" aria-label="X.com">
115
+ <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" fill="none">
116
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4.72727 0C2.11647 0 0 2.11647 0 4.72727V21.2727C0 23.8835 2.11647 26 4.72727 26H21.2727C23.8835 26 26 23.8835 26 21.2727V4.72727C26 2.11647 23.8835 0 21.2727 0H4.72727ZM4.3322 4.13636C4.12496 4.2135 3.9501 4.36692 3.84804 4.57163C3.69807 4.8724 3.73113 5.23213 3.9334 5.50055L10.5683 14.3054L3.57681 21.8029C3.55848 21.8226 3.54122 21.8428 3.52502 21.8636H5.9441L11.6517 15.743L16.0401 21.5668C16.143 21.7033 16.2816 21.8053 16.4377 21.8636H21.664C21.8706 21.7863 22.045 21.6332 22.1468 21.4288C22.2968 21.1281 22.2638 20.7683 22.0615 20.4999L15.4265 11.695L22.475 4.13636H20.0511L14.3431 10.2574L9.95469 4.43369C9.85153 4.2968 9.71247 4.19464 9.55583 4.13636H4.3322ZM17.19 20.147L6.41905 5.85347H8.80488L19.5759 20.147H17.19Z" fill="#363942"/>
117
+ </svg>
118
+ </a>
119
+ <a href="https://www.youtube.com/c/lefebvre_es" class="mx-2" aria-label="YouTube">
120
+ <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" fill="none">
121
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4.72727 0C3.47352 0 2.27112 0.498051 1.38459 1.38459C0.498051 2.27112 0 3.47352 0 4.72727V21.2727C0 22.5265 0.498051 23.7289 1.38459 24.6154C2.27112 25.502 3.47352 26 4.72727 26H21.2727C22.5265 26 23.7289 25.502 24.6154 24.6154C25.502 23.7289 26 22.5265 26 21.2727V4.72727C26 3.47352 25.502 2.27112 24.6154 1.38459C23.7289 0.498051 22.5265 0 21.2727 0H4.72727ZM4.13636 13C4.13636 11.7307 4.19545 10.5335 4.27464 9.529C4.3251 8.80617 4.63522 8.12596 5.1478 7.61382C5.66038 7.10167 6.34085 6.79213 7.06373 6.74227C9.03965 6.60944 11.0196 6.54637 13 6.55318C15.5492 6.55318 17.5051 6.64064 18.9363 6.74227C19.6591 6.79213 20.3396 7.10167 20.8522 7.61382C21.3648 8.12596 21.6749 8.80617 21.7254 9.529C21.8034 10.5335 21.8636 11.7307 21.8636 13C21.8636 14.3154 21.7998 15.5527 21.7171 16.5785C21.5989 18.0428 20.4833 19.1608 19.0438 19.2613C17.0319 19.3919 15.0161 19.4538 13 19.4468C10.426 19.4468 8.40273 19.3617 6.95618 19.2613C5.51673 19.1608 4.40109 18.0428 4.28291 16.5785C4.18679 15.3881 4.1379 14.1943 4.13636 13ZM10.7971 9.99227L15.8198 13L10.7971 16.0089V9.99109V9.99227Z" fill="#363942"/>
122
+ </svg>
123
+ </a>
124
+ </div>
125
+ </div>
126
+ </div>
127
+ <Separador_2025_Reinosa />
128
+ </footer>
@@ -0,0 +1,63 @@
1
+ ---
2
+
3
+ const {
4
+ title,
5
+ description = "",
6
+ showImage = false,
7
+ orientation = "left",
8
+ imageSrc,
9
+ lf2FormTitle = "Formulario de contacto",
10
+ } = Astro.props;
11
+
12
+ const idTargetLf2 = 'lf2-form-' + Math.random().toString(36).substring(2, 15);
13
+ ---
14
+
15
+
16
+
17
+ <div class="w-full flex flex-col md:flex-row px-6 md:px-4 lg:px-0 gap-8">
18
+ <div class="max-w-7xl w-full mx-auto flex justify-start mb-8 flex-col">
19
+ {showImage ? (
20
+ <article class="flex flex-col items-center justify-center py-6">
21
+ <div class={`flex-col md:flex ${orientation === 'left' ? 'flex-row' : 'flex-row-reverse'} w-full items-start gap-4 justify-center`}>
22
+ <div class="w-full md:w-1/3 flex justify-start mb-8 flex-col">
23
+ <div id={idTargetLf2} class="w-full flex flex-col mx-auto gap-3"></div>
24
+ </div>
25
+ <div class={`w-full md:w-1/2 p-0 md:p-4 flex items-center ${orientation === 'left' ? 'justify-end' : 'justify-start'}`}>
26
+ <img src={imageSrc} alt={title} class="w-full md:w-4/5 h-auto rounded-lg" />
27
+ </div>
28
+ </div>
29
+ </article>
30
+ ) : (
31
+ <article class="flex flex-col items-center justify-center py-6">
32
+ <div class={`flex-col md:flex ${orientation === 'left' ? 'flex-row' : 'flex-row-reverse'} w-full items-start gap-4 justify-center`}>
33
+ <div class="w-full md:w-1/3 flex justify-start mb-8 flex-col">
34
+ <p class="font-poppins text-[#262626] text-[32px] font-semibold text-left leading-[40px] mb-[16px] text-wrap md:text-nowrap">{title}</p>
35
+ <p>{description}</p>
36
+ </div>
37
+ <div class={`w-full md:w-1/2 p-0 md:p-4 flex items-center ${orientation === 'left' ? 'justify-end' : 'justify-start'}`}>
38
+ <div id={idTargetLf2} class="w-full flex flex-col mx-auto gap-3"></div>
39
+ </div>
40
+ </div>
41
+ </article>
42
+ )}
43
+ </div>
44
+ </div>
45
+
46
+
47
+ <script is:client define:vars={{ idTargetLf2 , lf2FormTitle}}>
48
+ document.addEventListener('DOMContentLoaded', () => {
49
+ let configLf2 = {
50
+ fake: true,
51
+ formulario: lf2FormTitle,
52
+ bootstrap: false,
53
+ target: '#'+idTargetLf2,
54
+ defaultparameters: {},
55
+ };
56
+ try {
57
+ apiManager.pintarFormularioAutogestionado(configLf2);
58
+ } catch (error) {
59
+ var apiManager = new LeadformApiManagerClass();
60
+ apiManager.pintarFormularioAutogestionado(configLf2);
61
+ }
62
+ });
63
+ </script>
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ ---
2
+ const {
3
+ logo = 'https://espacioasesoria.com/wp-content/themes/lf-espacioasesoria-theme/src/images/logo-espacio-asesoria.png',
4
+ alt = 'EspacioAsesoría',
5
+ showLefebvreLogo = true
6
+ } = Astro.props;
7
+
8
+
9
+ ---
10
+
11
+ <header class="z-9999 relative">
12
+ <nav class="bg-white border-gray-200 px-4 lg:px-6 py-2.5 dark:bg-gray-800">
13
+ <div class="flex flex-wrap justify-between items-center mx-auto max-w-screen-xl">
14
+
15
+ <a href="/" class="flex justify-between items-center">
16
+ <img src={logo} class="" alt={alt}/>
17
+ </a>
18
+
19
+
20
+ {showLefebvreLogo && (
21
+ <img src="https://assets.lefebvre.es/media/logos-2/svg/lefebvre.svg" class="" alt="Lefebvre"/>
22
+ )}
23
+
24
+ </div>
25
+ </nav>
26
+ </header>
@@ -0,0 +1,56 @@
1
+ ---
2
+ const {
3
+ image,
4
+ title,
5
+ video ,
6
+ description,
7
+ } = Astro.props;
8
+ ---
9
+
10
+ <!-- Componente que sirve para las páginas soluciones-profesionales y conocenos entre otras. Si se le pasa por parámetro una imagen, la muestra a la izquierda y el texto a la derecha. Si se le pasa un vídeo, muestra el vídeo a la izquierda y el texto a la derecha. -->
11
+
12
+ <div class="max-w-7xl mx-auto px-4">
13
+ <div class="w-full bg-white mt-[-60px] z-10 relative">
14
+ <div class="flex flex-col lg:flex-row p-0 lg:p-20 mt-4 lg:mt-0">
15
+
16
+ {image
17
+ ? (
18
+ <div class="w-full lg:w-1/2 lg:mx-4 mask-add mask-[url(https://assets.lefebvre.es/media/logos-2/svg/lefebvre-iso.svg)] mask-no-repeat mask-center bg-cover" style={`background-image: url('${image}')`} id="rotating-image"></div>
19
+ )
20
+ : video
21
+ ? (
22
+ <div class="w-full lg:w-1/2 lg:mx-4 flex items-center justify-center">
23
+ <iframe src={video} title="YouTube video" allowfullscreen class="w-full aspect-video"></iframe>
24
+ </div>
25
+ )
26
+ : null
27
+ }
28
+
29
+ <script>
30
+ let lastScrollY = window.scrollY;
31
+ let rotation = 0;
32
+
33
+ function onScroll() {
34
+ const currentScrollY = window.scrollY;
35
+ // Increment rotation based on scroll delta
36
+ rotation += (currentScrollY - lastScrollY) * 0.07;
37
+ const image = document.getElementById('rotating-image') ?? null;
38
+ if (image) {
39
+ image.style.transform = `perspective(900px) rotateY(${rotation}deg)`;
40
+ image.style.transformOrigin = '50% 50%';
41
+ }
42
+ lastScrollY = currentScrollY;
43
+ }
44
+
45
+ window.addEventListener('scroll', onScroll);
46
+ </script>
47
+ <div class="w-full lg:w-1/2 lg:mx-4 mt-3 lg:mt-0">
48
+ <h2 class="text-4xl font-bold">
49
+ {title}
50
+ </h2>
51
+ <div class="my-4" set:html={description}></div>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
@@ -0,0 +1,43 @@
1
+ ---
2
+ const {
3
+ title,
4
+ description,
5
+ txtBtn,
6
+ linkBtn,
7
+ alt,
8
+ src,
9
+ iframeSrc,
10
+ showBtn = true
11
+ } = Astro.props;
12
+
13
+ ---
14
+
15
+ <section class="w-full flex items-center justify-center">
16
+
17
+ <article class="w-full flex flex-col items-center justify-center p-6 h-full lg:h-[384px]">
18
+
19
+ <div class="max-w-7xl h-full flex justify-center items-center aspect-auto relative md:w-4/5 lg:aspect-video">
20
+ <div class="absolute inset-0">
21
+
22
+ {src && src !== "" ? (
23
+ <img src={src} alt={alt} title={title} class="object-cover object-center w-full h-full rounded-2xl">
24
+ ) : (
25
+ <video autoplay loop muted playsinline class="object-cover object-center w-full h-full rounded-2xl">
26
+ <source src={iframeSrc} type="video/mp4" />
27
+ </video>
28
+ )}
29
+ </div>
30
+
31
+ <div class="w-4/5 relative z-10 flex flex-col justify-center items-center h-full text-center p-0 py-8 md:p-6">
32
+ <h3 class="text-[#ffffff] font-poppins text-[40px] font-semibold text-center leading-[48px] mb-[32px]">{title}</h3>
33
+ <div class="text-[#ffffff] font-inter text-xl font-normal leading-[28px] mb-8 text-center" set:html={description}></div>
34
+
35
+ {showBtn ? (
36
+ <a href={linkBtn} class="text-[#ffffff] font-poppins font-semibold bg-transparent px-[28px] py-[14px] border border-[#ffffff] rounded-xl hover:bg-[#ffffff] transition-all duration-300 hover:text-[#262626] hover:border border-[#262626]">{txtBtn}</a>
37
+ ) : (
38
+ <div class="flex justify-center"></div>
39
+ )}
40
+ </div>
41
+ </div>
42
+ </article>
43
+ </section>
@@ -0,0 +1,121 @@
1
+ ---
2
+
3
+ import Repetidor_2025_Menorca from './Repetidor_2025_Menorca.astro';
4
+ import Titulo_2025_Algeciras from './Titulo_2025_Algeciras.astro';
5
+
6
+ const {
7
+ items = [],
8
+ } = Astro.props;
9
+
10
+ const identifier = 'js-megablock'+ Math.random().toString(36).substring(2, 15);
11
+
12
+ ---
13
+
14
+
15
+ <section class="w-full flex items-center justify-center">
16
+ <article class="w-full flex flex-col items-center justify-center">
17
+ <div class="w-full flex justify-center items-center relative text-[56px] text-center font-poppins font-normal leading-[64px] mt-[40px]">
18
+ <div class="flex bg-transparent md:bg-gray-50 md:border md:border-[#B6B7BB] rounded-lg">
19
+ <div class="flex gap-4 md:gap-0 items-center">
20
+ {items.map((item, index) => (
21
+ <p class="text-base">
22
+ {/* <a href={`#accordion${index + 1}`} class="btn py-[20px] px-[16px]">{item}</a> */}
23
+ <button data-linkedto={`${identifier}${index + 1}`}
24
+ class={`
25
+ btn py-[14px] px-[20px]
26
+ cursor-pointer border border-transparent
27
+ hover:border hover:border-[#5F6168]
28
+ hover:bg-white rounded-lg ${identifier}button
29
+ ${item.default ? 'active' : ''}
30
+ bg-gray-100 text-gray-100 max-w-[40px] max-h-[20px] text-[0px]
31
+ md:bg-gray-100 md:text-black md:max-w-none md:max-h-none md:text-[16px]
32
+ `}
33
+ >{item.name}</button>
34
+ </p>
35
+ ))}
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <div class="lg:max-w-7xl md:w-full px-6 md:w-4/5 md:px-[0] col my-[40px]">
40
+ {items.map((item, index) => (
41
+ <div id={`${identifier}${index + 1}`} class={`${item.default ? '' : 'hidden'} collapse-arrow ${identifier}item`}>
42
+
43
+
44
+ <div class="w-full flex-col flex md:flex-row gap-[16px] md:gap-[48px]">
45
+ <div class="w-full md:w-1/2">
46
+ <Titulo_2025_Algeciras
47
+ title={item.name}
48
+ tipo="h3-mb32"
49
+ flexJustify="justify-start"
50
+ />
51
+ <Repetidor_2025_Menorca
52
+ flexOrientationIcoText = "flex-row"
53
+ flexOrientationBlockIcoText = "flex-col"
54
+ positionFlex = 'items-start'
55
+ positionBtnFlex = 'justify-start'
56
+ items = {item.items}
57
+ headingType = 'h3'
58
+ showBtn = {true}
59
+ btnLabel = "Ver experiencias de uso"
60
+ buttonUrl={item.buttonUrl}
61
+ />
62
+ </div>
63
+ <div class="w-full md:w-1/2 p-0 md:pr-2">
64
+ <img src={item.image} alt="Imagen" class="w-full h-auto rounded-xl" />
65
+ </div>
66
+ </div>
67
+
68
+ </div>
69
+ ))}
70
+ </div>
71
+ </article>
72
+ </section>
73
+
74
+
75
+
76
+ <style>
77
+ .active{
78
+ background-color: #ffffff;
79
+ border: 1px solid #5F6168;
80
+ color: black;
81
+ max-width: none;
82
+ max-height: none;
83
+ font-size: 16px;
84
+
85
+ &:hover{
86
+ background-color: #ffffff;
87
+ border: 1px solid #5F6168;
88
+ }
89
+ }
90
+ </style>
91
+
92
+ <script is:inline define:vars={{ identifier }}>
93
+
94
+ document.querySelectorAll(`.${identifier}button`).forEach(btn => {
95
+
96
+ btn.addEventListener('click', (e) => {
97
+ const linkedId = btn.getAttribute('data-linkedto');
98
+ const targetItem = document.getElementById(linkedId);
99
+ if (targetItem) {
100
+
101
+ const collapseCount = document.querySelectorAll(`.${identifier}item.collapse`).length;
102
+ const hiddenCount = document.querySelectorAll(`.${identifier}item.hidden`).length;
103
+ const desiredClass = collapseCount > hiddenCount ? 'collapse' : 'hidden';
104
+
105
+ document.querySelectorAll(`.${identifier}item`).forEach(item => {
106
+ if (item === targetItem) return;
107
+ if (item.classList.contains(desiredClass)) return;
108
+ item.classList.add(desiredClass);
109
+ });
110
+ targetItem.classList.toggle(desiredClass);
111
+
112
+
113
+ document.querySelectorAll(`.${identifier}button`).forEach(item => {
114
+ if (item === btn) return;
115
+ item.classList.remove('active');
116
+ });
117
+ btn.classList.toggle('active');
118
+ }
119
+ });
120
+ });
121
+ </script>
@@ -0,0 +1,30 @@
1
+ ---
2
+ const {
3
+ title,
4
+ description,
5
+ buttonText,
6
+ buttonUrl,
7
+ showBtn,
8
+ items
9
+ } = Astro.props;
10
+
11
+ import Repetidor_2025_Orcasitas from './Repetidor_2025_Orcasitas.astro';
12
+ ---
13
+ <article class="w-full flex flex-col text-center items-center justify-center p-12 pb-4 bg-[#ffffff] rounded-2xl">
14
+ <h2 class="text-[2.625em] leading-[47px] mb-[23px] text-[#262626] font-semibold not-italic">{title}</h2>
15
+ <div class="max-w-[900px] text-[#363942] font-inter font-normal text-[1.125em] not-italic leading-[28px] flex flex-col gap-4 mb-8">
16
+ <p set:html={description}></p>
17
+ </div>
18
+ <div class="max-w-7xl flex-wrap md:flex-nowrap w-full flex items-center ">
19
+ <Repetidor_2025_Orcasitas items={items} />
20
+ </div>
21
+ <div class="w-full flex justify-center">
22
+ {showBtn ? (
23
+ <div class="flex justify-center">
24
+ <a href={buttonUrl} class="px-5 py-3 font-inter font-semibold text-base border-1 border-[#2134F1] text-[#2134F1] hover:text-[#262626] hover:border-[#262626] transition-all duration-300 rounded-lg cursor-pointer shadow-sm">{buttonText}</a>
25
+ </div>
26
+ ) : (
27
+ <div class="flex justify-center"></div>
28
+ )}
29
+ </div>
30
+ </article>
@@ -0,0 +1,34 @@
1
+ ---
2
+ const {
3
+ items,
4
+ } = Astro.props;
5
+
6
+ import Titulo_2025_Santorini from './Titulo_2025_Santorini.astro';
7
+
8
+ ---
9
+ <div class="w-full flex flex-row flex-wrap items-center justify-center mb-4">
10
+ <div class="max-w-7xl flex flex-col md:flex-row flex-nowrap items-stretch justify-center mb-0">
11
+ {items.map(item => (
12
+ <a href={item.link} class="w-full flex flex-col cursor-pointer">
13
+ <article class="w-full p-[12px] h-full">
14
+ <div class="w-full h-full flex flex-col rounded-lg border border-gray-200 hover:items-center shadow-sm hover:bg-gradient-to-r from-[#001978] via-[#2134F1] to-[#F81BBD] transition-all duration-300">
15
+ <div class="bg-white hover:h-[calc(100%-12px)] hover:w-[calc(100%-1px)] mt-[1px] rounded-tl-[7px] rounded-tr-[7px]">
16
+ <div class="w-full">
17
+ <img class="cursor-pointer rounded-tr-lg rounded-tl-lg mx-auto h-full" src={item.image} alt={item.altImage} />
18
+ </div>
19
+ <div class="p-6 flex-grow flex flex-col">
20
+ <Titulo_2025_Santorini description={item.tag} />
21
+ <div class="mt-2 flex items-center gap-2 flex-grow">
22
+ <div class="flex flex-col text-[#262626] h-full">
23
+ <p class="text-lg font-semibold leading-tight mb-[8px]">{item.title}</p>
24
+ <p class="text-base font-normal leading-tight mb-[8px]">{item.description}</p>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </article>
31
+ </a>
32
+ ))}
33
+ </div>
34
+ </div>
@@ -0,0 +1,42 @@
1
+ ---
2
+ import Contenido_2025_Granada from "./Contenido_2025_Granada.astro";
3
+ import CTA_2025_Formentera from "./CTA_2025_Formentera.astro";
4
+
5
+
6
+ const {
7
+ flexOrientationBlockIcoText = "flex-row",
8
+ flexOrientationIcoText = "flex-row",
9
+ positionFlex = "items-center",
10
+ positionBtnFlex = "justify-center",
11
+ headingType = 'h3',
12
+ items = [],
13
+ btnLabel = "Ver más",
14
+ buttonUrl = "#",
15
+ showBtn = false,
16
+ } = Astro.props;
17
+
18
+ ---
19
+
20
+ <article class={`${positionFlex === 'items-center' ? 'items-center' : 'items-start'} flex flex-col justify-center mb-4`}>
21
+ <div class={`flex ${flexOrientationBlockIcoText} items-start flex-wrap px-6`}>
22
+ {items.map(item => (
23
+ <Contenido_2025_Granada
24
+ title={item.title}
25
+ tipo={headingType}
26
+ description={item.description}
27
+ flexOrientationBlock={flexOrientationBlockIcoText}
28
+ flexOrientationIcoText={flexOrientationIcoText}
29
+ positionFlex={positionFlex}
30
+ icon={item.icon}
31
+ />
32
+ ))}
33
+ </div>
34
+ <div class={`${positionBtnFlex === 'justify-center' ? 'justify-center' : 'justify-start'} pl-0 md:pl-[16px] lg:pl-[32px] w-full flex`}>
35
+ {showBtn ? (
36
+ <CTA_2025_Formentera buttonText={btnLabel} buttonUrl={buttonUrl} />
37
+ ) : (
38
+ <div class="flex justify-center"></div>
39
+ )}
40
+
41
+ </div>
42
+ </article>
@@ -0,0 +1,24 @@
1
+ ---
2
+ const {
3
+ orientation = 'left',
4
+ items
5
+ } = Astro.props;
6
+ ---
7
+ <section class="w-full flex flex-col items-center justify-center">
8
+ {items.map(item => (
9
+ <article class="w-full flex flex-col items-center justify-center border-b-1 border-b-[#B6B7BB]" style={items.indexOf(item) === items.length - 1 ? 'border-bottom: none;' : ''} >
10
+ <div class={`flex-col flex md:${orientation === 'left' ? 'flex-row' : 'flex-row-reverse'} items-center gap-4`}>
11
+ <div class="w-full md:w-1/2 p-4 flex flex-col flex-wrap ">
12
+ <h2 class="text-[32px] leading-[40px] mb-[24px] text-[#363942] font-poppins font-semibold">{item.title}</h2>
13
+ <div
14
+ class="text-[#363942] font-inter font-normal text-base leading-[28px] flex flex-col gap-4 mb-8"
15
+ set:html={item.description}
16
+ />
17
+ </div>
18
+ <div class={`w-full md:w-1/2 p-4 flex items-center ${orientation === 'left' ? 'justify-end' : 'justify-start'}`}>
19
+ <img src={item.image} alt={item.title} class="w-full md:w-1/2 rounded" />
20
+ </div>
21
+ </div>
22
+ </article>
23
+ ))}
24
+ </section>