@seed-design/figma 0.0.20 → 0.0.22
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 +8019 -0
- package/lib/codegen/index.d.ts +1827 -0
- package/lib/codegen/index.js +7989 -0
- package/lib/codegen/targets/react/index.cjs +12205 -0
- package/lib/codegen/targets/react/index.d.ts +270 -0
- package/lib/codegen/targets/react/index.js +12187 -0
- package/lib/index.cjs +86 -2741
- package/lib/index.d.ts +18 -1933
- package/lib/index.js +68 -2715
- package/package.json +18 -9
- package/src/codegen/{targets/react/component/properties.type.ts → component-properties.ts} +43 -43
- package/src/codegen/core/codegen.ts +24 -9
- package/src/codegen/core/{component.ts → component-handler.ts} +3 -3
- package/src/codegen/core/component-type-helper.ts +35 -0
- package/src/codegen/core/context.ts +20 -0
- package/src/codegen/core/index.ts +16 -14
- package/src/codegen/core/infer-layout.test.ts +17 -16
- package/src/codegen/core/infer-layout.ts +1 -1
- package/src/codegen/core/{props.ts → props-converter.ts} +10 -13
- package/src/codegen/core/{value.ts → value-resolver.ts} +90 -52
- package/src/codegen/default-services.ts +44 -0
- package/src/codegen/index.ts +1 -44
- package/src/codegen/targets/figma/frame.ts +8 -8
- package/src/codegen/targets/figma/index.ts +1 -1
- package/src/codegen/targets/figma/pipeline.ts +71 -0
- package/src/codegen/targets/figma/props.ts +59 -70
- package/src/codegen/targets/figma/shape.ts +18 -18
- package/src/codegen/targets/figma/text.ts +6 -6
- package/src/codegen/targets/figma/value-resolver.ts +22 -0
- package/src/codegen/targets/react/component/deps.interface.ts +5 -4
- package/src/codegen/targets/react/component/{transformers → handlers}/action-button.ts +8 -14
- package/src/codegen/targets/react/component/{transformers → handlers}/action-chip.ts +10 -20
- package/src/codegen/targets/react/component/{transformers → handlers}/action-sheet.ts +13 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/app-bar.ts +28 -36
- package/src/codegen/targets/react/component/handlers/avatar-stack.ts +29 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/avatar.ts +12 -9
- package/src/codegen/targets/react/component/handlers/badge.ts +18 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/callout.ts +6 -8
- package/src/codegen/targets/react/component/{transformers → handlers}/checkbox.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/chip-tabs.ts +10 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/control-chip.ts +10 -20
- package/src/codegen/targets/react/component/{transformers → handlers}/error-state.ts +9 -9
- package/src/codegen/targets/react/component/{transformers → handlers}/extended-action-sheet.ts +16 -18
- package/src/codegen/targets/react/component/{transformers → handlers}/extended-fab.ts +6 -6
- package/src/codegen/targets/react/component/handlers/fab.ts +18 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/help-bubble.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/identity-placeholder.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/inline-banner.ts +7 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/manner-temp-badge.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/multiline-text-field.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/progress-circle.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/reaction-button.ts +6 -6
- package/src/codegen/targets/react/component/{transformers → handlers}/segmented-control.ts +10 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/select-box.ts +10 -10
- package/src/codegen/targets/react/component/handlers/skeleton.ts +25 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/snackbar.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/switch.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/tabs.ts +15 -15
- package/src/codegen/targets/react/component/{transformers → handlers}/text-button.ts +7 -13
- package/src/codegen/targets/react/component/{transformers → handlers}/text-field.ts +9 -9
- package/src/codegen/targets/react/component/{transformers → handlers}/toggle-button.ts +7 -11
- package/src/codegen/targets/react/component/index.ts +79 -75
- package/src/codegen/targets/react/frame.ts +8 -8
- package/src/codegen/targets/react/icon.ts +50 -0
- package/src/codegen/targets/react/index.ts +1 -1
- package/src/codegen/targets/react/instance.ts +19 -50
- package/src/codegen/targets/react/pipeline.ts +108 -0
- package/src/codegen/targets/react/props.ts +95 -73
- package/src/codegen/targets/react/shape.ts +5 -5
- package/src/codegen/targets/react/text.ts +6 -6
- package/src/codegen/targets/react/value-resolver.ts +35 -0
- package/src/entities/icon.repository.ts +2 -2
- package/src/entities/icon.service.ts +9 -20
- package/src/entities/style.service.ts +5 -17
- package/src/entities/variable.service.ts +36 -68
- package/src/normalizer/from-plugin.ts +3 -0
- package/src/normalizer/from-rest.ts +6 -0
- package/src/normalizer/types.ts +4 -1
- package/src/utils/figma-variable.ts +39 -3
- package/src/codegen/core/component.types.ts +0 -29
- package/src/codegen/targets/figma/context.ts +0 -139
- package/src/codegen/targets/react/component/transformers/avatar-stack.ts +0 -29
- package/src/codegen/targets/react/component/transformers/badge.ts +0 -21
- package/src/codegen/targets/react/component/transformers/fab.ts +0 -18
- package/src/codegen/targets/react/component/transformers/skeleton.ts +0 -51
- package/src/codegen/targets/react/context.ts +0 -176
- /package/src/codegen/core/{element.ts → element-transformer.ts} +0 -0
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { createElement, defineComponentTransformer } from "@/codegen/core";
|
|
2
|
-
import * as metadata from "@/entities/data/__generated__/component-sets";
|
|
3
|
-
import { camelCase } from "change-case";
|
|
4
|
-
import type { SeedComponentTransformerDeps } from "../deps.interface";
|
|
5
|
-
import type { SkeletonProperties } from "../properties.type";
|
|
6
|
-
|
|
7
|
-
export const createSkeletonTransformer = (ctx: SeedComponentTransformerDeps) =>
|
|
8
|
-
defineComponentTransformer<SkeletonProperties>(
|
|
9
|
-
metadata.skeleton.key,
|
|
10
|
-
({
|
|
11
|
-
componentProperties: props,
|
|
12
|
-
absoluteBoundingBox,
|
|
13
|
-
layoutSizingHorizontal,
|
|
14
|
-
layoutSizingVertical,
|
|
15
|
-
boundVariables,
|
|
16
|
-
}) => {
|
|
17
|
-
const commonProps = {
|
|
18
|
-
radius: camelCase(props.Radius.value),
|
|
19
|
-
width: (() => {
|
|
20
|
-
switch (layoutSizingHorizontal) {
|
|
21
|
-
case "FIXED": {
|
|
22
|
-
const variableId = boundVariables?.size?.x?.id;
|
|
23
|
-
if (variableId) return ctx.variableService.getVariableName(variableId);
|
|
24
|
-
|
|
25
|
-
return `${absoluteBoundingBox?.width}px`;
|
|
26
|
-
}
|
|
27
|
-
case "FILL":
|
|
28
|
-
return "full";
|
|
29
|
-
default:
|
|
30
|
-
return "full";
|
|
31
|
-
}
|
|
32
|
-
})(),
|
|
33
|
-
height: (() => {
|
|
34
|
-
switch (layoutSizingVertical) {
|
|
35
|
-
case "FIXED": {
|
|
36
|
-
const variableId = boundVariables?.size?.y?.id;
|
|
37
|
-
if (variableId) return ctx.variableService.getVariableName(variableId);
|
|
38
|
-
|
|
39
|
-
return `${absoluteBoundingBox?.height}px`;
|
|
40
|
-
}
|
|
41
|
-
case "FILL":
|
|
42
|
-
return "full";
|
|
43
|
-
default:
|
|
44
|
-
return "full";
|
|
45
|
-
}
|
|
46
|
-
})(),
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
return createElement("Skeleton", commonProps);
|
|
50
|
-
},
|
|
51
|
-
);
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { createCodegenTransformer, createValueTransformer } from "@/codegen/core";
|
|
2
|
-
import {
|
|
3
|
-
createIconService,
|
|
4
|
-
createStyleService,
|
|
5
|
-
createVariableService,
|
|
6
|
-
iconRepository,
|
|
7
|
-
styleRepository,
|
|
8
|
-
variableRepository,
|
|
9
|
-
} from "@/entities";
|
|
10
|
-
import { camelCasePreserveUnderscoreBetweenNumbers } from "@/utils/common";
|
|
11
|
-
import { toCssPixel, toCssRgba } from "@/utils/css";
|
|
12
|
-
import { camelCase } from "change-case";
|
|
13
|
-
import { createSeedComponentTransformers } from "./component";
|
|
14
|
-
import { createFrameTransformer } from "./frame";
|
|
15
|
-
import { createInstanceTransformer } from "./instance";
|
|
16
|
-
import {
|
|
17
|
-
createContainerLayoutPropsTransformer,
|
|
18
|
-
createFrameFillPropsTransformer,
|
|
19
|
-
createIconSelfLayoutPropsTransformer,
|
|
20
|
-
createRadiusPropsTransformer,
|
|
21
|
-
createSelfLayoutPropsTransformer,
|
|
22
|
-
createShapeFillPropsTransformer,
|
|
23
|
-
createStrokePropsTransformer,
|
|
24
|
-
createTextFillPropsTransformer,
|
|
25
|
-
createTypeStylePropsTransformer,
|
|
26
|
-
} from "./props";
|
|
27
|
-
import {
|
|
28
|
-
createBooleanOperationTransformer,
|
|
29
|
-
createRectangleTransformer,
|
|
30
|
-
createVectorTransformer,
|
|
31
|
-
} from "./shape";
|
|
32
|
-
import { createTextTransformer } from "./text";
|
|
33
|
-
|
|
34
|
-
const IGNORED_COMPONENT_KEYS = new Set<string>([
|
|
35
|
-
"1acdc7247c83a73a0504d6fad86d08783938cb1a",
|
|
36
|
-
"b38b719b61cdf1a24458d7a7888bee74b7649084",
|
|
37
|
-
]);
|
|
38
|
-
|
|
39
|
-
export interface CreateContextOptions {
|
|
40
|
-
ignoredComponentKeys?: Set<string>;
|
|
41
|
-
shouldInferVariableName: boolean;
|
|
42
|
-
shouldInferAutoLayout: boolean;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const styleService = createStyleService({
|
|
46
|
-
styleRepository,
|
|
47
|
-
styleNameTransformer: ({ slug }) =>
|
|
48
|
-
camelCase(slug[slug.length - 1]!, { mergeAmbiguousCharacters: true }),
|
|
49
|
-
});
|
|
50
|
-
const variableService = createVariableService({
|
|
51
|
-
variableRepository,
|
|
52
|
-
variableNameTransformer: ({ slug }) =>
|
|
53
|
-
slug
|
|
54
|
-
.filter(
|
|
55
|
-
(s) =>
|
|
56
|
-
!(
|
|
57
|
-
s === "dimension" ||
|
|
58
|
-
s === "radius" ||
|
|
59
|
-
s === "font-size" ||
|
|
60
|
-
s === "font-weight" ||
|
|
61
|
-
s === "line-height"
|
|
62
|
-
),
|
|
63
|
-
)
|
|
64
|
-
.map((s) => s.replaceAll(",", "_"))
|
|
65
|
-
.map(camelCasePreserveUnderscoreBetweenNumbers)
|
|
66
|
-
.join("."),
|
|
67
|
-
inferCompareFunction: (name1: string, name2: string) => {
|
|
68
|
-
const scoreFn = (name: string) => {
|
|
69
|
-
let score = 0;
|
|
70
|
-
if (name.includes("bg")) {
|
|
71
|
-
score += 100;
|
|
72
|
-
}
|
|
73
|
-
if (name.includes("fg")) {
|
|
74
|
-
score += 100;
|
|
75
|
-
}
|
|
76
|
-
if (name.includes("stroke")) {
|
|
77
|
-
score += 100;
|
|
78
|
-
}
|
|
79
|
-
if (name.includes("spacing-x")) {
|
|
80
|
-
score -= 100;
|
|
81
|
-
}
|
|
82
|
-
if (name.includes("spacing-y")) {
|
|
83
|
-
score -= 100;
|
|
84
|
-
}
|
|
85
|
-
if (name.endsWith("pressed")) {
|
|
86
|
-
score -= 100;
|
|
87
|
-
}
|
|
88
|
-
return score;
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
return scoreFn(name2) - scoreFn(name1);
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
const iconService = createIconService({
|
|
95
|
-
iconRepository,
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
// TODO: implement figma component service
|
|
99
|
-
const componentTransformers = createSeedComponentTransformers({
|
|
100
|
-
iconService,
|
|
101
|
-
variableService,
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
export function createContext(options: CreateContextOptions) {
|
|
105
|
-
const {
|
|
106
|
-
ignoredComponentKeys = IGNORED_COMPONENT_KEYS,
|
|
107
|
-
shouldInferVariableName,
|
|
108
|
-
shouldInferAutoLayout,
|
|
109
|
-
} = options;
|
|
110
|
-
|
|
111
|
-
const valueTransformer = createValueTransformer({
|
|
112
|
-
variableService,
|
|
113
|
-
formatters: {
|
|
114
|
-
color: (value: RGBA) => toCssRgba(value),
|
|
115
|
-
dimension: (value: number) => toCssPixel(value),
|
|
116
|
-
fontDimension: (value: number) => toCssPixel(value),
|
|
117
|
-
fontWeight: (value: number) => value,
|
|
118
|
-
},
|
|
119
|
-
shouldInferVariableName,
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
const containerLayoutPropsTransformer = createContainerLayoutPropsTransformer(valueTransformer);
|
|
123
|
-
const selfLayoutPropsTransformer = createSelfLayoutPropsTransformer(valueTransformer);
|
|
124
|
-
const iconSelfLayoutPropsTransformer = createIconSelfLayoutPropsTransformer(valueTransformer);
|
|
125
|
-
const frameFillPropsTransformer = createFrameFillPropsTransformer(valueTransformer);
|
|
126
|
-
const shapeFillPropsTransformer = createShapeFillPropsTransformer(valueTransformer);
|
|
127
|
-
const textFillPropsTransformer = createTextFillPropsTransformer(valueTransformer);
|
|
128
|
-
const radiusPropsTransformer = createRadiusPropsTransformer(valueTransformer);
|
|
129
|
-
const strokePropsTransformer = createStrokePropsTransformer(valueTransformer);
|
|
130
|
-
const typeStylePropsTransformer = createTypeStylePropsTransformer({
|
|
131
|
-
valueTransformer,
|
|
132
|
-
styleService,
|
|
133
|
-
});
|
|
134
|
-
const propsTransformers = {
|
|
135
|
-
containerLayout: containerLayoutPropsTransformer,
|
|
136
|
-
selfLayout: selfLayoutPropsTransformer,
|
|
137
|
-
iconSelfLayout: iconSelfLayoutPropsTransformer,
|
|
138
|
-
frameFill: frameFillPropsTransformer,
|
|
139
|
-
shapeFill: shapeFillPropsTransformer,
|
|
140
|
-
textFill: textFillPropsTransformer,
|
|
141
|
-
radius: radiusPropsTransformer,
|
|
142
|
-
stroke: strokePropsTransformer,
|
|
143
|
-
typeStyle: typeStylePropsTransformer,
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
const frameTransformer = createFrameTransformer({
|
|
147
|
-
propsTransformers,
|
|
148
|
-
});
|
|
149
|
-
const instanceTransformer = createInstanceTransformer({
|
|
150
|
-
iconService,
|
|
151
|
-
ignoredComponentKeys,
|
|
152
|
-
propsTransformers,
|
|
153
|
-
componentTransformers,
|
|
154
|
-
frameTransformer,
|
|
155
|
-
});
|
|
156
|
-
const textTransformer = createTextTransformer({
|
|
157
|
-
propsTransformers,
|
|
158
|
-
});
|
|
159
|
-
const rectangleTransformer = createRectangleTransformer({
|
|
160
|
-
propsTransformers,
|
|
161
|
-
});
|
|
162
|
-
const vectorTransformer = createVectorTransformer();
|
|
163
|
-
const booleanOperationTransformer = createBooleanOperationTransformer();
|
|
164
|
-
|
|
165
|
-
const codegenTransformer = createCodegenTransformer({
|
|
166
|
-
frameTransformer,
|
|
167
|
-
textTransformer,
|
|
168
|
-
rectangleTransformer,
|
|
169
|
-
instanceTransformer,
|
|
170
|
-
vectorTransformer,
|
|
171
|
-
booleanOperationTransformer,
|
|
172
|
-
shouldInferAutoLayout,
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
return codegenTransformer;
|
|
176
|
-
}
|
|
File without changes
|