Files
fotospiel-app/resources/js/guest-v2/lib/guestTheme.ts
Codex Agent 298a8375b6
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled
Update guest v2 branding and theming
2026-02-03 15:18:44 +01:00

29 lines
1.3 KiB
TypeScript

import { DEFAULT_EVENT_BRANDING, useOptionalEventBranding } from '@/guest/context/EventBrandingContext';
import type { EventBranding } from '@/guest/types/event-branding';
import { useAppearance, type Appearance } from '@/hooks/use-appearance';
import { resolveGuestThemeName } from './brandingTheme';
export function resolveGuestThemeVariant(branding: EventBranding, appearance: Appearance): 'light' | 'dark' {
const themeName = resolveGuestThemeName(branding, appearance);
return themeName === 'guestNight' ? 'dark' : 'light';
}
export function useGuestThemeVariant(brandingOverride?: EventBranding | null): {
isDark: boolean;
variant: 'light' | 'dark';
themeName: 'guestLight' | 'guestNight';
branding: EventBranding;
} {
const { appearance, resolved } = useAppearance() as {
appearance?: Appearance;
resolved?: 'light' | 'dark';
};
const brandingContext = useOptionalEventBranding();
const branding = brandingOverride ?? brandingContext?.branding ?? DEFAULT_EVENT_BRANDING;
const appearanceMode = appearance ?? (resolved === 'dark' ? 'dark' : 'light');
const themeName = resolveGuestThemeName(branding, appearanceMode);
const variant = themeName === 'guestNight' ? 'dark' : 'light';
return { isDark: variant === 'dark', variant, themeName, branding };
}