This PR introduces Keystatic to let us edit twenty.com's content with a CMS. For now, we'll focus on creating release notes through Keystatic as it uses quite simple Markdown. Other types of content will need some refactoring to work with Keystatic. https://github.com/user-attachments/assets/e9f85bbf-daff-4b41-bc97-d1baf63758b2 --------- Co-authored-by: Félix Malfait <felix@twenty.com>
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import { Metadata } from 'next';
|
|
import { PublicEnvScript } from 'next-runtime-env';
|
|
import { Gabarito, Inter } from 'next/font/google';
|
|
|
|
import { AppHeader } from '@/app/_components/ui/layout/header';
|
|
|
|
import { FooterDesktop } from '../_components/ui/layout/FooterDesktop';
|
|
import EmotionRootStyleRegistry from '../emotion-root-style-registry';
|
|
|
|
import './layout.css';
|
|
|
|
export const dynamic = 'force-dynamic';
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'Twenty.com',
|
|
description: 'Open Source CRM',
|
|
icons: '/images/core/logo.svg',
|
|
};
|
|
|
|
const gabarito = Gabarito({
|
|
weight: ['400', '500', '600', '700'],
|
|
subsets: ['latin'],
|
|
display: 'swap',
|
|
adjustFontFallback: false,
|
|
variable: '--font-gabarito',
|
|
});
|
|
|
|
const inter = Inter({
|
|
weight: ['400', '500', '600', '700'],
|
|
subsets: ['latin'],
|
|
display: 'swap',
|
|
adjustFontFallback: false,
|
|
variable: '--font-inter',
|
|
});
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
return (
|
|
<html lang="en" className={`${gabarito.variable} ${inter.variable}`}>
|
|
<body>
|
|
<PublicEnvScript />
|
|
<EmotionRootStyleRegistry>
|
|
<AppHeader />
|
|
<div className="container">{children}</div>
|
|
<FooterDesktop />
|
|
</EmotionRootStyleRegistry>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|