blog / src /admin /types.ts
cacode's picture
Upload 434 files
96dd062 verified
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;
};