From 6ba2c8b932c9d88b3b6b912483e3181bbab486f7 Mon Sep 17 00:00:00 2001 From: achmad Date: Thu, 28 May 2026 22:28:08 +0700 Subject: [PATCH] feat: root layout with fonts, Navbar, Footer --- app/layout.tsx | 60 ++++++++++++++++------------- components/layout/Navbar.tsx | 7 +++- components/search/SearchOverlay.tsx | 4 ++ 3 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 components/search/SearchOverlay.tsx diff --git a/app/layout.tsx b/app/layout.tsx index a36cde0..483f36a 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,35 +1,41 @@ -import type { Metadata } from "next"; -import localFont from "next/font/local"; -import "./globals.css"; +import type { Metadata } from 'next' +import { Inter } from 'next/font/google' +import { Noto_Sans_JP } from 'next/font/google' +import './globals.css' +import Navbar from '@/components/layout/Navbar' +import Footer from '@/components/layout/Footer' +import SearchOverlay from '@/components/search/SearchOverlay' -const geistSans = localFont({ - src: "./fonts/GeistVF.woff", - variable: "--font-geist-sans", - weight: "100 900", -}); -const geistMono = localFont({ - src: "./fonts/GeistMonoVF.woff", - variable: "--font-geist-mono", - weight: "100 900", -}); +const inter = Inter({ + subsets: ['latin'], + variable: '--font-inter', + display: 'swap', +}) + +const notoSansJP = Noto_Sans_JP({ + subsets: ['latin'], + variable: '--font-noto-sans-jp', + display: 'swap', + weight: ['400', '500', '600', '700'], +}) export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", -}; + title: { + template: '%s — Kotobane', + default: 'Kotobane — Japanese Pop-Culture News', + }, + description: 'VTubers, Anime, Manga, Games, Music, and Japanese culture news.', +} -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { +export default function RootLayout({ children }: { children: React.ReactNode }) { return ( - - - {children} + + + +
{children}
+