--- import { Picture } from "astro:assets"; import * as path from "node:path"; import type { ImageMetadata } from "astro"; import { Icon } from "astro-icon/components"; import DisplaySettings from "@/components/controls/DisplaySettingsIntegrated.svelte"; import LightDarkSwitch from "@/components/controls/LightDarkSwitch.svelte"; import Search from "@/components/controls/Search.svelte"; import MusicPlayer from "@/components/features/MusicPlayer.astro"; import { backgroundWallpaper, navBarConfig, siteConfig } from "@/config"; import { musicPlayerConfig } from "@/config/musicConfig"; import { LinkPresets } from "@/constants/link-presets"; import I18nKey from "@/i18n/i18nKey"; import { i18n } from "@/i18n/translation"; import { LinkPreset, type NavBarLink } from "@/types/config"; import { getFallbackFormat, getImageFormats } from "@/utils/image-utils"; import { isHomePage } from "@/utils/layout-utils"; import { url } from "@/utils/url-utils"; import DropdownMenu from "./DropdownMenu.astro"; import NavMenuPanel from "./NavMenuPanel.astro"; const className = Astro.props.class; // 获取导航栏透明模式配置 const navbarTransparentMode = backgroundWallpaper.mode === "banner" ? backgroundWallpaper.banner?.navbar?.transparentMode || "semi" : "semi"; // 获取导航栏毛玻璃效果配置 const navbarEnableBlur = backgroundWallpaper.mode === "banner" ? (backgroundWallpaper.banner?.navbar?.enableBlur ?? true) : false; // 获取导航栏模糊度 const navbarBlur = backgroundWallpaper.mode === "banner" ? (backgroundWallpaper.banner?.navbar?.blur ?? 20) : 0; // 获取导航栏标题,如果没有设置则使用 siteConfig.title const navbarTitle = siteConfig.navbar.title || siteConfig.title; // 获取导航栏宽度配置 const navbarWidthFull = siteConfig.navbar.widthFull ?? false; // 检查是否为首页 const isHomePageCheck = isHomePage(Astro.url.pathname); // 检查是否有任何显示设置可用 const showThemeColor = !siteConfig.themeColor.fixed; const isWallpaperSwitchable = backgroundWallpaper.switchable ?? true; const allowLayoutSwitch = siteConfig.postListLayout.allowSwitch; const hasDisplaySettings = showThemeColor || isWallpaperSwitchable || allowLayoutSwitch; let links: NavBarLink[] = navBarConfig.links.map( (item: NavBarLink | LinkPreset): NavBarLink => { if (typeof item === "number") { return LinkPresets[item]; } return item; }, ); // 处理导航栏 Logo 图片 const logoValue = siteConfig.navbar.logo?.value || ""; const isLocalSrcLogo = siteConfig.navbar.logo?.type === "image" && logoValue && !logoValue.startsWith("/") && !logoValue.startsWith("http"); let logoImg: ImageMetadata | null = null; if (isLocalSrcLogo) { const files = import.meta.glob( "../../**/*.{png,jpg,jpeg,webp,avif,gif,svg}", { import: "default" }, ); const normalizedPath = path .normalize(path.join("../../", logoValue)) .replace(/\\/g, "/"); const file = files[normalizedPath]; if (file) { logoImg = await file(); } } --- { import.meta.env.PROD && ( ) }