Files
docs/apps/spec/app/layout.tsx
zeekay 3aa390d961 fix(docs): mdx webpack-loader subpaths + spec shell mirror (swarm: scientist+red)
Verified on node 24.18 (the supported runtime; install resolves clean, 28/30
packages build green). Two real upstream-staleness fixes the package-name
normalization couldn't cover:
- packages/mdx/src/next/index.ts: webpack loaders renamed upstream
  fumadocs-mdx/loader-{mdx,meta} → /webpack/{mdx,meta} (old paths unexported);
  next-plugin wasn't updated. Confirmed against the package's exports map.
- apps/spec: mirror gui-docs's proven app shell (@hanzo/docs/{ui,core}/* meta-
  package subpaths) — my scaffolding sed had mangled them to fumadocs-ui/ui/*;
  deps aligned to gui-docs.
- keep twoslash tsdown deps fix (scientist).

KNOWN-REMAINING (blue): a deeper fumadocs-mdx/next-16 loader-RULE wiring issue
(meta loader JSON-parsing MDX output) blocks the final app build — a rule-match
problem, not a path; needs the next-plugin's loader rules reviewed.
2026-06-24 16:04:58 -07:00

51 lines
1.5 KiB
TypeScript

import './global.css';
import type { Viewport } from 'next';
import { baseUrl, createMetadata } from '@/lib/metadata';
import { Body } from '@/app/layout.client';
import { Provider } from './provider';
import type { ReactNode } from 'react';
import { Geist, Geist_Mono } from 'next/font/google';
import { TreeContextProvider } from '@hanzo/docs/ui/contexts/tree';
import { source } from '@/lib/source';
import { NextProvider } from '@hanzo/docs/core/framework/next';
export const metadata = createMetadata({
title: {
template: '%s | Hanzo Standards',
default: 'Hanzo Standards - Universal UI Framework for React Native and Web',
},
description: 'Universal UI framework for React Native and Web. Build cross-platform apps with a single codebase.',
metadataBase: baseUrl,
});
const geist = Geist({
variable: '--font-sans',
subsets: ['latin'],
});
const mono = Geist_Mono({
variable: '--font-mono',
subsets: ['latin'],
});
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={`${geist.variable} ${mono.variable}`} suppressHydrationWarning>
<Body>
<NextProvider>
<TreeContextProvider tree={source.getPageTree()}>
<Provider>{children}</Provider>
</TreeContextProvider>
</NextProvider>
</Body>
</html>
);
}