9e5532be63
- New /shop overview, /cart (real cart state via useSyncExternalStore), /versand (shipping policy page with TOC) and /newsletter detail page - Cart: quantity/removal, order summary, related-products cross-sell with randomized picks, VersandModal quick-reference instead of navigating away, MwSt. disclosure next to unit prices - Add-to-cart UX: inline success feedback (green state) plus a fly-to-navbar-cart-icon animation (CartFlyProvider) with a delayed badge count-up; AddToCartButton no longer navigates straight to /cart - Shared lib/products.ts catalog and lib/shipping.ts constants (cost, free-shipping threshold, handling/transit days) so cart, trust badges and the versand page can never drift apart - Fix Navbar smooth-scroll easing (ease-out instead of ease-in-out, no more perceived start delay); compress newsletter modal photo 2.4MB -> 85KB to fix first-open jank
67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import type { Metadata } from "next";
|
||
import { Inter, Playfair_Display, Caveat, Lora } from "next/font/google";
|
||
import "./globals.css";
|
||
import { Navbar } from "./components/Navbar";
|
||
import { CartFlyProvider } from "./components/CartFly";
|
||
|
||
const inter = Inter({
|
||
variable: "--font-inter",
|
||
subsets: ["latin"],
|
||
weight: ["400", "500", "600", "700"],
|
||
});
|
||
|
||
const playfair = Playfair_Display({
|
||
variable: "--font-playfair",
|
||
subsets: ["latin"],
|
||
weight: ["600", "700", "800"],
|
||
});
|
||
|
||
const caveat = Caveat({
|
||
variable: "--font-caveat",
|
||
subsets: ["latin"],
|
||
weight: ["700"],
|
||
});
|
||
|
||
const lora = Lora({
|
||
variable: "--font-lora",
|
||
subsets: ["latin"],
|
||
weight: ["400", "600"],
|
||
});
|
||
|
||
export const metadata: Metadata = {
|
||
metadataBase: new URL("https://einfach-produktiv.mk360.de"),
|
||
title: {
|
||
default: "einfach produktiv. – Werkzeuge und Impulse für einen leichteren Alltag",
|
||
template: "%s | einfach produktiv.",
|
||
},
|
||
description: "Werkzeuge, Impulse und ein Blog für mehr Klarheit im Alltag.",
|
||
openGraph: {
|
||
siteName: "einfach produktiv.",
|
||
locale: "de_DE",
|
||
type: "website",
|
||
},
|
||
twitter: {
|
||
card: "summary_large_image",
|
||
},
|
||
};
|
||
|
||
export default function RootLayout({
|
||
children,
|
||
}: Readonly<{
|
||
children: React.ReactNode;
|
||
}>) {
|
||
return (
|
||
<html
|
||
lang="de"
|
||
className={`${inter.variable} ${playfair.variable} ${caveat.variable} ${lora.variable} h-full antialiased scroll-smooth`}
|
||
>
|
||
<body className="min-h-full flex flex-col">
|
||
<CartFlyProvider>
|
||
<Navbar />
|
||
{children}
|
||
</CartFlyProvider>
|
||
</body>
|
||
</html>
|
||
);
|
||
}
|