mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 12:19:06 +00:00
* chore: remove nextjs-config * build fix * sentry update * nextjs update * feature flags doc * update readme * explicit nextjs env vars + remove feature-unrelated things and obsolete vars from config * full config removal * remove force-dynamic from pages * compile fix * restore claude-deleted tests * no sentry backward compat * better .env.example * AUTHENTIK_REFRESH_TOKEN_URL not so required * accommodate auth system to requiredLogin feature --------- Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
90 lines
3.1 KiB
TypeScript
90 lines
3.1 KiB
TypeScript
import "./styles/globals.scss";
|
||
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 { assertExistsAndNonEmptyString } from "./lib/utils";
|
||
|
||
const poppins = Poppins({
|
||
subsets: ["latin"],
|
||
weight: ["200", "400", "600"],
|
||
display: "swap",
|
||
});
|
||
|
||
export const viewport: Viewport = {
|
||
themeColor: "black",
|
||
width: "device-width",
|
||
initialScale: 1,
|
||
maximumScale: 1,
|
||
};
|
||
|
||
const NEXT_PUBLIC_SITE_URL = assertExistsAndNonEmptyString(
|
||
process.env.NEXT_PUBLIC_SITE_URL,
|
||
"NEXT_PUBLIC_SITE_URL required",
|
||
);
|
||
|
||
export const metadata: Metadata = {
|
||
metadataBase: new URL(NEXT_PUBLIC_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;
|
||
}) {
|
||
return (
|
||
<html lang="en" className={poppins.className} suppressHydrationWarning>
|
||
<body className={"h-[100svh] w-[100svw] overflow-x-hidden relative"}>
|
||
<RecordingConsentProvider>
|
||
<ErrorBoundary fallback={<p>"something went really wrong"</p>}>
|
||
<ErrorProvider>
|
||
<ErrorMessage />
|
||
<Providers>{children}</Providers>
|
||
</ErrorProvider>
|
||
</ErrorBoundary>
|
||
</RecordingConsentProvider>
|
||
</body>
|
||
</html>
|
||
);
|
||
}
|