@forgespace/branding-mcp 0.32.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 +47 -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-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 +23 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -1
- package/dist/lib/branding-core/index.js +23 -0
- package/dist/lib/branding-core/index.js.map +1 -1
- package/dist/lib/types.d.ts +379 -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-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,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"}
|
|
@@ -0,0 +1,255 @@
|
|
|
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_STORE_CONCEPT = {
|
|
12
|
+
minimal: 'Clean grid layout with generous whitespace, single-column product focus, and distraction-free checkout',
|
|
13
|
+
bold: 'Full-bleed hero imagery, high-contrast CTAs, bold typography, and energy-driven product showcases',
|
|
14
|
+
elegant: 'Luxury editorial grid, curated collections, soft overlays, and premium unboxing narratives',
|
|
15
|
+
playful: 'Illustrated banners, animated product cards, gamified rewards, and surprise-and-delight moments',
|
|
16
|
+
corporate: 'Structured catalogue with filterable specs, bulk ordering, quote request flows, and account portals',
|
|
17
|
+
tech: 'Developer-first store with technical specs front-and-centre, API purchasing, and CLI install prompts',
|
|
18
|
+
organic: 'Story-driven product pages with provenance maps, ingredient transparency, and eco-certification badges',
|
|
19
|
+
retro: 'Vintage storefront aesthetic, editorial product photography, and nostalgia-driven copy',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_PRODUCT_PAGE_LAYOUT = {
|
|
22
|
+
minimal: [
|
|
23
|
+
'Single large product image with thumbnail strip',
|
|
24
|
+
'Title, price, and one-line description above the fold',
|
|
25
|
+
'Add-to-cart with sticky bar on scroll',
|
|
26
|
+
'Collapsible specification and care sections',
|
|
27
|
+
'Minimal related products (3 max)',
|
|
28
|
+
],
|
|
29
|
+
bold: [
|
|
30
|
+
'Full-width hero video or lifestyle image',
|
|
31
|
+
'High-contrast price and CTA block',
|
|
32
|
+
'Social proof ticker (recent purchases)',
|
|
33
|
+
'Tabbed specs, reviews, and Q&A',
|
|
34
|
+
'Bold upsell block with urgency copy',
|
|
35
|
+
],
|
|
36
|
+
elegant: [
|
|
37
|
+
'Editorial double-image layout with product story',
|
|
38
|
+
'Refined typography hierarchy (name, line, price)',
|
|
39
|
+
'Material and craftsmanship callout cards',
|
|
40
|
+
'White-glove delivery promise badge',
|
|
41
|
+
'Curated "Complete the Look" section',
|
|
42
|
+
],
|
|
43
|
+
playful: [
|
|
44
|
+
'Animated product image carousel with hover effects',
|
|
45
|
+
'Emoji-driven feature highlights',
|
|
46
|
+
'Colour and variant selector with instant preview',
|
|
47
|
+
'Fun size guide with illustrated diagrams',
|
|
48
|
+
'"You might also love" discovery strip',
|
|
49
|
+
],
|
|
50
|
+
corporate: [
|
|
51
|
+
'Tabbed product overview with datasheet download',
|
|
52
|
+
'Compatibility matrix and integration notes',
|
|
53
|
+
'Volume pricing table',
|
|
54
|
+
'Request a quote / contact sales CTA',
|
|
55
|
+
'Related products and accessories grid',
|
|
56
|
+
],
|
|
57
|
+
tech: [
|
|
58
|
+
'Technical spec comparison table',
|
|
59
|
+
'Code snippet for SDK installation',
|
|
60
|
+
'Changelog and version history section',
|
|
61
|
+
'GitHub stars and npm downloads badge',
|
|
62
|
+
'Community forum link and support tier selector',
|
|
63
|
+
],
|
|
64
|
+
organic: [
|
|
65
|
+
'Origin story map and farm provenance section',
|
|
66
|
+
'Ingredient and allergen transparency table',
|
|
67
|
+
'Certifications and eco-label badges',
|
|
68
|
+
'How it is made / traceability timeline',
|
|
69
|
+
'"Frequently bought with" ethical pairings',
|
|
70
|
+
],
|
|
71
|
+
retro: [
|
|
72
|
+
'Vintage-styled product card with hand-drawn accents',
|
|
73
|
+
'Story copy in editorial long-read format',
|
|
74
|
+
'Limited-edition badge and serial numbering',
|
|
75
|
+
'Archive gallery showing product history',
|
|
76
|
+
'Collector tips and provenance notes',
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
const STYLE_CHECKOUT_PRINCIPLES = {
|
|
80
|
+
minimal: [
|
|
81
|
+
'Single-page checkout with progress indicator',
|
|
82
|
+
'Guest checkout as primary option',
|
|
83
|
+
'Minimal form fields (name, email, address, payment)',
|
|
84
|
+
'Auto-fill and address lookup enabled',
|
|
85
|
+
'Order summary always visible',
|
|
86
|
+
],
|
|
87
|
+
bold: [
|
|
88
|
+
'Express checkout buttons (Apple Pay, Google Pay) at top',
|
|
89
|
+
'Bold progress bar with estimated delivery date',
|
|
90
|
+
'Social proof ("500 people bought this today") near CTA',
|
|
91
|
+
'Post-purchase upsell modal with time limit',
|
|
92
|
+
'Celebratory confirmation page with share prompt',
|
|
93
|
+
],
|
|
94
|
+
elegant: [
|
|
95
|
+
'Multi-step checkout with refined micro-animations',
|
|
96
|
+
'Address saved to account for returning customers',
|
|
97
|
+
'Gift wrapping and personalised message option',
|
|
98
|
+
'White-glove delivery slots at checkout',
|
|
99
|
+
'Understated confirmation with handwritten thank-you note preview',
|
|
100
|
+
],
|
|
101
|
+
playful: [
|
|
102
|
+
'Fun progress bar with animated milestones',
|
|
103
|
+
'Reward points preview during checkout',
|
|
104
|
+
'Gamified delivery speed selector',
|
|
105
|
+
'Confetti confirmation page',
|
|
106
|
+
'Social share for orders ("I just bought something awesome!")',
|
|
107
|
+
],
|
|
108
|
+
corporate: [
|
|
109
|
+
'PO number and cost-centre field support',
|
|
110
|
+
'Multi-approver workflow for enterprise orders',
|
|
111
|
+
'Invoice and NET-30 payment option',
|
|
112
|
+
'Saved payment methods for account holders',
|
|
113
|
+
'Order confirmation with ERP reference number',
|
|
114
|
+
],
|
|
115
|
+
tech: [
|
|
116
|
+
'API-first checkout with SDK access post-purchase',
|
|
117
|
+
'License key generated immediately on confirmation',
|
|
118
|
+
'Seat count selector for team plans',
|
|
119
|
+
'SSO login option at checkout',
|
|
120
|
+
'Developer portal access link in confirmation email',
|
|
121
|
+
],
|
|
122
|
+
organic: [
|
|
123
|
+
'Carbon offset calculation shown during checkout',
|
|
124
|
+
'Packaging preference (minimal / compostable)',
|
|
125
|
+
'Subscription save-and-subscribe option',
|
|
126
|
+
'Delivery route transparency (local warehouse)',
|
|
127
|
+
'Charity donation round-up at checkout',
|
|
128
|
+
],
|
|
129
|
+
retro: [
|
|
130
|
+
'Hand-illustrated order summary card design',
|
|
131
|
+
'Optional gift certificate field',
|
|
132
|
+
'Legacy payment methods (cheque on request)',
|
|
133
|
+
'Collector number assigned at checkout',
|
|
134
|
+
'Personalised "Thank you" card preview',
|
|
135
|
+
],
|
|
136
|
+
};
|
|
137
|
+
const STYLE_MERCHANDISING = {
|
|
138
|
+
minimal: [
|
|
139
|
+
'Curated collections of 8-12 items',
|
|
140
|
+
'No more than 2 featured products on homepage',
|
|
141
|
+
'Seasonal hero swap every 4 weeks',
|
|
142
|
+
],
|
|
143
|
+
bold: [
|
|
144
|
+
'Flash sale banners with countdown timers',
|
|
145
|
+
'Best-seller badges on top 10 products',
|
|
146
|
+
'Trending now carousel updated daily',
|
|
147
|
+
],
|
|
148
|
+
elegant: [
|
|
149
|
+
'Seasonal editorial lookbooks',
|
|
150
|
+
'Limited-edition drops with waitlist',
|
|
151
|
+
'Styled scene photography for homepage hero',
|
|
152
|
+
],
|
|
153
|
+
playful: [
|
|
154
|
+
'Daily deal wheel or mystery box',
|
|
155
|
+
'Build-your-own bundle configurator',
|
|
156
|
+
'Seasonal themed collections with custom art',
|
|
157
|
+
],
|
|
158
|
+
corporate: [
|
|
159
|
+
'Product family groupings by use case',
|
|
160
|
+
'Downloadable product catalogues (PDF)',
|
|
161
|
+
'Volume discount tier visibility on listing page',
|
|
162
|
+
],
|
|
163
|
+
tech: [
|
|
164
|
+
'Featured integrations marketplace',
|
|
165
|
+
'Community-built templates or extensions',
|
|
166
|
+
'Changelog-driven "What is new" section',
|
|
167
|
+
],
|
|
168
|
+
organic: [
|
|
169
|
+
'Harvest-season limited batches',
|
|
170
|
+
'Provenance region collections',
|
|
171
|
+
'"Better Together" ingredient pairing bundles',
|
|
172
|
+
],
|
|
173
|
+
retro: [
|
|
174
|
+
'Archive series drops',
|
|
175
|
+
'Numbered limited editions',
|
|
176
|
+
'Seasonal throwback campaigns with original archive imagery',
|
|
177
|
+
],
|
|
178
|
+
};
|
|
179
|
+
const STYLE_TRUST_SIGNALS = {
|
|
180
|
+
minimal: ['Clean SSL badge', 'Simple 30-day returns policy', 'Privacy policy link in footer'],
|
|
181
|
+
bold: ['Trustpilot or Google Reviews widget', 'UGC photo feed', 'Live purchase notifications'],
|
|
182
|
+
elegant: [
|
|
183
|
+
'Press mentions carousel',
|
|
184
|
+
'Authenticity certificate for premium items',
|
|
185
|
+
'White-glove return policy',
|
|
186
|
+
],
|
|
187
|
+
playful: [
|
|
188
|
+
'Customer photo reviews with ratings',
|
|
189
|
+
'Emoji review summary',
|
|
190
|
+
'Fun "happiness guarantee" badge',
|
|
191
|
+
],
|
|
192
|
+
corporate: [
|
|
193
|
+
'ISO certification badges',
|
|
194
|
+
'Compliance documentation download',
|
|
195
|
+
'SLA uptime guarantee',
|
|
196
|
+
],
|
|
197
|
+
tech: ['SOC 2 Type II badge', 'Open-source audit link', 'Status page link'],
|
|
198
|
+
organic: [
|
|
199
|
+
'Certified Organic / Fair Trade badges',
|
|
200
|
+
'Third-party lab test results',
|
|
201
|
+
'B Corp certification',
|
|
202
|
+
],
|
|
203
|
+
retro: [
|
|
204
|
+
'Authenticity and provenance certificate',
|
|
205
|
+
'Heritage brand story',
|
|
206
|
+
'Expert curation badge',
|
|
207
|
+
],
|
|
208
|
+
};
|
|
209
|
+
function buildSeoGuidelines(brand) {
|
|
210
|
+
return [
|
|
211
|
+
`Use "${brand.name}" as the primary keyword anchor across product titles and meta descriptions`,
|
|
212
|
+
'Optimise product images with descriptive alt text including product name and key attributes',
|
|
213
|
+
'Implement product schema markup (schema.org/Product) with price, availability, and review data',
|
|
214
|
+
'Create canonical URLs for product variants (colour, size) to avoid duplicate content',
|
|
215
|
+
'Build category landing pages with H1 headers targeting primary category keywords',
|
|
216
|
+
'Enable breadcrumb schema for navigation hierarchy',
|
|
217
|
+
'Submit product sitemap to Google Search Console and Bing Webmaster Tools',
|
|
218
|
+
'Use structured data for special offers, sales prices, and promotional events',
|
|
219
|
+
];
|
|
220
|
+
}
|
|
221
|
+
function buildAccessibilityGuidelines() {
|
|
222
|
+
return [
|
|
223
|
+
'All product images require descriptive alt text (WCAG 1.1.1)',
|
|
224
|
+
'Ensure colour is never the only means of conveying variant information (WCAG 1.4.1)',
|
|
225
|
+
'Minimum contrast ratio 4.5:1 for product text, 3:1 for large text and price (WCAG 1.4.3)',
|
|
226
|
+
'Keyboard-navigable product carousels and image zoom features (WCAG 2.1.1)',
|
|
227
|
+
'Checkout form fields must have visible labels (not placeholder-only) (WCAG 3.3.2)',
|
|
228
|
+
'Error messages in checkout must be descriptive and suggestions provided (WCAG 3.3.3)',
|
|
229
|
+
'Loading states and skeleton screens must be announced to screen readers',
|
|
230
|
+
'Minimum 44x44px touch target for all add-to-cart and CTA buttons (WCAG 2.5.5)',
|
|
231
|
+
];
|
|
232
|
+
}
|
|
233
|
+
function buildBriefSummary(brand, safeStyle) {
|
|
234
|
+
const concept = STYLE_STORE_CONCEPT[safeStyle];
|
|
235
|
+
const topLayout = (STYLE_PRODUCT_PAGE_LAYOUT[safeStyle]?.[0] ?? '').toLowerCase();
|
|
236
|
+
const topCheckout = (STYLE_CHECKOUT_PRINCIPLES[safeStyle]?.[0] ?? '').toLowerCase();
|
|
237
|
+
const taglinePart = brand.tagline ? ` — "${brand.tagline}"` : '';
|
|
238
|
+
return (`${brand.name}${taglinePart} ecommerce direction: ${concept}. ` +
|
|
239
|
+
`Product pages lead with ${topLayout}. ` +
|
|
240
|
+
`Checkout prioritises ${topCheckout}.`);
|
|
241
|
+
}
|
|
242
|
+
export function generateBrandEcommerce(brand) {
|
|
243
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
244
|
+
return {
|
|
245
|
+
storeConcept: STYLE_STORE_CONCEPT[safeStyle],
|
|
246
|
+
productPageLayout: STYLE_PRODUCT_PAGE_LAYOUT[safeStyle] ?? STYLE_PRODUCT_PAGE_LAYOUT.minimal,
|
|
247
|
+
checkoutPrinciples: STYLE_CHECKOUT_PRINCIPLES[safeStyle] ?? STYLE_CHECKOUT_PRINCIPLES.minimal,
|
|
248
|
+
merchandisingStrategy: STYLE_MERCHANDISING[safeStyle] ?? STYLE_MERCHANDISING.minimal,
|
|
249
|
+
trustSignals: STYLE_TRUST_SIGNALS[safeStyle] ?? STYLE_TRUST_SIGNALS.minimal,
|
|
250
|
+
seoGuidelines: buildSeoGuidelines(brand),
|
|
251
|
+
accessibilityGuidelines: buildAccessibilityGuidelines(),
|
|
252
|
+
ecommerceBriefSummary: buildBriefSummary(brand, safeStyle),
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=brand-ecommerce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-ecommerce.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-ecommerce.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-fintech.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-fintech.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAc,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAoO/E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAc7E"}
|