| 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; |
| };
|
|
|