@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seed-design/figma",
3
- "version": "1.3.13",
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.11",
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.28.0",
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.templateCheckboxField.componentPropertyDefinitions
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 ChipProperties = InferComponentDefinition<
54
- typeof sets.componentChip.componentPropertyDefinitions
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.templateRadioField.componentPropertyDefinitions
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.templateSelectBoxField.componentPropertyDefinitions
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.templateSliderField.componentPropertyDefinitions
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.templateTextField.componentPropertyDefinitions
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.templateTextareaField.componentPropertyDefinitions
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.templateFieldButton.componentPropertyDefinitions
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.templateTopNavigationPreset.key, (node, traverse) => {
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.templateCheckboxField.key,
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.templateFieldButton.key,
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.privateTemplateSelectField.key,
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.privateTemplateDatePickerField.key,
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.privateTemplateTimePickerField.key,
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.privateTemplateAddressPickerField.key,
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.templateRadioField.key,
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.templateSelectBoxField.key,
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.templateSliderField.key,
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<ChipProperties>({ node, key: metadata.componentChip.key });
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<ChipProperties>({
236
+ ? findAllInstances<LegacyChipProperties>({
234
237
  node: selectedTrigger,
235
- key: metadata.componentChip.key,
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<ChipProperties>({ node, key: metadata.componentChip.key });
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.templateTextField.key,
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.templateTextareaField.key,
192
+ metadata.componentMultilineTextField.key,
193
193
  (node, traverse) => {
194
194
  const [textarea] = findAllInstances<TextareaProperties>({
195
195
  node,