59 lines
1.3 KiB
TypeScript
59 lines
1.3 KiB
TypeScript
export interface Project {
|
|
id: string;
|
|
title: string;
|
|
status: string; // e.g., "Konzept", "In Arbeit", "Lektorat", "Abgeschlossen"
|
|
progress: number; // 0 to 100
|
|
description: string;
|
|
}
|
|
|
|
export interface Book {
|
|
id: string;
|
|
title: string;
|
|
subtitle?: string;
|
|
coverUrl: string;
|
|
description: string;
|
|
publishedYear: number;
|
|
buyLink?: string;
|
|
spotifyPlaylistId?: string; // Just the playlist ID (e.g., "47R6ZAdk7Xf6M4i9mR0fP1")
|
|
genres?: string[];
|
|
}
|
|
|
|
export interface AuthorProfile {
|
|
name: string;
|
|
bio: string;
|
|
avatarUrl: string;
|
|
heroTitle: string;
|
|
heroSubtitle: string;
|
|
projects: Project[];
|
|
books: Book[];
|
|
customSectionTitle?: string;
|
|
customSectionContent?: string;
|
|
|
|
// Custom static texts
|
|
badgeText?: string;
|
|
aboutTitle?: string;
|
|
projectsTitle?: string;
|
|
projectsSubtitle?: string;
|
|
booksTitle?: string;
|
|
booksSubtitle?: string;
|
|
footerText?: string;
|
|
|
|
// Custom design & theme controls
|
|
accentColor?: string;
|
|
secondaryColor?: string;
|
|
backgroundColor?: string;
|
|
cardBgColor?: string;
|
|
fontFamily?: "sans" | "serif" | "mono";
|
|
heroBannerUrl?: string;
|
|
}
|
|
|
|
export interface AuthorData {
|
|
scifi: AuthorProfile;
|
|
erotica: AuthorProfile;
|
|
clara: AuthorProfile;
|
|
renee: AuthorProfile;
|
|
}
|
|
|
|
export interface AdminSettings {
|
|
adminPasswordHash?: string; // Optional if we hash, or we check against .env
|
|
}
|