@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,256 @@
|
|
|
1
|
+
const STYLE_CRISIS_TONE = {
|
|
2
|
+
minimal: 'Clear, factual, and measured — no dramatisation',
|
|
3
|
+
bold: 'Confident and direct — own the narrative proactively',
|
|
4
|
+
elegant: 'Composed and authoritative — project calm leadership',
|
|
5
|
+
playful: 'Human and empathetic — balance warmth with accountability',
|
|
6
|
+
corporate: 'Formal and structured — follow protocol precisely',
|
|
7
|
+
tech: 'Transparent and data-driven — lead with facts and timelines',
|
|
8
|
+
organic: 'Authentic and community-first — centre stakeholder wellbeing',
|
|
9
|
+
retro: 'Honest and grounded — appeal to shared history and trust',
|
|
10
|
+
};
|
|
11
|
+
const STYLE_FIRST_RESPONSE = {
|
|
12
|
+
minimal: [
|
|
13
|
+
'Acknowledge the issue within 1 hour of awareness',
|
|
14
|
+
'State what is known and what is being investigated',
|
|
15
|
+
'Avoid speculation; commit to follow-up timeline',
|
|
16
|
+
],
|
|
17
|
+
bold: [
|
|
18
|
+
'Issue a confident holding statement within 30 minutes',
|
|
19
|
+
'Name the senior spokesperson immediately',
|
|
20
|
+
'Commit to full transparency and regular updates',
|
|
21
|
+
],
|
|
22
|
+
elegant: [
|
|
23
|
+
'Release a measured initial statement via official channels',
|
|
24
|
+
'Convey leadership engagement without over-promising',
|
|
25
|
+
'Use precise language; avoid emotional amplifiers',
|
|
26
|
+
],
|
|
27
|
+
playful: [
|
|
28
|
+
'Acknowledge impact on community in human, warm language',
|
|
29
|
+
'Avoid corporate jargon; be genuinely sorry if at fault',
|
|
30
|
+
'Commit to making things right, not just fixing the process',
|
|
31
|
+
],
|
|
32
|
+
corporate: [
|
|
33
|
+
'Issue formal holding statement per approved template',
|
|
34
|
+
'Activate crisis management committee within the first hour',
|
|
35
|
+
'Log all communications and decisions for audit trail',
|
|
36
|
+
],
|
|
37
|
+
tech: [
|
|
38
|
+
'Publish an incident report stub within 30 minutes',
|
|
39
|
+
'Share status-page link immediately; update every 30 minutes',
|
|
40
|
+
'Lead with technical facts and root-cause investigation status',
|
|
41
|
+
],
|
|
42
|
+
organic: [
|
|
43
|
+
'Prioritise personal outreach to directly affected stakeholders',
|
|
44
|
+
'Be transparent about supply chain or ingredient concerns',
|
|
45
|
+
'Involve community voices in the response plan where possible',
|
|
46
|
+
],
|
|
47
|
+
retro: [
|
|
48
|
+
'Reference brand history and values in the opening statement',
|
|
49
|
+
'Use the founder or long-tenured leader as spokesperson',
|
|
50
|
+
'Emphasise continuity and commitment to original mission',
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
const STYLE_SPOKESPERSON = {
|
|
54
|
+
minimal: 'Communications Director — concise, on-message',
|
|
55
|
+
bold: 'CEO — high-visibility, confident delivery',
|
|
56
|
+
elegant: 'CEO or Chair — composed, authoritative tone',
|
|
57
|
+
playful: 'Brand Director or Community Lead — approachable and genuine',
|
|
58
|
+
corporate: 'Corporate Affairs Director — protocol-adherent',
|
|
59
|
+
tech: 'CTO or VP Engineering — technical credibility',
|
|
60
|
+
organic: 'Founder or Head of Impact — mission-aligned',
|
|
61
|
+
retro: 'Founder or longest-serving leader — trust and continuity',
|
|
62
|
+
};
|
|
63
|
+
const STYLE_CHANNEL_PRIORITY = {
|
|
64
|
+
minimal: ['Press release', 'Brand website', 'Email to affected parties'],
|
|
65
|
+
bold: ['CEO video statement', 'Press release', 'Social media', 'Media interviews'],
|
|
66
|
+
elegant: ['Official press release', 'Private briefing for key stakeholders', 'Brand website'],
|
|
67
|
+
playful: ['Social media', 'Email community update', 'Brand blog', 'Live Q&A'],
|
|
68
|
+
corporate: [
|
|
69
|
+
'Formal press release',
|
|
70
|
+
'Regulatory filings if required',
|
|
71
|
+
'Investor relations notification',
|
|
72
|
+
'Internal all-hands',
|
|
73
|
+
],
|
|
74
|
+
tech: ['Status page', 'Technical blog post', 'Developer newsletter', 'Social media (Twitter/X)'],
|
|
75
|
+
organic: ['Direct email to community', 'Social media', 'Retailer briefing', 'Press statement'],
|
|
76
|
+
retro: ['Press release', 'Personal letter from founder', 'Brand website', 'Email subscribers'],
|
|
77
|
+
};
|
|
78
|
+
function buildResponsePhases(brand, safeStyle) {
|
|
79
|
+
const toneHint = STYLE_CRISIS_TONE[safeStyle] ?? STYLE_CRISIS_TONE.minimal;
|
|
80
|
+
return [
|
|
81
|
+
{
|
|
82
|
+
phase: '0–1 hour: First Alert',
|
|
83
|
+
objectives: ['Confirm facts internally', 'Notify crisis team', 'Draft holding statement'],
|
|
84
|
+
actions: [
|
|
85
|
+
'Activate crisis management protocol',
|
|
86
|
+
'Brief executive sponsor',
|
|
87
|
+
`Issue holding statement (${toneHint.split(' ')[0].toLowerCase()} tone)`,
|
|
88
|
+
'Monitor media and social channels',
|
|
89
|
+
],
|
|
90
|
+
communicationsAction: 'Holding statement only — do not over-commit',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
phase: '1–4 hours: Containment',
|
|
94
|
+
objectives: ['Establish facts', 'Align internal messaging', 'Engage affected stakeholders'],
|
|
95
|
+
actions: [
|
|
96
|
+
'Convene crisis committee',
|
|
97
|
+
'Prepare updated statement with known facts',
|
|
98
|
+
`Activate ${STYLE_SPOKESPERSON[safeStyle] ?? STYLE_SPOKESPERSON.minimal} as spokesperson`,
|
|
99
|
+
'Set up media monitoring cadence (every 15 min)',
|
|
100
|
+
],
|
|
101
|
+
communicationsAction: 'Detailed factual update; empathy-led language',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
phase: '4–24 hours: Active Management',
|
|
105
|
+
objectives: ['Demonstrate action', 'Manage media narrative', 'Support affected parties'],
|
|
106
|
+
actions: [
|
|
107
|
+
`Publish full statement via: ${(STYLE_CHANNEL_PRIORITY[safeStyle] ?? STYLE_CHANNEL_PRIORITY.minimal).slice(0, 2).join(', ')}`,
|
|
108
|
+
'Offer media interviews to key outlets',
|
|
109
|
+
'Update internal teams every 2 hours',
|
|
110
|
+
'Document all actions for post-crisis review',
|
|
111
|
+
],
|
|
112
|
+
communicationsAction: 'Proactive narrative management; facts + remediation commitments',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
phase: '24–72 hours: Resolution Path',
|
|
116
|
+
objectives: [
|
|
117
|
+
'Communicate remediation steps',
|
|
118
|
+
'Begin trust rebuilding',
|
|
119
|
+
'Prepare post-crisis review',
|
|
120
|
+
],
|
|
121
|
+
actions: [
|
|
122
|
+
'Publish remediation timeline',
|
|
123
|
+
'Engage affected stakeholders directly',
|
|
124
|
+
'Brief employees with full picture',
|
|
125
|
+
'Monitor sentiment recovery metrics',
|
|
126
|
+
],
|
|
127
|
+
communicationsAction: 'Progress updates; acknowledge lessons learned',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
phase: 'Post-Crisis (72 hours+): Recovery',
|
|
131
|
+
objectives: ['Rebuild brand trust', 'Complete internal review', 'Update crisis playbook'],
|
|
132
|
+
actions: [
|
|
133
|
+
'Publish post-incident report (where appropriate)',
|
|
134
|
+
'Conduct internal debrief and playbook update',
|
|
135
|
+
'Re-engage community with positive brand storytelling',
|
|
136
|
+
`Resume ${brand.name} normal communications cadence`,
|
|
137
|
+
],
|
|
138
|
+
communicationsAction: 'Transition from crisis to recovery narrative',
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
function buildDarkSiteContent(brand) {
|
|
143
|
+
return [
|
|
144
|
+
`Crisis landing page at ${brand.name.toLowerCase().replace(/\s+/g, '')}-update.com (or sub-domain)`,
|
|
145
|
+
'Plain-language summary of the situation',
|
|
146
|
+
'What we know and what we are doing',
|
|
147
|
+
'FAQ updated in real time',
|
|
148
|
+
'Contact form or helpline for affected parties',
|
|
149
|
+
'Timeline of key events and communications',
|
|
150
|
+
'Named spokesperson with photo',
|
|
151
|
+
'Links to official statements and documents',
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
function buildStakeholderMatrix(brand) {
|
|
155
|
+
return [
|
|
156
|
+
{
|
|
157
|
+
group: 'Customers / End Users',
|
|
158
|
+
priority: 'Critical',
|
|
159
|
+
channel: 'Email, website, social media',
|
|
160
|
+
messageFrame: `${brand.name} is taking immediate steps to protect you`,
|
|
161
|
+
responseTime: '< 2 hours',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
group: 'Employees',
|
|
165
|
+
priority: 'Critical',
|
|
166
|
+
channel: 'Internal comms, all-hands, manager cascade',
|
|
167
|
+
messageFrame: 'What happened, what we know, what to say to customers',
|
|
168
|
+
responseTime: '< 1 hour',
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
group: 'Media / Press',
|
|
172
|
+
priority: 'High',
|
|
173
|
+
channel: 'Press release, spokesperson availability',
|
|
174
|
+
messageFrame: 'Facts-first, proactive, no speculation',
|
|
175
|
+
responseTime: '< 2 hours',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
group: 'Investors / Board',
|
|
179
|
+
priority: 'High',
|
|
180
|
+
channel: 'Direct email, call from CEO/CFO',
|
|
181
|
+
messageFrame: 'Situation summary, financial exposure, mitigation plan',
|
|
182
|
+
responseTime: '< 3 hours',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
group: 'Regulators / Legal',
|
|
186
|
+
priority: 'High',
|
|
187
|
+
channel: 'Formal letter, legal counsel communication',
|
|
188
|
+
messageFrame: 'Compliance-first; proactive disclosure where required',
|
|
189
|
+
responseTime: 'Per legal obligation',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
group: 'Partners / Suppliers',
|
|
193
|
+
priority: 'Medium',
|
|
194
|
+
channel: 'Account manager, direct email',
|
|
195
|
+
messageFrame: 'Impact assessment and operational continuity plan',
|
|
196
|
+
responseTime: '< 6 hours',
|
|
197
|
+
},
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
function buildMonitoringChecklist() {
|
|
201
|
+
return [
|
|
202
|
+
'Set up Google Alerts for brand name + crisis keywords',
|
|
203
|
+
'Monitor Twitter/X, LinkedIn, Instagram, TikTok in real time',
|
|
204
|
+
'Track share of voice vs competitors during the event',
|
|
205
|
+
'Monitor review sites (Google, Trustpilot, G2) for new submissions',
|
|
206
|
+
'Set sentiment baseline before and track hourly during crisis',
|
|
207
|
+
'Use social listening tool (Brandwatch, Mention, or Sprout Social)',
|
|
208
|
+
'Monitor news wire services (Reuters, AP, PR Newswire)',
|
|
209
|
+
'Track employee and internal sentiment via pulse survey',
|
|
210
|
+
'Document all media inquiries and response status',
|
|
211
|
+
];
|
|
212
|
+
}
|
|
213
|
+
function buildCrisisBriefSummary(brand, safeStyle) {
|
|
214
|
+
const tone = STYLE_CRISIS_TONE[safeStyle] ?? STYLE_CRISIS_TONE.minimal;
|
|
215
|
+
const taglinePart = brand.tagline ? ` ("${brand.tagline}")` : '';
|
|
216
|
+
return (`${brand.name}${taglinePart} crisis communications framework. ` +
|
|
217
|
+
`Response tone: ${tone}. ` +
|
|
218
|
+
`Spokesperson: ${STYLE_SPOKESPERSON[safeStyle] ?? STYLE_SPOKESPERSON.minimal}. ` +
|
|
219
|
+
`Five-phase response from first alert through post-crisis recovery, ` +
|
|
220
|
+
`with dark-site readiness, stakeholder matrix, and monitoring checklist.`);
|
|
221
|
+
}
|
|
222
|
+
const VALID_STYLES = new Set([
|
|
223
|
+
'minimal',
|
|
224
|
+
'bold',
|
|
225
|
+
'elegant',
|
|
226
|
+
'playful',
|
|
227
|
+
'corporate',
|
|
228
|
+
'tech',
|
|
229
|
+
'organic',
|
|
230
|
+
'retro',
|
|
231
|
+
]);
|
|
232
|
+
export function generateBrandCrisis(brand) {
|
|
233
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
234
|
+
return {
|
|
235
|
+
crisisTone: STYLE_CRISIS_TONE[safeStyle],
|
|
236
|
+
firstResponseGuidelines: STYLE_FIRST_RESPONSE[safeStyle],
|
|
237
|
+
spokespersonGuidance: STYLE_SPOKESPERSON[safeStyle],
|
|
238
|
+
channelPriority: STYLE_CHANNEL_PRIORITY[safeStyle],
|
|
239
|
+
responsePhases: buildResponsePhases(brand, safeStyle),
|
|
240
|
+
darkSiteContent: buildDarkSiteContent(brand),
|
|
241
|
+
stakeholderMatrix: buildStakeholderMatrix(brand),
|
|
242
|
+
monitoringChecklist: buildMonitoringChecklist(),
|
|
243
|
+
doNotSayList: [
|
|
244
|
+
'"No comment"',
|
|
245
|
+
'"We cannot discuss ongoing legal matters" (without context)',
|
|
246
|
+
'"This has never happened before"',
|
|
247
|
+
'"Our products are completely safe"',
|
|
248
|
+
'"It is not our fault"',
|
|
249
|
+
'"The media is exaggerating"',
|
|
250
|
+
'Speculative statements about root cause before investigation',
|
|
251
|
+
'Blame-shifting to third parties without evidence',
|
|
252
|
+
],
|
|
253
|
+
crisisBriefSummary: buildCrisisBriefSummary(brand, safeStyle),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=brand-crisis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-crisis.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-crisis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-customer.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-customer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAyC,MAAM,gBAAgB,CAAC;AAqRjG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAa/E"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
const STYLE_CX_APPROACH = {
|
|
2
|
+
minimal: 'Frictionless, self-serve experiences that respect customer time and intelligence.',
|
|
3
|
+
bold: 'High-energy, memorable touchpoints that surprise and delight at every turn.',
|
|
4
|
+
elegant: 'White-glove service with personalised attention and flawless execution.',
|
|
5
|
+
playful: 'Fun, gamified interactions that make every step of the journey enjoyable.',
|
|
6
|
+
corporate: 'Reliable, professional service underpinned by clear SLAs and escalation paths.',
|
|
7
|
+
tech: 'Data-driven personalisation and automation that anticipates customer needs.',
|
|
8
|
+
organic: 'Authentic, values-led service rooted in transparency and community trust.',
|
|
9
|
+
retro: 'Nostalgic charm with personal touches that evoke a simpler, warmer era of service.',
|
|
10
|
+
};
|
|
11
|
+
const STYLE_LOYALTY_STRATEGY = {
|
|
12
|
+
minimal: [
|
|
13
|
+
'Points-free cashback reward that auto-applies at checkout',
|
|
14
|
+
'Exclusive member pricing with no tier complexity',
|
|
15
|
+
'Early access to new products for returning customers',
|
|
16
|
+
'Surprise upgrade on every fifth purchase',
|
|
17
|
+
],
|
|
18
|
+
bold: [
|
|
19
|
+
'Gamified loyalty badges shared on social media',
|
|
20
|
+
'Limited-edition drops only for top-tier members',
|
|
21
|
+
'VIP event invitations for high-frequency buyers',
|
|
22
|
+
'Bold referral programme with dual-sided rewards',
|
|
23
|
+
],
|
|
24
|
+
elegant: [
|
|
25
|
+
'Private client concierge for personalised recommendations',
|
|
26
|
+
'Complimentary gift-wrapping and handwritten notes',
|
|
27
|
+
'Annual loyalty gift curated to client preferences',
|
|
28
|
+
'Invitation-only preview events at flagship locations',
|
|
29
|
+
],
|
|
30
|
+
playful: [
|
|
31
|
+
'Spin-the-wheel reward mechanic on each purchase',
|
|
32
|
+
'Loyalty streaks that unlock surprise bonuses',
|
|
33
|
+
'Community challenges where members earn points together',
|
|
34
|
+
'Birthday month double-points celebration',
|
|
35
|
+
],
|
|
36
|
+
corporate: [
|
|
37
|
+
'Volume-based tiered pricing with transparent thresholds',
|
|
38
|
+
'Dedicated account manager for enterprise clients',
|
|
39
|
+
'Annual business review with ROI reporting',
|
|
40
|
+
'Priority SLA upgrades for long-tenured customers',
|
|
41
|
+
],
|
|
42
|
+
tech: [
|
|
43
|
+
'API-driven personalised offers based on usage patterns',
|
|
44
|
+
'Credit system that rewards feature adoption',
|
|
45
|
+
'Developer advocate programme with referral bounties',
|
|
46
|
+
'Usage milestone badges shareable on LinkedIn',
|
|
47
|
+
],
|
|
48
|
+
organic: [
|
|
49
|
+
'Loyalty points donated to partner environmental causes',
|
|
50
|
+
'Early harvest / limited batch access for loyal members',
|
|
51
|
+
'Community co-creation invitations for top advocates',
|
|
52
|
+
'Reward for sustainable behaviour (e.g., packaging returns)',
|
|
53
|
+
],
|
|
54
|
+
retro: [
|
|
55
|
+
'Punch-card loyalty card with a tangible physical reward',
|
|
56
|
+
'Handwritten thank-you card with every repeat order',
|
|
57
|
+
'Long-tenured customer plaque or certificate',
|
|
58
|
+
'Seasonal loyalty gifts reflecting heritage craftsmanship',
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
const STYLE_SUPPORT_TONE = {
|
|
62
|
+
minimal: 'Clear, concise, and efficient. Answer the question; no filler.',
|
|
63
|
+
bold: 'Energetic and empowering. Turn every support ticket into a win.',
|
|
64
|
+
elegant: "Warm, measured, and reassuring. Mirror the client's level of formality.",
|
|
65
|
+
playful: 'Light-hearted and friendly. Use humour carefully to defuse frustration.',
|
|
66
|
+
corporate: 'Professional, structured, and solution-oriented. Cite process and policy clearly.',
|
|
67
|
+
tech: 'Technical accuracy first; accessible explanations second. Link to docs liberally.',
|
|
68
|
+
organic: 'Empathetic and honest. Acknowledge root causes; no corporate deflection.',
|
|
69
|
+
retro: 'Courteous and personal. Use first names; sign off with warmth.',
|
|
70
|
+
};
|
|
71
|
+
const STYLE_FEEDBACK_CHANNELS = {
|
|
72
|
+
minimal: ['In-app NPS widget', 'One-question post-purchase email', 'Public status-page comments'],
|
|
73
|
+
bold: ['Social listening dashboard', 'Community Q&A live sessions', 'Contest-based reviews'],
|
|
74
|
+
elegant: [
|
|
75
|
+
'Post-experience survey via personal email',
|
|
76
|
+
'1-to-1 client check-in calls',
|
|
77
|
+
'Private advisory council',
|
|
78
|
+
],
|
|
79
|
+
playful: ['Fun emoji-reaction surveys', 'In-app feedback game', 'Community poll of the week'],
|
|
80
|
+
corporate: [
|
|
81
|
+
'Quarterly business review survey',
|
|
82
|
+
'Formal RFI process',
|
|
83
|
+
'CSAT after every support ticket',
|
|
84
|
+
],
|
|
85
|
+
tech: [
|
|
86
|
+
'In-product telemetry opt-in',
|
|
87
|
+
'GitHub issue tracker for bugs',
|
|
88
|
+
'Automated CSAT after API calls',
|
|
89
|
+
],
|
|
90
|
+
organic: [
|
|
91
|
+
'Community forum threads',
|
|
92
|
+
'Open suggestion board visible to all',
|
|
93
|
+
'Annual impact survey',
|
|
94
|
+
],
|
|
95
|
+
retro: [
|
|
96
|
+
'Printed feedback card in the box',
|
|
97
|
+
'Phone check-in for long-term customers',
|
|
98
|
+
'Community town hall',
|
|
99
|
+
],
|
|
100
|
+
};
|
|
101
|
+
function buildPersonas(brand) {
|
|
102
|
+
const industry = brand.industry.toLowerCase();
|
|
103
|
+
const isTech = industry.includes('tech') || industry.includes('software') || industry.includes('saas');
|
|
104
|
+
const isRetail = industry.includes('retail') || industry.includes('ecommerce') || industry.includes('fashion');
|
|
105
|
+
const isHealth = industry.includes('health') || industry.includes('wellness') || industry.includes('fitness');
|
|
106
|
+
const primaryPain = isTech
|
|
107
|
+
? 'Integration complexity and time-to-value uncertainty'
|
|
108
|
+
: isRetail
|
|
109
|
+
? "Choice overload and fear of buyer's remorse"
|
|
110
|
+
: isHealth
|
|
111
|
+
? 'Overwhelming information and lack of personalised guidance'
|
|
112
|
+
: 'Finding a reliable solution they can trust';
|
|
113
|
+
const primaryGoal = isTech
|
|
114
|
+
? 'Ship faster with fewer blockers'
|
|
115
|
+
: isRetail
|
|
116
|
+
? 'Feel confident in purchase decisions'
|
|
117
|
+
: isHealth
|
|
118
|
+
? 'Achieve measurable wellbeing outcomes'
|
|
119
|
+
: 'Solve their core problem with minimal friction';
|
|
120
|
+
return [
|
|
121
|
+
{
|
|
122
|
+
name: 'The Early Adopter',
|
|
123
|
+
demographics: '25–35, digitally native, urban professional',
|
|
124
|
+
goals: [primaryGoal, 'Be first to try new things', 'Share discoveries with their network'],
|
|
125
|
+
painPoints: [primaryPain, 'Slow onboarding', 'Lack of customisation'],
|
|
126
|
+
motivations: ['Status', 'Curiosity', 'Efficiency'],
|
|
127
|
+
preferredChannels: ['Social media', 'Email', 'In-app notifications'],
|
|
128
|
+
messageResonance: `Emphasise innovation and being at the cutting edge of ${brand.industry}.`,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'The Pragmatic Buyer',
|
|
132
|
+
demographics: '35–50, decision-maker, value-driven',
|
|
133
|
+
goals: ['Reliable ROI', 'Proven track record', 'Easy team adoption'],
|
|
134
|
+
painPoints: ['Switching costs', 'Vendor lock-in risk', 'Hidden pricing'],
|
|
135
|
+
motivations: ['Value for money', 'Risk reduction', 'Team productivity'],
|
|
136
|
+
preferredChannels: ['Email', 'Case studies', 'Peer reviews'],
|
|
137
|
+
messageResonance: 'Lead with proof points, testimonials, and transparent pricing.',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'The Loyal Advocate',
|
|
141
|
+
demographics: 'Existing customer, 2+ years, high NPS',
|
|
142
|
+
goals: [
|
|
143
|
+
'Stay up to date with new features',
|
|
144
|
+
'Connect with other users',
|
|
145
|
+
'Get exclusive benefits',
|
|
146
|
+
],
|
|
147
|
+
painPoints: ['Feeling taken for granted', 'Support response times', 'Lack of recognition'],
|
|
148
|
+
motivations: ['Community', 'Exclusivity', 'Partnership'],
|
|
149
|
+
preferredChannels: ['Community platform', 'Direct email', 'VIP events'],
|
|
150
|
+
messageResonance: `Reward loyalty visibly; invite them into the ${brand.name} story.`,
|
|
151
|
+
},
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
function buildJourneyStages(brand) {
|
|
155
|
+
const style = brand.style ?? 'minimal';
|
|
156
|
+
const loyaltyItems = STYLE_LOYALTY_STRATEGY[style] ?? STYLE_LOYALTY_STRATEGY.minimal;
|
|
157
|
+
return [
|
|
158
|
+
{
|
|
159
|
+
stage: 'Awareness',
|
|
160
|
+
touchpoints: ['Social media ad', 'Word of mouth', 'Search engine result', 'Press mention'],
|
|
161
|
+
emotions: 'Curious, slightly sceptical',
|
|
162
|
+
opportunities: [
|
|
163
|
+
`Lead with ${brand.name}'s unique value in the first 3 seconds`,
|
|
164
|
+
'Use social proof prominently',
|
|
165
|
+
'Ensure SEO meta descriptions reflect brand voice',
|
|
166
|
+
],
|
|
167
|
+
kpis: ['Impressions', 'Share of voice', 'Branded search volume'],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
stage: 'Consideration',
|
|
171
|
+
touchpoints: ['Website', 'Comparison sites', 'Free trial / demo', 'Review platforms'],
|
|
172
|
+
emotions: 'Evaluating, hopeful, cautious',
|
|
173
|
+
opportunities: [
|
|
174
|
+
'Reduce time-to-value in onboarding flow',
|
|
175
|
+
'Surface customer testimonials relevant to prospect vertical',
|
|
176
|
+
'Provide a clear pricing page with no hidden costs',
|
|
177
|
+
],
|
|
178
|
+
kpis: ['Trial sign-up rate', 'Demo-to-close ratio', 'Time on site'],
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
stage: 'Purchase',
|
|
182
|
+
touchpoints: [
|
|
183
|
+
'Checkout flow',
|
|
184
|
+
'Sales conversation',
|
|
185
|
+
'Contract / subscription',
|
|
186
|
+
'Payment gateway',
|
|
187
|
+
],
|
|
188
|
+
emotions: 'Excited, momentarily anxious',
|
|
189
|
+
opportunities: [
|
|
190
|
+
'Minimise checkout friction to three steps or fewer',
|
|
191
|
+
'Send immediate confirmation with next-steps guide',
|
|
192
|
+
'Offer live chat support at point of payment',
|
|
193
|
+
],
|
|
194
|
+
kpis: ['Conversion rate', 'Cart abandonment rate', 'Average order value'],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
stage: 'Onboarding',
|
|
198
|
+
touchpoints: ['Welcome email series', 'In-product tour', 'Knowledge base', 'Success call'],
|
|
199
|
+
emotions: 'Eager, potentially overwhelmed',
|
|
200
|
+
opportunities: [
|
|
201
|
+
'Deliver first value milestone within 24 hours',
|
|
202
|
+
'Personalise onboarding path by use case',
|
|
203
|
+
'Celebrate quick wins with in-app notifications',
|
|
204
|
+
],
|
|
205
|
+
kpis: ['Activation rate', 'Time-to-first-value', 'Onboarding completion rate'],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
stage: 'Retention',
|
|
209
|
+
touchpoints: ['Regular product updates', 'Support team', 'Community', 'Loyalty programme'],
|
|
210
|
+
emotions: 'Settled, looking for growth',
|
|
211
|
+
opportunities: [
|
|
212
|
+
loyaltyItems[0] ?? 'Implement a loyalty reward',
|
|
213
|
+
'Run quarterly check-ins to surface expansion opportunities',
|
|
214
|
+
'Proactively flag underused features that match customer goals',
|
|
215
|
+
],
|
|
216
|
+
kpis: ['Net Revenue Retention', 'Churn rate', 'Monthly active usage'],
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
stage: 'Advocacy',
|
|
220
|
+
touchpoints: [
|
|
221
|
+
'Referral programme',
|
|
222
|
+
'Case study invitation',
|
|
223
|
+
'Community leadership',
|
|
224
|
+
'Review request',
|
|
225
|
+
],
|
|
226
|
+
emotions: 'Proud, evangelistic',
|
|
227
|
+
opportunities: [
|
|
228
|
+
'Make it easy to share brand love with one-click referral links',
|
|
229
|
+
'Co-create content with top advocates',
|
|
230
|
+
'Feature customer stories prominently in marketing',
|
|
231
|
+
],
|
|
232
|
+
kpis: ['Net Promoter Score', 'Referral conversion rate', 'User-generated content volume'],
|
|
233
|
+
},
|
|
234
|
+
];
|
|
235
|
+
}
|
|
236
|
+
function buildVoiceOfCustomerPlan(brand) {
|
|
237
|
+
const style = brand.style ?? 'minimal';
|
|
238
|
+
const channels = STYLE_FEEDBACK_CHANNELS[style] ?? STYLE_FEEDBACK_CHANNELS.minimal;
|
|
239
|
+
return [
|
|
240
|
+
`Collect structured feedback via: ${channels.slice(0, 2).join(', ')}`,
|
|
241
|
+
'Run quarterly NPS survey across all active customers',
|
|
242
|
+
'Conduct monthly 30-minute customer interviews (6–8 per quarter)',
|
|
243
|
+
'Monitor public review platforms (G2, Trustpilot, Google) weekly',
|
|
244
|
+
'Establish a closed beta programme for pre-release feedback',
|
|
245
|
+
'Share VoC insights with product and marketing teams monthly',
|
|
246
|
+
'Close the loop: inform customers when their feedback drives a change',
|
|
247
|
+
];
|
|
248
|
+
}
|
|
249
|
+
function buildBriefSummary(brand) {
|
|
250
|
+
const style = brand.style ?? 'minimal';
|
|
251
|
+
const approach = STYLE_CX_APPROACH[style] ?? STYLE_CX_APPROACH.minimal;
|
|
252
|
+
const tag = brand.tagline ? ` — "${brand.tagline}"` : '';
|
|
253
|
+
return (`${brand.name}${tag} (${brand.industry}) customer experience strategy. ` +
|
|
254
|
+
`CX philosophy: ${approach.split('.')[0]}. ` +
|
|
255
|
+
`Three primary personas identified. Six-stage journey mapped from awareness to advocacy.`);
|
|
256
|
+
}
|
|
257
|
+
export function generateBrandCustomer(brand) {
|
|
258
|
+
const style = brand.style ?? 'minimal';
|
|
259
|
+
return {
|
|
260
|
+
cxApproach: STYLE_CX_APPROACH[style] ?? STYLE_CX_APPROACH.minimal,
|
|
261
|
+
loyaltyStrategy: STYLE_LOYALTY_STRATEGY[style] ?? STYLE_LOYALTY_STRATEGY.minimal,
|
|
262
|
+
supportTone: STYLE_SUPPORT_TONE[style] ?? STYLE_SUPPORT_TONE.minimal,
|
|
263
|
+
feedbackChannels: STYLE_FEEDBACK_CHANNELS[style] ?? STYLE_FEEDBACK_CHANNELS.minimal,
|
|
264
|
+
personas: buildPersonas(brand),
|
|
265
|
+
journeyStages: buildJourneyStages(brand),
|
|
266
|
+
voiceOfCustomerPlan: buildVoiceOfCustomerPlan(brand),
|
|
267
|
+
customerBriefSummary: buildBriefSummary(brand),
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=brand-customer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-customer.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-customer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-ecommerce.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-ecommerce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAmQ3D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,oBAAoB,CAajF"}
|