@seed-design/figma 0.1.6 → 0.1.8
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 +746 -646
- package/lib/codegen/index.d.ts +707 -627
- package/lib/codegen/index.d.ts.map +1 -1
- package/lib/codegen/index.js +746 -646
- package/lib/codegen/targets/react/index.cjs +1170 -1180
- package/lib/codegen/targets/react/index.d.ts +20 -9
- package/lib/codegen/targets/react/index.d.ts.map +1 -1
- package/lib/codegen/targets/react/index.js +1170 -1180
- package/lib/index.cjs +883 -668
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +883 -668
- package/package.json +3 -3
- package/src/codegen/component-properties.ts +283 -146
- 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 +66 -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 +3 -2
- 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 +7 -4
- package/src/codegen/targets/react/component/handlers/snackbar.ts +2 -2
- 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 +11 -4
- 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 +86 -0
- package/src/entities/data/__generated__/component-sets/chip.mjs +86 -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 +1 -1
- package/src/entities/data/__generated__/component-sets/switch.mjs +1 -1
- 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
|
@@ -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" && {
|
|
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 && {
|
|
@@ -42,7 +42,7 @@ 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)
|
|
@@ -59,10 +59,13 @@ 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 = {
|
|
@@ -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
|
|
|
@@ -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
|
});
|
|
@@ -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
|
}
|
|
@@ -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": [
|
|
@@ -2,21 +2,21 @@ export 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": [
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const metadata: {
|
|
2
|
+
"name": "🟢 Alert Dialog",
|
|
3
|
+
"key": "e0c89524a554ca1bf95c016b7255f29e257624aa",
|
|
4
|
+
"componentPropertyDefinitions": {
|
|
5
|
+
"Title Text#20361:0": {
|
|
6
|
+
"type": "TEXT"
|
|
7
|
+
},
|
|
8
|
+
"Description Text#20361:7": {
|
|
9
|
+
"type": "TEXT"
|
|
10
|
+
},
|
|
11
|
+
"Show Title#20361:14": {
|
|
12
|
+
"type": "BOOLEAN"
|
|
13
|
+
},
|
|
14
|
+
"Layout": {
|
|
15
|
+
"type": "VARIANT",
|
|
16
|
+
"variantOptions": [
|
|
17
|
+
"Single",
|
|
18
|
+
"Neutral",
|
|
19
|
+
"Neutral (Overflow)",
|
|
20
|
+
"Critical",
|
|
21
|
+
"Critical (Overflow)",
|
|
22
|
+
"Nonpreferred"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export const metadata = {
|
|
2
|
+
"name": "🟢 Alert Dialog",
|
|
3
|
+
"key": "e0c89524a554ca1bf95c016b7255f29e257624aa",
|
|
4
|
+
"componentPropertyDefinitions": {
|
|
5
|
+
"Title Text#20361:0": {
|
|
6
|
+
"type": "TEXT"
|
|
7
|
+
},
|
|
8
|
+
"Description Text#20361:7": {
|
|
9
|
+
"type": "TEXT"
|
|
10
|
+
},
|
|
11
|
+
"Show Title#20361:14": {
|
|
12
|
+
"type": "BOOLEAN"
|
|
13
|
+
},
|
|
14
|
+
"Layout": {
|
|
15
|
+
"type": "VARIANT",
|
|
16
|
+
"variantOptions": [
|
|
17
|
+
"Single",
|
|
18
|
+
"Neutral",
|
|
19
|
+
"Neutral (Overflow)",
|
|
20
|
+
"Critical",
|
|
21
|
+
"Critical (Overflow)",
|
|
22
|
+
"Nonpreferred"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const metadata: {
|
|
2
2
|
"name": "🟢 Avatar Stack",
|
|
3
|
-
"key": "
|
|
3
|
+
"key": "e8e91e01000d878742c55cd6e44b6786460440f7",
|
|
4
4
|
"componentPropertyDefinitions": {
|
|
5
5
|
"Size": {
|
|
6
6
|
"type": "VARIANT",
|
|
@@ -8,24 +8,11 @@ export declare const metadata: {
|
|
|
8
8
|
"20",
|
|
9
9
|
"24",
|
|
10
10
|
"36",
|
|
11
|
+
"42",
|
|
11
12
|
"48",
|
|
12
|
-
"64"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"Item Count": {
|
|
16
|
-
"type": "VARIANT",
|
|
17
|
-
"variantOptions": [
|
|
18
|
-
"2",
|
|
19
|
-
"3",
|
|
20
|
-
"4",
|
|
21
|
-
"5"
|
|
22
|
-
]
|
|
23
|
-
},
|
|
24
|
-
"Top Item": {
|
|
25
|
-
"type": "VARIANT",
|
|
26
|
-
"variantOptions": [
|
|
27
|
-
"Last Item",
|
|
28
|
-
"First Item"
|
|
13
|
+
"64",
|
|
14
|
+
"80",
|
|
15
|
+
"96"
|
|
29
16
|
]
|
|
30
17
|
}
|
|
31
18
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const metadata = {
|
|
2
2
|
"name": "🟢 Avatar Stack",
|
|
3
|
-
"key": "
|
|
3
|
+
"key": "e8e91e01000d878742c55cd6e44b6786460440f7",
|
|
4
4
|
"componentPropertyDefinitions": {
|
|
5
5
|
"Size": {
|
|
6
6
|
"type": "VARIANT",
|
|
@@ -8,24 +8,11 @@ export const metadata = {
|
|
|
8
8
|
"20",
|
|
9
9
|
"24",
|
|
10
10
|
"36",
|
|
11
|
+
"42",
|
|
11
12
|
"48",
|
|
12
|
-
"64"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"Item Count": {
|
|
16
|
-
"type": "VARIANT",
|
|
17
|
-
"variantOptions": [
|
|
18
|
-
"2",
|
|
19
|
-
"3",
|
|
20
|
-
"4",
|
|
21
|
-
"5"
|
|
22
|
-
]
|
|
23
|
-
},
|
|
24
|
-
"Top Item": {
|
|
25
|
-
"type": "VARIANT",
|
|
26
|
-
"variantOptions": [
|
|
27
|
-
"Last Item",
|
|
28
|
-
"First Item"
|
|
13
|
+
"64",
|
|
14
|
+
"80",
|
|
15
|
+
"96"
|
|
29
16
|
]
|
|
30
17
|
}
|
|
31
18
|
}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
export declare const metadata: {
|
|
2
2
|
"name": "🟢 Avatar",
|
|
3
|
-
"key": "
|
|
3
|
+
"key": "4a8853c3068c08b69b13e71dd42ce186e968697e",
|
|
4
4
|
"componentPropertyDefinitions": {
|
|
5
|
-
"
|
|
6
|
-
"type": "BOOLEAN"
|
|
7
|
-
},
|
|
8
|
-
"Show Badge#1398:26": {
|
|
5
|
+
"Has Image Contents#33407:0": {
|
|
9
6
|
"type": "BOOLEAN"
|
|
10
7
|
},
|
|
11
8
|
"Size": {
|
|
@@ -20,6 +17,15 @@ export declare const metadata: {
|
|
|
20
17
|
"80",
|
|
21
18
|
"96"
|
|
22
19
|
]
|
|
20
|
+
},
|
|
21
|
+
"Badge": {
|
|
22
|
+
"type": "VARIANT",
|
|
23
|
+
"variantOptions": [
|
|
24
|
+
"None",
|
|
25
|
+
"Circle",
|
|
26
|
+
"Shield",
|
|
27
|
+
"Flower"
|
|
28
|
+
]
|
|
23
29
|
}
|
|
24
30
|
}
|
|
25
31
|
};
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
export const metadata = {
|
|
2
2
|
"name": "🟢 Avatar",
|
|
3
|
-
"key": "
|
|
3
|
+
"key": "4a8853c3068c08b69b13e71dd42ce186e968697e",
|
|
4
4
|
"componentPropertyDefinitions": {
|
|
5
|
-
"
|
|
6
|
-
"type": "BOOLEAN"
|
|
7
|
-
},
|
|
8
|
-
"Show Badge#1398:26": {
|
|
5
|
+
"Has Image Contents#33407:0": {
|
|
9
6
|
"type": "BOOLEAN"
|
|
10
7
|
},
|
|
11
8
|
"Size": {
|
|
@@ -20,6 +17,15 @@ export const metadata = {
|
|
|
20
17
|
"80",
|
|
21
18
|
"96"
|
|
22
19
|
]
|
|
20
|
+
},
|
|
21
|
+
"Badge": {
|
|
22
|
+
"type": "VARIANT",
|
|
23
|
+
"variantOptions": [
|
|
24
|
+
"None",
|
|
25
|
+
"Circle",
|
|
26
|
+
"Shield",
|
|
27
|
+
"Flower"
|
|
28
|
+
]
|
|
23
29
|
}
|
|
24
30
|
}
|
|
25
31
|
};
|