Files
Edu/apps/teacher-portal/src/app/layout.tsx
SpecialX 1eacd1ed87 feat(teacher-portal): 完整实现 teacher-portal 微前端
包含 settings/students/api、graphql、mocks、ui-tokens 设计令牌等
2026-07-10 19:10:20 +08:00

58 lines
1.4 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 type { Metadata } from "next";
import { Inter, Fraunces, JetBrains_Mono } from "next/font/google";
import { GraphQLProvider } from "./providers";
import { ErrorBoundary } from "@edu/ui-components";
/**
* 字体加载next/font/google self-host
*
* 通过 CSS 变量暴露字体族,业务代码用 var(--font-family-sans/serif/mono)
* 禁止字体名字面量project_rules §3.10
*
* 03-long-term-architecture.md §3.5 字体加载策略:
* - font-display: swapFOUT优先文本可见性
* - 首屏字体 preload次屏 lazy
*/
const inter = Inter({
subsets: ["latin"],
variable: "--font-inter",
display: "swap",
});
const fraunces = Fraunces({
subsets: ["latin"],
variable: "--font-fraunces",
display: "swap",
});
const mono = JetBrains_Mono({
subsets: ["latin"],
variable: "--font-jetbrains-mono",
display: "swap",
});
export const metadata: Metadata = {
title: "Edu Teacher Portal",
description: "K12 智慧教务平台 - 教师端",
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html
lang="zh-CN"
className={`${inter.variable} ${fraunces.variable} ${mono.variable}`}
>
<body>
<ErrorBoundary>
<GraphQLProvider>{children}</GraphQLProvider>
</ErrorBoundary>
</body>
</html>
);
}