@seed-design/figma 0.1.7 → 0.1.9

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 (166) hide show
  1. package/lib/codegen/index.cjs +773 -660
  2. package/lib/codegen/index.d.ts +725 -625
  3. package/lib/codegen/index.d.ts.map +1 -1
  4. package/lib/codegen/index.js +773 -660
  5. package/lib/codegen/targets/react/index.cjs +1242 -1226
  6. package/lib/codegen/targets/react/index.d.ts +22 -11
  7. package/lib/codegen/targets/react/index.d.ts.map +1 -1
  8. package/lib/codegen/targets/react/index.js +1242 -1226
  9. package/lib/index.cjs +899 -671
  10. package/lib/index.d.ts +3 -1
  11. package/lib/index.d.ts.map +1 -1
  12. package/lib/index.js +899 -671
  13. package/package.json +3 -3
  14. package/src/codegen/component-properties.ts +289 -144
  15. package/src/codegen/core/component-handler.ts +9 -3
  16. package/src/codegen/core/jsx.ts +7 -2
  17. package/src/codegen/core/value-resolver.ts +35 -21
  18. package/src/codegen/targets/figma/pipeline.ts +4 -2
  19. package/src/codegen/targets/figma/value-resolver.ts +38 -2
  20. package/src/codegen/targets/react/component/handlers/action-button.ts +69 -5
  21. package/src/codegen/targets/react/component/handlers/alert-dialog.ts +81 -0
  22. package/src/codegen/targets/react/component/handlers/app-bar.ts +93 -128
  23. package/src/codegen/targets/react/component/handlers/avatar.ts +17 -8
  24. package/src/codegen/targets/react/component/handlers/badge.ts +0 -1
  25. package/src/codegen/targets/react/component/handlers/bottom-sheet.ts +71 -0
  26. package/src/codegen/targets/react/component/handlers/callout.ts +13 -17
  27. package/src/codegen/targets/react/component/handlers/chip.ts +88 -0
  28. package/src/codegen/targets/react/component/handlers/contextual-floating-button.ts +52 -0
  29. package/src/codegen/targets/react/component/handlers/divider.ts +19 -0
  30. package/src/codegen/targets/react/component/handlers/error-state.ts +26 -23
  31. package/src/codegen/targets/react/component/handlers/floating-action-button.ts +48 -0
  32. package/src/codegen/targets/react/component/handlers/help-bubble.ts +4 -5
  33. package/src/codegen/targets/react/component/handlers/identity-placeholder.ts +7 -4
  34. package/src/codegen/targets/react/component/handlers/inline-banner.ts +7 -14
  35. package/src/codegen/targets/react/component/handlers/manner-temp.ts +18 -0
  36. package/src/codegen/targets/react/component/handlers/menu-sheet.ts +106 -0
  37. package/src/codegen/targets/react/component/handlers/multiline-text-field.ts +1 -1
  38. package/src/codegen/targets/react/component/handlers/progress-circle.ts +3 -1
  39. package/src/codegen/targets/react/component/handlers/segmented-control.ts +4 -2
  40. package/src/codegen/targets/react/component/handlers/select-box.ts +11 -8
  41. package/src/codegen/targets/react/component/handlers/snackbar.ts +2 -2
  42. package/src/codegen/targets/react/component/handlers/switch.ts +2 -7
  43. package/src/codegen/targets/react/component/handlers/tabs.ts +8 -125
  44. package/src/codegen/targets/react/component/index.ts +22 -19
  45. package/src/codegen/targets/react/instance.ts +1 -1
  46. package/src/codegen/targets/react/pipeline.ts +4 -2
  47. package/src/codegen/targets/react/props.ts +16 -9
  48. package/src/codegen/targets/react/value-resolver.ts +38 -3
  49. package/src/entities/data/__generated__/component-sets/action-button.d.ts +5 -5
  50. package/src/entities/data/__generated__/component-sets/action-button.mjs +5 -5
  51. package/src/entities/data/__generated__/component-sets/alert-dialog.d.ts +26 -0
  52. package/src/entities/data/__generated__/component-sets/alert-dialog.mjs +26 -0
  53. package/src/entities/data/__generated__/component-sets/avatar-stack.d.ts +5 -18
  54. package/src/entities/data/__generated__/component-sets/avatar-stack.mjs +5 -18
  55. package/src/entities/data/__generated__/component-sets/avatar.d.ts +11 -5
  56. package/src/entities/data/__generated__/component-sets/avatar.mjs +11 -5
  57. package/src/entities/data/__generated__/component-sets/badge.d.ts +0 -7
  58. package/src/entities/data/__generated__/component-sets/badge.mjs +0 -7
  59. package/src/entities/data/__generated__/component-sets/bottom-navigation-global.d.ts +3 -0
  60. package/src/entities/data/__generated__/component-sets/bottom-navigation-global.mjs +3 -0
  61. package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.d.ts +3 -0
  62. package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.mjs +3 -0
  63. package/src/entities/data/__generated__/component-sets/bottom-sheet.d.ts +53 -4
  64. package/src/entities/data/__generated__/component-sets/bottom-sheet.mjs +53 -4
  65. package/src/entities/data/__generated__/component-sets/callout.d.ts +13 -22
  66. package/src/entities/data/__generated__/component-sets/callout.mjs +13 -22
  67. package/src/entities/data/__generated__/component-sets/checkbox.d.ts +3 -3
  68. package/src/entities/data/__generated__/component-sets/checkbox.mjs +3 -3
  69. package/src/entities/data/__generated__/component-sets/checkmark.d.ts +34 -0
  70. package/src/entities/data/__generated__/component-sets/checkmark.mjs +34 -0
  71. package/src/entities/data/__generated__/component-sets/chip.d.ts +90 -0
  72. package/src/entities/data/__generated__/component-sets/chip.mjs +90 -0
  73. package/src/entities/data/__generated__/component-sets/chlid.d.ts +14 -0
  74. package/src/entities/data/__generated__/component-sets/chlid.mjs +14 -0
  75. package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.d.ts → contextual-floating-button.d.ts} +12 -10
  76. package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.mjs → contextual-floating-button.mjs} +12 -10
  77. package/src/entities/data/__generated__/component-sets/floating-action-button.d.ts +4 -8
  78. package/src/entities/data/__generated__/component-sets/floating-action-button.mjs +4 -8
  79. package/src/entities/data/__generated__/component-sets/help-bubble.d.ts +3 -10
  80. package/src/entities/data/__generated__/component-sets/help-bubble.mjs +3 -10
  81. package/src/entities/data/__generated__/component-sets/index.d.ts +13 -13
  82. package/src/entities/data/__generated__/component-sets/index.mjs +13 -13
  83. package/src/entities/data/__generated__/component-sets/inline-banner.d.ts +3 -3
  84. package/src/entities/data/__generated__/component-sets/inline-banner.mjs +3 -3
  85. package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.d.ts +2 -2
  86. package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.mjs +2 -2
  87. package/src/entities/data/__generated__/component-sets/manner-temp-badge.d.ts +2 -2
  88. package/src/entities/data/__generated__/component-sets/manner-temp-badge.mjs +2 -2
  89. package/src/entities/data/__generated__/component-sets/manner-temp.d.ts +2 -2
  90. package/src/entities/data/__generated__/component-sets/manner-temp.mjs +2 -2
  91. package/src/entities/data/__generated__/component-sets/{extended-action-sheet.d.ts → menu-sheet.d.ts} +17 -13
  92. package/src/entities/data/__generated__/component-sets/{extended-action-sheet.mjs → menu-sheet.mjs} +17 -13
  93. package/src/entities/data/__generated__/component-sets/multiline-text-field.d.ts +18 -18
  94. package/src/entities/data/__generated__/component-sets/multiline-text-field.mjs +18 -18
  95. package/src/entities/data/__generated__/component-sets/progress-circle.d.ts +2 -1
  96. package/src/entities/data/__generated__/component-sets/progress-circle.mjs +2 -1
  97. package/src/entities/data/__generated__/component-sets/radio-mark.d.ts +34 -0
  98. package/src/entities/data/__generated__/component-sets/radio-mark.mjs +34 -0
  99. package/src/entities/data/__generated__/component-sets/radio.d.ts +2 -2
  100. package/src/entities/data/__generated__/component-sets/radio.mjs +2 -2
  101. package/src/entities/data/__generated__/component-sets/reaction-button.d.ts +6 -6
  102. package/src/entities/data/__generated__/component-sets/reaction-button.mjs +6 -6
  103. package/src/entities/data/__generated__/component-sets/resizable-child.d.ts +18 -0
  104. package/src/entities/data/__generated__/component-sets/resizable-child.mjs +18 -0
  105. package/src/entities/data/__generated__/component-sets/resizable-icon.d.ts +18 -0
  106. package/src/entities/data/__generated__/component-sets/resizable-icon.mjs +18 -0
  107. package/src/entities/data/__generated__/component-sets/select-box.d.ts +4 -4
  108. package/src/entities/data/__generated__/component-sets/select-box.mjs +4 -4
  109. package/src/entities/data/__generated__/component-sets/skeleton.d.ts +7 -0
  110. package/src/entities/data/__generated__/component-sets/skeleton.mjs +7 -0
  111. package/src/entities/data/__generated__/component-sets/snackbar.d.ts +4 -4
  112. package/src/entities/data/__generated__/component-sets/snackbar.mjs +4 -4
  113. package/src/entities/data/__generated__/component-sets/switch.d.ts +15 -6
  114. package/src/entities/data/__generated__/component-sets/switch.mjs +15 -6
  115. package/src/entities/data/__generated__/component-sets/tabs.d.ts +13 -0
  116. package/src/entities/data/__generated__/component-sets/tabs.mjs +13 -0
  117. package/src/entities/data/__generated__/component-sets/template-button-group.d.ts +9 -33
  118. package/src/entities/data/__generated__/component-sets/template-button-group.mjs +9 -33
  119. package/src/entities/data/__generated__/component-sets/template-chip-group.d.ts +15 -12
  120. package/src/entities/data/__generated__/component-sets/template-chip-group.mjs +15 -12
  121. package/src/entities/data/__generated__/component-sets/template-completion.d.ts +28 -0
  122. package/src/entities/data/__generated__/component-sets/template-completion.mjs +28 -0
  123. package/src/entities/data/__generated__/component-sets/{error-state.d.ts → template-error-state.d.ts} +5 -5
  124. package/src/entities/data/__generated__/component-sets/{error-state.mjs → template-error-state.mjs} +5 -5
  125. package/src/entities/data/__generated__/component-sets/template-top-navigation.d.ts +9 -7
  126. package/src/entities/data/__generated__/component-sets/template-top-navigation.mjs +9 -7
  127. package/src/entities/data/__generated__/component-sets/text-field.d.ts +35 -36
  128. package/src/entities/data/__generated__/component-sets/text-field.mjs +35 -36
  129. package/src/entities/data/__generated__/component-sets/toggle-button.d.ts +7 -7
  130. package/src/entities/data/__generated__/component-sets/toggle-button.mjs +7 -7
  131. package/src/entities/data/__generated__/component-sets/top-navigation.d.ts +42 -0
  132. package/src/entities/data/__generated__/component-sets/top-navigation.mjs +42 -0
  133. package/src/entities/data/styles.ts +94 -0
  134. package/src/entities/index.ts +5 -2
  135. package/src/normalizer/from-plugin.ts +104 -44
  136. package/src/normalizer/types.ts +3 -1
  137. package/src/utils/figma-gradient.ts +72 -0
  138. package/src/utils/figma-node.ts +4 -3
  139. package/src/codegen/targets/react/component/handlers/action-chip.ts +0 -72
  140. package/src/codegen/targets/react/component/handlers/action-sheet.ts +0 -82
  141. package/src/codegen/targets/react/component/handlers/chip-tabs.ts +0 -57
  142. package/src/codegen/targets/react/component/handlers/control-chip.ts +0 -81
  143. package/src/codegen/targets/react/component/handlers/extended-action-sheet.ts +0 -98
  144. package/src/codegen/targets/react/component/handlers/extended-fab.ts +0 -25
  145. package/src/codegen/targets/react/component/handlers/fab.ts +0 -22
  146. package/src/codegen/targets/react/component/handlers/text-button.ts +0 -49
  147. package/src/entities/data/__generated__/component-sets/action-chip.d.ts +0 -57
  148. package/src/entities/data/__generated__/component-sets/action-chip.mjs +0 -57
  149. package/src/entities/data/__generated__/component-sets/action-sheet.d.ts +0 -40
  150. package/src/entities/data/__generated__/component-sets/action-sheet.mjs +0 -40
  151. package/src/entities/data/__generated__/component-sets/chip-tablist.d.ts +0 -24
  152. package/src/entities/data/__generated__/component-sets/chip-tablist.mjs +0 -24
  153. package/src/entities/data/__generated__/component-sets/control-chip.d.ts +0 -60
  154. package/src/entities/data/__generated__/component-sets/control-chip.mjs +0 -60
  155. package/src/entities/data/__generated__/component-sets/identity-placeholder.d.ts +0 -13
  156. package/src/entities/data/__generated__/component-sets/identity-placeholder.mjs +0 -13
  157. package/src/entities/data/__generated__/component-sets/manner-temp-bar.d.ts +0 -23
  158. package/src/entities/data/__generated__/component-sets/manner-temp-bar.mjs +0 -23
  159. package/src/entities/data/__generated__/component-sets/standard-navigation.d.ts +0 -23
  160. package/src/entities/data/__generated__/component-sets/standard-navigation.mjs +0 -23
  161. package/src/entities/data/__generated__/component-sets/tablist.d.ts +0 -29
  162. package/src/entities/data/__generated__/component-sets/tablist.mjs +0 -29
  163. package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.d.ts +0 -42
  164. package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.mjs +0 -42
  165. package/src/entities/data/__generated__/component-sets/text-button.d.ts +0 -45
  166. package/src/entities/data/__generated__/component-sets/text-button.mjs +0 -45
