|
|
|
|
|
export interface MixedStyle { |
|
name: string; |
|
percentage: number; |
|
} |
|
|
|
export interface RegionalityData { |
|
country: string; |
|
|
|
city: string; |
|
neighborhood: string; |
|
weight: number; |
|
} |
|
|
|
export interface BrandData { |
|
name: string; |
|
slogan: string; |
|
weight: number; |
|
} |
|
|
|
export type TextPosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top-right'; |
|
export type SubtitleOutlineStyle = 'auto' | 'white' | 'black' | 'soft_shadow' | 'transparent_box'; |
|
|
|
|
|
export interface CompositionPreset { |
|
id: string; |
|
name: string; |
|
icon: React.FC<React.SVGProps<SVGSVGElement>>; |
|
config: { |
|
style: { |
|
name: 'fill' | 'stroke' | 'fill-stroke' | 'gradient-on-block' | 'vertical'; |
|
palette: 'light' | 'dark' | 'complementary' | 'analogous'; |
|
background?: { |
|
color: string; |
|
padding: number; |
|
}; |
|
forcedStroke?: string; |
|
}; |
|
rotation: boolean; |
|
subtitle: boolean; |
|
}; |
|
} |
|
|
|
|
|
export type PriceTagPosition = 'none' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; |
|
export type PriceTagStyleId = 'circle' | 'tag' | 'burst'; |
|
export type PriceTagColor = 'red' | 'yellow' | 'blue' | 'black'; |
|
|
|
export interface PriceData { |
|
text: string; |
|
modelText: string; |
|
style: PriceTagStyleId; |
|
position: PriceTagPosition; |
|
color: PriceTagColor; |
|
} |
|
|
|
|
|
|
|
|
|
export interface GoogleAd { |
|
headlines: string[]; |
|
descriptions: string[]; |
|
} |
|
export interface FacebookAd { |
|
primaryText: string; |
|
headline: string; |
|
description: string; |
|
} |
|
export interface AdCopy { |
|
google: GoogleAd; |
|
facebook: FacebookAd; |
|
strategyTip: string; |
|
} |
|
|
|
export interface AdIdea { |
|
conceptName: string; |
|
headline: string; |
|
primaryText: string; |
|
replicabilityTip: string; |
|
} |
|
|
|
export interface AdTrendAnalysis { |
|
trendOverview: string; |
|
adIdeas: AdIdea[]; |
|
hashtags: string[]; |
|
} |
|
|
|
export interface BrandConcept { |
|
name: string; |
|
philosophy: string; |
|
visualStyle: string; |
|
keywords: string[]; |
|
} |
|
|
|
export interface FeatureDetails { |
|
title: string; |
|
description: string; |
|
} |
|
|
|
|
|
export interface GenerateOptions { |
|
basePrompt: string; |
|
imagePrompt: string; |
|
textOverlay: string; |
|
compositionId: string; |
|
textPosition: TextPosition; |
|
subtitleOutline: SubtitleOutlineStyle; |
|
artStyles: string[]; |
|
theme: string; |
|
brandData: BrandData; |
|
priceData: PriceData; |
|
negativeImagePrompt?: string; |
|
numberOfImages: number; |
|
scenario?: 'product' | 'couple' | 'family' | 'isometric_details' | 'poster' | 'carousel_cta' | 'carousel_educational' | 'carousel_trend' | 'executive_project'; |
|
concept?: BrandConcept; |
|
} |