@calibrate-ds/generator-react 0.1.5 → 0.1.7

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 (30) hide show
  1. package/dist/components/generate-component-css.d.ts +8 -1
  2. package/dist/components/generate-component-css.d.ts.map +1 -1
  3. package/dist/components/generate-component-css.js +36 -5
  4. package/dist/components/generate-component-css.js.map +1 -1
  5. package/dist/components/generate-component-file.d.ts.map +1 -1
  6. package/dist/components/generate-component-file.js +71 -12
  7. package/dist/components/generate-component-file.js.map +1 -1
  8. package/dist/components/generate-composite-types.d.ts.map +1 -1
  9. package/dist/components/generate-composite-types.js +53 -15
  10. package/dist/components/generate-composite-types.js.map +1 -1
  11. package/dist/components/generate-types-file.d.ts.map +1 -1
  12. package/dist/components/generate-types-file.js +47 -15
  13. package/dist/components/generate-types-file.js.map +1 -1
  14. package/dist/components/icon-svg.d.ts +30 -0
  15. package/dist/components/icon-svg.d.ts.map +1 -0
  16. package/dist/components/icon-svg.js +111 -0
  17. package/dist/components/icon-svg.js.map +1 -0
  18. package/dist/components/layout-jsx.js +41 -1
  19. package/dist/components/layout-jsx.js.map +1 -1
  20. package/dist/components/token-reverse-lookup.d.ts +31 -0
  21. package/dist/components/token-reverse-lookup.d.ts.map +1 -0
  22. package/dist/components/token-reverse-lookup.js +109 -0
  23. package/dist/components/token-reverse-lookup.js.map +1 -0
  24. package/dist/components/write-components.d.ts.map +1 -1
  25. package/dist/components/write-components.js +142 -21
  26. package/dist/components/write-components.js.map +1 -1
  27. package/dist/tokens/generate-token-file-content.d.ts.map +1 -1
  28. package/dist/tokens/generate-token-file-content.js +6 -2
  29. package/dist/tokens/generate-token-file-content.js.map +1 -1
  30. package/package.json +3 -3
@@ -1,6 +1,13 @@
1
1
  import type { ComponentDefinition } from "@calibrate-ds/shared-types";
2
+ import type { TokenReverseLookup } from "./token-reverse-lookup.js";
2
3
  /**
3
4
  * Builds .module.css structure abstracting component `.root` classes natively interpreting style hooks matching variants intuitively inherently.
5
+ *
6
+ * When a token reverse-lookup is supplied, raw numeric gap/padding values that
7
+ * unambiguously match a spacing/radius/dimension token are rendered as the
8
+ * matching `var(--ptb-…)` reference. This restores token references for cases
9
+ * where the Figma scan did not produce an explicit `resolvedToken` binding —
10
+ * the audit's "hardcoded 867px" complaint stems from exactly that gap.
4
11
  */
5
- export declare function generateComponentCss(component: ComponentDefinition): string;
12
+ export declare function generateComponentCss(component: ComponentDefinition, lookup?: TokenReverseLookup): string;
6
13
  //# sourceMappingURL=generate-component-css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-component-css.d.ts","sourceRoot":"","sources":["../../src/components/generate-component-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AA2BtE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,GAAG,MAAM,CA4E3E"}
