2025-04-17 02:43:14 +02:00
import { PostHogProvider } from "@/components/PostHogProvider"
import { Footer } from "@/components/footer"
import { Header } from "@/components/header-wrapper"
import { LicenseNotice } from "@/components/license-notice"
import type { Metadata , Viewport } from "next"
import { Inter } from "next/font/google"
import { Toaster } from "sonner"
import "./globals.css"
2025-04-16 22:51:23 +02:00
import { getTotalIcons } from "@/lib/api"
2025-04-17 02:43:14 +02:00
import { ThemeProvider } from "./theme-provider"
2025-04-16 16:18:20 +02:00
const inter = Inter ( {
variable : "--font-inter" ,
subsets : [ "latin" ] ,
2025-04-17 02:43:14 +02:00
} )
2025-04-16 16:18:20 +02:00
export const viewport : Viewport = {
width : "device-width" ,
initialScale : 1 ,
2025-04-17 02:43:14 +02:00
minimumScale : 1 ,
maximumScale : 5 ,
userScalable : true ,
2025-04-16 16:18:20 +02:00
themeColor : "#ffffff" ,
2025-04-17 02:43:14 +02:00
viewportFit : "cover" ,
}
2025-04-16 16:18:20 +02:00
2025-04-16 22:51:23 +02:00
export async function generateMetadata ( ) : Promise < Metadata > {
const { totalIcons } = await getTotalIcons ( )
return {
metadataBase : new URL ( "https://dashboardicons.com" ) ,
title : "Dashboard Icons - Your definitive source for dashboard icons" ,
description : ` A collection of ${ totalIcons } curated icons for services, applications and tools, designed specifically for dashboards and app directories. ` ,
2025-04-17 02:43:14 +02:00
keywords : [ "dashboard icons" , "service icons" , "application icons" , "tool icons" , "web dashboard" , "app directory" ] ,
2025-04-16 22:51:23 +02:00
robots : {
index : true ,
follow : true ,
"max-image-preview" : "large" ,
"max-snippet" : - 1 ,
"max-video-preview" : - 1 ,
googleBot : "index, follow" ,
2025-04-16 16:18:20 +02:00
} ,
2025-04-16 22:51:23 +02:00
openGraph : {
siteName : "Dashboard Icons" ,
type : "website" ,
locale : "en_US" ,
title : "Dashboard Icons - Your definitive source for dashboard icons" ,
description : ` A collection of ${ totalIcons } curated icons for services, applications and tools, designed specifically for dashboards and app directories. ` ,
url : "https://dashboardicons.com" ,
images : [
{
url : "/og-image.png" ,
width : 1200 ,
height : 630 ,
alt : "Dashboard Icons" ,
type : "image/png" ,
} ,
] ,
} ,
twitter : {
card : "summary_large_image" ,
site : "@homarr_app" ,
creator : "@homarr_app" ,
title : "Dashboard Icons - Your definitive source for dashboard icons" ,
description : ` A collection of ${ totalIcons } curated icons for services, applications and tools, designed specifically for dashboards and app directories. ` ,
images : [ "/og-image.png" ] ,
} ,
applicationName : "Dashboard Icons" ,
appleWebApp : {
title : "Dashboard Icons" ,
statusBarStyle : "default" ,
capable : true ,
} ,
alternates : {
types : {
"application/rss+xml" : "https://dashboardicons.com/rss.xml" ,
2025-04-16 16:18:20 +02:00
} ,
2025-04-16 22:51:23 +02:00
} ,
icons : {
icon : [
{ url : "/favicon.ico" , sizes : "any" } ,
{ url : "/favicon-16x16.png" , sizes : "16x16" , type : "image/png" } ,
{ url : "/favicon-32x32.png" , sizes : "32x32" , type : "image/png" } ,
] ,
2025-04-17 02:43:14 +02:00
apple : [ { url : "/apple-touch-icon.png" , sizes : "180x180" , type : "image/png" } ] ,
2025-04-16 22:51:23 +02:00
other : [
{
rel : "mask-icon" ,
url : "/safari-pinned-tab.svg" ,
color : "#000000" ,
} ,
] ,
} ,
manifest : "/site.webmanifest" ,
}
}
2025-04-16 16:18:20 +02:00
2025-04-17 02:43:14 +02:00
export default function RootLayout ( { children } : Readonly < { children : React.ReactNode } > ) {
2025-04-16 16:18:20 +02:00
return (
< html lang = "en" suppressHydrationWarning >
2025-04-17 02:43:14 +02:00
< body className = { ` ${ inter . variable } antialiased bg-background flex flex-col min-h-screen ` } >
2025-04-16 16:18:20 +02:00
< PostHogProvider >
2025-04-17 02:43:14 +02:00
< ThemeProvider attribute = "class" defaultTheme = "system" enableSystem disableTransitionOnChange >
2025-04-16 16:18:20 +02:00
< Header / >
2025-04-17 02:43:14 +02:00
< main className = "flex-grow" > { children } < / main >
< Footer / >
2025-04-16 16:18:20 +02:00
< Toaster / >
< LicenseNotice / >
< / ThemeProvider >
< / PostHogProvider >
< / body >
< / html >
2025-04-17 02:43:14 +02:00
)
2025-04-16 16:18:20 +02:00
}