Spaces:
Sleeping
Sleeping
import { FontName, actionman, komika, vtc } from "@/lib/fonts" | |
import { NextFontWithVariable } from "next/dist/compiled/@next/font" | |
export type ComicFamily = | |
| "american" | |
| "asian" | |
| "european" | |
export type ComicColor = | |
| "color" | |
| "grayscale" | |
| "monochrome" | |
export interface Preset { | |
label: string | |
family: ComicFamily | |
color: ComicColor | |
font: FontName | |
llmPrompt: string | |
imagePrompt: (prompt: string) => string[] | |
negativePrompt: (prompt: string) => string[] | |
} | |
// ATTENTION!! negative prompts are not supported by the VideoChain API yet | |
export const presets: Record<string, Preset> = { | |
japanese_manga: { | |
label: "Japanese", | |
family: "asian", | |
color: "grayscale", | |
font: "actionman", | |
llmPrompt: "japanese manga", | |
imagePrompt: (prompt: string) => [ | |
`japanese manga about ${prompt}`, | |
"single panel", | |
"manga", | |
"japanese", | |
"grayscale", | |
"intricate", | |
"detailed", | |
"drawing" | |
], | |
negativePrompt: () => [ | |
"franco-belgian comic", | |
"color album", | |
"color", | |
"american comic", | |
"photo", | |
"painting", | |
"3D render" | |
], | |
}, | |
franco_belgian: { | |
label: "Franco-Belgian", | |
family: "european", | |
color: "color", | |
font: "actionman", | |
llmPrompt: "Franco-Belgian comic (a \"bande dessinée\"), in the style of Franquin, Moebius etc", | |
imagePrompt: (prompt: string) => [ | |
`franco-belgian color comic about ${prompt}`, | |
"bande dessinée", | |
"franco-belgian comic", | |
"comic album", | |
"color drawing" | |
], | |
negativePrompt: () => [ | |
"manga", | |
"anime", | |
"american comic", | |
"grayscale", | |
"monochrome", | |
"photo", | |
"painting", | |
"3D render" | |
], | |
}, | |
american_comic: { | |
label: "American", | |
family: "american", | |
color: "color", | |
font: "actionman", | |
llmPrompt: "american comic", | |
imagePrompt: (prompt: string) => [ | |
`american comic about ${prompt}`, | |
"single panel", | |
"american comic", | |
"comicbook style", | |
"1950", | |
"50s", | |
"color comicbook", | |
"color drawing" | |
], | |
negativePrompt: () => [ | |
"manga", | |
"anime", | |
"american comic", | |
"action", | |
"grayscale", | |
"monochrome", | |
"photo", | |
"painting", | |
"3D render" | |
], | |
}, | |
armorican: { | |
label: "Armorican", | |
family: "european", | |
color: "monochrome", | |
font: "actionman", | |
llmPrompt: "new color album", | |
imagePrompt: (prompt: string) => [ | |
`color album panel`, | |
`about ${prompt}`, | |
"romans", | |
"gauls", | |
"french comic panel", | |
"franco-belgian style", | |
"bande dessinée", | |
"single panel", | |
"comical", | |
"comic album", | |
"color drawing" | |
], | |
negativePrompt: () => [ | |
"manga", | |
"anime", | |
"american comic", | |
"grayscale", | |
"monochrome", | |
"photo", | |
"painting", | |
"3D render" | |
], | |
} | |
} | |
export type PresetName = keyof typeof presets | |
export const defaultPreset: PresetName = "japanese_manga" | |
export const getPreset = (preset?: PresetName): Preset => presets[preset || defaultPreset] || presets[defaultPreset] |