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,444 @@
1
+ # Button and IconButton
2
+
3
+ ## Button
4
+
5
+ ### Minimal Example
6
+
7
+ ```yaml
8
+ key: Button_xxxxxxxx
9
+ type: Button
10
+ props:
11
+ button:
12
+ text:
13
+ themeStyle: TITLE_MEDIUM
14
+ textValue:
15
+ inputValue: Submit
16
+ borderRadius:
17
+ type: FF_BORDER_RADIUS_ALL
18
+ allValue:
19
+ inputValue: 8
20
+ dimensions:
21
+ width:
22
+ pixelsValue:
23
+ inputValue: Infinity
24
+ height:
25
+ pixelsValue:
26
+ inputValue: 50
27
+ fillColorValue:
28
+ inputValue:
29
+ themeColor: PRIMARY
30
+ padding: {}
31
+ ```
32
+
33
+ ### Full Schema
34
+
35
+ ```yaml
36
+ key: Button_xxxxxxxx
37
+ type: Button
38
+ props:
39
+ button:
40
+ text: # Button label text styling
41
+ themeStyle: TITLE_MEDIUM # Base theme style for text
42
+ translationIdentifier:
43
+ key: ja48xzh1 # i18n translation key
44
+ selectable: true # Whether text is selectable
45
+ textValue:
46
+ inputValue: Sign up # Button label text
47
+ mostRecentInputValue: Sign up # Must match inputValue
48
+ colorValue: # Text color
49
+ inputValue:
50
+ value: "4279506971" # ARGB integer
51
+ # OR themeColor: PRIMARY_TEXT
52
+ fontWeightValue:
53
+ inputValue: w700 # Font weight override
54
+ borderRadius: # Button corner radius
55
+ type: FF_BORDER_RADIUS_ALL # FF_BORDER_RADIUS_ALL or FF_BORDER_RADIUS_ONLY
56
+ allValue: # Used with FF_BORDER_RADIUS_ALL
57
+ inputValue: 8
58
+ topLeftValue: # Individual corners (with FF_BORDER_RADIUS_ONLY or override)
59
+ inputValue: 40
60
+ mostRecentInputValue: 40
61
+ topRightValue:
62
+ inputValue: 40
63
+ mostRecentInputValue: 40
64
+ bottomLeftValue:
65
+ inputValue: 40
66
+ mostRecentInputValue: 40
67
+ bottomRightValue:
68
+ inputValue: 40
69
+ mostRecentInputValue: 40
70
+ innerPadding: # Padding inside the button
71
+ type: FF_PADDING_ALL
72
+ allValue:
73
+ inputValue: 8
74
+ hasHoverStyle: true # Enable hover state
75
+ dimensions: # Button size
76
+ width:
77
+ pixelsValue:
78
+ inputValue: Infinity # Infinity = fill parent width
79
+ height:
80
+ pixelsValue:
81
+ inputValue: 50
82
+ elevationValue: # Shadow elevation
83
+ inputValue: 0
84
+ mostRecentInputValue: 0
85
+ fillColorValue: # Background color
86
+ inputValue:
87
+ value: "4287097512" # ARGB integer
88
+ # OR themeColor: SECONDARY_BACKGROUND
89
+ mostRecentInputValue:
90
+ value: "4287097512"
91
+ borderColorValue: # Border color
92
+ inputValue:
93
+ themeColor: ALTERNATE
94
+ mostRecentInputValue:
95
+ themeColor: ALTERNATE
96
+ borderWidthValue: # Border width
97
+ inputValue: 2
98
+ mostRecentInputValue: 2
99
+ hoverColorValue: # Hover state fill color
100
+ inputValue:
101
+ themeColor: PRIMARY_BACKGROUND
102
+ mostRecentInputValue:
103
+ themeColor: PRIMARY_BACKGROUND
104
+ iconValue: # Optional leading icon
105
+ inputValue:
106
+ sizeValue:
107
+ inputValue: 20
108
+ mostRecentInputValue: 20
109
+ iconDataValue:
110
+ inputValue:
111
+ codePoint: 61856 # Unicode code point
112
+ family: FontAwesomeBrands # Icon font family
113
+ package: font_awesome_flutter # Flutter package name
114
+ matchTextDirection: false
115
+ packageIcon: # Package-specific icon ID
116
+ fontAwesome: google
117
+ name: google # Human-readable icon name
118
+ padding: # Outer padding
119
+ type: FF_PADDING_ONLY
120
+ visibility: # Conditional visibility
121
+ visibleValue:
122
+ variable:
123
+ source: GLOBAL_PROPERTIES
124
+ baseVariable:
125
+ globalProperties:
126
+ property: IS_IOS
127
+ mostRecentInputValue: true
128
+ responsiveVisibility: {} # Breakpoint visibility
129
+ opacity:
130
+ opacityValue:
131
+ inputValue: 1
132
+ animatedOpacity: {}
133
+ parameterValues: {}
134
+ valueKey: {}
135
+ name: SignUpButton # Optional human-readable name
136
+ ```
137
+
138
+ ### Field Reference
139
+
140
+ | Field | Type | Required | Notes |
141
+ |-------|------|----------|-------|
142
+ | `text.themeStyle` | enum | Yes | Same values as Text widget |
143
+ | `text.textValue.inputValue` | string | Yes | Button label text |
144
+ | `text.colorValue.inputValue` | object | No | Text color |
145
+ | `text.fontWeightValue.inputValue` | enum | No | w100-w900 (no `mostRecentInputValue`) |
146
+ | `text.translationIdentifier.key` | string | No | i18n key |
147
+ | `borderRadius.type` | enum | No | `FF_BORDER_RADIUS_ALL` or `FF_BORDER_RADIUS_ONLY` |
148
+ | `borderRadius.allValue.inputValue` | number | No | Uniform radius |
149
+ | `innerPadding` | object | No | Same format as padding |
150
+ | `hasHoverStyle` | bool | No | Enable hover effect |
151
+ | `dimensions.width.pixelsValue.inputValue` | number | No | Width (`Infinity` = fill) |
152
+ | `dimensions.height.pixelsValue.inputValue` | number | No | Height in px |
153
+ | `elevationValue.inputValue` | number | No | Shadow elevation (0 = flat) |
154
+ | `fillColorValue.inputValue` | object | No | Background color |
155
+ | `borderColorValue.inputValue` | object | No | Border stroke color |
156
+ | `borderWidthValue.inputValue` | number | No | Border stroke width |
157
+ | `hoverColorValue.inputValue` | object | No | Background on hover |
158
+ | `iconValue.inputValue` | object | No | Leading icon (see icon format) |
159
+
160
+ ### Icon Format (reused in Button, IconButton, DropDown)
161
+
162
+ ```yaml
163
+ iconValue:
164
+ inputValue:
165
+ sizeValue:
166
+ inputValue: 20
167
+ colorValue:
168
+ inputValue:
169
+ themeColor: PRIMARY
170
+ iconDataValue:
171
+ inputValue:
172
+ codePoint: 61856 # Unicode code point
173
+ family: FontAwesomeBrands # Font family
174
+ package: font_awesome_flutter # Package (for non-Material icons)
175
+ matchTextDirection: false
176
+ packageIcon: # Package-specific icon mapping
177
+ fontAwesome: google
178
+ name: google # Human-readable name
179
+ isCustom: true # For custom icon packs
180
+ ```
181
+
182
+ Common icon families: `MaterialIcons`, `FontAwesomeBrands`, `FontAwesomeSolid`, `Tabler-Icons`.
183
+
184
+ ---
185
+
186
+ ## IconButton
187
+
188
+ ### Minimal Example
189
+
190
+ ```yaml
191
+ key: IconButton_xxxxxxxx
192
+ type: IconButton
193
+ props:
194
+ iconButton:
195
+ buttonSize:
196
+ pixelsValue:
197
+ inputValue: 40
198
+ iconValue:
199
+ inputValue:
200
+ sizeValue:
201
+ inputValue: 24
202
+ colorValue:
203
+ inputValue:
204
+ themeColor: SECONDARY_TEXT
205
+ iconDataValue:
206
+ inputValue:
207
+ codePoint: 63047
208
+ family: MaterialIcons
209
+ matchTextDirection: false
210
+ name: close_rounded
211
+ ```
212
+
213
+ ### Full Schema
214
+
215
+ ```yaml
216
+ key: IconButton_xxxxxxxx
217
+ type: IconButton
218
+ props:
219
+ iconButton:
220
+ buttonSize: # Overall button tap target size
221
+ pixelsValue:
222
+ inputValue: 40
223
+ mostRecentInputValue: 40
224
+ borderRadiusValue: # Button corner radius
225
+ inputValue: 20
226
+ mostRecentInputValue: 20
227
+ borderColorValue: # Border stroke color
228
+ inputValue:
229
+ value: "1277303646" # ARGB integer
230
+ borderWidthValue: # Border stroke width
231
+ inputValue: 1
232
+ mostRecentInputValue: 1
233
+ iconValue: # The icon to display
234
+ inputValue:
235
+ sizeValue:
236
+ inputValue: 16 # Icon size
237
+ colorValue:
238
+ inputValue:
239
+ themeColor: PRIMARY # Icon color
240
+ mostRecentInputValue:
241
+ themeColor: PRIMARY
242
+ iconDataValue:
243
+ inputValue:
244
+ codePoint: 63295 # Unicode code point
245
+ family: Tabler-Icons # Icon font family
246
+ matchTextDirection: false
247
+ name: flag # Human-readable name
248
+ isCustom: true # Custom icon pack flag
249
+ visibility: # Conditional visibility
250
+ visibleValue:
251
+ variable:
252
+ source: LOCAL_STATE
253
+ baseVariable:
254
+ localState:
255
+ fieldIdentifier:
256
+ name: isAnonymous
257
+ key: bfu0ivv2
258
+ stateVariableType: APP_STATE
259
+ operations:
260
+ - negate: {} # Invert the boolean
261
+ mostRecentInputValue: true
262
+ responsiveVisibility: {}
263
+ opacity:
264
+ opacityValue:
265
+ inputValue: 1
266
+ mostRecentInputValue: 1
267
+ parameterValues: {}
268
+ valueKey: {}
269
+ ```
270
+
271
+ ### Field Reference
272
+
273
+ | Field | Type | Required | Notes |
274
+ |-------|------|----------|-------|
275
+ | `buttonSize.pixelsValue.inputValue` | number | Yes | Tap target diameter |
276
+ | `borderRadiusValue.inputValue` | number | No | Corner radius |
277
+ | `borderColorValue.inputValue` | object | No | Border color |
278
+ | `borderWidthValue.inputValue` | number | No | Border width |
279
+ | `iconValue.inputValue` | object | Yes | Icon specification (see icon format above) |
280
+
281
+ ### Real Examples
282
+
283
+ **Primary CTA button with fill color and full width:**
284
+ ```yaml
285
+ key: Button_q8y07fea
286
+ type: Button
287
+ props:
288
+ button:
289
+ text:
290
+ themeStyle: TITLE_MEDIUM
291
+ translationIdentifier:
292
+ key: ja48xzh1
293
+ selectable: true
294
+ textValue:
295
+ inputValue: Sign up
296
+ colorValue:
297
+ inputValue:
298
+ value: "4279506971"
299
+ borderRadius:
300
+ type: FF_BORDER_RADIUS_ALL
301
+ allValue:
302
+ inputValue: 8
303
+ innerPadding:
304
+ type: FF_PADDING_ALL
305
+ allValue:
306
+ inputValue: 8
307
+ dimensions:
308
+ width:
309
+ pixelsValue:
310
+ inputValue: Infinity
311
+ height:
312
+ pixelsValue:
313
+ inputValue: 50
314
+ elevationValue:
315
+ inputValue: 0
316
+ fillColorValue:
317
+ inputValue:
318
+ value: "4287097512"
319
+ padding: {}
320
+ name: SignUpButton
321
+ ```
322
+
323
+ **Social login button with icon, border, and hover:**
324
+ ```yaml
325
+ key: Button_pgwfbxkm
326
+ type: Button
327
+ props:
328
+ button:
329
+ text:
330
+ themeStyle: BODY_MEDIUM
331
+ translationIdentifier:
332
+ key: yor8nbcw
333
+ textValue:
334
+ inputValue: Continue with Google
335
+ mostRecentInputValue: Continue with Google
336
+ fontWeightValue:
337
+ inputValue: w700
338
+ borderRadius:
339
+ type: FF_BORDER_RADIUS_ALL
340
+ topLeftValue:
341
+ inputValue: 40
342
+ mostRecentInputValue: 40
343
+ topRightValue:
344
+ inputValue: 40
345
+ mostRecentInputValue: 40
346
+ bottomLeftValue:
347
+ inputValue: 40
348
+ mostRecentInputValue: 40
349
+ bottomRightValue:
350
+ inputValue: 40
351
+ mostRecentInputValue: 40
352
+ allValue:
353
+ inputValue: 12
354
+ hasHoverStyle: true
355
+ dimensions:
356
+ width:
357
+ pixelsValue:
358
+ inputValue: 300
359
+ height:
360
+ pixelsValue:
361
+ inputValue: 44
362
+ mostRecentInputValue: 44
363
+ elevationValue:
364
+ inputValue: 0
365
+ mostRecentInputValue: 0
366
+ fillColorValue:
367
+ inputValue:
368
+ themeColor: SECONDARY_BACKGROUND
369
+ mostRecentInputValue:
370
+ themeColor: SECONDARY_BACKGROUND
371
+ borderColorValue:
372
+ inputValue:
373
+ themeColor: ALTERNATE
374
+ mostRecentInputValue:
375
+ themeColor: ALTERNATE
376
+ borderWidthValue:
377
+ inputValue: 2
378
+ mostRecentInputValue: 2
379
+ hoverColorValue:
380
+ inputValue:
381
+ themeColor: PRIMARY_BACKGROUND
382
+ mostRecentInputValue:
383
+ themeColor: PRIMARY_BACKGROUND
384
+ iconValue:
385
+ inputValue:
386
+ sizeValue:
387
+ inputValue: 20
388
+ mostRecentInputValue: 20
389
+ iconDataValue:
390
+ inputValue:
391
+ codePoint: 61856
392
+ family: FontAwesomeBrands
393
+ package: font_awesome_flutter
394
+ matchTextDirection: false
395
+ packageIcon:
396
+ fontAwesome: google
397
+ name: google
398
+ padding:
399
+ type: FF_PADDING_ONLY
400
+ responsiveVisibility: {}
401
+ opacity:
402
+ opacityValue:
403
+ inputValue: 1
404
+ animatedOpacity: {}
405
+ parameterValues: {}
406
+ valueKey: {}
407
+ ```
408
+
409
+ **IconButton with close icon and conditional visibility:**
410
+ ```yaml
411
+ key: IconButton_oixaawhh
412
+ type: IconButton
413
+ props:
414
+ iconButton:
415
+ buttonSize:
416
+ pixelsValue:
417
+ inputValue: 40
418
+ iconValue:
419
+ inputValue:
420
+ sizeValue:
421
+ inputValue: 24
422
+ colorValue:
423
+ inputValue:
424
+ themeColor: SECONDARY_TEXT
425
+ iconDataValue:
426
+ inputValue:
427
+ codePoint: 63047
428
+ family: MaterialIcons
429
+ matchTextDirection: false
430
+ name: close_rounded
431
+ visibility:
432
+ visibleValue:
433
+ variable:
434
+ source: LOCAL_STATE
435
+ baseVariable:
436
+ localState:
437
+ fieldIdentifier:
438
+ name: isAnonymous
439
+ key: bfu0ivv2
440
+ stateVariableType: APP_STATE
441
+ operations:
442
+ - negate: {}
443
+ mostRecentInputValue: true
444
+ ```