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.
Files changed (83) hide show
  1. package/README.md +124 -0
  2. package/build/api/flutterflow.d.ts +11 -0
  3. package/build/api/flutterflow.js +61 -0
  4. package/build/index.d.ts +2 -0
  5. package/build/index.js +54 -0
  6. package/build/prompts/dev-workflow.d.ts +2 -0
  7. package/build/prompts/dev-workflow.js +68 -0
  8. package/build/prompts/generate-page.d.ts +2 -0
  9. package/build/prompts/generate-page.js +36 -0
  10. package/build/prompts/inspect-project.d.ts +2 -0
  11. package/build/prompts/inspect-project.js +30 -0
  12. package/build/prompts/modify-component.d.ts +2 -0
  13. package/build/prompts/modify-component.js +39 -0
  14. package/build/resources/docs.d.ts +2 -0
  15. package/build/resources/docs.js +76 -0
  16. package/build/resources/projects.d.ts +3 -0
  17. package/build/resources/projects.js +60 -0
  18. package/build/tools/find-component-usages.d.ts +7 -0
  19. package/build/tools/find-component-usages.js +225 -0
  20. package/build/tools/find-page-navigations.d.ts +7 -0
  21. package/build/tools/find-page-navigations.js +228 -0
  22. package/build/tools/get-component-summary.d.ts +22 -0
  23. package/build/tools/get-component-summary.js +193 -0
  24. package/build/tools/get-page-by-name.d.ts +3 -0
  25. package/build/tools/get-page-by-name.js +56 -0
  26. package/build/tools/get-page-summary.d.ts +22 -0
  27. package/build/tools/get-page-summary.js +220 -0
  28. package/build/tools/get-yaml-docs.d.ts +6 -0
  29. package/build/tools/get-yaml-docs.js +217 -0
  30. package/build/tools/get-yaml.d.ts +3 -0
  31. package/build/tools/get-yaml.js +47 -0
  32. package/build/tools/list-files.d.ts +3 -0
  33. package/build/tools/list-files.js +30 -0
  34. package/build/tools/list-pages.d.ts +25 -0
  35. package/build/tools/list-pages.js +101 -0
  36. package/build/tools/list-projects.d.ts +3 -0
  37. package/build/tools/list-projects.js +19 -0
  38. package/build/tools/sync-project.d.ts +3 -0
  39. package/build/tools/sync-project.js +144 -0
  40. package/build/tools/update-yaml.d.ts +3 -0
  41. package/build/tools/update-yaml.js +24 -0
  42. package/build/tools/validate-yaml.d.ts +3 -0
  43. package/build/tools/validate-yaml.js +22 -0
  44. package/build/utils/cache.d.ts +48 -0
  45. package/build/utils/cache.js +162 -0
  46. package/build/utils/decode-yaml.d.ts +7 -0
  47. package/build/utils/decode-yaml.js +31 -0
  48. package/build/utils/page-summary/action-summarizer.d.ts +9 -0
  49. package/build/utils/page-summary/action-summarizer.js +291 -0
  50. package/build/utils/page-summary/formatter.d.ts +13 -0
  51. package/build/utils/page-summary/formatter.js +121 -0
  52. package/build/utils/page-summary/node-extractor.d.ts +17 -0
  53. package/build/utils/page-summary/node-extractor.js +207 -0
  54. package/build/utils/page-summary/tree-walker.d.ts +6 -0
  55. package/build/utils/page-summary/tree-walker.js +55 -0
  56. package/build/utils/page-summary/types.d.ts +56 -0
  57. package/build/utils/page-summary/types.js +4 -0
  58. package/build/utils/parse-folders.d.ts +9 -0
  59. package/build/utils/parse-folders.js +29 -0
  60. package/docs/ff-yaml/00-overview.md +137 -0
  61. package/docs/ff-yaml/01-project-files.md +513 -0
  62. package/docs/ff-yaml/02-pages.md +572 -0
  63. package/docs/ff-yaml/03-components.md +413 -0
  64. package/docs/ff-yaml/04-widgets/README.md +122 -0
  65. package/docs/ff-yaml/04-widgets/button.md +444 -0
  66. package/docs/ff-yaml/04-widgets/container.md +358 -0
  67. package/docs/ff-yaml/04-widgets/dropdown.md +579 -0
  68. package/docs/ff-yaml/04-widgets/form.md +256 -0
  69. package/docs/ff-yaml/04-widgets/image.md +276 -0
  70. package/docs/ff-yaml/04-widgets/layout.md +355 -0
  71. package/docs/ff-yaml/04-widgets/misc.md +553 -0
  72. package/docs/ff-yaml/04-widgets/text-field.md +326 -0
  73. package/docs/ff-yaml/04-widgets/text.md +302 -0
  74. package/docs/ff-yaml/05-actions.md +843 -0
  75. package/docs/ff-yaml/06-variables.md +834 -0
  76. package/docs/ff-yaml/07-data.md +591 -0
  77. package/docs/ff-yaml/08-custom-code.md +715 -0
  78. package/docs/ff-yaml/09-theming.md +592 -0
  79. package/docs/ff-yaml/10-editing-guide.md +454 -0
  80. package/docs/ff-yaml/README.md +105 -0
  81. package/package.json +55 -0
  82. package/skills/ff-widget-patterns.md +141 -0
  83. package/skills/ff-yaml-dev.md +58 -0
