assessment-model/src/app/layout.tsx
Khalim Conn-Kowlessar b9d5166e82 re-vamping ara ui
2026-04-08 10:29:14 +00:00

84 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import "./globals.css";
import Provider from "./components/Provider";
import Nav from "./components/Navbar";
import { ReactQueryProvider } from "./ReactQueryProvider";
import { AuthOptions } from "@/app/api/auth/[...nextauth]/authOptions";
import { getServerSession } from "next-auth/next";
import { cache } from "react";
import { Inter, Manrope } from "next/font/google";
import { Toaster } from "@/app/shadcn_components/ui/toaster";
import { SpeedInsights } from "@vercel/speed-insights/next";
import type { Metadata } from "next";
// If loading a variable font, you don't need to specify the font weight
const inter = Inter({
subsets: ["latin"],
variable: "--font-inter",
});
const manrope = Manrope({
subsets: ["latin"],
variable: "--font-manrope",
weight: ["400", "500", "700", "800"],
});
export const metadata = {
title: "Ara",
description: "Ara is Domnas portfolio intelligence platform that turns housing stock data into clear, costed retrofit and investment plans.",
icons: {
icon: [
{
url: "/domna-favicon-navy.ico",
media: "(prefers-color-scheme: light)",
},
{
url: "/domna-favicon-white.ico",
media: "(prefers-color-scheme: dark)",
},
],
},
};
const getSession = cache(async () => {
const session = await getServerSession(AuthOptions);
return session;
});
function Footer() {
return (
<footer className="bg-brandblue text-white p-4 text-center border-t border-gray-300">
<p>
&copy; {new Date().getFullYear()} Domna. All rights reserved. Domna
proprietary IP.
</p>
<p>
All intellectual property rights are retained by the respective owners.
</p>
</footer>
);
}
export default async function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const session = await getSession();
const userImage = session?.user?.image;
return (
<html lang="en" className={`${inter.className} ${manrope.variable}`}>
<body className="min-h-screen flex flex-col">
<Provider>
<ReactQueryProvider>
<Nav userImage={userImage} />
<main className="flex-grow">{children}</main>
<Toaster />
<Footer />
</ReactQueryProvider>
</Provider>
<SpeedInsights />
</body>
</html>
);
}