@seed-design/figma 1.3.3 → 1.3.5
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/lib/codegen/index.cjs +72 -12
- package/lib/codegen/index.d.ts +2 -1
- package/lib/codegen/index.d.ts.map +1 -1
- package/lib/codegen/index.js +73 -13
- package/lib/codegen/targets/react/index.cjs +207 -30
- package/lib/codegen/targets/react/index.d.ts.map +1 -1
- package/lib/codegen/targets/react/index.js +207 -30
- package/lib/index.cjs +47 -9
- package/lib/index.js +47 -9
- package/package.json +3 -3
- package/src/codegen/component-properties.ts +20 -0
- package/src/codegen/core/codegen.ts +26 -1
- package/src/codegen/skip-components.ts +7 -0
- package/src/codegen/targets/figma/pipeline.ts +2 -0
- package/src/codegen/targets/react/component/handlers/action-button.ts +3 -1
- package/src/codegen/targets/react/component/handlers/app-bar.ts +17 -0
- package/src/codegen/targets/react/component/handlers/bottom-sheet.ts +1 -2
- package/src/codegen/targets/react/component/handlers/identity-placeholder.ts +4 -13
- package/src/codegen/targets/react/component/handlers/image-frame.ts +134 -0
- package/src/codegen/targets/react/component/handlers/index.ts +1 -0
- package/src/codegen/targets/react/component/handlers/menu-sheet.ts +1 -1
- package/src/codegen/targets/react/component/handlers/switch.ts +0 -4
- package/src/codegen/targets/react/component/handlers/tabs.ts +7 -3
- package/src/codegen/targets/react/pipeline.ts +2 -0
- package/src/entities/data/__generated__/component-sets/index.d.ts +21 -8
- package/src/entities/data/__generated__/component-sets/index.mjs +22 -9
- package/src/entities/data/__generated__/components/index.d.ts +6 -6
- package/src/entities/data/__generated__/components/index.mjs +6 -6
- package/src/entities/data/__generated__/variable-collections/index.mjs +1 -0
- package/src/entities/data/__generated__/variables/index.mjs +24 -0
package/lib/codegen/index.cjs
CHANGED
|
@@ -448,11 +448,20 @@ function applyInferredLayout(parentNode, result) {
|
|
|
448
448
|
};
|
|
449
449
|
}
|
|
450
450
|
|
|
451
|
-
function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer, shouldInferAutoLayout }) {
|
|
451
|
+
function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer, shouldInferAutoLayout, skipComponentKeys }) {
|
|
452
|
+
function isSkippedInstance(node) {
|
|
453
|
+
if (!skipComponentKeys || skipComponentKeys.size === 0) return false;
|
|
454
|
+
if (node.type !== "INSTANCE") return false;
|
|
455
|
+
const { componentKey, componentSetKey } = node;
|
|
456
|
+
return skipComponentKeys.has(componentKey) || !!componentSetKey && skipComponentKeys.has(componentSetKey);
|
|
457
|
+
}
|
|
452
458
|
function traverse(node) {
|
|
453
459
|
if ("visible" in node && !node.visible) {
|
|
454
460
|
return;
|
|
455
461
|
}
|
|
462
|
+
if (isSkippedInstance(node)) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
456
465
|
const result = tsPattern.match(node).with({
|
|
457
466
|
type: "FRAME"
|
|
458
467
|
}, (node)=>shouldInferAutoLayout ? frameTransformer(applyInferredLayout(node, inferLayout(node)), traverse) : frameTransformer(node, traverse)).with({
|
|
@@ -470,7 +479,7 @@ function createCodeGenerator({ frameTransformer, textTransformer, rectangleTrans
|
|
|
470
479
|
type: "BOOLEAN_OPERATION"
|
|
471
480
|
}, (node)=>booleanOperationTransformer(node, traverse)).with({
|
|
472
481
|
type: "UNHANDLED"
|
|
473
|
-
}, ()=>createElement(
|
|
482
|
+
}, (node)=>createElement(`Unhandled${changeCase.pascalCase(node.original.type)}Node`)).exhaustive();
|
|
474
483
|
if (result) {
|
|
475
484
|
return appendSource(result, node.id);
|
|
476
485
|
}
|
|
@@ -480,6 +489,12 @@ function createCodeGenerator({ frameTransformer, textTransformer, rectangleTrans
|
|
|
480
489
|
return traverse(node);
|
|
481
490
|
}
|
|
482
491
|
function generateCode(node, options) {
|
|
492
|
+
if (isSkippedInstance(node)) {
|
|
493
|
+
return {
|
|
494
|
+
imports: "",
|
|
495
|
+
jsx: "// This component is intentionally excluded from codegen"
|
|
496
|
+
};
|
|
497
|
+
}
|
|
483
498
|
const jsxTree = generateJsxTree(node);
|
|
484
499
|
if (!jsxTree) {
|
|
485
500
|
return undefined;
|
|
@@ -11517,6 +11532,7 @@ const FIGMA_VARIABLE_COLLECTIONS = {
|
|
|
11517
11532
|
"VariableID:576:22878",
|
|
11518
11533
|
"VariableID:59176:2",
|
|
11519
11534
|
"VariableID:59176:3",
|
|
11535
|
+
"VariableID:61337:3",
|
|
11520
11536
|
"VariableID:654:20851",
|
|
11521
11537
|
"VariableID:670:2700",
|
|
11522
11538
|
"VariableID:6782:76317",
|
|
@@ -18350,6 +18366,30 @@ const FIGMA_VARIABLES = {
|
|
|
18350
18366
|
],
|
|
18351
18367
|
"codeSyntax": {}
|
|
18352
18368
|
},
|
|
18369
|
+
"VariableID:61337:3": {
|
|
18370
|
+
"name": "stroke/focus-ring",
|
|
18371
|
+
"id": "VariableID:61337:3",
|
|
18372
|
+
"remote": false,
|
|
18373
|
+
"key": "ca937a0bb83fda59d06959cfb5d960f00b5e9add",
|
|
18374
|
+
"variableCollectionId": "VariableCollectionId:1:3",
|
|
18375
|
+
"resolvedType": "COLOR",
|
|
18376
|
+
"description": "",
|
|
18377
|
+
"hiddenFromPublishing": false,
|
|
18378
|
+
"valuesByMode": {
|
|
18379
|
+
"1928:7": {
|
|
18380
|
+
"type": "VARIABLE_ALIAS",
|
|
18381
|
+
"id": "VariableID:1883:92938"
|
|
18382
|
+
},
|
|
18383
|
+
"1928:8": {
|
|
18384
|
+
"type": "VARIABLE_ALIAS",
|
|
18385
|
+
"id": "VariableID:1883:92938"
|
|
18386
|
+
}
|
|
18387
|
+
},
|
|
18388
|
+
"scopes": [
|
|
18389
|
+
"ALL_SCOPES"
|
|
18390
|
+
],
|
|
18391
|
+
"codeSyntax": {}
|
|
18392
|
+
},
|
|
18353
18393
|
"VariableID:41338:806": {
|
|
18354
18394
|
"name": "stroke/informative-solid",
|
|
18355
18395
|
"id": "VariableID:41338:806",
|
|
@@ -18651,8 +18691,8 @@ const FIGMA_VARIABLES = {
|
|
|
18651
18691
|
}
|
|
18652
18692
|
};
|
|
18653
18693
|
|
|
18654
|
-
const
|
|
18655
|
-
"name": "
|
|
18694
|
+
const privateTemplateAttachmentField = {
|
|
18695
|
+
"name": "privateTemplateAttachmentField",
|
|
18656
18696
|
"key": "5ba20e248e9cd0292fc285488b2ed3b3145d37b0",
|
|
18657
18697
|
"componentPropertyDefinitions": {
|
|
18658
18698
|
"Show Header#40606:8": {
|
|
@@ -18865,6 +18905,19 @@ const privateComponentFieldHeaderSuffix = {
|
|
|
18865
18905
|
}
|
|
18866
18906
|
}
|
|
18867
18907
|
};
|
|
18908
|
+
const privateComponentIdentityPlaceholder = {
|
|
18909
|
+
"name": "privateComponentIdentityPlaceholder",
|
|
18910
|
+
"key": "7d7ae18cabac6ebad19934516de8e7e256854eba",
|
|
18911
|
+
"componentPropertyDefinitions": {
|
|
18912
|
+
"Identity": {
|
|
18913
|
+
"type": "VARIANT",
|
|
18914
|
+
"variantOptions": [
|
|
18915
|
+
"Person",
|
|
18916
|
+
"Business"
|
|
18917
|
+
]
|
|
18918
|
+
}
|
|
18919
|
+
}
|
|
18920
|
+
};
|
|
18868
18921
|
const privateComponentInputButtonPrefix = {
|
|
18869
18922
|
"name": "privateComponentInputButtonPrefix",
|
|
18870
18923
|
"key": "c7d12be4056a8171f6857ec4ef15d81bd18d8cae",
|
|
@@ -20657,11 +20710,11 @@ const componentBottomSheet = {
|
|
|
20657
20710
|
"Header Layout": {
|
|
20658
20711
|
"type": "VARIANT",
|
|
20659
20712
|
"variantOptions": [
|
|
20713
|
+
"Top Left",
|
|
20714
|
+
"Top Center",
|
|
20660
20715
|
"Bottom Left",
|
|
20661
|
-
"None",
|
|
20662
20716
|
"Bottom Center",
|
|
20663
|
-
"
|
|
20664
|
-
"Top Left"
|
|
20717
|
+
"None"
|
|
20665
20718
|
]
|
|
20666
20719
|
}
|
|
20667
20720
|
}
|
|
@@ -21209,7 +21262,7 @@ const componentImageFrame = {
|
|
|
21209
21262
|
"80",
|
|
21210
21263
|
"96",
|
|
21211
21264
|
"120",
|
|
21212
|
-
"
|
|
21265
|
+
"Free"
|
|
21213
21266
|
]
|
|
21214
21267
|
},
|
|
21215
21268
|
"Rounded": {
|
|
@@ -22068,8 +22121,7 @@ const componentSwitch = {
|
|
|
22068
22121
|
"type": "VARIANT",
|
|
22069
22122
|
"variantOptions": [
|
|
22070
22123
|
"Label Last",
|
|
22071
|
-
"Label First"
|
|
22072
|
-
"🚫[Switch Mark 사용] Switch Only"
|
|
22124
|
+
"Label First"
|
|
22073
22125
|
]
|
|
22074
22126
|
}
|
|
22075
22127
|
}
|
|
@@ -22838,6 +22890,7 @@ var FIGMA_COMPONENTS = {
|
|
|
22838
22890
|
privateComponentFieldFooterCharacterCount: privateComponentFieldFooterCharacterCount,
|
|
22839
22891
|
privateComponentFieldHeaderIndicator: privateComponentFieldHeaderIndicator,
|
|
22840
22892
|
privateComponentFieldHeaderSuffix: privateComponentFieldHeaderSuffix,
|
|
22893
|
+
privateComponentIdentityPlaceholder: privateComponentIdentityPlaceholder,
|
|
22841
22894
|
privateComponentInputButtonPrefix: privateComponentInputButtonPrefix,
|
|
22842
22895
|
privateComponentInputButtonSuffix: privateComponentInputButtonSuffix,
|
|
22843
22896
|
privateComponentInputButtonValue: privateComponentInputButtonValue,
|
|
@@ -22882,7 +22935,7 @@ var FIGMA_COMPONENTS = {
|
|
|
22882
22935
|
privateComponentUnderlineTextInputInputReadOnly: privateComponentUnderlineTextInputInputReadOnly,
|
|
22883
22936
|
privateComponentUnderlineTextInputPrefix: privateComponentUnderlineTextInputPrefix,
|
|
22884
22937
|
privateComponentUnderlineTextInputSuffix: privateComponentUnderlineTextInputSuffix,
|
|
22885
|
-
|
|
22938
|
+
privateTemplateAttachmentField: privateTemplateAttachmentField,
|
|
22886
22939
|
privateTemplateChipGroup: privateTemplateChipGroup,
|
|
22887
22940
|
privateTemplateChipGroupField: privateTemplateChipGroupField,
|
|
22888
22941
|
privateTemplatePhoneNumberField: privateTemplatePhoneNumberField,
|
|
@@ -23059,6 +23112,12 @@ const variableService = createVariableService({
|
|
|
23059
23112
|
}
|
|
23060
23113
|
});
|
|
23061
23114
|
|
|
23115
|
+
const SKIP_COMPONENT_KEYS = new Set([
|
|
23116
|
+
componentOsBottomIndicatorFigmaOnly.key,
|
|
23117
|
+
componentOsKeyboardFigmaOnly.key,
|
|
23118
|
+
componentOsStatusBarFigmaOnly.key
|
|
23119
|
+
]);
|
|
23120
|
+
|
|
23062
23121
|
function createFrameTransformer({ propsConverters }) {
|
|
23063
23122
|
return defineElementTransformer((node, traverse)=>{
|
|
23064
23123
|
const children = node.children;
|
|
@@ -23381,7 +23440,8 @@ function createPipeline(options = {}) {
|
|
|
23381
23440
|
instanceTransformer,
|
|
23382
23441
|
vectorTransformer,
|
|
23383
23442
|
booleanOperationTransformer,
|
|
23384
|
-
shouldInferAutoLayout
|
|
23443
|
+
shouldInferAutoLayout,
|
|
23444
|
+
skipComponentKeys: SKIP_COMPONENT_KEYS
|
|
23385
23445
|
});
|
|
23386
23446
|
return codegenTransformer;
|
|
23387
23447
|
}
|
package/lib/codegen/index.d.ts
CHANGED
|
@@ -122,6 +122,7 @@ interface CodeGeneratorDeps {
|
|
|
122
122
|
vectorTransformer: ElementTransformer<NormalizedVectorNode>;
|
|
123
123
|
booleanOperationTransformer: ElementTransformer<NormalizedBooleanOperationNode>;
|
|
124
124
|
shouldInferAutoLayout: boolean;
|
|
125
|
+
skipComponentKeys?: Set<string>;
|
|
125
126
|
}
|
|
126
127
|
interface CodeGenerator {
|
|
127
128
|
generateJsxTree: (node: NormalizedSceneNode) => ElementNode | undefined;
|
|
@@ -132,7 +133,7 @@ interface CodeGenerator {
|
|
|
132
133
|
jsx: string;
|
|
133
134
|
} | undefined;
|
|
134
135
|
}
|
|
135
|
-
declare function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer, shouldInferAutoLayout, }: CodeGeneratorDeps): CodeGenerator;
|
|
136
|
+
declare function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer, shouldInferAutoLayout, skipComponentKeys, }: CodeGeneratorDeps): CodeGenerator;
|
|
136
137
|
|
|
137
138
|
interface ComponentHandler<T extends NormalizedInstanceNode["componentProperties"] = NormalizedInstanceNode["componentProperties"]> {
|
|
138
139
|
key: string;
|