@seed-design/figma 0.2.4 → 1.0.0

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 (38) hide show
  1. package/lib/codegen/index.cjs +5645 -5196
  2. package/lib/codegen/index.d.ts +127 -91
  3. package/lib/codegen/index.d.ts.map +1 -1
  4. package/lib/codegen/index.js +5645 -5196
  5. package/lib/codegen/targets/react/index.cjs +5992 -5515
  6. package/lib/codegen/targets/react/index.d.ts.map +1 -1
  7. package/lib/codegen/targets/react/index.js +5992 -5515
  8. package/lib/index.cjs +5639 -5194
  9. package/lib/index.d.ts.map +1 -1
  10. package/lib/index.js +5639 -5194
  11. package/package.json +6 -5
  12. package/src/codegen/component-properties.ts +4 -0
  13. package/src/codegen/core/value-resolver.ts +8 -4
  14. package/src/codegen/targets/react/component/handlers/list-header.ts +20 -0
  15. package/src/codegen/targets/react/component/handlers/list-item.ts +8 -1
  16. package/src/codegen/targets/react/component/handlers/switch-mark.ts +26 -0
  17. package/src/codegen/targets/react/component/handlers/switch.ts +9 -3
  18. package/src/codegen/targets/react/component/index.ts +6 -2
  19. package/src/entities/data/__generated__/component-sets/index.d.ts +1 -0
  20. package/src/entities/data/__generated__/component-sets/index.mjs +1 -0
  21. package/src/entities/data/__generated__/component-sets/list-header.d.ts +3 -3
  22. package/src/entities/data/__generated__/component-sets/list-header.mjs +3 -3
  23. package/src/entities/data/__generated__/component-sets/manner-temp-badge.d.ts +10 -6
  24. package/src/entities/data/__generated__/component-sets/manner-temp-badge.mjs +10 -6
  25. package/src/entities/data/__generated__/component-sets/manner-temp.d.ts +10 -6
  26. package/src/entities/data/__generated__/component-sets/manner-temp.mjs +10 -6
  27. package/src/entities/data/__generated__/component-sets/segmented-control.d.ts +0 -9
  28. package/src/entities/data/__generated__/component-sets/segmented-control.mjs +0 -9
  29. package/src/entities/data/__generated__/component-sets/switch-mark.d.ts +35 -0
  30. package/src/entities/data/__generated__/component-sets/switch-mark.mjs +35 -0
  31. package/src/entities/data/__generated__/component-sets/switch.d.ts +2 -2
  32. package/src/entities/data/__generated__/component-sets/switch.mjs +2 -2
  33. package/src/entities/data/__generated__/variable-collections/index.d.ts +3 -0
  34. package/src/entities/data/{variable-collections.ts → __generated__/variable-collections/index.mjs} +238 -117
  35. package/src/entities/data/__generated__/variables/index.d.ts +3 -0
  36. package/src/entities/data/__generated__/variables/index.mjs +6666 -0
  37. package/src/entities/index.ts +2 -2
  38. package/src/entities/data/variables.ts +0 -4706
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seed-design/figma",
3
- "version": "0.2.4",
3
+ "version": "1.0.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/daangn/seed-design.git",
@@ -35,18 +35,19 @@
35
35
  "scripts": {
36
36
  "clean": "rm -rf lib",
37
37
  "build": "bunchee",
38
- "lint:publish": "bun publint"
38
+ "lint:publish": "bun publint",
39
+ "sync-entities": "rm -rf src/entities/data/__generated__ && bun figma-extractor src/entities/data/__generated__ component-sets variables variable-collections"
39
40
  },
40
41
  "dependencies": {
41
- "@seed-design/css": "0.2.4",
42
+ "@seed-design/css": "1.0.0",
42
43
  "change-case": "^5.4.4",
43
44
  "ts-pattern": "^5.7.0"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@figma/plugin-typings": "^1.110.0",
47
48
  "@figma/rest-api-spec": "^0.33.0",
48
- "@seed-design/figma-extractor": "^0.0.5",
49
- "typescript": "^5.8.3"
49
+ "@seed-design/figma-extractor": "^1.0.0",
50
+ "typescript": "^5.9.2"
50
51
  },
