@forgespace/branding-mcp 0.4.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/.env.example +3 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +22 -0
- package/.github/workflows/ci.yml +73 -0
- package/.github/workflows/release-automation.yml +56 -0
- package/.github/workflows/security-scan.yml +37 -0
- package/.gitleaks.toml +14 -0
- package/.prettierrc.json +10 -0
- package/CHANGELOG.md +66 -0
- package/CONTRIBUTING.md +203 -0
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/data/README.md +13 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/branding-core/ai/brand-interpreter.d.ts +5 -0
- package/dist/lib/branding-core/ai/brand-interpreter.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/brand-interpreter.js +16 -0
- package/dist/lib/branding-core/ai/brand-interpreter.js.map +1 -0
- package/dist/lib/branding-core/ai/claude-interpreter.d.ts +5 -0
- package/dist/lib/branding-core/ai/claude-interpreter.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/claude-interpreter.js +55 -0
- package/dist/lib/branding-core/ai/claude-interpreter.js.map +1 -0
- package/dist/lib/branding-core/ai/intent-applier.d.ts +4 -0
- package/dist/lib/branding-core/ai/intent-applier.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/intent-applier.js +29 -0
- package/dist/lib/branding-core/ai/intent-applier.js.map +1 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.d.ts +4 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.js +85 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.js.map +1 -0
- package/dist/lib/branding-core/ai/prompts.d.ts +4 -0
- package/dist/lib/branding-core/ai/prompts.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/prompts.js +79 -0
- package/dist/lib/branding-core/ai/prompts.js.map +1 -0
- package/dist/lib/branding-core/ai/types.d.ts +27 -0
- package/dist/lib/branding-core/ai/types.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/types.js +2 -0
- package/dist/lib/branding-core/ai/types.js.map +1 -0
- package/dist/lib/branding-core/documents/html-generator.d.ts +3 -0
- package/dist/lib/branding-core/documents/html-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/documents/html-generator.js +31 -0
- package/dist/lib/branding-core/documents/html-generator.js.map +1 -0
- package/dist/lib/branding-core/documents/pdf-generator.d.ts +3 -0
- package/dist/lib/branding-core/documents/pdf-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/documents/pdf-generator.js +20 -0
- package/dist/lib/branding-core/documents/pdf-generator.js.map +1 -0
- package/dist/lib/branding-core/exporters/css-variables.d.ts +3 -0
- package/dist/lib/branding-core/exporters/css-variables.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/css-variables.js +62 -0
- package/dist/lib/branding-core/exporters/css-variables.js.map +1 -0
- package/dist/lib/branding-core/exporters/design-tokens.d.ts +3 -0
- package/dist/lib/branding-core/exporters/design-tokens.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/design-tokens.js +75 -0
- package/dist/lib/branding-core/exporters/design-tokens.js.map +1 -0
- package/dist/lib/branding-core/exporters/figma-tokens.d.ts +9 -0
- package/dist/lib/branding-core/exporters/figma-tokens.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/figma-tokens.js +69 -0
- package/dist/lib/branding-core/exporters/figma-tokens.js.map +1 -0
- package/dist/lib/branding-core/exporters/react-theme.d.ts +3 -0
- package/dist/lib/branding-core/exporters/react-theme.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/react-theme.js +61 -0
- package/dist/lib/branding-core/exporters/react-theme.js.map +1 -0
- package/dist/lib/branding-core/exporters/sass-variables.d.ts +3 -0
- package/dist/lib/branding-core/exporters/sass-variables.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/sass-variables.js +65 -0
- package/dist/lib/branding-core/exporters/sass-variables.js.map +1 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.d.ts +3 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.js +55 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.js.map +1 -0
- package/dist/lib/branding-core/generators/border-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/border-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/border-system.js +37 -0
- package/dist/lib/branding-core/generators/border-system.js.map +1 -0
- package/dist/lib/branding-core/generators/color-palette.d.ts +7 -0
- package/dist/lib/branding-core/generators/color-palette.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/color-palette.js +117 -0
- package/dist/lib/branding-core/generators/color-palette.js.map +1 -0
- package/dist/lib/branding-core/generators/favicon-generator.d.ts +3 -0
- package/dist/lib/branding-core/generators/favicon-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/favicon-generator.js +23 -0
- package/dist/lib/branding-core/generators/favicon-generator.js.map +1 -0
- package/dist/lib/branding-core/generators/gradient-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/gradient-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/gradient-system.js +74 -0
- package/dist/lib/branding-core/generators/gradient-system.js.map +1 -0
- package/dist/lib/branding-core/generators/logo-generator.d.ts +4 -0
- package/dist/lib/branding-core/generators/logo-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/logo-generator.js +130 -0
- package/dist/lib/branding-core/generators/logo-generator.js.map +1 -0
- package/dist/lib/branding-core/generators/motion-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/motion-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/motion-system.js +91 -0
- package/dist/lib/branding-core/generators/motion-system.js.map +1 -0
- package/dist/lib/branding-core/generators/og-image-generator.d.ts +3 -0
- package/dist/lib/branding-core/generators/og-image-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/og-image-generator.js +72 -0
- package/dist/lib/branding-core/generators/og-image-generator.js.map +1 -0
- package/dist/lib/branding-core/generators/shadow-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/shadow-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/shadow-system.js +44 -0
- package/dist/lib/branding-core/generators/shadow-system.js.map +1 -0
- package/dist/lib/branding-core/generators/spacing-scale.d.ts +3 -0
- package/dist/lib/branding-core/generators/spacing-scale.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/spacing-scale.js +27 -0
- package/dist/lib/branding-core/generators/spacing-scale.js.map +1 -0
- package/dist/lib/branding-core/generators/typography-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/typography-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/typography-system.js +121 -0
- package/dist/lib/branding-core/generators/typography-system.js.map +1 -0
- package/dist/lib/branding-core/index.d.ts +24 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -0
- package/dist/lib/branding-core/index.js +22 -0
- package/dist/lib/branding-core/index.js.map +1 -0
- package/dist/lib/branding-core/validators/brand-consistency.d.ts +3 -0
- package/dist/lib/branding-core/validators/brand-consistency.d.ts.map +1 -0
- package/dist/lib/branding-core/validators/brand-consistency.js +70 -0
- package/dist/lib/branding-core/validators/brand-consistency.js.map +1 -0
- package/dist/lib/branding-core/validators/contrast-checker.d.ts +3 -0
- package/dist/lib/branding-core/validators/contrast-checker.d.ts.map +1 -0
- package/dist/lib/branding-core/validators/contrast-checker.js +33 -0
- package/dist/lib/branding-core/validators/contrast-checker.js.map +1 -0
- package/dist/lib/branding-core/validators/token-schema.d.ts +10 -0
- package/dist/lib/branding-core/validators/token-schema.d.ts.map +1 -0
- package/dist/lib/branding-core/validators/token-schema.js +43 -0
- package/dist/lib/branding-core/validators/token-schema.js.map +1 -0
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +8 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/logger.d.ts +3 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +10 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/types.d.ts +208 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/resources/brand-knowledge.d.ts +3 -0
- package/dist/resources/brand-knowledge.d.ts.map +1 -0
- package/dist/resources/brand-knowledge.js +53 -0
- package/dist/resources/brand-knowledge.js.map +1 -0
- package/dist/resources/brand-templates.d.ts +3 -0
- package/dist/resources/brand-templates.d.ts.map +1 -0
- package/dist/resources/brand-templates.js +68 -0
- package/dist/resources/brand-templates.js.map +1 -0
- package/dist/tools/create-brand-guidelines.d.ts +3 -0
- package/dist/tools/create-brand-guidelines.d.ts.map +1 -0
- package/dist/tools/create-brand-guidelines.js +85 -0
- package/dist/tools/create-brand-guidelines.js.map +1 -0
- package/dist/tools/export-design-tokens.d.ts +3 -0
- package/dist/tools/export-design-tokens.d.ts.map +1 -0
- package/dist/tools/export-design-tokens.js +37 -0
- package/dist/tools/export-design-tokens.js.map +1 -0
- package/dist/tools/generate-brand-assets.d.ts +3 -0
- package/dist/tools/generate-brand-assets.d.ts.map +1 -0
- package/dist/tools/generate-brand-assets.js +37 -0
- package/dist/tools/generate-brand-assets.js.map +1 -0
- package/dist/tools/generate-brand-identity.d.ts +3 -0
- package/dist/tools/generate-brand-identity.d.ts.map +1 -0
- package/dist/tools/generate-brand-identity.js +73 -0
- package/dist/tools/generate-brand-identity.js.map +1 -0
- package/dist/tools/generate-color-palette.d.ts +3 -0
- package/dist/tools/generate-color-palette.d.ts.map +1 -0
- package/dist/tools/generate-color-palette.js +33 -0
- package/dist/tools/generate-color-palette.js.map +1 -0
- package/dist/tools/generate-typography-system.d.ts +3 -0
- package/dist/tools/generate-typography-system.d.ts.map +1 -0
- package/dist/tools/generate-typography-system.js +28 -0
- package/dist/tools/generate-typography-system.js.map +1 -0
- package/dist/tools/refine-brand-element.d.ts +3 -0
- package/dist/tools/refine-brand-element.d.ts.map +1 -0
- package/dist/tools/refine-brand-element.js +41 -0
- package/dist/tools/refine-brand-element.js.map +1 -0
- package/dist/tools/validate-brand-consistency.d.ts +3 -0
- package/dist/tools/validate-brand-consistency.d.ts.map +1 -0
- package/dist/tools/validate-brand-consistency.js +25 -0
- package/dist/tools/validate-brand-consistency.js.map +1 -0
- package/docs/API.md +110 -0
- package/docs/DATA_SOURCES.md +69 -0
- package/docs/INTEGRATION.md +58 -0
- package/eslint.config.js +52 -0
- package/jest.config.js +40 -0
- package/package.json +78 -0
- package/src/__tests__/integration/brand-generation.test.ts +84 -0
- package/src/__tests__/integration/mcp-server.test.ts +18 -0
- package/src/__tests__/unit/ai-interpreter.test.ts +172 -0
- package/src/__tests__/unit/border-system.test.ts +77 -0
- package/src/__tests__/unit/color-palette.test.ts +161 -0
- package/src/__tests__/unit/contrast-checker.test.ts +124 -0
- package/src/__tests__/unit/design-tokens.test.ts +184 -0
- package/src/__tests__/unit/favicon-generator.test.ts +80 -0
- package/src/__tests__/unit/gradient-system.test.ts +122 -0
- package/src/__tests__/unit/logo-generator.test.ts +146 -0
- package/src/__tests__/unit/motion-system.test.ts +91 -0
- package/src/__tests__/unit/og-image-generator.test.ts +115 -0
- package/src/__tests__/unit/shadow-system.test.ts +63 -0
- package/src/__tests__/unit/spacing-scale.test.ts +60 -0
- package/src/__tests__/unit/typography-system.test.ts +71 -0
- package/src/index.ts +59 -0
- package/src/lib/branding-core/ai/brand-interpreter.ts +30 -0
- package/src/lib/branding-core/ai/claude-interpreter.ts +76 -0
- package/src/lib/branding-core/ai/intent-applier.ts +59 -0
- package/src/lib/branding-core/ai/keyword-interpreter.ts +95 -0
- package/src/lib/branding-core/ai/prompts.ts +93 -0
- package/src/lib/branding-core/ai/types.ts +36 -0
- package/src/lib/branding-core/documents/html-generator.ts +32 -0
- package/src/lib/branding-core/documents/pdf-generator.ts +21 -0
- package/src/lib/branding-core/exporters/css-variables.ts +71 -0
- package/src/lib/branding-core/exporters/design-tokens.ts +86 -0
- package/src/lib/branding-core/exporters/figma-tokens.ts +87 -0
- package/src/lib/branding-core/exporters/react-theme.ts +69 -0
- package/src/lib/branding-core/exporters/sass-variables.ts +74 -0
- package/src/lib/branding-core/exporters/tailwind-preset.ts +67 -0
- package/src/lib/branding-core/generators/border-system.ts +41 -0
- package/src/lib/branding-core/generators/color-palette.ts +147 -0
- package/src/lib/branding-core/generators/favicon-generator.ts +33 -0
- package/src/lib/branding-core/generators/gradient-system.ts +120 -0
- package/src/lib/branding-core/generators/logo-generator.ts +152 -0
- package/src/lib/branding-core/generators/motion-system.ts +98 -0
- package/src/lib/branding-core/generators/og-image-generator.ts +97 -0
- package/src/lib/branding-core/generators/shadow-system.ts +66 -0
- package/src/lib/branding-core/generators/spacing-scale.ts +29 -0
- package/src/lib/branding-core/generators/typography-system.ts +128 -0
- package/src/lib/branding-core/index.ts +28 -0
- package/src/lib/branding-core/validators/brand-consistency.ts +79 -0
- package/src/lib/branding-core/validators/contrast-checker.ts +37 -0
- package/src/lib/branding-core/validators/token-schema.ts +50 -0
- package/src/lib/config.ts +13 -0
- package/src/lib/logger.ts +12 -0
- package/src/lib/types.ts +236 -0
- package/src/resources/brand-knowledge.ts +60 -0
- package/src/resources/brand-templates.ts +70 -0
- package/src/tools/create-brand-guidelines.ts +94 -0
- package/src/tools/export-design-tokens.ts +52 -0
- package/src/tools/generate-brand-assets.ts +48 -0
- package/src/tools/generate-brand-identity.ts +115 -0
- package/src/tools/generate-color-palette.ts +43 -0
- package/src/tools/generate-typography-system.ts +42 -0
- package/src/tools/refine-brand-element.ts +65 -0
- package/src/tools/validate-brand-consistency.ts +32 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
function rescaleSvg(iconSvg, size, brandColor) {
|
|
2
|
+
const strokeScale = size <= 32 ? 2 : 1;
|
|
3
|
+
let svg = iconSvg
|
|
4
|
+
.replace(/width="[^"]*"/, `width="${size}"`)
|
|
5
|
+
.replace(/height="[^"]*"/, `height="${size}"`)
|
|
6
|
+
.replace(/viewBox="[^"]*"/, `viewBox="0 0 64 64"`);
|
|
7
|
+
if (strokeScale > 1) {
|
|
8
|
+
svg = svg.replace(/stroke-width="(\d+)"/g, (_, w) => `stroke-width="${Number(w) * strokeScale}"`);
|
|
9
|
+
}
|
|
10
|
+
if (!svg.includes('fill=') && !svg.includes('<circle')) {
|
|
11
|
+
svg = svg.replace('<svg ', `<svg style="color:${brandColor}" `);
|
|
12
|
+
}
|
|
13
|
+
return svg;
|
|
14
|
+
}
|
|
15
|
+
export function generateFavicons(iconSvg, brandColor) {
|
|
16
|
+
const sizes = [16, 32, 180, 512];
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const size of sizes) {
|
|
19
|
+
result[size] = rescaleSvg(iconSvg, size, brandColor);
|
|
20
|
+
}
|
|
21
|
+
return { sizes: result };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=favicon-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"favicon-generator.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/favicon-generator.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,OAAe,EAAE,IAAiB,EAAE,UAAkB;IACxE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,GAAG,GAAG,OAAO;SACd,OAAO,CAAC,eAAe,EAAE,UAAU,IAAI,GAAG,CAAC;SAC3C,OAAO,CAAC,gBAAgB,EAAE,WAAW,IAAI,GAAG,CAAC;SAC7C,OAAO,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IAErD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,GAAG,GAAG,GAAG,CAAC,OAAO,CACf,uBAAuB,EACvB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CACtD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,UAAU,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,UAAkB;IAClE,MAAM,KAAK,GAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,EAAiC,CAAC;IAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradient-system.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/gradient-system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAIZ,cAAc,EAGf,MAAM,gBAAgB,CAAC;AAiGxB,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE,UAAsB,GAC5B,cAAc,CAUhB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { hexToHsl, hslToHex } from './color-palette.js';
|
|
2
|
+
const STYLE_GRADIENT_CONFIG = {
|
|
3
|
+
minimal: { type: 'linear', angle: 180, stops: 2, lightnessVariance: 5 },
|
|
4
|
+
bold: { type: 'linear', angle: 45, stops: 3, lightnessVariance: 25 },
|
|
5
|
+
elegant: { type: 'linear', angle: 135, stops: 2, lightnessVariance: 10 },
|
|
6
|
+
playful: { type: 'conic', angle: 0, stops: 3, lightnessVariance: 20 },
|
|
7
|
+
corporate: { type: 'linear', angle: 180, stops: 2, lightnessVariance: 8 },
|
|
8
|
+
tech: { type: 'linear', angle: 315, stops: 2, lightnessVariance: 15 },
|
|
9
|
+
organic: { type: 'radial', angle: 0, stops: 3, lightnessVariance: 12 },
|
|
10
|
+
retro: { type: 'linear', angle: 90, stops: 3, lightnessVariance: 18 },
|
|
11
|
+
};
|
|
12
|
+
function shiftLightness(hsl, amount) {
|
|
13
|
+
const l = Math.max(0, Math.min(100, hsl.l + amount));
|
|
14
|
+
return hslToHex(hsl.h, hsl.s, l);
|
|
15
|
+
}
|
|
16
|
+
function buildStops(baseHex, endHex, count, variance) {
|
|
17
|
+
const baseHsl = hexToHsl(baseHex);
|
|
18
|
+
const endHsl = hexToHsl(endHex);
|
|
19
|
+
if (count === 2) {
|
|
20
|
+
return [
|
|
21
|
+
{ color: baseHex, position: 0 },
|
|
22
|
+
{ color: endHex, position: 100 },
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
const midHex = shiftLightness({ h: (baseHsl.h + endHsl.h) / 2, s: baseHsl.s, l: baseHsl.l }, variance / 2);
|
|
26
|
+
return [
|
|
27
|
+
{ color: baseHex, position: 0 },
|
|
28
|
+
{ color: midHex, position: 50 },
|
|
29
|
+
{ color: endHex, position: 100 },
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
function toCssValue(type, angle, stops) {
|
|
33
|
+
const stopStr = stops.map((s) => `${s.color} ${s.position}%`).join(', ');
|
|
34
|
+
if (type === 'radial')
|
|
35
|
+
return `radial-gradient(circle, ${stopStr})`;
|
|
36
|
+
if (type === 'conic')
|
|
37
|
+
return `conic-gradient(from ${angle}deg, ${stopStr})`;
|
|
38
|
+
return `linear-gradient(${angle}deg, ${stopStr})`;
|
|
39
|
+
}
|
|
40
|
+
function createGradient(type, angle, stops) {
|
|
41
|
+
return {
|
|
42
|
+
type,
|
|
43
|
+
angle: type !== 'radial' ? angle : undefined,
|
|
44
|
+
stops,
|
|
45
|
+
cssValue: toCssValue(type, angle, stops),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function buildPreset(name, colors, config) {
|
|
49
|
+
const { type, angle, stops: count, lightnessVariance } = config;
|
|
50
|
+
const primary = colors.primary.hex;
|
|
51
|
+
const secondary = colors.secondary.hex;
|
|
52
|
+
const accent = colors.accent.hex;
|
|
53
|
+
const neutralLight = colors.neutral[0]?.hex ?? '#f5f5f5';
|
|
54
|
+
const neutralDark = colors.neutral[colors.neutral.length - 1]?.hex ?? '#1a1a1a';
|
|
55
|
+
const presetMap = {
|
|
56
|
+
hero: () => buildStops(primary, secondary, count, lightnessVariance),
|
|
57
|
+
button: () => buildStops(accent, primary, count, lightnessVariance),
|
|
58
|
+
card: () => buildStops(neutralLight, shiftLightness(hexToHsl(neutralLight), -lightnessVariance), 2, lightnessVariance),
|
|
59
|
+
text: () => buildStops(primary, accent, count, lightnessVariance),
|
|
60
|
+
background: () => buildStops(neutralLight, neutralDark, 2, lightnessVariance),
|
|
61
|
+
};
|
|
62
|
+
const stops = presetMap[name]();
|
|
63
|
+
return createGradient(type, angle, stops);
|
|
64
|
+
}
|
|
65
|
+
export function generateGradientSystem(colors, style = 'minimal') {
|
|
66
|
+
const config = STYLE_GRADIENT_CONFIG[style];
|
|
67
|
+
const presetNames = ['hero', 'button', 'card', 'text', 'background'];
|
|
68
|
+
const presets = {};
|
|
69
|
+
for (const name of presetNames) {
|
|
70
|
+
presets[name] = buildPreset(name, colors, config);
|
|
71
|
+
}
|
|
72
|
+
return { presets };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=gradient-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradient-system.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/gradient-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { LogoConfig, LogoOutput } from '../../types.js';
|
|
2
|
+
export declare function defaultLogoConfig(brandName: string, primaryColor: string): LogoConfig;
|
|
3
|
+
export declare function generateSvgLogo(config: LogoConfig): LogoOutput;
|
|
4
|
+
//# sourceMappingURL=logo-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo-generator.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/logo-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,CAUrF;AAiID,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAU9D"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export function defaultLogoConfig(brandName, primaryColor) {
|
|
2
|
+
return {
|
|
3
|
+
text: brandName,
|
|
4
|
+
font: 'Inter',
|
|
5
|
+
fontSize: 48,
|
|
6
|
+
color: primaryColor,
|
|
7
|
+
backgroundColor: 'transparent',
|
|
8
|
+
width: 400,
|
|
9
|
+
height: 120,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function generateWordmark(config) {
|
|
13
|
+
const { text, font, fontSize, color, backgroundColor, width, height } = config;
|
|
14
|
+
const initial = text.charAt(0).toUpperCase();
|
|
15
|
+
const circleR = height * 0.35;
|
|
16
|
+
const circleX = circleR + 20;
|
|
17
|
+
const circleY = height / 2;
|
|
18
|
+
const textX = circleX + circleR + 16;
|
|
19
|
+
const textY = height / 2;
|
|
20
|
+
const fontFamily = `'${font}', sans-serif`;
|
|
21
|
+
return [
|
|
22
|
+
`<svg xmlns="http://www.w3.org/2000/svg" width="400" height="120" viewBox="0 0 400 120">`,
|
|
23
|
+
backgroundColor !== 'transparent'
|
|
24
|
+
? ` <rect width="${width}" height="${height}" fill="${backgroundColor}" rx="8"/>`
|
|
25
|
+
: '',
|
|
26
|
+
` <circle cx="${circleX}" cy="${circleY}" r="${circleR}" fill="${color}"/>`,
|
|
27
|
+
` <text x="${circleX}" y="${circleY}" fill="white" font-size="${fontSize * 0.7}" font-family="${fontFamily}" font-weight="700" text-anchor="middle" dominant-baseline="central">${initial}</text>`,
|
|
28
|
+
` <text x="${textX}" y="${textY}" fill="${color}" font-size="${fontSize}" font-family="${fontFamily}" font-weight="600" dominant-baseline="central">${text}</text>`,
|
|
29
|
+
'</svg>',
|
|
30
|
+
]
|
|
31
|
+
.filter(Boolean)
|
|
32
|
+
.join('\n');
|
|
33
|
+
}
|
|
34
|
+
const MONOGRAM_SHAPES = {
|
|
35
|
+
minimal: 'roundedSquare',
|
|
36
|
+
bold: 'hexagon',
|
|
37
|
+
elegant: 'thinCircle',
|
|
38
|
+
playful: 'blob',
|
|
39
|
+
corporate: 'rectangle',
|
|
40
|
+
tech: 'diamond',
|
|
41
|
+
organic: 'ellipse',
|
|
42
|
+
retro: 'octagon',
|
|
43
|
+
};
|
|
44
|
+
function monogramContainer(style, color) {
|
|
45
|
+
const shape = MONOGRAM_SHAPES[style] ?? 'thinCircle';
|
|
46
|
+
const containers = {
|
|
47
|
+
roundedSquare: `<rect x="10" y="10" width="100" height="100" rx="16" fill="${color}"/>`,
|
|
48
|
+
hexagon: `<polygon points="60,5 110,30 110,90 60,115 10,90 10,30" fill="${color}"/>`,
|
|
49
|
+
thinCircle: `<circle cx="60" cy="60" r="50" fill="none" stroke="${color}" stroke-width="3"/>`,
|
|
50
|
+
blob: `<ellipse cx="60" cy="60" rx="52" ry="48" fill="${color}"/>`,
|
|
51
|
+
rectangle: `<rect x="10" y="15" width="100" height="90" rx="4" fill="${color}"/>`,
|
|
52
|
+
diamond: `<polygon points="60,5 115,60 60,115 5,60" fill="${color}"/>`,
|
|
53
|
+
ellipse: `<ellipse cx="60" cy="60" rx="55" ry="45" fill="${color}"/>`,
|
|
54
|
+
octagon: `<polygon points="35,5 85,5 115,35 115,85 85,115 35,115 5,85 5,35" fill="${color}"/>`,
|
|
55
|
+
};
|
|
56
|
+
return containers[shape] ?? containers.thinCircle;
|
|
57
|
+
}
|
|
58
|
+
function generateMonogram(config) {
|
|
59
|
+
const { text, font, color } = config;
|
|
60
|
+
const initial = text.charAt(0).toUpperCase();
|
|
61
|
+
const style = config.style ?? 'minimal';
|
|
62
|
+
const fontFamily = `'${font}', sans-serif`;
|
|
63
|
+
const isThinCircle = MONOGRAM_SHAPES[style] === 'thinCircle';
|
|
64
|
+
const textColor = isThinCircle ? color : 'white';
|
|
65
|
+
return [
|
|
66
|
+
`<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" viewBox="0 0 120 120">`,
|
|
67
|
+
` ${monogramContainer(style, color)}`,
|
|
68
|
+
` <text x="60" y="60" fill="${textColor}" font-size="56" font-family="${fontFamily}" font-weight="700" text-anchor="middle" dominant-baseline="central">${initial}</text>`,
|
|
69
|
+
'</svg>',
|
|
70
|
+
].join('\n');
|
|
71
|
+
}
|
|
72
|
+
const ABSTRACT_BUILDERS = {
|
|
73
|
+
minimal: (c) => ` <circle cx="40" cy="60" r="30" fill="${c}" opacity="0.8"/>` +
|
|
74
|
+
`\n <circle cx="60" cy="40" r="30" fill="${c}" opacity="0.5"/>` +
|
|
75
|
+
`\n <circle cx="80" cy="60" r="30" fill="${c}" opacity="0.3"/>`,
|
|
76
|
+
bold: (c) => ` <rect x="10" y="10" width="50" height="50" fill="${c}" opacity="0.9"/>` +
|
|
77
|
+
`\n <rect x="40" y="40" width="50" height="50" fill="${c}" opacity="0.6"/>` +
|
|
78
|
+
`\n <rect x="60" y="20" width="40" height="40" fill="${c}" opacity="0.3"/>`,
|
|
79
|
+
elegant: (c) => ` <path d="M60,10 A50,50 0 0,1 110,60" fill="none" stroke="${c}" stroke-width="2"/>` +
|
|
80
|
+
`\n <path d="M60,25 A35,35 0 0,1 95,60" fill="none" stroke="${c}" stroke-width="2"/>` +
|
|
81
|
+
`\n <path d="M60,40 A20,20 0 0,1 80,60" fill="none" stroke="${c}" stroke-width="2"/>`,
|
|
82
|
+
playful: (c) => ` <circle cx="30" cy="40" r="8" fill="${c}"/>` +
|
|
83
|
+
`\n <circle cx="60" cy="25" r="12" fill="${c}" opacity="0.7"/>` +
|
|
84
|
+
`\n <circle cx="90" cy="50" r="10" fill="${c}" opacity="0.5"/>` +
|
|
85
|
+
`\n <circle cx="50" cy="80" r="14" fill="${c}" opacity="0.6"/>`,
|
|
86
|
+
corporate: (c) => ` <rect x="10" y="10" width="30" height="100" fill="${c}" opacity="0.3"/>` +
|
|
87
|
+
`\n <rect x="45" y="10" width="30" height="100" fill="${c}" opacity="0.5"/>` +
|
|
88
|
+
`\n <rect x="80" y="10" width="30" height="100" fill="${c}" opacity="0.7"/>`,
|
|
89
|
+
tech: (c) => ` <line x1="10" y1="60" x2="50" y2="30" stroke="${c}" stroke-width="2"/>` +
|
|
90
|
+
`\n <line x1="50" y1="30" x2="90" y2="50" stroke="${c}" stroke-width="2"/>` +
|
|
91
|
+
`\n <line x1="90" y1="50" x2="110" y2="20" stroke="${c}" stroke-width="2"/>` +
|
|
92
|
+
`\n <circle cx="50" cy="30" r="4" fill="${c}"/>` +
|
|
93
|
+
`\n <circle cx="90" cy="50" r="4" fill="${c}"/>`,
|
|
94
|
+
organic: (c) => ` <path d="M10,60 Q30,20 60,60 Q90,100 110,60" fill="none" stroke="${c}" stroke-width="3"/>` +
|
|
95
|
+
`\n <path d="M10,80 Q30,40 60,80 Q90,120 110,80" fill="none" stroke="${c}" stroke-width="2" opacity="0.5"/>`,
|
|
96
|
+
retro: (c) => ` <polygon points="60,10 75,35 110,35 82,55 93,85 60,67 27,85 38,55 10,35 45,35" fill="${c}"/>` +
|
|
97
|
+
`\n <polygon points="60,25 70,42 90,42 74,53 80,70 60,60 40,70 46,53 30,42 50,42" fill="white" opacity="0.3"/>`,
|
|
98
|
+
};
|
|
99
|
+
function generateAbstract(config) {
|
|
100
|
+
const { color } = config;
|
|
101
|
+
const style = config.style ?? 'minimal';
|
|
102
|
+
const builder = ABSTRACT_BUILDERS[style] ?? ABSTRACT_BUILDERS.minimal;
|
|
103
|
+
return [
|
|
104
|
+
`<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" viewBox="0 0 120 120">`,
|
|
105
|
+
builder(color),
|
|
106
|
+
'</svg>',
|
|
107
|
+
].join('\n');
|
|
108
|
+
}
|
|
109
|
+
function generateIcon(config) {
|
|
110
|
+
const { text, font, color } = config;
|
|
111
|
+
const initial = text.charAt(0).toUpperCase();
|
|
112
|
+
const fontFamily = `'${font}', sans-serif`;
|
|
113
|
+
return [
|
|
114
|
+
`<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">`,
|
|
115
|
+
` <circle cx="32" cy="32" r="28" fill="${color}"/>`,
|
|
116
|
+
` <text x="32" y="32" fill="white" font-size="32" font-family="${fontFamily}" font-weight="700" text-anchor="middle" dominant-baseline="central">${initial}</text>`,
|
|
117
|
+
'</svg>',
|
|
118
|
+
].join('\n');
|
|
119
|
+
}
|
|
120
|
+
export function generateSvgLogo(config) {
|
|
121
|
+
const wordmark = generateWordmark(config);
|
|
122
|
+
const monogram = generateMonogram(config);
|
|
123
|
+
const abstract = generateAbstract(config);
|
|
124
|
+
const icon = generateIcon(config);
|
|
125
|
+
return {
|
|
126
|
+
svg: wordmark,
|
|
127
|
+
variants: { wordmark, monogram, abstract, icon },
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=logo-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo-generator.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/logo-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-system.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/motion-system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA4B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqFzF,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,UAAsB,GAAG,YAAY,CAYhF"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const STYLE_DURATIONS = {
|
|
2
|
+
minimal: { instant: 0, fast: 100, normal: 200, slow: 300, slower: 400 },
|
|
3
|
+
bold: { instant: 0, fast: 100, normal: 200, slow: 300, slower: 450 },
|
|
4
|
+
elegant: { instant: 0, fast: 200, normal: 350, slow: 500, slower: 700 },
|
|
5
|
+
playful: { instant: 0, fast: 150, normal: 250, slow: 400, slower: 600 },
|
|
6
|
+
corporate: { instant: 0, fast: 120, normal: 200, slow: 300, slower: 400 },
|
|
7
|
+
tech: { instant: 0, fast: 80, normal: 150, slow: 250, slower: 350 },
|
|
8
|
+
organic: { instant: 0, fast: 180, normal: 300, slow: 450, slower: 650 },
|
|
9
|
+
retro: { instant: 0, fast: 150, normal: 250, slow: 350, slower: 500 },
|
|
10
|
+
};
|
|
11
|
+
const STYLE_EASINGS = {
|
|
12
|
+
minimal: {
|
|
13
|
+
'ease-in': 'cubic-bezier(0.4, 0, 1, 1)',
|
|
14
|
+
'ease-out': 'cubic-bezier(0, 0, 0.2, 1)',
|
|
15
|
+
'ease-in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
|
|
16
|
+
spring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',
|
|
17
|
+
bounce: 'cubic-bezier(0.34, 1.2, 0.64, 1)',
|
|
18
|
+
},
|
|
19
|
+
bold: {
|
|
20
|
+
'ease-in': 'cubic-bezier(0.5, 0, 1, 1)',
|
|
21
|
+
'ease-out': 'cubic-bezier(0, 0, 0.15, 1)',
|
|
22
|
+
'ease-in-out': 'cubic-bezier(0.5, 0, 0.15, 1)',
|
|
23
|
+
spring: 'cubic-bezier(0.22, 1.8, 0.36, 1)',
|
|
24
|
+
bounce: 'cubic-bezier(0.22, 1.5, 0.36, 1)',
|
|
25
|
+
},
|
|
26
|
+
elegant: {
|
|
27
|
+
'ease-in': 'cubic-bezier(0.42, 0, 1, 1)',
|
|
28
|
+
'ease-out': 'cubic-bezier(0, 0, 0.58, 1)',
|
|
29
|
+
'ease-in-out': 'cubic-bezier(0.42, 0, 0.58, 1)',
|
|
30
|
+
spring: 'cubic-bezier(0.25, 1.2, 0.5, 1)',
|
|
31
|
+
bounce: 'cubic-bezier(0.25, 1.1, 0.5, 1)',
|
|
32
|
+
},
|
|
33
|
+
playful: {
|
|
34
|
+
'ease-in': 'cubic-bezier(0.4, 0, 1, 1)',
|
|
35
|
+
'ease-out': 'cubic-bezier(0, 0, 0.2, 1)',
|
|
36
|
+
'ease-in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
|
|
37
|
+
spring: 'cubic-bezier(0.18, 2.0, 0.4, 1)',
|
|
38
|
+
bounce: 'cubic-bezier(0.18, 1.8, 0.4, 1)',
|
|
39
|
+
},
|
|
40
|
+
corporate: {
|
|
41
|
+
'ease-in': 'cubic-bezier(0.4, 0, 1, 1)',
|
|
42
|
+
'ease-out': 'cubic-bezier(0, 0, 0.2, 1)',
|
|
43
|
+
'ease-in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
|
|
44
|
+
spring: 'cubic-bezier(0.3, 1.3, 0.6, 1)',
|
|
45
|
+
bounce: 'cubic-bezier(0.3, 1.15, 0.6, 1)',
|
|
46
|
+
},
|
|
47
|
+
tech: {
|
|
48
|
+
'ease-in': 'cubic-bezier(0.55, 0, 1, 1)',
|
|
49
|
+
'ease-out': 'cubic-bezier(0, 0, 0.1, 1)',
|
|
50
|
+
'ease-in-out': 'cubic-bezier(0.55, 0, 0.1, 1)',
|
|
51
|
+
spring: 'cubic-bezier(0.2, 1.6, 0.4, 1)',
|
|
52
|
+
bounce: 'cubic-bezier(0.2, 1.4, 0.4, 1)',
|
|
53
|
+
},
|
|
54
|
+
organic: {
|
|
55
|
+
'ease-in': 'cubic-bezier(0.35, 0, 0.9, 1)',
|
|
56
|
+
'ease-out': 'cubic-bezier(0.1, 0, 0.3, 1)',
|
|
57
|
+
'ease-in-out': 'cubic-bezier(0.35, 0, 0.3, 1)',
|
|
58
|
+
spring: 'cubic-bezier(0.28, 1.4, 0.5, 1)',
|
|
59
|
+
bounce: 'cubic-bezier(0.28, 1.25, 0.5, 1)',
|
|
60
|
+
},
|
|
61
|
+
retro: {
|
|
62
|
+
'ease-in': 'cubic-bezier(0.5, 0, 1, 1)',
|
|
63
|
+
'ease-out': 'cubic-bezier(0, 0, 0.3, 1)',
|
|
64
|
+
'ease-in-out': 'cubic-bezier(0.5, 0, 0.3, 1)',
|
|
65
|
+
spring: 'cubic-bezier(0.3, 1.5, 0.5, 1)',
|
|
66
|
+
bounce: 'cubic-bezier(0.3, 1.3, 0.5, 1)',
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
function buildTransitions(durations, defaultEasing) {
|
|
70
|
+
return {
|
|
71
|
+
fade: `opacity ${durations.normal}ms ${defaultEasing}`,
|
|
72
|
+
slide: `transform ${durations.normal}ms ${defaultEasing}`,
|
|
73
|
+
scale: `transform ${durations.fast}ms ${defaultEasing}`,
|
|
74
|
+
color: `color ${durations.slow}ms ${defaultEasing}, background-color ${durations.slow}ms ${defaultEasing}`,
|
|
75
|
+
all: `all ${durations.normal}ms ${defaultEasing}`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function generateMotionSystem(style = 'minimal') {
|
|
79
|
+
const durationValues = STYLE_DURATIONS[style];
|
|
80
|
+
const easingValues = STYLE_EASINGS[style];
|
|
81
|
+
const durations = {};
|
|
82
|
+
for (const [name, ms] of Object.entries(durationValues)) {
|
|
83
|
+
durations[name] = `${ms}ms`;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
durations,
|
|
87
|
+
easings: easingValues,
|
|
88
|
+
transitions: buildTransitions(durationValues, easingValues['ease-out']),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=motion-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-system.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/motion-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"og-image-generator.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/og-image-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA4E/E,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,QAAQ,GAAE,UAAsB,EAChC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,CAef"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
function getGradientColors(brand) {
|
|
2
|
+
return [brand.colors.primary.hex, brand.colors.secondary.hex];
|
|
3
|
+
}
|
|
4
|
+
function stripSvgWrapper(svg) {
|
|
5
|
+
return svg.replace(/<svg[^>]*>/, '').replace(/<\/svg>/, '');
|
|
6
|
+
}
|
|
7
|
+
function buildSvg(w, h, colors, font, title, subtitle, logoSection) {
|
|
8
|
+
return [
|
|
9
|
+
`<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}">`,
|
|
10
|
+
` <defs>`,
|
|
11
|
+
` <style>@import url('https://fonts.googleapis.com/css2?family=${encodeURIComponent(font)}');</style>`,
|
|
12
|
+
` <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">`,
|
|
13
|
+
` <stop offset="0%" style="stop-color:${colors[0]}"/>`,
|
|
14
|
+
` <stop offset="100%" style="stop-color:${colors[1]}"/>`,
|
|
15
|
+
` </linearGradient>`,
|
|
16
|
+
` </defs>`,
|
|
17
|
+
` <rect width="${w}" height="${h}" fill="url(#bg)"/>`,
|
|
18
|
+
logoSection,
|
|
19
|
+
` <text x="${w / 2}" y="${h / 2 - 20}" fill="white" font-size="56" font-family="'${font}', sans-serif" font-weight="700" text-anchor="middle" dominant-baseline="central">${title}</text>`,
|
|
20
|
+
subtitle
|
|
21
|
+
? ` <text x="${w / 2}" y="${h / 2 + 40}" fill="white" font-size="28" font-family="'${font}', sans-serif" font-weight="400" text-anchor="middle" dominant-baseline="central" opacity="0.8">${subtitle}</text>`
|
|
22
|
+
: '',
|
|
23
|
+
'</svg>',
|
|
24
|
+
]
|
|
25
|
+
.filter(Boolean)
|
|
26
|
+
.join('\n');
|
|
27
|
+
}
|
|
28
|
+
function buildDefaultTemplate(brand, title, subtitle) {
|
|
29
|
+
const displayTitle = title ?? brand.name;
|
|
30
|
+
const displaySub = subtitle ?? brand.tagline ?? '';
|
|
31
|
+
const font = brand.typography.headingFont;
|
|
32
|
+
const logoSvg = brand.logo?.variants?.icon ?? '';
|
|
33
|
+
const logoSection = logoSvg
|
|
34
|
+
? `<g transform="translate(540, 80) scale(1.5)">${stripSvgWrapper(logoSvg)}</g>`
|
|
35
|
+
: '';
|
|
36
|
+
return buildSvg(1200, 630, getGradientColors(brand), font, displayTitle, displaySub, logoSection);
|
|
37
|
+
}
|
|
38
|
+
function buildArticleTemplate(brand, title, subtitle) {
|
|
39
|
+
const displayTitle = title ?? 'Untitled Article';
|
|
40
|
+
const displaySub = subtitle ?? '';
|
|
41
|
+
const font = brand.typography.headingFont;
|
|
42
|
+
const logoSvg = brand.logo?.variants?.icon ?? '';
|
|
43
|
+
const logoSection = logoSvg
|
|
44
|
+
? `<g transform="translate(1080, 30) scale(0.8)">${stripSvgWrapper(logoSvg)}</g>`
|
|
45
|
+
: '';
|
|
46
|
+
return buildSvg(1200, 630, getGradientColors(brand), font, displayTitle, displaySub, logoSection);
|
|
47
|
+
}
|
|
48
|
+
function buildSocialTemplate(brand, title) {
|
|
49
|
+
const displayTitle = title ?? brand.name;
|
|
50
|
+
const font = brand.typography.headingFont;
|
|
51
|
+
const colors = getGradientColors(brand);
|
|
52
|
+
const logoSvg = brand.logo?.variants?.icon ?? '';
|
|
53
|
+
const logoSection = logoSvg
|
|
54
|
+
? `<g transform="translate(536, 300) scale(2)">${stripSvgWrapper(logoSvg)}</g>`
|
|
55
|
+
: '';
|
|
56
|
+
return buildSvg(1200, 1200, colors, font, displayTitle, '', logoSection);
|
|
57
|
+
}
|
|
58
|
+
export function generateOgImage(brand, template = 'default', title, subtitle) {
|
|
59
|
+
const builders = {
|
|
60
|
+
default: () => buildDefaultTemplate(brand, title, subtitle),
|
|
61
|
+
article: () => buildArticleTemplate(brand, title, subtitle),
|
|
62
|
+
social: () => buildSocialTemplate(brand, title),
|
|
63
|
+
};
|
|
64
|
+
const svg = builders[template]();
|
|
65
|
+
const dimensions = {
|
|
66
|
+
default: { width: 1200, height: 630 },
|
|
67
|
+
article: { width: 1200, height: 630 },
|
|
68
|
+
social: { width: 1200, height: 1200 },
|
|
69
|
+
};
|
|
70
|
+
return { template, svg, ...dimensions[template] };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=og-image-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"og-image-generator.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/og-image-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-system.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/shadow-system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EAGV,YAAY,EACb,MAAM,gBAAgB,CAAC;AAgDxB,wBAAgB,oBAAoB,CAClC,UAAU,SAAY,EACtB,KAAK,GAAE,UAAoB,EAC3B,MAAM,CAAC,EAAE,UAAU,GAClB,YAAY,CAOd"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { hexToHsl, hslToHex } from './color-palette.js';
|
|
2
|
+
const LEVEL_CONFIGS = {
|
|
3
|
+
none: { y: 0, blur: 0, spread: 0, opacity: 0 },
|
|
4
|
+
sm: { y: 1, blur: 2, spread: 0, opacity: 0.05 },
|
|
5
|
+
md: { y: 2, blur: 4, spread: -1, opacity: 0.08 },
|
|
6
|
+
lg: { y: 4, blur: 8, spread: -2, opacity: 0.1 },
|
|
7
|
+
xl: { y: 8, blur: 16, spread: -4, opacity: 0.12 },
|
|
8
|
+
'2xl': { y: 16, blur: 32, spread: -8, opacity: 0.15 },
|
|
9
|
+
};
|
|
10
|
+
function makeShadowColor(primaryHex, opacity) {
|
|
11
|
+
const hsl = hexToHsl(primaryHex);
|
|
12
|
+
const tinted = hslToHex(hsl.h, Math.min(hsl.s, 30), 20);
|
|
13
|
+
const r = parseInt(tinted.slice(1, 3), 16);
|
|
14
|
+
const g = parseInt(tinted.slice(3, 5), 16);
|
|
15
|
+
const b = parseInt(tinted.slice(5, 7), 16);
|
|
16
|
+
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
|
|
17
|
+
}
|
|
18
|
+
function buildLevel(cfg, primaryHex, dark) {
|
|
19
|
+
const sign = dark ? -1 : 1;
|
|
20
|
+
const adjustedOpacity = dark ? cfg.opacity * 1.5 : cfg.opacity;
|
|
21
|
+
const color = makeShadowColor(primaryHex, adjustedOpacity);
|
|
22
|
+
const oY = cfg.y * sign;
|
|
23
|
+
const cssValue = cfg.blur === 0
|
|
24
|
+
? 'none'
|
|
25
|
+
: `${cfg.y === 0 ? 0 : `${oY}px`} ${oY === 0 ? '' : `${Math.abs(oY)}px `}${cfg.blur}px ${cfg.spread}px ${color}`.trim();
|
|
26
|
+
return {
|
|
27
|
+
offsetX: 0,
|
|
28
|
+
offsetY: oY,
|
|
29
|
+
blur: cfg.blur,
|
|
30
|
+
spread: cfg.spread,
|
|
31
|
+
color,
|
|
32
|
+
opacity: adjustedOpacity,
|
|
33
|
+
cssValue,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function generateShadowSystem(primaryHex = '#6B4CE6', theme = 'light', _style) {
|
|
37
|
+
const dark = theme === 'dark';
|
|
38
|
+
const levels = {};
|
|
39
|
+
for (const [name, cfg] of Object.entries(LEVEL_CONFIGS)) {
|
|
40
|
+
levels[name] = buildLevel(cfg, primaryHex, dark);
|
|
41
|
+
}
|
|
42
|
+
return { levels };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=shadow-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-system.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/shadow-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing-scale.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/spacing-scale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqBnD,wBAAgB,oBAAoB,CAAC,QAAQ,SAAI,GAAG,YAAY,CAO/D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const SPACING_NAMES = [
|
|
2
|
+
'0',
|
|
3
|
+
'0.5',
|
|
4
|
+
'1',
|
|
5
|
+
'1.5',
|
|
6
|
+
'2',
|
|
7
|
+
'2.5',
|
|
8
|
+
'3',
|
|
9
|
+
'4',
|
|
10
|
+
'5',
|
|
11
|
+
'6',
|
|
12
|
+
'8',
|
|
13
|
+
'10',
|
|
14
|
+
'12',
|
|
15
|
+
'16',
|
|
16
|
+
'20',
|
|
17
|
+
'24',
|
|
18
|
+
];
|
|
19
|
+
export function generateSpacingScale(baseUnit = 4) {
|
|
20
|
+
const values = {};
|
|
21
|
+
for (const name of SPACING_NAMES) {
|
|
22
|
+
const multiplier = parseFloat(name);
|
|
23
|
+
values[name] = `${multiplier * baseUnit}px`;
|
|
24
|
+
}
|
|
25
|
+
return { unit: baseUnit, values };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=spacing-scale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing-scale.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/spacing-scale.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG;IACpB,GAAG;IACH,KAAK;IACL,GAAG;IACH,KAAK;IACL,GAAG;IACH,KAAK;IACL,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACL,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,QAAQ,GAAG,CAAC;IAC/C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,GAAG,QAAQ,IAAI,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { FontCategory, TypeScaleRatio, TypographySystem } from '../../types.js';
|
|
2
|
+
export declare function generateTypographySystem(headingCategory?: FontCategory, bodyCategory?: FontCategory, scaleRatio?: TypeScaleRatio, baseSize?: number): TypographySystem;
|
|
3
|
+
//# sourceMappingURL=typography-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography-system.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/typography-system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAY,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAiG/F,wBAAgB,wBAAwB,CACtC,eAAe,GAAE,YAA2B,EAC5C,YAAY,GAAE,YAAsB,EACpC,UAAU,GAAE,cAA8B,EAC1C,QAAQ,SAAK,GACZ,gBAAgB,CAyBlB"}
|