@seed-design/figma 0.0.20 → 0.0.22

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 (87) hide show
  1. package/lib/codegen/index.cjs +8019 -0
  2. package/lib/codegen/index.d.ts +1827 -0
  3. package/lib/codegen/index.js +7989 -0
  4. package/lib/codegen/targets/react/index.cjs +12205 -0
  5. package/lib/codegen/targets/react/index.d.ts +270 -0
  6. package/lib/codegen/targets/react/index.js +12187 -0
  7. package/lib/index.cjs +86 -2741
  8. package/lib/index.d.ts +18 -1933
  9. package/lib/index.js +68 -2715
  10. package/package.json +18 -9
  11. package/src/codegen/{targets/react/component/properties.type.ts → component-properties.ts} +43 -43
  12. package/src/codegen/core/codegen.ts +24 -9
  13. package/src/codegen/core/{component.ts → component-handler.ts} +3 -3
  14. package/src/codegen/core/component-type-helper.ts +35 -0
  15. package/src/codegen/core/context.ts +20 -0
  16. package/src/codegen/core/index.ts +16 -14
  17. package/src/codegen/core/infer-layout.test.ts +17 -16
  18. package/src/codegen/core/infer-layout.ts +1 -1
  19. package/src/codegen/core/{props.ts → props-converter.ts} +10 -13
  20. package/src/codegen/core/{value.ts → value-resolver.ts} +90 -52
  21. package/src/codegen/default-services.ts +44 -0
  22. package/src/codegen/index.ts +1 -44
  23. package/src/codegen/targets/figma/frame.ts +8 -8
  24. package/src/codegen/targets/figma/index.ts +1 -1
  25. package/src/codegen/targets/figma/pipeline.ts +71 -0
  26. package/src/codegen/targets/figma/props.ts +59 -70
  27. package/src/codegen/targets/figma/shape.ts +18 -18
  28. package/src/codegen/targets/figma/text.ts +6 -6
  29. package/src/codegen/targets/figma/value-resolver.ts +22 -0
  30. package/src/codegen/targets/react/component/deps.interface.ts +5 -4
  31. package/src/codegen/targets/react/component/{transformers → handlers}/action-button.ts +8 -14
  32. package/src/codegen/targets/react/component/{transformers → handlers}/action-chip.ts +10 -20
  33. package/src/codegen/targets/react/component/{transformers → handlers}/action-sheet.ts +13 -10
  34. package/src/codegen/targets/react/component/{transformers → handlers}/app-bar.ts +28 -36
  35. package/src/codegen/targets/react/component/handlers/avatar-stack.ts +29 -0
  36. package/src/codegen/targets/react/component/{transformers → handlers}/avatar.ts +12 -9
  37. package/src/codegen/targets/react/component/handlers/badge.ts +18 -0
  38. package/src/codegen/targets/react/component/{transformers → handlers}/callout.ts +6 -8
  39. package/src/codegen/targets/react/component/{transformers → handlers}/checkbox.ts +5 -5
  40. package/src/codegen/targets/react/component/{transformers → handlers}/chip-tabs.ts +10 -10
  41. package/src/codegen/targets/react/component/{transformers → handlers}/control-chip.ts +10 -20
  42. package/src/codegen/targets/react/component/{transformers → handlers}/error-state.ts +9 -9
  43. package/src/codegen/targets/react/component/{transformers → handlers}/extended-action-sheet.ts +16 -18
  44. package/src/codegen/targets/react/component/{transformers → handlers}/extended-fab.ts +6 -6
  45. package/src/codegen/targets/react/component/handlers/fab.ts +18 -0
  46. package/src/codegen/targets/react/component/{transformers → handlers}/help-bubble.ts +5 -5
  47. package/src/codegen/targets/react/component/{transformers → handlers}/identity-placeholder.ts +5 -5
  48. package/src/codegen/targets/react/component/{transformers → handlers}/inline-banner.ts +7 -10
  49. package/src/codegen/targets/react/component/{transformers → handlers}/manner-temp-badge.ts +5 -5
  50. package/src/codegen/targets/react/component/{transformers → handlers}/multiline-text-field.ts +5 -5
  51. package/src/codegen/targets/react/component/{transformers → handlers}/progress-circle.ts +5 -5
  52. package/src/codegen/targets/react/component/{transformers → handlers}/reaction-button.ts +6 -6
  53. package/src/codegen/targets/react/component/{transformers → handlers}/segmented-control.ts +10 -10
  54. package/src/codegen/targets/react/component/{transformers → handlers}/select-box.ts +10 -10
  55. package/src/codegen/targets/react/component/handlers/skeleton.ts +25 -0
  56. package/src/codegen/targets/react/component/{transformers → handlers}/snackbar.ts +5 -5
  57. package/src/codegen/targets/react/component/{transformers → handlers}/switch.ts +5 -5
  58. package/src/codegen/targets/react/component/{transformers → handlers}/tabs.ts +15 -15
  59. package/src/codegen/targets/react/component/{transformers → handlers}/text-button.ts +7 -13
  60. package/src/codegen/targets/react/component/{transformers → handlers}/text-field.ts +9 -9
  61. package/src/codegen/targets/react/component/{transformers → handlers}/toggle-button.ts +7 -11
  62. package/src/codegen/targets/react/component/index.ts +79 -75
  63. package/src/codegen/targets/react/frame.ts +8 -8
  64. package/src/codegen/targets/react/icon.ts +50 -0
  65. package/src/codegen/targets/react/index.ts +1 -1
  66. package/src/codegen/targets/react/instance.ts +19 -50
  67. package/src/codegen/targets/react/pipeline.ts +108 -0
  68. package/src/codegen/targets/react/props.ts +95 -73
  69. package/src/codegen/targets/react/shape.ts +5 -5
  70. package/src/codegen/targets/react/text.ts +6 -6
  71. package/src/codegen/targets/react/value-resolver.ts +35 -0
  72. package/src/entities/icon.repository.ts +2 -2
  73. package/src/entities/icon.service.ts +9 -20
  74. package/src/entities/style.service.ts +5 -17
  75. package/src/entities/variable.service.ts +36 -68
  76. package/src/normalizer/from-plugin.ts +3 -0
  77. package/src/normalizer/from-rest.ts +6 -0
  78. package/src/normalizer/types.ts +4 -1
  79. package/src/utils/figma-variable.ts +39 -3
  80. package/src/codegen/core/component.types.ts +0 -29
  81. package/src/codegen/targets/figma/context.ts +0 -139
  82. package/src/codegen/targets/react/component/transformers/avatar-stack.ts +0 -29
  83. package/src/codegen/targets/react/component/transformers/badge.ts +0 -21
  84. package/src/codegen/targets/react/component/transformers/fab.ts +0 -18
  85. package/src/codegen/targets/react/component/transformers/skeleton.ts +0 -51
  86. package/src/codegen/targets/react/context.ts +0 -176
  87. /package/src/codegen/core/{element.ts → element-transformer.ts} +0 -0
