import type { Metadata, Viewport } from "next"; import { NextIntlClientProvider } from "next-intl"; import { getMessages, setRequestLocale } from "next-intl/server"; import { notFound } from "next/navigation"; import localFont from "next/font/local"; import { routing } from "@/i18n/routing"; import { Providers } from "@/components/providers"; import "../globals.css"; export const metadata: Metadata = { title: { default: "مدیریت سامانه میزی", template: "%s — مدیریت میزی" }, description: "پنل مدیریت سامانه میزی", icons: { icon: [ { url: "/icons/icon-32.png", sizes: "32x32", type: "image/png" }, { url: "/icons/icon-48.png", sizes: "48x48", type: "image/png" }, { url: "/icons/icon-192.png", sizes: "192x192", type: "image/png" }, ], shortcut: "/icons/icon-32.png", apple: "/icons/icon-180.png", }, robots: { index: false, follow: false }, // internal admin panel }; export const viewport: Viewport = { themeColor: "#0F6E56", width: "device-width", initialScale: 1, }; const vazirmatn = localFont({ src: "../../fonts/Vazirmatn-Variable.woff2", variable: "--font-vazirmatn", display: "swap", weight: "100 900", }); const inter = localFont({ src: "../../fonts/Inter-Variable.woff2", variable: "--font-inter", display: "swap", weight: "100 900", }); export function generateStaticParams() { return routing.locales.map((locale) => ({ locale })); } export default async function LocaleLayout({ children, params: { locale }, }: { children: React.ReactNode; params: { locale: string }; }) { if (!routing.locales.includes(locale as "fa" | "ar" | "en")) { notFound(); } setRequestLocale(locale); const messages = await getMessages(); const dir = locale === "en" ? "ltr" : "rtl"; const fontClass = locale === "en" ? inter.variable : vazirmatn.variable; return ( {children} ); }