Files
Todo/app/layout.tsx
Paul Bailey c0358d79d7 Fix Docker build and Next.js metadata configuration
- Move themeColor and viewport to separate viewport export in layout.tsx
- Improve Docker build process with npm ci and proper dependency handling
- Add Docker-friendly Next.js configuration settings
- Resolve constructor error and metadata warnings
2025-12-02 13:47:40 +00:00

83 lines
2.6 KiB
TypeScript

import type { Metadata, Viewport } from 'next'
import './globals.css'
import ServiceWorkerRegistration from '@/components/ServiceWorkerRegistration'
import OfflineIndicator from '@/components/OfflineIndicator'
import { ToastProvider } from '@/components/ToastContainer'
import ErrorBoundary from '@/components/ErrorBoundary'
export const metadata: Metadata = {
title: 'Ultimate Lists',
description: 'The ultimate todo list app with advanced task management',
manifest: '/manifest.json',
appleWebApp: {
capable: true,
statusBarStyle: 'black-translucent',
title: 'Ultimate Lists',
},
applicationName: 'Ultimate Lists',
icons: {
icon: [
{ url: '/favicon.svg', type: 'image/svg+xml' },
{ url: '/icon-192.png', sizes: '192x192', type: 'image/png' },
{ url: '/icon-512.png', sizes: '512x512', type: 'image/png' },
],
apple: [
{ url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png' },
],
},
other: {
'mobile-web-app-capable': 'yes',
'apple-mobile-web-app-capable': 'yes',
},
}
export const viewport: Viewport = {
width: 'device-width',
initialScale: 1,
maximumScale: 1,
userScalable: false,
viewportFit: 'cover',
themeColor: '#3B82F6',
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<head>
{/* Favicon */}
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
{/* Apple Touch Icons */}
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
{/* Apple Web App Meta Tags */}
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Ultimate Lists" />
{/* PWA Meta Tags */}
<meta name="mobile-web-app-capable" content="yes" />
<meta name="theme-color" content="#3B82F6" />
<meta name="background-color" content="#ffffff" />
{/* iOS Splash Screens - Optional but recommended */}
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
</head>
<body className="bg-gray-50 min-h-screen">
<ErrorBoundary>
<ToastProvider>
<ServiceWorkerRegistration />
<OfflineIndicator />
{children}
</ToastProvider>
</ErrorBoundary>
</body>
</html>
)
}