manga-nanobanana / types.ts
Akhil-Theerthala's picture
Upload 25 files
2cdfc6e verified
raw
history blame
3.19 kB
export interface LoadingState {
isLoading: boolean;
message: string;
progress: number;
}
export interface CharacterProfile {
name: string;
description: string;
}
export interface Panel {
panelNumber: number;
description: string;
dialogue: string;
speaker: string; // The name of the character speaking. Can be 'Narrator' or empty.
}
export interface MangaPage {
pageNumber: number;
panels: Panel[];
}
export type MangaStyle = 'Shonen' | 'Shojo' | 'Seinen' | 'Chibi' | 'Wacky' | 'I don\'t know';
export interface StoryTemplate {
id: string;
name: string;
description: string;
structure: string;
genre: string;
prompt: string;
icon: string;
}
export interface ComicGenerationOptions {
includeDialogue: boolean;
title: string;
story: string;
author: string;
style: MangaStyle;
}
export interface NarrativeStructure {
act: number;
name: string;
description: string;
keyElements: string[];
}
export interface StoryProgression {
id: string;
title: string;
description: string;
direction: 'sequel' | 'prequel' | 'side_story' | 'alternate_ending';
synopsis: string;
estimatedPages: number;
thematicFocus: string;
newCharacters?: string[];
plotHooks: string[];
}
export interface ComicIteration {
id: string;
title: string;
story: string;
author: string;
style: MangaStyle;
includeDialogue?: boolean;
images: string[];
characters: CharacterProfile[];
pages: MangaPage[];
generatedAt: Date;
}
export interface ComicSeries {
seriesTitle: string;
author: string;
iterations: ComicIteration[];
totalPages: number;
createdAt: Date;
lastUpdated: Date;
totalGenerationTime?: number;
performanceSummary?: PerformanceTiming[];
}
export interface ExplorationPrompt {
showPrompt: boolean;
onContinue: () => void;
onFinish: (removeApiKey: boolean) => void;
generationTime: number;
totalPages: number;
}
export interface OptimizedImage {
compressed: string; // For display (smaller size)
full: string; // For PDF generation (full quality)
width: number;
height: number;
compressedSize: number;
fullSize: number;
}
export interface CharacterSketch {
characterName: string;
sketchImage: string;
description: string;
}
export interface EnvironmentSketch {
environmentName: string;
sketchImage: string;
description: string;
}
export interface GenerationProgress {
phase: 'character_analysis' | 'character_sketches' | 'environment_sketches' | 'script_writing' | 'page_generation' | 'completion';
message: string;
progress: number;
characterSketches?: CharacterSketch[];
environmentSketches?: EnvironmentSketch[];
generatedPages?: { pageNumber: number; image: string; title: string }[];
storyArcSummary?: string;
currentStepStartTime?: number;
stepTimings?: PerformanceTiming[];
estimatedTimeRemaining?: number;
}
export interface PerformanceTiming {
stepName: string;
startTime: number;
endTime: number;
duration: number;
timestamp: string;
}
export interface StoryArcSummary {
overallTheme: string;
keyEvents: string[];
characterDevelopment: string[];
narrativeProgression: string;
emotionalJourney: string;
}