libreria-astro-lefebvre 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libreria-astro-lefebvre",
3
- "version": "0.0.19",
3
+ "version": "0.0.21",
4
4
  "description": "Librería de componentes Astro, React y Vue para Lefebvre",
5
5
  "author": "Equipo web desarrollo Lefebvre",
6
6
  "type": "module",
@@ -5,7 +5,10 @@ const {
5
5
  subdirectory = "",
6
6
  } = Astro.props;
7
7
 
8
-
8
+ const currentUrl = subdirectory
9
+ ? new URL(subdirectory + Astro.url.pathname, Astro.url.origin).href
10
+ : Astro.url.href;
11
+
9
12
  const breadcrumbStructuredData = {
10
13
  "@context": "https://schema.org",
11
14
  "@type": "BreadcrumbList",
@@ -16,7 +19,7 @@ const {
16
19
  "name": "Inicio",
17
20
  "item": {
18
21
  "@type": "WebPage",
19
- "@id": new URL(subdirectory + '/', Astro.url.origin).href
22
+ "@id": new URL(subdirectory + '/', Astro.url.origin.endsWith('/') ? Astro.url.origin : Astro.url.origin + '/').href
20
23
  }
21
24
  },
22
25
  {
@@ -25,7 +28,7 @@ const {
25
28
  "name": text,
26
29
  "item": {
27
30
  "@type": "WebPage",
28
- "@id": new URL(link, Astro.url.origin).href
31
+ "@id": currentUrl
29
32
  }
30
33
  }
31
34
  ]
@@ -13,7 +13,7 @@ const categories = [
13
13
  // },
14
14
  {
15
15
  name: 'Cómo funciona',
16
- link: subdirectory + '/conoce-genia-l',
16
+ link: subdirectory + '/conoce-genia-l/',
17
17
  subcategories: [],
18
18
  },
19
19
  // {
@@ -23,7 +23,7 @@ const categories = [
23
23
  // },
24
24
  {
25
25
  name: 'Casos reales',
26
- link: subdirectory + '/casos-reales',
26
+ link: subdirectory + '/casos-reales/',
27
27
  subcategories: [],
28
28
  },
29
29
  // {
@@ -38,7 +38,7 @@ const categories = [
38
38
  // },
39
39
  {
40
40
  name: 'Contacto',
41
- link: subdirectory + '/contacto',
41
+ link: subdirectory + '/contacto/',
42
42
  subcategories: [],
43
43
  },
44
44
  ];
@@ -15,26 +15,6 @@ const {
15
15
  } = Astro.props;
16
16
 
17
17
 
18
- const structuredData = `<script type="application/ld+json">
19
- {
20
- "@context": "https://schema.org",
21
- "@type": "Article",
22
- "headline": "${title?.replace(/"/g, '\\"') || ''}",
23
- "description": "${description?.replace(/<[^>]*>/g, '').replace(/"/g, '\\"') || ''}",
24
- "image": "${image || ''}",
25
- "author": {
26
- "@type": "Organization",
27
- "name": "Lefebvre"
28
- },
29
- "publisher": {
30
- "@type": "Organization",
31
- "name": "Lefebvre"
32
- },
33
- "datePublished": "${new Date().toISOString()}",
34
- "dateModified": "${new Date().toISOString()}"
35
- }
36
- </script>`;
37
-
38
18
  ---
39
19
 
40
20
  <section class="w-full flex items-center justify-center">
@@ -152,5 +132,4 @@ const {
152
132
  )}
153
133
  </section>
154
134
 
155
- <Fragment set:html={structuredData} />
156
135
 
@@ -11,25 +11,6 @@ const {
11
11
  description=''
12
12
  } = Astro.props;
13
13
 
14
- const structuredData = `<script type="application/ld+json">
15
- {
16
- "@context": "https://schema.org",
17
- "@type": "Article",
18
- "headline": "${title}",
19
- "description": "${description}",
20
- "image": "${image}",
21
- "url": "${link}",
22
- "keywords": "${tag}",
23
- "author": {
24
- "@type": "Organization",
25
- "name": "Lefebvre"
26
- },
27
- "publisher": {
28
- "@type": "Organization",
29
- "name": "Lefebvre"
30
- }
31
- }
32
- </script>`;
33
14
 
34
15
  ---
35
16
 
@@ -52,5 +33,3 @@ const structuredData = `<script type="application/ld+json">
52
33
  <div class="bg-red-100 h-[12px]"></div>
53
34
  </article>
54
35
  </a>
55
-
56
- <Fragment set:html={structuredData} />
@@ -23,89 +23,36 @@ const categories = [
23
23
  link: '#',
24
24
  subcategories: [
25
25
  // {name: 'IA Jurídica', link: '#'},
26
- {name: 'Casos reales', link: subdirectory + '/casos-reales'},
27
- {name: 'Conoce GenIA-L', link: subdirectory + '/conoce-genia-l'},
26
+ {name: 'Casos reales', link: subdirectory + '/casos-reales/'},
27
+ {name: 'Conoce GenIA-L', link: subdirectory + '/conoce-genia-l/'},
28
28
  // {name: 'Novedades y recursos', link: '#'},
29
29
  // {name: 'Preguntas Frecuentes', link: '#'},
30
- {name: 'Contacto GenIA-L', link: subdirectory + '/contacto'}
30
+ {name: 'Contacto GenIA-L', link: subdirectory + '/contacto/'}
31
31
  ],
32
32
  },
33
33
  {
34
34
  name: 'Portales Lefebvre',
35
35
  link: '#',
36
36
  subcategories: [
37
- {name: 'GenIA-L', link: 'https://lefebvre.es/genia-l'},
38
- {name: 'Formación', link: 'https://lefebvre.es/formacion'},
37
+ {name: 'GenIA-L', link: 'https://lefebvre.es/genia-l/'},
38
+ {name: 'Formación', link: 'https://lefebvre.es/formacion/'},
39
39
  {name: 'Elderecho.com', link: 'https://elderecho.com'},
40
40
  {name: 'Espacioasesoria.com', link: 'https://espacioasesoria.com'},
41
41
  {name: 'Derecholocal.es', link: 'https://derecholocal.es'},
42
- {name: 'ESG', link: 'https://lefebvre.es/esg'}
42
+ {name: 'ESG', link: 'https://lefebvre.es/esg/'}
43
43
  ],
44
44
  },
45
45
  {
46
46
  name: 'Tienda Online',
47
47
  link: '#',
48
48
  subcategories: [
49
- {name: 'Nuestros productos', link: 'https://lefebvre.es/tienda'}
49
+ {name: 'Nuestros productos', link: 'https://lefebvre.es/tienda/'}
50
50
  ],
51
51
  },
52
52
 
53
53
  ];
54
54
 
55
55
 
56
- const structuredData = `<script type="application/ld+json">
57
- {
58
- "@context": "https://schema.org",
59
- "@type": "Organization",
60
- "name": "Lefebvre",
61
- "url": "https://lefebvre.es",
62
- "logo": "https://assets.lefebvre.es/media/logos-2/svg/lefebvre.svg",
63
- "contactPoint": {
64
- "@type": "ContactPoint",
65
- "telephone": "",
66
- "contactType": "customer service",
67
- "url": "https://lefebvre.es/contacto/"
68
- },
69
- "sameAs": [
70
- "https://www.instagram.com/lefebvre_es/",
71
- "https://www.facebook.com/Lefebvre.ES/",
72
- "https://www.linkedin.com/company/lefebvre_es",
73
- "https://twitter.com/Lefebvre_ES",
74
- "https://www.youtube.com/c/lefebvre_es"
75
- ],
76
- "address": {
77
- "@type": "PostalAddress",
78
- "addressCountry": "ES"
79
- },
80
- "potentialAction": {
81
- "@type": "SearchAction",
82
- "target": "https://lefebvre.es/search?q={search_term_string}",
83
- "query-input": "required name=search_term_string"
84
- },
85
- "parentOrganization": {
86
- "@type": "Organization",
87
- "name": "Lefebvre"
88
- },
89
- "department": [
90
- {
91
- "@type": "Organization",
92
- "name": "GenIA-L",
93
- "url": "https://lefebvre.es/genia-l"
94
- },
95
- {
96
- "@type": "Organization",
97
- "name": "Formación",
98
- "url": "https://lefebvre.es/formacion"
99
- },
100
- {
101
- "@type": "Organization",
102
- "name": "ESG",
103
- "url": "https://lefebvre.es/esg"
104
- }
105
- ]
106
- }
107
- </script>`;
108
-
109
56
  ---
110
57
 
111
58
  <footer>
@@ -185,6 +132,4 @@ const categories = [
185
132
  </div>
186
133
  </div>
187
134
  <Separador_2025_Reinosa />
188
- </footer>
189
-
190
- <Fragment set:html={structuredData} />
135
+ </footer>
@@ -8,29 +8,6 @@ const {
8
8
  items
9
9
  } = Astro.props;
10
10
 
11
- const structuredData = `<script type="application/ld+json">
12
- {
13
- "@context": "https://schema.org",
14
- "@type": "Article",
15
- "headline": "${title}",
16
- "description": "${description?.replace(/<[^>]*>/g, '').replace(/"/g, '\\"')}",
17
- "url": "${buttonUrl || ''}",
18
- "mainEntity": {
19
- "@type": "ItemList",
20
- "itemListElement": [
21
- ${items?.map((item, index) => `{
22
- "@type": "ListItem",
23
- "position": ${index + 1},
24
- "name": "${item.descriptionImage?.replace(/<[^>]*>/g, '').replace(/"/g, '\\"')}",
25
- "image": "${item.image}",
26
- ${item.link ? `"url": "${item.link}",` : ''}
27
- "description": "${item.altImage?.replace(/"/g, '\\"')}"
28
- }`).join(',\n ')}
29
- ]
30
- }
31
- }
32
- </script>`;
33
-
34
11
  ---
35
12
  <article class="w-full flex flex-col md:flex-row text-center items-center justify-center p-6 md:p-12 bg-cover bg-[url(https://assets.lefebvre.es/media/icons-2/png/icon-shield-228x248.png)] bg-[#F5F6FA] bg-no-repeat bg-position-[center_center] md:bg-auto md:bg-position-[-60px_center] rounded-2xl">
36
13
  <div class="w-full md:w-2/3 flex flex-col text-left p-0 mb-4 md:pl-[140px]">
@@ -77,6 +54,4 @@ const {
77
54
  </article>
78
55
  ))}
79
56
  </div>
80
- </article>
81
-
82
- <Fragment set:html={structuredData} />
57
+ </article>
@@ -22,6 +22,8 @@ const structuredData = `<script type="application/ld+json">
22
22
  "position": ${index + 1},
