flutterflow-mcp 0.1.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.
- package/README.md +124 -0
- package/build/api/flutterflow.d.ts +11 -0
- package/build/api/flutterflow.js +61 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +54 -0
- package/build/prompts/dev-workflow.d.ts +2 -0
- package/build/prompts/dev-workflow.js +68 -0
- package/build/prompts/generate-page.d.ts +2 -0
- package/build/prompts/generate-page.js +36 -0
- package/build/prompts/inspect-project.d.ts +2 -0
- package/build/prompts/inspect-project.js +30 -0
- package/build/prompts/modify-component.d.ts +2 -0
- package/build/prompts/modify-component.js +39 -0
- package/build/resources/docs.d.ts +2 -0
- package/build/resources/docs.js +76 -0
- package/build/resources/projects.d.ts +3 -0
- package/build/resources/projects.js +60 -0
- package/build/tools/find-component-usages.d.ts +7 -0
- package/build/tools/find-component-usages.js +225 -0
- package/build/tools/find-page-navigations.d.ts +7 -0
- package/build/tools/find-page-navigations.js +228 -0
- package/build/tools/get-component-summary.d.ts +22 -0
- package/build/tools/get-component-summary.js +193 -0
- package/build/tools/get-page-by-name.d.ts +3 -0
- package/build/tools/get-page-by-name.js +56 -0
- package/build/tools/get-page-summary.d.ts +22 -0
- package/build/tools/get-page-summary.js +220 -0
- package/build/tools/get-yaml-docs.d.ts +6 -0
- package/build/tools/get-yaml-docs.js +217 -0
- package/build/tools/get-yaml.d.ts +3 -0
- package/build/tools/get-yaml.js +47 -0
- package/build/tools/list-files.d.ts +3 -0
- package/build/tools/list-files.js +30 -0
- package/build/tools/list-pages.d.ts +25 -0
- package/build/tools/list-pages.js +101 -0
- package/build/tools/list-projects.d.ts +3 -0
- package/build/tools/list-projects.js +19 -0
- package/build/tools/sync-project.d.ts +3 -0
- package/build/tools/sync-project.js +144 -0
- package/build/tools/update-yaml.d.ts +3 -0
- package/build/tools/update-yaml.js +24 -0
- package/build/tools/validate-yaml.d.ts +3 -0
- package/build/tools/validate-yaml.js +22 -0
- package/build/utils/cache.d.ts +48 -0
- package/build/utils/cache.js +162 -0
- package/build/utils/decode-yaml.d.ts +7 -0
- package/build/utils/decode-yaml.js +31 -0
- package/build/utils/page-summary/action-summarizer.d.ts +9 -0
- package/build/utils/page-summary/action-summarizer.js +291 -0
- package/build/utils/page-summary/formatter.d.ts +13 -0
- package/build/utils/page-summary/formatter.js +121 -0
- package/build/utils/page-summary/node-extractor.d.ts +17 -0
- package/build/utils/page-summary/node-extractor.js +207 -0
- package/build/utils/page-summary/tree-walker.d.ts +6 -0
- package/build/utils/page-summary/tree-walker.js +55 -0
- package/build/utils/page-summary/types.d.ts +56 -0
- package/build/utils/page-summary/types.js +4 -0
- package/build/utils/parse-folders.d.ts +9 -0
- package/build/utils/parse-folders.js +29 -0
- package/docs/ff-yaml/00-overview.md +137 -0
- package/docs/ff-yaml/01-project-files.md +513 -0
- package/docs/ff-yaml/02-pages.md +572 -0
- package/docs/ff-yaml/03-components.md +413 -0
- package/docs/ff-yaml/04-widgets/README.md +122 -0
- package/docs/ff-yaml/04-widgets/button.md +444 -0
- package/docs/ff-yaml/04-widgets/container.md +358 -0
- package/docs/ff-yaml/04-widgets/dropdown.md +579 -0
- package/docs/ff-yaml/04-widgets/form.md +256 -0
- package/docs/ff-yaml/04-widgets/image.md +276 -0
- package/docs/ff-yaml/04-widgets/layout.md +355 -0
- package/docs/ff-yaml/04-widgets/misc.md +553 -0
- package/docs/ff-yaml/04-widgets/text-field.md +326 -0
- package/docs/ff-yaml/04-widgets/text.md +302 -0
- package/docs/ff-yaml/05-actions.md +843 -0
- package/docs/ff-yaml/06-variables.md +834 -0
- package/docs/ff-yaml/07-data.md +591 -0
- package/docs/ff-yaml/08-custom-code.md +715 -0
- package/docs/ff-yaml/09-theming.md +592 -0
- package/docs/ff-yaml/10-editing-guide.md +454 -0
- package/docs/ff-yaml/README.md +105 -0
- package/package.json +55 -0
- package/skills/ff-widget-patterns.md +141 -0
- package/skills/ff-yaml-dev.md +58 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
# Container
|
|
2
|
+
|
|
3
|
+
## Minimal Example
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
key: Container_xxxxxxxx
|
|
7
|
+
type: Container
|
|
8
|
+
props:
|
|
9
|
+
container:
|
|
10
|
+
dimensions: {}
|
|
11
|
+
boxDecoration: {}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Full Schema
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
key: Container_xxxxxxxx
|
|
18
|
+
type: Container
|
|
19
|
+
props:
|
|
20
|
+
container:
|
|
21
|
+
dimensions: # Container size
|
|
22
|
+
width:
|
|
23
|
+
pixelsValue:
|
|
24
|
+
inputValue: 150 # Fixed pixel width
|
|
25
|
+
# OR percentage:
|
|
26
|
+
# percentOfScreenSizeValue:
|
|
27
|
+
# inputValue: 100 # Percentage of screen width
|
|
28
|
+
height:
|
|
29
|
+
pixelsValue:
|
|
30
|
+
inputValue: 120 # Fixed pixel height
|
|
31
|
+
maxDimensions: # Maximum size constraints
|
|
32
|
+
width:
|
|
33
|
+
pixelsValue:
|
|
34
|
+
inputValue: 164
|
|
35
|
+
mostRecentInputValue: 164
|
|
36
|
+
height:
|
|
37
|
+
pixelsValue:
|
|
38
|
+
inputValue: 40
|
|
39
|
+
mostRecentInputValue: 40
|
|
40
|
+
minDimensions: # Minimum size constraints
|
|
41
|
+
width:
|
|
42
|
+
pixelsValue:
|
|
43
|
+
inputValue: 164
|
|
44
|
+
height:
|
|
45
|
+
pixelsValue:
|
|
46
|
+
inputValue: 90
|
|
47
|
+
boxDecoration: # Visual decoration
|
|
48
|
+
colorValue: # Background color
|
|
49
|
+
inputValue:
|
|
50
|
+
themeColor: PRIMARY_BACKGROUND
|
|
51
|
+
# OR value: "4287097512" # ARGB integer
|
|
52
|
+
mostRecentInputValue:
|
|
53
|
+
themeColor: PRIMARY_BACKGROUND
|
|
54
|
+
borderRadius: # Corner radius
|
|
55
|
+
type: FF_BORDER_RADIUS_ALL # Uniform radius
|
|
56
|
+
allValue:
|
|
57
|
+
inputValue: 12
|
|
58
|
+
# OR type: FF_BORDER_RADIUS_ONLY # Per-corner radius
|
|
59
|
+
# topLeftValue:
|
|
60
|
+
# inputValue: 20
|
|
61
|
+
# topRightValue:
|
|
62
|
+
# inputValue: 20
|
|
63
|
+
# bottomLeftValue:
|
|
64
|
+
# inputValue: 0
|
|
65
|
+
# bottomRightValue:
|
|
66
|
+
# inputValue: 0
|
|
67
|
+
borderColorValue: # Border stroke color
|
|
68
|
+
inputValue:
|
|
69
|
+
value: "4279506971"
|
|
70
|
+
# OR themeColor: PRIMARY_BACKGROUND
|
|
71
|
+
borderWidthValue: # Border stroke width
|
|
72
|
+
inputValue: 2
|
|
73
|
+
mostRecentInputValue: 2
|
|
74
|
+
# OR variable binding for dynamic width
|
|
75
|
+
boxShadow: {} # Shadow configuration
|
|
76
|
+
image: # Background image
|
|
77
|
+
type: FF_IMAGE_TYPE_NETWORK # FF_IMAGE_TYPE_NETWORK or FF_IMAGE_TYPE_ASSET
|
|
78
|
+
elevationValue: # Material elevation
|
|
79
|
+
inputValue: 0
|
|
80
|
+
mostRecentInputValue: 0
|
|
81
|
+
childAlignment: # Alignment of child within container
|
|
82
|
+
xValue:
|
|
83
|
+
inputValue: 0 # -1 (left) to 1 (right)
|
|
84
|
+
yValue:
|
|
85
|
+
inputValue: -1 # -1 (top) to 1 (bottom)
|
|
86
|
+
animationDurationValue: # Animated container duration (ms)
|
|
87
|
+
inputValue: 100
|
|
88
|
+
mostRecentInputValue: 100
|
|
89
|
+
padding: # Inner padding
|
|
90
|
+
type: FF_PADDING_ONLY
|
|
91
|
+
topValue:
|
|
92
|
+
inputValue: 16
|
|
93
|
+
mostRecentInputValue: 16
|
|
94
|
+
alignment: # Position within parent
|
|
95
|
+
xValue:
|
|
96
|
+
inputValue: 0 # -1 to 1
|
|
97
|
+
yValue:
|
|
98
|
+
inputValue: -1 # -1 to 1
|
|
99
|
+
expanded: # Expand behavior
|
|
100
|
+
expandedType: FLEXIBLE # EXPANDED | FLEXIBLE | UNEXPANDED
|
|
101
|
+
responsiveVisibility: # Breakpoint hiding
|
|
102
|
+
tabletHidden: false
|
|
103
|
+
opacity:
|
|
104
|
+
opacityValue:
|
|
105
|
+
inputValue: 1
|
|
106
|
+
mostRecentInputValue: 1
|
|
107
|
+
animatedOpacity: {}
|
|
108
|
+
parameterValues: {}
|
|
109
|
+
valueKey:
|
|
110
|
+
inputValue: {}
|
|
111
|
+
name: OptionalName # Human-readable name
|
|
112
|
+
isDummyRoot: true # Component root marker (see below)
|
|
113
|
+
aiGeneratedNodeInfo: # AI generation tracking
|
|
114
|
+
isAiGenerated: true
|
|
115
|
+
requestPath: ai_component_gen_requests/xxxxxxxxxx
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Field Reference
|
|
119
|
+
|
|
120
|
+
| Field | Type | Required | Notes |
|
|
121
|
+
|-------|------|----------|-------|
|
|
122
|
+
| `dimensions.width.pixelsValue.inputValue` | number | No | Width in px (`Infinity` = fill) |
|
|
123
|
+
| `dimensions.width.percentOfScreenSizeValue.inputValue` | number | No | Width as % of screen |
|
|
124
|
+
| `dimensions.height.pixelsValue.inputValue` | number | No | Height in px |
|
|
125
|
+
| `maxDimensions` | object | No | Same shape as dimensions |
|
|
126
|
+
| `minDimensions` | object | No | Same shape as dimensions |
|
|
127
|
+
| `boxDecoration.colorValue.inputValue` | object | No | Background color |
|
|
128
|
+
| `boxDecoration.borderRadius` | object | No | Corner radius specification |
|
|
129
|
+
| `boxDecoration.borderColorValue.inputValue` | object | No | Border color |
|
|
130
|
+
| `boxDecoration.borderWidthValue` | number/var | No | Border width (literal or variable) |
|
|
131
|
+
| `boxDecoration.boxShadow` | object | No | Shadow configuration |
|
|
132
|
+
| `boxDecoration.image` | object | No | Background image |
|
|
133
|
+
| `boxDecoration.elevationValue.inputValue` | number | No | Material elevation |
|
|
134
|
+
| `childAlignment` | object | No | Child position (x: -1..1, y: -1..1) |
|
|
135
|
+
| `animationDurationValue.inputValue` | number | No | Animation duration in ms |
|
|
136
|
+
| `isDummyRoot` | bool | No | `true` on component root containers |
|
|
137
|
+
|
|
138
|
+
## isDummyRoot Pattern
|
|
139
|
+
|
|
140
|
+
Component root containers are marked with `isDummyRoot: true`. This is how FlutterFlow identifies the top-level container of a reusable component:
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
key: Container_od80u8ml
|
|
144
|
+
type: Container
|
|
145
|
+
props:
|
|
146
|
+
container:
|
|
147
|
+
boxDecoration:
|
|
148
|
+
colorValue:
|
|
149
|
+
inputValue:
|
|
150
|
+
value: "0"
|
|
151
|
+
name: BottomSheetAddFood
|
|
152
|
+
isDummyRoot: true
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
The root container typically has a transparent background (`value: "0"`) and a descriptive `name`.
|
|
156
|
+
|
|
157
|
+
## Dimension Patterns
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
# Fixed pixel size
|
|
161
|
+
width:
|
|
162
|
+
pixelsValue:
|
|
163
|
+
inputValue: 300
|
|
164
|
+
|
|
165
|
+
# Fill parent (stretch)
|
|
166
|
+
width:
|
|
167
|
+
pixelsValue:
|
|
168
|
+
inputValue: Infinity
|
|
169
|
+
|
|
170
|
+
# Percentage of screen
|
|
171
|
+
width:
|
|
172
|
+
percentOfScreenSizeValue:
|
|
173
|
+
inputValue: 100
|
|
174
|
+
mostRecentInputValue: 100
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Real Examples
|
|
178
|
+
|
|
179
|
+
**Container with rounded corners and theme color:**
|
|
180
|
+
```yaml
|
|
181
|
+
key: Container_vzq4hmq5
|
|
182
|
+
type: Container
|
|
183
|
+
props:
|
|
184
|
+
container:
|
|
185
|
+
dimensions: {}
|
|
186
|
+
boxDecoration:
|
|
187
|
+
borderRadius:
|
|
188
|
+
type: FF_BORDER_RADIUS_ALL
|
|
189
|
+
allValue:
|
|
190
|
+
inputValue: 8
|
|
191
|
+
colorValue:
|
|
192
|
+
inputValue:
|
|
193
|
+
themeColor: TERTIARY
|
|
194
|
+
padding:
|
|
195
|
+
bottomValue:
|
|
196
|
+
inputValue: 8
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Container with per-corner radius and border:**
|
|
200
|
+
```yaml
|
|
201
|
+
key: Container_z9kqe25k
|
|
202
|
+
type: Container
|
|
203
|
+
props:
|
|
204
|
+
container:
|
|
205
|
+
dimensions:
|
|
206
|
+
width:
|
|
207
|
+
percentOfScreenSizeValue:
|
|
208
|
+
inputValue: 100
|
|
209
|
+
mostRecentInputValue: 100
|
|
210
|
+
boxDecoration:
|
|
211
|
+
borderRadius:
|
|
212
|
+
type: FF_BORDER_RADIUS_ONLY
|
|
213
|
+
topLeftValue:
|
|
214
|
+
inputValue: 20
|
|
215
|
+
mostRecentInputValue: 20
|
|
216
|
+
topRightValue:
|
|
217
|
+
inputValue: 20
|
|
218
|
+
mostRecentInputValue: 20
|
|
219
|
+
bottomLeftValue:
|
|
220
|
+
inputValue: 0
|
|
221
|
+
mostRecentInputValue: 0
|
|
222
|
+
bottomRightValue:
|
|
223
|
+
inputValue: 0
|
|
224
|
+
mostRecentInputValue: 0
|
|
225
|
+
boxShadow: {}
|
|
226
|
+
image:
|
|
227
|
+
type: FF_IMAGE_TYPE_NETWORK
|
|
228
|
+
colorValue:
|
|
229
|
+
inputValue:
|
|
230
|
+
themeColor: PRIMARY_BACKGROUND
|
|
231
|
+
mostRecentInputValue:
|
|
232
|
+
themeColor: PRIMARY_BACKGROUND
|
|
233
|
+
borderColorValue:
|
|
234
|
+
inputValue:
|
|
235
|
+
themeColor: PRIMARY_BACKGROUND
|
|
236
|
+
mostRecentInputValue:
|
|
237
|
+
themeColor: PRIMARY_BACKGROUND
|
|
238
|
+
borderWidthValue:
|
|
239
|
+
inputValue: 0
|
|
240
|
+
mostRecentInputValue: 0
|
|
241
|
+
childAlignment:
|
|
242
|
+
xValue:
|
|
243
|
+
inputValue: 0
|
|
244
|
+
yValue:
|
|
245
|
+
inputValue: -1
|
|
246
|
+
maxDimensions: {}
|
|
247
|
+
minDimensions: {}
|
|
248
|
+
elevationValue:
|
|
249
|
+
inputValue: 0
|
|
250
|
+
mostRecentInputValue: 0
|
|
251
|
+
animationDurationValue:
|
|
252
|
+
inputValue: 100
|
|
253
|
+
mostRecentInputValue: 100
|
|
254
|
+
padding:
|
|
255
|
+
type: FF_PADDING_ONLY
|
|
256
|
+
topValue:
|
|
257
|
+
inputValue: 16
|
|
258
|
+
mostRecentInputValue: 16
|
|
259
|
+
alignment:
|
|
260
|
+
xValue:
|
|
261
|
+
inputValue: 0
|
|
262
|
+
yValue:
|
|
263
|
+
inputValue: -1
|
|
264
|
+
expanded:
|
|
265
|
+
expandedType: UNEXPANDED
|
|
266
|
+
responsiveVisibility:
|
|
267
|
+
tabletHidden: false
|
|
268
|
+
opacity:
|
|
269
|
+
opacityValue:
|
|
270
|
+
inputValue: 1
|
|
271
|
+
mostRecentInputValue: 1
|
|
272
|
+
animatedOpacity: {}
|
|
273
|
+
parameterValues: {}
|
|
274
|
+
valueKey:
|
|
275
|
+
inputValue: {}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**Container with conditional color via function call:**
|
|
279
|
+
```yaml
|
|
280
|
+
key: Container_asssrq5w
|
|
281
|
+
type: Container
|
|
282
|
+
props:
|
|
283
|
+
container:
|
|
284
|
+
dimensions:
|
|
285
|
+
width:
|
|
286
|
+
pixelsValue:
|
|
287
|
+
inputValue: 120
|
|
288
|
+
boxDecoration:
|
|
289
|
+
borderRadius:
|
|
290
|
+
type: FF_BORDER_RADIUS_ALL
|
|
291
|
+
allValue:
|
|
292
|
+
inputValue: 12
|
|
293
|
+
colorValue:
|
|
294
|
+
variable:
|
|
295
|
+
source: FUNCTION_CALL
|
|
296
|
+
functionCall:
|
|
297
|
+
conditionalValue:
|
|
298
|
+
ifConditionalValues:
|
|
299
|
+
- condition:
|
|
300
|
+
source: FUNCTION_CALL
|
|
301
|
+
functionCall:
|
|
302
|
+
values:
|
|
303
|
+
- variable:
|
|
304
|
+
source: LOCAL_STATE
|
|
305
|
+
baseVariable:
|
|
306
|
+
localState:
|
|
307
|
+
fieldIdentifier:
|
|
308
|
+
name: subIndexSelected
|
|
309
|
+
key: gdgw8
|
|
310
|
+
stateVariableType: WIDGET_CLASS_STATE
|
|
311
|
+
nodeKeyRef:
|
|
312
|
+
key: Scaffold_tydsj8ql
|
|
313
|
+
- inputValue:
|
|
314
|
+
serializedValue: "2"
|
|
315
|
+
condition:
|
|
316
|
+
relation: EQUAL_TO
|
|
317
|
+
value:
|
|
318
|
+
inputValue:
|
|
319
|
+
color:
|
|
320
|
+
value: "4287097512"
|
|
321
|
+
elseValue:
|
|
322
|
+
inputValue:
|
|
323
|
+
color:
|
|
324
|
+
value: "4287996332"
|
|
325
|
+
returnParameter:
|
|
326
|
+
dataType:
|
|
327
|
+
scalarType: Color
|
|
328
|
+
minDimensions:
|
|
329
|
+
height:
|
|
330
|
+
pixelsValue:
|
|
331
|
+
inputValue: 90
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Full-screen container for page background:**
|
|
335
|
+
```yaml
|
|
336
|
+
key: Container_2u9bf7vs
|
|
337
|
+
type: Container
|
|
338
|
+
props:
|
|
339
|
+
container:
|
|
340
|
+
dimensions:
|
|
341
|
+
width:
|
|
342
|
+
pixelsValue:
|
|
343
|
+
inputValue: Infinity
|
|
344
|
+
height:
|
|
345
|
+
pixelsValue:
|
|
346
|
+
inputValue: Infinity
|
|
347
|
+
boxDecoration:
|
|
348
|
+
boxShadow: {}
|
|
349
|
+
image: {}
|
|
350
|
+
maxDimensions: {}
|
|
351
|
+
minDimensions: {}
|
|
352
|
+
responsiveVisibility: {}
|
|
353
|
+
opacity:
|
|
354
|
+
opacityValue:
|
|
355
|
+
inputValue: 1
|
|
356
|
+
animatedOpacity: {}
|
|
357
|
+
valueKey: {}
|
|
358
|
+
```
|