1
+ {"version":3,"file":"generate-component-css.d.ts","sourceRoot":"","sources":["../../src/components/generate-component-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAgDpE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAChC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,kBAAkB,GAC5B,MAAM,CAiFR"}
@@ -6,6 +6,27 @@ import { normalizeTokenVariablePart } from "@calibrate-ds/core";
6
6
  function normalizeCssVarName(name) {
7
7
  return normalizeTokenVariablePart(name);
8
8
  }
9
+ /**
10
+ * Formats a numeric layout value, preferring an unambiguous token reference
11
+ * when one resolves to the same value. Falls back to the literal `${n}px`.
12
+ * The scope hint narrows the lookup so a 12-spacing token doesn't substitute
13
+ * into a border-radius slot or vice versa.
14
+ */
15
+ function formatLength(value, scope, lookup) {
16
+ if (typeof value === "string")
17
+ return value;
18
+ if (typeof value !== "number")
19
+ return String(value);
20
+ if (lookup) {
21
+ const scopes = scope === "spacing-or-dimension"
22
+ ? ["spacing", "dimension"]
23
+ : [scope];
24
+ const match = lookup.lookup(scopes, value);
25
+ if (match)
26
+ return match;
27
+ }
28
+ return `${value}px`;
29
+ }
9
30
  /**
10
31
  * Maps Calibrate internal style slots into valid Web CSS property equivalents natively.
11
32
  */
@@ -23,8 +44,14 @@ const CSS_PROPERTY_MAP = {
23
44
  };
24
45
  /**
25
46
  * Builds .module.css structure abstracting component `.root` classes natively interpreting style hooks matching variants intuitively inherently.
47
+ *
48
+ * When a token reverse-lookup is supplied, raw numeric gap/padding values that
49
+ * unambiguously match a spacing/radius/dimension token are rendered as the
50
+ * matching `var(--ptb-…)` reference. This restores token references for cases
51
+ * where the Figma scan did not produce an explicit `resolvedToken` binding —
52
+ * the audit's "hardcoded 867px" complaint stems from exactly that gap.
26
53
  */
27
- export function generateComponentCss(component) {
54
+ export function generateComponentCss(component, lookup) {
28
55
  let cssContent = `.root {\n`;
29
56
  // Extract core generic flex-behaviors organically.
30
57
  cssContent += ` display: flex;\n`;
@@ -37,7 +64,7 @@ export function generateComponentCss(component) {
37
64
  }
38
65
  if (component.layout.gap) {
39
66
  const gapVal = typeof component.layout.gap === "object" ? (component.layout.gap.resolvedToken?.name || component.layout.gap.rawValue) : component.layout.gap;
40
- cssContent += ` gap: ${typeof gapVal === "number" ? gapVal + "px" : gapVal};\n`;
67
+ cssContent += ` gap: ${formatLength(gapVal, "spacing", lookup)};\n`;
41
68
  }
42
69
  if (component.layout.padding) {
43
70
  const { top, right, bottom, left } = component.layout.padding;
@@ -45,14 +72,18 @@ export function generateComponentCss(component) {
45
72
  const r = (right.resolvedToken?.name || right.rawValue);
46
73
  const b = (bottom.resolvedToken?.name || bottom.rawValue);
47
74
  const l = (left.resolvedToken?.name || left.rawValue);
75
+ const tF = formatLength(t, "spacing", lookup);
76
+ const rF = formatLength(r, "spacing", lookup);
77
+ const bF = formatLength(b, "spacing", lookup);
78
+ const lF = formatLength(l, "spacing", lookup);
48
79
  if (t === b && r === l && t === r) {
49
- cssContent += ` padding: ${typeof t === "number" ? t + "px" : t};\n`;
80
+ cssContent += ` padding: ${tF};\n`;
50
81
  }
51
82
  else if (t === b && r === l) {
52
- cssContent += ` padding: ${typeof t === "number" ? t + "px" : t} ${typeof r === "number" ? r + "px" : r};\n`;
83
+ cssContent += ` padding: ${tF} ${rF};\n`;
53
84
  }
54
85
  else {
55
- cssContent += ` padding: ${typeof t === "number" ? t + "px" : t} ${typeof r === "number" ? r + "px" : r} ${typeof b === "number" ? b + "px" : b} ${typeof l === "number" ? l + "px" : l};\n`;
86
+ cssContent += ` padding: ${tF} ${rF} ${bF} ${lF};\n`;
56
87
  }
57
88
  }
58
89
  // Typical defaults mapping align Main and Cross generic behaviors
@@ -1 +1 @@
1
- {"version":3,"file":"generate-component-css.js","sourceRoot":"","sources":["../../src/components/generate-component-css.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-component-css.js","sourceRoot":"","sources":["../../src/components/generate-component-css.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-component-file.d.ts","sourceRoot":"","sources":["../../src/components/generate-component-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAMpG;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,iBAAiB,GACzB,MAAM,CAwOR"}
1
+ {"version":3,"file":"generate-component-file.d.ts","sourceRoot":"","sources":["../../src/components/generate-component-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAOpG;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,iBAAiB,GACzB,MAAM,CAoSR"}
@@ -2,6 +2,7 @@ import { createNamingStrategy, normalizeIconDisplayName, isIconComponent } from
2
2
  import { normalizePropName, inferBaseElement, sanitizeOptionName, getCssModuleImportPath } from "./helpers.js";
3
3
  import { inferRelevantTokenCollections, resolveRelativeTokenImport, formatCollectionImportName, inferStyleSlots, selectTokensForSlots } from "./token-helpers.js";
4
4
  import { generateLayoutJSX } from "./layout-jsx.js";
5
+ import { parseIconSvg, renderIconJsx, defaultIconSize } from "./icon-svg.js";
5
6
  /**
6
7
  * Writes the structural boilerplate for a strictly validated React Component mapped
7
8
  * functionally tracking properties natively against standard `data-` mappings.
@@ -11,6 +12,30 @@ export function generateComponentFile(component, config, model) {
11
12
  const namingStrategy = createNamingStrategy(config.naming);
12
13
  const resolvedName = isIconComponent(component.name) ? normalizeIconDisplayName(component.name) : component.name;
13
14
  const componentName = namingStrategy.formatComponentName(resolvedName);
15
+ // Vector icons render real <svg> geometry extracted at scan time. Branch
16
+ // before any token/layout logic — icons don't carry layout trees, slot
17
+ // contracts, or token bindings, and the generic emitter below produces an
18
+ // empty-div placeholder for them. Font-symbol icons fall through to the
19
+ // default emitter because there is no usable path data.
20
+ const parsedIconSvg = isIconComponent(component.name) ? parseIconSvg(component) : null;
21
+ if (parsedIconSvg) {
22
+ const typesImport = config.framework.typescript
23
+ ? `import type { ${componentName}Props } from "./${componentName}.types.js";`
24
+ : "";
25
+ const propsSignature = config.framework.typescript
26
+ ? `{ size = ${defaultIconSize(parsedIconSvg.viewBox)}, className, ...props }: ${componentName}Props`
27
+ : `{ size = ${defaultIconSize(parsedIconSvg.viewBox)}, className, ...props }`;
28
+ const svgJsx = renderIconJsx(parsedIconSvg);
29
+ const chunks = [`import * as React from "react";`];
30
+ if (typesImport)
31
+ chunks.push(typesImport);
32
+ chunks.push(`export function ${componentName}(${propsSignature}) {
33
+ return (
34
+ ${svgJsx}
35
+ );
36
+ }`);
37
+ return chunks.join("\n\n") + "\n";
38
+ }
14
39
  const usesCssModules = config.generation?.cssFiles !== false;
15
40
  const typesImport = config.framework.typescript
16
41
  ? `import type { ${componentName}Props } from "./${componentName}.types.js";`
@@ -59,24 +84,58 @@ ${Object.entries(styleTokensMap).map(([slot, exactRef]) => ` ${slot}: ${exact
59
84
  ? `{ className, ...props }: ${componentName}Props`
60
85
  : `{ className, ...props }`;
61
86
  let returnBlock = "";
62
- // Build base properties to pass towards the root node seamlessly
87
+ // Build base properties to pass towards the root node seamlessly. Variant
88
+ // axes (from Component Sets) and component properties (instance-level
89
+ // overrides) both surface as typed props on the React component. The
90
+ // earlier code missed variantAxes entirely, so size/state/effect on Figma
91
+ // variant matrices never reached the leaf signature.
63
92
  let dataAtts = "";
64
93
  let destructuredVariants = "";
94
+ const dataAttrLines = [];
95
+ const destructuredNames = [];
96
+ const seenInComponent = new Set();
97
+ const recordVariantStyleProp = (cleanName) => {
98
+ if (seenInComponent.has(cleanName))
99
+ return;
100
+ seenInComponent.add(cleanName);
101
+ destructuredNames.push(cleanName);
102
+ dataAttrLines.push(`data-${cleanName.toLowerCase()}={${cleanName}}`);
103
+ };
104
+ const recordPropWithoutDataAttr = (cleanName) => {
105
+ if (seenInComponent.has(cleanName))
106
+ return;
107
+ seenInComponent.add(cleanName);
108
+ destructuredNames.push(cleanName);
109
+ };
110
+ if (component.variantAxes && component.variantAxes.length > 0) {
111
+ for (const ax of component.variantAxes) {
112
+ recordVariantStyleProp(normalizePropName(ax.name));
113
+ }
114
+ }
65
115
  if (component.properties && component.properties.length > 0) {
66
- dataAtts = component.properties
67
- .filter(p => p.type === "enum" || p.type === "boolean")
68
- .map(p => {
116
+ for (const p of component.properties) {
69
117
  const cleanName = normalizePropName(p.name);
70
- return `data-${cleanName.toLowerCase()}={${cleanName}}`;
71
- }).join("\n ");
72
- destructuredVariants = component.properties.map(p => normalizePropName(p.name)).join(", ");
118
+ if (p.type === "enum" || p.type === "boolean") {
119
+ recordVariantStyleProp(cleanName);
120
+ }
121
+ else {
122
+ // text and instance props are rendered in the JSX body (see
123
+ // layout-jsx renderLeafNode) — not as data-* selectors.
124
+ recordPropWithoutDataAttr(cleanName);
125
+ }
126
+ }
73
127
  }
74
128
  else if (component.variants && component.variants.length > 0) {
75
- dataAtts = component.variants.map(v => {
76
- const cleanName = normalizePropName(v.name);
77
- return `data-${cleanName.toLowerCase()}={${cleanName}}`;
78
- }).join("\n ");
79
- destructuredVariants = component.variants.map(v => normalizePropName(v.name)).join(", ");
129
+ // Legacy fallback when only the pre-split `variants` field is present.
130
+ for (const v of component.variants) {
131
+ recordVariantStyleProp(normalizePropName(v.name));
132
+ }
133
+ }
134
+ if (dataAttrLines.length > 0) {
135
+ dataAtts = dataAttrLines.join("\n ");
136
+ }
137
+ if (destructuredNames.length > 0) {
138
+ destructuredVariants = destructuredNames.join(", ");
80
139
  }
81
140
  const propsWithVariantsDef = destructuredVariants
82
141
  ? (config.framework.typescript ? `{ className, ${destructuredVariants}, ...props }: ${componentName}Props` : `{ className, ${destructuredVariants}, ...props }`)
@@ -1 +1 @@
1
- {"version":3,"file":"generate-component-file.js","sourceRoot":"","sources":["../../src/components/generate-component-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-component-file.js","sourceRoot":"","sources":["../../src/components/generate-component-file.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-composite-types.d.ts","sourceRoot":"","sources":["../../src/components/generate-composite-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAmB,MAAM,4BAA4B,CAAC;AAWlG;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAqCpG"}
1
+ {"version":3,"file":"generate-composite-types.d.ts","sourceRoot":"","sources":["../../src/components/generate-composite-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAsC,MAAM,4BAA4B,CAAC;AAIrH;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CA8EpG"}
@@ -1,10 +1,5 @@
1
1
  import { createNamingStrategy, normalizeIconDisplayName, isIconComponent } from "@calibrate-ds/core";
2
- function sanitizeVariantName(name) {
3
- return name.replace(/[^a-zA-Z0-9_$]/g, "");
4
- }
5
- function sanitizeOptionName(option) {
6
- return option.replace(/["']/g, "");
7
- }
2
+ import { normalizePropName, sanitizeOptionName } from "./helpers.js";
8
3
  /**
9
4
  * Builds composite scaffolding interfaces explicitly allowing children injection
10
5
  * mimicking standard UI containers dynamically mapping surface variants if they exist.
@@ -15,21 +10,64 @@ export function generateCompositeTypesFile(component, config) {
15
10
  const componentName = namingStrategy.formatComponentName(resolvedName);
16
11
  let output = `import type * as React from "react";\n\n`;
17
12
  const variantProps = [];
18
- // Map internal overrides or composite level variants just like canonical nodes
19
- if (component.variants && component.variants.length > 0) {
13
+ const seenPropNames = new Set();
14
+ const pushTypeAndProp = (cleanName, typeName, bodyDecl) => {
15
+ if (seenPropNames.has(cleanName))
16
+ return;
17
+ seenPropNames.add(cleanName);
18
+ output += bodyDecl;
19
+ variantProps.push(` ${cleanName}?: ${typeName};`);
20
+ };
21
+ // Read variant axes first (modern field) — these are the Figma Component Set dimensions.
22
+ // Legacy composites still carry the old `variants` shape, handled below as fallback.
23
+ if (component.variantAxes && component.variantAxes.length > 0) {
24
+ component.variantAxes.forEach((ax) => {
25
+ const cleanName = normalizePropName(ax.name);
26
+ const typeName = `${componentName}${cleanName.charAt(0).toUpperCase() + cleanName.slice(1)}`;
27
+ if (ax.type === "boolean") {
28
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = boolean;\n`);
29
+ }
30
+ else {
31
+ const union = (ax.options || []).map((opt) => `"${sanitizeOptionName(opt)}"`).join(" | ");
32
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = ${union || "string"};\n`);
33
+ }
34
+ });
35
+ }
36
+ // Component-level properties (instance swap, boolean, text, enum).
37
+ if (component.properties && component.properties.length > 0) {
38
+ component.properties.forEach((p) => {
39
+ const cleanName = normalizePropName(p.name);
40
+ const typeName = `${componentName}${cleanName.charAt(0).toUpperCase() + cleanName.slice(1)}`;
41
+ if (p.type === "boolean") {
42
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = boolean;\n`);
43
+ }
44
+ else if (p.type === "text") {
45
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = string;\n`);
46
+ }
47
+ else if (p.type === "instance") {
48
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = React.ReactNode;\n`);
49
+ }
50
+ else if (p.type === "enum") {
51
+ const union = (p.options || []).map((opt) => `"${sanitizeOptionName(opt)}"`).join(" | ");
52
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = ${union || "string"};\n`);
53
+ }
54
+ });
55
+ }
56
+ else if (component.variants && component.variants.length > 0) {
57
+ // Legacy fallback for older snapshots not yet re-scanned.
20
58
  component.variants.forEach((v) => {
21
- const cleanName = sanitizeVariantName(v.name);
59
+ const cleanName = normalizePropName(v.name);
22
60
  const typeName = `${componentName}${cleanName.charAt(0).toUpperCase() + cleanName.slice(1)}`;
23
61
  if (v.type === "boolean") {
24
- output += `export type ${typeName} = boolean;\n`;
25
- variantProps.push(` ${cleanName}?: ${typeName};`);
62
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = boolean;\n`);
26
63
  }
27
- else if (v.type === "string" || v.type === "number") {
28
- const union = v.options.map(opt => `"${sanitizeOptionName(opt)}"`).join(" | ");
29
- output += `export type ${typeName} = ${union || "string"};\n`;
30
- variantProps.push(` ${cleanName}?: ${typeName};`);
64
+ else {
65
+ const union = (v.options || []).map((opt) => `"${sanitizeOptionName(opt)}"`).join(" | ");
66
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = ${union || "string"};\n`);
31
67
  }
32
68
  });
69
+ }
70
+ if (seenPropNames.size > 0) {
33
71
  output += "\n";
34
72
  }
35
73
  output += `export interface ${componentName}Props extends React.HTMLAttributes<HTMLDivElement> {\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-composite-types.js","sourceRoot":"","sources":["../../src/components/generate-composite-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErG,SAAS,mBAAmB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAA8B,EAAE,MAAiB;IACxF,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;IACjH,MAAM,aAAa,GAAG,cAAc,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAEvE,IAAI,MAAM,GAAG,0CAA0C,CAAC;IAExD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,+EAA+E;IAC/E,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAkB,EAAE,EAAE;YAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,GAAG,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7F,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,eAAe,QAAQ,eAAe,CAAC;gBACjD,YAAY,CAAC,IAAI,CAAC,KAAK,SAAS,MAAM,QAAQ,GAAG,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/E,MAAM,IAAI,eAAe,QAAQ,MAAM,KAAK,IAAI,QAAQ,KAAK,CAAC;gBAC9D,YAAY,CAAC,IAAI,CAAC,KAAK,SAAS,MAAM,QAAQ,GAAG,CAAC,CAAC;YACvD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,oBAAoB,aAAa,wDAAwD,CAAC;IACpG,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,IAAI,CAAC;IACnB,CAAC;IACD,+EAA+E;IAC/E,MAAM,IAAI,KAAK,CAAC;IAEhB,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"generate-composite-types.js","sourceRoot":"","sources":["../../src/components/generate-composite-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-types-file.d.ts","sourceRoot":"","sources":["../../src/components/generate-types-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAsC,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIrH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CA6D3F"}
1
+ {"version":3,"file":"generate-types-file.d.ts","sourceRoot":"","sources":["../../src/components/generate-types-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAsC,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKrH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CA6F3F"}
@@ -1,5 +1,6 @@
1
1
  import { createNamingStrategy, normalizeIconDisplayName, isIconComponent } from "@calibrate-ds/core";
2
2
  import { normalizePropName, sanitizeOptionName, inferBaseElement } from "./helpers.js";
3
+ import { parseIconSvg } from "./icon-svg.js";
3
4
  /**
4
5
  * Derives valid TypeScript union definitions from normalized model variants
5
6
  * and safely builds the primary `<ComponentName>Props` interface exposing
@@ -9,48 +10,79 @@ export function generateTypesFile(component, config) {
9
10
  const namingStrategy = createNamingStrategy(config.naming);
10
11
  const resolvedName = isIconComponent(component.name) ? normalizeIconDisplayName(component.name) : component.name;
11
12
  const componentName = namingStrategy.formatComponentName(resolvedName);
13
+ // Vector icons render as a real <svg>, so their props extend SVGAttributes
14
+ // rather than the generic span/div HTMLAttributes used elsewhere. Font-based
15
+ // icons fall through to the default emitter — they don't have path geometry.
16
+ if (isIconComponent(component.name) && parseIconSvg(component)) {
17
+ return `import type * as React from "react";
18
+
19
+ export interface ${componentName}Props extends React.SVGAttributes<SVGSVGElement> {
20
+ size?: number | string;
21
+ }
22
+ `;
23
+ }
12
24
  let output = `import type * as React from "react";\n\n`;
13
25
  const variantProps = [];
26
+ const seenPropNames = new Set();
27
+ const pushTypeAndProp = (cleanName, typeName, bodyDecl) => {
28
+ if (seenPropNames.has(cleanName))
29
+ return;
30
+ seenPropNames.add(cleanName);
31
+ output += bodyDecl;
32
+ variantProps.push(` ${cleanName}?: ${typeName};`);
33
+ };
34
+ // Variant axes come from a Figma Component Set's variant dimensions (size,
35
+ // state, etc.) and live on `variantAxes`. The earlier `properties`-only path
36
+ // dropped them silently, leaving composites unable to pass typed values to
37
+ // their leaves. Emit them first so they take precedence on a name collision.
38
+ if (component.variantAxes && component.variantAxes.length > 0) {
39
+ component.variantAxes.forEach((ax) => {
40
+ const cleanName = normalizePropName(ax.name);
41
+ const typeName = `${componentName}${cleanName.charAt(0).toUpperCase() + cleanName.slice(1)}`;
42
+ if (ax.type === "boolean") {
43
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = boolean;\n`);
44
+ }
45
+ else {
46
+ const union = (ax.options || []).map((opt) => `"${sanitizeOptionName(opt)}"`).join(" | ");
47
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = ${union || "string"};\n`);
48
+ }
49
+ });
50
+ }
14
51
  if (component.properties && component.properties.length > 0) {
15
52
  component.properties.forEach((p) => {
16
53
  const cleanName = normalizePropName(p.name);
17
54
  const typeName = `${componentName}${cleanName.charAt(0).toUpperCase() + cleanName.slice(1)}`;
18
55
  if (p.type === "boolean") {
19
- output += `export type ${typeName} = boolean;\n`;
20
- variantProps.push(` ${cleanName}?: ${typeName};`);
56
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = boolean;\n`);
21
57
  }
22
58
  else if (p.type === "text") {
23
- output += `export type ${typeName} = string;\n`;
24
- variantProps.push(` ${cleanName}?: ${typeName};`);
59
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = string;\n`);
25
60
  }
26
61
  else if (p.type === "instance") {
27
- output += `export type ${typeName} = React.ReactNode;\n`;
28
- variantProps.push(` ${cleanName}?: ${typeName};`);
62
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = React.ReactNode;\n`);
29
63
  }
30
64
  else if (p.type === "enum") {
31
- // Convert options to string literal unions safely
32
65
  const union = (p.options || []).map((opt) => `"${sanitizeOptionName(opt)}"`).join(" | ");
33
- output += `export type ${typeName} = ${union || "string"};\n`;
34
- variantProps.push(` ${cleanName}?: ${typeName};`);
66
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = ${union || "string"};\n`);
35
67
  }
36
68
  });
37
- output += "\n";
38
69
  }
39
70
  else if (component.variants && component.variants.length > 0) {
71
+ // Legacy fallback for older snapshots that haven't been re-scanned and
72
+ // still carry the pre-split `variants` shape.
40
73
  component.variants.forEach((v) => {
41
74
  const cleanName = normalizePropName(v.name);
42
75
  const typeName = `${componentName}${cleanName.charAt(0).toUpperCase() + cleanName.slice(1)}`;
43
76
  if (v.type === "boolean") {
44
- output += `export type ${typeName} = boolean;\n`;
45
- variantProps.push(` ${cleanName}?: ${typeName};`);
77
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = boolean;\n`);
46
78
  }
47
79
  else if (v.type === "string" || v.type === "number") {
48
- // Convert options to string literal unions safely
49
80
  const union = (v.options || []).map((opt) => `"${sanitizeOptionName(opt)}"`).join(" | ");
50
- output += `export type ${typeName} = ${union || "string"};\n`;
51
- variantProps.push(` ${cleanName}?: ${typeName};`);
81
+ pushTypeAndProp(cleanName, typeName, `export type ${typeName} = ${union || "string"};\n`);
52
82
  }
53
83
  });
84
+ }
85
+ if (seenPropNames.size > 0) {
54
86
  output += "\n";
55
87
  }
56
88
  const { interfaceName } = inferBaseElement(component.name, component.categoryPath || "");
@@ -1 +1 @@
1
- {"version":3,"file":"generate-types-file.js","sourceRoot":"","sources":["../../src/components/generate-types-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-types-file.js","sourceRoot":"","sources":["../../src/components/generate-types-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ComponentDefinition } from "@calibrate-ds/shared-types";
2
+ export type ParsedIconSvg = {
3
+ viewBox: string;
4
+ innerContent: string;
5
+ };
6
+ /**
7
+ * The scan pipeline stores `iconSvg` as a JSON string of `{ viewBox, innerContent }`.
8
+ * Returns null when the field is absent, malformed, or marked as font-based.
9
+ */
10
+ export declare function parseIconSvg(component: ComponentDefinition): ParsedIconSvg | null;
11
+ /**
12
+ * Rewrites hyphenated SVG attribute names inside a raw SVG inner-content string to
13
+ * the camelCase forms React expects in JSX. Operates on attribute names only (the
14
+ * left side of `=`), so attribute values are preserved verbatim.
15
+ */
16
+ export declare function toReactSvgAttributes(raw: string): string;
17
+ /**
18
+ * Derives a sensible default size for the icon component's `size` prop from its
19
+ * viewBox. Square viewBoxes ("0 0 16 16" → 16) drive a single numeric default;
20
+ * non-square or unparseable viewBoxes fall back to 24, which matches Figma's
21
+ * most common icon canvas.
22
+ */
23
+ export declare function defaultIconSize(viewBox: string): number;
24
+ /**
25
+ * Produces the JSX body for an icon component: a single `<svg>` with the cleaned
26
+ * inner content embedded directly. Indentation is two spaces per level, with the
27
+ * caller-supplied `baseIndent` applied to the opening tag.
28
+ */
29
+ export declare function renderIconJsx(parsed: ParsedIconSvg, baseIndent?: string): string;
30
+ //# sourceMappingURL=icon-svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-svg.d.ts","sourceRoot":"","sources":["../../src/components/icon-svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,mBAAmB,GAAG,aAAa,GAAG,IAAI,CAajF;AA8BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUxD;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASvD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CACzB,MAAM,EAAE,aAAa,EACrB,UAAU,GAAE,MAAmB,GAChC,MAAM,CAmBR"}