import type { AdminConfigData } from "@/types/admin"; import type { AdConfig, AnnouncementConfig, BackgroundWallpaperConfig, CommentConfig, CoverImageConfig, FriendLink, FriendsPageConfig, FontConfig, FooterConfig, LicenseConfig, Live2DModelConfig, MusicPlayerConfig, NavBarConfig, ProfileConfig, SakuraConfig, SidebarLayoutConfig, SiteConfig, SponsorConfig, SpineModelConfig, } from "@/types/config"; export type AdminEditableConfig = AdminConfigData & { sakura: SakuraConfig; }; export type AdminConfigSection = keyof AdminEditableConfig; export type AdminConfigBundle = { siteConfig: SiteConfig; profileConfig: ProfileConfig; navBarConfig: NavBarConfig; sidebarConfig: SidebarLayoutConfig; backgroundWallpaper: BackgroundWallpaperConfig; announcementConfig: AnnouncementConfig; footerConfig: FooterConfig; adConfig: { adConfig1: AdConfig; adConfig2: AdConfig; }; commentConfig: CommentConfig; musicConfig: MusicPlayerConfig; pioConfig: { spineModelConfig: SpineModelConfig; live2dModelConfig: Live2DModelConfig; }; sponsorConfig: SponsorConfig; friendsConfig: { friendsPageConfig: FriendsPageConfig; friendsConfig: FriendLink[]; }; licenseConfig: LicenseConfig; coverImageConfig: CoverImageConfig; sakuraConfig: SakuraConfig; fontConfig: FontConfig; }; export type AdminPostRecord = { slug: string; filePath: string; title: string; published: string; updated: string; description: string; image: string; tags: string[]; category: string; lang: string; draft: boolean; pinned: boolean; comment: boolean; author: string; sourceLink: string; licenseName: string; licenseUrl: string; body: string; extension?: "md" | "mdx"; excerpt?: string; modifiedAt?: string; }; export type AdminSpecPageRecord = { slug: string; filePath: string; body: string; extension?: "md" | "mdx"; modifiedAt?: string; }; export type AdminImageRecord = { id: string; name: string; path: string; url: string; directory: string; origin: "public" | "content"; size: number; updatedAt: string; sitePath?: string; }; export type AdminSnapshot = { generatedAt: string; configs: AdminConfigBundle; posts: AdminPostRecord[]; specPages: AdminSpecPageRecord[]; images: AdminImageRecord[]; }; export type AdminBuildState = "idle" | "queued" | "building" | "success" | "error"; export type AdminBuildStatus = { state: AdminBuildState; message?: string; lastStartedAt?: string; lastFinishedAt?: string; lastDurationMs?: number; queueLength?: number; siteUpdatedAt?: string; logLines?: string[]; }; export type AdminSessionResponse = { authenticated: boolean; configured?: boolean; username?: string; buildStatus?: AdminBuildStatus; }; export type AdminPostSavePayload = { originalSlug?: string; post: AdminPostRecord; };