Skip to content
Snippets Groups Projects
Socials.tsx 2.18 KiB
Newer Older
import { graphql, useStaticQuery } from "gatsby"
Toavina's avatar
Toavina committed
import React from "react"
import Logo from "./core/Logo"
Manoa Harinjo's avatar
Manoa Harinjo committed
import { twMerge } from "tailwind-merge"
Tojo's avatar
Tojo committed

Julien MARGAIL's avatar
Julien MARGAIL committed
interface ISocials {
Toavina's avatar
Toavina committed
    layout?: string
    name: string
    logo: any
    url: string
Manoa Harinjo's avatar
Manoa Harinjo committed
    className: string
Julien MARGAIL's avatar
Julien MARGAIL committed
    options?: any
Tojo's avatar
Tojo committed
}

Julien MARGAIL's avatar
Julien MARGAIL committed
const Socials = (props: ISocials) => {
    const dataDirectus = useStaticQuery(graphql`
        query getSocials {
            directus {
Manoa Harinjo's avatar
Manoa Harinjo committed
                socials(
                    filter: { status: { _eq: "published" } }
                    sort: "sort"
                ) {
                        imageFile {
                            childImageSharp {
                                gatsbyImageData
                            }
                            name
                            publicURL
                        }
Manoa Harinjo's avatar
Manoa Harinjo committed
                    sort
                }
            }
        }
    `)

    const dataSocials = dataDirectus.directus.socials

Julien MARGAIL's avatar
Julien MARGAIL committed
    const { layout, className } = props
Tojo's avatar
Tojo committed

    const options = props.options ?? {}
Manoa Harinjo's avatar
Manoa Harinjo committed
    const oClass = options.class || {}
Tojo's avatar
Tojo committed

Toavina's avatar
Toavina committed
    return (
Manoa Harinjo's avatar
Manoa Harinjo committed
        <div
            className={twMerge(
Julien MARGAIL's avatar
Julien MARGAIL committed
                "flex gap-2",
                layout == "col" ? "w-8 flex-col" : "",
Manoa Harinjo's avatar
Manoa Harinjo committed
                oClass.main
Manoa Harinjo's avatar
Manoa Harinjo committed
            )}
        >
            {dataSocials.map((item: any, key: number) => {
                return (
                    <div
Manoa Harinjo's avatar
Manoa Harinjo committed
                        className={twMerge(
Julien MARGAIL's avatar
Julien MARGAIL committed
                            "tooltip",
                            layout == "row" ? "tooltip-top" : "tooltip-right",
Manoa Harinjo's avatar
Manoa Harinjo committed
                            oClass.social
Manoa Harinjo's avatar
Manoa Harinjo committed
                        )}
                        data-tip={item.name}
                        key={key}
                    >
                        <Logo
                            image={item.logo?.imageFile}
                            url={item.url}
Manoa Harinjo's avatar
Manoa Harinjo committed
                            target="_blank"
                            className={twMerge("h-7 w-7", oClass.logo)}
Toavina's avatar
Toavina committed
        </div>
    )
}
Tojo's avatar
Tojo committed

Toavina's avatar
Toavina committed
export default Socials