51
52
  "publishConfig": {
52
53
  "access": "public"
@@ -334,6 +334,10 @@ export type SwitchProperties = InferComponentDefinition<
334
334
  typeof metadata.switch.componentPropertyDefinitions
335
335
  >;
336
336
 
337
+ export type SwitchMarkProperties = InferComponentDefinition<
338
+ typeof metadata.switchMark.componentPropertyDefinitions
339
+ >;
340
+
337
341
  export type ToggleButtonProperties = InferComponentDefinition<
338
342
  typeof metadata.toggleButton.componentPropertyDefinitions
339
343
  >;
@@ -135,13 +135,17 @@ export function createValueResolver<TColor, TGradient, TDimension, TFontDimensio
135
135
  return undefined;
136
136
  }
137
137
 
138
- const inferred = variableService.infer(value, scope);
138
+ try {
139
+ const inferred = variableService.infer(value, scope);
139
140
 
140
- if (!inferred) {
141
+ if (!inferred) {
142
+ return undefined;
143
+ }
144
+
145
+ return getVariableName(inferred.key);
146
+ } catch {
141
147
  return undefined;
142
148
  }
143
-
144
- return getVariableName(inferred.key);
145
149
  }
146
150
 
147
151
  function processColor(
@@ -0,0 +1,20 @@
1
+ import type { ListHeaderProperties } from "@/codegen/component-properties";
2
+ import { defineComponentHandler } from "@/codegen/core";
3
+ import * as metadata from "@/entities/data/__generated__/component-sets";
4
+ import { createLocalSnippetHelper } from "../../element-factories";
5
+ import type { ComponentHandlerDeps } from "../deps.interface";
6
+ import { camelCase } from "change-case";
7
+
8
+ const { createLocalSnippetElement } = createLocalSnippetHelper("list-header");
9
+
10
+ export const createListHeaderHandler = (_ctx: ComponentHandlerDeps) =>
11
+ defineComponentHandler<ListHeaderProperties>(
12
+ metadata.listHeader.key,
13
+ ({ componentProperties: props }) => {
14
+ const commonProps = {
15
+ variant: camelCase(props["Variant"].value),
16
+ };
17
+
18
+ return createLocalSnippetElement("ListHeader", commonProps, props["Title#28588:0"].value);
19
+ },
20
+ );
@@ -102,6 +102,10 @@ export const createListItemHandler = (ctx: ComponentHandlerDeps) =>
102
102
  const disabled = props.State.value === "Disabled";
103
103
 
104
104
  const tag = (() => {
105
+ if (suffix?.tag === "SwitchMark") {
106
+ return "ListSwitchItem";
107
+ }
108
+
105
109
  if (prefix?.tag === "Checkmark" || suffix?.tag === "Checkmark") {
106
110
  return "ListCheckItem";
107
111
  }
@@ -131,7 +135,10 @@ export const createListItemHandler = (ctx: ComponentHandlerDeps) =>
131
135
  ...(prefix && { prefix }),
132
136
  ...(suffix && { suffix }),
133
137
  ...(disabled &&
134
- (tag === "ListButtonItem" || tag === "ListCheckItem" || tag === "ListRadioItem") && {
138
+ (tag === "ListButtonItem" ||
139
+ tag === "ListCheckItem" ||
140
+ tag === "ListRadioItem" ||
141
+ tag === "ListSwitchItem") && {
135
142
  disabled: true,
136
143
  }),
137
144
  ...(props.State.value === "Highlighted" && {
@@ -0,0 +1,26 @@
1
+ import type { SwitchMarkProperties } from "@/codegen/component-properties";
2
+ import { defineComponentHandler } from "@/codegen/core";
3
+ import * as metadata from "@/entities/data/__generated__/component-sets";
4
+ import { createLocalSnippetHelper } from "../../element-factories";
5
+ import type { ComponentHandlerDeps } from "../deps.interface";
6
+ import { match } from "ts-pattern";
7
+
8
+ const { createLocalSnippetElement } = createLocalSnippetHelper("switch");
9
+
10
+ export const createSwitchMarkHandler = (_ctx: ComponentHandlerDeps) =>
11
+ defineComponentHandler<SwitchMarkProperties>(
12
+ metadata.switchMark.key,
13
+ ({ componentProperties: props }) => {
14
+ const tone = match(props.Tone.value)
15
+ .with("Neutral", () => "neutral")
16
+ .with("🚫[Deprecated] Brand", () => "brand")
17
+ .exhaustive();
18
+
19
+ const commonProps = {
20
+ tone,
21
+ size: props.Size.value,
22
+ };
23
+
24
+ return createLocalSnippetElement("SwitchMark", commonProps);
25
+ },
26
+ );
@@ -19,6 +19,14 @@ export const createSwitchHandler = (_ctx: ComponentHandlerDeps) =>
19
19
  const commonProps = {
20
20
  tone,
21
21
  size: props.Size.value,
22
+ };
23
+
24
+ if (props["Layout(Figma Only)"].value === "🚫[Switch Mark 사용] Switch Only") {
25
+ return createLocalSnippetElement("SwitchMark", commonProps);
26
+ }
27
+
28
+ return createLocalSnippetElement("Switch", {
29
+ ...commonProps,
22
30
  label: props["Label#36578:0"].value,
23
31
  ...(props.Selected.value === "True" && {
24
32
  defaultChecked: true,
@@ -26,8 +34,6 @@ export const createSwitchHandler = (_ctx: ComponentHandlerDeps) =>
26
34
  ...(props.State.value === "Disabled" && {
27
35
  disabled: true,
28
36
  }),
29
- };
30
-
31
- return createLocalSnippetElement("Switch", commonProps);
37
+ });
32
38
  },
33
39
  );
@@ -22,24 +22,26 @@ import { createErrorStateHandler } from "./handlers/error-state";
22
22
  import { createFloatingActionButtonHandler } from "./handlers/floating-action-button";
23
23
  import { createHelpBubbleHandler } from "./handlers/help-bubble";
24
24
  import { createIdentityPlaceholderHandler } from "./handlers/identity-placeholder";
25
+ import { createListHeaderHandler } from "@/codegen/targets/react/component/handlers/list-header";
26
+ import { createListItemHandler } from "@/codegen/targets/react/component/handlers/list-item";
25
27
  import { createMannerTempBadgeHandler } from "./handlers/manner-temp-badge";
26
28
  import { createMannerTempHandler } from "./handlers/manner-temp";
27
29
  import { createMenuSheetHandler } from "./handlers/menu-sheet";
28
30
  import { createMultilineTextFieldHandler } from "./handlers/multiline-text-field";
29
31
  import { createPageBannerHandler } from "./handlers/page-banner";
30
32
  import { createProgressCircleHandler } from "./handlers/progress-circle";
31
- import { createRadioMarkHandler } from "@/codegen/targets/react/component/handlers/radio-mark";
32
33
  import { createRadioGroupItemHandler } from "@/codegen/targets/react/component/handlers/radio-group";
34
+ import { createRadioMarkHandler } from "@/codegen/targets/react/component/handlers/radio-mark";
33
35
  import { createReactionButtonHandler } from "./handlers/reaction-button";
34
36
  import { createSegmentedControlHandler } from "./handlers/segmented-control";
35
37
  import { createSelectBoxGroupHandler, createSelectBoxHandler } from "./handlers/select-box";
36
38
  import { createSkeletonHandler } from "./handlers/skeleton";
37
39
  import { createSnackbarHandler } from "./handlers/snackbar";
40
+ import { createSwitchMarkHandler } from "@/codegen/targets/react/component/handlers/switch-mark";
38
41
  import { createSwitchHandler } from "./handlers/switch";
39
42
  import { createTabsHandler } from "@/codegen/targets/react/component/handlers/tabs";
40
43
  import { createTextFieldHandler } from "./handlers/text-field";
41
44
  import { createToggleButtonHandler } from "./handlers/toggle-button";
42
- import { createListItemHandler } from "@/codegen/targets/react/component/handlers/list-item";
43
45
 
44
46
  export type { ComponentHandlerDeps };
45
47
  export type UnboundComponentHandler<T extends NormalizedInstanceNode["componentProperties"]> = (
@@ -72,6 +74,7 @@ export const unboundSeedComponentHandlers: Array<UnboundComponentHandler<any>> =
72
74
  createFloatingActionButtonHandler,
73
75
  createHelpBubbleHandler,
74
76
  createIdentityPlaceholderHandler,
77
+ createListHeaderHandler,
75
78
  createListItemHandler,
76
79
  createMannerTempBadgeHandler,
77
80
  createMannerTempHandler,
@@ -88,6 +91,7 @@ export const unboundSeedComponentHandlers: Array<UnboundComponentHandler<any>> =
88
91
  createSkeletonHandler,
89
92
  createSnackbarHandler,
90
93
  createSwitchHandler,
94
+ createSwitchMarkHandler,
91
95
  createTabsHandler,
92
96
  createTextFieldHandler,
93
97
  createToggleButtonHandler,
@@ -44,6 +44,7 @@ export { metadata as slider } from "./slider";
44
44
  export { metadata as snackbar } from "./snackbar";
45
45
  export { metadata as superscriptChild } from "./superscript-child";
46
46
  export { metadata as switch } from "./switch";
47
+ export { metadata as switchMark } from "./switch-mark";
47
48
  export { metadata as tabs } from "./tabs";
48
49
  export { metadata as textField } from "./text-field";
49
50
  export { metadata as toggleButton } from "./toggle-button";
@@ -44,6 +44,7 @@ export { metadata as slider } from "./slider.mjs";
44
44
  export { metadata as snackbar } from "./snackbar.mjs";
45
45
  export { metadata as superscriptChild } from "./superscript-child.mjs";
46
46
  export { metadata as switch } from "./switch.mjs";
47
+ export { metadata as switchMark } from "./switch-mark.mjs";
47
48
  export { metadata as tabs } from "./tabs.mjs";
48
49
  export { metadata as textField } from "./text-field.mjs";
49
50
  export { metadata as toggleButton } from "./toggle-button.mjs";
@@ -13,11 +13,11 @@ export declare const metadata: {
13
13
  "Custom"
14
14
  ]
15
15
  },
16
- "Title Weight": {
16
+ "Variant": {
17
17
  "type": "VARIANT",
18
18
  "variantOptions": [
19
- "Medium",
20
- "Bold"
19
+ "Medium Weak",
20
+ "Bold Solid"
21
21
  ]
22
22
  }
23
23
  }
@@ -13,11 +13,11 @@ export const metadata = {
13
13
  "Custom"
14
14
  ]
15
15
  },
16
- "Title Weight": {
16
+ "Variant": {
17
17
  "type": "VARIANT",
18
18
  "variantOptions": [
19
- "Medium",
20
- "Bold"
19
+ "Medium Weak",
20
+ "Bold Solid"
21
21
  ]
22
22
  }
23
23
  }
@@ -5,12 +5,16 @@ export declare const metadata: {
5
5
  "Level": {
6
6
  "type": "VARIANT",
7
7
  "variantOptions": [
8
- "L1 (~29.9)",
9
- "L2 (30.0~36.2)",
10
- "L3 (36.3~37.5)",
11
- "L4 (37.6~41.9)",
12
- "L5 (42~51.9)",
13
- "L6 (52~)"
8
+ "L1",
9
+ "L2",
10
+ "L3",
11
+ "L4",
12
+ "L5",
13
+ "L6",
14
+ "L7",
15
+ "L8",
16
+ "L9",
17
+ "L10"
14
18
  ]
15
19
  }
16
20
  }
@@ -5,12 +5,16 @@ export const metadata = {
5
5
  "Level": {
6
6
  "type": "VARIANT",
7
7
  "variantOptions": [
8
- "L1 (~29.9)",
9
- "L2 (30.0~36.2)",
10
- "L3 (36.3~37.5)",
11
- "L4 (37.6~41.9)",
12
- "L5 (42~51.9)",
13
- "L6 (52~)"
8
+ "L1",
9
+ "L2",
10
+ "L3",
11
+ "L4",
12
+ "L5",
13
+ "L6",
14
+ "L7",
15
+ "L8",
16
+ "L9",
17
+ "L10"
14
18
  ]
15
19
  }
16
20
  }
@@ -5,12 +5,16 @@ export declare const metadata: {
5
5
  "Level": {
6
6
  "type": "VARIANT",
7
7
  "variantOptions": [
8
- "L1 (~29.9)",
9
- "L2 (30.0~36.2)",
10
- "L3 (36.3~37.5)",
11
- "L4 (37.6~41.9)",
12
- "L5 (42~51.9)",
13
- "L6 (52~)"
8
+ "L1",
9
+ "L2",
10
+ "L3",
11
+ "L4",
12
+ "L5",
13
+ "L6",
14
+ "L7",
15
+ "L8",
16
+ "L9",
17
+ "L10"
14
18
  ]
15
19
  }
16
20
  }
@@ -5,12 +5,16 @@ export const metadata = {
5
5
  "Level": {
6
6
  "type": "VARIANT",
7
7
  "variantOptions": [
8
- "L1 (~29.9)",
9
- "L2 (30.0~36.2)",
10
- "L3 (36.3~37.5)",
11
- "L4 (37.6~41.9)",
12
- "L5 (42~51.9)",
13
- "L6 (52~)"
8
+ "L1",
9
+ "L2",
10
+ "L3",
11
+ "L4",
12
+ "L5",
13
+ "L6",
14
+ "L7",
15
+ "L8",
16
+ "L9",
17
+ "L10"
14
18
  ]
15
19
  }
16
20
  }
@@ -9,15 +9,6 @@ export declare const metadata: {
9
9
  "3",
10
10
  "4"
11
11
  ]
12
- },
13
- "Selected Item": {
14
- "type": "VARIANT",
15
- "variantOptions": [
16
- "1",
17
- "2",
18
- "3",
19
- "4"
20
- ]
21
12
  }
22
13
  }
23
14
  };
@@ -9,15 +9,6 @@ export const metadata = {
9
9
  "3",
10
10
  "4"
11
11
  ]
12
- },
13
- "Selected Item": {
14
- "type": "VARIANT",
15
- "variantOptions": [
16
- "1",
17
- "2",
18
- "3",
19
- "4"
20
- ]
21
12
  }
