diff --git a/src/components/Footer/Footer.js b/src/components/Footer/Footer.js index 1b94393d..7cc9bc2c 100644 --- a/src/components/Footer/Footer.js +++ b/src/components/Footer/Footer.js @@ -1,12 +1,12 @@ import React from "react" import Container from "react-bootstrap/Container" -import Row from "react-bootstrap/Row" import Col from "react-bootstrap/Col" import ContactData from "./ContactData/contactData" import Location from './Location/location'; import SocialLinks from "./SocialLinks/socialLinks" import Navegation from './Navegation/navegation'; import Subscription from './Subscription/subscription'; +import Sites from './Sites/Sites' import "./Footer.scss" @@ -15,67 +15,40 @@ const Footer = () => { <>
- - -
+ +
+
- - -
+
- - -
+
- - -
- +
+
- - - -
- +
+
- - +
+ + + +
+ +
+
diff --git a/src/components/Footer/Footer.scss b/src/components/Footer/Footer.scss index bd6d2d4c..0081684a 100644 --- a/src/components/Footer/Footer.scss +++ b/src/components/Footer/Footer.scss @@ -3,13 +3,49 @@ .Footer { background-color: $nav-footer-container; padding: 24px 0px 34px; + + &__Row { + display: grid; + grid-template-columns: repeat(2, minmax(130px, 400px)); + gap: 32px; + } + + &__Col { + &__Subscription { + grid-column: 1/3; + } + } + + @media (min-width: $breakpoint-md) { + &__Row { + width: 95%; + margin: 0 auto; + grid-template-columns: repeat(3, minmax(130px, 400px)); + } + + &__Col { + &__Subscription { + grid-column: 2/4; + } + } + } + + @media (min-width: $breakpoint-xxl) { + &__Row { + grid-template-columns: repeat(5, minmax(130px, 250px)); + justify-content: space-evenly; + } + + &__Col { + &__Subscription { + grid-column: auto; + } + } + } } @media screen and (min-width: $breakpoint-xl) { .Footer { padding: 30px 50px; - &__Col { - padding-left: 20px; - } } -} +} \ No newline at end of file diff --git a/src/components/Footer/Location/location.scss b/src/components/Footer/Location/location.scss index bfc6a75d..302d080a 100644 --- a/src/components/Footer/Location/location.scss +++ b/src/components/Footer/Location/location.scss @@ -1,20 +1,22 @@ @import "../../../styles/global.scss"; -@media screen and (min-width: $breakpoint-xl) { - .ContactData__Item { - &__location { - display: block; - color: $white; +.ContactData__Item { + margin: 0px !important; - p { - font-size: 18px; - width: 80%; - } - .icon-text { - svg { - margin-right: 10px; - } + &__location { + display: block; + color: $white; + + p { + font-size: 18px; + } + + .icon-text { + align-items: center; + + svg { + margin-right: 10px; } } } -} +} \ No newline at end of file diff --git a/src/components/Footer/Navegation/navegation.js b/src/components/Footer/Navegation/navegation.js index 25bfe2b1..6364ba45 100644 --- a/src/components/Footer/Navegation/navegation.js +++ b/src/components/Footer/Navegation/navegation.js @@ -35,7 +35,7 @@ export default function Navegation() { }) return ( -
+
{dataFooter.navegation?.title}
    {navegationItems} diff --git a/src/components/Footer/Sites/Sites.js b/src/components/Footer/Sites/Sites.js new file mode 100644 index 00000000..3da32981 --- /dev/null +++ b/src/components/Footer/Sites/Sites.js @@ -0,0 +1,45 @@ +import React from "react"; +import { useFooter } from '../../../hooks'; +import { getImage, GatsbyImage } from "gatsby-plugin-image"; +import './Sites.scss' + +const Sites = () => { + const sitesData = useFooter()?.allStrapiLayout?.nodes[0]?.Sites + + const websitesItems = sitesData?.websites?.map(website => { + const image = website?.icon?.localFile?.childImageSharp?.gatsbyImageData + ? getImage(website?.icon?.localFile?.childImageSharp?.gatsbyImageData) + : undefined; + + return ( + + ) + }) + + return ( +
    + {sitesData?.title &&
    {sitesData.title}
    } +
    + {websitesItems} +
    +
    + ) +} + +export default Sites; \ No newline at end of file diff --git a/src/components/Footer/Sites/Sites.scss b/src/components/Footer/Sites/Sites.scss new file mode 100644 index 00000000..d305d813 --- /dev/null +++ b/src/components/Footer/Sites/Sites.scss @@ -0,0 +1,35 @@ +@import "../../../styles/global.scss"; + +.Sites { + flex-direction: column; + + h6 { + color: $white; + margin-bottom: 16px; + font-size: 22px; + + @media (min-width: $breakpoint-xxl) { + font-size: 20px; + } + } + + &__items { + display: flex; + flex-direction: column; + justify-content: center; + gap: 8px; + + a { + color: $white; + font-size: 18px; + font-weight: $normal; + } + + img { + width: 30px; + height: 15px; + object-fit: cover; + margin-right: 8px; + } + } +} \ No newline at end of file diff --git a/src/components/Footer/SocialLinks/socialLinks.js b/src/components/Footer/SocialLinks/socialLinks.js index af944166..c59e526b 100644 --- a/src/components/Footer/SocialLinks/socialLinks.js +++ b/src/components/Footer/SocialLinks/socialLinks.js @@ -20,6 +20,7 @@ export default function SocialLinks() { target="_blank" className={`btn-social m-2 btn-social-icon btn-${item.icon?.name}`} rel="noreferrer" + aria-label={`Link externo a ${item?.name}`} > @@ -33,11 +34,16 @@ export default function SocialLinks() { {socialMedia}
-
- - - -
+ {logo && ( +
+ + + +
+ )}
) diff --git a/src/components/Footer/Subscription/subscription.scss b/src/components/Footer/Subscription/subscription.scss index ab8e3bb0..2cd3f187 100644 --- a/src/components/Footer/Subscription/subscription.scss +++ b/src/components/Footer/Subscription/subscription.scss @@ -4,6 +4,7 @@ h6 { font-size: unset; } + &__Item { form { @@ -20,33 +21,39 @@ height: 30px; width: 95%; } + button { @include primaryBtn; box-shadow: 0px 2px 10px rgba(63, 107, 232, 0.5); padding: 5px !important; width: 30%; + a { color: inherit; } } } } + @media screen and (min-width: $breakpoint-md) { - .contactData-mobile_button{ + .contactData-mobile_button { display: none; } + .ContactData { &__Item { .titleSubscription { display: block; } } + &__Form { input { margin-bottom: 10px; width: 270px; height: 40px; } + button { width: 136px; height: 48px; @@ -72,26 +79,30 @@ input { width: 75%; } + button:not(.contactData-mobile_button) { width: 70%; display: none; } } } + .titleSubscription { display: none; } - .contactData-mobile_button{ + + .contactData-mobile_button { @include primaryBtn; width: auto; max-width: 100%; - margin-top: 3em; + a { color: inherit; } } - .contactData-container{ + + .contactData-container { display: flex; justify-content: center; } -} +} \ No newline at end of file diff --git a/src/hooks/useFooter.js b/src/hooks/useFooter.js index 2827a39b..49a5d00b 100644 --- a/src/hooks/useFooter.js +++ b/src/hooks/useFooter.js @@ -23,6 +23,23 @@ const useFooter = () => { } } } + Sites { + title + websites { + id + name + url + icon { + alternativeText + url + localFile { + childImageSharp { + gatsbyImageData + } + } + } + } + } footer { contact { title diff --git a/src/schema/layoutSchema.js b/src/schema/layoutSchema.js index c68bbd6a..1f8f85b9 100644 --- a/src/schema/layoutSchema.js +++ b/src/schema/layoutSchema.js @@ -483,6 +483,19 @@ type StrapiLayoutNavbarNavButtonLanding_page { locale: String ): Date } + + type StrapiLayoutSites { + id: Int + title: String + websites: [StrapiLayoutSitesWebsites] + } + + type StrapiLayoutSitesWebsites { + id: Int + name: String + url: String! + icon: LocalFile + } type StrapiLayout implements Node { id: ID! @@ -512,6 +525,7 @@ type StrapiLayoutNavbarNavButtonLanding_page { footer: StrapiLayoutFooter navbar: StrapiLayoutNavbar menu: [StrapiLayoutMenu] + Sites: StrapiLayoutSites strapiId: Int }