@calibrate-ds/core 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/__tests__/compare-components.test.js +146 -0
  2. package/dist/__tests__/compare-components.test.js.map +1 -1
  3. package/dist/__tests__/compare-tokens.test.d.ts +2 -0
  4. package/dist/__tests__/compare-tokens.test.d.ts.map +1 -0
  5. package/dist/__tests__/compare-tokens.test.js +76 -0
  6. package/dist/__tests__/compare-tokens.test.js.map +1 -0
  7. package/dist/diff/compare-components.d.ts.map +1 -1
  8. package/dist/diff/compare-components.js +168 -19
  9. package/dist/diff/compare-components.js.map +1 -1
  10. package/dist/diff/compare-tokens.d.ts.map +1 -1
  11. package/dist/diff/compare-tokens.js +76 -21
  12. package/dist/diff/compare-tokens.js.map +1 -1
  13. package/dist/diff/format-diff-summary.d.ts.map +1 -1
  14. package/dist/diff/format-diff-summary.js +18 -2
  15. package/dist/diff/format-diff-summary.js.map +1 -1
  16. package/dist/docs/generate-component-stories.d.ts.map +1 -1
  17. package/dist/docs/generate-component-stories.js +21 -0
  18. package/dist/docs/generate-component-stories.js.map +1 -1
  19. package/dist/doctor/check-component.d.ts.map +1 -1
  20. package/dist/doctor/check-component.js +18 -0
  21. package/dist/doctor/check-component.js.map +1 -1
  22. package/dist/icons/enrich-bitmap-assets.d.ts +14 -0
  23. package/dist/icons/enrich-bitmap-assets.d.ts.map +1 -0
  24. package/dist/icons/enrich-bitmap-assets.js +100 -0
  25. package/dist/icons/enrich-bitmap-assets.js.map +1 -0
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/normalizer/classify-group-intent.d.ts +32 -0
  31. package/dist/normalizer/classify-group-intent.d.ts.map +1 -0
  32. package/dist/normalizer/classify-group-intent.js +76 -0
  33. package/dist/normalizer/classify-group-intent.js.map +1 -0
  34. package/dist/normalizer/index.d.ts +2 -0
  35. package/dist/normalizer/index.d.ts.map +1 -1
  36. package/dist/normalizer/index.js +2 -0
  37. package/dist/normalizer/index.js.map +1 -1
  38. package/dist/normalizer/instance-resolver.d.ts.map +1 -1
  39. package/dist/normalizer/instance-resolver.js +17 -1
  40. package/dist/normalizer/instance-resolver.js.map +1 -1
  41. package/dist/normalizer/normalize-components.d.ts.map +1 -1
  42. package/dist/normalizer/normalize-components.js +23 -3
  43. package/dist/normalizer/normalize-components.js.map +1 -1
  44. package/dist/normalizer/sanitize-property-names.d.ts +27 -0
  45. package/dist/normalizer/sanitize-property-names.d.ts.map +1 -0
  46. package/dist/normalizer/sanitize-property-names.js +163 -0
  47. package/dist/normalizer/sanitize-property-names.js.map +1 -0
  48. package/dist/prompt/generate-component-prompt.d.ts.map +1 -1
  49. package/dist/prompt/generate-component-prompt.js +5 -2
  50. package/dist/prompt/generate-component-prompt.js.map +1 -1
  51. package/package.json +3 -3
