@seed-design/figma 1.3.13 → 1.3.14
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 +292 -141
- package/lib/codegen/index.js +292 -141
- package/lib/codegen/targets/react/index.cjs +389 -172
- package/lib/codegen/targets/react/index.js +389 -172
- package/lib/index.cjs +358 -141
- package/lib/index.js +358 -141
- package/package.json +3 -3
- package/src/codegen/component-properties.ts +9 -9
- package/src/codegen/targets/react/component/handlers/app-bar.ts +1 -1
- package/src/codegen/targets/react/component/handlers/checkbox.ts +1 -1
- package/src/codegen/targets/react/component/handlers/field-button.ts +5 -5
- package/src/codegen/targets/react/component/handlers/index.ts +1 -1
- package/src/codegen/targets/react/component/handlers/legacy-chip.ts +96 -0
- package/src/codegen/targets/react/component/handlers/radio-group.ts +1 -1
- package/src/codegen/targets/react/component/handlers/select-box.ts +1 -1
- package/src/codegen/targets/react/component/handlers/slider.ts +1 -1
- package/src/codegen/targets/react/component/handlers/tabs.ts +11 -5
- package/src/codegen/targets/react/component/handlers/text-field.ts +2 -2
- package/src/entities/data/__generated__/component-sets/index.d.ts +260 -109
- package/src/entities/data/__generated__/component-sets/index.mjs +260 -109
- package/src/entities/data/__generated__/components/index.d.ts +163 -58
- package/src/entities/data/__generated__/components/index.mjs +163 -58
- package/src/entities/data/__generated__/icons/index.mjs +66 -0
- package/src/codegen/targets/react/component/handlers/chip.ts +0 -93
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seed-design/figma",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.14",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/daangn/seed-design.git",
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
"sync-entities": "find src/entities/data/__generated__ -mindepth 1 -maxdepth 1 ! -name 'archive' -exec rm -rf {} + 2>/dev/null; bun figma-extractor src/entities/data/__generated__"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@seed-design/css": "1.2.
|
|
42
|
+
"@seed-design/css": "1.2.12",
|
|
43
43
|
"change-case": "^5.4.4",
|
|
44
44
|
"ts-pattern": "^5.7.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@figma/plugin-typings": "^1.123.0",
|
|
48
48
|
"@figma/rest-api-spec": "^0.36.0",
|
|
49
|
-
"@karrotmarket/icon-data": "^1.
|
|
49
|
+
"@karrotmarket/icon-data": "^1.34.0",
|
|
50
50
|
"@seed-design/figma-extractor": "^1.1.1",
|
|
51
51
|
"typescript": "^6.0.0"
|
|
52
52
|
},
|
|
@@ -43,15 +43,15 @@ export type CheckboxProperties = InferComponentDefinition<
|
|
|
43
43
|
>;
|
|
44
44
|
|
|
45
45
|
export type CheckboxGroupFieldProperties = InferComponentDefinition<
|
|
46
|
-
typeof sets.
|
|
46
|
+
typeof sets.componentCheckboxField.componentPropertyDefinitions
|
|
47
47
|
>;
|
|
48
48
|
|
|
49
49
|
export type CheckmarkProperties = InferComponentDefinition<
|
|
50
50
|
typeof sets.componentCheckmark.componentPropertyDefinitions
|
|
51
51
|
>;
|
|
52
52
|
|
|
53
|
-
export type
|
|
54
|
-
typeof sets.
|
|
53
|
+
export type LegacyChipProperties = InferComponentDefinition<
|
|
54
|
+
typeof sets.componentDeprecatedChip.componentPropertyDefinitions
|
|
55
55
|
>;
|
|
56
56
|
|
|
57
57
|
export type ChipIconSuffixProperties = InferComponentDefinition<
|
|
@@ -175,7 +175,7 @@ export type RadioProperties = InferComponentDefinition<
|
|
|
175
175
|
>;
|
|
176
176
|
|
|
177
177
|
export type RadioGroupFieldProperties = InferComponentDefinition<
|
|
178
|
-
typeof sets.
|
|
178
|
+
typeof sets.componentRadioField.componentPropertyDefinitions
|
|
179
179
|
>;
|
|
180
180
|
|
|
181
181
|
export type RadiomarkProperties = InferComponentDefinition<
|
|
@@ -199,7 +199,7 @@ export type SegmentedControlItemProperties = InferComponentDefinition<
|
|
|
199
199
|
>;
|
|
200
200
|
|
|
201
201
|
export type SelectBoxGroupFieldProperties = InferComponentDefinition<
|
|
202
|
-
typeof sets.
|
|
202
|
+
typeof sets.componentSelectBoxField.componentPropertyDefinitions
|
|
203
203
|
>;
|
|
204
204
|
|
|
205
205
|
export type SelectBoxGroupProperties = InferComponentDefinition<
|
|
@@ -231,7 +231,7 @@ export type SliderTicksProperties = InferComponentDefinition<
|
|
|
231
231
|
>;
|
|
232
232
|
|
|
233
233
|
export type SliderFieldProperties = InferComponentDefinition<
|
|
234
|
-
typeof sets.
|
|
234
|
+
typeof sets.componentSliderField.componentPropertyDefinitions
|
|
235
235
|
>;
|
|
236
236
|
|
|
237
237
|
export type SnackbarProperties = InferComponentDefinition<
|
|
@@ -299,7 +299,7 @@ export type TagGroupItemProperties = InferComponentDefinition<
|
|
|
299
299
|
>;
|
|
300
300
|
|
|
301
301
|
export type TextInputFieldProperties = InferComponentDefinition<
|
|
302
|
-
typeof sets.
|
|
302
|
+
typeof sets.componentTextField.componentPropertyDefinitions
|
|
303
303
|
>;
|
|
304
304
|
|
|
305
305
|
export type TextInputOutlineProperties = InferComponentDefinition<
|
|
@@ -327,7 +327,7 @@ export type TextInputUnderlineProperties = InferComponentDefinition<
|
|
|
327
327
|
>;
|
|
328
328
|
|
|
329
329
|
export type TextareaFieldProperties = InferComponentDefinition<
|
|
330
|
-
typeof sets.
|
|
330
|
+
typeof sets.componentMultilineTextField.componentPropertyDefinitions
|
|
331
331
|
>;
|
|
332
332
|
|
|
333
333
|
export type TextareaProperties = InferComponentDefinition<
|
|
@@ -335,7 +335,7 @@ export type TextareaProperties = InferComponentDefinition<
|
|
|
335
335
|
>;
|
|
336
336
|
|
|
337
337
|
export type FieldButtonProperties = InferComponentDefinition<
|
|
338
|
-
typeof sets.
|
|
338
|
+
typeof sets.componentFieldButton.componentPropertyDefinitions
|
|
339
339
|
>;
|
|
340
340
|
|
|
341
341
|
export type InputButtonProperties = InferComponentDefinition<
|
|
@@ -154,7 +154,7 @@ export const createAppBarHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
154
154
|
export const createAppBarPresetHandler = (ctx: ComponentHandlerDeps) => {
|
|
155
155
|
const appBarHandler = createAppBarHandler(ctx);
|
|
156
156
|
|
|
157
|
-
return defineComponentHandler(metadata.
|
|
157
|
+
return defineComponentHandler(metadata.componentTopNavigationPreset.key, (node, traverse) => {
|
|
158
158
|
const [appBarNode] = findAllInstances<AppBarProperties>({
|
|
159
159
|
node,
|
|
160
160
|
key: metadata.componentTopNavigation.key,
|
|
@@ -60,7 +60,7 @@ export const createCheckboxGroupFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
60
60
|
const fieldFooterHandler = createFieldFooterHandler(ctx);
|
|
61
61
|
|
|
62
62
|
return defineComponentHandler<CheckboxGroupFieldProperties>(
|
|
63
|
-
metadata.
|
|
63
|
+
metadata.componentCheckboxField.key,
|
|
64
64
|
(node, traverse) => {
|
|
65
65
|
const { componentProperties: props } = node;
|
|
66
66
|
|
|
@@ -29,7 +29,7 @@ export const createFieldButtonHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
29
29
|
const fieldFooterHandler = createFieldFooterHandler(ctx);
|
|
30
30
|
|
|
31
31
|
return defineComponentHandler<FieldButtonProperties>(
|
|
32
|
-
sets.
|
|
32
|
+
sets.componentFieldButton.key,
|
|
33
33
|
(node, traverse) => {
|
|
34
34
|
const props = node.componentProperties;
|
|
35
35
|
|
|
@@ -131,7 +131,7 @@ export const createSelectFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
131
131
|
const fieldButtonHandler = createFieldButtonHandler(ctx);
|
|
132
132
|
|
|
133
133
|
return defineComponentHandler<GenericFieldButtonProps>(
|
|
134
|
-
components.
|
|
134
|
+
components.privateComponentSelectField.key,
|
|
135
135
|
(node, traverse) => {
|
|
136
136
|
const [fieldButton] = findAllInstances<FieldButtonProperties>({
|
|
137
137
|
node,
|
|
@@ -147,7 +147,7 @@ export const createDatePickerFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
147
147
|
const fieldButtonHandler = createFieldButtonHandler(ctx);
|
|
148
148
|
|
|
149
149
|
return defineComponentHandler<GenericFieldButtonProps>(
|
|
150
|
-
components.
|
|
150
|
+
components.privateComponentDatePickerField.key,
|
|
151
151
|
(node, traverse) => {
|
|
152
152
|
const [fieldButton] = findAllInstances<FieldButtonProperties>({
|
|
153
153
|
node,
|
|
@@ -163,7 +163,7 @@ export const createTimePickerFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
163
163
|
const fieldButtonHandler = createFieldButtonHandler(ctx);
|
|
164
164
|
|
|
165
165
|
return defineComponentHandler<GenericFieldButtonProps>(
|
|
166
|
-
components.
|
|
166
|
+
components.privateComponentTimePickerField.key,
|
|
167
167
|
(node, traverse) => {
|
|
168
168
|
const [fieldButton] = findAllInstances<FieldButtonProperties>({
|
|
169
169
|
node,
|
|
@@ -179,7 +179,7 @@ export const createAddressFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
179
179
|
const fieldButtonHandler = createFieldButtonHandler(ctx);
|
|
180
180
|
|
|
181
181
|
return defineComponentHandler<GenericFieldButtonProps>(
|
|
182
|
-
components.
|
|
182
|
+
components.privateComponentAddressPickerField.key,
|
|
183
183
|
(node, traverse) => {
|
|
184
184
|
const [fieldButton] = findAllInstances<FieldButtonProperties>({
|
|
185
185
|
node,
|
|
@@ -8,7 +8,7 @@ export * from "./bottom-sheet";
|
|
|
8
8
|
export * from "./callout";
|
|
9
9
|
export * from "./checkbox";
|
|
10
10
|
export * from "./checkmark";
|
|
11
|
-
export * from "./chip";
|
|
11
|
+
export * from "./legacy-chip";
|
|
12
12
|
export * from "./content-placeholder";
|
|
13
13
|
export * from "./contextual-floating-button";
|
|
14
14
|
export * from "./divider";
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AvatarProperties,
|
|
3
|
+
ChipIconSuffixProperties,
|
|
4
|
+
LegacyChipProperties,
|
|
5
|
+
} from "@/codegen/component-properties";
|
|
6
|
+
import { defineComponentHandler } from "@/codegen/core";
|
|
7
|
+
import * as metadata from "@/entities/data/__generated__/component-sets";
|
|
8
|
+
import * as components from "@/entities/data/__generated__/components";
|
|
9
|
+
import { match } from "ts-pattern";
|
|
10
|
+
import { createLocalSnippetHelper, createSeedReactElement } from "../../element-factories";
|
|
11
|
+
import type { ComponentHandlerDeps } from "../deps.interface";
|
|
12
|
+
import { handleSizeProp } from "../size";
|
|
13
|
+
import { camelCase } from "change-case";
|
|
14
|
+
import { findAllInstances } from "@/utils/figma-node";
|
|
15
|
+
import { createAvatarHandler } from "@/codegen/targets/react/component/handlers/avatar";
|
|
16
|
+
|
|
17
|
+
const { createLocalSnippetElement } = createLocalSnippetHelper("chip");
|
|
18
|
+
|
|
19
|
+
const createChipIconSuffixHandler = (ctx: ComponentHandlerDeps) => {
|
|
20
|
+
return defineComponentHandler<ChipIconSuffixProperties>(
|
|
21
|
+
components.componentChipSuffixIcon.key,
|
|
22
|
+
({ componentProperties }) => {
|
|
23
|
+
return createLocalSnippetElement(
|
|
24
|
+
"Chip.SuffixIcon",
|
|
25
|
+
undefined,
|
|
26
|
+
createSeedReactElement("Icon", {
|
|
27
|
+
svg: ctx.iconHandler.transform(componentProperties["Icon#33203:0"]),
|
|
28
|
+
}),
|
|
29
|
+
);
|
|
30
|
+
},
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const createLegacyChipHandler = (ctx: ComponentHandlerDeps) => {
|
|
35
|
+
const avatarHandler = createAvatarHandler(ctx);
|
|
36
|
+
const iconSuffixHandler = createChipIconSuffixHandler(ctx);
|
|
37
|
+
|
|
38
|
+
return defineComponentHandler<LegacyChipProperties>(
|
|
39
|
+
metadata.componentDeprecatedChip.key,
|
|
40
|
+
(node, traverse) => {
|
|
41
|
+
const props = node.componentProperties;
|
|
42
|
+
|
|
43
|
+
const prefix = match(props["Prefix Type"].value)
|
|
44
|
+
.with("None", "Image", () => undefined)
|
|
45
|
+
.with("Icon", () =>
|
|
46
|
+
createLocalSnippetElement(
|
|
47
|
+
"Chip.PrefixIcon",
|
|
48
|
+
undefined,
|
|
49
|
+
createSeedReactElement("Icon", {
|
|
50
|
+
svg: ctx.iconHandler.transform(props["Prefix Icon#8722:0"]),
|
|
51
|
+
}),
|
|
52
|
+
),
|
|
53
|
+
)
|
|
54
|
+
.with("Avatar", () => {
|
|
55
|
+
const [avatar] = findAllInstances<AvatarProperties>({
|
|
56
|
+
node,
|
|
57
|
+
key: avatarHandler.key,
|
|
58
|
+
});
|
|
59
|
+
if (!avatar) return undefined;
|
|
60
|
+
|
|
61
|
+
return createLocalSnippetElement(
|
|
62
|
+
"Chip.PrefixAvatar",
|
|
63
|
+
undefined,
|
|
64
|
+
avatarHandler.transform(avatar, traverse),
|
|
65
|
+
);
|
|
66
|
+
})
|
|
67
|
+
.exhaustive();
|
|
68
|
+
|
|
69
|
+
const label = createLocalSnippetElement("Chip.Label", undefined, props["Label#7185:0"].value);
|
|
70
|
+
|
|
71
|
+
const [suffixIcon] = findAllInstances<ChipIconSuffixProperties>({
|
|
72
|
+
node,
|
|
73
|
+
key: components.componentChipSuffixIcon.key,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const commonProps = {
|
|
77
|
+
variant: camelCase(props.Variant.value),
|
|
78
|
+
size: handleSizeProp(props.Size.value),
|
|
79
|
+
layout: props["Label#7185:0"].value ? "withText" : "iconOnly",
|
|
80
|
+
...(props.Selected.value === "True" && {
|
|
81
|
+
defaultChecked: true,
|
|
82
|
+
}),
|
|
83
|
+
...(props.State.value === "Disabled" && {
|
|
84
|
+
disabled: true,
|
|
85
|
+
}),
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
return createLocalSnippetElement(
|
|
89
|
+
"Chip.Toggle",
|
|
90
|
+
commonProps,
|
|
91
|
+
[prefix, label, suffixIcon ? iconSuffixHandler.transform(suffixIcon, traverse) : undefined],
|
|
92
|
+
{ comment: "목적에 따라 Chip.Button, Chip.RadioItem 등으로 바꿔 사용하세요." },
|
|
93
|
+
);
|
|
94
|
+
},
|
|
95
|
+
);
|
|
96
|
+
};
|
|
@@ -49,7 +49,7 @@ export const createRadioGroupFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
49
49
|
const fieldFooterHandler = createFieldFooterHandler(ctx);
|
|
50
50
|
|
|
51
51
|
return defineComponentHandler<RadioGroupFieldProperties>(
|
|
52
|
-
metadata.
|
|
52
|
+
metadata.componentRadioField.key,
|
|
53
53
|
(node, traverse) => {
|
|
54
54
|
const { componentProperties: props } = node;
|
|
55
55
|
|
|
@@ -266,7 +266,7 @@ export const createSelectBoxGroupFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
266
266
|
const selectBoxGroupHandler = createSelectBoxGroupHandler(ctx);
|
|
267
267
|
|
|
268
268
|
return defineComponentHandler<SelectBoxGroupFieldProperties>(
|
|
269
|
-
metadata.
|
|
269
|
+
metadata.componentSelectBoxField.key,
|
|
270
270
|
(node, traverse) => {
|
|
271
271
|
const { componentProperties: props } = node;
|
|
272
272
|
|
|
@@ -36,7 +36,7 @@ export const createSliderFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
36
36
|
const fieldFooterHandler = createFieldFooterHandler(ctx);
|
|
37
37
|
|
|
38
38
|
return defineComponentHandler<SliderFieldProperties>(
|
|
39
|
-
metadata.
|
|
39
|
+
metadata.componentSliderField.key,
|
|
40
40
|
(node, traverse) => {
|
|
41
41
|
const props = node.componentProperties;
|
|
42
42
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLocalSnippetHelper } from "../../element-factories";
|
|
2
2
|
import type {
|
|
3
|
-
ChipProperties,
|
|
4
3
|
ChipTabsTriggerProperties,
|
|
4
|
+
LegacyChipProperties,
|
|
5
5
|
TabsChipWrapperProperties,
|
|
6
6
|
TabsLineTriggerFillProperties,
|
|
7
7
|
TabsLineTriggerHugProperties,
|
|
@@ -217,7 +217,10 @@ const createChipTabsHandler = (_ctx: ComponentHandlerDeps) => {
|
|
|
217
217
|
|
|
218
218
|
const triggers = nodes.map((node) => {
|
|
219
219
|
// this is redundant; can this be better?
|
|
220
|
-
const [chip] = findAllInstances<
|
|
220
|
+
const [chip] = findAllInstances<LegacyChipProperties>({
|
|
221
|
+
node,
|
|
222
|
+
key: metadata.componentDeprecatedChip.key,
|
|
223
|
+
});
|
|
221
224
|
if (!chip) throw new Error("Chip not found in ChipTabsTrigger");
|
|
222
225
|
|
|
223
226
|
return {
|
|
@@ -230,9 +233,9 @@ const createChipTabsHandler = (_ctx: ComponentHandlerDeps) => {
|
|
|
230
233
|
(node) => node.componentProperties.State.value === "Selected",
|
|
231
234
|
);
|
|
232
235
|
const [selectedChip] = selectedTrigger
|
|
233
|
-
? findAllInstances<
|
|
236
|
+
? findAllInstances<LegacyChipProperties>({
|
|
234
237
|
node: selectedTrigger,
|
|
235
|
-
key: metadata.
|
|
238
|
+
key: metadata.componentDeprecatedChip.key,
|
|
236
239
|
})
|
|
237
240
|
: [undefined];
|
|
238
241
|
if (!selectedChip) throw new Error("Chip not found in ChipTabsTrigger");
|
|
@@ -273,7 +276,10 @@ const createChipTabsTriggerHandler = (_ctx: ComponentHandlerDeps) =>
|
|
|
273
276
|
defineComponentHandler<ChipTabsTriggerProperties>(
|
|
274
277
|
metadata.privateComponentTabItemChip.key,
|
|
275
278
|
(node) => {
|
|
276
|
-
const [chip] = findAllInstances<
|
|
279
|
+
const [chip] = findAllInstances<LegacyChipProperties>({
|
|
280
|
+
node,
|
|
281
|
+
key: metadata.componentDeprecatedChip.key,
|
|
282
|
+
});
|
|
277
283
|
if (!chip) throw new Error("Chip not found in ChipTabsTrigger");
|
|
278
284
|
|
|
279
285
|
const props = node.componentProperties;
|
|
@@ -31,7 +31,7 @@ export const createTextInputFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
31
31
|
const fieldFooterHandler = createFieldFooterHandler(ctx);
|
|
32
32
|
|
|
33
33
|
return defineComponentHandler<TextInputFieldProperties>(
|
|
34
|
-
metadata.
|
|
34
|
+
metadata.componentTextField.key,
|
|
35
35
|
(node, traverse) => {
|
|
36
36
|
const props = node.componentProperties;
|
|
37
37
|
|
|
@@ -189,7 +189,7 @@ export const createTextareaFieldHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
189
189
|
const fieldFooterHandler = createFieldFooterHandler(ctx);
|
|
190
190
|
|
|
191
191
|
return defineComponentHandler<TextareaFieldProperties>(
|
|
192
|
-
metadata.
|
|
192
|
+
metadata.componentMultilineTextField.key,
|
|
193
193
|
(node, traverse) => {
|
|
194
194
|
const [textarea] = findAllInstances<TextareaProperties>({
|
|
195
195
|
node,
|