- Complete Next.js 16 app with App Router: Home, About, Products, Contact, Privacy pages - Product detail pages: ZappCare, Unified TMS, EMR Clinic - Bilingual support (Indonesian/English) via LanguageContext + translations.ts - Language switcher pill button (🇮🇩 ID / 🇬🇧 EN) in Navbar with localStorage persistence - Navbar with logo, responsive mobile menu, translated nav links - Contact form with captcha, server action email sending, translated labels - Material Design 3 color tokens, Manrope + Inter fonts, Material Symbols icons - Local product image assets and company logo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Manrope, Inter } from "next/font/google";
|
|
import "./globals.css";
|
|
import Navbar from "@/components/Navbar";
|
|
import Footer from "@/components/Footer";
|
|
import { LanguageProvider } from "@/context/LanguageContext";
|
|
|
|
const manrope = Manrope({
|
|
variable: "--font-headline",
|
|
subsets: ["latin"],
|
|
weight: ["700", "800"],
|
|
});
|
|
|
|
const inter = Inter({
|
|
variable: "--font-body",
|
|
subsets: ["latin"],
|
|
weight: ["400", "500", "600"],
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: "IPTEK | Integrasi Persada Teknologi",
|
|
description:
|
|
"Solusi teknologi terintegrasi untuk bisnis modern. Kami menghadirkan ekosistem digital yang efisien dan berdampak nyata.",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
return (
|
|
<html lang="id" className={`${manrope.variable} ${inter.variable}`}>
|
|
<head>
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
|
|
/>
|
|
</head>
|
|
<body className="min-h-full flex flex-col bg-surface text-on-surface font-body">
|
|
<LanguageProvider>
|
|
<Navbar />
|
|
<main className="flex-1 pt-20">{children}</main>
|
|
<Footer />
|
|
</LanguageProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|