Files
hanzo.ai/app/(marketing)/layout.tsx
zeekay 6c65e3e941 @hanzo/app 0.2.0: the app SDK, renamed from @hanzo/rooms
Every import, the catalog pin and the docs name @hanzo/app and
github.com/hanzoai/app. lib/rooms.ts is lib/app.ts and
components/rooms.tsx is components/app.tsx.
2026-10-22 19:07:20 -07:00

49 lines
1.5 KiB
TypeScript

import type { Metadata } from 'next'
import { SiteHeader, SiteFooter } from '@/components/home/shell'
import { AccountProvider } from '@hanzo/app/lib/account'
import { ogImages, twitterImages } from '@/lib/constants/og'
import { Box } from '@/components/ui'
import Closing from '@/components/marketing/Closing'
const SITE_TITLE = 'Hanzo — chat, or build with dev'
const SITE_DESCRIPTION = 'The whole cloud in one binary. Build with autonomous agents, frontier models, and sovereign infrastructure. Open source.'
export const metadata: Metadata = {
title: SITE_TITLE,
description: SITE_DESCRIPTION,
openGraph: {
title: SITE_TITLE,
description: SITE_DESCRIPTION,
url: 'https://hanzo.ai',
siteName: 'Hanzo AI',
type: 'website',
images: ogImages(SITE_TITLE),
},
twitter: {
card: 'summary_large_image',
title: SITE_TITLE,
description: SITE_DESCRIPTION,
images: twitterImages,
},
}
export default function MarketingLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<AccountProvider>
{/* No `backgroundColor` — see HomeLanding. The ground is html's, and a
wrapper repainting it would hide the backdrop on every marketing route
at once. A frame has no `color` prop, so the ink rides `$platform-web`. */}
<Box minH="100vh" $platform-web={{ color: 'var(--foreground)' }}>
<SiteHeader />
<main id="main">{children}</main>
<Closing />
<SiteFooter />
</Box>
</AccountProvider>
)
}