@@ -1,82 +0,0 @@
1
- import type {
2
- ActionSheetItemProperties,
3
- ActionSheetProperties,
4
- } from "@/codegen/component-properties";
5
- import { createElement, defineComponentHandler } from "@/codegen/core";
6
- import * as metadata from "@/entities/data/__generated__/component-sets";
7
- import { findAllInstances } from "@/utils/figma-node";
8
- import { camelCase } from "change-case";
9
- import { match } from "ts-pattern";
10
- import { createLocalSnippetHelper } from "../../element-factories";
11
- import type { ComponentHandlerDeps } from "../deps.interface";
12
-
13
- const { createLocalSnippetElement } = createLocalSnippetHelper("action-sheet");
14
-
15
- const ACTION_SHEET_ITEM_KEY = "c3cafd3a3fdcd45fecb6971019d88eaf39a2e381";
16
- const createActionSheetItemHandler = (_ctx: ComponentHandlerDeps) =>
17
- defineComponentHandler<ActionSheetItemProperties>(
18
- ACTION_SHEET_ITEM_KEY,
19
- ({ componentProperties: props }) => {
20
- const states = props.State.value.split("-");
21
-
22
- const commonProps = {
23
- label: props["Label#15420:4"].value,
24
- tone: camelCase(props.Tone.value),
25
- ...(states.includes("Disabled") && {
26
- disabled: true,
27
- }),
28
- };
29
-
30
- return createLocalSnippetElement("ActionSheetItem", commonProps);
31
- },
32
- );
33
-
34
- export const createActionSheetHandler = (ctx: ComponentHandlerDeps) => {
35
- const actionSheetItemHandler = createActionSheetItemHandler(ctx);
36
-
37
- return defineComponentHandler<ActionSheetProperties>(metadata.actionSheet.key, (node) => {
38
- const { componentProperties: props } = node;
39
-
40
- const contentProps = match(props.Header.value)
41
- .with("None", () => ({
42
- title: undefined,
43
- description: undefined,
44
- }))
45
- .with("Title Only", () => ({
46
- title: props["Title#15641:37"].value,
47
- description: undefined,
48
- }))
49
- .with("Description Only", () => ({
50
- title: undefined,
51
- description: props["Description#15641:70"].value,
52
- }))
53
- .with("Title With Description", () => ({
54
- title: props["Title#15641:37"].value,
55
- description: props["Description#15641:70"].value,
56
- }))
57
- .exhaustive();
58
-
59
- const items = findAllInstances<ActionSheetItemProperties>({
60
- node,
61
- key: actionSheetItemHandler.key,
62
- });
63
-
64
- const contentChildren = items.map(actionSheetItemHandler.transform);
65
-
66
- const content = createLocalSnippetElement("ActionSheetContent", contentProps, contentChildren, {
67
- comment: contentProps.title
68
- ? undefined
69
- : "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다.",
70
- });
71
-
72
- const trigger = createLocalSnippetElement(
73
- "ActionSheetTrigger",
74
- { asChild: true },
75
- createElement("button", undefined, "열기", {
76
- comment: "ActionSheet을 여는 요소를 제공해주세요.",
77
- }),
78
- );
79
-
80
- return createLocalSnippetElement("ActionSheet", undefined, [trigger, content]);
81
- });
82
- };
@@ -1,57 +0,0 @@
1
- import type { ChipTabsItemProperties, ChipTabsProperties } from "@/codegen/component-properties";
2
- import { defineComponentHandler } from "@/codegen/core";
3
- import * as metadata from "@/entities/data/__generated__/component-sets";
4
- import { findAllInstances } from "@/utils/figma-node";
5
- import { camelCase } from "change-case";
6
- import { createLocalSnippetHelper } from "../../element-factories";
7
- import type { ComponentHandlerDeps } from "../deps.interface";
8
-
9
- const { createLocalSnippetElement } = createLocalSnippetHelper("chip-tabs");
10
-
11
- const CHIP_TABS_ITEM_KEY = "fa80168b02051fbb0ba032238bd76d840dbe2e15";
12
- const createChipTabsItemHandler = (_ctx: ComponentHandlerDeps) =>
13
- defineComponentHandler<ChipTabsItemProperties>(
14
- CHIP_TABS_ITEM_KEY,
15
- ({ componentProperties: props }) => {
16
- const states = props.State.value.split("-");
17
-
18
- const commonProps = {
19
- value: props["Label#8876:0"].value,
20
- ...(states.includes("Disabled") && {
21
- disabled: true,
22
- }),
23
- };
24
-
25
- return createLocalSnippetElement("ChipTabsTrigger", commonProps, props["Label#8876:0"].value);
26
- },
27
- );
28
-
29
- export const createChipTabsHandler = (ctx: ComponentHandlerDeps) => {
30
- const chipTabsItemHandler = createChipTabsItemHandler(ctx);
31
-
32
- return defineComponentHandler<ChipTabsProperties>(metadata.chipTablist.key, (node) => {
33
- const chipTabsItems = findAllInstances<ChipTabsItemProperties>({
34
- node,
35
- key: chipTabsItemHandler.key,
36
- });
37
-
38
- const selectedChipTabsItem = chipTabsItems.find((chipTabsItem) =>
39
- chipTabsItem.componentProperties.State.value.split("-").includes("Selected"),
40
- );
41
-
42
- const chipTabsList = createLocalSnippetElement(
43
- "ChipTabsList",
44
- undefined,
45
- chipTabsItems.map(chipTabsItemHandler.transform),
46
- );
47
-
48
- const commonProps = {
49
- variant: camelCase(node.componentProperties.Variant.value),
50
- ...(selectedChipTabsItem && {
51
- defaultValue: selectedChipTabsItem.componentProperties["Label#8876:0"].value,
52
- }),
53
- };
54
-
55
- return createLocalSnippetElement("ChipTabs", commonProps, chipTabsList);
56
- });
57
- };
@@ -1,81 +0,0 @@
1
- import type { ControlChipProperties } from "@/codegen/component-properties";
2
- import { defineComponentHandler } from "@/codegen/core";
3
- import * as metadata from "@/entities/data/__generated__/component-sets";
4
- import { match } from "ts-pattern";
5
- import { createLocalSnippetHelper, createSeedReactElement } from "../../element-factories";
6
- import type { ComponentHandlerDeps } from "../deps.interface";
7
- import { handleSizeProp } from "../size";
8
-
9
- const { createLocalSnippetElement } = createLocalSnippetHelper("control-chip");
10
-
11
- export const createControlChipHandler = (ctx: ComponentHandlerDeps) =>
12
- defineComponentHandler<ControlChipProperties>(
13
- metadata.controlChip.key,
14
- ({ componentProperties: props }) => {
15
- const states = props.State.value.split("-");
16
-
17
- const count = props["Show Count#7185:42"].value ? props["Count#7185:21"].value : undefined;
18
-
19
- const { layout, children } = match(props.Layout.value)
20
- .with("Icon Only", () => ({
21
- layout: "iconOnly",
22
- children: [
23
- createSeedReactElement("Icon", {
24
- svg: ctx.iconHandler.transform(props["Icon#8722:41"]),
25
- }),
26
- ],
27
- }))
28
- .with("Icon First", () => ({
29
- layout: "withText",
30
- children: [
31
- createSeedReactElement("PrefixIcon", {
32
- svg: ctx.iconHandler.transform(props["Prefix Icon#8722:0"]),
33
- }),
34
- props["Label#7185:0"].value,
35
- count ? createSeedReactElement("Count", undefined, [count]) : undefined,
36
- ],
37
- }))
38
- .with("Icon Last", () => ({
39
- layout: "withText",
40
- children: [
41
- props["Label#7185:0"].value,
42
- createSeedReactElement("SuffixIcon", {
43
- svg: ctx.iconHandler.transform(props["Suffix Icon#8722:82"]),
44
- }),
45
- ],
46
- }))
47
- .with("Icon Both", () => ({
48
- layout: "withText",
49
- children: [
50
- createSeedReactElement("PrefixIcon", {
51
- svg: ctx.iconHandler.transform(props["Prefix Icon#8722:0"]),
52
- }),
53
- props["Label#7185:0"].value,
54
- createSeedReactElement("SuffixIcon", {
55
- svg: ctx.iconHandler.transform(props["Suffix Icon#8722:82"]),
56
- }),
57
- ],
58
- }))
59
- .with("Text Only", () => ({
60
- layout: "withText",
61
- children: props["Label#7185:0"].value,
62
- }))
63
- .exhaustive();
64
-
65
- const commonProps = {
66
- size: handleSizeProp(props.Size.value),
67
- layout,
68
- ...(states.includes("Selected") && {
69
- defaultChecked: true,
70
- }),
71
- ...(states.includes("Disabled") && {
72
- disabled: true,
73
- }),
74
- ...(props["Show Count#7185:42"].value && {
75
- count: Number(props["Count#7185:21"].value),
76
- }),
77
- };
78
-
79
- return createLocalSnippetElement("ControlChip.Toggle", commonProps, children);
80
- },
81
- );
@@ -1,98 +0,0 @@
1
- import type {
2
- ExtendedActionSheetGroupProperties,
3
- ExtendedActionSheetItemProperties,
4
- ExtendedActionSheetProperties,
5
- } from "@/codegen/component-properties";
6
- import { createElement, defineComponentHandler } from "@/codegen/core";
7
- import * as metadata from "@/entities/data/__generated__/component-sets";
8
- import { findAllInstances } from "@/utils/figma-node";
9
- import { camelCase } from "change-case";
10
- import { createLocalSnippetHelper, createSeedReactElement } from "../../element-factories";
11
- import type { ComponentHandlerDeps } from "../deps.interface";
12
-
13
- const { createLocalSnippetElement } = createLocalSnippetHelper("extended-action-sheet");
14
-
15
- const EXTENDED_ACTION_SHEET_ITEM_KEY = "057083e95466da59051119eec0b41d4ad5a07f8f";
16
- const createExtendedActionSheetItemHandler = (ctx: ComponentHandlerDeps) =>
17
- defineComponentHandler<ExtendedActionSheetItemProperties>(
18
- EXTENDED_ACTION_SHEET_ITEM_KEY,
19
- ({ componentProperties: props }) => {
20
- const states = props.State.value.split("-");
21
-
22
- const commonProps = {
23
- tone: camelCase(props.Tone.value),
24
- ...(states.includes("Disabled") && {
25
- disabled: true,
26
- }),
27
- };
28
-
29
- return createLocalSnippetElement("ExtendedActionSheetItem", commonProps, [
30
- props["Show Prefix Icon#17043:5"].value
31
- ? createSeedReactElement("PrefixIcon", {
32
- svg: ctx.iconHandler.transform(props["Prefix Icon#55948:0"]),
33
- })
34
- : undefined,
35
- props["Label#55905:8"].value,
36
- ]);
37
- },
38
- );
39
-
40
- const EXTENDED_ACTION_SHEET_GROUP_KEY = "2a504a1c6b7810d5e652862dcba2cb7048f9eb16";
41
- const createExtendedActionSheetGroupHandler = (ctx: ComponentHandlerDeps) => {
42
- const extendedActionSheetItemHandler = createExtendedActionSheetItemHandler(ctx);
43
-
44
- return defineComponentHandler<ExtendedActionSheetGroupProperties>(
45
- EXTENDED_ACTION_SHEET_GROUP_KEY,
46
- (node) => {
47
- const items = findAllInstances<ExtendedActionSheetItemProperties>({
48
- node,
49
- key: extendedActionSheetItemHandler.key,
50
- });
51
-
52
- const contentChildren = items.map(extendedActionSheetItemHandler.transform);
53
-
54
- return createLocalSnippetElement("ExtendedActionSheetGroup", undefined, contentChildren);
55
- },
56
- );
57
- };
58
-
59
- export const createExtendedActionSheetHandler = (ctx: ComponentHandlerDeps) => {
60
- const extendedActionSheetGroupHandler = createExtendedActionSheetGroupHandler(ctx);
61
-
62
- return defineComponentHandler<ExtendedActionSheetProperties>(
63
- metadata.extendedActionSheet.key,
64
- (node) => {
65
- const { componentProperties: props } = node;
66
-
67
- const groups = findAllInstances<ExtendedActionSheetGroupProperties>({
68
- node,
69
- key: extendedActionSheetGroupHandler.key,
70
- });
71
-
72
- const contentChildren = groups.map(extendedActionSheetGroupHandler.transform);
73
-
74
- const title = props["Show Title#17043:12"].value ? props["Title#14599:0"].value : undefined;
75
-
76
- const content = createLocalSnippetElement(
77
- "ExtendedActionSheetContent",
78
- { title },
79
- contentChildren,
80
- {
81
- comment: title
82
- ? undefined
83
- : "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다.",
84
- },
85
- );
86
-
87
- const trigger = createLocalSnippetElement(
88
- "ExtendedActionSheetTrigger",
89
- { asChild: true },
90
- createElement("button", undefined, "열기", {
91
- comment: "ExtendedActionSheet을 여는 요소를 제공해주세요.",
92
- }),
93
- );
94
-
95
- return createLocalSnippetElement("ExtendedActionSheet", undefined, [trigger, content]);
96
- },
97
- );
98
- };
@@ -1,25 +0,0 @@
1
- import type { ExtendedFabProperties } from "@/codegen/component-properties";
2
- import { defineComponentHandler } from "@/codegen/core";
3
- import * as metadata from "@/entities/data/__generated__/component-sets";
4
- import { camelCase } from "change-case";
5
- import { createSeedReactElement } from "../../element-factories";
6
- import type { ComponentHandlerDeps } from "../deps.interface";
7
- import { handleSizeProp } from "../size";
8
-
9
- export const createExtendedFabHandler = (ctx: ComponentHandlerDeps) =>
10
- defineComponentHandler<ExtendedFabProperties>(
11
- metadata.extendedFloatingActionButton.key,
12
- ({ componentProperties: props }) => {
13
- const commonProps = {
14
- size: handleSizeProp(props.Size.value),
15
- variant: camelCase(props.Variant.value),
16
- };
17
-
18
- return createSeedReactElement("ExtendedFab", commonProps, [
19
- createSeedReactElement("PrefixIcon", {
20
- svg: ctx.iconHandler.transform(props["Icon#28796:0"]),
21
- }),
22
- props["Label#28936:0"].value,
23
- ]);
24
- },
25
- );
@@ -1,22 +0,0 @@
1
- import type { FabProperties } from "@/codegen/component-properties";
2
- import { defineComponentHandler } from "@/codegen/core";
3
- import * as metadata from "@/entities/data/__generated__/component-sets";
4
- import { createSeedReactElement } from "../../element-factories";
5
- import type { ComponentHandlerDeps } from "../deps.interface";
6
-
7
- export const createFabHandler = (ctx: ComponentHandlerDeps) =>
8
- defineComponentHandler<FabProperties>(
9
- metadata.floatingActionButton.key,
10
- ({ componentProperties: props }) => {
11
- return createSeedReactElement(
12
- "Fab",
13
- undefined,
14
- createSeedReactElement("Icon", {
15
- svg: ctx.iconHandler.transform(props["Icon#28796:0"]),
16
- }),
17
- {
18
- comment: "aria-label이나 aria-labelledby 중 하나를 제공해야 합니다.",
19
- },
20
- );
21
- },
22
- );
@@ -1,49 +0,0 @@
1
- import type { TextButtonProperties } from "@/codegen/component-properties";
2
- import { defineComponentHandler } from "@/codegen/core";
3
- import * as metadata from "@/entities/data/__generated__/component-sets";
4
- import type { NormalizedInstanceNode } from "@/normalizer";
5
- import { findOne } from "@/utils/figma-node";
6
- import { camelCase } from "change-case";
7
- import { match } from "ts-pattern";
8
- import { createSeedReactElement } from "../../element-factories";
9
- import type { ComponentHandlerDeps } from "../deps.interface";
10
- import { handleSizeProp } from "../size";
11
-
12
- export const createTextButtonHandler = (ctx: ComponentHandlerDeps) =>
13
- defineComponentHandler<TextButtonProperties>(metadata.textButton.key, (node) => {
14
- const { componentProperties: props } = node;
15
-
16
- const states = props.State.value.split("-");
17
-
18
- const { prefixIcon, suffixIcon, children } = match(props.Layout.value)
19
- .with("Icon First", () => ({
20
- prefixIcon: ctx.iconHandler.transform(props["Prefix Icon#7561:0"]),
21
- suffixIcon: undefined,
22
- children: props["Label#6148:0"].value,
23
- }))
24
- .with("Icon Last", () => {
25
- const suffixIconNode = findOne(
26
- node,
27
- (node) => node.type === "INSTANCE" && node.name === "Suffix Icon",
28
- ) as NormalizedInstanceNode | null;
29
-
30
- return {
31
- prefixIcon: undefined,
32
- suffixIcon: suffixIconNode ? ctx.iconHandler.transform(suffixIconNode) : undefined,
33
- children: props["Label#6148:0"].value,
34
- };
35
- })
36
- .exhaustive();
37
-
38
- const commonProps = {
39
- tone: camelCase(props.Tone.value),
40
- size: handleSizeProp(props.Size.value),
41
- prefixIcon,
42
- suffixIcon,
43
- ...(states.includes("Disabled") && {
44
- disabled: true,
45
- }),
46
- };
47
-
48
- return createSeedReactElement("TextButton", commonProps, children);
49
- });
@@ -1,57 +0,0 @@
1
- export declare const metadata: {
2
- "name": "🟢 Action Chip",
3
- "key": "3d21594ef116e94a9465d507447b858aea062575",
4
- "componentPropertyDefinitions": {
5
- "Icon#8714:0": {
6
- "type": "INSTANCE_SWAP",
7
- "preferredValues": []
8
- },
9
- "Prefix Icon#8711:0": {
10
- "type": "INSTANCE_SWAP",
11
- "preferredValues": [
12
- {
13
- "type": "COMPONENT_SET",
14
- "key": "8ed05ef62a40f2dc034ee7eb6945bd0e63ad49aa"
15
- }
16
- ]
17
- },
18
- "Suffix Icon#8711:3": {
19
- "type": "INSTANCE_SWAP",
20
- "preferredValues": []
21
- },
22
- "Label#7185:0": {
23
- "type": "TEXT"
24
- },
25
- "Show Count#7185:42": {
26
- "type": "BOOLEAN"
27
- },
28
- "Count#7185:21": {
29
- "type": "TEXT"
30
- },
31
- "Size": {
32
- "type": "VARIANT",
33
- "variantOptions": [
34
- "Medium",
35
- "Small"
36
- ]
37
- },
38
- "Layout": {
39
- "type": "VARIANT",
40
- "variantOptions": [
41
- "Text Only",
42
- "Icon First",
43
- "Icon Last",
44
- "Icon Both",
45
- "Icon Only"
46
- ]
47
- },
48
- "State": {
49
- "type": "VARIANT",
50
- "variantOptions": [
51
- "Enabled",
52
- "Pressed",
53
- "Disabled"
54
- ]
55
- }
56
- }
57
- };
@@ -1,57 +0,0 @@
1
- export const metadata = {
2
- "name": "🟢 Action Chip",
3
- "key": "3d21594ef116e94a9465d507447b858aea062575",
4
- "componentPropertyDefinitions": {
5
- "Icon#8714:0": {
6
- "type": "INSTANCE_SWAP",
7
- "preferredValues": []
8
- },
9
- "Prefix Icon#8711:0": {
10
- "type": "INSTANCE_SWAP",
11
- "preferredValues": [
12
- {
13
- "type": "COMPONENT_SET",
14
- "key": "8ed05ef62a40f2dc034ee7eb6945bd0e63ad49aa"
15
- }
16
- ]
17
- },
18
- "Suffix Icon#8711:3": {
19
- "type": "INSTANCE_SWAP",
20
- "preferredValues": []
21
- },
22
- "Label#7185:0": {
23
- "type": "TEXT"
24
- },
25
- "Show Count#7185:42": {
26
- "type": "BOOLEAN"
27
- },
28
- "Count#7185:21": {
29
- "type": "TEXT"
30
- },
31
- "Size": {
32
- "type": "VARIANT",
33
- "variantOptions": [
34
- "Medium",
35
- "Small"
36
- ]
37
- },
38
- "Layout": {
39
- "type": "VARIANT",
40
- "variantOptions": [
41
- "Text Only",
42
- "Icon First",
43
- "Icon Last",
44
- "Icon Both",
45
- "Icon Only"
46
- ]
47
- },
48
- "State": {
49
- "type": "VARIANT",
50
- "variantOptions": [
51
- "Enabled",
52
- "Pressed",
53
- "Disabled"
54
- ]
55
- }
56
- }
57
- };
@@ -1,40 +0,0 @@
1
- export declare const metadata: {
2
- "name": "🟢 Action Sheet",
3
- "key": "7c29b70b7e71618e1894c26f61f336de2730d76e",
4
- "componentPropertyDefinitions": {
5
- "Description#15641:70": {
6
- "type": "TEXT"
7
- },
8
- "Title#15641:37": {
9
- "type": "TEXT"
10
- },
11
- "OS Indicator (Figma Only)#15641:20": {
12
- "type": "BOOLEAN"
13
- },
14
- "Type": {
15
- "type": "VARIANT",
16
- "variantOptions": [
17
- "Normal",
18
- "Destructive"
19
- ]
20
- },
21
- "Header": {
22
- "type": "VARIANT",
23
- "variantOptions": [
24
- "Title Only",
25
- "Description Only",
26
- "Title With Description",
27
- "None"
28
- ]
29
- },
30
- "Action Count": {
31
- "type": "VARIANT",
32
- "variantOptions": [
33
- "1",
34
- "2",
35
- "3",
36
- "4"
37
- ]
38
- }
39
- }
40
- };
@@ -1,40 +0,0 @@
1
- export const metadata = {
2
- "name": "🟢 Action Sheet",
3
- "key": "7c29b70b7e71618e1894c26f61f336de2730d76e",
4
- "componentPropertyDefinitions": {
5
- "Description#15641:70": {
6
- "type": "TEXT"
7
- },
8
- "Title#15641:37": {
9
- "type": "TEXT"
10
- },
11
- "OS Indicator (Figma Only)#15641:20": {
12
- "type": "BOOLEAN"
13
- },
14
- "Type": {
15
- "type": "VARIANT",
16
- "variantOptions": [
17
- "Normal",
18
- "Destructive"
19
- ]
20
- },
21
- "Header": {
22
- "type": "VARIANT",
23
- "variantOptions": [
24
- "Title Only",
25
- "Description Only",
26
- "Title With Description",
27
- "None"
28
- ]
29
- },
30
- "Action Count": {
31
- "type": "VARIANT",
32
- "variantOptions": [
33
- "1",
34
- "2",
35
- "3",
36
- "4"
37
- ]
38
- }
39
- }
40
- };
@@ -1,24 +0,0 @@
1
- export declare const metadata: {
2
- "name": "🟢 Chip Tablist",
3
- "key": "d098159beacf7713e9116f0ef38d8a20f64ec84f",
4
- "componentPropertyDefinitions": {
5
- "Tab Count": {
6
- "type": "VARIANT",
7
- "variantOptions": [
8
- "2",
9
- "3",
10
- "4",
11
- "5",
12
- "6",
13
- "Max"
14
- ]
15
- },
16
- "Variant": {
17
- "type": "VARIANT",
18
- "variantOptions": [
19
- "Neutral Solid",
20
- "Brand Solid"
21
- ]
22
- }
23
- }
24
- };
@@ -1,24 +0,0 @@
1
- export const metadata = {
2
- "name": "🟢 Chip Tablist",
3
- "key": "d098159beacf7713e9116f0ef38d8a20f64ec84f",
4
- "componentPropertyDefinitions": {
5
- "Tab Count": {
6
- "type": "VARIANT",
7
- "variantOptions": [
8
- "2",
9
- "3",
10
- "4",
11
- "5",
12
- "6",
13
- "Max"
14
- ]
15
- },
16
- "Variant": {
17
- "type": "VARIANT",
18
- "variantOptions": [
19
- "Neutral Solid",
20
- "Brand Solid"
21
- ]
22
- }
23
- }
24
- };