figma-to-code-agent 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/LICENSE +21 -0
  3. package/QUICKSTART.md +198 -0
  4. package/README.md +149 -0
  5. package/dist/FigmaToCodeAgent.d.ts +55 -0
  6. package/dist/FigmaToCodeAgent.d.ts.map +1 -0
  7. package/dist/FigmaToCodeAgent.js +251 -0
  8. package/dist/FigmaToCodeAgent.js.map +1 -0
  9. package/dist/assets/index.d.ts +6 -0
  10. package/dist/assets/index.d.ts.map +1 -0
  11. package/dist/assets/index.js +7 -0
  12. package/dist/assets/index.js.map +1 -0
  13. package/dist/cli.d.ts +3 -0
  14. package/dist/cli.d.ts.map +1 -0
  15. package/dist/cli.js +261 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/extraction/FigmaAPIClient.d.ts +53 -0
  18. package/dist/extraction/FigmaAPIClient.d.ts.map +1 -0
  19. package/dist/extraction/FigmaAPIClient.js +275 -0
  20. package/dist/extraction/FigmaAPIClient.js.map +1 -0
  21. package/dist/extraction/FigmaCache.d.ts +28 -0
  22. package/dist/extraction/FigmaCache.d.ts.map +1 -0
  23. package/dist/extraction/FigmaCache.js +120 -0
  24. package/dist/extraction/FigmaCache.js.map +1 -0
  25. package/dist/extraction/MCPClient.d.ts +75 -0
  26. package/dist/extraction/MCPClient.d.ts.map +1 -0
  27. package/dist/extraction/MCPClient.js +254 -0
  28. package/dist/extraction/MCPClient.js.map +1 -0
  29. package/dist/extraction/index.d.ts +9 -0
  30. package/dist/extraction/index.d.ts.map +1 -0
  31. package/dist/extraction/index.js +27 -0
  32. package/dist/extraction/index.js.map +1 -0
  33. package/dist/extraction/types.d.ts +122 -0
  34. package/dist/extraction/types.d.ts.map +1 -0
  35. package/dist/extraction/types.js +6 -0
  36. package/dist/extraction/types.js.map +1 -0
  37. package/dist/generation/AICodeOptimizer.d.ts +10 -0
  38. package/dist/generation/AICodeOptimizer.d.ts.map +1 -0
  39. package/dist/generation/AICodeOptimizer.js +33 -0
  40. package/dist/generation/AICodeOptimizer.js.map +1 -0
  41. package/dist/generation/ReactGenerator.d.ts +27 -0
  42. package/dist/generation/ReactGenerator.d.ts.map +1 -0
  43. package/dist/generation/ReactGenerator.js +423 -0
  44. package/dist/generation/ReactGenerator.js.map +1 -0
  45. package/dist/generation/VueGenerator.d.ts +23 -0
  46. package/dist/generation/VueGenerator.d.ts.map +1 -0
  47. package/dist/generation/VueGenerator.js +337 -0
  48. package/dist/generation/VueGenerator.js.map +1 -0
  49. package/dist/generation/index.d.ts +6 -0
  50. package/dist/generation/index.d.ts.map +1 -0
  51. package/dist/generation/index.js +7 -0
  52. package/dist/generation/index.js.map +1 -0
  53. package/dist/generation/types.d.ts +24 -0
  54. package/dist/generation/types.d.ts.map +1 -0
  55. package/dist/generation/types.js +3 -0
  56. package/dist/generation/types.js.map +1 -0
  57. package/dist/index.d.ts +10 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +17 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/llm/BedrockProvider.d.ts +8 -0
  62. package/dist/llm/BedrockProvider.d.ts.map +1 -0
  63. package/dist/llm/BedrockProvider.js +34 -0
  64. package/dist/llm/BedrockProvider.js.map +1 -0
  65. package/dist/llm/LLMFactory.d.ts +5 -0
  66. package/dist/llm/LLMFactory.d.ts.map +1 -0
  67. package/dist/llm/LLMFactory.js +21 -0
  68. package/dist/llm/LLMFactory.js.map +1 -0
  69. package/dist/llm/OpenAIProvider.d.ts +7 -0
  70. package/dist/llm/OpenAIProvider.d.ts.map +1 -0
  71. package/dist/llm/OpenAIProvider.js +34 -0
  72. package/dist/llm/OpenAIProvider.js.map +1 -0
  73. package/dist/llm/index.d.ts +5 -0
  74. package/dist/llm/index.d.ts.map +1 -0
  75. package/dist/llm/index.js +21 -0
  76. package/dist/llm/index.js.map +1 -0
  77. package/dist/llm/types.d.ts +23 -0
  78. package/dist/llm/types.d.ts.map +1 -0
  79. package/dist/llm/types.js +3 -0
  80. package/dist/llm/types.js.map +1 -0
  81. package/dist/transformation/ASTFactory.d.ts +92 -0
  82. package/dist/transformation/ASTFactory.d.ts.map +1 -0
  83. package/dist/transformation/ASTFactory.js +240 -0
  84. package/dist/transformation/ASTFactory.js.map +1 -0
  85. package/dist/transformation/ASTParser.d.ts +13 -0
  86. package/dist/transformation/ASTParser.d.ts.map +1 -0
  87. package/dist/transformation/ASTParser.js +177 -0
  88. package/dist/transformation/ASTParser.js.map +1 -0
  89. package/dist/transformation/TransformationPipeline.d.ts +31 -0
  90. package/dist/transformation/TransformationPipeline.d.ts.map +1 -0
  91. package/dist/transformation/TransformationPipeline.js +42 -0
  92. package/dist/transformation/TransformationPipeline.js.map +1 -0
  93. package/dist/transformation/index.d.ts +7 -0
  94. package/dist/transformation/index.d.ts.map +1 -0
  95. package/dist/transformation/index.js +25 -0
  96. package/dist/transformation/index.js.map +1 -0
  97. package/dist/transformation/transformers/AIComponentSplitter.d.ts +14 -0
  98. package/dist/transformation/transformers/AIComponentSplitter.d.ts.map +1 -0
  99. package/dist/transformation/transformers/AIComponentSplitter.js +71 -0
  100. package/dist/transformation/transformers/AIComponentSplitter.js.map +1 -0
  101. package/dist/transformation/transformers/AILayoutAnalyzer.d.ts +18 -0
  102. package/dist/transformation/transformers/AILayoutAnalyzer.d.ts.map +1 -0
  103. package/dist/transformation/transformers/AILayoutAnalyzer.js +125 -0
  104. package/dist/transformation/transformers/AILayoutAnalyzer.js.map +1 -0
  105. package/dist/transformation/transformers/AISemanticNamer.d.ts +12 -0
  106. package/dist/transformation/transformers/AISemanticNamer.d.ts.map +1 -0
  107. package/dist/transformation/transformers/AISemanticNamer.js +50 -0
  108. package/dist/transformation/transformers/AISemanticNamer.js.map +1 -0
  109. package/dist/transformation/transformers/ComponentExtractor.d.ts +16 -0
  110. package/dist/transformation/transformers/ComponentExtractor.d.ts.map +1 -0
  111. package/dist/transformation/transformers/ComponentExtractor.js +91 -0
  112. package/dist/transformation/transformers/ComponentExtractor.js.map +1 -0
  113. package/dist/transformation/transformers/FigmaLayerPreserver.d.ts +14 -0
  114. package/dist/transformation/transformers/FigmaLayerPreserver.d.ts.map +1 -0
  115. package/dist/transformation/transformers/FigmaLayerPreserver.js +48 -0
  116. package/dist/transformation/transformers/FigmaLayerPreserver.js.map +1 -0
  117. package/dist/transformation/transformers/FigmaStructureOptimizer.d.ts +16 -0
  118. package/dist/transformation/transformers/FigmaStructureOptimizer.d.ts.map +1 -0
  119. package/dist/transformation/transformers/FigmaStructureOptimizer.js +65 -0
  120. package/dist/transformation/transformers/FigmaStructureOptimizer.js.map +1 -0
  121. package/dist/transformation/transformers/FlattenTransformer.d.ts +15 -0
  122. package/dist/transformation/transformers/FlattenTransformer.d.ts.map +1 -0
  123. package/dist/transformation/transformers/FlattenTransformer.js +69 -0
  124. package/dist/transformation/transformers/FlattenTransformer.js.map +1 -0
  125. package/dist/transformation/transformers/LayoutOptimizer.d.ts +15 -0
  126. package/dist/transformation/transformers/LayoutOptimizer.d.ts.map +1 -0
  127. package/dist/transformation/transformers/LayoutOptimizer.js +63 -0
  128. package/dist/transformation/transformers/LayoutOptimizer.js.map +1 -0
  129. package/dist/transformation/transformers/SemanticNamer.d.ts +14 -0
  130. package/dist/transformation/transformers/SemanticNamer.d.ts.map +1 -0
  131. package/dist/transformation/transformers/SemanticNamer.js +65 -0
  132. package/dist/transformation/transformers/SemanticNamer.js.map +1 -0
  133. package/dist/transformation/transformers/SimplifyTransformer.d.ts +23 -0
  134. package/dist/transformation/transformers/SimplifyTransformer.d.ts.map +1 -0
  135. package/dist/transformation/transformers/SimplifyTransformer.js +138 -0
  136. package/dist/transformation/transformers/SimplifyTransformer.js.map +1 -0
  137. package/dist/transformation/types.d.ts +129 -0
  138. package/dist/transformation/types.d.ts.map +1 -0
  139. package/dist/transformation/types.js +7 -0
  140. package/dist/transformation/types.js.map +1 -0
  141. package/dist/validation/index.d.ts +6 -0
  142. package/dist/validation/index.d.ts.map +1 -0
  143. package/dist/validation/index.js +7 -0
  144. package/dist/validation/index.js.map +1 -0
  145. package/package.json +81 -0
  146. package/test-app/test-react/index.html +19 -0
  147. package/test-app/test-react/package.json +16 -0
  148. package/test-app/test-react/src/Component.jsx +146 -0
  149. package/test-app/test-react/src/Component.module.css +572 -0
  150. package/test-app/test-react/src/Homepage.jsx +53 -0
  151. package/test-app/test-react/src/Homepage.module.css +218 -0
  152. package/test-app/test-react/src/ProductPage.jsx +74 -0
  153. package/test-app/test-react/src/ProductPage.module.css +357 -0
  154. package/test-app/test-react/src/ShoppingCart.jsx +151 -0
  155. package/test-app/test-react/src/ShoppingCart.module.css +739 -0
  156. package/test-app/test-react/src/main.jsx +9 -0
  157. package/test-app/test-react/vite.config.js +6 -0
  158. package/test-app/test-vue/index.html +19 -0
  159. package/test-app/test-vue/package.json +15 -0
  160. package/test-app/test-vue/src/App.vue +16 -0
  161. package/test-app/test-vue/src/Component.vue +723 -0
  162. package/test-app/test-vue/src/Homepage.vue +271 -0
  163. package/test-app/test-vue/src/ProductPage.vue +431 -0
  164. package/test-app/test-vue/src/ShoppingCart.vue +890 -0
  165. package/test-app/test-vue/src/main.js +4 -0
  166. package/test-app/test-vue/vite.config.js +6 -0
