@forgespace/branding-mcp 0.7.1 → 0.9.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 +23 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/branding-core/ai/claude-interpreter.d.ts.map +1 -1
- package/dist/lib/branding-core/ai/claude-interpreter.js +8 -19
- package/dist/lib/branding-core/ai/claude-interpreter.js.map +1 -1
- package/dist/lib/branding-core/exporters/style-dictionary.d.ts +19 -0
- package/dist/lib/branding-core/exporters/style-dictionary.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/style-dictionary.js +85 -0
- package/dist/lib/branding-core/exporters/style-dictionary.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-naming.d.ts +20 -0
- package/dist/lib/branding-core/generators/brand-naming.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-naming.js +164 -0
- package/dist/lib/branding-core/generators/brand-naming.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-voice.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-voice.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-voice.js +338 -0
- package/dist/lib/branding-core/generators/brand-voice.js.map +1 -0
- package/dist/lib/branding-core/index.d.ts +3 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -1
- package/dist/lib/branding-core/index.js +3 -0
- package/dist/lib/branding-core/index.js.map +1 -1
- package/dist/lib/branding-core/validators/token-schema.d.ts +1 -1
- package/dist/lib/branding-core/validators/token-schema.d.ts.map +1 -1
- package/dist/lib/branding-core/validators/token-schema.js +9 -1
- package/dist/lib/branding-core/validators/token-schema.js.map +1 -1
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/http-server.d.ts +3 -0
- package/dist/lib/http-server.d.ts.map +1 -0
- package/dist/lib/http-server.js +98 -0
- package/dist/lib/http-server.js.map +1 -0
- package/dist/lib/types.d.ts +44 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tools/export-design-tokens.d.ts.map +1 -1
- package/dist/tools/export-design-tokens.js +2 -1
- package/dist/tools/export-design-tokens.js.map +1 -1
- package/dist/tools/generate-brand-naming.d.ts +3 -0
- package/dist/tools/generate-brand-naming.d.ts.map +1 -0
- package/dist/tools/generate-brand-naming.js +25 -0
- package/dist/tools/generate-brand-naming.js.map +1 -0
- package/dist/tools/generate-brand-voice.d.ts +3 -0
- package/dist/tools/generate-brand-voice.d.ts.map +1 -0
- package/dist/tools/generate-brand-voice.js +51 -0
- package/dist/tools/generate-brand-voice.js.map +1 -0
- package/dist/tools/generate-design-system.d.ts.map +1 -1
- package/dist/tools/generate-design-system.js +2 -1
- package/dist/tools/generate-design-system.js.map +1 -1
- package/package.json +2 -1
- package/server.json +14 -2
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, } 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, } from './lib/types.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { parseArgs } from 'node:util';
|
|
2
3
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
4
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
5
|
import { loadConfig } from './lib/config.js';
|
|
5
6
|
import { logger } from './lib/logger.js';
|
|
7
|
+
import { startHttpServer } from './lib/http-server.js';
|
|
6
8
|
import { registerGenerateBrandIdentity } from './tools/generate-brand-identity.js';
|
|
7
9
|
import { registerGenerateColorPalette } from './tools/generate-color-palette.js';
|
|
8
10
|
import { registerGenerateTypographySystem } from './tools/generate-typography-system.js';
|
|
@@ -12,14 +14,24 @@ import { registerValidateBrandConsistency } from './tools/validate-brand-consist
|
|
|
12
14
|
import { registerRefineBrandElement } from './tools/refine-brand-element.js';
|
|
13
15
|
import { registerGenerateBrandAssets } from './tools/generate-brand-assets.js';
|
|
14
16
|
import { registerGenerateDesignSystem } from './tools/generate-design-system.js';
|
|
17
|
+
import { registerGenerateBrandVoice } from './tools/generate-brand-voice.js';
|
|
18
|
+
import { registerGenerateBrandNaming } from './tools/generate-brand-naming.js';
|
|
15
19
|
import { registerBrandTemplates } from './resources/brand-templates.js';
|
|
16
20
|
import { registerBrandKnowledge } from './resources/brand-knowledge.js';
|
|
17
21
|
async function main() {
|
|
22
|
+
const { values: cliArgs } = parseArgs({
|
|
23
|
+
args: process.argv.slice(2),
|
|
24
|
+
options: { transport: { type: 'string' } },
|
|
25
|
+
strict: false,
|
|
26
|
+
});
|
|
27
|
+
if (cliArgs.transport) {
|
|
28
|
+
process.env.MCP_TRANSPORT = cliArgs.transport;
|
|
29
|
+
}
|
|
18
30
|
const config = loadConfig();
|
|
19
31
|
logger.info({ env: config.nodeEnv }, 'Starting branding-mcp server');
|
|
20
32
|
const server = new McpServer({
|
|
21
33
|
name: '@forgespace/branding-mcp',
|
|
22
|
-
version: '0.
|
|
34
|
+
version: '0.9.0',
|
|
23
35
|
});
|
|
24
36
|
registerGenerateBrandIdentity(server);
|
|
25
37
|
registerGenerateColorPalette(server);
|
|
@@ -30,11 +42,18 @@ async function main() {
|
|
|
30
42
|
registerRefineBrandElement(server);
|
|
31
43
|
registerGenerateBrandAssets(server);
|
|
32
44
|
registerGenerateDesignSystem(server);
|
|
45
|
+
registerGenerateBrandVoice(server);
|
|
46
|
+
registerGenerateBrandNaming(server);
|
|
33
47
|
registerBrandTemplates(server);
|
|
34
48
|
registerBrandKnowledge(server);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
if (config.transport === 'http') {
|
|
50
|
+
await startHttpServer(server, config.port);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const transport = new StdioServerTransport();
|
|
54
|
+
await server.connect(transport);
|
|
55
|
+
logger.info('Branding MCP server connected via stdio');
|
|
56
|
+
}
|
|
38
57
|
}
|
|
39
58
|
main().catch((error) => {
|
|
40
59
|
logger.fatal(error, 'Failed to start branding-mcp server');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-interpreter.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/ai/claude-interpreter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-interpreter.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/ai/claude-interpreter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAuBlE,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,EAC5C,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAYtB"}
|
|
@@ -1,26 +1,15 @@
|
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
1
2
|
import { buildRefinementPrompt, buildGenerationPrompt } from './prompts.js';
|
|
2
3
|
import { logger } from '../../logger.js';
|
|
3
4
|
async function callClaude(prompt, options) {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
'anthropic-version': '2023-06-01',
|
|
10
|
-
},
|
|
11
|
-
body: JSON.stringify({
|
|
12
|
-
model: options.model,
|
|
13
|
-
max_tokens: options.maxTokens,
|
|
14
|
-
messages: [{ role: 'user', content: prompt }],
|
|
15
|
-
}),
|
|
5
|
+
const client = new Anthropic({ apiKey: options.anthropicApiKey });
|
|
6
|
+
const message = await client.messages.create({
|
|
7
|
+
model: options.model,
|
|
8
|
+
max_tokens: options.maxTokens,
|
|
9
|
+
messages: [{ role: 'user', content: prompt }],
|
|
16
10
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
throw new Error(`Anthropic API error ${response.status}: ${body}`);
|
|
20
|
-
}
|
|
21
|
-
const data = (await response.json());
|
|
22
|
-
const textBlock = data.content.find((b) => b.type === 'text');
|
|
23
|
-
if (!textBlock)
|
|
11
|
+
const textBlock = message.content.find((b) => b.type === 'text');
|
|
12
|
+
if (!textBlock || textBlock.type !== 'text')
|
|
24
13
|
throw new Error('No text content in Anthropic response');
|
|
25
14
|
return textBlock.text;
|
|
26
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-interpreter.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/ai/claude-interpreter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-interpreter.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/ai/claude-interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,OAAqC;IAC7E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC9C,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACjE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM;QACzC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,OAAO,SAAS,CAAC,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAgB,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,OAA4C,EAC5C,YAA2B,EAC3B,OAA2B;IAE3B,MAAM,IAAI,GAAiC;QACzC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,0BAA0B;QAClD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;KACpC,CAAC;IAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,mCAAmC,CAAC,CAAC;IAEjF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,SAAiB,EACjB,QAAgB,EAChB,WAAmB,EACnB,OAA2B;IAE3B,MAAM,IAAI,GAAiC;QACzC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,0BAA0B;QAClD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;KACpC,CAAC;IAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,0CAA0C,CAAC,CAAC;IAE1F,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BrandIdentity } from '../../types.js';
|
|
2
|
+
interface StyleDictionaryValue {
|
|
3
|
+
value: string | number;
|
|
4
|
+
type?: string;
|
|
5
|
+
comment?: string;
|
|
6
|
+
}
|
|
7
|
+
type StyleDictionaryGroup = Record<string, StyleDictionaryValue | Record<string, StyleDictionaryValue>>;
|
|
8
|
+
interface StyleDictionaryOutput {
|
|
9
|
+
color: Record<string, StyleDictionaryGroup | StyleDictionaryValue>;
|
|
10
|
+
typography: Record<string, StyleDictionaryGroup | StyleDictionaryValue>;
|
|
11
|
+
spacing: Record<string, StyleDictionaryValue>;
|
|
12
|
+
shadow?: Record<string, StyleDictionaryValue>;
|
|
13
|
+
border?: Record<string, StyleDictionaryValue>;
|
|
14
|
+
motion?: Record<string, StyleDictionaryValue>;
|
|
15
|
+
gradient?: Record<string, StyleDictionaryValue>;
|
|
16
|
+
}
|
|
17
|
+
export declare function exportStyleDictionary(brand: BrandIdentity): StyleDictionaryOutput;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=style-dictionary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-dictionary.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/exporters/style-dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,oBAAoB,GAAG,MAAM,CAChC,MAAM,EACN,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAC5D,CAAC;AAEF,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;IACxE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CACjD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,qBAAqB,CA8FjF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export function exportStyleDictionary(brand) {
|
|
2
|
+
const { colors, typography, spacing } = brand;
|
|
3
|
+
const color = {
|
|
4
|
+
primary: { value: colors.primary.hex, type: 'color', comment: colors.primary.usage },
|
|
5
|
+
secondary: { value: colors.secondary.hex, type: 'color', comment: colors.secondary.usage },
|
|
6
|
+
accent: { value: colors.accent.hex, type: 'color', comment: colors.accent.usage },
|
|
7
|
+
semantic: {
|
|
8
|
+
success: {
|
|
9
|
+
value: colors.semantic.success.hex,
|
|
10
|
+
type: 'color',
|
|
11
|
+
comment: colors.semantic.success.usage,
|
|
12
|
+
},
|
|
13
|
+
warning: {
|
|
14
|
+
value: colors.semantic.warning.hex,
|
|
15
|
+
type: 'color',
|
|
16
|
+
comment: colors.semantic.warning.usage,
|
|
17
|
+
},
|
|
18
|
+
error: {
|
|
19
|
+
value: colors.semantic.error.hex,
|
|
20
|
+
type: 'color',
|
|
21
|
+
comment: colors.semantic.error.usage,
|
|
22
|
+
},
|
|
23
|
+
info: { value: colors.semantic.info.hex, type: 'color', comment: colors.semantic.info.usage },
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
for (const neutral of colors.neutral) {
|
|
27
|
+
color[neutral.name] = { value: neutral.hex, type: 'color', comment: neutral.usage };
|
|
28
|
+
}
|
|
29
|
+
const typo = {
|
|
30
|
+
fontFamily: {
|
|
31
|
+
heading: { value: typography.headingFont, type: 'fontFamily' },
|
|
32
|
+
body: { value: typography.bodyFont, type: 'fontFamily' },
|
|
33
|
+
mono: { value: typography.monoFont, type: 'fontFamily' },
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
for (const step of typography.steps) {
|
|
37
|
+
typo[step.name] = {
|
|
38
|
+
fontSize: { value: step.size, type: 'dimension' },
|
|
39
|
+
lineHeight: { value: step.lineHeight, type: 'number' },
|
|
40
|
+
letterSpacing: { value: step.letterSpacing, type: 'dimension' },
|
|
41
|
+
fontWeight: { value: step.weight, type: 'fontWeight' },
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const spacingTokens = {};
|
|
45
|
+
for (const [key, value] of Object.entries(spacing.values)) {
|
|
46
|
+
spacingTokens[key] = { value, type: 'dimension' };
|
|
47
|
+
}
|
|
48
|
+
const result = {
|
|
49
|
+
color,
|
|
50
|
+
typography: typo,
|
|
51
|
+
spacing: spacingTokens,
|
|
52
|
+
};
|
|
53
|
+
if (brand.shadows) {
|
|
54
|
+
result.shadow = {};
|
|
55
|
+
for (const [name, level] of Object.entries(brand.shadows.levels)) {
|
|
56
|
+
result.shadow[name] = { value: level.cssValue, type: 'shadow' };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (brand.borders) {
|
|
60
|
+
result.border = {};
|
|
61
|
+
for (const [name, value] of Object.entries(brand.borders.radii)) {
|
|
62
|
+
result.border[`radius-${name}`] = { value, type: 'borderRadius' };
|
|
63
|
+
}
|
|
64
|
+
for (const [name, value] of Object.entries(brand.borders.widths)) {
|
|
65
|
+
result.border[`width-${name}`] = { value, type: 'borderWidth' };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (brand.motion) {
|
|
69
|
+
result.motion = {};
|
|
70
|
+
for (const [name, value] of Object.entries(brand.motion.durations)) {
|
|
71
|
+
result.motion[`duration-${name}`] = { value, type: 'duration' };
|
|
72
|
+
}
|
|
73
|
+
for (const [name, value] of Object.entries(brand.motion.easings)) {
|
|
74
|
+
result.motion[`easing-${name}`] = { value, type: 'cubicBezier' };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (brand.gradients) {
|
|
78
|
+
result.gradient = {};
|
|
79
|
+
for (const [name, gradient] of Object.entries(brand.gradients.presets)) {
|
|
80
|
+
result.gradient[name] = { value: gradient.cssValue, type: 'gradient' };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=style-dictionary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-dictionary.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/exporters/style-dictionary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { BrandIdentity } from '../../types.js';
|
|
2
|
+
export interface BrandNamingOutput {
|
|
3
|
+
nameIdeas: NameIdea[];
|
|
4
|
+
taglineVariations: string[];
|
|
5
|
+
domainSuggestions: DomainSuggestion[];
|
|
6
|
+
hashtags: string[];
|
|
7
|
+
namingRationale: string;
|
|
8
|
+
}
|
|
9
|
+
export interface NameIdea {
|
|
10
|
+
name: string;
|
|
11
|
+
type: 'descriptive' | 'evocative' | 'abstract' | 'acronym' | 'portmanteau';
|
|
12
|
+
rationale: string;
|
|
13
|
+
}
|
|
14
|
+
export interface DomainSuggestion {
|
|
15
|
+
format: string;
|
|
16
|
+
example: string;
|
|
17
|
+
notes: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function generateBrandNaming(brand: BrandIdentity): BrandNamingOutput;
|
|
20
|
+
//# sourceMappingURL=brand-naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-naming.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-naming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAuKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CAW3E"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
const STYLE_NAME_PATTERNS = {
|
|
2
|
+
minimal: {
|
|
3
|
+
prefixes: ['One', 'Pure', 'Clear', 'Simple', 'Clean'],
|
|
4
|
+
suffixes: ['io', 'ly', 'al', 'est', ''],
|
|
5
|
+
modifiers: ['simple', 'clean', 'pure', 'focused'],
|
|
6
|
+
},
|
|
7
|
+
bold: {
|
|
8
|
+
prefixes: ['Peak', 'Apex', 'Ultra', 'Max', 'Prime'],
|
|
9
|
+
suffixes: ['ify', 'surge', 'force', 'edge', 'X'],
|
|
10
|
+
modifiers: ['bold', 'strong', 'powerful', 'intense'],
|
|
11
|
+
},
|
|
12
|
+
elegant: {
|
|
13
|
+
prefixes: ['Lux', 'Vela', 'Aura', 'Noir', 'Belle'],
|
|
14
|
+
suffixes: ['ux', 'ique', 'elle', 'ara', 'oir'],
|
|
15
|
+
modifiers: ['refined', 'elegant', 'sophisticated', 'premium'],
|
|
16
|
+
},
|
|
17
|
+
playful: {
|
|
18
|
+
prefixes: ['Zap', 'Hop', 'Fizz', 'Pop', 'Zip'],
|
|
19
|
+
suffixes: ['ify', 'ster', 'o', 'oo', 'ish'],
|
|
20
|
+
modifiers: ['fun', 'bright', 'bouncy', 'whimsical'],
|
|
21
|
+
},
|
|
22
|
+
corporate: {
|
|
23
|
+
prefixes: ['Global', 'Core', 'Capital', 'Prime', 'Nexus'],
|
|
24
|
+
suffixes: ['Corp', 'Group', 'Solutions', 'Partners', 'Associates'],
|
|
25
|
+
modifiers: ['trusted', 'established', 'professional', 'reliable'],
|
|
26
|
+
},
|
|
27
|
+
tech: {
|
|
28
|
+
prefixes: ['Syn', 'Hex', 'Algo', 'Dev', 'Bit'],
|
|
29
|
+
suffixes: ['.ai', 'Stack', 'Labs', 'Hub', 'OS'],
|
|
30
|
+
modifiers: ['smart', 'automated', 'intelligent', 'connected'],
|
|
31
|
+
},
|
|
32
|
+
organic: {
|
|
33
|
+
prefixes: ['Root', 'Bloom', 'Grove', 'Terra', 'Sage'],
|
|
34
|
+
suffixes: ['Craft', 'Grown', 'Wild', 'Earth', 'Seed'],
|
|
35
|
+
modifiers: ['natural', 'sustainable', 'organic', 'earthy'],
|
|
36
|
+
},
|
|
37
|
+
retro: {
|
|
38
|
+
prefixes: ['Ace', 'Rad', 'Neon', 'Volt', 'Dash'],
|
|
39
|
+
suffixes: ['Works', 'Co', 'Studio', 'Shop', 'House'],
|
|
40
|
+
modifiers: ['classic', 'vintage', 'retro', 'timeless'],
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
const INDUSTRY_KEYWORDS = {
|
|
44
|
+
tech: ['data', 'cloud', 'digital', 'smart', 'auto', 'net', 'code'],
|
|
45
|
+
finance: ['capital', 'wealth', 'trust', 'asset', 'fund', 'invest'],
|
|
46
|
+
health: ['care', 'life', 'vital', 'well', 'health', 'pulse'],
|
|
47
|
+
education: ['learn', 'skill', 'grow', 'mentor', 'knowledge', 'academy'],
|
|
48
|
+
food: ['bite', 'taste', 'farm', 'harvest', 'fresh', 'plate'],
|
|
49
|
+
retail: ['shop', 'market', 'store', 'find', 'pick', 'cart'],
|
|
50
|
+
creative: ['studio', 'craft', 'make', 'design', 'art', 'create'],
|
|
51
|
+
travel: ['go', 'roam', 'path', 'journey', 'venture', 'wander'],
|
|
52
|
+
real_estate: ['place', 'home', 'space', 'build', 'dwell', 'abode'],
|
|
53
|
+
};
|
|
54
|
+
function extractIndustryKey(industry) {
|
|
55
|
+
const lower = industry.toLowerCase();
|
|
56
|
+
for (const key of Object.keys(INDUSTRY_KEYWORDS)) {
|
|
57
|
+
if (lower.includes(key))
|
|
58
|
+
return key;
|
|
59
|
+
}
|
|
60
|
+
return 'tech';
|
|
61
|
+
}
|
|
62
|
+
function buildNameIdeas(industry, style) {
|
|
63
|
+
const patterns = STYLE_NAME_PATTERNS[style] ?? STYLE_NAME_PATTERNS.minimal;
|
|
64
|
+
const industryKey = extractIndustryKey(industry);
|
|
65
|
+
const industryWords = INDUSTRY_KEYWORDS[industryKey] ?? INDUSTRY_KEYWORDS.tech;
|
|
66
|
+
return [
|
|
67
|
+
{
|
|
68
|
+
name: `${patterns.prefixes[0]}${industryWords[0].charAt(0).toUpperCase() + industryWords[0].slice(1)}`,
|
|
69
|
+
type: 'portmanteau',
|
|
70
|
+
rationale: `Blends a ${style} style prefix with an industry-specific root for instant recognition.`,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: `${industryWords[1].charAt(0).toUpperCase() + industryWords[1].slice(1)}${patterns.suffixes[0]}`,
|
|
74
|
+
type: 'descriptive',
|
|
75
|
+
rationale: `Anchors the name in the ${industry} domain with a ${style}-style ending.`,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: `${patterns.prefixes[2]}${patterns.suffixes[2]}`,
|
|
79
|
+
type: 'abstract',
|
|
80
|
+
rationale: `A brandable, vowel-rich name that feels ${patterns.modifiers[0]} and memorable.`,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: `${industryWords[0].charAt(0).toUpperCase() + industryWords[0].slice(1)} ${patterns.suffixes[3] || 'Co'}`,
|
|
84
|
+
type: 'evocative',
|
|
85
|
+
rationale: `Evokes the ${industry} space with a ${patterns.modifiers[1]} modifier that differentiates.`,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: patterns.prefixes[4] ?? patterns.prefixes[0],
|
|
89
|
+
type: 'abstract',
|
|
90
|
+
rationale: `Short, punchy, easy to spell — ideal for a ${style} brand targeting digital channels.`,
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
function buildTaglineVariations(brand) {
|
|
95
|
+
const { industry, style } = brand;
|
|
96
|
+
const patterns = STYLE_NAME_PATTERNS[style] ?? STYLE_NAME_PATTERNS.minimal;
|
|
97
|
+
const mod = patterns.modifiers;
|
|
98
|
+
return [
|
|
99
|
+
`${mod[0].charAt(0).toUpperCase() + mod[0].slice(1)} ${industry}. Redefined.`,
|
|
100
|
+
`Where ${industry} meets ${mod[1]} design.`,
|
|
101
|
+
`The ${mod[2]} way to ${industry}.`,
|
|
102
|
+
`Built for the ${mod[3]} era.`,
|
|
103
|
+
`${industry.charAt(0).toUpperCase() + industry.slice(1)}, made ${mod[0]}.`,
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
function buildDomainSuggestions(brand) {
|
|
107
|
+
const { industry, style } = brand;
|
|
108
|
+
const industryKey = extractIndustryKey(industry);
|
|
109
|
+
return [
|
|
110
|
+
{
|
|
111
|
+
format: '[brandname].com',
|
|
112
|
+
example: `get${industryKey}.com`,
|
|
113
|
+
notes: 'Primary .com remains the most trusted TLD for any audience.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
format: '[brandname].io',
|
|
117
|
+
example: `${industryKey}hub.io`,
|
|
118
|
+
notes: 'Strong for tech and SaaS brands; developer-community positive.',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
format: 'get[brandname].com',
|
|
122
|
+
example: `get${industryKey}now.com`,
|
|
123
|
+
notes: 'Action-oriented prefix when exact .com is taken.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
format: '[brandname].co',
|
|
127
|
+
example: `${style}${industryKey}.co`,
|
|
128
|
+
notes: 'Modern startup feel; shorter than .com alternatives.',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
format: 'try[brandname].com',
|
|
132
|
+
example: `try${industryKey}.com`,
|
|
133
|
+
notes: 'Conversion-friendly for product-led growth.',
|
|
134
|
+
},
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
function buildHashtags(brand) {
|
|
138
|
+
const { industry, style } = brand;
|
|
139
|
+
const industryKey = extractIndustryKey(industry);
|
|
140
|
+
const patterns = STYLE_NAME_PATTERNS[style] ?? STYLE_NAME_PATTERNS.minimal;
|
|
141
|
+
const mod = patterns.modifiers;
|
|
142
|
+
return [
|
|
143
|
+
`#${industryKey}design`,
|
|
144
|
+
`#${mod[0]}${industryKey}`,
|
|
145
|
+
`#${style}brand`,
|
|
146
|
+
`#${industryKey}innovation`,
|
|
147
|
+
`#${mod[2]}${industryKey.charAt(0).toUpperCase() + industryKey.slice(1)}`,
|
|
148
|
+
`#modernbranding`,
|
|
149
|
+
`#${industryKey}community`,
|
|
150
|
+
`#brandidentity`,
|
|
151
|
+
];
|
|
152
|
+
}
|
|
153
|
+
export function generateBrandNaming(brand) {
|
|
154
|
+
const { industry, style } = brand;
|
|
155
|
+
const patterns = STYLE_NAME_PATTERNS[style] ?? STYLE_NAME_PATTERNS.minimal;
|
|
156
|
+
return {
|
|
157
|
+
nameIdeas: buildNameIdeas(industry, style),
|
|
158
|
+
taglineVariations: buildTaglineVariations(brand),
|
|
159
|
+
domainSuggestions: buildDomainSuggestions(brand),
|
|
160
|
+
hashtags: buildHashtags(brand),
|
|
161
|
+
namingRationale: `Names generated for a ${style} brand in the ${industry} space. Patterns emphasise ${patterns.modifiers.join(', ')} qualities that align with the chosen visual style. Prioritise short (≤12 chars), pronounceable names with available .com or .io domains.`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=brand-naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-naming.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-naming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { BrandIdentity, BrandVoiceGuidelines, BrandVoiceTone, BrandVoiceAudience } from '../../types.js';
|
|
2
|
+
export declare function generateBrandVoice(brand: BrandIdentity, overrideTone?: BrandVoiceTone, overrideAudience?: BrandVoiceAudience): BrandVoiceGuidelines;
|
|
3
|
+
//# sourceMappingURL=brand-voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-voice.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-voice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAuVxB,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,YAAY,CAAC,EAAE,cAAc,EAC7B,gBAAgB,CAAC,EAAE,kBAAkB,GACpC,oBAAoB,CAkBtB"}
|