@forgespace/branding-mcp 0.9.0 → 0.12.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.
Files changed (36) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +7 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/branding-core/generators/brand-motion.d.ts +21 -0
  6. package/dist/lib/branding-core/generators/brand-motion.d.ts.map +1 -0
  7. package/dist/lib/branding-core/generators/brand-motion.js +202 -0
  8. package/dist/lib/branding-core/generators/brand-motion.js.map +1 -0
  9. package/dist/lib/branding-core/generators/brand-pitch.d.ts +30 -0
  10. package/dist/lib/branding-core/generators/brand-pitch.d.ts.map +1 -0
  11. package/dist/lib/branding-core/generators/brand-pitch.js +208 -0
  12. package/dist/lib/branding-core/generators/brand-pitch.js.map +1 -0
  13. package/dist/lib/branding-core/generators/brand-social.d.ts +4 -0
  14. package/dist/lib/branding-core/generators/brand-social.d.ts.map +1 -0
  15. package/dist/lib/branding-core/generators/brand-social.js +517 -0
  16. package/dist/lib/branding-core/generators/brand-social.js.map +1 -0
  17. package/dist/lib/branding-core/index.d.ts +3 -0
  18. package/dist/lib/branding-core/index.d.ts.map +1 -1
  19. package/dist/lib/branding-core/index.js +3 -0
  20. package/dist/lib/branding-core/index.js.map +1 -1
  21. package/dist/lib/types.d.ts +78 -0
  22. package/dist/lib/types.d.ts.map +1 -1
  23. package/dist/tools/generate-brand-motion.d.ts +3 -0
  24. package/dist/tools/generate-brand-motion.d.ts.map +1 -0
  25. package/dist/tools/generate-brand-motion.js +25 -0
  26. package/dist/tools/generate-brand-motion.js.map +1 -0
  27. package/dist/tools/generate-brand-pitch.d.ts +3 -0
  28. package/dist/tools/generate-brand-pitch.d.ts.map +1 -0
  29. package/dist/tools/generate-brand-pitch.js +19 -0
  30. package/dist/tools/generate-brand-pitch.js.map +1 -0
  31. package/dist/tools/generate-brand-social.d.ts +3 -0
  32. package/dist/tools/generate-brand-social.d.ts.map +1 -0
  33. package/dist/tools/generate-brand-social.js +25 -0
  34. package/dist/tools/generate-brand-social.js.map +1 -0
  35. package/package.json +1 -1
  36. package/server.json +3 -3
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export type { BrandIdentity, ColorPalette, TypographySystem, SpacingScale, ShadowSystem, BorderSystem, MotionSystem, GradientSystem, LogoOutput, BrandStyle, ColorHarmony, ExportFormat, BrandVoiceGuidelines, BrandVoiceTone, BrandVoiceAudience, BrandNamingOutput, NameIdea, DomainSuggestion, } from './lib/types.js';
2
+ export type { BrandIdentity, ColorPalette, TypographySystem, SpacingScale, ShadowSystem, BorderSystem, MotionSystem, GradientSystem, LogoOutput, BrandStyle, ColorHarmony, ExportFormat, BrandVoiceGuidelines, BrandVoiceTone, BrandVoiceAudience, BrandNamingOutput, NameIdea, DomainSuggestion, BrandMotionOutput, BrandMotionPrinciple, BrandSocialOutput, SocialPlatformConfig, ContentPillar, BrandPitchOutput, ElevatorPitch, PitchDeckSlide, InvestorHighlight, } from './lib/types.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -16,6 +16,9 @@ import { registerGenerateBrandAssets } from './tools/generate-brand-assets.js';
16
16
  import { registerGenerateDesignSystem } from './tools/generate-design-system.js';
17
17
  import { registerGenerateBrandVoice } from './tools/generate-brand-voice.js';
18
18
  import { registerGenerateBrandNaming } from './tools/generate-brand-naming.js';
19
+ import { registerGenerateBrandMotion } from './tools/generate-brand-motion.js';
20
+ import { registerGenerateBrandSocial } from './tools/generate-brand-social.js';
21
+ import { registerGenerateBrandPitch } from './tools/generate-brand-pitch.js';
19
22
  import { registerBrandTemplates } from './resources/brand-templates.js';