@@ -0,0 +1,218 @@
1
+ .homepage {
2
+ position: relative;
3
+ max-width: 1440px;
4
+ margin: 0 auto;
5
+ height: 2092px;
6
+ background-color: rgba(255, 255, 255, 1);
7
+ }
8
+
9
+ .were-farmers-purveyors {
10
+ position: absolute;
11
+ left: 217px;
12
+ top: 279px;
13
+ width: 1020px;
14
+ height: 154px;
15
+ font-family: 'Newsreader', sans-serif;
16
+ font-size: 64px;
17
+ font-weight: 400;
18
+ line-height: 77px;
19
+ letter-spacing: -1.28px;
20
+ text-align: center;
21
+ color: rgba(0, 0, 0, 1);
22
+ }
23
+
24
+ .button {
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ position: absolute;
29
+ left: 607px;
30
+ top: 481px;
31
+ width: 227px;
32
+ height: 64px;
33
+ overflow: hidden;
34
+ background-color: rgba(66, 107, 31, 1);
35
+ border-radius: 8px;
36
+ }
37
+
38
+ .browse-our-shop {
39
+ font-family: 'Inter', sans-serif;
40
+ font-size: 20px;
41
+ font-weight: 600;
42
+ line-height: 26px;
43
+ white-space: nowrap;
44
+ color: rgba(255, 255, 255, 1);
45
+ }
46
+
47
+ .we-believe-in {
48
+ position: absolute;
49
+ left: 309px;
50
+ top: 1550px;
51
+ width: 822px;
52
+ height: 512px;
53
+ font-family: 'Inter', sans-serif;
54
+ font-size: 20px;
55
+ font-weight: 400;
56
+ line-height: 32px;
57
+ text-align: left;
58
+ color: rgba(0, 0, 0, 1);
59
+ }
60
+
61
+ .what-we-believe {
62
+ position: absolute;
63
+ left: 96px;
64
+ top: 1555px;
65
+ width: 181px;
66
+ height: 22px;
67
+ font-family: 'Inter', sans-serif;
68
+ font-size: 14px;
69
+ font-weight: 600;
70
+ line-height: 22px;
71
+ letter-spacing: 0.56px;
72
+ text-align: left;
73
+ white-space: nowrap;
74
+ color: rgba(0, 0, 0, 1);
75
+ }
76
+
77
+ .jonathan-kemper1hhrdiolfpu {
78
+ position: absolute;
79
+ left: 96px;
80
+ top: 701px;
81
+ width: 504px;
82
+ height: 693px;
83
+ object-fit: cover;
84
+ display: block;
85
+ }
86
+
87
+ .central-california-the {
88
+ position: absolute;
89
+ left: 660px;
90
+ top: 1287px;
91
+ width: 736px;
92
+ height: 44px;
93
+ font-family: 'Inter', sans-serif;
94
+ font-size: 14px;
95
+ font-weight: 400;
96
+ line-height: 22px;
97
+ letter-spacing: -0.14px;
98
+ text-align: left;
99
+ color: rgba(0, 0, 0, 1);
100
+ }
101
+
102
+ .header {
103
+ position: absolute;
104
+ left: 0px;
105
+ top: 0px;
106
+ width: 1440px;
107
+ height: 112px;
108
+ overflow: hidden;
109
+ }
110
+
111
+ .world-peas {
112
+ position: absolute;
113
+ left: 96px;
114
+ top: 41px;
115
+ width: 151px;
116
+ height: 32px;
117
+ font-family: 'Newsreader', sans-serif;
118
+ font-size: 32px;
119
+ font-weight: 500;
120
+ line-height: 32px;
121
+ letter-spacing: -0.32px;
122
+ text-align: left;
123
+ white-space: nowrap;
124
+ color: rgba(66, 107, 31, 1);
125
+ }
126
+
127
+ .shop {
128
+ position: absolute;
129
+ left: 744px;
130
+ top: 46px;
131
+ width: 39px;
132
+ height: 21px;
133
+ font-family: 'Inter', sans-serif;
134
+ font-size: 16px;
135
+ font-weight: 400;
136
+ line-height: 21px;
137
+ text-align: center;
138
+ white-space: nowrap;
139
+ color: rgba(0, 0, 0, 1);
140
+ }
141
+
142
+ .newstand {
143
+ position: absolute;
144
+ left: 831px;
145
+ top: 46px;
146
+ width: 77px;
147
+ height: 21px;
148
+ font-family: 'Inter', sans-serif;
149
+ font-size: 16px;
150
+ font-weight: 400;
151
+ line-height: 21px;
152
+ text-align: center;
153
+ white-space: nowrap;
154
+ color: rgba(0, 0, 0, 1);
155
+ }
156
+
157
+ .who-we-are {
158
+ position: absolute;
159
+ left: 956px;
160
+ top: 46px;
161
+ width: 90px;
162
+ height: 21px;
163
+ font-family: 'Inter', sans-serif;
164
+ font-size: 16px;
165
+ font-weight: 400;
166
+ line-height: 21px;
167
+ text-align: center;
168
+ white-space: nowrap;
169
+ color: rgba(0, 0, 0, 1);
170
+ }
171
+
172
+ .my-profile {
173
+ position: absolute;
174
+ left: 1094px;
175
+ top: 46px;
176
+ width: 76px;
177
+ height: 21px;
178
+ font-family: 'Inter', sans-serif;
179
+ font-size: 16px;
180
+ font-weight: 400;
181
+ line-height: 21px;
182
+ text-align: center;
183
+ white-space: nowrap;
184
+ color: rgba(0, 0, 0, 1);
185
+ }
186
+
187
+ .cart-button {
188
+ display: flex;
189
+ align-items: center;
190
+ justify-content: center;
191
+ position: absolute;
192
+ left: 1218px;
193
+ top: 32px;
194
+ width: 126px;
195
+ height: 48px;
196
+ overflow: hidden;
197
+ background-color: rgba(66, 107, 31, 1);
198
+ border-radius: 8px;
199
+ }
200
+
201
+ .basket3 {
202
+ font-family: 'Inter', sans-serif;
203
+ font-size: 16px;
204
+ font-weight: 600;
205
+ line-height: 21px;
206
+ white-space: nowrap;
207
+ color: rgba(255, 255, 255, 1);
208
+ }
209
+
210
+ .stocksy-txp226f62b2ane300medium {
211
+ position: absolute;
212
+ left: 660px;
213
+ top: 791px;
214
+ width: 780px;
215
+ height: 480px;
216
+ object-fit: cover;
217
+ display: block;
218
+ }
@@ -0,0 +1,74 @@
1
+ import React from 'react'
2
+ import styles from './ProductPage.module.css'
3
+ import imged_o_neil_avvdzlhdowa_unsplash_1 from './assets/ed-o-neil-avvdzlhdowa-unsplash-1.png'
4
+ import imgnoonbrew_zicb4_ekmak_unsplash from './assets/noonbrew-zicb4_ekmak-unsplash.png'
5
+
6
+ export function ProductPage(props) {
7
+ return (
8
+ <div className={styles['product-page']}>
9
+ {/* pageHeading */}
10
+ <div className={styles['page-heading']}>
11
+ {/* defaultChip */}
12
+ <div className={styles['default-chip']}>
13
+ {/* default */}
14
+ <span className={styles['default']}>Default</span>
15
+ </div>
16
+ {/* aZChip */}
17
+ <div className={styles['a-zchip']}>
18
+ {/* az */}
19
+ <span className={styles['az']}>A-Z</span>
20
+ </div>
21
+ {/* listChip */}
22
+ <div className={styles['list-chip']}>
23
+ {/* listView */}
24
+ <span className={styles['list-view']}>List view</span>
25
+ </div>
26
+ {/* freshAugust21 */}
27
+ <span className={styles['fresh-august21']}>Fresh — August 21, 2023</span>
28
+ {/* produce */}
29
+ <span className={styles['produce']}>Produce</span>
30
+ </div>
31
+ {/* navigation */}
32
+ <div className={styles['navigation']}>
33
+ {/* worldPeas */}
34
+ <span className={styles['world-peas']}>World Peas</span>
35
+ {/* shop */}
36
+ <span className={styles['shop']}>Shop</span>
37
+ {/* newstand */}
38
+ <span className={styles['newstand']}>Newstand</span>
39
+ {/* whoWeAre */}
40
+ <span className={styles['who-we-are']}>Who we are</span>
41
+ {/* myProfile */}
42
+ <span className={styles['my-profile']}>My profile</span>
43
+ {/* cartButton */}
44
+ <div className={styles['cart-button']}>
45
+ {/* basket3 */}
46
+ <span className={styles['basket3']}>Basket (3)</span>
47
+ </div>
48
+ </div>
49
+ {/* tomato */}
50
+ <div className={styles['tomato']}>
51
+ {/* heirloomTomato */}
52
+ <span className={styles['heirloom-tomato']}>Heirloom tomato</span>
53
+ {/* 599Lb */}
54
+ <span className={styles['lb']}>$5.99 / lb</span>
55
+ {/* grownInSan */}
56
+ <span className={styles['grown-in-san']}>Grown in San Juan Capistrano, CA</span>
57
+ {/* edONeil */}
58
+ <img className={styles['ed-oneil']} src={imged_o_neil_avvdzlhdowa_unsplash_1} alt="edONeil" />
59
+ </div>
60
+ {/* ginger */}
61
+ <div className={styles['ginger']}>
62
+ {/* organicGinger */}
63
+ <span className={styles['organic-ginger']}>Organic ginger</span>
64
+ {/* 1299Lb */}
65
+ <span className={styles['lb-1']}>$12.99 / lb</span>
66
+ {/* grownInHuntington */}
67
+ <span className={styles['grown-in-huntington']}>Grown in Huntington Beach, CA</span>
68
+ {/* noonbrewZicb4Ekmak */}
69
+ <img className={styles['noonbrew-zicb4ekmak']} src={imgnoonbrew_zicb4_ekmak_unsplash} alt="noonbrewZicb4Ekmak" />
70
+ </div>
71
+ </div>
72
+ )
73
+ }
74
+
@@ -0,0 +1,357 @@
1
+ .product-page {
2
+ position: relative;
3
+ max-width: 1440px;
4
+ margin: 0 auto;
5
+ height: 1024px;
6
+ background-color: rgba(255, 255, 255, 1);
7
+ }
8
+
9
+ .page-heading {
10
+ position: absolute;
11
+ left: 0px;
12
+ top: 112px;
13
+ width: 1440px;
14
+ height: 149px;
15
+ overflow: hidden;
16
+ background-color: rgba(255, 255, 255, 1);
17
+ }
18
+
19
+ .default-chip {
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ position: absolute;
24
+ left: 1077px;
25
+ top: 76px;
26
+ width: 88px;
27
+ height: 40px;
28
+ overflow: hidden;
29
+ background-color: rgba(66, 107, 31, 1);
30
+ border-radius: 20px;
31
+ }
32
+
33
+ .default {
34
+ font-family: 'Inter', sans-serif;
35
+ font-size: 16px;
36
+ font-weight: 600;
37
+ line-height: 21px;
38
+ white-space: nowrap;
39
+ color: rgba(255, 255, 255, 1);
40
+ }
41
+
42
+ .a-zchip {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ position: absolute;
47
+ left: 1173px;
48
+ top: 76px;
49
+ width: 62px;
50
+ height: 40px;
51
+ overflow: hidden;
52
+ background-color: rgba(255, 255, 255, 1);
53
+ border-radius: 20px;
54
+ }
55
+
56
+ .az {
57
+ font-family: 'Inter', sans-serif;
58
+ font-size: 16px;
59
+ font-weight: 600;
60
+ line-height: 21px;
61
+ white-space: nowrap;
62
+ color: rgba(0, 0, 0, 1);
63
+ }
64
+
65
+ .list-chip {
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ position: absolute;
70
+ left: 1243px;
71
+ top: 76px;
72
+ width: 101px;
73
+ height: 40px;
74
+ overflow: hidden;
75
+ background-color: rgba(255, 255, 255, 1);
76
+ border-radius: 20px;
77
+ }
78
+
79
+ .list-view {
80
+ font-family: 'Inter', sans-serif;
81
+ font-size: 16px;
82
+ font-weight: 600;
83
+ line-height: 21px;
84
+ white-space: nowrap;
85
+ color: rgba(0, 0, 0, 1);
86
+ }
87
+
88
+ .fresh-august21 {
89
+ position: absolute;
90
+ left: 347px;
91
+ top: 90px;
92
+ width: 248px;
93
+ height: 26px;
94
+ font-family: 'Inter', sans-serif;
95
+ font-size: 20px;
96
+ font-weight: 400;
97
+ line-height: 26px;
98
+ text-align: left;
99
+ white-space: nowrap;
100
+ color: rgba(0, 0, 0, 1);
101
+ }
102
+
103
+ .produce {
104
+ position: absolute;
105
+ left: 96px;
106
+ top: 56px;
107
+ width: 227px;
108
+ height: 77px;
109
+ font-family: 'Newsreader', sans-serif;
110
+ font-size: 64px;
111
+ font-weight: 400;
112
+ line-height: 77px;
113
+ letter-spacing: -1.28px;
114
+ text-align: left;
115
+ white-space: nowrap;
116
+ color: rgba(0, 0, 0, 1);
117
+ }
118
+
119
+ .navigation {
120
+ position: absolute;
121
+ left: 0px;
122
+ top: 0px;
123
+ width: 1440px;
124
+ height: 112px;
125
+ overflow: hidden;
126
+ }
127
+
128
+ .world-peas {
129
+ position: absolute;
130
+ left: 96px;
131
+ top: 41px;
132
+ width: 151px;
133
+ height: 32px;
134
+ font-family: 'Newsreader', sans-serif;
135
+ font-size: 32px;
136
+ font-weight: 500;
137
+ line-height: 32px;
138
+ letter-spacing: -0.32px;
139
+ text-align: left;
140
+ white-space: nowrap;
141
+ color: rgba(66, 107, 31, 1);
142
+ }
143
+
144
+ .shop {
145
+ position: absolute;
146
+ left: 744px;
147
+ top: 46px;
148
+ width: 39px;
149
+ height: 21px;
150
+ font-family: 'Inter', sans-serif;
151
+ font-size: 16px;
152
+ font-weight: 400;
153
+ line-height: 21px;
154
+ text-align: center;
155
+ white-space: nowrap;
156
+ color: rgba(0, 0, 0, 1);
157
+ }
158
+
159
+ .newstand {
160
+ position: absolute;
161
+ left: 831px;
162
+ top: 46px;
163
+ width: 77px;
164
+ height: 21px;
165
+ font-family: 'Inter', sans-serif;
166
+ font-size: 16px;
167
+ font-weight: 400;
168
+ line-height: 21px;
169
+ text-align: center;
170
+ white-space: nowrap;
171
+ color: rgba(0, 0, 0, 1);
172
+ }
173
+
174
+ .who-we-are {
175
+ position: absolute;
176
+ left: 956px;
177
+ top: 46px;
178
+ width: 90px;
179
+ height: 21px;
180
+ font-family: 'Inter', sans-serif;
181
+ font-size: 16px;
182
+ font-weight: 400;
183
+ line-height: 21px;
184
+ text-align: center;
185
+ white-space: nowrap;
186
+ color: rgba(0, 0, 0, 1);
187
+ }
188
+
189
+ .my-profile {
190
+ position: absolute;
191
+ left: 1094px;
192
+ top: 46px;
193
+ width: 76px;
194
+ height: 21px;
195
+ font-family: 'Inter', sans-serif;
196
+ font-size: 16px;
197
+ font-weight: 400;
198
+ line-height: 21px;
199
+ text-align: center;
200
+ white-space: nowrap;
201
+ color: rgba(0, 0, 0, 1);
202
+ }
203
+
204
+ .cart-button {
205
+ display: flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ position: absolute;
209
+ left: 1218px;
210
+ top: 32px;
211
+ width: 126px;
212
+ height: 48px;
213
+ overflow: hidden;
214
+ background-color: rgba(66, 107, 31, 1);
215
+ border-radius: 8px;
216
+ }
217
+
218
+ .basket3 {
219
+ font-family: 'Inter', sans-serif;
220
+ font-size: 16px;
221
+ font-weight: 600;
222
+ line-height: 21px;
223
+ white-space: nowrap;
224
+ color: rgba(255, 255, 255, 1);
225
+ }
226
+
227
+ .tomato {
228
+ position: absolute;
229
+ left: 96px;
230
+ top: 301px;
231
+ width: 395px;
232
+ height: 444px;
233
+ overflow: hidden;
234
+ background-color: rgba(250, 250, 245, 1);
235
+ border-radius: 24px;
236
+ }
237
+
238
+ .heirloom-tomato {
239
+ position: absolute;
240
+ left: 24px;
241
+ top: 320px;
242
+ width: 162px;
243
+ height: 26px;
244
+ font-family: 'Inter', sans-serif;
245
+ font-size: 20px;
246
+ font-weight: 600;
247
+ line-height: 26px;
248
+ text-align: left;
249
+ white-space: nowrap;
250
+ color: rgba(0, 0, 0, 1);
251
+ }
252
+
253
+ .lb {
254
+ position: absolute;
255
+ left: 24px;
256
+ top: 350px;
257
+ width: 92px;
258
+ height: 26px;
259
+ font-family: 'Inter', sans-serif;
260
+ font-size: 20px;
261
+ font-weight: 600;
262
+ line-height: 26px;
263
+ text-align: left;
264
+ white-space: nowrap;
265
+ color: rgba(66, 107, 31, 1);
266
+ }
267
+
268
+ .grown-in-san {
269
+ position: absolute;
270
+ left: 24px;
271
+ top: 392px;
272
+ width: 259px;
273
+ height: 24px;
274
+ font-family: 'Inter', sans-serif;
275
+ font-size: 16px;
276
+ font-weight: 400;
277
+ line-height: 24px;
278
+ text-align: left;
279
+ white-space: nowrap;
280
+ color: rgba(109, 109, 109, 1);
281
+ }
282
+
283
+ .ed-oneil {
284
+ position: absolute;
285
+ left: 0px;
286
+ top: 0px;
287
+ width: 395px;
288
+ height: 296px;
289
+ object-fit: cover;
290
+ display: block;
291
+ }
292
+
293
+ .ginger {
294
+ position: absolute;
295
+ left: 523px;
296
+ top: 301px;
297
+ width: 395px;
298
+ height: 444px;
299
+ overflow: hidden;
300
+ background-color: rgba(250, 250, 245, 1);
301
+ border-radius: 24px;
302
+ }
303
+
304
+ .organic-ginger {
305
+ position: absolute;
306
+ left: 24px;
307
+ top: 320px;
308
+ width: 144px;
309
+ height: 26px;
310
+ font-family: 'Inter', sans-serif;
311
+ font-size: 20px;
312
+ font-weight: 600;
313
+ line-height: 26px;
314
+ text-align: left;
315
+ white-space: nowrap;
316
+ color: rgba(0, 0, 0, 1);
317
+ }
318
+
319
+ .lb-1 {
320
+ position: absolute;
321
+ left: 24px;
322
+ top: 350px;
323
+ width: 102px;
324
+ height: 26px;
325
+ font-family: 'Inter', sans-serif;
326
+ font-size: 20px;
327
+ font-weight: 600;
328
+ line-height: 26px;
329
+ text-align: left;
330
+ white-space: nowrap;
331
+ color: rgba(66, 107, 31, 1);
332
+ }
333
+
334
+ .grown-in-huntington {
335
+ position: absolute;
336
+ left: 24px;
337
+ top: 392px;
338
+ width: 239px;
339
+ height: 24px;
340
+ font-family: 'Inter', sans-serif;
341
+ font-size: 16px;
342
+ font-weight: 400;
343
+ line-height: 24px;
344
+ text-align: left;
345
+ white-space: nowrap;
346
+ color: rgba(109, 109, 109, 1);
347
+ }
348
+
349
+ .noonbrew-zicb4ekmak {
350
+ position: absolute;
351
+ left: 0px;
352
+ top: 0px;
353
+ width: 395px;
354
+ height: 296px;
355
+ object-fit: cover;
356
+ display: block;
357
+ }