|
1 | | -import type { Metadata, Viewport } from 'next' |
2 | | -import localFont from 'next/font/local' |
3 | | -import './globals.css' |
4 | | -import { Providers } from './providers' |
| 1 | +import type { Metadata, Viewport } from "next"; |
| 2 | +import localFont from "next/font/local"; |
| 3 | +import "./globals.css"; |
| 4 | +import { Providers } from "./providers"; |
5 | 5 |
|
6 | 6 | const arialRoundedMTPro = localFont({ |
7 | | - src: '../../public/fonts/Arial-Rounded-MT-Pro-Bold.woff2', |
8 | | - weight: '700', |
9 | | - style: 'normal', |
10 | | - variable: '--font-arial-rounded-mt-pro', |
11 | | - display: 'swap', |
12 | | -}) |
| 7 | + src: "../../public/fonts/Arial-Rounded-MT-Pro-Bold.woff2", |
| 8 | + weight: "700", |
| 9 | + style: "normal", |
| 10 | + variable: "--font-arial-rounded-mt-pro", |
| 11 | + display: "swap", |
| 12 | +}); |
13 | 13 |
|
14 | 14 | export const metadata: Metadata = { |
15 | | - title: 'Sonory', |
16 | | - description: |
17 | | - '周りの音を録音して、AI が分析し、時間・天気と一緒に記録するアプリ', |
18 | | - manifest: '/manifest.json', |
19 | | - metadataBase: new URL('https://sonory.vercel.app'), |
20 | | - appleWebApp: { |
21 | | - capable: true, |
22 | | - statusBarStyle: 'default', |
23 | | - title: 'Sonory', |
24 | | - startupImage: [ |
25 | | - { |
26 | | - url: '/icons/icon-512x512.png', |
27 | | - media: '(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)', |
28 | | - }, |
29 | | - ], |
30 | | - }, |
31 | | - applicationName: 'Sonory', |
32 | | - keywords: [ |
33 | | - '音声録音', |
34 | | - 'AI分析', |
35 | | - '地図', |
36 | | - 'PWA', |
37 | | - 'オフライン', |
38 | | - 'Sonory', |
39 | | - '環境音', |
40 | | - 'スタンプ', |
41 | | - ], |
42 | | - authors: [{ name: 'TeamONY' }], |
43 | | - category: 'lifestyle', |
44 | | - icons: { |
45 | | - icon: [ |
46 | | - { |
47 | | - url: '/icons/icon-192x192.png', |
48 | | - sizes: '192x192', |
49 | | - type: 'image/png', |
50 | | - }, |
51 | | - { |
52 | | - url: '/icons/icon-512x512.png', |
53 | | - sizes: '512x512', |
54 | | - type: 'image/png', |
55 | | - }, |
56 | | - ], |
57 | | - apple: [ |
58 | | - { |
59 | | - url: '/icons/icon-152x152.png', |
60 | | - sizes: '152x152', |
61 | | - type: 'image/png', |
62 | | - }, |
63 | | - { |
64 | | - url: '/icons/icon-192x192.png', |
65 | | - sizes: '192x192', |
66 | | - type: 'image/png', |
67 | | - }, |
68 | | - ], |
69 | | - }, |
70 | | - openGraph: { |
71 | | - type: 'website', |
72 | | - title: 'Sonory', |
73 | | - description: |
74 | | - '周りの音を録音して、AI が分析し、時間・天気と一緒に記録するアプリ', |
75 | | - siteName: 'Sonory', |
76 | | - images: [ |
77 | | - { |
78 | | - url: '/icons/icon-512x512.png', |
79 | | - width: 512, |
80 | | - height: 512, |
81 | | - alt: 'Sonory アプリアイコン', |
82 | | - }, |
83 | | - ], |
84 | | - }, |
85 | | - twitter: { |
86 | | - card: 'summary', |
87 | | - title: 'Sonory', |
88 | | - description: |
89 | | - '周りの音を録音して、AI が分析し、時間・天気と一緒に記録するアプリ', |
90 | | - images: ['/icons/icon-512x512.png'], |
91 | | - }, |
92 | | -} |
| 15 | + title: "Sonory", |
| 16 | + description: |
| 17 | + "周りの音を録音して、AI が分析し、時間・天気と一緒に記録するアプリ", |
| 18 | + manifest: "/manifest.json", |
| 19 | + metadataBase: new URL("https://sonory.vercel.app"), |
| 20 | + appleWebApp: { |
| 21 | + capable: true, |
| 22 | + statusBarStyle: "default", |
| 23 | + title: "Sonory", |
| 24 | + startupImage: [ |
| 25 | + { |
| 26 | + url: "/icons/icon-512x512.png", |
| 27 | + media: |
| 28 | + "(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)", |
| 29 | + }, |
| 30 | + ], |
| 31 | + }, |
| 32 | + applicationName: "Sonory", |
| 33 | + keywords: [ |
| 34 | + "音声録音", |
| 35 | + "AI分析", |
| 36 | + "地図", |
| 37 | + "PWA", |
| 38 | + "オフライン", |
| 39 | + "Sonory", |
| 40 | + "環境音", |
| 41 | + "スタンプ", |
| 42 | + ], |
| 43 | + authors: [{ name: "TeamONY" }], |
| 44 | + category: "lifestyle", |
| 45 | + icons: { |
| 46 | + icon: [ |
| 47 | + { |
| 48 | + url: "/icons/icon-192x192.png", |
| 49 | + sizes: "192x192", |
| 50 | + type: "image/png", |
| 51 | + }, |
| 52 | + { |
| 53 | + url: "/icons/icon-512x512.png", |
| 54 | + sizes: "512x512", |
| 55 | + type: "image/png", |
| 56 | + }, |
| 57 | + ], |
| 58 | + apple: [ |
| 59 | + { |
| 60 | + url: "/icons/icon-152x152.png", |
| 61 | + sizes: "152x152", |
| 62 | + type: "image/png", |
| 63 | + }, |
| 64 | + { |
| 65 | + url: "/icons/icon-192x192.png", |
| 66 | + sizes: "192x192", |
| 67 | + type: "image/png", |
| 68 | + }, |
| 69 | + ], |
| 70 | + }, |
| 71 | + openGraph: { |
| 72 | + type: "website", |
| 73 | + title: "Sonory", |
| 74 | + description: |
| 75 | + "周りの音を録音して、AI が分析し、時間・天気と一緒に記録するアプリ", |
| 76 | + siteName: "Sonory", |
| 77 | + images: [ |
| 78 | + { |
| 79 | + url: "/icons/icon-512x512.png", |
| 80 | + width: 512, |
| 81 | + height: 512, |
| 82 | + alt: "Sonory アプリアイコン", |
| 83 | + }, |
| 84 | + ], |
| 85 | + }, |
| 86 | + twitter: { |
| 87 | + card: "summary", |
| 88 | + title: "Sonory", |
| 89 | + description: |
| 90 | + "周りの音を録音して、AI が分析し、時間・天気と一緒に記録するアプリ", |
| 91 | + images: ["/icons/icon-512x512.png"], |
| 92 | + }, |
| 93 | +}; |
93 | 94 |
|
94 | 95 | export const viewport: Viewport = { |
95 | | - width: 'device-width', |
96 | | - initialScale: 1, |
97 | | - maximumScale: 1, |
98 | | - userScalable: false, |
99 | | - viewportFit: 'cover', |
100 | | - themeColor: '#1a202c', |
101 | | -} |
| 96 | + width: "device-width", |
| 97 | + initialScale: 1, |
| 98 | + maximumScale: 1, |
| 99 | + userScalable: false, |
| 100 | + viewportFit: "cover", |
| 101 | + themeColor: "#1a202c", |
| 102 | +}; |
102 | 103 |
|
103 | 104 | export default function RootLayout({ |
104 | | - children, |
| 105 | + children, |
105 | 106 | }: Readonly<{ |
106 | | - children: React.ReactNode |
| 107 | + children: React.ReactNode; |
107 | 108 | }>) { |
108 | | - return ( |
109 | | - <html lang="ja"> |
110 | | - <head> |
111 | | - {/* PWA メタタグ */} |
112 | | - <meta name="apple-mobile-web-app-capable" content="yes" /> |
113 | | - <meta |
114 | | - name="apple-mobile-web-app-status-bar-style" |
115 | | - content="default" |
116 | | - /> |
117 | | - <meta name="apple-mobile-web-app-title" content="Sonory" /> |
118 | | - <meta name="mobile-web-app-capable" content="yes" /> |
119 | | - <meta name="msapplication-TileColor" content="#1a202c" /> |
120 | | - <meta name="msapplication-tap-highlight" content="no" /> |
| 109 | + return ( |
| 110 | + <html lang="ja"> |
| 111 | + <head> |
| 112 | + {/* PWA メタタグ */} |
| 113 | + <meta name="apple-mobile-web-app-capable" content="yes" /> |
| 114 | + <meta name="apple-mobile-web-app-status-bar-style" content="default" /> |
| 115 | + <meta name="apple-mobile-web-app-title" content="Sonory" /> |
| 116 | + <meta name="mobile-web-app-capable" content="yes" /> |
| 117 | + <meta name="msapplication-TileColor" content="#1a202c" /> |
| 118 | + <meta name="msapplication-tap-highlight" content="no" /> |
121 | 119 |
|
122 | | - {/* PWA スプラッシュスクリーン用アイコン */} |
123 | | - <link |
124 | | - rel="apple-touch-icon" |
125 | | - sizes="152x152" |
126 | | - href="/icons/icon-152x152.png" |
127 | | - /> |
128 | | - <link |
129 | | - rel="apple-touch-icon" |
130 | | - sizes="192x192" |
131 | | - href="/icons/icon-192x192.png" |
132 | | - /> |
| 120 | + {/* PWA スプラッシュスクリーン用アイコン */} |
| 121 | + <link |
| 122 | + rel="apple-touch-icon" |
| 123 | + sizes="152x152" |
| 124 | + href="/icons/icon-152x152.png" |
| 125 | + /> |
| 126 | + <link |
| 127 | + rel="apple-touch-icon" |
| 128 | + sizes="192x192" |
| 129 | + href="/icons/icon-192x192.png" |
| 130 | + /> |
133 | 131 |
|
134 | | - {/* その他のPWAアイコン */} |
135 | | - <link |
136 | | - rel="icon" |
137 | | - type="image/png" |
138 | | - sizes="32x32" |
139 | | - href="/icons/icon-32x32.png" |
140 | | - /> |
141 | | - <link |
142 | | - rel="icon" |
143 | | - type="image/png" |
144 | | - sizes="16x16" |
145 | | - href="/icons/icon-16x16.png" |
146 | | - /> |
147 | | - <link rel="mask-icon" href="/Sonory-App-Icon.svg" color="#1a202c" /> |
| 132 | + {/* その他のPWAアイコン */} |
| 133 | + <link |
| 134 | + rel="icon" |
| 135 | + type="image/png" |
| 136 | + sizes="32x32" |
| 137 | + href="/icons/icon-32x32.png" |
| 138 | + /> |
| 139 | + <link |
| 140 | + rel="icon" |
| 141 | + type="image/png" |
| 142 | + sizes="16x16" |
| 143 | + href="/icons/icon-16x16.png" |
| 144 | + /> |
| 145 | + <link rel="mask-icon" href="/Sonory-App-Icon.svg" color="#1a202c" /> |
148 | 146 |
|
149 | | - {/* プリロード重要リソース */} |
150 | | - <link rel="preconnect" href="https://api.mapbox.com" /> |
151 | | - <link rel="preconnect" href="https://api.open-meteo.com" /> |
152 | | - </head> |
153 | | - <body |
154 | | - className={`${arialRoundedMTPro.variable} touch-manipulation antialiased`} |
155 | | - > |
156 | | - <Providers>{children}</Providers> |
157 | | - </body> |
158 | | - </html> |
159 | | - ) |
| 147 | + {/* プリロード重要リソース */} |
| 148 | + <link rel="preconnect" href="https://api.mapbox.com" /> |
| 149 | + <link rel="preconnect" href="https://api.open-meteo.com" /> |
| 150 | + </head> |
| 151 | + <body |
| 152 | + className={`${arialRoundedMTPro.variable} touch-manipulation antialiased`} |
| 153 | + > |
| 154 | + <Providers>{children}</Providers> |
| 155 | + </body> |
| 156 | + </html> |
| 157 | + ); |
160 | 158 | } |
0 commit comments