import type { AUTO_MODE, DARK_MODE, LIGHT_MODE } from "@constants/constants"; export type SiteConfig = { title: string; subtitle: string; description?: string; keywords?: string[]; lang: string; themeColor: { hue: number; fixed: boolean; forceDarkMode?: boolean; }; banner: { enable: boolean; src: string; position?: "top" | "center" | "bottom"; credit: { enable: boolean; text: string; url?: string; }; }; background: { enable: boolean; src: string; position?: "top" | "center" | "bottom"; size?: "cover" | "contain" | "auto"; repeat?: "no-repeat" | "repeat" | "repeat-x" | "repeat-y"; attachment?: "fixed" | "scroll" | "local"; opacity?: number; }; toc: { enable: boolean; depth: 1 | 2 | 3; }; favicon: Favicon[]; officialSites?: (string | { url: string; alias: string })[]; }; export type Favicon = { src: string; theme?: "light" | "dark"; sizes?: string; }; export enum LinkPreset { Home = 0, Archive = 1, About = 2, } export type NavBarLink = { name: string; url: string; external?: boolean; }; export type NavBarConfig = { links: (NavBarLink | LinkPreset)[]; }; export type ProfileConfig = { avatar?: string; name: string; bio?: string; links: { name: string; url: string; icon: string; }[]; }; export type LicenseConfig = { enable: boolean; name: string; url: string; }; export type ImageFallbackConfig = { enable: boolean; originalDomain: string; fallbackDomain: string; }; export type UmamiConfig = { enable: boolean; baseUrl: string; shareId: string; timezone: string; }; export type LIGHT_DARK_MODE = | typeof LIGHT_MODE | typeof DARK_MODE | typeof AUTO_MODE; export type BlogPostData = { body: string; title: string; published: Date; description: string; tags: string[]; draft?: boolean; image?: string; prevTitle?: string; prevSlug?: string; nextTitle?: string; nextSlug?: string; }; export type ExpressiveCodeConfig = { theme: string; }; export type GitHubEditConfig = { enable: boolean; baseUrl: string; };