Files
Endoleap/src/app/layout.tsx
T

33 lines
1.6 KiB
TypeScript

/**
* 整个App Router的根布局:统一页面元数据、全局CSS、应用反馈和CanvasRuntimeHost装配。
* 子页面/画布视图借用同一个宿主,普通路由切换不应各自创建另一份项目运行时。
*/
import { CanvasRuntimeHost } from "@/components/workspace/canvas-runtime-host";
import { AppFeedback } from "@/components/ui/app-feedback";
import type { Metadata } from "next";
import type { ReactNode } from "react";
import "@/styles/globals.css";
/** 标题/描述及不同色彩偏好的favicon,交给Next元数据系统生成页面头,不在客户端effect中改DOM。 */
export const metadata: Metadata = {
title: "啡跃 Endoleap · 让灵感有形",
description: "收藏灵感、连接知识,在自己的创作空间让想法慢慢成形。",
icons: {
icon: [
{ url: "/brand/icons/favicon.ico", type: "image/x-icon", sizes: "any" },
{ url: "/brand/png/icon-light/endoleap-32.png", type: "image/png", sizes: "32x32", media: "(prefers-color-scheme: light)" },
{ url: "/brand/png/icon-dark/endoleap-32.png", type: "image/png", sizes: "32x32", media: "(prefers-color-scheme: dark)" },
],
apple: [{ url: "/brand/icons/apple-touch-icon.png", sizes: "180x180", type: "image/png" }],
},
};
/** 服务端布局输出中文html/body壳;客户端反馈Provider包在runtime宿主外侧,供宿主状态提示使用。 */
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html lang="zh-CN" data-scroll-behavior="smooth">
<body><AppFeedback><CanvasRuntimeHost>{children}</CanvasRuntimeHost></AppFeedback></body>
</html>
);
}