@forgespace/branding-mcp 0.31.0 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/branding-core/generators/brand-affiliate.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-affiliate.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-affiliate.js +249 -0
- package/dist/lib/branding-core/generators/brand-affiliate.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-analytics.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-analytics.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-analytics.js +208 -0
- package/dist/lib/branding-core/generators/brand-analytics.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-audio.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-audio.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-audio.js +200 -0
- package/dist/lib/branding-core/generators/brand-audio.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-b2b.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-b2b.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-b2b.js +236 -0
- package/dist/lib/branding-core/generators/brand-b2b.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-chatbot.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-chatbot.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-chatbot.js +174 -0
- package/dist/lib/branding-core/generators/brand-chatbot.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-community.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-community.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-community.js +164 -0
- package/dist/lib/branding-core/generators/brand-community.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-competitive.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-competitive.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-competitive.js +274 -0
- package/dist/lib/branding-core/generators/brand-competitive.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-crisis.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-crisis.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-crisis.js +256 -0
- package/dist/lib/branding-core/generators/brand-crisis.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-customer.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-customer.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-customer.js +270 -0
- package/dist/lib/branding-core/generators/brand-customer.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.js +255 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-fintech.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-fintech.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-fintech.js +225 -0
- package/dist/lib/branding-core/generators/brand-fintech.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-globalisation.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-globalisation.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-globalisation.js +222 -0
- package/dist/lib/branding-core/generators/brand-globalisation.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-influencer.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-influencer.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-influencer.js +262 -0
- package/dist/lib/branding-core/generators/brand-influencer.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-innovation.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-innovation.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-innovation.js +229 -0
- package/dist/lib/branding-core/generators/brand-innovation.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-loyalty.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-loyalty.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-loyalty.js +231 -0
- package/dist/lib/branding-core/generators/brand-loyalty.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-marketplace.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-marketplace.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-marketplace.js +251 -0
- package/dist/lib/branding-core/generators/brand-marketplace.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-newsletter.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-newsletter.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-newsletter.js +173 -0
- package/dist/lib/branding-core/generators/brand-newsletter.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-podcast.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-podcast.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-podcast.js +217 -0
- package/dist/lib/branding-core/generators/brand-podcast.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-saas.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-saas.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-saas.js +212 -0
- package/dist/lib/branding-core/generators/brand-saas.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-seo.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-seo.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-seo.js +269 -0
- package/dist/lib/branding-core/generators/brand-seo.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-subscription.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-subscription.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-subscription.js +218 -0
- package/dist/lib/branding-core/generators/brand-subscription.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-training.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-training.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-training.js +261 -0
- package/dist/lib/branding-core/generators/brand-training.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-video.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-video.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-video.js +228 -0
- package/dist/lib/branding-core/generators/brand-video.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-webinar.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-webinar.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-webinar.js +165 -0
- package/dist/lib/branding-core/generators/brand-webinar.js.map +1 -0
- package/dist/lib/branding-core/index.d.ts +24 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -1
- package/dist/lib/branding-core/index.js +24 -0
- package/dist/lib/branding-core/index.js.map +1 -1
- package/dist/lib/types.d.ts +391 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tools/generate-brand-affiliate.d.ts +3 -0
- package/dist/tools/generate-brand-affiliate.d.ts.map +1 -0
- package/dist/tools/generate-brand-affiliate.js +14 -0
- package/dist/tools/generate-brand-affiliate.js.map +1 -0
- package/dist/tools/generate-brand-analytics.d.ts +3 -0
- package/dist/tools/generate-brand-analytics.d.ts.map +1 -0
- package/dist/tools/generate-brand-analytics.js +19 -0
- package/dist/tools/generate-brand-analytics.js.map +1 -0
- package/dist/tools/generate-brand-audio.d.ts +3 -0
- package/dist/tools/generate-brand-audio.d.ts.map +1 -0
- package/dist/tools/generate-brand-audio.js +14 -0
- package/dist/tools/generate-brand-audio.js.map +1 -0
- package/dist/tools/generate-brand-b2b.d.ts +3 -0
- package/dist/tools/generate-brand-b2b.d.ts.map +1 -0
- package/dist/tools/generate-brand-b2b.js +10 -0
- package/dist/tools/generate-brand-b2b.js.map +1 -0
- package/dist/tools/generate-brand-chatbot.d.ts +3 -0
- package/dist/tools/generate-brand-chatbot.d.ts.map +1 -0
- package/dist/tools/generate-brand-chatbot.js +10 -0
- package/dist/tools/generate-brand-chatbot.js.map +1 -0
- package/dist/tools/generate-brand-community.d.ts +3 -0
- package/dist/tools/generate-brand-community.d.ts.map +1 -0
- package/dist/tools/generate-brand-community.js +14 -0
- package/dist/tools/generate-brand-community.js.map +1 -0
- package/dist/tools/generate-brand-competitive.d.ts +3 -0
- package/dist/tools/generate-brand-competitive.d.ts.map +1 -0
- package/dist/tools/generate-brand-competitive.js +14 -0
- package/dist/tools/generate-brand-competitive.js.map +1 -0
- package/dist/tools/generate-brand-crisis.d.ts +3 -0
- package/dist/tools/generate-brand-crisis.d.ts.map +1 -0
- package/dist/tools/generate-brand-crisis.js +14 -0
- package/dist/tools/generate-brand-crisis.js.map +1 -0
- package/dist/tools/generate-brand-customer.d.ts +3 -0
- package/dist/tools/generate-brand-customer.d.ts.map +1 -0
- package/dist/tools/generate-brand-customer.js +19 -0
- package/dist/tools/generate-brand-customer.js.map +1 -0
- package/dist/tools/generate-brand-ecommerce.d.ts +3 -0
- package/dist/tools/generate-brand-ecommerce.d.ts.map +1 -0
- package/dist/tools/generate-brand-ecommerce.js +14 -0
- package/dist/tools/generate-brand-ecommerce.js.map +1 -0
- package/dist/tools/generate-brand-fintech.d.ts +3 -0
- package/dist/tools/generate-brand-fintech.d.ts.map +1 -0
- package/dist/tools/generate-brand-fintech.js +14 -0
- package/dist/tools/generate-brand-fintech.js.map +1 -0
- package/dist/tools/generate-brand-globalisation.d.ts +3 -0
- package/dist/tools/generate-brand-globalisation.d.ts.map +1 -0
- package/dist/tools/generate-brand-globalisation.js +14 -0
- package/dist/tools/generate-brand-globalisation.js.map +1 -0
- package/dist/tools/generate-brand-influencer.d.ts +3 -0
- package/dist/tools/generate-brand-influencer.d.ts.map +1 -0
- package/dist/tools/generate-brand-influencer.js +10 -0
- package/dist/tools/generate-brand-influencer.js.map +1 -0
- package/dist/tools/generate-brand-innovation.d.ts +3 -0
- package/dist/tools/generate-brand-innovation.d.ts.map +1 -0
- package/dist/tools/generate-brand-innovation.js +19 -0
- package/dist/tools/generate-brand-innovation.js.map +1 -0
- package/dist/tools/generate-brand-loyalty.d.ts +3 -0
- package/dist/tools/generate-brand-loyalty.d.ts.map +1 -0
- package/dist/tools/generate-brand-loyalty.js +14 -0
- package/dist/tools/generate-brand-loyalty.js.map +1 -0
- package/dist/tools/generate-brand-marketplace.d.ts +3 -0
- package/dist/tools/generate-brand-marketplace.d.ts.map +1 -0
- package/dist/tools/generate-brand-marketplace.js +14 -0
- package/dist/tools/generate-brand-marketplace.js.map +1 -0
- package/dist/tools/generate-brand-newsletter.d.ts +3 -0
- package/dist/tools/generate-brand-newsletter.d.ts.map +1 -0
- package/dist/tools/generate-brand-newsletter.js +14 -0
- package/dist/tools/generate-brand-newsletter.js.map +1 -0
- package/dist/tools/generate-brand-podcast.d.ts +3 -0
- package/dist/tools/generate-brand-podcast.d.ts.map +1 -0
- package/dist/tools/generate-brand-podcast.js +10 -0
- package/dist/tools/generate-brand-podcast.js.map +1 -0
- package/dist/tools/generate-brand-saas.d.ts +3 -0
- package/dist/tools/generate-brand-saas.d.ts.map +1 -0
- package/dist/tools/generate-brand-saas.js +14 -0
- package/dist/tools/generate-brand-saas.js.map +1 -0
- package/dist/tools/generate-brand-seo.d.ts +3 -0
- package/dist/tools/generate-brand-seo.d.ts.map +1 -0
- package/dist/tools/generate-brand-seo.js +14 -0
- package/dist/tools/generate-brand-seo.js.map +1 -0
- package/dist/tools/generate-brand-subscription.d.ts +3 -0
- package/dist/tools/generate-brand-subscription.d.ts.map +1 -0
- package/dist/tools/generate-brand-subscription.js +14 -0
- package/dist/tools/generate-brand-subscription.js.map +1 -0
- package/dist/tools/generate-brand-training.d.ts +3 -0
- package/dist/tools/generate-brand-training.d.ts.map +1 -0
- package/dist/tools/generate-brand-training.js +14 -0
- package/dist/tools/generate-brand-training.js.map +1 -0
- package/dist/tools/generate-brand-video.d.ts +3 -0
- package/dist/tools/generate-brand-video.d.ts.map +1 -0
- package/dist/tools/generate-brand-video.js +14 -0
- package/dist/tools/generate-brand-video.js.map +1 -0
- package/dist/tools/generate-brand-webinar.d.ts +3 -0
- package/dist/tools/generate-brand-webinar.d.ts.map +1 -0
- package/dist/tools/generate-brand-webinar.js +10 -0
- package/dist/tools/generate-brand-webinar.js.map +1 -0
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
const STYLE_LOCALISATION_APPROACH = {
|
|
2
|
+
minimal: 'Preserve the core essence with minimal adaptation — translate with precision, avoid localisation overreach.',
|
|
3
|
+
bold: 'Amplify energy in each market; adapt visuals, colours, and copy to local cultural resonance.',
|
|
4
|
+
elegant: 'Maintain premium positioning globally; partner with local luxury experts to preserve brand equity.',
|
|
5
|
+
playful: 'Lean into local humour and cultural references; adapt mascots and tone for each market.',
|
|
6
|
+
corporate: 'Standardise globally, adapt locally; ensure compliance with local business norms and regulations.',
|
|
7
|
+
tech: 'API-first localisation; ship locale bundles and RTL support from day one in the design system.',
|
|
8
|
+
organic: 'Celebrate local provenance; source local ingredients and tell regional sustainability stories.',
|
|
9
|
+
retro: 'Adapt vintage references to local cultural nostalgia; research era-specific aesthetics by market.',
|
|
10
|
+
};
|
|
11
|
+
const STYLE_BRAND_STANDARDS_FLEXIBILITY = {
|
|
12
|
+
minimal: 'Strict global standards — logo, colour, and typography must be unchanged in all markets.',
|
|
13
|
+
bold: 'Allow colour hue adjustments for cultural sensitivity; core mark is non-negotiable.',
|
|
14
|
+
elegant: 'Zero tolerance for visual deviation; local adaptations limited to copy and talent only.',
|
|
15
|
+
playful: 'High flexibility — local teams can adapt illustrations, mascots, and colour accents.',
|
|
16
|
+
corporate: 'Tiered governance: Tier 1 locked (logo, primary palette), Tier 2 adaptable (imagery, tagline).',
|
|
17
|
+
tech: 'Components are locked; content and locale strings are fully adaptable via i18n system.',
|
|
18
|
+
organic: 'Encourage regional sub-brands tied to provenance; maintain parent brand architecture.',
|
|
19
|
+
retro: 'Permit local vintage-inspired colour variants; core logotype remains unchanged.',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_CULTURAL_SENSITIVITY_FOCUS = {
|
|
22
|
+
minimal: [
|
|
23
|
+
'Avoid blank-space taboos in East Asian markets',
|
|
24
|
+
'Use inclusive neutral imagery',
|
|
25
|
+
'Simplify dense copy for low-literacy markets',
|
|
26
|
+
],
|
|
27
|
+
bold: [
|
|
28
|
+
'Audit colour symbolism per market before launch',
|
|
29
|
+
'Localise sports/energy references',
|
|
30
|
+
'Ensure imagery celebrates local heroes',
|
|
31
|
+
],
|
|
32
|
+
elegant: [
|
|
33
|
+
'Research gift-giving etiquette per market',
|
|
34
|
+
'Avoid culturally insensitive luxury tropes',
|
|
35
|
+
'Localise seasonal calendar (CNY, Diwali, Ramadan)',
|
|
36
|
+
],
|
|
37
|
+
playful: [
|
|
38
|
+
'Review character/mascot designs for cultural offence',
|
|
39
|
+
'Localise humour with native copywriters',
|
|
40
|
+
'Check colour associations for children per market',
|
|
41
|
+
],
|
|
42
|
+
corporate: [
|
|
43
|
+
'Respect local hierarchy and formality norms',
|
|
44
|
+
'Translate compliance documents by qualified legal translators',
|
|
45
|
+
'Adapt business card etiquette to market',
|
|
46
|
+
],
|
|
47
|
+
tech: [
|
|
48
|
+
'Support local date/time/number formats natively',
|
|
49
|
+
'Check domain and app name availability in each market',
|
|
50
|
+
'Ensure GDPR/PDPA/CCPA compliance by region',
|
|
51
|
+
],
|
|
52
|
+
organic: [
|
|
53
|
+
'Respect indigenous ingredient names and knowledge',
|
|
54
|
+
'Audit environmental claims for local standards',
|
|
55
|
+
'Partner with local NGOs for credibility',
|
|
56
|
+
],
|
|
57
|
+
retro: [
|
|
58
|
+
'Research nostalgic references that resonate vs offend locally',
|
|
59
|
+
'Avoid colonial imagery in post-colonial markets',
|
|
60
|
+
'Localise music/radio eras for audio branding',
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
const STYLE_PRIORITY_MARKETS = {
|
|
64
|
+
minimal: ['Northern Europe', 'Japan', 'Singapore', 'Canada'],
|
|
65
|
+
bold: ['Brazil', 'United States', 'Nigeria', 'Indonesia'],
|
|
66
|
+
elegant: ['France', 'UAE', 'Japan', 'China (Tier 1 cities)'],
|
|
67
|
+
playful: ['United States', 'Brazil', 'South Korea', 'Philippines'],
|
|
68
|
+
corporate: ['United States', 'Germany', 'Australia', 'Singapore'],
|
|
69
|
+
tech: ['United States', 'Germany', 'South Korea', 'Israel'],
|
|
70
|
+
organic: ['Germany', 'Netherlands', 'United Kingdom', 'Australia'],
|
|
71
|
+
retro: ['United Kingdom', 'United States', 'France', 'Italy'],
|
|
72
|
+
};
|
|
73
|
+
function buildLocaleAdaptations(brand) {
|
|
74
|
+
const style = brand.style ?? 'minimal';
|
|
75
|
+
const locales = [
|
|
76
|
+
{
|
|
77
|
+
locale: 'en-US',
|
|
78
|
+
language: 'English (US)',
|
|
79
|
+
rtl: false,
|
|
80
|
+
keyAdaptations: [
|
|
81
|
+
'Adjust spelling (colour → color, etc.)',
|
|
82
|
+
'Use imperial units where relevant',
|
|
83
|
+
'Reference US cultural occasions (Thanksgiving, 4th July)',
|
|
84
|
+
],
|
|
85
|
+
colourConsiderations: 'No major changes — default brand palette applies.',
|
|
86
|
+
typographyNotes: 'Default Latin script; ensure proper quotation marks (\u201c\u201d).',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
locale: 'ar-SA',
|
|
90
|
+
language: 'Arabic (Saudi Arabia)',
|
|
91
|
+
rtl: true,
|
|
92
|
+
keyAdaptations: [
|
|
93
|
+
'Full RTL layout including navigation and icons',
|
|
94
|
+
'Mirror directional imagery (arrows, people facing right)',
|
|
95
|
+
'Adapt copy for Ramadan / Eid seasonal campaigns',
|
|
96
|
+
'Use Hijri calendar where appropriate',
|
|
97
|
+
],
|
|
98
|
+
colourConsiderations: 'Green is highly auspicious; avoid alcohol-related imagery.',
|
|
99
|
+
typographyNotes: 'Use Noto Naskh Arabic or Tajawal; increase line-height by 20% for readability.',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
locale: 'zh-CN',
|
|
103
|
+
language: 'Chinese (Simplified)',
|
|
104
|
+
rtl: false,
|
|
105
|
+
keyAdaptations: [
|
|
106
|
+
'Register brand name phonetically (pinyin) for local recall',
|
|
107
|
+
'Adapt for WeChat, Weibo, and RED (Xiaohongshu) ecosystems',
|
|
108
|
+
'Localise for Singles Day (11.11) and Chinese New Year',
|
|
109
|
+
'Ensure Great Firewall compatibility for digital assets',
|
|
110
|
+
],
|
|
111
|
+
colourConsiderations: 'Red and gold connote luck and prosperity; avoid pure white in funerary contexts.',
|
|
112
|
+
typographyNotes: 'Use PingFang SC or Noto Sans SC; larger minimum font sizes (14px body).',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
locale: 'de-DE',
|
|
116
|
+
language: 'German',
|
|
117
|
+
rtl: false,
|
|
118
|
+
keyAdaptations: [
|
|
119
|
+
'Formal "Sie" vs informal "du" — choose per brand positioning',
|
|
120
|
+
"Comply with Germany's strict advertising regulations (Heilmittelwerbegesetz for health)",
|
|
121
|
+
'Adapt for DACH region (Austria, Switzerland variants)',
|
|
122
|
+
'Localise for German engineering/quality value expectations',
|
|
123
|
+
],
|
|
124
|
+
colourConsiderations: `${style === 'tech' || style === 'corporate' ? 'Blue tones reinforce trust and technical competence.' : 'Neutral palette works well; avoid garish combinations.'}`,
|
|
125
|
+
typographyNotes: 'German text expands ~30% vs English — design layouts with text overflow tolerance.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
locale: 'pt-BR',
|
|
129
|
+
language: 'Portuguese (Brazil)',
|
|
130
|
+
rtl: false,
|
|
131
|
+
keyAdaptations: [
|
|
132
|
+
'Localise for Brazilian Portuguese (not European PT)',
|
|
133
|
+
'Reference local football culture and Carnival where appropriate',
|
|
134
|
+
'Adapt for WhatsApp-first digital ecosystem',
|
|
135
|
+
'Pix payment integration for e-commerce',
|
|
136
|
+
],
|
|
137
|
+
colourConsiderations: 'Vibrant warm tones resonate; green and yellow carry national pride associations.',
|
|
138
|
+
typographyNotes: 'Similar text expansion to Spanish; ensure adequate horizontal space.',
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
return locales;
|
|
142
|
+
}
|
|
143
|
+
function buildTranslationGuidelines(brand) {
|
|
144
|
+
return [
|
|
145
|
+
`Use professional human translators with native-speaker copywriters for all consumer-facing content.`,
|
|
146
|
+
`Maintain a centralised brand glossary — "${brand.name}" and key product terms are never translated, only transcribed.`,
|
|
147
|
+
`tagline "${brand.tagline ?? brand.name + ' — Crafted for the world'}" must be approved by regional brand leads before use.`,
|
|
148
|
+
'Machine translation (DeepL / GPT) is permitted for internal documentation only.',
|
|
149
|
+
'Back-translation review required for all Tier 1 market campaigns.',
|
|
150
|
+
'Maintain a market-specific style guide for each priority locale covering tone, salutation, and taboo words.',
|
|
151
|
+
'Cultural review required from a native consultant before final sign-off on any campaign.',
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
function buildInternationalBrandArchitecture(brand) {
|
|
155
|
+
const style = brand.style ?? 'minimal';
|
|
156
|
+
const base = [
|
|
157
|
+
`Global brand: "${brand.name}" — non-negotiable core mark, colour, and typography.`,
|
|
158
|
+
'Regional endorsed brands permitted where local name recognition requires it (e.g., joint-venture markets).',
|
|
159
|
+
'Sub-brand naming must follow the [Global Name] + [Descriptor] convention.',
|
|
160
|
+
'All regional variants must pass the global brand consistency validator before market launch.',
|
|
161
|
+
'Annual global brand audit to identify drift and enforce standards.',
|
|
162
|
+
];
|
|
163
|
+
const extras = [];
|
|
164
|
+
if (style === 'tech') {
|
|
165
|
+
extras.push('Developer-facing sub-brands (e.g., [Name] API, [Name] SDK) follow a separate technical brand system.');
|
|
166
|
+
extras.push('Open-source projects use a distinct community brand tier.');
|
|
167
|
+
}
|
|
168
|
+
if (style === 'organic') {
|
|
169
|
+
extras.push('Regional sourcing stories told as endorsed sub-brands (e.g., "[Name] x Oaxaca Harvest").');
|
|
170
|
+
}
|
|
171
|
+
if (style === 'elegant') {
|
|
172
|
+
extras.push('No sub-brands — single monolithic luxury brand maintained across all markets.');
|
|
173
|
+
}
|
|
174
|
+
return [...base, ...extras];
|
|
175
|
+
}
|
|
176
|
+
function buildComplianceRequirements(brand) {
|
|
177
|
+
const style = brand.style ?? 'minimal';
|
|
178
|
+
const base = [
|
|
179
|
+
'GDPR (EU) — privacy notices, cookie consent, data residency.',
|
|
180
|
+
'CCPA (California) — consumer data rights and opt-out mechanisms.',
|
|
181
|
+
'PDPA (Thailand / Singapore) — data protection for APAC markets.',
|
|
182
|
+
'ASA / FTC advertising standards — no misleading claims in any market.',
|
|
183
|
+
'Local trademark registration in all Tier 1 and Tier 2 markets.',
|
|
184
|
+
'Import/export compliance for physical brand assets (packaging, print).',
|
|
185
|
+
];
|
|
186
|
+
const extras = [];
|
|
187
|
+
if (style === 'tech') {
|
|
188
|
+
extras.push('PIPL (China) — Personal Information Protection Law compliance for China market.');
|
|
189
|
+
extras.push('App store guidelines (Apple / Google Play) per regional market.');
|
|
190
|
+
}
|
|
191
|
+
if (style === 'organic') {
|
|
192
|
+
extras.push('EU Organic Regulation (EC 834/2007) labelling requirements.');
|
|
193
|
+
extras.push('US NOP (USDA Organic) certification for North American market.');
|
|
194
|
+
}
|
|
195
|
+
if (style === 'corporate') {
|
|
196
|
+
extras.push('SOX compliance for investor communications in public company context.');
|
|
197
|
+
extras.push('Local financial advertising regulations (FCA UK, SEC US, MAS SG).');
|
|
198
|
+
}
|
|
199
|
+
return [...base, ...extras];
|
|
200
|
+
}
|
|
201
|
+
function buildGlobalisationBriefSummary(brand) {
|
|
202
|
+
const style = brand.style ?? 'minimal';
|
|
203
|
+
const approach = STYLE_LOCALISATION_APPROACH[style] ?? STYLE_LOCALISATION_APPROACH.minimal;
|
|
204
|
+
const taglineStr = brand.tagline ? ` — "${brand.tagline}"` : '';
|
|
205
|
+
return `${brand.name}${taglineStr} is pursuing global expansion with a ${style} brand approach. ${approach.split('.')[0]}. Priority markets include ${(STYLE_PRIORITY_MARKETS[style] ?? STYLE_PRIORITY_MARKETS.minimal).slice(0, 3).join(', ')}. The localisation strategy preserves core brand equity while enabling authentic cultural connections in each market.`;
|
|
206
|
+
}
|
|
207
|
+
export function generateBrandGlobalisation(brand) {
|
|
208
|
+
const style = (brand.style ?? 'minimal');
|
|
209
|
+
const safeStyle = STYLE_LOCALISATION_APPROACH[style] ? style : 'minimal';
|
|
210
|
+
return {
|
|
211
|
+
localisationApproach: STYLE_LOCALISATION_APPROACH[safeStyle],
|
|
212
|
+
brandStandardsFlexibility: STYLE_BRAND_STANDARDS_FLEXIBILITY[safeStyle],
|
|
213
|
+
culturalSensitivityFocus: STYLE_CULTURAL_SENSITIVITY_FOCUS[safeStyle],
|
|
214
|
+
priorityMarkets: STYLE_PRIORITY_MARKETS[safeStyle],
|
|
215
|
+
localeAdaptations: buildLocaleAdaptations(brand),
|
|
216
|
+
translationGuidelines: buildTranslationGuidelines(brand),
|
|
217
|
+
internationalBrandArchitecture: buildInternationalBrandArchitecture(brand),
|
|
218
|
+
complianceRequirements: buildComplianceRequirements(brand),
|
|
219
|
+
globalisationBriefSummary: buildGlobalisationBriefSummary(brand),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=brand-globalisation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-globalisation.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-globalisation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-influencer.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-influencer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAkB,MAAM,gBAAgB,CAAC;AA8P5E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,qBAAqB,CAsBnF"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
const VALID_STYLES = new Set([
|
|
2
|
+
'minimal',
|
|
3
|
+
'bold',
|
|
4
|
+
'elegant',
|
|
5
|
+
'playful',
|
|
6
|
+
'corporate',
|
|
7
|
+
'tech',
|
|
8
|
+
'organic',
|
|
9
|
+
'retro',
|
|
10
|
+
]);
|
|
11
|
+
const STYLE_INFLUENCER_APPROACH = {
|
|
12
|
+
minimal: 'Curated micro-influencer partnerships with authentic, uncluttered storytelling',
|
|
13
|
+
bold: 'High-impact macro-influencer campaigns with explosive reach and bold visuals',
|
|
14
|
+
elegant: 'Prestige collaborations with luxury lifestyle creators and aspirational voices',
|
|
15
|
+
playful: 'Fun, energetic partnerships with entertainment creators and viral content makers',
|
|
16
|
+
corporate: 'Thought leadership collaborations with industry analysts and business media',
|
|
17
|
+
tech: 'Developer advocates, tech YouTubers, and open-source community contributors',
|
|
18
|
+
organic: 'Purpose-driven creators focused on sustainability, wellness, and conscious living',
|
|
19
|
+
retro: 'Nostalgic content creators and vintage culture enthusiasts with niche followings',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_CONTENT_PREFERENCES = {
|
|
22
|
+
minimal: [
|
|
23
|
+
'Minimalist flat-lay product photography',
|
|
24
|
+
'Clean aesthetic unboxing videos',
|
|
25
|
+
'Honest, no-fuss product reviews',
|
|
26
|
+
'Day-in-the-life integrations',
|
|
27
|
+
'Before/after comparison content',
|
|
28
|
+
],
|
|
29
|
+
bold: [
|
|
30
|
+
'High-energy challenge videos',
|
|
31
|
+
'Reaction and transformation reels',
|
|
32
|
+
'Live unboxing and haul content',
|
|
33
|
+
'Bold OOH takeover documentation',
|
|
34
|
+
'Trend-setting statement pieces',
|
|
35
|
+
],
|
|
36
|
+
elegant: [
|
|
37
|
+
'Editorial-style luxury flatlay photography',
|
|
38
|
+
'Refined product styling and gifting moments',
|
|
39
|
+
'Exclusive behind-the-scenes access content',
|
|
40
|
+
'Travel and lifestyle integration shots',
|
|
41
|
+
'Long-form written reviews on prestige platforms',
|
|
42
|
+
],
|
|
43
|
+
playful: [
|
|
44
|
+
'Comedy skits and brand parodies',
|
|
45
|
+
'Challenge and trend participation',
|
|
46
|
+
'Interactive polls and Q&A stories',
|
|
47
|
+
'Meme-friendly short-form video',
|
|
48
|
+
'Animated and illustrated brand stories',
|
|
49
|
+
],
|
|
50
|
+
corporate: [
|
|
51
|
+
'LinkedIn thought leadership articles',
|
|
52
|
+
'Podcast guest appearances',
|
|
53
|
+
'Webinar and panel discussion co-hosting',
|
|
54
|
+
'Industry report co-authorship',
|
|
55
|
+
'Professional case study narratives',
|
|
56
|
+
],
|
|
57
|
+
tech: [
|
|
58
|
+
'In-depth technical product reviews',
|
|
59
|
+
'Tutorial and how-to video series',
|
|
60
|
+
'GitHub repository contributions',
|
|
61
|
+
'Live coding sessions and API walkthroughs',
|
|
62
|
+
'Developer podcast appearances',
|
|
63
|
+
],
|
|
64
|
+
organic: [
|
|
65
|
+
'Farm-to-table and origin storytelling',
|
|
66
|
+
'Sustainable lifestyle integration',
|
|
67
|
+
'Environmental impact documentation',
|
|
68
|
+
'Community and purpose-driven narratives',
|
|
69
|
+
'Educational content on conscious consumption',
|
|
70
|
+
],
|
|
71
|
+
retro: [
|
|
72
|
+
'Vintage aesthetic product showcases',
|
|
73
|
+
'Throwback and nostalgia-led storytelling',
|
|
74
|
+
'Collector and enthusiast deep dives',
|
|
75
|
+
'Retro lifestyle and culture content',
|
|
76
|
+
'Anniversary and heritage brand moments',
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
const STYLE_OUTREACH_TONE = {
|
|
80
|
+
minimal: "Clear, concise, and respectful of the creator's time and creative vision",
|
|
81
|
+
bold: 'Energetic and direct — lead with the big opportunity and bold campaign concept',
|
|
82
|
+
elegant: 'Refined and exclusive — position the partnership as a privilege, not a transaction',
|
|
83
|
+
playful: 'Casual, friendly, and fun — match their energy and show brand personality',
|
|
84
|
+
corporate: 'Professional and data-led — highlight business value and strategic alignment',
|
|
85
|
+
tech: 'Peer-to-peer and technical — demonstrate genuine understanding of their domain',
|
|
86
|
+
organic: 'Values-led and mission-driven — lead with shared purpose over commercial terms',
|
|
87
|
+
retro: 'Enthusiastic and culturally aware — show deep appreciation for their niche passion',
|
|
88
|
+
};
|
|
89
|
+
const STYLE_AVOID = {
|
|
90
|
+
minimal: [
|
|
91
|
+
'Over-produced content',
|
|
92
|
+
'Excessive brand logo placement',
|
|
93
|
+
'Scripted unnatural dialogue',
|
|
94
|
+
],
|
|
95
|
+
bold: ['Muted aesthetics', 'Slow-paced storytelling', 'Unclear calls to action'],
|
|
96
|
+
elegant: [
|
|
97
|
+
'Mass-market or low-brow creators',
|
|
98
|
+
'Discount or voucher-led promotions',
|
|
99
|
+
'Garish visuals',
|
|
100
|
+
],
|
|
101
|
+
playful: [
|
|
102
|
+
'Overly serious or stiff content',
|
|
103
|
+
'Corporate jargon in captions',
|
|
104
|
+
'Static imagery only',
|
|
105
|
+
],
|
|
106
|
+
corporate: [
|
|
107
|
+
'Consumer entertainment creators',
|
|
108
|
+
'Controversial personal brand accounts',
|
|
109
|
+
'Vanity metrics focus',
|
|
110
|
+
],
|
|
111
|
+
tech: [
|
|
112
|
+
'Non-technical shallow reviews',
|
|
113
|
+
'Paid-first sponsored posts without genuine use',
|
|
114
|
+
'Hype without substance',
|
|
115
|
+
],
|
|
116
|
+
organic: [
|
|
117
|
+
'Fast-fashion or unsustainable product tie-ins',
|
|
118
|
+
'Greenwashing language',
|
|
119
|
+
'Purely commercial framing',
|
|
120
|
+
],
|
|
121
|
+
retro: [
|
|
122
|
+
'Trendy influencers without authentic niche knowledge',
|
|
123
|
+
'Modern minimalist aesthetics',
|
|
124
|
+
'Generic lifestyle content',
|
|
125
|
+
],
|
|
126
|
+
};
|
|
127
|
+
function buildInfluencerTiers(brand) {
|
|
128
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
129
|
+
return [
|
|
130
|
+
{
|
|
131
|
+
tier: 'Mega Influencer',
|
|
132
|
+
followerRange: '1M+',
|
|
133
|
+
engagementExpectation: '1-3%',
|
|
134
|
+
budgetGuidance: 'Premium investment — suited to brand awareness campaigns',
|
|
135
|
+
idealUseCase: 'Product launches, brand repositioning, major campaign amplification',
|
|
136
|
+
selectionCriteria: [
|
|
137
|
+
'Brand value alignment must be unimpeachable',
|
|
138
|
+
`Audience demographic match for ${brand.industry || 'target market'}`,
|
|
139
|
+
'Previous brand partnership quality and disclosure compliance',
|
|
140
|
+
'Organic brand affinity preferred over cold outreach',
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
tier: 'Macro Influencer',
|
|
145
|
+
followerRange: '100K–1M',
|
|
146
|
+
engagementExpectation: '2-5%',
|
|
147
|
+
budgetGuidance: 'Mid-tier investment — strong ROI for reach with some engagement',
|
|
148
|
+
idealUseCase: 'Seasonal campaigns, product reviews, long-form storytelling',
|
|
149
|
+
selectionCriteria: [
|
|
150
|
+
'Consistent posting cadence and audience growth trajectory',
|
|
151
|
+
'Content quality aligned with brand aesthetic',
|
|
152
|
+
`${STYLE_INFLUENCER_APPROACH[safeStyle].split(' ').slice(0, 4).join(' ')} sensibility`,
|
|
153
|
+
'Clear media kit with audited audience demographics',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
tier: 'Micro Influencer',
|
|
158
|
+
followerRange: '10K–100K',
|
|
159
|
+
engagementExpectation: '5-10%',
|
|
160
|
+
budgetGuidance: 'Efficient investment — high engagement and authentic community trust',
|
|
161
|
+
idealUseCase: 'Community building, niche market penetration, authentic testimonials',
|
|
162
|
+
selectionCriteria: [
|
|
163
|
+
'Niche expertise directly relevant to brand category',
|
|
164
|
+
'High comment-to-like ratio indicating genuine community',
|
|
165
|
+
'Previous brand content quality and creative execution',
|
|
166
|
+
'Responsive and professional communication',
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
tier: 'Nano Influencer',
|
|
171
|
+
followerRange: '1K–10K',
|
|
172
|
+
engagementExpectation: '10-20%',
|
|
173
|
+
budgetGuidance: 'Low cost or gifting-based — maximum authenticity and peer trust',
|
|
174
|
+
idealUseCase: 'Brand seeding, product sampling, word-of-mouth activation',
|
|
175
|
+
selectionCriteria: [
|
|
176
|
+
'Genuine passion for brand category or values',
|
|
177
|
+
'Highly engaged and responsive audience',
|
|
178
|
+
'Local or hyper-niche community leadership',
|
|
179
|
+
'No brand conflict or competing products in recent posts',
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
];
|
|
183
|
+
}
|
|
184
|
+
function buildCampaignBriefTemplate(brand) {
|
|
185
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
186
|
+
return (`INFLUENCER CAMPAIGN BRIEF — ${brand.name.toUpperCase()}\n` +
|
|
187
|
+
`\nBrand: ${brand.name}${brand.tagline ? ` | "${brand.tagline}"` : ''}\n` +
|
|
188
|
+
`Industry: ${brand.industry || 'General'}\n` +
|
|
189
|
+
`\nOVERVIEW\n` +
|
|
190
|
+
`We are seeking [INFLUENCER NAME] to partner with ${brand.name} on [CAMPAIGN NAME].\n` +
|
|
191
|
+
`\nOBJECTIVES\n` +
|
|
192
|
+
`- Drive awareness of [PRODUCT/SERVICE] among [TARGET AUDIENCE]\n` +
|
|
193
|
+
`- Generate [X pieces] of authentic branded content\n` +
|
|
194
|
+
`- Achieve [X impressions / X engagements / X conversions]\n` +
|
|
195
|
+
`\nCONTENT DIRECTION\n` +
|
|
196
|
+
`Tone: ${STYLE_OUTREACH_TONE[safeStyle]}\n` +
|
|
197
|
+
`Preferred formats: ${(STYLE_CONTENT_PREFERENCES[safeStyle] ?? STYLE_CONTENT_PREFERENCES.minimal).slice(0, 2).join(', ')}\n` +
|
|
198
|
+
`\nDELIVERABLES\n` +
|
|
199
|
+
`- [X] feed posts / reels / stories\n` +
|
|
200
|
+
`- Usage rights: [DURATION] for owned and paid channels\n` +
|
|
201
|
+
`\nCOMPENSATION\n` +
|
|
202
|
+
`- [Fee / Gifting / Affiliate / Hybrid] — TBD based on audience and deliverables\n` +
|
|
203
|
+
`\nKEY DATES\n` +
|
|
204
|
+
`- Brief acceptance: [DATE]\n` +
|
|
205
|
+
`- Content draft review: [DATE]\n` +
|
|
206
|
+
`- Go-live date: [DATE]`);
|
|
207
|
+
}
|
|
208
|
+
function buildKpis(brand) {
|
|
209
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
210
|
+
const base = {
|
|
211
|
+
impressions: 'Total estimated reach across all influencer posts',
|
|
212
|
+
engagement_rate: 'Likes, comments, shares, and saves / total reach',
|
|
213
|
+
click_through_rate: 'Clicks to brand URL / total impressions',
|
|
214
|
+
cost_per_engagement: 'Total spend / total engagements',
|
|
215
|
+
sentiment_score: 'Positive comment ratio on branded content',
|
|
216
|
+
earned_media_value: 'Equivalent advertising value of organic influencer content',
|
|
217
|
+
};
|
|
218
|
+
if (safeStyle === 'tech') {
|
|
219
|
+
base.developer_sign_ups = 'New sign-ups attributed to influencer referral links';
|
|
220
|
+
base.github_stars = 'Stars or forks driven by influencer-linked repositories';
|
|
221
|
+
}
|
|
222
|
+
if (safeStyle === 'organic') {
|
|
223
|
+
base.values_alignment_score =
|
|
224
|
+
'Audience survey: perceived sustainability credibility post-campaign';
|
|
225
|
+
}
|
|
226
|
+
if (safeStyle === 'corporate') {
|
|
227
|
+
base.qualified_leads = 'Leads generated via influencer-specific landing pages';
|
|
228
|
+
base.pipeline_value = 'Estimated revenue potential from influencer-sourced leads';
|
|
229
|
+
}
|
|
230
|
+
return base;
|
|
231
|
+
}
|
|
232
|
+
function buildBriefSummary(brand) {
|
|
233
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
234
|
+
const approach = STYLE_INFLUENCER_APPROACH[safeStyle];
|
|
235
|
+
const pref = (STYLE_CONTENT_PREFERENCES[safeStyle] ?? STYLE_CONTENT_PREFERENCES.minimal)[0];
|
|
236
|
+
return (`${brand.name}${brand.tagline ? ` ("${brand.tagline}")` : ''} pursues an influencer strategy built on ${approach.toLowerCase()}. ` +
|
|
237
|
+
`Content focus leads with ${pref.toLowerCase()}, delivered across micro and macro tiers for maximum authenticity and reach. ` +
|
|
238
|
+
`Outreach tone: ${(STYLE_OUTREACH_TONE[safeStyle] ?? STYLE_OUTREACH_TONE.minimal).split(' — ')[0].toLowerCase()}.`);
|
|
239
|
+
}
|
|
240
|
+
export function generateBrandInfluencer(brand) {
|
|
241
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
242
|
+
return {
|
|
243
|
+
influencerApproach: STYLE_INFLUENCER_APPROACH[safeStyle],
|
|
244
|
+
contentPreferences: STYLE_CONTENT_PREFERENCES[safeStyle] ?? STYLE_CONTENT_PREFERENCES.minimal,
|
|
245
|
+
outreachTone: STYLE_OUTREACH_TONE[safeStyle] ?? STYLE_OUTREACH_TONE.minimal,
|
|
246
|
+
influencerTiers: buildInfluencerTiers(brand),
|
|
247
|
+
avoidList: STYLE_AVOID[safeStyle] ?? STYLE_AVOID.minimal,
|
|
248
|
+
campaignBriefTemplate: buildCampaignBriefTemplate(brand),
|
|
249
|
+
kpis: buildKpis(brand),
|
|
250
|
+
disclosureGuidelines: [
|
|
251
|
+
'All sponsored content must include clear #ad or #sponsored disclosure per ASA/FTC guidelines',
|
|
252
|
+
'Gifted product must be disclosed even if no fee was paid',
|
|
253
|
+
'Discount code partnerships require affiliate disclosure',
|
|
254
|
+
'Influencer must not claim clinical efficacy without approved substantiation',
|
|
255
|
+
'No brand impersonation or fake review creation permitted',
|
|
256
|
+
'Platform-native disclosure tools (paid partnership labels) must be used where available',
|
|
257
|
+
'Usage rights grant must be explicitly agreed in writing before content goes live',
|
|
258
|
+
],
|
|
259
|
+
influencerBriefSummary: buildBriefSummary(brand),
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=brand-influencer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-influencer.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-influencer.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS;IACnC,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAA+B;IAC5D,OAAO,EAAE,gFAAgF;IACzF,IAAI,EAAE,8EAA8E;IACpF,OAAO,EAAE,gFAAgF;IACzF,OAAO,EAAE,kFAAkF;IAC3F,SAAS,EAAE,6EAA6E;IACxF,IAAI,EAAE,6EAA6E;IACnF,OAAO,EAAE,mFAAmF;IAC5F,KAAK,EAAE,kFAAkF;CAC1F,CAAC;AAEF,MAAM,yBAAyB,GAAiC;IAC9D,OAAO,EAAE;QACP,yCAAyC;QACzC,iCAAiC;QACjC,iCAAiC;QACjC,8BAA8B;QAC9B,iCAAiC;KAClC;IACD,IAAI,EAAE;QACJ,8BAA8B;QAC9B,mCAAmC;QACnC,gCAAgC;QAChC,iCAAiC;QACjC,gCAAgC;KACjC;IACD,OAAO,EAAE;QACP,4CAA4C;QAC5C,6CAA6C;QAC7C,4CAA4C;QAC5C,wCAAwC;QACxC,iDAAiD;KAClD;IACD,OAAO,EAAE;QACP,iCAAiC;QACjC,mCAAmC;QACnC,mCAAmC;QACnC,gCAAgC;QAChC,wCAAwC;KACzC;IACD,SAAS,EAAE;QACT,sCAAsC;QACtC,2BAA2B;QAC3B,yCAAyC;QACzC,+BAA+B;QAC/B,oCAAoC;KACrC;IACD,IAAI,EAAE;QACJ,oCAAoC;QACpC,kCAAkC;QAClC,iCAAiC;QACjC,2CAA2C;QAC3C,+BAA+B;KAChC;IACD,OAAO,EAAE;QACP,uCAAuC;QACvC,mCAAmC;QACnC,oCAAoC;QACpC,yCAAyC;QACzC,8CAA8C;KAC/C;IACD,KAAK,EAAE;QACL,qCAAqC;QACrC,0CAA0C;QAC1C,qCAAqC;QACrC,qCAAqC;QACrC,wCAAwC;KACzC;CACF,CAAC;AAEF,MAAM,mBAAmB,GAA+B;IACtD,OAAO,EAAE,0EAA0E;IACnF,IAAI,EAAE,gFAAgF;IACtF,OAAO,EAAE,oFAAoF;IAC7F,OAAO,EAAE,2EAA2E;IACpF,SAAS,EAAE,8EAA8E;IACzF,IAAI,EAAE,gFAAgF;IACtF,OAAO,EAAE,gFAAgF;IACzF,KAAK,EAAE,oFAAoF;CAC5F,CAAC;AAEF,MAAM,WAAW,GAAiC;IAChD,OAAO,EAAE;QACP,uBAAuB;QACvB,gCAAgC;QAChC,6BAA6B;KAC9B;IACD,IAAI,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;IAChF,OAAO,EAAE;QACP,kCAAkC;QAClC,oCAAoC;QACpC,gBAAgB;KACjB;IACD,OAAO,EAAE;QACP,iCAAiC;QACjC,8BAA8B;QAC9B,qBAAqB;KACtB;IACD,SAAS,EAAE;QACT,iCAAiC;QACjC,uCAAuC;QACvC,sBAAsB;KACvB;IACD,IAAI,EAAE;QACJ,+BAA+B;QAC/B,gDAAgD;QAChD,wBAAwB;KACzB;IACD,OAAO,EAAE;QACP,+CAA+C;QAC/C,uBAAuB;QACvB,2BAA2B;KAC5B;IACD,KAAK,EAAE;QACL,sDAAsD;QACtD,8BAA8B;QAC9B,2BAA2B;KAC5B;CACF,CAAC;AAEF,SAAS,oBAAoB,CAAC,KAAoB;IAChD,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,OAAO;QACL;YACE,IAAI,EAAE,iBAAiB;YACvB,aAAa,EAAE,KAAK;YACpB,qBAAqB,EAAE,MAAM;YAC7B,cAAc,EAAE,0DAA0D;YAC1E,YAAY,EAAE,qEAAqE;YACnF,iBAAiB,EAAE;gBACjB,6CAA6C;gBAC7C,kCAAkC,KAAK,CAAC,QAAQ,IAAI,eAAe,EAAE;gBACrE,8DAA8D;gBAC9D,qDAAqD;aACtD;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,aAAa,EAAE,SAAS;YACxB,qBAAqB,EAAE,MAAM;YAC7B,cAAc,EAAE,iEAAiE;YACjF,YAAY,EAAE,6DAA6D;YAC3E,iBAAiB,EAAE;gBACjB,2DAA2D;gBAC3D,8CAA8C;gBAC9C,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc;gBACtF,oDAAoD;aACrD;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,aAAa,EAAE,UAAU;YACzB,qBAAqB,EAAE,OAAO;YAC9B,cAAc,EAAE,sEAAsE;YACtF,YAAY,EAAE,sEAAsE;YACpF,iBAAiB,EAAE;gBACjB,qDAAqD;gBACrD,yDAAyD;gBACzD,uDAAuD;gBACvD,2CAA2C;aAC5C;SACF;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,aAAa,EAAE,QAAQ;YACvB,qBAAqB,EAAE,QAAQ;YAC/B,cAAc,EAAE,iEAAiE;YACjF,YAAY,EAAE,2DAA2D;YACzE,iBAAiB,EAAE;gBACjB,8CAA8C;gBAC9C,wCAAwC;gBACxC,2CAA2C;gBAC3C,yDAAyD;aAC1D;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAoB;IACtD,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,OAAO,CACL,+BAA+B,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI;QAC3D,YAAY,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;QACzE,aAAa,KAAK,CAAC,QAAQ,IAAI,SAAS,IAAI;QAC5C,cAAc;QACd,oDAAoD,KAAK,CAAC,IAAI,wBAAwB;QACtF,gBAAgB;QAChB,kEAAkE;QAClE,sDAAsD;QACtD,6DAA6D;QAC7D,uBAAuB;QACvB,SAAS,mBAAmB,CAAC,SAAS,CAAC,IAAI;QAC3C,sBAAsB,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC5H,kBAAkB;QAClB,sCAAsC;QACtC,0DAA0D;QAC1D,kBAAkB;QAClB,mFAAmF;QACnF,eAAe;QACf,8BAA8B;QAC9B,kCAAkC;QAClC,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAoB;IACrC,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,IAAI,GAA2B;QACnC,WAAW,EAAE,mDAAmD;QAChE,eAAe,EAAE,kDAAkD;QACnE,kBAAkB,EAAE,yCAAyC;QAC7D,mBAAmB,EAAE,iCAAiC;QACtD,eAAe,EAAE,2CAA2C;QAC5D,kBAAkB,EAAE,4DAA4D;KACjF,CAAC;IACF,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,sDAAsD,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,yDAAyD,CAAC;IAChF,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB;YACzB,qEAAqE,CAAC;IAC1E,CAAC;IACD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,uDAAuD,CAAC;QAC/E,IAAI,CAAC,cAAc,GAAG,2DAA2D,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAoB;IAC7C,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,CACL,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,4CAA4C,QAAQ,CAAC,WAAW,EAAE,IAAI;QAClI,4BAA4B,IAAI,CAAC,WAAW,EAAE,+EAA+E;QAC7H,kBAAkB,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CACnH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,MAAM,SAAS,GAAe,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,OAAO;QACL,kBAAkB,EAAE,yBAAyB,CAAC,SAAS,CAAC;QACxD,kBAAkB,EAAE,yBAAyB,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,OAAO;QAC7F,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,OAAO;QAC3E,eAAe,EAAE,oBAAoB,CAAC,KAAK,CAAC;QAC5C,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,OAAO;QACxD,qBAAqB,EAAE,0BAA0B,CAAC,KAAK,CAAC;QACxD,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;QACtB,oBAAoB,EAAE;YACpB,8FAA8F;YAC9F,0DAA0D;YAC1D,yDAAyD;YACzD,6EAA6E;YAC7E,0DAA0D;YAC1D,yFAAyF;YACzF,kFAAkF;SACnF;QACD,sBAAsB,EAAE,iBAAiB,CAAC,KAAK,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-innovation.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-innovation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AA0MxB,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,qBAAqB,CAgDnF"}
|