/**
 * Main site Layout
 */
import React from "react"
import Helmet from "react-helmet"
import { useStaticQuery, graphql } from "gatsby"
import SEO from "./seo"
import Header from "../components/Header"
import Footer from "../components/Footer"
interface Props {
    children: React.ReactNode
    UserMenu?: React.ReactNode
}

/**
 * Default Layout with Header (Helmet & SEO) and Footer
 * @param {Props} props - Page content
 * @returns {JSX.Element} The complete page
 */
const Layout = ({ children }: Props): JSX.Element => {
    const data = useStaticQuery(graphql`
        query {
            directus {
                site {
                    icon {
                        id
                        imageFile {
                            id
                            publicURL
                        }
                    }
                }
            }
        }
    `)

    return (
        <>
            <Helmet>
                <link
                    rel="icon"
                    href={data.directus.site?.icon?.imageFile?.publicURL}
                    type="image/png"
                />
            </Helmet>
            <SEO />
            {/* https://www.freecodecamp.org/news/how-to-keep-your-footer-where-it-belongs-59c6aa05c59c */}
            <div className="relative min-h-screen">
                <div className="pb-24">
                    <Header />
                    {children}
                </div>
                <Footer className="absolute bottom-0 h-24" />
            </div>
        </>
    )
}

export default Layout