diff --git a/app/layout.tsx b/app/layout.tsx index ce0e60f..7f53409 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -16,6 +16,15 @@ import { StoreProvider } from '@/providers/store-provider'; const openSans = Open_Sans({ subsets: ['latin'] }); +// ibl.ai default icon set, served when no tenant-specific favicon override is set. +const DEFAULT_ICONS: Metadata['icons'] = [ + { rel: 'icon', url: '/favicon.ico', sizes: 'any', type: 'image/x-icon' }, + { rel: 'icon', url: '/icon.svg', type: 'image/svg+xml' }, + { rel: 'icon', url: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' }, + { rel: 'icon', url: '/favicon-16x16.png', sizes: '16x16', type: 'image/png' }, + { rel: 'apple-touch-icon', url: '/apple-touch-icon.png' }, +]; + // Force all pages to be dynamically rendered on the client // This prevents the "window is not defined" error during build export const dynamic = 'force-dynamic'; @@ -69,12 +78,9 @@ export async function generateMetadata(): Promise { title: metadata.title, description: metadata.description, generator: 'ibl.ai', - icons: [ - { - rel: 'icon', - url: faviconPath, - }, - ], + // Use the full ibl.ai icon set for the default favicon; fall back to a + // single icon when a tenant provides a custom favicon override. + icons: faviconPath === '/favicon.ico' ? DEFAULT_ICONS : [{ rel: 'icon', url: faviconPath }], ...(baseUrl && { metadataBase: new URL(baseUrl) }), openGraph: { title: metadata.title, @@ -115,12 +121,7 @@ export async function generateMetadata(): Promise { title: 'skillsAI', description: 'Build Your Skills with AI', generator: 'ibl.ai', - icons: [ - { - rel: 'icon', - url: '/favicon.ico', - }, - ], + icons: DEFAULT_ICONS, ...(baseUrl && { metadataBase: new URL(baseUrl) }), }; } catch { @@ -128,12 +129,7 @@ export async function generateMetadata(): Promise { title: 'skillsAI', description: 'Build Your Skills with AI', generator: 'ibl.ai', - icons: [ - { - rel: 'icon', - url: '/favicon.ico', - }, - ], + icons: DEFAULT_ICONS, }; } } diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000..2e617de Binary files /dev/null and b/public/apple-touch-icon.png differ diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png new file mode 100644 index 0000000..21c3584 Binary files /dev/null and b/public/favicon-16x16.png differ diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png new file mode 100644 index 0000000..87f03b8 Binary files /dev/null and b/public/favicon-32x32.png differ diff --git a/public/favicon.ico b/public/favicon.ico index 3b1fdb5..8924712 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/favicon.png b/public/favicon.png index ab49af9..87f03b8 100644 Binary files a/public/favicon.png and b/public/favicon.png differ diff --git a/public/icon.svg b/public/icon.svg new file mode 100644 index 0000000..4b11e62 --- /dev/null +++ b/public/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file