23
23
  "item": {
24
24
  "@type": "VideoObject",
25
+ "thumbnailUrl": "${item.thumbnailUrl || ''}",
26
+ "duration": "${item.duration || 'PT0M'}",
25
27
  "name": "${item.title || ''}",
26
28
  "description": "${item.description ? item.description.replace(/<[^>]*>/g, '').replace(/"/g, '\\"') : ''}",
27
29
  "contentUrl": "${item.iframeSrc || ''}",
@@ -3,25 +3,30 @@ const {
3
3
  title,
4
4
  description,
5
5
  robots = 'index, follow',
6
- canonical = Astro.url.href,
6
+ canonical = Astro.url.href.endsWith('/') ? Astro.url.href : Astro.url.href + '/',
7
7
  shareImgSrc,
8
+ subdirectory = '',
8
9
  } = Astro.props;
10
+
11
+ const currentUrl = Astro.url.href.replace(/^(https?:\/\/[^\/]+)/, `$1${subdirectory}`);
12
+ const normalizedUrl = currentUrl.endsWith('/') ? currentUrl : currentUrl + '/';
13
+
9
14
  ---
10
15
  <title>{title}</title>
11
16
  <meta name="description" content={description} />
12
17
  <meta name="robots" content={robots} />
13
- <link rel="canonical" href={canonical} />
18
+ <link rel="canonical" href={canonical.replace(/^(https?:\/\/[^\/]+)/, `$1${subdirectory}`)} />
14
19
 
15
20
  <!-- Open Graph / Facebook -->
16
21
  <meta property="og:type" content="website" />
17
- <meta property="og:url" content={Astro.url.href} />
22
+ <meta property="og:url" content={normalizedUrl} />
18
23
  <meta property="og:title" content={title} />
19
24
  <meta property="og:description" content={description} />
20
25
  {shareImgSrc && <meta property="og:image" content={shareImgSrc} />}
21
26
 
22
27
  <!-- Twitter -->
23
28
  <meta property="twitter:card" content="summary_large_image" />
24
- <meta property="twitter:url" content={Astro.url.href} />
29
+ <meta property="twitter:url" content={normalizedUrl} />
25
30
  <meta property="twitter:title" content={title} />
26
31
  <meta property="twitter:description" content={description} />
27
32
  {shareImgSrc && <meta property="twitter:image" content={shareImgSrc} />}