Skip to content
Snippets Groups Projects
Image.tsx 1.12 KiB
Newer Older
Toavina's avatar
Toavina committed
import React from "react"
import {
    StaticImage,
    IGatsbyImageData,
    GatsbyImage,
    getImage,
} from "gatsby-plugin-image"
tovo's avatar
tovo committed

export interface Iimage {
Toavina's avatar
Toavina committed
    image?: string | IGatsbyImageData
    className?: string
tovo's avatar
tovo committed
}

const Image = (props: Iimage) => {
    const { image, className = "" } = props
tovo's avatar
tovo committed

    const imageClassname = ` ${className}`
Toavina's avatar
Toavina committed

    const imageNoAvailable = (
        <StaticImage
            src="../../images/no-image-available.jpg"
            alt="no-image-available"
            className={imageClassname}
tovo's avatar
tovo committed
        />
    )

Toavina's avatar
Toavina committed
    if (!image || typeof image == "undefined") {
        return <>{imageNoAvailable}</>
    }

    if (typeof image == "string") {
        return (
            <>
                <img src={image} alt={image} className={imageClassname} />
            </>
        )
    }
tovo's avatar
tovo committed

Toavina's avatar
Toavina committed
    const img = getImage(image)
    if (typeof img == "undefined") {
        return <>{imageNoAvailable}</>
    }
tovo's avatar
tovo committed

Toavina's avatar
Toavina committed
    return (
        <>
            <GatsbyImage
                image={img}
                alt="gatsby-image"
                className={imageClassname}
            />
        </>
    )
}
tovo's avatar
tovo committed

Toavina's avatar
Toavina committed
export default Image