20
23
  import { registerBrandKnowledge } from './resources/brand-knowledge.js';
21
24
  async function main() {
@@ -31,7 +34,7 @@ async function main() {
31
34
  logger.info({ env: config.nodeEnv }, 'Starting branding-mcp server');
32
35
  const server = new McpServer({
33
36
  name: '@forgespace/branding-mcp',
34
- version: '0.9.0',
37
+ version: '0.12.0',
35
38
  });
36
39
  registerGenerateBrandIdentity(server);
37
40
  registerGenerateColorPalette(server);
@@ -44,6 +47,9 @@ async function main() {
44
47
  registerGenerateDesignSystem(server);
45
48
  registerGenerateBrandVoice(server);
46
49
  registerGenerateBrandNaming(server);
50
+ registerGenerateBrandMotion(server);
51
+ registerGenerateBrandSocial(server);
52
+ registerGenerateBrandPitch(server);
47
53
  registerBrandTemplates(server);
48
54
  registerBrandKnowledge(server);
49
55
  if (config.transport === 'http') {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAgCA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QACpC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC1C,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,SAAmB,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAEnC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { BrandIdentity, MotionSystem } from '../../types.js';
2
+ export interface MotionPrinciple {
3
+ name: string;
4
+ description: string;
5
+ cssExample: string;
6
+ }
7
+ export interface BrandMotionOutput {
8
+ motionSystem: MotionSystem;
9
+ principles: MotionPrinciple[];
10
+ animationScale: 'none' | 'minimal' | 'moderate' | 'expressive' | 'dramatic';
11
+ preferredEasing: string;
12
+ guidelines: {
13
+ microInteractions: string;
14
+ pageTransitions: string;
15
+ loadingStates: string;
16
+ feedback: string;
17
+ };
18
+ cssCustomProperties: string;
19
+ }
20
+ export declare function generateBrandMotion(brand: BrandIdentity): BrandMotionOutput;
21
+ //# sourceMappingURL=brand-motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-motion.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-motion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;IAC5E,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE;QACV,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AA6LD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CAkB3E"}
@@ -0,0 +1,202 @@
1
+ import { generateMotionSystem } from './motion-system.js';
2
+ const STYLE_ANIMATION_SCALE = {
3
+ minimal: 'minimal',
4
+ bold: 'expressive',
5
+ elegant: 'moderate',
6
+ playful: 'dramatic',
7
+ corporate: 'minimal',
8
+ tech: 'moderate',
9
+ organic: 'moderate',
10
+ retro: 'expressive',
11
+ };
12
+ const STYLE_PRINCIPLES = {
13
+ minimal: [
14
+ {
15
+ name: 'Invisible Motion',
16
+ description: 'Animations should never distract — only guide attention.',
17
+ cssExample: 'transition: opacity 200ms ease-out;',
18
+ },
19
+ {
20
+ name: 'Purposeful Timing',
21
+ description: 'Every animation has a clear reason; none are decorative.',
22
+ cssExample: 'transition: transform 200ms cubic-bezier(0,0,0.2,1);',
23
+ },
24
+ ],
25
+ bold: [
26
+ {
27
+ name: 'Confident Entry',
28
+ description: 'Elements arrive with authority — fast in, slow finish.',
29
+ cssExample: 'animation: slideIn 200ms cubic-bezier(0,0,0.15,1) both;',
30
+ },
31
+ {
32
+ name: 'Dramatic Emphasis',
33
+ description: 'Key moments get over-scaled spring motion to land impact.',
34
+ cssExample: 'animation: popIn 300ms cubic-bezier(0.22,1.8,0.36,1) both;',
35
+ },
36
+ ],
37
+ elegant: [
38
+ {
39
+ name: 'Graceful Pace',
40
+ description: 'Motion breathes — longer durations create a sense of luxury.',
41
+ cssExample: 'transition: all 350ms cubic-bezier(0.42,0,0.58,1);',
42
+ },
43
+ {
44
+ name: 'Soft Landing',
45
+ description: 'Elements decelerate gently; never abrupt or mechanical.',
46
+ cssExample: 'animation: fadeSlide 500ms cubic-bezier(0,0,0.58,1) both;',
47
+ },
48
+ ],
49
+ playful: [
50
+ {
51
+ name: 'Bouncy Energy',
52
+ description: 'Spring and bounce easings give the UI a lively, joyful feel.',
53
+ cssExample: 'animation: bounce 400ms cubic-bezier(0.18,2.0,0.4,1) both;',
54
+ },
55
+ {
56
+ name: 'Surprise Delight',
57
+ description: 'Occasional unexpected motion rewards interaction.',
58
+ cssExample: 'animation: wiggle 600ms cubic-bezier(0.18,1.8,0.4,1);',
59
+ },
60
+ ],
61
+ corporate: [
62
+ {
63
+ name: 'Professional Precision',
64
+ description: 'Motion is measured and predictable — builds trust.',
65
+ cssExample: 'transition: all 200ms cubic-bezier(0.4,0,0.2,1);',
66
+ },
67
+ {
68
+ name: 'Consistent Rhythm',
69
+ description: 'All durations align to a fixed scale; no surprises.',
70
+ cssExample: 'transition: opacity 120ms ease-out;',
71
+ },
72
+ ],
73
+ tech: [
74
+ {
75
+ name: 'Instant Response',
76
+ description: 'UI reacts within 80ms — performance is the feature.',
77
+ cssExample: 'transition: transform 80ms cubic-bezier(0,0,0.1,1);',
78
+ },
79
+ {
80
+ name: 'Precise Curves',
81
+ description: 'Tight cubic-bezier values convey technical accuracy.',
82
+ cssExample: 'animation: slideUp 150ms cubic-bezier(0.55,0,0.1,1) both;',
83
+ },
84
+ ],
85
+ organic: [
86
+ {
87
+ name: 'Natural Flow',
88
+ description: 'Animations mimic nature — no sharp edges or abrupt stops.',
89
+ cssExample: 'transition: all 300ms cubic-bezier(0.35,0,0.3,1);',
90
+ },
91
+ {
92
+ name: 'Breathing Rhythm',
93
+ description: 'Subtle scale pulses and opacity shifts echo living systems.',
94
+ cssExample: 'animation: breathe 2s cubic-bezier(0.28,1.4,0.5,1) infinite;',
95
+ },
96
+ ],
97
+ retro: [
98
+ {
99
+ name: 'Deliberate Steps',
100
+ description: 'Step-function or quick snaps reference classic interfaces.',
101
+ cssExample: 'animation: typeIn 250ms steps(8) both;',
102
+ },
103
+ {
104
+ name: 'Nostalgic Spring',
105
+ description: 'Slightly exaggerated spring echoes analog mechanical feel.',
106
+ cssExample: 'animation: springIn 350ms cubic-bezier(0.3,1.5,0.5,1) both;',
107
+ },
108
+ ],
109
+ };
110
+ const STYLE_GUIDELINES = {
111
+ minimal: {
112
+ microInteractions: 'Subtle opacity or transform shifts only; 150–200ms.',
113
+ pageTransitions: 'Crossfade at 200ms; avoid sliding panels.',
114
+ loadingStates: 'Simple fade-in; no spinners unless critical.',
115
+ feedback: 'Color shift on state change, 100ms.',
116
+ },
117
+ bold: {
118
+ microInteractions: 'Scale up 1.05–1.1 on hover; spring easing.',
119
+ pageTransitions: 'Bold slide-in from bottom, 200ms.',
120
+ loadingStates: 'Animated progress bar with high-contrast color.',
121
+ feedback: 'Ripple or scale pulse on click, 300ms.',
122
+ },
123
+ elegant: {
124
+ microInteractions: 'Soft opacity + translateY(-4px), 350ms.',
125
+ pageTransitions: 'Fade-through at 400ms; never slide.',
126
+ loadingStates: 'Slow shimmer skeleton, linear 1.2s loop.',
127
+ feedback: 'Gentle border glow, 500ms ease-in-out.',
128
+ },
129
+ playful: {
130
+ microInteractions: 'Bounce scale 1.1→0.95→1.0; spring easing, 400ms.',
131
+ pageTransitions: 'Slide + scale combo, 300ms spring.',
132
+ loadingStates: 'Animated character or progress dots, bouncy timing.',
133
+ feedback: 'Confetti or shake on success/error.',
134
+ },
135
+ corporate: {
136
+ microInteractions: 'Opacity + translate 2px; 200ms linear.',
137
+ pageTransitions: 'Instant swap or crossfade 150ms.',
138
+ loadingStates: 'Indeterminate progress bar, standard timing.',
139
+ feedback: 'Icon swap + color change, 120ms.',
140
+ },
141
+ tech: {
142
+ microInteractions: 'Transform only; 80–150ms; cubic precision.',
143
+ pageTransitions: 'Instant route swap; skeleton on data load.',
144
+ loadingStates: 'Monochrome spinner, 600ms linear infinite.',
145
+ feedback: 'Blink cursor or code-style highlight, 80ms.',
146
+ },
147
+ organic: {
148
+ microInteractions: 'Gentle scale + opacity, 300ms, curved easing.',
149
+ pageTransitions: 'Soft fade-through, 350ms, linear-like.',
150
+ loadingStates: 'Wave or ripple animation, 1.5s loop.',
151
+ feedback: 'Color bloom outward, 400ms.',
152
+ },
153
+ retro: {
154
+ microInteractions: 'Step or snap animation, 150–250ms.',
155
+ pageTransitions: 'Wipe or flicker effect, 200ms.',
156
+ loadingStates: 'Blinking cursor or pixel-art spinner.',
157
+ feedback: 'Flash inversion or border blink, 100ms.',
158
+ },
159
+ };
160
+ function buildCssCustomProperties(motion) {
161
+ const lines = [':root {'];
162
+ for (const [name, value] of Object.entries(motion.durations)) {
163
+ lines.push(` --motion-duration-${name}: ${value};`);
164
+ }
165
+ for (const [name, value] of Object.entries(motion.easings)) {
166
+ lines.push(` --motion-easing-${name}: ${value};`);
167
+ }
168
+ for (const [name, value] of Object.entries(motion.transitions)) {
169
+ lines.push(` --motion-transition-${name}: ${value};`);
170
+ }
171
+ lines.push('}');
172
+ return lines.join('\n');
173
+ }
174
+ const VALID_STYLES = new Set([
175
+ 'minimal',
176
+ 'bold',
177
+ 'elegant',
178
+ 'playful',
179
+ 'corporate',
180
+ 'tech',
181
+ 'organic',
182
+ 'retro',
183
+ ]);
184
+ export function generateBrandMotion(brand) {
185
+ const rawStyle = brand.style ?? 'minimal';
186
+ const style = VALID_STYLES.has(rawStyle) ? rawStyle : 'minimal';
187
+ const motionSystem = generateMotionSystem(style);
188
+ const principles = STYLE_PRINCIPLES[style] ?? STYLE_PRINCIPLES.minimal;
189
+ const animationScale = STYLE_ANIMATION_SCALE[style] ?? 'minimal';
190
+ const guidelines = STYLE_GUIDELINES[style] ?? STYLE_GUIDELINES.minimal;
191
+ const preferredEasing = motionSystem.easings['ease-out'];
192
+ const cssCustomProperties = buildCssCustomProperties(motionSystem);
193
+ return {
194
+ motionSystem,
195
+ principles,
196
+ animationScale,
197
+ preferredEasing,
198
+ guidelines,
199
+ cssCustomProperties,
200
+ };
201
+ }
202
+ //# sourceMappingURL=brand-motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-motion.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-motion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { BrandIdentity } from '../../types.js';
2
+ export interface ElevatorPitch {
3
+ duration: '15s' | '30s' | '60s';
4
+ script: string;
5
+ wordCount: number;
6
+ }
7
+ export interface PitchDeckSlide {
8
+ title: string;
9
+ content: string[];
10
+ speakerNotes: string;
11
+ }
12
+ export interface InvestorHighlight {
13
+ category: string;
14
+ headline: string;
15
+ detail: string;
16
+ }
17
+ export interface BrandPitchOutput {
18
+ elevatorPitches: ElevatorPitch[];
19
+ pitchDeck: PitchDeckSlide[];
20
+ oneLinePitch: string;
21
+ problemStatement: string;
22
+ solutionStatement: string;
23
+ uniqueValueProposition: string;
24
+ targetAudienceProfile: string;
25
+ competitiveAdvantages: string[];
26
+ callToAction: string;
27
+ investorHighlights: InvestorHighlight[];
28
+ }
29
+ export declare function generateBrandPitch(brand: BrandIdentity): BrandPitchOutput;
30
+ //# sourceMappingURL=brand-pitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-pitch.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-pitch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAyND,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,CAgBzE"}
@@ -0,0 +1,208 @@
1
+ const STYLE_TONE = {
2
+ minimal: 'clear, precise, and focused',
3
+ bold: 'confident, energetic, and direct',
4
+ elegant: 'refined, sophisticated, and assured',
5
+ playful: 'engaging, enthusiastic, and memorable',
6
+ corporate: 'professional, credible, and structured',
7
+ tech: 'innovative, data-driven, and forward-thinking',
8
+ organic: 'authentic, purposeful, and human',
9
+ retro: 'classic, dependable, and character-rich',
10
+ };
11
+ const STYLE_CTA = {
12
+ minimal: "Let's connect.",
13
+ bold: 'Join us. Be part of something bigger.',
14
+ elegant: 'We invite you to experience the difference.',
15
+ playful: "Ready to get started? Let's do this!",
16
+ corporate: 'Partner with us to drive measurable results.',
17
+ tech: 'Request a demo and see the data for yourself.',
18
+ organic: "Grow with us. Let's build something meaningful.",
19
+ retro: "Work with a brand you can trust. Let's talk.",
20
+ };
21
+ const INDUSTRY_PROBLEM = {
22
+ tech: 'Businesses are overwhelmed by complexity and lack the tools to move fast without breaking things.',
23
+ finance: 'Individuals and organizations struggle to navigate financial systems that were not built for them.',
24
+ health: 'People face barriers to consistent, personalized care that fits their real lives.',
25
+ education: 'Learners are underserved by one-size-fits-all approaches that ignore individual needs.',
26
+ food: 'Consumers want quality, transparency, and convenience — but rarely find all three together.',
27
+ retail: 'Shoppers are fatigued by choice overload and brands that fail to deliver on their promises.',
28
+ creative: 'Creative professionals are constrained by tools and systems that limit rather than unlock expression.',
29
+ travel: 'Travelers spend more time planning than experiencing — and still end up with generic outcomes.',
30
+ real_estate: "Buyers and sellers navigate one of life's biggest decisions without adequate guidance.",
31
+ };
32
+ function extractIndustryKey(industry) {
33
+ const lower = industry.toLowerCase();
34
+ if (lower.includes('tech') || lower.includes('software') || lower.includes('saas'))
35
+ return 'tech';
36
+ if (lower.includes('finance') || lower.includes('fintech') || lower.includes('bank'))
37
+ return 'finance';
38
+ if (lower.includes('health') || lower.includes('medical') || lower.includes('wellness'))
39
+ return 'health';
40
+ if (lower.includes('education') || lower.includes('edtech') || lower.includes('learning'))
41
+ return 'education';
42
+ if (lower.includes('food') || lower.includes('restaurant') || lower.includes('beverage'))
43
+ return 'food';
44
+ if (lower.includes('retail') || lower.includes('ecommerce') || lower.includes('shop'))
45
+ return 'retail';
46
+ if (lower.includes('creative') || lower.includes('design') || lower.includes('agency'))
47
+ return 'creative';
48
+ if (lower.includes('travel') || lower.includes('hospitality') || lower.includes('tourism'))
49
+ return 'travel';
50
+ if (lower.includes('real estate') || lower.includes('property') || lower.includes('housing'))
51
+ return 'real_estate';
52
+ return 'tech';
53
+ }
54
+ function buildProblemStatement(brand) {
55
+ const key = extractIndustryKey(brand.industry);
56
+ return INDUSTRY_PROBLEM[key] ?? INDUSTRY_PROBLEM['tech'];
57
+ }
58
+ function buildSolutionStatement(brand) {
59
+ const name = brand.name;
60
+ const tagline = brand.tagline ?? "redefining what's possible";
61
+ return `${name} is ${tagline.toLowerCase().startsWith('the') ? '' : 'the solution that '}${tagline.toLowerCase()}. We deliver a differentiated approach that solves this problem at its core, enabling our customers to achieve outcomes they previously thought out of reach.`;
62
+ }
63
+ function buildUVP(brand) {
64
+ const tone = STYLE_TONE[brand.style] ?? STYLE_TONE.minimal;
65
+ return `${brand.name} is the only ${brand.industry} brand that combines ${tone} communication with a product experience that genuinely puts customers first. Our approach drives measurable outcomes while building lasting trust.`;
66
+ }
67
+ function buildAudienceProfile(brand) {
68
+ const lower = brand.industry.toLowerCase();
69
+ if (lower.includes('enterprise') || lower.includes('b2b')) {
70
+ return 'Decision-makers at mid-market and enterprise organizations seeking reliable, scalable solutions that deliver proven ROI.';
71
+ }
72
+ if (lower.includes('consumer') || lower.includes('b2c') || lower.includes('retail')) {
73
+ return 'Discerning consumers aged 25–45 who value quality, authenticity, and brands that reflect their values.';
74
+ }
75
+ return `Professionals and organizations within the ${brand.industry} space who demand excellence and are ready to invest in a better solution.`;
76
+ }
77
+ function buildCompetitiveAdvantages(brand) {
78
+ const style = brand.style;
79
+ const base = [
80
+ `Distinctive ${style} brand identity that is immediately recognizable and consistently applied`,
81
+ 'Customer-centric design philosophy embedded in every touchpoint',
82
+ 'Agile execution model that delivers faster time-to-value than established incumbents',
83
+ ];
84
+ const styleExtra = {
85
+ minimal: 'Radical simplicity that eliminates friction and drives adoption',
86
+ bold: 'Category-defining boldness that commands attention and drives word-of-mouth',
87
+ elegant: 'Premium positioning that attracts high-value customers willing to pay for quality',
88
+ playful: 'Emotional resonance that builds community and drives organic growth',
89
+ corporate: 'Enterprise-grade trust signals that accelerate procurement decisions',
90
+ tech: 'Technical depth and innovation pipeline that sustains competitive moat',
91
+ organic: 'Authentic brand story that converts customers into advocates',
92
+ retro: 'Heritage credibility and timeless quality that builds generational loyalty',
93
+ };
94
+ return [...base, styleExtra[style] ?? styleExtra.minimal];
95
+ }
96
+ function buildElevatorPitches(brand) {
97
+ const name = brand.name;
98
+ const industry = brand.industry;
99
+ const tagline = brand.tagline ?? 'delivering excellence';
100
+ const problem = buildProblemStatement(brand);
101
+ const cta = STYLE_CTA[brand.style] ?? STYLE_CTA.minimal;
102
+ const script15 = `${name} — ${tagline}. We're solving ${industry}'s biggest challenge so you can focus on what matters. ${cta}`;
103
+ const script30 = `In ${industry}, ${problem.split('.')[0].toLowerCase()}. ${name} changes that. ${tagline}. Our customers see results within days, not months. ${cta}`;
104
+ const script60 = `Here's what's broken in ${industry}: ${problem} That's why we built ${name}. ${tagline}. Our approach is ${STYLE_TONE[brand.style] ?? 'clear and focused'} — we cut through the noise and deliver outcomes that matter. Early customers are already seeing transformative results. ${cta} I'd love to show you what that looks like.`;
105
+ return [
106
+ { duration: '15s', script: script15, wordCount: script15.split(' ').length },
107
+ { duration: '30s', script: script30, wordCount: script30.split(' ').length },
108
+ { duration: '60s', script: script60, wordCount: script60.split(' ').length },
109
+ ];
110
+ }
111
+ function buildPitchDeck(brand) {
112
+ const name = brand.name;
113
+ const problem = buildProblemStatement(brand);
114
+ const solution = buildSolutionStatement(brand);
115
+ const uvp = buildUVP(brand);
116
+ const audience = buildAudienceProfile(brand);
117
+ const advantages = buildCompetitiveAdvantages(brand);
118
+ return [
119
+ {
120
+ title: 'The Problem',
121
+ content: [
122
+ problem,
123
+ 'This problem costs businesses and consumers time, money, and trust — every single day.',
124
+ ],
125
+ speakerNotes: 'Open with empathy. Make the audience feel the pain before presenting the solution.',
126
+ },
127
+ {
128
+ title: `Introducing ${name}`,
129
+ content: [brand.tagline ?? solution, uvp],
130
+ speakerNotes: 'Deliver your one-liner with confidence. Pause after the tagline to let it land.',
131
+ },
132
+ {
133
+ title: 'Our Solution',
134
+ content: [solution, 'Purpose-built for the people who feel this problem most acutely.'],
135
+ speakerNotes: "Show, don't just tell. Use a visual demo or screenshot if available.",
136
+ },
137
+ {
138
+ title: 'Target Audience',
139
+ content: [
140
+ audience,
141
+ `We serve the segment of the ${brand.industry} market that has been underserved by legacy solutions.`,
142
+ ],
143
+ speakerNotes: 'Be specific. Investors and partners want to know you understand your customer deeply.',
144
+ },
145
+ {
146
+ title: 'Why We Win',
147
+ content: advantages,
148
+ speakerNotes: 'Focus on 2-3 advantages max. Depth beats breadth here.',
149
+ },
150
+ {
151
+ title: 'Our Brand Promise',
152
+ content: [
153
+ `${name} commits to: ${advantages[0].toLowerCase()}`,
154
+ 'Every decision we make flows from this promise — product, marketing, culture.',
155
+ ],
156
+ speakerNotes: 'This is your emotional anchor. Speak from conviction.',
157
+ },
158
+ {
159
+ title: 'The Ask',
160
+ content: [
161
+ STYLE_CTA[brand.style] ?? STYLE_CTA.minimal,
162
+ "We're looking for partners who believe what we believe and want to build the future of this industry together.",
163
+ ],
164
+ speakerNotes: 'End with clarity. State exactly what you want from this audience.',
165
+ },
166
+ ];
167
+ }
168
+ function buildInvestorHighlights(brand) {
169
+ return [
170
+ {
171
+ category: 'Market Opportunity',
172
+ headline: `${brand.industry} is a large and growing market`,
173
+ detail: `The ${brand.industry} industry is undergoing rapid transformation. ${brand.name} is positioned at the inflection point.`,
174
+ },
175
+ {
176
+ category: 'Differentiation',
177
+ headline: 'Defensible brand and product moat',
178
+ detail: buildCompetitiveAdvantages(brand)[3] ?? buildCompetitiveAdvantages(brand)[0],
179
+ },
180
+ {
181
+ category: 'Team & Vision',
182
+ headline: 'Built to last, designed to scale',
183
+ detail: `${brand.name} was founded with a clear mission and the operational discipline to execute against it.`,
184
+ },
185
+ {
186
+ category: 'Traction',
187
+ headline: 'Early signals validate the thesis',
188
+ detail: 'Customer feedback, retention metrics, and net promoter scores confirm product-market fit in target segments.',
189
+ },
190
+ ];
191
+ }
192
+ export function generateBrandPitch(brand) {
193
+ const name = brand.name;
194
+ const tagline = brand.tagline ?? 'delivering excellence';
195
+ return {
196
+ elevatorPitches: buildElevatorPitches(brand),
197
+ pitchDeck: buildPitchDeck(brand),
198
+ oneLinePitch: `${name}: ${tagline}.`,
199
+ problemStatement: buildProblemStatement(brand),
200
+ solutionStatement: buildSolutionStatement(brand),
201
+ uniqueValueProposition: buildUVP(brand),
202
+ targetAudienceProfile: buildAudienceProfile(brand),
203
+ competitiveAdvantages: buildCompetitiveAdvantages(brand),
204
+ callToAction: STYLE_CTA[brand.style] ?? STYLE_CTA.minimal,
205
+ investorHighlights: buildInvestorHighlights(brand),
206
+ };
207
+ }
208
+ //# sourceMappingURL=brand-pitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-pitch.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-pitch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BrandIdentity } from '../../types.js';
2
+ import type { BrandSocialOutput } from '../../types.js';
3
+ export declare function generateBrandSocial(brand: BrandIdentity): BrandSocialOutput;
4
+ //# sourceMappingURL=brand-social.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-social.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-social.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAuC,MAAM,gBAAgB,CAAC;AA+e7F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CA0B3E"}