diff --git a/src/components/BannerList/Banner.scss b/src/components/BannerList/Banner.scss
index 09ab2a3..bc40eb9 100644
--- a/src/components/BannerList/Banner.scss
+++ b/src/components/BannerList/Banner.scss
@@ -9,11 +9,17 @@
gap: 16px;
}
+ h2 {
+ font-size: 52px;
+ margin: 0;
+ }
+
+
.card_item {
gap: 8px;
align-items: center;
- h2 {
+ h3 {
font-size: 28px;
margin: 0;
}
diff --git a/src/components/BannerList/BannerList.js b/src/components/BannerList/BannerList.js
index fb42bc3..baddb4e 100644
--- a/src/components/BannerList/BannerList.js
+++ b/src/components/BannerList/BannerList.js
@@ -25,12 +25,12 @@ export default function BannerList({ data }) {
{item?.english_landing_page ? (
-
{item.title}
+
{item.title}
{item.description}
) : (
<>
-
{item.title}
+
{item.title}
{item.description}
>
)}
@@ -42,12 +42,12 @@ export default function BannerList({ data }) {
return (
-
+
{title}
{contactForm && concactFormAnchor && callToAction && (
{callToAction}
)}
-
+
{cards}
diff --git a/src/components/FaIcon/FaIcon.js b/src/components/FaIcon/FaIcon.js
index 7c22354..9e1aa4a 100644
--- a/src/components/FaIcon/FaIcon.js
+++ b/src/components/FaIcon/FaIcon.js
@@ -1,20 +1,34 @@
import React from "react"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
-import "../FontAwesomeOne/FontAwesomeOne"
+import { faEnvelope, faLocationDot } from "@fortawesome/free-solid-svg-icons"
+import { faLinkedin, faTwitter, faInstagram, faYoutube, faSpotify } from "@fortawesome/free-brands-svg-icons"
import PropTypes from "prop-types"
+// Mapeo de los íconos que se usan
+const iconMap = {
+ "fa-envelope": faEnvelope,
+ "fa-location-dot": faLocationDot,
+ "fa-linkedin": faLinkedin,
+ "fa-twitter": faTwitter,
+ "fa-instagram": faInstagram,
+ "fa-youtube": faYoutube,
+ "fa-spotify": faSpotify,
+}
const FaIcon = ({ type, code }) => {
- return (
-
-
-
- )
+ const icon = iconMap[code]
+
+ if (!icon) {
+ console.warn(`Icono no encontrado: type=${type}, code=${code}`)
+ return null
+ }
+
+ return
}
FaIcon.propTypes = {
type: PropTypes.string.isRequired,
- code: PropTypes.string.isRequired
+ code: PropTypes.string.isRequired,
}
export default FaIcon
\ No newline at end of file
diff --git a/src/components/FontAwesomeOne/FontAwesomeOne.js b/src/components/FontAwesomeOne/FontAwesomeOne.js
index f842dda..36959b8 100644
--- a/src/components/FontAwesomeOne/FontAwesomeOne.js
+++ b/src/components/FontAwesomeOne/FontAwesomeOne.js
@@ -1,8 +1,11 @@
import { library } from '@fortawesome/fontawesome-svg-core'
-import { fas } from '@fortawesome/free-solid-svg-icons'
-import { far } from '@fortawesome/free-regular-svg-icons'
-import { fab } from '@fortawesome/free-brands-svg-icons'
+import { faEnvelope, faLocationDot } from "@fortawesome/free-solid-svg-icons"
+import { faLinkedin, faTwitter, faInstagram, faYoutube, faSpotify } from "@fortawesome/free-brands-svg-icons"
-library.add(fas)
-library.add(far)
-library.add(fab)
\ No newline at end of file
+library.add(faEnvelope)
+library.add(faLocationDot)
+library.add(faLinkedin)
+library.add(faTwitter)
+library.add(faInstagram)
+library.add(faYoutube)
+library.add(faSpotify)
\ No newline at end of file
diff --git a/src/components/animatedTransitionContinous/AnimatedTransitionContinous.js b/src/components/animatedTransitionContinous/AnimatedTransitionContinous.js
index e349fb1..682df20 100644
--- a/src/components/animatedTransitionContinous/AnimatedTransitionContinous.js
+++ b/src/components/animatedTransitionContinous/AnimatedTransitionContinous.js
@@ -30,7 +30,7 @@ const AnimatedTransitionContinous = ({ data }) => {
className={""}
/>
)}
-
{innerText || ""}
+
{innerText || ""}
{(imagePosition === "last" || !imagePosition) && image && (
:
+ videoContent = imageData ?
:
}
return videoContent;
diff --git a/src/hooks/useBlog.js b/src/hooks/useBlog.js
index e6a7495..f9f5a04 100644
--- a/src/hooks/useBlog.js
+++ b/src/hooks/useBlog.js
@@ -38,6 +38,11 @@ const useBlog = () => {
blog_category {
name
}
+ seo {
+ pageTitle
+ pageKeywords
+ pageDescription
+ }
}
}
allStrapiBlogPage: allStrapiEnglishBlogPage {
diff --git a/src/templates/BlogItemDetail.js b/src/templates/BlogItemDetail.js
index 34701c8..3216b71 100644
--- a/src/templates/BlogItemDetail.js
+++ b/src/templates/BlogItemDetail.js
@@ -5,21 +5,53 @@ import Layout from "../components/layout"
import { Seo, BannerTop } from "../components/index.js"
import "./BlogItemDetail.scss"
import PropTypes from "prop-types"
+import { Helmet } from "react-helmet"
import { getImage, GatsbyImage } from "gatsby-plugin-image"
const BlogDetail = ({ data }) => {
- const { title, description, image, imagePage, author, seo } =
+ const { title, description, image, imagePage, author, seo, published_at, updated_at } =
data?.allStrapiArticle?.nodes[0] || {}
const bannerTop = imagePage ? { title, imagePage } : { title, image }
+ const structuredData = {
+ "@context": "https://schema.org",
+ "@type": "Article",
+ "headline": seo?.pageTitle || title, // Usa pageTitle de SEO o el título
+ "description": seo?.pageDescription || description,
+ "image": imagePage?.url || image?.url, // Imagen principal
+ "author": author?.map(auth => ({
+ "@type": "Person",
+ "name": auth.name,
+ })),
+ "datePublished": published_at, // Ajusta con la fecha real
+ "dateModified": updated_at, // Ajusta con la fecha real
+ "mainEntityOfPage": {
+ "@type": "WebPage",
+ "@id": `https://es.bitlogic.io/blog/${data?.allStrapiArticle?.nodes[0]?.slug}`,
+ },
+ "publisher": {
+ "@type": "Organization",
+ "name": "Bitlogic",
+ "logo": {
+ "@type": "ImageObject",
+ "url": "https://bitlogic.io/static/64f396cb88cfcbfda46b86c5218242f2/de081/Logo_Bit_azul_7e725e9726.webp", // URL del logo del sitio
+ },
+ },
+ }
+
return (
+
+
+
@@ -110,6 +142,8 @@ export const query = graphql`
title
description
slug
+ published_at
+ updated_at
seo {
pageTitle
pageDescription
diff --git a/src/templates/LandingPage.js b/src/templates/LandingPage.js
index 78d634f..ecc1e9b 100644
--- a/src/templates/LandingPage.js
+++ b/src/templates/LandingPage.js
@@ -16,11 +16,11 @@ const LandingPage = ({ data, location }) => {
ref: wrapperRef,
}
- const { pageKeywords, pageDescription } = seo || {}
+ const {pageTitle, pageKeywords, pageDescription } = seo || {}
return (
-
+
{body?.length > 0 && navigation ? (
<>
@@ -72,6 +72,7 @@ export const query = graphql`
slug
}
seo {
+ pageTitle
pageKeywords
pageDescription
}