116 lines
2.2 KiB
TypeScript
116 lines
2.2 KiB
TypeScript
|
|
export interface MarketMetric {
|
|
label: string;
|
|
value: string;
|
|
trend: 'up' | 'down' | 'stable';
|
|
explanation: string;
|
|
source?: string;
|
|
methodology?: string;
|
|
}
|
|
|
|
export interface ShareOfSearch {
|
|
competitor: string;
|
|
percentage: number;
|
|
}
|
|
|
|
export interface PlatformVelocity {
|
|
platform: string;
|
|
region: string;
|
|
trend: 'up' | 'stable' | 'down';
|
|
value: number; // 0-100 for bar width
|
|
}
|
|
|
|
export interface RadarMetric {
|
|
label: string;
|
|
score: number;
|
|
benchmark: number;
|
|
}
|
|
|
|
export interface SocialContent {
|
|
platform: string;
|
|
headline: string;
|
|
metrics: string;
|
|
thumbnail: string;
|
|
sourceUrl?: string;
|
|
}
|
|
|
|
export interface Creator {
|
|
name: string;
|
|
handle: string;
|
|
category: string;
|
|
impact: string;
|
|
}
|
|
|
|
export interface NewsSentiment {
|
|
headline: string;
|
|
source: string;
|
|
sentiment: 'positive' | 'negative' | 'neutral';
|
|
score: number;
|
|
}
|
|
|
|
export interface CompetitorClaim {
|
|
keyword: string;
|
|
frequency: number;
|
|
explanation: string;
|
|
source?: string;
|
|
methodology?: string;
|
|
}
|
|
|
|
export interface WhitespaceItem {
|
|
type: 'OPPORTUNITY' | 'RISK';
|
|
title: string;
|
|
description: string;
|
|
}
|
|
|
|
export interface AgencyBrief {
|
|
objective: string;
|
|
targetAudience: string;
|
|
keyMessage: string;
|
|
creativeHooks: string[];
|
|
tacticalContent: {
|
|
format: string;
|
|
channel: string;
|
|
description: string;
|
|
}[];
|
|
}
|
|
|
|
export interface CulturalNuance {
|
|
term: string;
|
|
insight: string;
|
|
strategyTip: string;
|
|
sourceTitle: string;
|
|
sourceUrl: string;
|
|
}
|
|
|
|
export interface Summary {
|
|
overview: string;
|
|
strategicTakeaways: string[];
|
|
sources: { title: string; url: string }[];
|
|
}
|
|
|
|
export interface DashboardData {
|
|
marketMetrics: {
|
|
roas: MarketMetric;
|
|
engagement: MarketMetric;
|
|
fatigue: MarketMetric;
|
|
sov: MarketMetric;
|
|
};
|
|
platformVelocity: PlatformVelocity[];
|
|
radarMetrics: RadarMetric[];
|
|
newsFeed: NewsSentiment[];
|
|
competitorClaims: CompetitorClaim[];
|
|
whitespaceAnalysis: WhitespaceItem[];
|
|
socialHighlights: SocialContent[];
|
|
topCreators: Creator[];
|
|
agencyBrief: AgencyBrief;
|
|
summary: Summary;
|
|
shareOfSearch: ShareOfSearch[];
|
|
culturalNuances: CulturalNuance[];
|
|
}
|
|
|
|
export interface SearchState {
|
|
product: string;
|
|
category: string;
|
|
loading: boolean;
|
|
error: string | null;
|
|
}
|