create-specfuse 0.3.2 → 0.4.1
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/design-md/templates/_schema.yaml +75 -10
- package/dist/design-md/templates/consumer-media.yaml +33 -24
- package/dist/design-md/templates/consumer-social.yaml +37 -28
- package/dist/design-md/templates/content-blog.yaml +35 -26
- package/dist/design-md/templates/content-docs.yaml +34 -24
- package/dist/design-md/templates/dashboard-analytics.yaml +33 -24
- package/dist/design-md/templates/dashboard-monitoring.yaml +33 -24
- package/dist/design-md/templates/developer-portal.yaml +37 -26
- package/dist/design-md/templates/e-commerce.yaml +38 -28
- package/dist/design-md/templates/enterprise-admin.yaml +44 -0
- package/dist/design-md/templates/form-heavy.yaml +36 -26
- package/dist/design-md/templates/internal-tool.yaml +33 -24
- package/dist/design-md/templates/marketing-corporate.yaml +36 -27
- package/dist/design-md/templates/marketing-creative.yaml +34 -25
- package/dist/design-md/templates/mobile-lifestyle.yaml +35 -26
- package/dist/design-md/templates/mobile-utility.yaml +36 -26
- package/dist/design-md/templates/saas-dashboard.yaml +33 -24
- package/dist/index.js +0 -0
- package/dist/templates/design-md-skill.d.ts.map +1 -1
- package/dist/templates/design-md-skill.js +225 -14
- package/dist/templates/design-md-skill.js.map +1 -1
- package/package.json +2 -2
- package/dist/design-md/__tests__/archetype-schema.test.d.ts +0 -2
- package/dist/design-md/__tests__/archetype-schema.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/archetype-schema.test.js +0 -60
- package/dist/design-md/__tests__/archetype-schema.test.js.map +0 -1
- package/dist/design-md/__tests__/archetypes.test.d.ts +0 -2
- package/dist/design-md/__tests__/archetypes.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/archetypes.test.js +0 -45
- package/dist/design-md/__tests__/archetypes.test.js.map +0 -1
- package/dist/design-md/__tests__/fine-tuner.test.d.ts +0 -2
- package/dist/design-md/__tests__/fine-tuner.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/fine-tuner.test.js +0 -38
- package/dist/design-md/__tests__/fine-tuner.test.js.map +0 -1
- package/dist/design-md/__tests__/index.test.d.ts +0 -2
- package/dist/design-md/__tests__/index.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/index.test.js +0 -66
- package/dist/design-md/__tests__/index.test.js.map +0 -1
- package/dist/design-md/__tests__/matcher.test.d.ts +0 -2
- package/dist/design-md/__tests__/matcher.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/matcher.test.js +0 -74
- package/dist/design-md/__tests__/matcher.test.js.map +0 -1
- package/dist/design-md/__tests__/questionnaire.test.d.ts +0 -2
- package/dist/design-md/__tests__/questionnaire.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/questionnaire.test.js +0 -57
- package/dist/design-md/__tests__/questionnaire.test.js.map +0 -1
- package/dist/design-md/__tests__/renderer.test.d.ts +0 -2
- package/dist/design-md/__tests__/renderer.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/renderer.test.js +0 -51
- package/dist/design-md/__tests__/renderer.test.js.map +0 -1
- package/dist/design-md/__tests__/types.test.d.ts +0 -2
- package/dist/design-md/__tests__/types.test.d.ts.map +0 -1
- package/dist/design-md/__tests__/types.test.js +0 -63
- package/dist/design-md/__tests__/types.test.js.map +0 -1
- package/dist/design-md/archetypes.d.ts +0 -3
- package/dist/design-md/archetypes.d.ts.map +0 -1
- package/dist/design-md/archetypes.js +0 -18
- package/dist/design-md/archetypes.js.map +0 -1
- package/dist/design-md/fine-tuner.d.ts +0 -4
- package/dist/design-md/fine-tuner.d.ts.map +0 -1
- package/dist/design-md/fine-tuner.js +0 -13
- package/dist/design-md/fine-tuner.js.map +0 -1
- package/dist/design-md/index.d.ts +0 -2
- package/dist/design-md/index.d.ts.map +0 -1
- package/dist/design-md/index.js +0 -49
- package/dist/design-md/index.js.map +0 -1
- package/dist/design-md/matcher.d.ts +0 -8
- package/dist/design-md/matcher.d.ts.map +0 -1
- package/dist/design-md/matcher.js +0 -116
- package/dist/design-md/matcher.js.map +0 -1
- package/dist/design-md/questionnaire.d.ts +0 -15
- package/dist/design-md/questionnaire.d.ts.map +0 -1
- package/dist/design-md/questionnaire.js +0 -96
- package/dist/design-md/questionnaire.js.map +0 -1
- package/dist/design-md/renderer.d.ts +0 -3
- package/dist/design-md/renderer.d.ts.map +0 -1
- package/dist/design-md/renderer.js +0 -43
- package/dist/design-md/renderer.js.map +0 -1
- package/dist/design-md/schema.d.ts +0 -69
- package/dist/design-md/schema.d.ts.map +0 -1
- package/dist/design-md/schema.js +0 -30
- package/dist/design-md/schema.js.map +0 -1
- package/dist/design-md/types.d.ts +0 -33
- package/dist/design-md/types.d.ts.map +0 -1
- package/dist/design-md/types.js +0 -2
- package/dist/design-md/types.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"questionnaire.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/questionnaire.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { QUESTIONS, } from '../questionnaire.js';
|
|
3
|
-
describe('questionnaire definitions', () => {
|
|
4
|
-
it('exports exactly 5 questions (Q1-Q5)', () => {
|
|
5
|
-
expect(QUESTIONS).toHaveLength(5);
|
|
6
|
-
});
|
|
7
|
-
it('Q1 is multi-select product type', () => {
|
|
8
|
-
const q1 = QUESTIONS[0];
|
|
9
|
-
expect(q1.id).toBe('productType');
|
|
10
|
-
expect(q1.type).toBe('checkbox');
|
|
11
|
-
expect(q1.choices.length).toBeGreaterThanOrEqual(9);
|
|
12
|
-
});
|
|
13
|
-
it('Q2 is single-select audience', () => {
|
|
14
|
-
const q2 = QUESTIONS[1];
|
|
15
|
-
expect(q2.id).toBe('audience');
|
|
16
|
-
expect(q2.type).toBe('select');
|
|
17
|
-
expect(q2.choices.length).toBeGreaterThanOrEqual(3);
|
|
18
|
-
});
|
|
19
|
-
it('Q3 is multi-select mood keywords', () => {
|
|
20
|
-
const q3 = QUESTIONS[2];
|
|
21
|
-
expect(q3.id).toBe('mood');
|
|
22
|
-
expect(q3.type).toBe('checkbox');
|
|
23
|
-
expect(q3.choices.length).toBeGreaterThanOrEqual(4);
|
|
24
|
-
});
|
|
25
|
-
it('Q4 is single-select density preference', () => {
|
|
26
|
-
const q4 = QUESTIONS[3];
|
|
27
|
-
expect(q4.id).toBe('density');
|
|
28
|
-
expect(q4.type).toBe('select');
|
|
29
|
-
expect(q4.choices.length).toBeGreaterThanOrEqual(3);
|
|
30
|
-
});
|
|
31
|
-
it('Q5 is optional text input for reference product', () => {
|
|
32
|
-
const q5 = QUESTIONS[4];
|
|
33
|
-
expect(q5.id).toBe('reference');
|
|
34
|
-
expect(q5.type).toBe('input');
|
|
35
|
-
expect(q5.required).toBe(false);
|
|
36
|
-
});
|
|
37
|
-
it('all questions have message and id', () => {
|
|
38
|
-
for (const q of QUESTIONS) {
|
|
39
|
-
expect(q.id).toBeTruthy();
|
|
40
|
-
expect(q.message).toBeTruthy();
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
it('Q1 choices cover all archetype categories', () => {
|
|
44
|
-
const q1 = QUESTIONS[0];
|
|
45
|
-
const values = q1.choices.map((c) => c.value);
|
|
46
|
-
expect(values).toContain('internal-tool');
|
|
47
|
-
expect(values).toContain('dashboard');
|
|
48
|
-
expect(values).toContain('consumer');
|
|
49
|
-
expect(values).toContain('developer');
|
|
50
|
-
expect(values).toContain('mobile');
|
|
51
|
-
expect(values).toContain('e-commerce');
|
|
52
|
-
expect(values).toContain('marketing');
|
|
53
|
-
expect(values).toContain('form-heavy');
|
|
54
|
-
expect(values).toContain('content');
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
//# sourceMappingURL=questionnaire.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"questionnaire.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/questionnaire.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/renderer.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { renderDesignMd } from '../renderer.js';
|
|
3
|
-
import { loadArchetypes } from '../archetypes.js';
|
|
4
|
-
import { parse as parseYaml } from 'yaml';
|
|
5
|
-
const archetypes = loadArchetypes();
|
|
6
|
-
const testArchetype = archetypes[0];
|
|
7
|
-
const testVector = { colorTemp: 2, lightness: 3, density: 2, borderRadius: 3, tone: 2 };
|
|
8
|
-
describe('renderDesignMd()', () => {
|
|
9
|
-
it('output starts and ends YAML front matter with --- delimiters', () => {
|
|
10
|
-
const output = renderDesignMd(testArchetype, testVector);
|
|
11
|
-
const lines = output.split('\n');
|
|
12
|
-
expect(lines[0]).toBe('---');
|
|
13
|
-
const secondDelimiter = lines.indexOf('---', 1);
|
|
14
|
-
expect(secondDelimiter).toBeGreaterThan(1);
|
|
15
|
-
});
|
|
16
|
-
it('YAML front matter contains tokens key', () => {
|
|
17
|
-
const output = renderDesignMd(testArchetype, testVector);
|
|
18
|
-
const yamlBlock = output.split('---')[1];
|
|
19
|
-
const parsed = parseYaml(yamlBlock);
|
|
20
|
-
expect(parsed).toHaveProperty('tokens');
|
|
21
|
-
});
|
|
22
|
-
it('YAML front matter contains archetype metadata', () => {
|
|
23
|
-
const output = renderDesignMd(testArchetype, testVector);
|
|
24
|
-
const yamlBlock = output.split('---')[1];
|
|
25
|
-
const parsed = parseYaml(yamlBlock);
|
|
26
|
-
expect(parsed).toHaveProperty('archetype');
|
|
27
|
-
expect(parsed.archetype).toBe(testArchetype.id);
|
|
28
|
-
});
|
|
29
|
-
it('YAML front matter contains dimensions', () => {
|
|
30
|
-
const output = renderDesignMd(testArchetype, testVector);
|
|
31
|
-
const yamlBlock = output.split('---')[1];
|
|
32
|
-
const parsed = parseYaml(yamlBlock);
|
|
33
|
-
expect(parsed).toHaveProperty('dimensions');
|
|
34
|
-
expect(parsed.dimensions).toEqual(testVector);
|
|
35
|
-
});
|
|
36
|
-
it('markdown body contains required sections', () => {
|
|
37
|
-
const output = renderDesignMd(testArchetype, testVector);
|
|
38
|
-
const parts = output.split('---');
|
|
39
|
-
const markdown = parts.slice(2).join('---');
|
|
40
|
-
expect(markdown).toContain('# Style Direction');
|
|
41
|
-
expect(markdown).toContain('## Color Palette');
|
|
42
|
-
expect(markdown).toContain('## Typography');
|
|
43
|
-
expect(markdown).toContain('## Spacing');
|
|
44
|
-
expect(markdown).toContain('## Components');
|
|
45
|
-
});
|
|
46
|
-
it('output is valid non-empty string', () => {
|
|
47
|
-
const output = renderDesignMd(testArchetype, testVector);
|
|
48
|
-
expect(output.length).toBeGreaterThan(100);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=renderer.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/renderer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/types.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { describe, it, expectTypeOf } from 'vitest';
|
|
2
|
-
describe('DimensionVector type constraints', () => {
|
|
3
|
-
it('accepts valid dimension values (1-5)', () => {
|
|
4
|
-
const v = {
|
|
5
|
-
colorTemp: 1,
|
|
6
|
-
lightness: 2,
|
|
7
|
-
density: 3,
|
|
8
|
-
borderRadius: 4,
|
|
9
|
-
tone: 5,
|
|
10
|
-
};
|
|
11
|
-
expectTypeOf(v.colorTemp).toEqualTypeOf();
|
|
12
|
-
expectTypeOf(v.lightness).toEqualTypeOf();
|
|
13
|
-
expectTypeOf(v.density).toEqualTypeOf();
|
|
14
|
-
expectTypeOf(v.borderRadius).toEqualTypeOf();
|
|
15
|
-
expectTypeOf(v.tone).toEqualTypeOf();
|
|
16
|
-
});
|
|
17
|
-
it('has exactly 5 dimension keys', () => {
|
|
18
|
-
expectTypeOf().toEqualTypeOf();
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
describe('ArchetypeCategory type constraints', () => {
|
|
22
|
-
it('is an exhaustive union of 9 categories', () => {
|
|
23
|
-
expectTypeOf().toEqualTypeOf();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
describe('Archetype type structure', () => {
|
|
27
|
-
it('has required fields with correct types', () => {
|
|
28
|
-
expectTypeOf().toHaveProperty('id');
|
|
29
|
-
expectTypeOf().toHaveProperty('name');
|
|
30
|
-
expectTypeOf().toHaveProperty('category');
|
|
31
|
-
expectTypeOf().toHaveProperty('dimensions');
|
|
32
|
-
expectTypeOf().toHaveProperty('anchors');
|
|
33
|
-
expectTypeOf().toHaveProperty('template');
|
|
34
|
-
expectTypeOf().toBeString();
|
|
35
|
-
expectTypeOf().toBeString();
|
|
36
|
-
expectTypeOf().toEqualTypeOf();
|
|
37
|
-
expectTypeOf().toEqualTypeOf();
|
|
38
|
-
expectTypeOf().toBeString();
|
|
39
|
-
});
|
|
40
|
-
it('anchors has primary and auxiliary fields', () => {
|
|
41
|
-
expectTypeOf().toEqualTypeOf();
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
describe('QuestionnaireAnswers type structure', () => {
|
|
45
|
-
it('has correct field types', () => {
|
|
46
|
-
expectTypeOf().toEqualTypeOf();
|
|
47
|
-
expectTypeOf().toBeString();
|
|
48
|
-
expectTypeOf().toBeString();
|
|
49
|
-
expectTypeOf().toBeString();
|
|
50
|
-
expectTypeOf().toEqualTypeOf();
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
describe('DesignMdConfig type structure', () => {
|
|
54
|
-
it('has archetype and vector fields', () => {
|
|
55
|
-
expectTypeOf().toHaveProperty('archetype');
|
|
56
|
-
expectTypeOf().toHaveProperty('finalVector');
|
|
57
|
-
expectTypeOf().toHaveProperty('answers');
|
|
58
|
-
expectTypeOf().toEqualTypeOf();
|
|
59
|
-
expectTypeOf().toEqualTypeOf();
|
|
60
|
-
expectTypeOf().toEqualTypeOf();
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
//# sourceMappingURL=types.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/types.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AASpD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAoB;YACzB,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,YAAY,EAAE,CAAC;YACf,IAAI,EAAE,CAAC;SACR,CAAC;QACF,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,EAAqB,CAAC;QAC7D,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,EAAqB,CAAC;QAC7D,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAqB,CAAC;QAC3D,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,aAAa,EAAqB,CAAC;QAChE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAqB,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,YAAY,EAAyB,CAAC,aAAa,EAEhD,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,YAAY,EAAqB,CAAC,aAAa,EAU5C,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,YAAY,EAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,YAAY,EAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjD,YAAY,EAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrD,YAAY,EAAa,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACvD,YAAY,EAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpD,YAAY,EAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAErD,YAAY,EAAmB,CAAC,UAAU,EAAE,CAAC;QAC7C,YAAY,EAAqB,CAAC,UAAU,EAAE,CAAC;QAC/C,YAAY,EAAyB,CAAC,aAAa,EAAqB,CAAC;QACzE,YAAY,EAA2B,CAAC,aAAa,EAAmB,CAAC;QACzE,YAAY,EAAyB,CAAC,UAAU,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,YAAY,EAAwB,CAAC,aAAa,EAG9C,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,YAAY,EAAuC,CAAC,aAAa,EAAY,CAAC;QAC9E,YAAY,EAAoC,CAAC,UAAU,EAAE,CAAC;QAC9D,YAAY,EAAgC,CAAC,UAAU,EAAE,CAAC;QAC1D,YAAY,EAAmC,CAAC,UAAU,EAAE,CAAC;QAC7D,YAAY,EAAqC,CAAC,aAAa,EAAiB,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,YAAY,EAAkB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC3D,YAAY,EAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC7D,YAAY,EAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEzD,YAAY,EAA+B,CAAC,aAAa,EAAa,CAAC;QACvE,YAAY,EAAiC,CAAC,aAAa,EAAmB,CAAC;QAC/E,YAAY,EAA6B,CAAC,aAAa,EAAwB,CAAC;IAClF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archetypes.d.ts","sourceRoot":"","sources":["../../src/design-md/archetypes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAgB5C"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { readFileSync, readdirSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { parse as parseYaml } from 'yaml';
|
|
4
|
-
import { ArchetypeSchema } from './schema.js';
|
|
5
|
-
const TEMPLATES_DIR = join(import.meta.dirname, 'templates');
|
|
6
|
-
export function loadArchetypes() {
|
|
7
|
-
const files = readdirSync(TEMPLATES_DIR).filter((f) => f.endsWith('.yaml') && !f.startsWith('_'));
|
|
8
|
-
return files.map((f) => {
|
|
9
|
-
const raw = readFileSync(join(TEMPLATES_DIR, f), 'utf-8');
|
|
10
|
-
const parsed = parseYaml(raw);
|
|
11
|
-
const result = ArchetypeSchema.safeParse(parsed);
|
|
12
|
-
if (!result.success) {
|
|
13
|
-
throw new Error(`Invalid archetype ${f}: ${result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join(', ')}`);
|
|
14
|
-
}
|
|
15
|
-
return result.data;
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=archetypes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archetypes.js","sourceRoot":"","sources":["../../src/design-md/archetypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAE7D,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CACjD,CAAC;IAEF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,qBAAqB,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5G,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAiB,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { DimensionVector } from './types.js';
|
|
2
|
-
export type DimensionOverrides = Partial<Record<keyof DimensionVector, number>>;
|
|
3
|
-
export declare function applyOverrides(base: DimensionVector, overrides: DimensionOverrides): DimensionVector;
|
|
4
|
-
//# sourceMappingURL=fine-tuner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fine-tuner.d.ts","sourceRoot":"","sources":["../../src/design-md/fine-tuner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhF,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,GAAG,eAAe,CAYpG"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function applyOverrides(base, overrides) {
|
|
2
|
-
const result = { ...base };
|
|
3
|
-
for (const [key, value] of Object.entries(overrides)) {
|
|
4
|
-
if (value === undefined)
|
|
5
|
-
continue;
|
|
6
|
-
if (!Number.isInteger(value) || value < 1 || value > 5) {
|
|
7
|
-
throw new Error(`Invalid dimension value for ${key}: ${value} (must be integer 1-5)`);
|
|
8
|
-
}
|
|
9
|
-
result[key] = value;
|
|
10
|
-
}
|
|
11
|
-
return result;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=fine-tuner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fine-tuner.js","sourceRoot":"","sources":["../../src/design-md/fine-tuner.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,cAAc,CAAC,IAAqB,EAAE,SAA6B;IACjF,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,KAAK,KAAK,wBAAwB,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,GAA4B,CAAC,GAAG,KAAuB,CAAC;IACjE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/design-md/index.ts"],"names":[],"mappings":"AASA,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+ChF"}
|
package/dist/design-md/index.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { existsSync, writeFileSync, copyFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { runQuestionnaire } from './questionnaire.js';
|
|
4
|
-
import { matchArchetype } from './matcher.js';
|
|
5
|
-
import { deriveVector } from './matcher.js';
|
|
6
|
-
import { applyOverrides } from './fine-tuner.js';
|
|
7
|
-
import { renderDesignMd } from './renderer.js';
|
|
8
|
-
export async function generateDesignMd(targetDir) {
|
|
9
|
-
const { confirm, select, number } = await import('@inquirer/prompts');
|
|
10
|
-
const outputPath = join(targetDir, 'DESIGN.md');
|
|
11
|
-
if (existsSync(outputPath)) {
|
|
12
|
-
const overwrite = await confirm({ message: 'DESIGN.md already exists. Overwrite?' });
|
|
13
|
-
if (!overwrite)
|
|
14
|
-
return null;
|
|
15
|
-
copyFileSync(outputPath, join(targetDir, 'DESIGN.md.bak'));
|
|
16
|
-
}
|
|
17
|
-
const answers = await runQuestionnaire();
|
|
18
|
-
const results = matchArchetype(answers);
|
|
19
|
-
const top = results[0];
|
|
20
|
-
const accepted = await confirm({
|
|
21
|
-
message: `Best match: ${top.archetype.name} (distance: ${top.distance.toFixed(2)}). Accept?`,
|
|
22
|
-
});
|
|
23
|
-
if (!accepted)
|
|
24
|
-
return null;
|
|
25
|
-
const baseVector = deriveVector(answers);
|
|
26
|
-
const action = await select({
|
|
27
|
-
message: 'Fine-tune dimensions?',
|
|
28
|
-
choices: [
|
|
29
|
-
{ value: 'accept', name: 'Accept as-is' },
|
|
30
|
-
{ value: 'tune', name: 'Adjust dimensions manually' },
|
|
31
|
-
],
|
|
32
|
-
});
|
|
33
|
-
let finalVector = baseVector;
|
|
34
|
-
if (action === 'tune') {
|
|
35
|
-
const overrides = {};
|
|
36
|
-
for (const key of Object.keys(baseVector)) {
|
|
37
|
-
const val = await number({
|
|
38
|
-
message: `${key} (current: ${baseVector[key]}, 1-5, Enter to keep):`,
|
|
39
|
-
});
|
|
40
|
-
if (val !== undefined)
|
|
41
|
-
overrides[key] = val;
|
|
42
|
-
}
|
|
43
|
-
finalVector = applyOverrides(baseVector, overrides);
|
|
44
|
-
}
|
|
45
|
-
const content = renderDesignMd(top.archetype, finalVector);
|
|
46
|
-
writeFileSync(outputPath, content, 'utf-8');
|
|
47
|
-
return outputPath;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/design-md/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAA2B,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IACtD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEhD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEvB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,OAAO,EAAE,eAAe,GAAG,CAAC,SAAS,CAAC,IAAI,eAAe,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;KAC7F,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE;YACzC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE;SACtD;KACF,CAAC,CAAC;IAEH,IAAI,WAAW,GAAoB,UAAU,CAAC;IAE9C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,SAAS,GAAuB,EAAE,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAA8B,EAAE,CAAC;YACvE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC;gBACvB,OAAO,EAAE,GAAG,GAAG,cAAc,UAAU,CAAC,GAAG,CAAC,wBAAwB;aACrE,CAAC,CAAC;YACH,IAAI,GAAG,KAAK,SAAS;gBAAE,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC9C,CAAC;QACD,WAAW,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3D,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Archetype, DimensionVector, QuestionnaireAnswers } from './types.js';
|
|
2
|
-
export interface MatchResult {
|
|
3
|
-
archetype: Archetype;
|
|
4
|
-
distance: number;
|
|
5
|
-
}
|
|
6
|
-
export declare function deriveVector(answers: QuestionnaireAnswers): DimensionVector;
|
|
7
|
-
export declare function matchArchetype(answers: QuestionnaireAnswers): MatchResult[];
|
|
8
|
-
//# sourceMappingURL=matcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/design-md/matcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAkB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEnG,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2CD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe,CA4D3E;AAYD,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,EAAE,CAe3E"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { loadArchetypes } from './archetypes.js';
|
|
2
|
-
const MOOD_MAP = {
|
|
3
|
-
clean: { lightness: 4, tone: 2 },
|
|
4
|
-
playful: { colorTemp: 4, tone: 5, borderRadius: 4 },
|
|
5
|
-
serious: { colorTemp: 2, tone: 1, borderRadius: 2 },
|
|
6
|
-
warm: { colorTemp: 4, lightness: 3, tone: 3 },
|
|
7
|
-
bold: { colorTemp: 3, tone: 4, lightness: 2 },
|
|
8
|
-
calm: { colorTemp: 3, lightness: 4, tone: 2 },
|
|
9
|
-
dark: { colorTemp: 1, lightness: 1, tone: 1 },
|
|
10
|
-
luxurious: { colorTemp: 3, lightness: 2, borderRadius: 3, tone: 3 },
|
|
11
|
-
};
|
|
12
|
-
const AUDIENCE_MAP = {
|
|
13
|
-
developers: { density: 1, borderRadius: 2, tone: 1 },
|
|
14
|
-
business: { density: 2, tone: 2, lightness: 3 },
|
|
15
|
-
general: { density: 3, borderRadius: 4, tone: 4 },
|
|
16
|
-
designers: { lightness: 4, borderRadius: 4, tone: 3 },
|
|
17
|
-
enterprise: { density: 2, tone: 1, borderRadius: 2 },
|
|
18
|
-
};
|
|
19
|
-
const DENSITY_MAP = {
|
|
20
|
-
compact: 1,
|
|
21
|
-
balanced: 3,
|
|
22
|
-
spacious: 5,
|
|
23
|
-
};
|
|
24
|
-
const CATEGORY_MAP = {
|
|
25
|
-
'internal-tool': { colorTemp: 2, lightness: 3, density: 1, borderRadius: 2, tone: 1 },
|
|
26
|
-
dashboard: { colorTemp: 1, lightness: 1, density: 1, borderRadius: 2, tone: 1 },
|
|
27
|
-
consumer: { colorTemp: 4, lightness: 4, density: 3, borderRadius: 4, tone: 4 },
|
|
28
|
-
developer: { colorTemp: 2, lightness: 2, density: 2, borderRadius: 2, tone: 1 },
|
|
29
|
-
mobile: { colorTemp: 3, lightness: 4, density: 3, borderRadius: 5, tone: 4 },
|
|
30
|
-
'e-commerce': { colorTemp: 3, lightness: 4, density: 2, borderRadius: 3, tone: 3 },
|
|
31
|
-
marketing: { colorTemp: 4, lightness: 4, density: 4, borderRadius: 4, tone: 5 },
|
|
32
|
-
'form-heavy': { colorTemp: 2, lightness: 3, density: 2, borderRadius: 2, tone: 2 },
|
|
33
|
-
content: { colorTemp: 3, lightness: 4, density: 3, borderRadius: 3, tone: 3 },
|
|
34
|
-
};
|
|
35
|
-
function clamp(val) {
|
|
36
|
-
return Math.max(1, Math.min(5, Math.round(val)));
|
|
37
|
-
}
|
|
38
|
-
export function deriveVector(answers) {
|
|
39
|
-
const accumulator = { colorTemp: 0, lightness: 0, density: 0, borderRadius: 0, tone: 0 };
|
|
40
|
-
const weights = { colorTemp: 0, lightness: 0, density: 0, borderRadius: 0, tone: 0 };
|
|
41
|
-
// Q1: product type (primary 0.7, secondary 0.3)
|
|
42
|
-
const primary = answers.productType[0];
|
|
43
|
-
const secondaries = answers.productType.slice(1);
|
|
44
|
-
const primaryVec = CATEGORY_MAP[primary];
|
|
45
|
-
if (primaryVec) {
|
|
46
|
-
for (const [k, v] of Object.entries(primaryVec)) {
|
|
47
|
-
const key = k;
|
|
48
|
-
accumulator[key] += v * 0.7;
|
|
49
|
-
weights[key] += 0.7;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
const secWeight = secondaries.length > 0 ? 0.3 / secondaries.length : 0;
|
|
53
|
-
for (const sec of secondaries) {
|
|
54
|
-
const secVec = CATEGORY_MAP[sec];
|
|
55
|
-
if (secVec) {
|
|
56
|
-
for (const [k, v] of Object.entries(secVec)) {
|
|
57
|
-
const key = k;
|
|
58
|
-
accumulator[key] += v * secWeight;
|
|
59
|
-
weights[key] += secWeight;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// Q2: audience
|
|
64
|
-
const audienceVec = AUDIENCE_MAP[answers.audience];
|
|
65
|
-
if (audienceVec) {
|
|
66
|
-
for (const [k, v] of Object.entries(audienceVec)) {
|
|
67
|
-
const key = k;
|
|
68
|
-
accumulator[key] += v * 0.5;
|
|
69
|
-
weights[key] += 0.5;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Q3: mood
|
|
73
|
-
const moodVec = MOOD_MAP[answers.mood];
|
|
74
|
-
if (moodVec) {
|
|
75
|
-
for (const [k, v] of Object.entries(moodVec)) {
|
|
76
|
-
const key = k;
|
|
77
|
-
accumulator[key] += v * 0.6;
|
|
78
|
-
weights[key] += 0.6;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Q4: density (direct mapping)
|
|
82
|
-
const densityVal = DENSITY_MAP[answers.density] ?? 3;
|
|
83
|
-
accumulator.density += densityVal * 0.8;
|
|
84
|
-
weights.density += 0.8;
|
|
85
|
-
// Compute weighted average for each dimension
|
|
86
|
-
return {
|
|
87
|
-
colorTemp: clamp(weights.colorTemp > 0 ? accumulator.colorTemp / weights.colorTemp : 3),
|
|
88
|
-
lightness: clamp(weights.lightness > 0 ? accumulator.lightness / weights.lightness : 3),
|
|
89
|
-
density: clamp(weights.density > 0 ? accumulator.density / weights.density : 3),
|
|
90
|
-
borderRadius: clamp(weights.borderRadius > 0 ? accumulator.borderRadius / weights.borderRadius : 3),
|
|
91
|
-
tone: clamp(weights.tone > 0 ? accumulator.tone / weights.tone : 3),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
function euclideanDistance(a, b) {
|
|
95
|
-
return Math.sqrt((a.colorTemp - b.colorTemp) ** 2 +
|
|
96
|
-
(a.lightness - b.lightness) ** 2 +
|
|
97
|
-
(a.density - b.density) ** 2 +
|
|
98
|
-
(a.borderRadius - b.borderRadius) ** 2 +
|
|
99
|
-
(a.tone - b.tone) ** 2);
|
|
100
|
-
}
|
|
101
|
-
export function matchArchetype(answers) {
|
|
102
|
-
const targetVector = deriveVector(answers);
|
|
103
|
-
const archetypes = loadArchetypes();
|
|
104
|
-
const primaryCategory = answers.productType[0];
|
|
105
|
-
const CATEGORY_BONUS = 0.2;
|
|
106
|
-
return archetypes
|
|
107
|
-
.map((archetype) => {
|
|
108
|
-
let distance = euclideanDistance(targetVector, archetype.dimensions);
|
|
109
|
-
if (archetype.category === primaryCategory) {
|
|
110
|
-
distance *= 1 - CATEGORY_BONUS;
|
|
111
|
-
}
|
|
112
|
-
return { archetype, distance };
|
|
113
|
-
})
|
|
114
|
-
.sort((a, b) => a.distance - b.distance);
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=matcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/design-md/matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { QuestionnaireAnswers } from './types.js';
|
|
2
|
-
export interface QuestionChoice {
|
|
3
|
-
value: string;
|
|
4
|
-
name: string;
|
|
5
|
-
}
|
|
6
|
-
export interface QuestionDefinition {
|
|
7
|
-
id: keyof QuestionnaireAnswers | 'productType' | 'audience' | 'mood' | 'density' | 'reference';
|
|
8
|
-
type: 'checkbox' | 'select' | 'input';
|
|
9
|
-
message: string;
|
|
10
|
-
choices: QuestionChoice[];
|
|
11
|
-
required: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare const QUESTIONS: QuestionDefinition[];
|
|
14
|
-
export declare function runQuestionnaire(): Promise<QuestionnaireAnswers>;
|
|
15
|
-
//# sourceMappingURL=questionnaire.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"questionnaire.d.ts","sourceRoot":"","sources":["../../src/design-md/questionnaire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,oBAAoB,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IAC/F,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAiEzC,CAAC;AAEF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAkCtE"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
export const QUESTIONS = [
|
|
2
|
-
{
|
|
3
|
-
id: 'productType',
|
|
4
|
-
type: 'checkbox',
|
|
5
|
-
message: 'What type of product are you building? (first = primary, rest = secondary)',
|
|
6
|
-
required: true,
|
|
7
|
-
choices: [
|
|
8
|
-
{ value: 'internal-tool', name: 'Internal Tool' },
|
|
9
|
-
{ value: 'dashboard', name: 'Dashboard / Analytics' },
|
|
10
|
-
{ value: 'consumer', name: 'Consumer App' },
|
|
11
|
-
{ value: 'developer', name: 'Developer Tool / API' },
|
|
12
|
-
{ value: 'mobile', name: 'Mobile App' },
|
|
13
|
-
{ value: 'e-commerce', name: 'E-Commerce' },
|
|
14
|
-
{ value: 'marketing', name: 'Marketing / Landing' },
|
|
15
|
-
{ value: 'form-heavy', name: 'Form-Heavy / Workflow' },
|
|
16
|
-
{ value: 'content', name: 'Content / Documentation' },
|
|
17
|
-
],
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
id: 'audience',
|
|
21
|
-
type: 'select',
|
|
22
|
-
message: 'Who is the primary audience?',
|
|
23
|
-
required: true,
|
|
24
|
-
choices: [
|
|
25
|
-
{ value: 'developers', name: 'Developers / Engineers' },
|
|
26
|
-
{ value: 'business', name: 'Business Users / Analysts' },
|
|
27
|
-
{ value: 'general', name: 'General Public' },
|
|
28
|
-
{ value: 'designers', name: 'Designers / Creatives' },
|
|
29
|
-
{ value: 'enterprise', name: 'Enterprise / Compliance-sensitive' },
|
|
30
|
-
],
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
id: 'mood',
|
|
34
|
-
type: 'checkbox',
|
|
35
|
-
message: 'Select mood keywords that describe the feel you want:',
|
|
36
|
-
required: true,
|
|
37
|
-
choices: [
|
|
38
|
-
{ value: 'clean', name: 'Clean / Minimal' },
|
|
39
|
-
{ value: 'playful', name: 'Playful / Fun' },
|
|
40
|
-
{ value: 'serious', name: 'Serious / Professional' },
|
|
41
|
-
{ value: 'warm', name: 'Warm / Friendly' },
|
|
42
|
-
{ value: 'bold', name: 'Bold / Energetic' },
|
|
43
|
-
{ value: 'calm', name: 'Calm / Neutral' },
|
|
44
|
-
{ value: 'dark', name: 'Dark / Techy' },
|
|
45
|
-
{ value: 'luxurious', name: 'Luxurious / Premium' },
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: 'density',
|
|
50
|
-
type: 'select',
|
|
51
|
-
message: 'How dense should the interface be?',
|
|
52
|
-
required: true,
|
|
53
|
-
choices: [
|
|
54
|
-
{ value: 'compact', name: 'Compact — dense tables, small spacing' },
|
|
55
|
-
{ value: 'balanced', name: 'Balanced — moderate spacing' },
|
|
56
|
-
{ value: 'spacious', name: 'Spacious — generous whitespace' },
|
|
57
|
-
],
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
id: 'reference',
|
|
61
|
-
type: 'input',
|
|
62
|
-
message: 'Any reference product or site for style inspiration? (optional, press Enter to skip)',
|
|
63
|
-
required: false,
|
|
64
|
-
choices: [],
|
|
65
|
-
},
|
|
66
|
-
];
|
|
67
|
-
export async function runQuestionnaire() {
|
|
68
|
-
const { checkbox, select, input } = await import('@inquirer/prompts');
|
|
69
|
-
const productType = await checkbox({
|
|
70
|
-
message: QUESTIONS[0].message,
|
|
71
|
-
choices: QUESTIONS[0].choices,
|
|
72
|
-
});
|
|
73
|
-
const audience = await select({
|
|
74
|
-
message: QUESTIONS[1].message,
|
|
75
|
-
choices: QUESTIONS[1].choices,
|
|
76
|
-
});
|
|
77
|
-
const mood = await select({
|
|
78
|
-
message: QUESTIONS[2].message,
|
|
79
|
-
choices: QUESTIONS[2].choices,
|
|
80
|
-
});
|
|
81
|
-
const density = await select({
|
|
82
|
-
message: QUESTIONS[3].message,
|
|
83
|
-
choices: QUESTIONS[3].choices,
|
|
84
|
-
});
|
|
85
|
-
const reference = await input({
|
|
86
|
-
message: QUESTIONS[4].message,
|
|
87
|
-
});
|
|
88
|
-
return {
|
|
89
|
-
productType,
|
|
90
|
-
audience,
|
|
91
|
-
mood,
|
|
92
|
-
density,
|
|
93
|
-
reference: reference || null,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=questionnaire.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"questionnaire.js","sourceRoot":"","sources":["../../src/design-md/questionnaire.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/design-md/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7D,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CA4CpF"}
|