@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.
- package/lib/codegen/index.cjs +773 -660
- package/lib/codegen/index.d.ts +725 -625
- package/lib/codegen/index.d.ts.map +1 -1
- package/lib/codegen/index.js +773 -660
- package/lib/codegen/targets/react/index.cjs +1242 -1226
- package/lib/codegen/targets/react/index.d.ts +22 -11
- package/lib/codegen/targets/react/index.d.ts.map +1 -1
- package/lib/codegen/targets/react/index.js +1242 -1226
- package/lib/index.cjs +899 -671
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +899 -671
- package/package.json +3 -3
- package/src/codegen/component-properties.ts +289 -144
- package/src/codegen/core/component-handler.ts +9 -3
- package/src/codegen/core/jsx.ts +7 -2
- package/src/codegen/core/value-resolver.ts +35 -21
- package/src/codegen/targets/figma/pipeline.ts +4 -2
- package/src/codegen/targets/figma/value-resolver.ts +38 -2
- package/src/codegen/targets/react/component/handlers/action-button.ts +69 -5
- package/src/codegen/targets/react/component/handlers/alert-dialog.ts +81 -0
- package/src/codegen/targets/react/component/handlers/app-bar.ts +93 -128
- package/src/codegen/targets/react/component/handlers/avatar.ts +17 -8
- package/src/codegen/targets/react/component/handlers/badge.ts +0 -1
- package/src/codegen/targets/react/component/handlers/bottom-sheet.ts +71 -0
- package/src/codegen/targets/react/component/handlers/callout.ts +13 -17
- package/src/codegen/targets/react/component/handlers/chip.ts +88 -0
- package/src/codegen/targets/react/component/handlers/contextual-floating-button.ts +52 -0
- package/src/codegen/targets/react/component/handlers/divider.ts +19 -0
- package/src/codegen/targets/react/component/handlers/error-state.ts +26 -23
- package/src/codegen/targets/react/component/handlers/floating-action-button.ts +48 -0
- package/src/codegen/targets/react/component/handlers/help-bubble.ts +4 -5
- package/src/codegen/targets/react/component/handlers/identity-placeholder.ts +7 -4
- package/src/codegen/targets/react/component/handlers/inline-banner.ts +7 -14
- package/src/codegen/targets/react/component/handlers/manner-temp.ts +18 -0
- package/src/codegen/targets/react/component/handlers/menu-sheet.ts +106 -0
- package/src/codegen/targets/react/component/handlers/multiline-text-field.ts +1 -1
- package/src/codegen/targets/react/component/handlers/progress-circle.ts +3 -1
- package/src/codegen/targets/react/component/handlers/segmented-control.ts +4 -2
- package/src/codegen/targets/react/component/handlers/select-box.ts +11 -8
- package/src/codegen/targets/react/component/handlers/snackbar.ts +2 -2
- package/src/codegen/targets/react/component/handlers/switch.ts +2 -7
- package/src/codegen/targets/react/component/handlers/tabs.ts +8 -125
- package/src/codegen/targets/react/component/index.ts +22 -19
- package/src/codegen/targets/react/instance.ts +1 -1
- package/src/codegen/targets/react/pipeline.ts +4 -2
- package/src/codegen/targets/react/props.ts +16 -9
- package/src/codegen/targets/react/value-resolver.ts +38 -3
- package/src/entities/data/__generated__/component-sets/action-button.d.ts +5 -5
- package/src/entities/data/__generated__/component-sets/action-button.mjs +5 -5
- package/src/entities/data/__generated__/component-sets/alert-dialog.d.ts +26 -0
- package/src/entities/data/__generated__/component-sets/alert-dialog.mjs +26 -0
- package/src/entities/data/__generated__/component-sets/avatar-stack.d.ts +5 -18
- package/src/entities/data/__generated__/component-sets/avatar-stack.mjs +5 -18
- package/src/entities/data/__generated__/component-sets/avatar.d.ts +11 -5
- package/src/entities/data/__generated__/component-sets/avatar.mjs +11 -5
- package/src/entities/data/__generated__/component-sets/badge.d.ts +0 -7
- package/src/entities/data/__generated__/component-sets/badge.mjs +0 -7
- package/src/entities/data/__generated__/component-sets/bottom-navigation-global.d.ts +3 -0
- package/src/entities/data/__generated__/component-sets/bottom-navigation-global.mjs +3 -0
- package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.d.ts +3 -0
- package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.mjs +3 -0
- package/src/entities/data/__generated__/component-sets/bottom-sheet.d.ts +53 -4
- package/src/entities/data/__generated__/component-sets/bottom-sheet.mjs +53 -4
- package/src/entities/data/__generated__/component-sets/callout.d.ts +13 -22
- package/src/entities/data/__generated__/component-sets/callout.mjs +13 -22
- package/src/entities/data/__generated__/component-sets/checkbox.d.ts +3 -3
- package/src/entities/data/__generated__/component-sets/checkbox.mjs +3 -3
- package/src/entities/data/__generated__/component-sets/checkmark.d.ts +34 -0
- package/src/entities/data/__generated__/component-sets/checkmark.mjs +34 -0
- package/src/entities/data/__generated__/component-sets/chip.d.ts +90 -0
- package/src/entities/data/__generated__/component-sets/chip.mjs +90 -0
- package/src/entities/data/__generated__/component-sets/chlid.d.ts +14 -0
- package/src/entities/data/__generated__/component-sets/chlid.mjs +14 -0
- package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.d.ts → contextual-floating-button.d.ts} +12 -10
- package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.mjs → contextual-floating-button.mjs} +12 -10
- package/src/entities/data/__generated__/component-sets/floating-action-button.d.ts +4 -8
- package/src/entities/data/__generated__/component-sets/floating-action-button.mjs +4 -8
- package/src/entities/data/__generated__/component-sets/help-bubble.d.ts +3 -10
- package/src/entities/data/__generated__/component-sets/help-bubble.mjs +3 -10
- package/src/entities/data/__generated__/component-sets/index.d.ts +13 -13
- package/src/entities/data/__generated__/component-sets/index.mjs +13 -13
- package/src/entities/data/__generated__/component-sets/inline-banner.d.ts +3 -3
- package/src/entities/data/__generated__/component-sets/inline-banner.mjs +3 -3
- package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.d.ts +2 -2
- package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.mjs +2 -2
- package/src/entities/data/__generated__/component-sets/manner-temp-badge.d.ts +2 -2
- package/src/entities/data/__generated__/component-sets/manner-temp-badge.mjs +2 -2
- package/src/entities/data/__generated__/component-sets/manner-temp.d.ts +2 -2
- package/src/entities/data/__generated__/component-sets/manner-temp.mjs +2 -2
- package/src/entities/data/__generated__/component-sets/{extended-action-sheet.d.ts → menu-sheet.d.ts} +17 -13
- package/src/entities/data/__generated__/component-sets/{extended-action-sheet.mjs → menu-sheet.mjs} +17 -13
- package/src/entities/data/__generated__/component-sets/multiline-text-field.d.ts +18 -18
- package/src/entities/data/__generated__/component-sets/multiline-text-field.mjs +18 -18
- package/src/entities/data/__generated__/component-sets/progress-circle.d.ts +2 -1
- package/src/entities/data/__generated__/component-sets/progress-circle.mjs +2 -1
- package/src/entities/data/__generated__/component-sets/radio-mark.d.ts +34 -0
- package/src/entities/data/__generated__/component-sets/radio-mark.mjs +34 -0
- package/src/entities/data/__generated__/component-sets/radio.d.ts +2 -2
- package/src/entities/data/__generated__/component-sets/radio.mjs +2 -2
- package/src/entities/data/__generated__/component-sets/reaction-button.d.ts +6 -6
- package/src/entities/data/__generated__/component-sets/reaction-button.mjs +6 -6
- package/src/entities/data/__generated__/component-sets/resizable-child.d.ts +18 -0
- package/src/entities/data/__generated__/component-sets/resizable-child.mjs +18 -0
- package/src/entities/data/__generated__/component-sets/resizable-icon.d.ts +18 -0
- package/src/entities/data/__generated__/component-sets/resizable-icon.mjs +18 -0
- package/src/entities/data/__generated__/component-sets/select-box.d.ts +4 -4
- package/src/entities/data/__generated__/component-sets/select-box.mjs +4 -4
- package/src/entities/data/__generated__/component-sets/skeleton.d.ts +7 -0
- package/src/entities/data/__generated__/component-sets/skeleton.mjs +7 -0
- package/src/entities/data/__generated__/component-sets/snackbar.d.ts +4 -4
- package/src/entities/data/__generated__/component-sets/snackbar.mjs +4 -4
- package/src/entities/data/__generated__/component-sets/switch.d.ts +15 -6
- package/src/entities/data/__generated__/component-sets/switch.mjs +15 -6
- package/src/entities/data/__generated__/component-sets/tabs.d.ts +13 -0
- package/src/entities/data/__generated__/component-sets/tabs.mjs +13 -0
- package/src/entities/data/__generated__/component-sets/template-button-group.d.ts +9 -33
- package/src/entities/data/__generated__/component-sets/template-button-group.mjs +9 -33
- package/src/entities/data/__generated__/component-sets/template-chip-group.d.ts +15 -12
- package/src/entities/data/__generated__/component-sets/template-chip-group.mjs +15 -12
- package/src/entities/data/__generated__/component-sets/template-completion.d.ts +28 -0
- package/src/entities/data/__generated__/component-sets/template-completion.mjs +28 -0
- package/src/entities/data/__generated__/component-sets/{error-state.d.ts → template-error-state.d.ts} +5 -5
- package/src/entities/data/__generated__/component-sets/{error-state.mjs → template-error-state.mjs} +5 -5
- package/src/entities/data/__generated__/component-sets/template-top-navigation.d.ts +9 -7
- package/src/entities/data/__generated__/component-sets/template-top-navigation.mjs +9 -7
- package/src/entities/data/__generated__/component-sets/text-field.d.ts +35 -36
- package/src/entities/data/__generated__/component-sets/text-field.mjs +35 -36
- package/src/entities/data/__generated__/component-sets/toggle-button.d.ts +7 -7
- package/src/entities/data/__generated__/component-sets/toggle-button.mjs +7 -7
- package/src/entities/data/__generated__/component-sets/top-navigation.d.ts +42 -0
- package/src/entities/data/__generated__/component-sets/top-navigation.mjs +42 -0
- package/src/entities/data/styles.ts +94 -0
- package/src/entities/index.ts +5 -2
- package/src/normalizer/from-plugin.ts +104 -44
- package/src/normalizer/types.ts +3 -1
- package/src/utils/figma-gradient.ts +72 -0
- package/src/utils/figma-node.ts +4 -3
- package/src/codegen/targets/react/component/handlers/action-chip.ts +0 -72
- package/src/codegen/targets/react/component/handlers/action-sheet.ts +0 -82
- package/src/codegen/targets/react/component/handlers/chip-tabs.ts +0 -57
- package/src/codegen/targets/react/component/handlers/control-chip.ts +0 -81
- package/src/codegen/targets/react/component/handlers/extended-action-sheet.ts +0 -98
- package/src/codegen/targets/react/component/handlers/extended-fab.ts +0 -25
- package/src/codegen/targets/react/component/handlers/fab.ts +0 -22
- package/src/codegen/targets/react/component/handlers/text-button.ts +0 -49
- package/src/entities/data/__generated__/component-sets/action-chip.d.ts +0 -57
- package/src/entities/data/__generated__/component-sets/action-chip.mjs +0 -57
- package/src/entities/data/__generated__/component-sets/action-sheet.d.ts +0 -40
- package/src/entities/data/__generated__/component-sets/action-sheet.mjs +0 -40
- package/src/entities/data/__generated__/component-sets/chip-tablist.d.ts +0 -24
- package/src/entities/data/__generated__/component-sets/chip-tablist.mjs +0 -24
- package/src/entities/data/__generated__/component-sets/control-chip.d.ts +0 -60
- package/src/entities/data/__generated__/component-sets/control-chip.mjs +0 -60
- package/src/entities/data/__generated__/component-sets/identity-placeholder.d.ts +0 -13
- package/src/entities/data/__generated__/component-sets/identity-placeholder.mjs +0 -13
- package/src/entities/data/__generated__/component-sets/manner-temp-bar.d.ts +0 -23
- package/src/entities/data/__generated__/component-sets/manner-temp-bar.mjs +0 -23
- package/src/entities/data/__generated__/component-sets/standard-navigation.d.ts +0 -23
- package/src/entities/data/__generated__/component-sets/standard-navigation.mjs +0 -23
- package/src/entities/data/__generated__/component-sets/tablist.d.ts +0 -29
- package/src/entities/data/__generated__/component-sets/tablist.mjs +0 -29
- package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.d.ts +0 -42
- package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.mjs +0 -42
- package/src/entities/data/__generated__/component-sets/text-button.d.ts +0 -45
- package/src/entities/data/__generated__/component-sets/text-button.mjs +0 -45
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
MenuSheetGroupProperties,
|
|
3
|
+
MenuSheetItemProperties,
|
|
4
|
+
MenuSheetProperties,
|
|
5
|
+
} from "@/codegen/component-properties";
|
|
6
|
+
import { 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
|
+
import { match } from "ts-pattern";
|
|
13
|
+
|
|
14
|
+
const { createLocalSnippetElement } = createLocalSnippetHelper("menu-sheet");
|
|
15
|
+
const { createLocalSnippetElement: createLocalSnippetElementTrigger } =
|
|
16
|
+
createLocalSnippetHelper("action-button");
|
|
17
|
+
|
|
18
|
+
const MENU_SHEET_ITEM_KEY = "057083e95466da59051119eec0b41d4ad5a07f8f";
|
|
19
|
+
const createMenuSheetItemHandler = (ctx: ComponentHandlerDeps) =>
|
|
20
|
+
defineComponentHandler<MenuSheetItemProperties>(
|
|
21
|
+
MENU_SHEET_ITEM_KEY,
|
|
22
|
+
({ componentProperties: props }) => {
|
|
23
|
+
const states = props.State.value.split("-");
|
|
24
|
+
|
|
25
|
+
const commonProps = {
|
|
26
|
+
tone: camelCase(props.Tone.value),
|
|
27
|
+
...(states.includes("Disabled") && {
|
|
28
|
+
disabled: true,
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
return createLocalSnippetElement("MenuSheetItem", commonProps, [
|
|
33
|
+
props["Show Prefix Icon#17043:5"].value
|
|
34
|
+
? createSeedReactElement("PrefixIcon", {
|
|
35
|
+
svg: ctx.iconHandler.transform(props["Prefix Icon#55948:0"]),
|
|
36
|
+
})
|
|
37
|
+
: undefined,
|
|
38
|
+
props["Label#55905:8"].value,
|
|
39
|
+
]);
|
|
40
|
+
},
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
const MENU_SHEET_GROUP_KEY = "2a504a1c6b7810d5e652862dcba2cb7048f9eb16";
|
|
44
|
+
const createMenuSheetGroupHandler = (ctx: ComponentHandlerDeps) => {
|
|
45
|
+
const menuSheetItemHandler = createMenuSheetItemHandler(ctx);
|
|
46
|
+
|
|
47
|
+
return defineComponentHandler<MenuSheetGroupProperties>(
|
|
48
|
+
MENU_SHEET_GROUP_KEY,
|
|
49
|
+
(node, traverse) => {
|
|
50
|
+
const items = findAllInstances<MenuSheetItemProperties>({
|
|
51
|
+
node,
|
|
52
|
+
key: menuSheetItemHandler.key,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const contentChildren = items.map((item) => menuSheetItemHandler.transform(item, traverse));
|
|
56
|
+
|
|
57
|
+
return createLocalSnippetElement("MenuSheetGroup", undefined, contentChildren);
|
|
58
|
+
},
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export const createMenuSheetHandler = (ctx: ComponentHandlerDeps) => {
|
|
63
|
+
const menuSheetGroupHandler = createMenuSheetGroupHandler(ctx);
|
|
64
|
+
|
|
65
|
+
return defineComponentHandler<MenuSheetProperties>(metadata.menuSheet.key, (node, traverse) => {
|
|
66
|
+
const { componentProperties: props } = node;
|
|
67
|
+
|
|
68
|
+
const groups = findAllInstances<MenuSheetGroupProperties>({
|
|
69
|
+
node,
|
|
70
|
+
key: menuSheetGroupHandler.key,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const contentChildren = groups.map((group) => menuSheetGroupHandler.transform(group, traverse));
|
|
74
|
+
|
|
75
|
+
const title = props["Show Header#17043:12"].value
|
|
76
|
+
? props["Title Text#14599:0"].value
|
|
77
|
+
: undefined;
|
|
78
|
+
|
|
79
|
+
// TODO: React 구현체에 description 추가 이후
|
|
80
|
+
// const description = props["Description Text#21827:0"].value;
|
|
81
|
+
|
|
82
|
+
const { labelAlignment } = match(props.Layout.value)
|
|
83
|
+
.with("Text with Icon", () => ({ labelAlignment: undefined }))
|
|
84
|
+
.with("Text Only", () => ({ labelAlignment: "center" }))
|
|
85
|
+
.exhaustive();
|
|
86
|
+
|
|
87
|
+
const content = createLocalSnippetElement(
|
|
88
|
+
"MenuSheetContent",
|
|
89
|
+
{ title, labelAlignment },
|
|
90
|
+
contentChildren,
|
|
91
|
+
{
|
|
92
|
+
comment: title
|
|
93
|
+
? undefined
|
|
94
|
+
: "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다.",
|
|
95
|
+
},
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
const trigger = createLocalSnippetElement(
|
|
99
|
+
"MenuSheetTrigger",
|
|
100
|
+
{ asChild: true },
|
|
101
|
+
createLocalSnippetElementTrigger("ActionButton", {}, "MenuSheet 열기"),
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
return createLocalSnippetElement("MenuSheet", undefined, [trigger, content]);
|
|
105
|
+
});
|
|
106
|
+
};
|
|
@@ -5,7 +5,7 @@ import { createLocalSnippetHelper } from "../../element-factories";
|
|
|
5
5
|
import type { ComponentHandlerDeps } from "../deps.interface";
|
|
6
6
|
import { handleSizeProp } from "../size";
|
|
7
7
|
|
|
8
|
-
const { createLocalSnippetElement } = createLocalSnippetHelper("
|
|
8
|
+
const { createLocalSnippetElement } = createLocalSnippetHelper("text-field");
|
|
9
9
|
|
|
10
10
|
export const createMultilineTextFieldHandler = (_ctx: ComponentHandlerDeps) =>
|
|
11
11
|
defineComponentHandler<MultilineTextFieldProperties>(
|
|
@@ -45,7 +45,9 @@ export const createProgressCircleHandler = (_ctx: ComponentHandlerDeps) =>
|
|
|
45
45
|
minValue,
|
|
46
46
|
maxValue,
|
|
47
47
|
size: props.Size.value,
|
|
48
|
-
|
|
48
|
+
...(props.Tone.value !== "Custom(inherit)" && {
|
|
49
|
+
tone: camelCase(props.Tone.value),
|
|
50
|
+
}),
|
|
49
51
|
};
|
|
50
52
|
|
|
51
53
|
return createLocalSnippetElement("ProgressCircle", commonProps);
|
|
@@ -36,7 +36,7 @@ export const createSegmentedControlHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
36
36
|
|
|
37
37
|
return defineComponentHandler<SegmentedControlProperties>(
|
|
38
38
|
metadata.segmentedControl.key,
|
|
39
|
-
(node) => {
|
|
39
|
+
(node, traverse) => {
|
|
40
40
|
const segments = findAllInstances<SegmentedControlItemProperties>({
|
|
41
41
|
node,
|
|
42
42
|
key: segmentedControlItemHandler.key,
|
|
@@ -46,7 +46,9 @@ export const createSegmentedControlHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
46
46
|
segment.componentProperties.State.value.split("-").includes("Selected"),
|
|
47
47
|
);
|
|
48
48
|
|
|
49
|
-
const segmentedControlChildren = segments.map(
|
|
49
|
+
const segmentedControlChildren = segments.map((segment) =>
|
|
50
|
+
segmentedControlItemHandler.transform(segment, traverse),
|
|
51
|
+
);
|
|
50
52
|
|
|
51
53
|
const commonProps = {
|
|
52
54
|
...(selectedSegment && {
|
|
@@ -14,7 +14,7 @@ export const createSelectBoxHandler = (_ctx: ComponentHandlerDeps) =>
|
|
|
14
14
|
({ componentProperties: props }) => {
|
|
15
15
|
const tag = match(props.Control.value)
|
|
16
16
|
.with("Checkbox", () => "CheckSelectBox")
|
|
17
|
-
.with("Radio", () => "
|
|
17
|
+
.with("Radio", () => "RadioSelectBoxItem")
|
|
18
18
|
.exhaustive();
|
|
19
19
|
|
|
20
20
|
const states = props.State.value.split("-");
|
|
@@ -24,7 +24,7 @@ export const createSelectBoxHandler = (_ctx: ComponentHandlerDeps) =>
|
|
|
24
24
|
...(props["Show Description#3033:0"].value && {
|
|
25
25
|
description: props["Description #3033:5"].value,
|
|
26
26
|
}),
|
|
27
|
-
...(tag === "
|
|
27
|
+
...(tag === "RadioSelectBoxItem" && {
|
|
28
28
|
value: props["Label#3635:0"].value,
|
|
29
29
|
}),
|
|
30
30
|
...(tag === "CheckSelectBox" &&
|
|
@@ -42,12 +42,12 @@ export const createSelectBoxGroupHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
42
42
|
|
|
43
43
|
return defineComponentHandler<SelectBoxGroupProperties>(
|
|
44
44
|
metadata.templateSelectBoxGroup.key,
|
|
45
|
-
(node) => {
|
|
45
|
+
(node, traverse) => {
|
|
46
46
|
const props = node.componentProperties;
|
|
47
47
|
|
|
48
48
|
const tag = match(props.Control.value)
|
|
49
49
|
.with("Checkbox", () => "CheckSelectBoxGroup")
|
|
50
|
-
.with("Radio", () => "
|
|
50
|
+
.with("Radio", () => "RadioSelectBoxRoot")
|
|
51
51
|
.exhaustive();
|
|
52
52
|
|
|
53
53
|
const selectBoxes = findAllInstances<SelectBoxProperties>({
|
|
@@ -59,14 +59,17 @@ export const createSelectBoxGroupHandler = (ctx: ComponentHandlerDeps) => {
|
|
|
59
59
|
selectBox.componentProperties.State.value.split("-").includes("Selected"),
|
|
60
60
|
);
|
|
61
61
|
|
|
62
|
+
// traverse the container like it's a frame
|
|
63
|
+
const vStackProps = traverse({ ...node, type: "FRAME" })?.props;
|
|
64
|
+
|
|
62
65
|
const stack = createSeedReactElement(
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
selectBoxes.map(selectBoxHandler.transform),
|
|
66
|
+
"VStack",
|
|
67
|
+
vStackProps,
|
|
68
|
+
selectBoxes.map((box) => selectBoxHandler.transform(box, traverse)),
|
|
66
69
|
);
|
|
67
70
|
|
|
68
71
|
const commonProps = {
|
|
69
|
-
...(tag === "
|
|
72
|
+
...(tag === "RadioSelectBoxRoot" && {
|
|
70
73
|
defaultValue: selectedSelectBox?.componentProperties["Label#3635:0"].value,
|
|
71
74
|
}),
|
|
72
75
|
};
|
|
@@ -14,8 +14,8 @@ export const createSnackbarHandler = (_ctx: ComponentHandlerDeps) =>
|
|
|
14
14
|
const commonProps = {
|
|
15
15
|
message: props["Message#1528:4"].value,
|
|
16
16
|
variant: camelCase(props.Variant.value),
|
|
17
|
-
...(props["Show Action
|
|
18
|
-
actionLabel: props["Action
|
|
17
|
+
...(props["Show Action#1528:0"].value && {
|
|
18
|
+
actionLabel: props["Action Label#1528:8"].value,
|
|
19
19
|
}),
|
|
20
20
|
};
|
|
21
21
|
|
|
@@ -3,7 +3,6 @@ import { defineComponentHandler } from "@/codegen/core";
|
|
|
3
3
|
import * as metadata from "@/entities/data/__generated__/component-sets";
|
|
4
4
|
import { createLocalSnippetHelper } from "../../element-factories";
|
|
5
5
|
import type { ComponentHandlerDeps } from "../deps.interface";
|
|
6
|
-
import { handleSizeProp } from "../size";
|
|
7
6
|
|
|
8
7
|
const { createLocalSnippetElement } = createLocalSnippetHelper("switch");
|
|
9
8
|
|
|
@@ -13,13 +12,9 @@ export const createSwitchHandler = (_ctx: ComponentHandlerDeps) =>
|
|
|
13
12
|
({ componentProperties: props }) => {
|
|
14
13
|
const states = props.State.value.split("-");
|
|
15
14
|
|
|
16
|
-
const size = handleSizeProp(props.Size.value);
|
|
17
|
-
|
|
18
15
|
const commonProps = {
|
|
19
|
-
size,
|
|
20
|
-
|
|
21
|
-
label: props["Label#15191:2"].value,
|
|
22
|
-
}),
|
|
16
|
+
size: props.Size.value,
|
|
17
|
+
label: props["Label#36578:0"].value,
|
|
23
18
|
...(states.includes("Selected") && {
|
|
24
19
|
defaultChecked: true,
|
|
25
20
|
}),
|
|
@@ -1,131 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
TabsFillItemProperties,
|
|
3
|
-
TabsHugItemProperties,
|
|
4
|
-
TabsProperties,
|
|
5
|
-
} from "@/codegen/component-properties";
|
|
6
|
-
import { defineComponentHandler } from "@/codegen/core";
|
|
7
|
-
import * as metadata from "@/entities/data/__generated__/component-sets";
|
|
8
|
-
import type { NormalizedInstanceNode } from "@/normalizer";
|
|
9
|
-
import { camelCase } from "change-case";
|
|
10
1
|
import { createLocalSnippetHelper } from "../../element-factories";
|
|
11
|
-
import type { ComponentHandlerDeps } from "../deps.interface";
|
|
12
|
-
import { handleSizeProp } from "../size";
|
|
13
2
|
|
|
14
|
-
const { createLocalSnippetElement } =
|
|
3
|
+
const { createLocalSnippetElement: createTabsLocalSnippetElement } =
|
|
4
|
+
createLocalSnippetHelper("tabs");
|
|
15
5
|
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
defineComponentHandler<TabsHugItemProperties>(
|
|
19
|
-
TABS_HUG_ITEM_KEY,
|
|
20
|
-
({ componentProperties: props }) => {
|
|
21
|
-
const states = props.State.value.split("-");
|
|
6
|
+
const TABS_UNDERLINE_HUG_ITEM_KEY = "946cc52671ac3f46e20a8ff12fcc1c7f618da675";
|
|
7
|
+
const TABS_UNDERLINE_FILL_ITEM_KEY = "78039b6b86852b685a6e93e9b6743b9e577cd7db";
|
|
22
8
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
...(props.Notification.value === "True" && {
|
|
26
|
-
alert: true,
|
|
27
|
-
}),
|
|
28
|
-
...(states.includes("Disabled") && {
|
|
29
|
-
disabled: true,
|
|
30
|
-
}),
|
|
31
|
-
};
|
|
9
|
+
const { createLocalSnippetElement: createChipTabsLocalSnippetElement } =
|
|
10
|
+
createLocalSnippetHelper("chip-tabs");
|
|
32
11
|
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
);
|
|
12
|
+
const TABS_CHIP_ITEM_KEY = "95bf31a329f9e8bba0d9aa2299d1552f1d388148";
|
|
36
13
|
|
|
37
|
-
|
|
38
|
-
const createTabsFillItemHandler = (_ctx: ComponentHandlerDeps) =>
|
|
39
|
-
defineComponentHandler<TabsFillItemProperties>(
|
|
40
|
-
TABS_FILL_ITEM_KEY,
|
|
41
|
-
({ componentProperties: props }) => {
|
|
42
|
-
const states = props.State.value.split("-");
|
|
43
|
-
|
|
44
|
-
const commonProps = {
|
|
45
|
-
value: props["Label#4478:2"].value,
|
|
46
|
-
...(props.Notification.value === "True" && {
|
|
47
|
-
alert: true,
|
|
48
|
-
}),
|
|
49
|
-
...(states.includes("Disabled") && {
|
|
50
|
-
disabled: true,
|
|
51
|
-
}),
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
return createLocalSnippetElement("TabsTrigger", commonProps, props["Label#4478:2"].value);
|
|
55
|
-
},
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
export const createTabsHandler = (ctx: ComponentHandlerDeps) => {
|
|
59
|
-
const tabsHugItemHandler = createTabsHugItemHandler(ctx);
|
|
60
|
-
const tabsFillItemHandler = createTabsFillItemHandler(ctx);
|
|
61
|
-
|
|
62
|
-
return defineComponentHandler<TabsProperties>(metadata.tablist.key, (node) => {
|
|
63
|
-
const { componentProperties: props, children } = node;
|
|
64
|
-
|
|
65
|
-
const mappedItems = children.map(
|
|
66
|
-
(
|
|
67
|
-
child,
|
|
68
|
-
): {
|
|
69
|
-
triggerLayout: "hug" | "fill";
|
|
70
|
-
node: NormalizedInstanceNode & {
|
|
71
|
-
componentProperties: TabsHugItemProperties | TabsFillItemProperties;
|
|
72
|
-
};
|
|
73
|
-
} | null => {
|
|
74
|
-
if (child.type !== "INSTANCE") return null;
|
|
75
|
-
|
|
76
|
-
const componentKey = child.componentSetKey ? child.componentSetKey : child.componentKey;
|
|
77
|
-
|
|
78
|
-
if (componentKey === tabsHugItemHandler.key)
|
|
79
|
-
return {
|
|
80
|
-
triggerLayout: "hug" as const,
|
|
81
|
-
node: child as NormalizedInstanceNode & { componentProperties: TabsHugItemProperties },
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
if (componentKey === tabsFillItemHandler.key)
|
|
85
|
-
return {
|
|
86
|
-
triggerLayout: "fill" as const,
|
|
87
|
-
node: child as NormalizedInstanceNode & { componentProperties: TabsFillItemProperties },
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
return null;
|
|
91
|
-
},
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
const tabsItems = mappedItems.filter(
|
|
95
|
-
(item): item is NonNullable<(typeof mappedItems)[number]> => item !== null,
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
const selectedTabsItem = tabsItems.find(({ node: { componentProperties } }) =>
|
|
99
|
-
componentProperties.State.value.split("-").includes("Selected"),
|
|
100
|
-
)?.node;
|
|
101
|
-
|
|
102
|
-
const tabTriggerList = createLocalSnippetElement(
|
|
103
|
-
"TabsList",
|
|
104
|
-
undefined,
|
|
105
|
-
tabsItems.map(({ triggerLayout, node }) => {
|
|
106
|
-
switch (triggerLayout) {
|
|
107
|
-
case "hug":
|
|
108
|
-
return tabsHugItemHandler.transform(node);
|
|
109
|
-
case "fill":
|
|
110
|
-
return tabsFillItemHandler.transform(node);
|
|
111
|
-
}
|
|
112
|
-
}),
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
const tabContents = tabsItems.map(({ node }) => {
|
|
116
|
-
const value = node.componentProperties["Label#4478:2"].value;
|
|
117
|
-
|
|
118
|
-
return createLocalSnippetElement("TabsContent", { value }, "{/* TODO: 컨텐츠 추가 */}");
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
const commonProps = {
|
|
122
|
-
triggerLayout: camelCase(props.Layout.value),
|
|
123
|
-
size: handleSizeProp(props.Size.value),
|
|
124
|
-
...(selectedTabsItem && {
|
|
125
|
-
defaultValue: selectedTabsItem.componentProperties["Label#4478:2"].value,
|
|
126
|
-
}),
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
return createLocalSnippetElement("TabsRoot", commonProps, [tabTriggerList, ...tabContents]);
|
|
130
|
-
});
|
|
131
|
-
};
|
|
14
|
+
// TODO: Implement the tabs handler
|
|
@@ -1,25 +1,30 @@
|
|
|
1
1
|
import type { ComponentHandler } from "@/codegen/core";
|
|
2
2
|
import type { NormalizedInstanceNode } from "@/normalizer";
|
|
3
3
|
import type { ComponentHandlerDeps } from "./deps.interface";
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
createActionButtonHandler,
|
|
7
|
+
createActionButtonGhostHandler,
|
|
8
|
+
} from "./handlers/action-button";
|
|
9
|
+
import { createAlertDialogHandler } from "./handlers/alert-dialog";
|
|
7
10
|
import { createAppBarHandler } from "./handlers/app-bar";
|
|
8
11
|
import { createAvatarHandler } from "./handlers/avatar";
|
|
9
12
|
import { createAvatarStackHandler } from "./handlers/avatar-stack";
|
|
10
13
|
import { createBadgeHandler } from "./handlers/badge";
|
|
14
|
+
import { createBottomSheetHandler } from "./handlers/bottom-sheet";
|
|
11
15
|
import { createCalloutHandler } from "./handlers/callout";
|
|
12
16
|
import { createCheckboxHandler } from "./handlers/checkbox";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
17
|
+
import { createChipHandler } from "./handlers/chip";
|
|
18
|
+
import { createContextualFloatingButtonHandler } from "./handlers/contextual-floating-button";
|
|
19
|
+
import { createDividerHandler } from "./handlers/divider";
|
|
15
20
|
import { createErrorStateHandler } from "./handlers/error-state";
|
|
16
|
-
import {
|
|
17
|
-
import { createExtendedFabHandler } from "./handlers/extended-fab";
|
|
18
|
-
import { createFabHandler } from "./handlers/fab";
|
|
21
|
+
import { createFloatingActionButtonHandler } from "./handlers/floating-action-button";
|
|
19
22
|
import { createHelpBubbleHandler } from "./handlers/help-bubble";
|
|
20
23
|
import { createIdentityPlaceholderHandler } from "./handlers/identity-placeholder";
|
|
21
24
|
import { createInlineBannerHandler } from "./handlers/inline-banner";
|
|
22
25
|
import { createMannerTempBadgeHandler } from "./handlers/manner-temp-badge";
|
|
26
|
+
import { createMannerTempHandler } from "./handlers/manner-temp";
|
|
27
|
+
import { createMenuSheetHandler } from "./handlers/menu-sheet";
|
|
23
28
|
import { createMultilineTextFieldHandler } from "./handlers/multiline-text-field";
|
|
24
29
|
import { createProgressCircleHandler } from "./handlers/progress-circle";
|
|
25
30
|
import { createReactionButtonHandler } from "./handlers/reaction-button";
|
|
@@ -28,8 +33,6 @@ import { createSelectBoxGroupHandler, createSelectBoxHandler } from "./handlers/
|
|
|
28
33
|
import { createSkeletonHandler } from "./handlers/skeleton";
|
|
29
34
|
import { createSnackbarHandler } from "./handlers/snackbar";
|
|
30
35
|
import { createSwitchHandler } from "./handlers/switch";
|
|
31
|
-
import { createTabsHandler } from "./handlers/tabs";
|
|
32
|
-
import { createTextButtonHandler } from "./handlers/text-button";
|
|
33
36
|
import { createTextFieldHandler } from "./handlers/text-field";
|
|
34
37
|
import { createToggleButtonHandler } from "./handlers/toggle-button";
|
|
35
38
|
|
|
@@ -46,25 +49,27 @@ export function bindComponentHandler<T extends NormalizedInstanceNode["component
|
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
export const unboundSeedComponentHandlers: Array<UnboundComponentHandler<any>> = [
|
|
52
|
+
createActionButtonGhostHandler,
|
|
49
53
|
createActionButtonHandler,
|
|
50
|
-
|
|
51
|
-
createActionSheetHandler,
|
|
54
|
+
createAlertDialogHandler,
|
|
52
55
|
createAppBarHandler,
|
|
53
56
|
createAvatarHandler,
|
|
54
57
|
createAvatarStackHandler,
|
|
55
58
|
createBadgeHandler,
|
|
59
|
+
createBottomSheetHandler,
|
|
56
60
|
createCalloutHandler,
|
|
57
61
|
createCheckboxHandler,
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
createChipHandler,
|
|
63
|
+
createContextualFloatingButtonHandler,
|
|
64
|
+
createDividerHandler,
|
|
60
65
|
createErrorStateHandler,
|
|
61
|
-
|
|
62
|
-
createExtendedFabHandler,
|
|
63
|
-
createFabHandler,
|
|
66
|
+
createFloatingActionButtonHandler,
|
|
64
67
|
createHelpBubbleHandler,
|
|
65
68
|
createIdentityPlaceholderHandler,
|
|
66
69
|
createInlineBannerHandler,
|
|
67
70
|
createMannerTempBadgeHandler,
|
|
71
|
+
createMannerTempHandler,
|
|
72
|
+
createMenuSheetHandler,
|
|
68
73
|
createMultilineTextFieldHandler,
|
|
69
74
|
createProgressCircleHandler,
|
|
70
75
|
createReactionButtonHandler,
|
|
@@ -74,8 +79,6 @@ export const unboundSeedComponentHandlers: Array<UnboundComponentHandler<any>> =
|
|
|
74
79
|
createSkeletonHandler,
|
|
75
80
|
createSnackbarHandler,
|
|
76
81
|
createSwitchHandler,
|
|
77
|
-
createTabsHandler,
|
|
78
|
-
createTextButtonHandler,
|
|
79
82
|
createTextFieldHandler,
|
|
80
83
|
createToggleButtonHandler,
|
|
81
84
|
];
|
|
@@ -37,7 +37,7 @@ export function createInstanceTransformer({
|
|
|
37
37
|
: componentHandlers[componentKey];
|
|
38
38
|
|
|
39
39
|
if (componentHandler) {
|
|
40
|
-
return componentHandler.transform(node);
|
|
40
|
+
return componentHandler.transform(node, traverse);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
return frameTransformer(node, traverse);
|
|
@@ -28,7 +28,8 @@ import {
|
|
|
28
28
|
import { createTextTransformer } from "./text";
|
|
29
29
|
import {
|
|
30
30
|
defaultRawValueFormatters,
|
|
31
|
-
|
|
31
|
+
defaultTextStyleNameFormatter,
|
|
32
|
+
defaultFillStyleResolver,
|
|
32
33
|
defaultVariableNameFormatter,
|
|
33
34
|
} from "./value-resolver";
|
|
34
35
|
|
|
@@ -51,7 +52,8 @@ export function createPipeline(options: CreatePipelineConfig = {}) {
|
|
|
51
52
|
variableService,
|
|
52
53
|
variableNameFormatter: defaultVariableNameFormatter,
|
|
53
54
|
styleService,
|
|
54
|
-
|
|
55
|
+
textStyleNameFormatter: defaultTextStyleNameFormatter,
|
|
56
|
+
fillStyleResolver: defaultFillStyleResolver,
|
|
55
57
|
rawValueFormatters: defaultRawValueFormatters,
|
|
56
58
|
shouldInferVariableName,
|
|
57
59
|
});
|
|
@@ -143,7 +143,7 @@ export function createContainerLayoutPropsConverter(
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
export interface SelfLayoutProps {
|
|
146
|
-
|
|
146
|
+
flexGrow?: 0 | 1 | true;
|
|
147
147
|
alignSelf?: "stretch";
|
|
148
148
|
width?: string | number;
|
|
149
149
|
height?: string | number;
|
|
@@ -162,7 +162,7 @@ export function createSelfLayoutPropsConverter(
|
|
|
162
162
|
props: {} as SelfLayoutProps,
|
|
163
163
|
},
|
|
164
164
|
handlers: {
|
|
165
|
-
|
|
165
|
+
flexGrow: ({ layoutGrow }) => (layoutGrow === 1 ? true : layoutGrow),
|
|
166
166
|
alignSelf: ({ layoutAlign }) =>
|
|
167
167
|
match(layoutAlign)
|
|
168
168
|
.with("STRETCH", () => "stretch" as const)
|
|
@@ -198,7 +198,7 @@ export function createSelfLayoutPropsConverter(
|
|
|
198
198
|
: undefined,
|
|
199
199
|
},
|
|
200
200
|
defaults: {
|
|
201
|
-
|
|
201
|
+
flexGrow: 0,
|
|
202
202
|
},
|
|
203
203
|
});
|
|
204
204
|
}
|
|
@@ -291,16 +291,23 @@ export function createTypeStylePropsConverter({
|
|
|
291
291
|
});
|
|
292
292
|
}
|
|
293
293
|
|
|
294
|
-
export
|
|
295
|
-
bg?: string;
|
|
296
|
-
}
|
|
294
|
+
export type FrameFillProps =
|
|
295
|
+
| { bg?: string | undefined; bgGradient?: never; bgGradientDirection?: never }
|
|
296
|
+
| { bg?: never; bgGradient: string; bgGradientDirection?: string };
|
|
297
297
|
|
|
298
298
|
export function createFrameFillPropsConverter(valueResolver: ReactValueResolver) {
|
|
299
299
|
return definePropsConverter<FillTrait, FrameFillProps>((node) => {
|
|
300
300
|
const bg = valueResolver.getFormattedValue.frameFill(node);
|
|
301
301
|
|
|
302
|
+
if (bg === undefined || typeof bg === "string") {
|
|
303
|
+
return {
|
|
304
|
+
bg,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
|
|
302
308
|
return {
|
|
303
|
-
bg,
|
|
309
|
+
bgGradient: bg.value,
|
|
310
|
+
...(bg.direction && { bgGradientDirection: bg.direction }),
|
|
304
311
|
};
|
|
305
312
|
});
|
|
306
313
|
}
|
|
@@ -364,7 +371,7 @@ export function createVectorChildrenFillPropsConverter(valueResolver: ReactValue
|
|
|
364
371
|
}
|
|
365
372
|
|
|
366
373
|
export interface StrokeProps {
|
|
367
|
-
borderWidth?:
|
|
374
|
+
borderWidth?: string;
|
|
368
375
|
borderColor?: string;
|
|
369
376
|
}
|
|
370
377
|
|
|
@@ -373,7 +380,7 @@ export function createStrokePropsConverter(
|
|
|
373
380
|
): PropsConverter<StrokeTrait, StrokeProps> {
|
|
374
381
|
return definePropsConverter((node) => {
|
|
375
382
|
const borderColor = valueResolver.getFormattedValue.stroke(node);
|
|
376
|
-
const borderWidth = borderColor ? node.strokeWeight : undefined;
|
|
383
|
+
const borderWidth = borderColor && node.strokeWeight ? `${node.strokeWeight}` : undefined;
|
|
377
384
|
|
|
378
385
|
return {
|
|
379
386
|
borderColor,
|
|
@@ -3,7 +3,13 @@ import { camelCasePreserveUnderscoreBetweenNumbers } from "@/utils/common";
|
|
|
3
3
|
import { toCssPixel, toCssRgba } from "@/utils/css";
|
|
4
4
|
import { camelCase } from "change-case";
|
|
5
5
|
|
|
6
|
-
export type ReactValueResolver = ValueResolver<
|
|
6
|
+
export type ReactValueResolver = ValueResolver<
|
|
7
|
+
string,
|
|
8
|
+
{ value: string; direction?: string },
|
|
9
|
+
string,
|
|
10
|
+
string,
|
|
11
|
+
number
|
|
12
|
+
>;
|
|
7
13
|
|
|
8
14
|
export const defaultVariableNameFormatter = ({ slug }: { slug: string[] }) =>
|
|
9
15
|
slug
|
|
@@ -21,8 +27,37 @@ export const defaultVariableNameFormatter = ({ slug }: { slug: string[] }) =>
|
|
|
21
27
|
.map(camelCasePreserveUnderscoreBetweenNumbers)
|
|
22
28
|
.join(".");
|
|
23
29
|
|
|
24
|
-
export const
|
|
25
|
-
camelCase(slug[slug.length - 1]!, { mergeAmbiguousCharacters: true });
|
|
30
|
+
export const defaultTextStyleNameFormatter = ({ slug }: { slug: string[] }) => {
|
|
31
|
+
return camelCase(slug[slug.length - 1]!, { mergeAmbiguousCharacters: true });
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const defaultFillStyleResolver = ({ slug }: { slug: string[] }) => {
|
|
35
|
+
const [, ...rest] = slug;
|
|
36
|
+
|
|
37
|
+
if (rest[0] === "fade") {
|
|
38
|
+
// ["fade", "layer-default", "↓(to-bottom)"]
|
|
39
|
+
|
|
40
|
+
const last = rest[rest.length - 1];
|
|
41
|
+
|
|
42
|
+
const direction = (() => {
|
|
43
|
+
if (last.startsWith("↓")) return "to bottom";
|
|
44
|
+
if (last.startsWith("↑")) return "to top";
|
|
45
|
+
if (last.startsWith("→")) return "to right";
|
|
46
|
+
if (last.startsWith("←")) return "to left";
|
|
47
|
+
|
|
48
|
+
return "unknown";
|
|
49
|
+
})();
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
value: camelCase(rest.slice(0, -1).join("-"), { mergeAmbiguousCharacters: true }),
|
|
53
|
+
direction,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
value: camelCase(rest.join("-"), { mergeAmbiguousCharacters: true }),
|
|
59
|
+
};
|
|
60
|
+
};
|
|
26
61
|
|
|
27
62
|
export const defaultRawValueFormatters = {
|
|
28
63
|
color: (value: RGBA) => toCssRgba(value),
|
|
@@ -2,21 +2,21 @@ export declare const metadata: {
|
|
|
2
2
|
"name": "🟢 Action Button",
|
|
3
3
|
"key": "450ede9d0bf42fc6ef14345c77e6e407d6d5ee89",
|
|
4
4
|
"componentPropertyDefinitions": {
|
|
5
|
+
"Label#5987:61": {
|
|
6
|
+
"type": "TEXT"
|
|
7
|
+
},
|
|
5
8
|
"Suffix Icon#5987:244": {
|
|
6
9
|
"type": "INSTANCE_SWAP",
|
|
7
10
|
"preferredValues": []
|
|
8
11
|
},
|
|
9
|
-
"Icon#
|
|
12
|
+
"Prefix Icon#5987:305": {
|
|
10
13
|
"type": "INSTANCE_SWAP",
|
|
11
14
|
"preferredValues": []
|
|
12
15
|
},
|
|
13
|
-
"
|
|
16
|
+
"Icon#7574:0": {
|
|
14
17
|
"type": "INSTANCE_SWAP",
|
|
15
18
|
"preferredValues": []
|
|
16
19
|
},
|
|
17
|
-
"Label#5987:61": {
|
|
18
|
-
"type": "TEXT"
|
|
19
|
-
},
|
|
20
20
|
"Size": {
|
|
21
21
|
"type": "VARIANT",
|
|
22
22
|
"variantOptions": [
|