instasaas / types.ts
Persano's picture
Upload 25 files
5ca475a verified
raw
history blame
3.03 kB
// This file is intentionally left blank as the types from the previous version are no longer needed.
// New types will be defined locally within components where they are used.
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; // Percentage of influence
}
export type TextPosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top-right';
export type SubtitleOutlineStyle = 'auto' | 'white' | 'black' | 'soft_shadow' | 'transparent_box';
// Renamed and enhanced for new styling capabilities
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; // e.g., 'rgba(0,0,0,0.5)'
padding: number; // as a factor of font size
};
forcedStroke?: string;
};
rotation: boolean;
subtitle: boolean;
};
}
// --- Price Tag Types ---
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;
}
// --- Marketing Suite Types ---
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;
}
// Interface to consolidate all generation parameters into a single object
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;
}