@@ -1,51 +0,0 @@
1
- import { createElement, defineComponentTransformer } from "@/codegen/core";
2
- import * as metadata from "@/entities/data/__generated__/component-sets";
3
- import { camelCase } from "change-case";
4
- import type { SeedComponentTransformerDeps } from "../deps.interface";
5
- import type { SkeletonProperties } from "../properties.type";
6
-
7
- export const createSkeletonTransformer = (ctx: SeedComponentTransformerDeps) =>
8
- defineComponentTransformer<SkeletonProperties>(
9
- metadata.skeleton.key,
10
- ({
11
- componentProperties: props,
12
- absoluteBoundingBox,
13
- layoutSizingHorizontal,
14
- layoutSizingVertical,
15
- boundVariables,
16
- }) => {
17
- const commonProps = {
18
- radius: camelCase(props.Radius.value),
19
- width: (() => {
20
- switch (layoutSizingHorizontal) {
21
- case "FIXED": {
22
- const variableId = boundVariables?.size?.x?.id;
23
- if (variableId) return ctx.variableService.getVariableName(variableId);
24
-
25
- return `${absoluteBoundingBox?.width}px`;
26
- }
27
- case "FILL":
28
- return "full";
29
- default:
30
- return "full";
31
- }
32
- })(),
33
- height: (() => {
34
- switch (layoutSizingVertical) {
35
- case "FIXED": {
36
- const variableId = boundVariables?.size?.y?.id;
37
- if (variableId) return ctx.variableService.getVariableName(variableId);
38
-
39
- return `${absoluteBoundingBox?.height}px`;
40
- }
41
- case "FILL":
42
- return "full";
43
- default:
44
- return "full";
45
- }
46
- })(),
47
- };
48
-
49
- return createElement("Skeleton", commonProps);
50
- },
51
- );
@@ -1,176 +0,0 @@
1
- import { createCodegenTransformer, createValueTransformer } from "@/codegen/core";
2
- import {
3
- createIconService,
4
- createStyleService,
5
- createVariableService,
6
- iconRepository,
7
- styleRepository,
8
- variableRepository,
9
- } from "@/entities";
10
- import { camelCasePreserveUnderscoreBetweenNumbers } from "@/utils/common";
11
- import { toCssPixel, toCssRgba } from "@/utils/css";
12
- import { camelCase } from "change-case";
13
- import { createSeedComponentTransformers } from "./component";
14
- import { createFrameTransformer } from "./frame";
15
- import { createInstanceTransformer } from "./instance";
16
- import {
17
- createContainerLayoutPropsTransformer,
18
- createFrameFillPropsTransformer,
19
- createIconSelfLayoutPropsTransformer,
20
- createRadiusPropsTransformer,
21
- createSelfLayoutPropsTransformer,
22
- createShapeFillPropsTransformer,
23
- createStrokePropsTransformer,
24
- createTextFillPropsTransformer,
25
- createTypeStylePropsTransformer,
26
- } from "./props";
27
- import {
28
- createBooleanOperationTransformer,
29
- createRectangleTransformer,
30
- createVectorTransformer,
31
- } from "./shape";
32
- import { createTextTransformer } from "./text";
33
-
34
- const IGNORED_COMPONENT_KEYS = new Set<string>([
35
- "1acdc7247c83a73a0504d6fad86d08783938cb1a",
36
- "b38b719b61cdf1a24458d7a7888bee74b7649084",
37
- ]);
38
-
39
- export interface CreateContextOptions {
40
- ignoredComponentKeys?: Set<string>;
41
- shouldInferVariableName: boolean;
42
- shouldInferAutoLayout: boolean;
43
- }
44
-
45
- const styleService = createStyleService({
46
- styleRepository,
47
- styleNameTransformer: ({ slug }) =>
48
- camelCase(slug[slug.length - 1]!, { mergeAmbiguousCharacters: true }),
49
- });
50
- const variableService = createVariableService({
51
- variableRepository,
52
- variableNameTransformer: ({ slug }) =>
53
- slug
54
- .filter(
55
- (s) =>
56
- !(
57
- s === "dimension" ||
58
- s === "radius" ||
59
- s === "font-size" ||
60
- s === "font-weight" ||
61
- s === "line-height"
62
- ),
63
- )
64
- .map((s) => s.replaceAll(",", "_"))
65
- .map(camelCasePreserveUnderscoreBetweenNumbers)
66
- .join("."),
67
- inferCompareFunction: (name1: string, name2: string) => {
68
- const scoreFn = (name: string) => {
69
- let score = 0;
70
- if (name.includes("bg")) {
71
- score += 100;
72
- }
73
- if (name.includes("fg")) {
74
- score += 100;
75
- }
76
- if (name.includes("stroke")) {
77
- score += 100;
78
- }
79
- if (name.includes("spacing-x")) {
80
- score -= 100;
81
- }
82
- if (name.includes("spacing-y")) {
83
- score -= 100;
84
- }
85
- if (name.endsWith("pressed")) {
86
- score -= 100;
87
- }
88
- return score;
89
- };
90
-
91
- return scoreFn(name2) - scoreFn(name1);
92
- },
93
- });
94
- const iconService = createIconService({
95
- iconRepository,
96
- });
97
-
98
- // TODO: implement figma component service
99
- const componentTransformers = createSeedComponentTransformers({
100
- iconService,
101
- variableService,
102
- });
103
-
104
- export function createContext(options: CreateContextOptions) {
105
- const {
106
- ignoredComponentKeys = IGNORED_COMPONENT_KEYS,
107
- shouldInferVariableName,
108
- shouldInferAutoLayout,
109
- } = options;
110
-
111
- const valueTransformer = createValueTransformer({
112
- variableService,
113
- formatters: {
114
- color: (value: RGBA) => toCssRgba(value),
115
- dimension: (value: number) => toCssPixel(value),
116
- fontDimension: (value: number) => toCssPixel(value),
117
- fontWeight: (value: number) => value,
118
- },
119
- shouldInferVariableName,
120
- });
121
-
122
- const containerLayoutPropsTransformer = createContainerLayoutPropsTransformer(valueTransformer);
123
- const selfLayoutPropsTransformer = createSelfLayoutPropsTransformer(valueTransformer);
124
- const iconSelfLayoutPropsTransformer = createIconSelfLayoutPropsTransformer(valueTransformer);
125
- const frameFillPropsTransformer = createFrameFillPropsTransformer(valueTransformer);
126
- const shapeFillPropsTransformer = createShapeFillPropsTransformer(valueTransformer);
127
- const textFillPropsTransformer = createTextFillPropsTransformer(valueTransformer);
128
- const radiusPropsTransformer = createRadiusPropsTransformer(valueTransformer);
129
- const strokePropsTransformer = createStrokePropsTransformer(valueTransformer);
130
- const typeStylePropsTransformer = createTypeStylePropsTransformer({
131
- valueTransformer,
132
- styleService,
133
- });
134
- const propsTransformers = {
135
- containerLayout: containerLayoutPropsTransformer,
136
- selfLayout: selfLayoutPropsTransformer,
137
- iconSelfLayout: iconSelfLayoutPropsTransformer,
138
- frameFill: frameFillPropsTransformer,
139
- shapeFill: shapeFillPropsTransformer,
140
- textFill: textFillPropsTransformer,
141
- radius: radiusPropsTransformer,
142
- stroke: strokePropsTransformer,
143
- typeStyle: typeStylePropsTransformer,
144
- };
145
-
146
- const frameTransformer = createFrameTransformer({
147
- propsTransformers,
148
- });
149
- const instanceTransformer = createInstanceTransformer({
150
- iconService,
151
- ignoredComponentKeys,
152
- propsTransformers,
153
- componentTransformers,
154
- frameTransformer,
155
- });
156
- const textTransformer = createTextTransformer({
157
- propsTransformers,
158
- });
159
- const rectangleTransformer = createRectangleTransformer({
160
- propsTransformers,
161
- });
162
- const vectorTransformer = createVectorTransformer();
163
- const booleanOperationTransformer = createBooleanOperationTransformer();
164
-
165
- const codegenTransformer = createCodegenTransformer({
166
- frameTransformer,
167
- textTransformer,
168
- rectangleTransformer,
169
- instanceTransformer,
170
- vectorTransformer,
171
- booleanOperationTransformer,
172
- shouldInferAutoLayout,
173
- });
174
-
175
- return codegenTransformer;
176
- }