Files
docs/apps/flow/app/layout.tsx

47 lines
1.6 KiB
TypeScript

// Brand tokens load before the app's own sheet so the theme can override
// where the two meet.
import '@hanzo/brand/styles/variables.css';
import './global.css';
import type { Metadata, Viewport } from 'next';
import type { ReactNode } from 'react';
import { Zen, ZenMono } from '@hanzo/font';
import { Analytics } from '@hanzo/docs-analytics';
import { Footer } from '@/components/footer';
export const metadata: Metadata = {
title: 'Hanzo Flow — Visual AI Workflow Builder',
description:
'Build, test, and deploy AI-powered workflows visually. Drag-and-drop interface with 100+ components, built-in API server, and MCP support.',
openGraph: {
title: 'Hanzo Flow — Visual AI Workflow Builder',
description:
'Build, test, and deploy AI-powered workflows visually. Drag-and-drop interface with 100+ components, built-in API server, and MCP support.',
url: 'https://flow.hanzo.ai',
siteName: 'Hanzo Flow',
type: 'website',
},
twitter: {
card: 'summary_large_image',
site: '@hanikidev',
creator: '@hanikidev',
},
metadataBase: new URL('https://flow.hanzo.ai'),
};
export const viewport: Viewport = {
themeColor: [
{ media: '(prefers-color-scheme: dark)', color: '#0A0A0A' },
{ media: '(prefers-color-scheme: light)', color: '#0A0A0A' },
],
};
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html lang="en" className={`${Zen.variable} ${ZenMono.variable} dark`}>
<body className="antialiased">{children}
<Footer />
<Analytics product="flow" /></body>
</html>
);
}