diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 0000000..80ad3aa --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1,12 @@ +import type { LayoutLoad } from './$types'; +import { createSiteMeta, type SiteMetadata, defaultSiteMeta } from '$lib/helper/siteMeta'; + +export const load: LayoutLoad = async () => { + // Provide the default site metadata + const siteMeta: SiteMetadata = createSiteMeta({ + title: defaultSiteMeta.title, + description: defaultSiteMeta.description + }); + + return { siteMeta }; +}; diff --git a/src/routes/site/meta/+page.ts b/src/routes/site/meta/+page.ts new file mode 100644 index 0000000..6effe61 --- /dev/null +++ b/src/routes/site/meta/+page.ts @@ -0,0 +1,26 @@ +import type { PageLoad } from './$types'; +import { fetchSiteInfo, type SiteInfoData } from '$lib/services/atproto'; +import { createSiteMeta, type SiteMetadata, defaultSiteMeta } from '$lib/helper/siteMeta'; +import { ogImages } from '$lib/helper/ogImages'; + +export const load: PageLoad = async ({ parent }) => { + const { siteMeta } = await parent(); + + let siteInfo: SiteInfoData | null = null; + let error: string | null = null; + + try { + siteInfo = await fetchSiteInfo(); + } catch (err) { + error = err instanceof Error ? err.message : 'Failed to load site information'; + } + + const meta: SiteMetadata = createSiteMeta({ + ...siteMeta, + title: `Site Meta - ${defaultSiteMeta.title}`, + description: 'Information about this website, its technology stack, and credits.', + image: ogImages.siteMeta, + }); + + return { siteInfo, error, meta }; +};