2024-07-13 13:56:16 +02:00

65 lines
1.8 KiB
Plaintext

---
import Html from "./components/Html.astro";
import Topbar from "./components/Topbar/Topbar.astro";
import Footer from "./components/Footer.astro";
import AppLayoutBackgroundImg from "./components/AppLayoutBackgroundImg.astro";
import type { ComponentProps } from "astro/types";
import type { EndpointSource } from "src/shared/payload/endpoint-types";
import { getSDKEndpoint } from "src/shared/payload/sdk";
interface Props {
openGraph?: ComponentProps<typeof Html>["openGraph"];
parentPages?: EndpointSource[];
backgroundImage?: ComponentProps<typeof AppLayoutBackgroundImg>["img"] | undefined;
hideFooterLinks?: boolean;
hideHomeButton?: boolean;
hideSearchButton?: boolean;
class?: string | undefined;
}
Astro.locals.sdkCalls.add(getSDKEndpoint.getCurrenciesEndpoint());
Astro.locals.sdkCalls.add(getSDKEndpoint.getLanguagesEndpoint());
Astro.locals.sdkCalls.add(getSDKEndpoint.getWordingsEndpoint());
const {
openGraph,
parentPages,
backgroundImage,
hideFooterLinks = false,
hideHomeButton = false,
hideSearchButton = false,
...otherProps
} = Astro.props;
---
{/* ------------------------------------------- HTML ------------------------------------------- */}
<Html openGraph={openGraph}>
{backgroundImage && <AppLayoutBackgroundImg img={backgroundImage} />}
<header>
<Topbar
parentPages={parentPages}
hideHomeButton={hideHomeButton}
hideSearchButton={hideSearchButton}
/>
</header>
<main {...otherProps.class ? otherProps : {}}><slot /></main>
<Footer withLinks={!hideFooterLinks} />
</Html>
{/* ------------------------------------------- CSS -------------------------------------------- */}
<style>
header {
display: flex;
flex-direction: column;
gap: 1.5em;
}
main {
padding-top: 1.5em;
padding-bottom: 8em;
flex-grow: 1;
}
</style>