@@ -1,17 +1,74 @@
1
- function hashToken(t) {
2
- return `${t.name}:${t.value}:${t.type}`;
1
+ /** Stable identity for a DesignToken — id when available, otherwise the name. */
2
+ function tokenKey(t) {
3
+ return t.id || t.name;
3
4
  }
4
- function hashCollection(c) {
5
- return JSON.stringify({
6
- name: c.name,
7
- tokens: (c.tokens || []).map(hashToken).sort()
8
- });
5
+ /** Renders a token value for diff output. Resolves the common Figma-RGB object shape into hex. */
6
+ function formatTokenValue(value) {
7
+ if (value === null || value === undefined)
8
+ return "(unset)";
9
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
10
+ return String(value);
11
+ }
12
+ if (typeof value === "object") {
13
+ const v = value;
14
+ if (typeof v.r === "number" && typeof v.g === "number" && typeof v.b === "number") {
15
+ const toHex = (c) => {
16
+ const h = Math.round(c * 255).toString(16);
17
+ return h.length === 1 ? "0" + h : h;
18
+ };
19
+ const a = typeof v.a === "number" ? v.a : 1;
20
+ const base = `#${toHex(v.r)}${toHex(v.g)}${toHex(v.b)}`.toUpperCase();
21
+ return a < 1 ? `${base}@${a}` : base;
22
+ }
23
+ try {
24
+ return JSON.stringify(v);
25
+ }
26
+ catch {
27
+ return "(opaque)";
28
+ }
29
+ }
30
+ return String(value);
31
+ }
32
+ /** Generates structured per-token detail lines for a modified collection. */
33
+ function diffCollectionDetails(prev, curr) {
34
+ const details = [];
35
+ const pTokens = new Map((prev.tokens || []).map(t => [tokenKey(t), t]));
36
+ const cTokens = new Map((curr.tokens || []).map(t => [tokenKey(t), t]));
37
+ for (const [key, c] of cTokens) {
38
+ const p = pTokens.get(key);
39
+ if (!p) {
40
+ details.push(`+ ${c.name}: ${formatTokenValue(c.value)}`);
41
+ continue;
42
+ }
43
+ // An aliasTargetId swap is exactly the "brand-800 -> brand-900" reference change
44
+ // that the diff used to hide behind a resolved-hex compare.
45
+ if (p.aliasTargetId !== c.aliasTargetId) {
46
+ const pAlias = p.aliasTargetId ?? "(literal)";
47
+ const cAlias = c.aliasTargetId ?? "(literal)";
48
+ details.push(`~ ${c.name}: alias target changed (${pAlias} -> ${cAlias})`);
49
+ continue;
50
+ }
51
+ if (p.type !== c.type) {
52
+ details.push(`~ ${c.name}: type changed (${p.type} -> ${c.type})`);
53
+ continue;
54
+ }
55
+ const pVal = formatTokenValue(p.value);
56
+ const cVal = formatTokenValue(c.value);
57
+ if (pVal !== cVal) {
58
+ details.push(`~ ${c.name}: ${pVal} -> ${cVal}`);
59
+ }
60
+ }
61
+ for (const [key, p] of pTokens) {
62
+ if (!cTokens.has(key)) {
63
+ details.push(`- ${p.name}`);
64
+ }
65
+ }
66
+ return details;
9
67
  }
10
68
  export function compareTokens(previous, current) {
11
69
  const changes = [];
12
70
  const prevMap = new Map(previous.map(c => [c.id, c]));
13
71
  const currMap = new Map(current.map(c => [c.id, c]));
14
- // Added and Modified
15
72
  for (const curr of current) {
16
73
  const prev = prevMap.get(curr.id);
17
74
  if (!prev) {
@@ -21,22 +78,20 @@ export function compareTokens(previous, current) {
21
78
  changeType: "added",
22
79
  newValue: curr
23
80
  });
81
+ continue;
24
82
  }
25
- else {
26
- const prevHash = hashCollection(prev);
27
- const currHash = hashCollection(curr);
28
- if (prevHash !== currHash) {
29
- changes.push({
30
- entityId: curr.id,
31
- entityType: "collection",
32
- changeType: "modified",
33
- previousValue: prev,
34
- newValue: curr
35
- });
36
- }
83
+ const details = diffCollectionDetails(prev, curr);
84
+ if (details.length > 0) {
85
+ changes.push({
86
+ entityId: curr.id,
87
+ entityType: "collection",
88
+ changeType: "modified",
89
+ previousValue: prev,
90
+ newValue: curr,
91
+ details
92
+ });
37
93
  }
38
94
  }
39
- // Deleted
40
95
  for (const prev of previous) {
41
96
  if (!currMap.has(prev.id)) {
42
97
  changes.push({
@@ -1 +1 @@
1
- {"version":3,"file":"compare-tokens.js","sourceRoot":"","sources":["../../src/diff/compare-tokens.ts"],"names":[],"mappings":"AAEA,SAAS,SAAS,CAAC,CAAc;IAC7B,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,CAAkB;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;KACjD,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAA2B,EAAE,OAA0B;IACjF,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErD,qBAAqB;IACrB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACjB,UAAU,EAAE,YAAY;gBACxB,UAAU,EAAE,OAAO;gBACnB,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC;oBACT,QAAQ,EAAE,IAAI,CAAC,EAAE;oBACjB,UAAU,EAAE,YAAY;oBACxB,UAAU,EAAE,UAAU;oBACtB,aAAa,EAAE,IAAI;oBACnB,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,UAAU;IACV,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACjB,UAAU,EAAE,YAAY;gBACxB,UAAU,EAAE,SAAS;gBACrB,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"compare-tokens.js","sourceRoot":"","sources":["../../src/diff/compare-tokens.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-diff-summary.d.ts","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAgE9D"}
1
+ {"version":3,"file":"format-diff-summary.d.ts","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAoB9D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAgE9D"}
@@ -1,3 +1,19 @@
1
+ const DIM = "\x1b[90m";
2
+ const RESET = "\x1b[0m";
3
+ /**
4
+ * Each entry in `EntityChange.details` may be a single line or a multi-line block.
5
+ * Multi-line blocks (used by the token-aware diff for "was/now" structural breakdowns)
6
+ * are split so the first line gets the bullet and continuation lines are indented further.
7
+ */
8
+ function pushDetail(output, detail) {
9
+ const lines = detail.split("\n");
10
+ output.push(` ${DIM}- ${lines[0]}${RESET}`);
11
+ for (let i = 1; i < lines.length; i++) {
12
+ const line = lines[i];
13
+ // Continuation lines already carry their own indentation from the producer; just dim them.
14
+ output.push(` ${DIM}${line}${RESET}`);
15
+ }
16
+ }
1
17
  export function formatDiffSummary(summary) {
2
18
  if (summary.addedCount === 0 && summary.modifiedCount === 0 && summary.deletedCount === 0) {
3
19
  return "No design system changes detected.";
@@ -23,7 +39,7 @@ export function formatDiffSummary(summary) {
23
39
  output.push(`~ ${c.newValue?.name || c.previousValue?.name || c.entityId}`);
24
40
  if (c.details && c.details.length > 0) {
25
41
  for (const detail of c.details) {
26
- output.push(` \x1b[90m- ${detail}\x1b[0m`);
42
+ pushDetail(output, detail);
27
43
  }
28
44
  }
29
45
  }
@@ -48,7 +64,7 @@ export function formatDiffSummary(summary) {
48
64
  output.push(`${color}${symbol} ${name}\x1b[0m`);
49
65
  if (c.details && c.details.length > 0) {
50
66
  for (const detail of c.details) {
51
- output.push(` \x1b[90m- ${detail}\x1b[0m`);
67
+ pushDetail(output, detail);
52
68
  }
53
69
  }
54
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"format-diff-summary.js","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-diff-summary.js","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB;;;;GAIG;AACH,SAAS,UAAU,CAAC,MAAgB,EAAE,MAAc;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,2FAA2F;QAC3F,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IAClD,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC,IAAI,OAAO,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QACxF,OAAO,oCAAoC,CAAC;IAChD,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAEvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe;IAE/F,sBAAsB;IACtB,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC;IAC1E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;IAC/E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC7B,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IAC9E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,2BAA2B;IAC3B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACvF,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YAC3G,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,IAAI,IAAI,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC7B,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-component-stories.d.ts","sourceRoot":"","sources":["../../src/docs/generate-component-stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA6BnE,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GAChB,MAAM,CAkGR"}
1
+ {"version":3,"file":"generate-component-stories.d.ts","sourceRoot":"","sources":["../../src/docs/generate-component-stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA6BnE,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GAChB,MAAM,CAwHR"}
@@ -46,6 +46,27 @@ export function generateComponentStories(context, componentName, fileKey) {
46
46
  lines.push(` title: "${category}",`);
47
47
  lines.push(` component: ${componentName},`);
48
48
  lines.push(` tags: ["autodocs"],`);
49
+ // Tier 2 #7: argTypes map every Figma variant axis to a Storybook select
50
+ // control so the control panel mirrors exactly what's in the design.
51
+ // Boolean component props get a boolean control. Text props get a text input.
52
+ const variantAxes = context.variantAxes ?? [];
53
+ const boolProps = (context.properties ?? []).filter(p => p.type === "boolean");
54
+ const textProps = (context.properties ?? []).filter(p => p.type === "text");
55
+ if (variantAxes.length > 0 || boolProps.length > 0 || textProps.length > 0) {
56
+ lines.push(` argTypes: {`);
57
+ for (const axis of variantAxes) {
58
+ const propName = toPropName(axis.name);
59
+ const opts = axis.options.map(o => `"${o}"`).join(", ");
60
+ lines.push(` ${propName}: { control: "select", options: [${opts}] },`);
61
+ }
62
+ for (const prop of boolProps) {
63
+ lines.push(` ${toPropName(prop.name)}: { control: "boolean" },`);
64
+ }
65
+ for (const prop of textProps) {
66
+ lines.push(` ${toPropName(prop.name)}: { control: "text" },`);
67
+ }
68
+ lines.push(` },`);
69
+ }
49
70
  if (figmaUrl) {
50
71
  lines.push(` parameters: {`);
51
72
  lines.push(` design: {`);
@@ -1 +1 @@
1
- {"version":3,"file":"generate-component-stories.js","sourceRoot":"","sources":["../../src/docs/generate-component-stories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-component-stories.js","sourceRoot":"","sources":["../../src/docs/generate-component-stories.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-component.d.ts","sourceRoot":"","sources":["../../src/doctor/check-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAe,MAAM,YAAY,CAAC;AAErE,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,qBAAqB,CA+G/E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAKlG"}
1
+ {"version":3,"file":"check-component.d.ts","sourceRoot":"","sources":["../../src/doctor/check-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAe,MAAM,YAAY,CAAC;AAGrE,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,qBAAqB,CAgI/E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAKlG"}
@@ -1,3 +1,4 @@
1
+ import { detectSuspectPropertyNames } from "../normalizer/sanitize-property-names.js";
1
2
  export function checkComponent(context) {
2
3
  const issues = [];
3
4
  // 1. Layout
@@ -100,6 +101,23 @@ export function checkComponent(context) {
100
101
  else {
101
102
  issues.push({ severity: "warning", check: "kind", message: `Kind inferred as "${context.component.kind.value}"`, suggestion: "Review classification rules in ptb.config.json to confirm this component's kind" });
102
103
  }
104
+ // 11. Suspect text-property names. The strict guard rewrites only the
105
+ // clearest leaks (propName == textContent); this surfaces multi-word
106
+ // outside-vocabulary names that look like placeholder-derived leaks but
107
+ // aren't certain enough to auto-rename. Designers can rename them in Figma.
108
+ const suspects = detectSuspectPropertyNames(context.properties);
109
+ if (suspects.length > 0) {
110
+ issues.push({
111
+ severity: "warning",
112
+ check: "prop-names",
113
+ message: `${suspects.length} text prop${suspects.length === 1 ? "" : "s"} look placeholder-derived`,
114
+ suggestion: "Rename in Figma to a generic identifier (e.g. title, label, name, value) so the generated React API reads cleanly",
115
+ detail: suspects.map(p => p.name).join(", "),
116
+ });
117
+ }
118
+ else {
119
+ issues.push({ severity: "pass", check: "prop-names", message: "Text prop names look intentional", suggestion: "" });
120
+ }
103
121
  const score = issues.filter(i => i.severity === "pass").length;
104
122
  return {
105
123
  componentId: context.component.id,
@@ -1 +1 @@
1
- {"version":3,"file":"check-component.js","sourceRoot":"","sources":["../../src/doctor/check-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-component.js","sourceRoot":"","sources":["../../src/doctor/check-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { DesignSystemModel, PTBConfig } from "@calibrate-ds/shared-types";
2
+ /**
3
+ * Walks every component's layout tree (renderTree + baseRenderTree + childNodes)
4
+ * looking for nodes whose rawStyles.fills carries an IMAGE entry — the audit's
5
+ * Gap #6 case (profile photos, screenshots, raster assets that previously
6
+ * vanished from the generated output). Each unique image is exported via the
7
+ * Figma /images endpoint as PNG, written to <packageRoot>/src/assets/, and
8
+ * the source node is tagged with a workspace-relative `imageAssetPath`.
9
+ *
10
+ * Best-effort: a batch export failure logs a warning and continues so a
11
+ * partial scan still produces useful output.
12
+ */
13
+ export declare function enrichBitmapAssets(model: DesignSystemModel, fileKey: string, token: string, config: PTBConfig): Promise<void>;
14
+ //# sourceMappingURL=enrich-bitmap-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-bitmap-assets.d.ts","sourceRoot":"","sources":["../../src/icons/enrich-bitmap-assets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAU/F;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,IAAI,CAAC,CA0Df"}
@@ -0,0 +1,100 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import { resolveDSPaths } from "../filesystem/resolve-ds-paths.js";
4
+ /**
5
+ * Walks every component's layout tree (renderTree + baseRenderTree + childNodes)
6
+ * looking for nodes whose rawStyles.fills carries an IMAGE entry — the audit's
7
+ * Gap #6 case (profile photos, screenshots, raster assets that previously
8
+ * vanished from the generated output). Each unique image is exported via the
9
+ * Figma /images endpoint as PNG, written to <packageRoot>/src/assets/, and
10
+ * the source node is tagged with a workspace-relative `imageAssetPath`.
11
+ *
12
+ * Best-effort: a batch export failure logs a warning and continues so a
13
+ * partial scan still produces useful output.
14
+ */
15
+ export async function enrichBitmapAssets(model, fileKey, token, config) {
16
+ const detected = [];
17
+ for (const comp of model.components) {
18
+ for (const root of relevantTrees(comp))
19
+ collectImageFillNodes(root, detected);
20
+ }
21
+ if (detected.length === 0)
22
+ return;
23
+ // Dedup by Figma node ID — the same instance can appear in multiple trees.
24
+ const byNodeId = new Map();
25
+ for (const d of detected) {
26
+ const list = byNodeId.get(d.nodeId) ?? [];
27
+ list.push(d);
28
+ byNodeId.set(d.nodeId, list);
29
+ }
30
+ const nodeIds = [...byNodeId.keys()];
31
+ const { packageRoot, workspaceRoot } = resolveDSPaths(config);
32
+ const assetsDir = path.join(packageRoot, "src", "assets");
33
+ await fs.mkdir(assetsDir, { recursive: true });
34
+ // Resolve URLs via the existing Figma image-export endpoint.
35
+ let urlMap = {};
36
+ try {
37
+ const { getImageExports } = await import("@calibrate-ds/figma-client");
38
+ urlMap = await getImageExports({ fileKey, nodeIds, format: "png", token });
39
+ }
40
+ catch (e) {
41
+ console.warn(`[PTB] Bitmap export request failed: ${e.message}`);
42
+ return;
43
+ }
44
+ await Promise.all(Object.entries(urlMap).map(async ([nodeId, url]) => {
45
+ if (!url)
46
+ return;
47
+ const targets = byNodeId.get(nodeId) ?? [];
48
+ if (targets.length === 0)
49
+ return;
50
+ // Stable filename keyed off Figma node id so re-scans overwrite the
51
+ // same path. Strip ':' which is illegal on Windows and ugly on URLs.
52
+ const safeName = `${nodeId.replace(/:/g, "-")}.png`;
53
+ const filePath = path.join(assetsDir, safeName);
54
+ try {
55
+ const res = await fetch(url);
56
+ if (!res.ok)
57
+ return;
58
+ const buf = Buffer.from(await res.arrayBuffer());
59
+ await fs.writeFile(filePath, buf);
60
+ }
61
+ catch (e) {
62
+ console.warn(`[PTB] Bitmap download failed for ${nodeId}: ${e.message}`);
63
+ return;
64
+ }
65
+ // Workspace-relative path so consumers see the same string regardless
66
+ // of where their tsconfig roots them. Generators recompute a
67
+ // component-relative path when emitting the <img src> at write time.
68
+ const relPath = path.relative(workspaceRoot, filePath).replace(/\\/g, "/");
69
+ for (const t of targets)
70
+ t.node.imageAssetPath = relPath;
71
+ }));
72
+ }
73
+ function collectImageFillNodes(node, out) {
74
+ const fills = node.rawStyles?.fills;
75
+ if (fills && Array.isArray(fills)) {
76
+ const img = fills.find(f => f && f.type === "IMAGE" && typeof f.imageRef === "string");
77
+ if (img) {
78
+ // We need a Figma node ID for the export endpoint; layout-tree
79
+ // nodes record this on `componentId` for instances or fall back
80
+ // to the source node id when one was preserved during scan.
81
+ const nodeId = node.figmaNodeId ?? node.componentId ?? node.id;
82
+ if (typeof nodeId === "string" && nodeId.length > 0) {
83
+ out.push({ nodeId, imageRef: img.imageRef, node });
84
+ }
85
+ }
86
+ }
87
+ for (const child of node.children ?? [])
88
+ collectImageFillNodes(child, out);
89
+ }
90
+ function relevantTrees(comp) {
91
+ const trees = [];
92
+ if (comp.layoutTree)
93
+ trees.push(comp.layoutTree);
94
+ if (comp.renderTree && comp.renderTree !== comp.layoutTree)
95
+ trees.push(comp.renderTree);
96
+ if (comp.baseRenderTree && comp.baseRenderTree !== comp.layoutTree)
97
+ trees.push(comp.baseRenderTree);
98
+ return trees;
99
+ }
100
+ //# sourceMappingURL=enrich-bitmap-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-bitmap-assets.js","sourceRoot":"","sources":["../../src/icons/enrich-bitmap-assets.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -27,5 +27,6 @@ export * from "./ai/index.js";
27
27
  export * from "./doctor/index.js";
28
28
  export * from "./docs/index.js";
29
29
  export * from "./icons/enrich-icon-svgs.js";
30
+ export * from "./icons/enrich-bitmap-assets.js";
30
31
  export * from "./design-tool/index.js";
31
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -27,5 +27,6 @@ export * from "./ai/index.js";
27
27
  export * from "./doctor/index.js";
28
28
  export * from "./docs/index.js";
29
29
  export * from "./icons/enrich-icon-svgs.js";
30
+ export * from "./icons/enrich-bitmap-assets.js";
30
31
  export * from "./design-tool/index.js";
31
32
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { LayoutTreeNode } from "@calibrate-ds/shared-types";
2
+ /**
3
+ * Walks a layout tree and tags container nodes whose immediate children are
4
+ * sibling instances with identical recipes — the case that prompted audit
5
+ * Gap #8 ("three identical <BtnWeb> ellipsis buttons in a row, no hint").
6
+ *
7
+ * Heuristic intent classification:
8
+ *
9
+ * state-showcase layout direction is row, every sibling is the same
10
+ * componentId, AND at least one variant axis differs
11
+ * between siblings (the showcase is *demonstrating*
12
+ * variants side-by-side). Generator should keep one
13
+ * canonical instance.
14
+ *
15
+ * instance-list direction is column, ≥3 identical-recipe siblings.
16
+ * Long vertical lists in Figma are almost always
17
+ * "this becomes a `.map()`" in code.
18
+ *
19
+ * menu-group 2+ identical-recipe siblings that don't match either
20
+ * of the above (typical icon-bar / button-group).
21
+ * Generator renders each child as-is.
22
+ *
23
+ * unknown analysis didn't have enough signal — leave the
24
+ * decision to the generator (it currently defaults to
25
+ * "menu-group" behavior, which is the safest fallback).
26
+ *
27
+ * Mutates the tree in place, only setting `groupIntent` on container nodes
28
+ * where a meaningful classification could be derived. Nodes that don't
29
+ * match the criteria are left untouched.
30
+ */
31
+ export declare function classifyGroupIntent(tree: LayoutTreeNode | undefined): void;
32
+ //# sourceMappingURL=classify-group-intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify-group-intent.d.ts","sourceRoot":"","sources":["../../src/normalizer/classify-group-intent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAY1E"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Walks a layout tree and tags container nodes whose immediate children are
3
+ * sibling instances with identical recipes — the case that prompted audit
4
+ * Gap #8 ("three identical <BtnWeb> ellipsis buttons in a row, no hint").
5
+ *
6
+ * Heuristic intent classification:
7
+ *
8
+ * state-showcase layout direction is row, every sibling is the same
9
+ * componentId, AND at least one variant axis differs
10
+ * between siblings (the showcase is *demonstrating*
11
+ * variants side-by-side). Generator should keep one
12
+ * canonical instance.
13
+ *
14
+ * instance-list direction is column, ≥3 identical-recipe siblings.
15
+ * Long vertical lists in Figma are almost always
16
+ * "this becomes a `.map()`" in code.
17
+ *
18
+ * menu-group 2+ identical-recipe siblings that don't match either
19
+ * of the above (typical icon-bar / button-group).
20
+ * Generator renders each child as-is.
21
+ *
22
+ * unknown analysis didn't have enough signal — leave the
23
+ * decision to the generator (it currently defaults to
24
+ * "menu-group" behavior, which is the safest fallback).
25
+ *
26
+ * Mutates the tree in place, only setting `groupIntent` on container nodes
27
+ * where a meaningful classification could be derived. Nodes that don't
28
+ * match the criteria are left untouched.
29
+ */
30
+ export function classifyGroupIntent(tree) {
31
+ if (!tree)
32
+ return;
33
+ const visit = (node) => {
34
+ const kids = node.children ?? [];
35
+ if (kids.length >= 2 && node.type === "container") {
36
+ const intent = inferIntentForChildren(kids, node);
37
+ if (intent)
38
+ node.groupIntent = intent;
39
+ }
40
+ for (const child of kids)
41
+ visit(child);
42
+ };
43
+ visit(tree);
44
+ }
45
+ function inferIntentForChildren(kids, parent) {
46
+ // Only classify when every child is an instance pointing at the same
47
+ // componentId. A mixed group is structural composition, not repetition.
48
+ const componentIds = kids.map(k => k.componentId).filter((id) => !!id);
49
+ if (componentIds.length !== kids.length)
50
+ return null;
51
+ const first = componentIds[0];
52
+ if (!componentIds.every(id => id === first))
53
+ return null;
54
+ // Compare variant selections — if any axis differs across siblings, this
55
+ // is a state showcase (designer demonstrating variants side by side).
56
+ const allAxes = new Set();
57
+ for (const k of kids) {
58
+ for (const axis of Object.keys(k.variantSelection ?? {}))
59
+ allAxes.add(axis);
60
+ }
61
+ let varies = false;
62
+ for (const axis of allAxes) {
63
+ const values = new Set(kids.map(k => k.variantSelection?.[axis] ?? ""));
64
+ if (values.size > 1) {
65
+ varies = true;
66
+ break;
67
+ }
68
+ }
69
+ if (varies && (parent.layout?.direction === "row"))
70
+ return "state-showcase";
71
+ // No variant differences. Direction + count drive the call.
72
+ if (parent.layout?.direction === "column" && kids.length >= 3)
73
+ return "instance-list";
74
+ return "menu-group";
75
+ }
76
+ //# sourceMappingURL=classify-group-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify-group-intent.js","sourceRoot":"","sources":["../../src/normalizer/classify-group-intent.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgC;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,MAAM,KAAK,GAAG,CAAC,IAAoB,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,MAAM;gBAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1C,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC3B,IAAsB,EACtB,MAAsB;IAEtB,qEAAqE;IACrE,wEAAwE;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzD,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,MAAM;QAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAE5E,4DAA4D;IAC5D,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC;IAEtF,OAAO,YAAY,CAAC;AACxB,CAAC"}
@@ -4,4 +4,6 @@ export * from "./classify-entities.js";
4
4
  export * from "./normalize-components.js";
5
5
  export * from "./normalize-composites.js";
6
6
  export * from "./normalize-instances.js";
7
+ export * from "./sanitize-property-names.js";
8
+ export * from "./classify-group-intent.js";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/normalizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/normalizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC"}