@@ -0,0 +1,355 @@
1
+ # Layout Widgets: Column, Row, Stack, Wrap
2
+
3
+ ## Column
4
+
5
+ ### Minimal Example
6
+
7
+ ```yaml
8
+ key: Column_xxxxxxxx
9
+ type: Column
10
+ props:
11
+ column:
12
+ listSpacing: {}
13
+ padding: {}
14
+ ```
15
+
16
+ ### Full Schema
17
+
18
+ ```yaml
19
+ key: Column_xxxxxxxx
20
+ type: Column
21
+ props:
22
+ column:
23
+ mainAxisAlignment: main_axis_space_between # Main axis distribution (see enum)
24
+ crossAxisAlignment: cross_axis_center # Cross axis alignment (see enum)
25
+ scrollable: true # Enable vertical scrolling
26
+ primary: true # Whether this is primary scroll view
27
+ listSpacing: # Spacing between children
28
+ applyStartEndSpace: true # Add spacing before first / after last child
29
+ spacingValue:
30
+ inputValue: 32 # Gap in px between children
31
+ startSpacingValue: # Explicit start spacing (alternative to applyStartEndSpace)
32
+ inputValue: 20
33
+ endSpacingValue: # Explicit end spacing
34
+ inputValue: 60
35
+ minSizeValue: # Whether column shrinks to min size
36
+ inputValue: false # false = take full available height
37
+ mostRecentInputValue: false
38
+ padding: # Inner padding
39
+ leftValue:
40
+ inputValue: 32
41
+ topValue:
42
+ inputValue: 32
43
+ rightValue:
44
+ inputValue: 32
45
+ bottomValue:
46
+ inputValue: 32
47
+ responsiveVisibility: {}
48
+ opacity:
49
+ opacityValue:
50
+ inputValue: 1
51
+ mostRecentInputValue: 1
52
+ animatedOpacity: {}
53
+ parameterValues: {}
54
+ valueKey: {}
55
+ ```
56
+
57
+ ### Field Reference
58
+
59
+ | Field | Type | Required | Notes |
60
+ |-------|------|----------|-------|
61
+ | `mainAxisAlignment` | enum | No | Vertical distribution of children |
62
+ | `crossAxisAlignment` | enum | No | Horizontal alignment of children |
63
+ | `scrollable` | bool | No | Enable vertical scrolling |
64
+ | `primary` | bool | No | Primary scroll controller |
65
+ | `listSpacing.spacingValue.inputValue` | number | No | Gap between children in px |
66
+ | `listSpacing.applyStartEndSpace` | bool | No | Space before first/after last child |
67
+ | `listSpacing.startSpacingValue.inputValue` | number | No | Explicit start spacing in px |
68
+ | `listSpacing.endSpacingValue.inputValue` | number | No | Explicit end spacing in px |
69
+ | `minSizeValue.inputValue` | bool | No | `false` = fill height, `true` = shrink-wrap |
70
+
71
+ > **Warning:** There is no `mainAxisSize` field on Column. Use `minSizeValue: { inputValue: true }` for shrink-to-content behavior (equivalent to Flutter's `MainAxisSize.min`). Adding `mainAxisSize` will cause a validation error.
72
+
73
+ ### mainAxisAlignment Values (Column = vertical, Row = horizontal)
74
+
75
+ | Value | Description |
76
+ |-------|-------------|
77
+ | `main_axis_start` | Pack children at start |
78
+ | `main_axis_end` | Pack children at end |
79
+ | `main_axis_center` | Center children |
80
+ | `main_axis_space_between` | Even spacing, no edge space |
81
+ | `main_axis_space_around` | Even spacing, half edge space |
82
+ | `main_axis_space_evenly` | Even spacing including edges |
83
+
84
+ ### crossAxisAlignment Values (Column = horizontal, Row = vertical)
85
+
86
+ | Value | Description |
87
+ |-------|-------------|
88
+ | `cross_axis_start` | Align to start (left for Column, top for Row) |
89
+ | `cross_axis_end` | Align to end |
90
+ | `cross_axis_center` | Center on cross axis |
91
+ | `cross_axis_stretch` | Stretch to fill cross axis |
92
+
93
+ ---
94
+
95
+ ## Row
96
+
97
+ ### Minimal Example
98
+
99
+ ```yaml
100
+ key: Row_xxxxxxxx
101
+ type: Row
102
+ props:
103
+ row:
104
+ listSpacing: {}
105
+ padding: {}
106
+ ```
107
+
108
+ ### Full Schema
109
+
110
+ ```yaml
111
+ key: Row_xxxxxxxx
112
+ type: Row
113
+ props:
114
+ row:
115
+ mainAxisAlignment: main_axis_center # Horizontal distribution
116
+ crossAxisAlignment: cross_axis_center # Vertical alignment
117
+ listSpacing: # Spacing between children
118
+ spacingValue:
119
+ inputValue: 8
120
+ padding: {}
121
+ responsiveVisibility: {}
122
+ opacity:
123
+ opacityValue:
124
+ inputValue: 1
125
+ mostRecentInputValue: 1
126
+ parameterValues: {}
127
+ valueKey: {}
128
+ ```
129
+
130
+ ### Field Reference
131
+
132
+ | Field | Type | Required | Notes |
133
+ |-------|------|----------|-------|
134
+ | `mainAxisAlignment` | enum | No | Horizontal distribution |
135
+ | `crossAxisAlignment` | enum | No | Vertical alignment |
136
+ | `listSpacing.spacingValue.inputValue` | number | No | Gap between children in px |
137
+
138
+ ---
139
+
140
+ ## Stack
141
+
142
+ ### Minimal Example
143
+
144
+ ```yaml
145
+ key: Stack_xxxxxxxx
146
+ type: Stack
147
+ props:
148
+ stack:
149
+ dimensions: {}
150
+ ```
151
+
152
+ ### Full Schema
153
+
154
+ ```yaml
155
+ key: Stack_xxxxxxxx
156
+ type: Stack
157
+ props:
158
+ stack:
159
+ dimensions: {} # Stack size constraints
160
+ childAlignment: # Default alignment for children
161
+ xValue:
162
+ inputValue: 0 # -1 (left) to 1 (right)
163
+ yValue:
164
+ inputValue: 1 # -1 (top) to 1 (bottom)
165
+ responsiveVisibility: {}
166
+ opacity:
167
+ opacityValue:
168
+ inputValue: 1
169
+ mostRecentInputValue: 1
170
+ parameterValues: {}
171
+ valueKey: {}
172
+ ```
173
+
174
+ ### Field Reference
175
+
176
+ | Field | Type | Required | Notes |
177
+ |-------|------|----------|-------|
178
+ | `dimensions` | object | No | Width/height constraints (same as Container) |
179
+ | `childAlignment.xValue.inputValue` | number | No | Default horizontal alignment (-1 to 1) |
180
+ | `childAlignment.yValue.inputValue` | number | No | Default vertical alignment (-1 to 1) |
181
+
182
+ ---
183
+
184
+ ## Wrap
185
+
186
+ ### Minimal Example
187
+
188
+ ```yaml
189
+ key: Wrap_xxxxxxxx
190
+ type: Wrap
191
+ props:
192
+ wrap:
193
+ direction: FF_AXIS_HORIZONTAL
194
+ spacingValue:
195
+ inputValue: 16
196
+ ```
197
+
198
+ ### Full Schema
199
+
200
+ ```yaml
201
+ key: Wrap_xxxxxxxx
202
+ type: Wrap
203
+ props:
204
+ padding:
205
+ type: FF_PADDING_ONLY
206
+ alignment: # Overall alignment of wrap widget
207
+ xValue:
208
+ inputValue: 0
209
+ mostRecentInputValue: 0
210
+ wrap:
211
+ childAlignment: wrap_center # Alignment of children within a run
212
+ crossAxisAlignment: wrap_cross_center # Cross axis alignment within runs
213
+ direction: FF_AXIS_HORIZONTAL # FF_AXIS_HORIZONTAL or FF_AXIS_VERTICAL
214
+ runAlignment: wrap_center # Alignment of runs within the wrap
215
+ verticalDirection: FF_VERTICAL_DIRECTION_DOWN # FF_VERTICAL_DIRECTION_DOWN or FF_VERTICAL_DIRECTION_UP
216
+ clipBehavior: FF_CLIP_NONE # FF_CLIP_NONE or FF_CLIP_HARD_EDGE
217
+ spacingValue: # Spacing between children in main axis
218
+ inputValue: 16
219
+ mostRecentInputValue: 16
220
+ runSpacingValue: # Spacing between runs
221
+ inputValue: 16
222
+ responsiveVisibility: {}
223
+ opacity:
224
+ opacityValue:
225
+ inputValue: 1
226
+ animatedOpacity: {}
227
+ valueKey: {}
228
+ ```
229
+
230
+ ### Field Reference
231
+
232
+ | Field | Type | Required | Notes |
233
+ |-------|------|----------|-------|
234
+ | `direction` | enum | No | `FF_AXIS_HORIZONTAL` or `FF_AXIS_VERTICAL` |
235
+ | `childAlignment` | enum | No | `wrap_start`, `wrap_center`, `wrap_end`, `wrap_space_between`, `wrap_space_around`, `wrap_space_evenly` |
236
+ | `crossAxisAlignment` | enum | No | `wrap_cross_start`, `wrap_cross_center`, `wrap_cross_end` |
237
+ | `runAlignment` | enum | No | Same values as `childAlignment` |
238
+ | `verticalDirection` | enum | No | `FF_VERTICAL_DIRECTION_DOWN` or `FF_VERTICAL_DIRECTION_UP` |
239
+ | `clipBehavior` | enum | No | `FF_CLIP_NONE` or `FF_CLIP_HARD_EDGE` |
240
+ | `spacingValue.inputValue` | number | No | Main axis gap between children |
241
+ | `runSpacingValue.inputValue` | number | No | Gap between rows/columns |
242
+
243
+ ---
244
+
245
+ ## Real Examples
246
+
247
+ **Scrollable column with even spacing:**
248
+ ```yaml
249
+ key: Column_gy6ake8z
250
+ type: Column
251
+ props:
252
+ column:
253
+ crossAxisAlignment: cross_axis_center
254
+ scrollable: true
255
+ listSpacing:
256
+ applyStartEndSpace: true
257
+ spacingValue:
258
+ inputValue: 32
259
+ minSizeValue:
260
+ inputValue: false
261
+ padding:
262
+ leftValue:
263
+ inputValue: 32
264
+ topValue:
265
+ inputValue: 32
266
+ rightValue:
267
+ inputValue: 32
268
+ bottomValue:
269
+ inputValue: 32
270
+ ```
271
+
272
+ **Column with space-between and left alignment:**
273
+ ```yaml
274
+ key: Column_r1vldyls
275
+ type: Column
276
+ props:
277
+ column:
278
+ mainAxisAlignment: main_axis_space_between
279
+ crossAxisAlignment: cross_axis_start
280
+ scrollable: false
281
+ primary: true
282
+ listSpacing: {}
283
+ minSizeValue:
284
+ inputValue: true
285
+ mostRecentInputValue: true
286
+ padding:
287
+ type: FF_PADDING_ONLY
288
+ topValue:
289
+ inputValue: 52
290
+ mostRecentInputValue: 52
291
+ responsiveVisibility: {}
292
+ opacity:
293
+ opacityValue:
294
+ inputValue: 1
295
+ mostRecentInputValue: 1
296
+ parameterValues: {}
297
+ valueKey: {}
298
+ ```
299
+
300
+ **Centered row with 8px spacing:**
301
+ ```yaml
302
+ key: Row_2gm2u02q
303
+ type: Row
304
+ props:
305
+ row:
306
+ mainAxisAlignment: main_axis_center
307
+ listSpacing:
308
+ spacingValue:
309
+ inputValue: 8
310
+ padding: {}
311
+ ```
312
+
313
+ **Stack with bottom-center child alignment:**
314
+ ```yaml
315
+ key: Stack_vmro661q
316
+ type: Stack
317
+ props:
318
+ stack:
319
+ childAlignment:
320
+ xValue:
321
+ inputValue: 0
322
+ yValue:
323
+ inputValue: 1
324
+ ```
325
+
326
+ **Horizontal wrap with center alignment:**
327
+ ```yaml
328
+ key: Wrap_2wvkst2l
329
+ type: Wrap
330
+ props:
331
+ padding:
332
+ type: FF_PADDING_ONLY
333
+ alignment:
334
+ xValue:
335
+ inputValue: 0
336
+ mostRecentInputValue: 0
337
+ wrap:
338
+ childAlignment: wrap_center
339
+ crossAxisAlignment: wrap_cross_center
340
+ direction: FF_AXIS_HORIZONTAL
341
+ runAlignment: wrap_center
342
+ verticalDirection: FF_VERTICAL_DIRECTION_DOWN
343
+ clipBehavior: FF_CLIP_NONE
344
+ spacingValue:
345
+ inputValue: 16
346
+ mostRecentInputValue: 16
347
+ runSpacingValue:
348
+ inputValue: 16
349
+ responsiveVisibility: {}
350
+ opacity:
351
+ opacityValue:
352
+ inputValue: 1
353
+ animatedOpacity: {}
354
+ valueKey: {}
355
+ ```