diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx
index db24650..3049198 100644
--- a/src/app/login/page.tsx
+++ b/src/app/login/page.tsx
@@ -35,7 +35,6 @@ export default async function LoginPage() {
diff --git a/src/components/logo.tsx b/src/components/logo.tsx
index 3e6c064..f1d2cff 100644
--- a/src/components/logo.tsx
+++ b/src/components/logo.tsx
@@ -1,8 +1,26 @@
'use client';
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import Image, { ImageProps } from 'next/image';
+import logo_colored_combo_light from '@/assets/logo/logo_colored_combo_light.svg';
+import logo_colored_combo_dark from '@/assets/logo/logo_colored_combo_dark.svg';
+import logo_colored_primary_light from '@/assets/logo/logo_colored_primary_light.svg';
+import logo_colored_primary_dark from '@/assets/logo/logo_colored_primary_dark.svg';
+import logo_colored_secondary_light from '@/assets/logo/logo_colored_secondary_light.svg';
+import logo_colored_secondary_dark from '@/assets/logo/logo_colored_secondary_dark.svg';
+import logo_mono_combo_light from '@/assets/logo/logo_mono_combo_light.svg';
+import logo_mono_combo_dark from '@/assets/logo/logo_mono_combo_dark.svg';
+import logo_mono_primary_light from '@/assets/logo/logo_mono_primary_light.svg';
+import logo_mono_primary_dark from '@/assets/logo/logo_mono_primary_dark.svg';
+import logo_mono_secondary_light from '@/assets/logo/logo_mono_secondary_light.svg';
+import logo_mono_secondary_dark from '@/assets/logo/logo_mono_secondary_dark.svg';
+import logo_mono_submark_light from '@/assets/logo/logo_mono_submark_light.svg';
+import logo_mono_submark_dark from '@/assets/logo/logo_mono_submark_dark.svg';
+import logo_colored_submark_light from '@/assets/logo/logo_colored_submark_light.svg';
+import logo_colored_submark_dark from '@/assets/logo/logo_colored_submark_dark.svg';
+import { useTheme } from 'next-themes';
+
type ColorType = 'colored' | 'monochrome';
type LogoType = 'combo' | 'primary' | 'secondary' | 'submark';
type Theme = 'light' | 'dark';
@@ -10,7 +28,7 @@ type Theme = 'light' | 'dark';
interface LogoProps extends Omit {
colorType: ColorType;
logoType: LogoType;
- theme: Theme;
+ overrideTheme?: Theme;
alt?: string;
}
@@ -20,14 +38,32 @@ const IMAGE_EXTENSION = 'svg';
export default function Logo({
colorType,
logoType,
- theme,
+ overrideTheme,
alt,
className = '',
width,
height,
- onError,
+ // onError,
...imageProps
}: LogoProps) {
+ const [mounted, setMounted] = useState(false);
+ let { resolvedTheme: theme } = useTheme();
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (overrideTheme) {
+ theme = overrideTheme;
+ }
+
+ // Prevent rendering until mounted (theme is available)
+ if (!mounted && !overrideTheme) {
+ return null;
+ }
+
+ console.log(colorType, logoType, theme);
+
if (!colorType || !logoType || !theme) {
const errorMessage =
'Logo: colorType, logoType, and theme props are required.';
@@ -49,25 +85,39 @@ export default function Logo({
}
const colorTypeInFilename = colorType === 'monochrome' ? 'mono' : colorType;
- const filename = `logo_${colorTypeInFilename}_${logoType}_${theme}.${IMAGE_EXTENSION}`;
- const logoUrl = `${LOGO_BASE_PATH}${filename}`;
const defaultAltText = `Logo: ${colorType} ${logoType} ${theme}`;
+ const varName = `logo_${colorTypeInFilename}_${logoType}_${theme}`;
- const handleImageError: ImageProps['onError'] = (e) => {
- console.error(`Error loading logo via next/image: ${logoUrl}`, e);
- if (onError) {
- onError(e);
- }
+ const logoAssets = {
+ logo_colored_combo_light,
+ logo_colored_combo_dark,
+ logo_colored_primary_light,
+ logo_colored_primary_dark,
+ logo_colored_secondary_light,
+ logo_colored_secondary_dark,
+ logo_mono_combo_light,
+ logo_mono_combo_dark,
+ logo_mono_primary_light,
+ logo_mono_primary_dark,
+ logo_mono_secondary_light,
+ logo_mono_secondary_dark,
+ logo_mono_submark_light,
+ logo_mono_submark_dark,
+ logo_colored_submark_light,
+ logo_colored_submark_dark,
};
+ // Match the varName with the Logo-Asset name and store it in "logoVar"
+ const logoVar = logoAssets[varName as keyof typeof logoAssets];
+
return (
);