apac-strategy-dashboard/types.ts
shubham.goyal@brandtech.plus 870051839c logo/header and other changes
2026-04-13 12:40:00 +05:30

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;
}