22
13
  }
23
14
  };
@@ -0,0 +1,35 @@
1
+ export declare const metadata: {
2
+ "name": "🟢 Switch Mark",
3
+ "key": "bc53f269089e02a1d241e2a21ac7631bfa49834e",
4
+ "componentPropertyDefinitions": {
5
+ "Size": {
6
+ "type": "VARIANT",
7
+ "variantOptions": [
8
+ "16",
9
+ "24",
10
+ "32"
11
+ ]
12
+ },
13
+ "Tone": {
14
+ "type": "VARIANT",
15
+ "variantOptions": [
16
+ "Neutral",
17
+ "🚫[Deprecated] Brand"
18
+ ]
19
+ },
20
+ "Selected": {
21
+ "type": "VARIANT",
22
+ "variantOptions": [
23
+ "True",
24
+ "False"
25
+ ]
26
+ },
27
+ "State": {
28
+ "type": "VARIANT",
29
+ "variantOptions": [
30
+ "Enabled",
31
+ "Disabled"
32
+ ]
33
+ }
34
+ }
35
+ };
@@ -0,0 +1,35 @@
1
+ export const metadata = {
2
+ "name": "🟢 Switch Mark",
3
+ "key": "bc53f269089e02a1d241e2a21ac7631bfa49834e",
4
+ "componentPropertyDefinitions": {
5
+ "Size": {
6
+ "type": "VARIANT",
7
+ "variantOptions": [
8
+ "16",
9
+ "24",
10
+ "32"
11
+ ]
12
+ },
13
+ "Tone": {
14
+ "type": "VARIANT",
15
+ "variantOptions": [
16
+ "Neutral",
17
+ "🚫[Deprecated] Brand"
18
+ ]
19
+ },
20
+ "Selected": {
21
+ "type": "VARIANT",
22
+ "variantOptions": [
23
+ "True",
24
+ "False"
25
+ ]
26
+ },
27
+ "State": {
28
+ "type": "VARIANT",
29
+ "variantOptions": [
30
+ "Enabled",
31
+ "Disabled"
32
+ ]
33
+ }
34
+ }
35
+ };
@@ -34,12 +34,12 @@ export declare const metadata: {
34
34
  "Disabled"
35
35
  ]
36
36
  },
37
- "Label Layout(Figma Only)": {
37
+ "Layout(Figma Only)": {
38
38
  "type": "VARIANT",
39
39
  "variantOptions": [
40
40
  "Label Last",
41
41
  "Label First",
42
- "Switch Only"
42
+ "🚫[Switch Mark 사용] Switch Only"
43
43
  ]
44
44
  }
45
45
  }
@@ -34,12 +34,12 @@ export const metadata = {
34
34
  "Disabled"
35
35
  ]
36
36
  },
37
- "Label Layout(Figma Only)": {
37
+ "Layout(Figma Only)": {
38
38
  "type": "VARIANT",
39
39
  "variantOptions": [
40
40
  "Label Last",
41
41
  "Label First",
42
- "Switch Only"
42
+ "🚫[Switch Mark 사용] Switch Only"
43
43
  ]
44
44
  }
45
45
  }
@@ -0,0 +1,3 @@
1
+ import type { VariableCollection } from "../../../variable.interface";
2
+
3
+ export declare const FIGMA_VARIABLE_COLLECTIONS: Record<string, VariableCollection>;