Files

76 lines
3.0 KiB
TypeScript

import type { Metadata } from 'next';
import { Geist, Geist_Mono } from 'next/font/google';
import './globals.css';
import { SiteHeader } from '@/components/site-header';
import { SiteFooter } from '@/components/site-footer';
import { I18nProvider } from '@/lib/i18n/context';
import { site } from '@/lib/site-data';
const geistSans = Geist({
variable: '--font-geist-sans',
subsets: ['latin'],
});
const geistMono = Geist_Mono({
variable: '--font-geist-mono',
subsets: ['latin'],
});
export const metadata: Metadata = {
title: site.title,
description: site.description,
metadataBase: new URL(site.url),
openGraph: {
title: site.title,
description: site.description,
url: site.url,
siteName: site.title,
images: [
{
url: site.image,
width: 1200,
height: 1200,
alt: site.title,
},
],
locale: 'en_US',
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: site.title,
description: site.description,
images: [site.image],
},
icons: {
icon: '/images/official-seal.png',
apple: '/images/official-seal.png',
},
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en" className="dark" suppressHydrationWarning>
<head>
{/* Hanzo Insights — behavioral analytics */}
<script
dangerouslySetInnerHTML={{
__html: `!function(t,e){var o,n,p,r;e.__SV||(window.hi=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="hi",u.people=u.people||[],u.toString=function(t){var e="hi";return"hi"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture captureException identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on getActiveMatchingSurveys getSurveys getNextSurveyStep onSessionId setPersonProperties".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.hi||[]);hi.init('hi_47d0de95d23fa13e8b4569d79867ed16',{api_host:'https://insights.hanzo.ai',person_profiles:'identified_only'});hi.register({app:'parsis-foundation',org:'pars'})`,
}}
/>
</head>
<body className={`${geistSans.variable} ${geistMono.variable} font-sans antialiased`}>
<I18nProvider>
<SiteHeader />
{children}
<SiteFooter />
</I18nProvider>
</body>
</html>
);
}