fix: KO metadata layout bad generation

This commit is contained in:
Julien Froidefond
2025-02-13 18:24:35 +01:00
parent f70f852748
commit d95e101dc2
3 changed files with 107 additions and 71 deletions

View File

@@ -6,13 +6,28 @@ const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "StripStream - Komga Reader",
description: "A modern web reader for Komga",
description: "Votre bibliothèque numérique pour lire vos BD, mangas et comics préférés",
manifest: "/manifest.json",
themeColor: "#4F46E5",
appleWebApp: {
capable: true,
statusBarStyle: "default",
title: "StripStream",
},
icons: {
icon: [
{
url: "/favicon.svg",
type: "image/svg+xml",
},
{ url: "/images/icons/icon-72x72.png", sizes: "72x72", type: "image/png" },
{ url: "/images/icons/icon-96x96.png", sizes: "96x96", type: "image/png" },
{ url: "/images/icons/icon-128x128.png", sizes: "128x128", type: "image/png" },
{ url: "/images/icons/icon-144x144.png", sizes: "144x144", type: "image/png" },
{ url: "/images/icons/icon-152x152.png", sizes: "152x152", type: "image/png" },
{ url: "/images/icons/icon-192x192.png", sizes: "192x192", type: "image/png" },
{ url: "/images/icons/icon-384x384.png", sizes: "384x384", type: "image/png" },
{ url: "/images/icons/icon-512x512.png", sizes: "512x512", type: "image/png" },
],
apple: [
{
@@ -32,11 +47,26 @@ export const metadata: Metadata = {
},
],
},
manifest: "/manifest.json",
appleWebApp: {
capable: true,
statusBarStyle: "default",
title: "StripStream",
viewport: {
width: "device-width",
initialScale: 1,
maximumScale: 1,
userScalable: false,
},
applicationName: "StripStream",
generator: "Next.js",
keywords: ["comics", "manga", "bd", "reader", "komga", "stripstream"],
authors: [{ name: "Julien Froidefond" }],
colorScheme: "dark light",
formatDetection: {
telephone: false,
},
other: {
"mobile-web-app-capable": "yes",
"apple-mobile-web-app-capable": "yes",
"apple-mobile-web-app-status-bar-style": "black-translucent",
"msapplication-TileColor": "#4F46E5",
"msapplication-tap-highlight": "no",
},
};
@@ -46,6 +76,49 @@ import ClientLayout from "@/components/layout/ClientLayout";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="fr" suppressHydrationWarning>
<head>
{/* Splashscreens pour iOS */}
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/images/splash/splash-2048x2732.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/images/splash/splash-1668x2388.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/images/splash/splash-1536x2048.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/images/splash/splash-1125x2436.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/images/splash/splash-1242x2688.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/images/splash/splash-828x1792.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/images/splash/splash-750x1334.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/images/splash/splash-1242x2208.png"
/>
</head>
<body className={inter.className}>
<ClientLayout>{children}</ClientLayout>
</body>

28
src/app/not-found.tsx Normal file
View File

@@ -0,0 +1,28 @@
import Link from "next/link";
import { Metadata } from "next";
export const metadata: Metadata = {
title: "Page non trouvée - StripStream",
description: "La page que vous recherchez n'existe pas ou a été déplacée.",
robots: {
index: false,
follow: true,
},
};
export default function NotFound() {
return (
<div className="container flex flex-col items-center justify-center min-h-[calc(100vh-theme(spacing.14))] space-y-4 text-center">
<h1 className="text-4xl font-bold">404 - Page non trouvée</h1>
<p className="text-muted-foreground max-w-[600px]">
Désolé, la page que vous recherchez n'existe pas ou a été déplacée.
</p>
<Link
href="/"
className="inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground ring-offset-background transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
>
Retour à l'accueil
</Link>
</div>
);
}