-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlayout.tsx
More file actions
121 lines (116 loc) · 3.09 KB
/
Copy pathlayout.tsx
File metadata and controls
121 lines (116 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import type React from "react";
import type { Metadata } from "next";
import Script from "next/script";
import "./globals.css";
import { ThemeProvider } from "@/components/theme-provider";
import { siteConfig } from "@/lib/config";
export const metadata: Metadata = {
title: {
default: siteConfig.title,
template: `%s | ${siteConfig.title}`,
},
description: siteConfig.description,
keywords: [
"エンジニア",
"ポートフォリオ",
"ブログ",
"Android",
"Google Developers Expert",
"ソフトウェア開発",
],
authors: [{ name: siteConfig.author.name, url: siteConfig.url }],
creator: siteConfig.author.name,
publisher: siteConfig.author.name,
formatDetection: {
email: false,
address: false,
telephone: false,
},
icons: {
icon: "/favicon.ico",
shortcut: "/favicon.ico",
apple: "/favicon.ico",
},
openGraph: {
type: "website",
locale: "ja_JP",
url: siteConfig.url,
title: siteConfig.title,
description: siteConfig.description,
siteName: siteConfig.siteName,
images: [
{
url: siteConfig.ogImage,
width: 1200,
height: 630,
alt: siteConfig.title,
},
],
},
twitter: {
card: "summary_large_image",
title: siteConfig.title,
description: siteConfig.description,
images: [siteConfig.ogImage],
creator: "@wasabeef_jp",
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
"max-video-preview": -1,
"max-image-preview": "large",
"max-snippet": -1,
},
},
alternates: {
canonical: siteConfig.url,
types: {
"application/rss+xml": [
{ url: "/rss.xml", title: `${siteConfig.title} RSS Feed` },
],
},
},
// verification: {
// google: "your-google-verification-code",
// },
generator: "v0.dev",
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="ja" suppressHydrationWarning>
<head>
{/* DNS prefetch for performance */}
<link rel="preconnect" href="https://cdnjs.cloudflare.com" />
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com" />
{/* Load highlight.js CSS synchronously to avoid FOUC */}
{/* Favicon and app icons */}
<link rel="icon" href="/favicon.ico" sizes="any" />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="manifest" href="/manifest.json" />
{/* Theme color */}
<meta name="theme-color" content="#ffffff" />
<meta name="color-scheme" content="light" />
</head>
<body className="min-h-screen bg-white antialiased font-sans">
<ThemeProvider
attribute="class"
defaultTheme="light"
enableSystem={false}
forcedTheme="light"
>
<div className="relative flex min-h-screen flex-col">
<main className="flex-1">{children}</main>
</div>
</ThemeProvider>
</body>
</html>
);
}