import type { WallpaperMode } from "@/types/config"; import type { SidebarPage } from "@/types/sidebarConfig"; export type BannerViewport = "desktop" | "mobile"; export type BannerContentLayout = "banner" | "compact"; export type BannerCopyMode = "home" | "context" | null; export interface BannerStateInput { mode: WallpaperMode; page: SidebarPage | undefined; viewport: BannerViewport; imageCount: number; carouselEnabled: boolean; reducedMotion: boolean; } export interface BannerState { visible: boolean; assetGroup: BannerViewport | null; copyMode: BannerCopyMode; rotate: boolean; transparentTopAppBar: boolean; contentLayout: BannerContentLayout; } export function resolveBannerState(input: BannerStateInput): BannerState { const isHome = input.page === "home"; const visible = input.mode === "banner" && input.imageCount > 0 && (input.viewport === "desktop" || isHome); const copyMode: BannerCopyMode = !visible ? null : isHome ? "home" : "context"; return { visible, assetGroup: visible ? input.viewport : null, copyMode, rotate: visible && input.carouselEnabled && input.imageCount > 1 && !input.reducedMotion, transparentTopAppBar: visible, contentLayout: visible ? "banner" : "compact", }; }