mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-04-04 12:56:49 +00:00
101 lines
3.2 KiB
TypeScript
101 lines
3.2 KiB
TypeScript
import "./styles/globals.scss";
|
||
import "@livekit/components-styles";
|
||
import { Metadata, Viewport } from "next";
|
||
import { Poppins } from "next/font/google";
|
||
import { ErrorProvider } from "./(errors)/errorContext";
|
||
import ErrorMessage from "./(errors)/errorMessage";
|
||
import { RecordingConsentProvider } from "./recordingConsentContext";
|
||
import { ErrorBoundary } from "@sentry/nextjs";
|
||
import { Providers } from "./providers";
|
||
import { getNextEnvVar } from "./lib/nextBuild";
|
||
import { getClientEnv } from "./lib/clientEnv";
|
||
|
||
export const dynamic = "force-dynamic";
|
||
|
||
const poppins = Poppins({
|
||
subsets: ["latin"],
|
||
weight: ["200", "400", "600"],
|
||
display: "swap",
|
||
});
|
||
|
||
export const viewport: Viewport = {
|
||
themeColor: "black",
|
||
width: "device-width",
|
||
initialScale: 1,
|
||
maximumScale: 1,
|
||
};
|
||
|
||
export function generateMetadata(): Metadata {
|
||
const SITE_URL = getNextEnvVar("SITE_URL");
|
||
return {
|
||
metadataBase: new URL(SITE_URL),
|
||
title: {
|
||
template: "%s – Reflector",
|
||
default: "Reflector - AI-Powered Meeting Transcriptions by Monadical",
|
||
},
|
||
description:
|
||
"Reflector is an AI-powered tool that transcribes your meetings with unparalleled accuracy, divides content by topics, and provides insightful summaries. Maximize your productivity with Reflector, brought to you by Monadical. Capture the signal, not the noise",
|
||
applicationName: "Reflector",
|
||
referrer: "origin-when-cross-origin",
|
||
keywords: ["Reflector", "Monadical", "AI", "Meetings", "Transcription"],
|
||
authors: [
|
||
{ name: "Monadical Team", url: "https://monadical.com/team.html" },
|
||
],
|
||
formatDetection: {
|
||
email: false,
|
||
address: false,
|
||
telephone: false,
|
||
},
|
||
|
||
openGraph: {
|
||
title: "Reflector",
|
||
description:
|
||
"Reflector is an AI-powered tool that transcribes your meetings with unparalleled accuracy, divides content by topics, and provides insightful summaries. Maximize your productivity with Reflector, brought to you by Monadical. Capture the signal, not the noise.",
|
||
type: "website",
|
||
},
|
||
|
||
twitter: {
|
||
card: "summary_large_image",
|
||
title: "Reflector",
|
||
description:
|
||
"Reflector is an AI-powered tool that transcribes your meetings with unparalleled accuracy, divides content by topics, and provides insightful summaries. Maximize your productivity with Reflector, brought to you by Monadical. Capture the signal, not the noise.",
|
||
images: ["/r-icon.png"],
|
||
},
|
||
|
||
icons: {
|
||
icon: "/r-icon.png",
|
||
shortcut: "/r-icon.png",
|
||
apple: "/r-icon.png",
|
||
},
|
||
robots: {
|
||
index: false,
|
||
follow: false,
|
||
noarchive: true,
|
||
noimageindex: true,
|
||
},
|
||
};
|
||
}
|
||
|
||
export default async function RootLayout({
|
||
children,
|
||
}: {
|
||
children: React.ReactNode;
|
||
}) {
|
||
const env = getClientEnv();
|
||
return (
|
||
<html lang="en" className={poppins.className} suppressHydrationWarning>
|
||
<body
|
||
className={"h-[100svh] w-[100svw] overflow-x-hidden relative"}
|
||
data-env={JSON.stringify(env)}
|
||
>
|
||
<ErrorBoundary fallback={<p>"something went really wrong"</p>}>
|
||
<ErrorProvider>
|
||
<ErrorMessage />
|
||
<Providers>{children}</Providers>
|
||
</ErrorProvider>
|
||
</ErrorBoundary>
|
||
</body>
|
||
</html>
|
||
);
|
||
}
|