community-ff-mcp 0.4.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 +300 -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 +78 -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 +37 -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 +40 -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 +21 -0
- package/build/tools/find-component-usages.js +216 -0
- package/build/tools/find-page-navigations.d.ts +26 -0
- package/build/tools/find-page-navigations.js +220 -0
- package/build/tools/get-api-endpoints.d.ts +2 -0
- package/build/tools/get-api-endpoints.js +126 -0
- package/build/tools/get-app-settings.d.ts +2 -0
- package/build/tools/get-app-settings.js +169 -0
- package/build/tools/get-app-state.d.ts +2 -0
- package/build/tools/get-app-state.js +96 -0
- package/build/tools/get-component-summary.d.ts +22 -0
- package/build/tools/get-component-summary.js +195 -0
- package/build/tools/get-custom-code.d.ts +2 -0
- package/build/tools/get-custom-code.js +380 -0
- package/build/tools/get-data-models.d.ts +2 -0
- package/build/tools/get-data-models.js +266 -0
- package/build/tools/get-editing-guide.d.ts +7 -0
- package/build/tools/get-editing-guide.js +185 -0
- package/build/tools/get-general-settings.d.ts +2 -0
- package/build/tools/get-general-settings.js +116 -0
- package/build/tools/get-in-app-purchases.d.ts +2 -0
- package/build/tools/get-in-app-purchases.js +51 -0
- package/build/tools/get-integrations.d.ts +2 -0
- package/build/tools/get-integrations.js +137 -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 +205 -0
- package/build/tools/get-project-config.d.ts +2 -0
- package/build/tools/get-project-config.js +216 -0
- package/build/tools/get-project-setup.d.ts +2 -0
- package/build/tools/get-project-setup.js +212 -0
- package/build/tools/get-theme.d.ts +2 -0
- package/build/tools/get-theme.js +199 -0
- package/build/tools/get-yaml-docs.d.ts +6 -0
- package/build/tools/get-yaml-docs.js +116 -0
- package/build/tools/get-yaml.d.ts +2 -0
- package/build/tools/get-yaml.js +53 -0
- package/build/tools/list-files.d.ts +3 -0
- package/build/tools/list-files.js +49 -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 +23 -0
- package/build/tools/search-project-files.d.ts +2 -0
- package/build/tools/search-project-files.js +69 -0
- package/build/tools/sync-project.d.ts +3 -0
- package/build/tools/sync-project.js +147 -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 +39 -0
- package/build/utils/batch-process.d.ts +2 -0
- package/build/utils/batch-process.js +10 -0
- package/build/utils/cache.d.ts +58 -0
- package/build/utils/cache.js +199 -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 +24 -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 +129 -0
- package/build/utils/page-summary/node-extractor.d.ts +24 -0
- package/build/utils/page-summary/node-extractor.js +227 -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 +58 -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/build/utils/resolve-data-type.d.ts +2 -0
- package/build/utils/resolve-data-type.js +18 -0
- package/build/utils/topic-map.d.ts +7 -0
- package/build/utils/topic-map.js +122 -0
- package/docs/ff-yaml/00-overview.md +166 -0
- package/docs/ff-yaml/01-project-files.md +2309 -0
- package/docs/ff-yaml/02-pages.md +572 -0
- package/docs/ff-yaml/03-components.md +784 -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 +953 -0
- package/docs/ff-yaml/06-variables.md +849 -0
- package/docs/ff-yaml/07-data.md +591 -0
- package/docs/ff-yaml/08-custom-code.md +736 -0
- package/docs/ff-yaml/09-theming.md +638 -0
- package/docs/ff-yaml/10-editing-guide.md +497 -0
- package/docs/ff-yaml/README.md +105 -0
- package/package.json +59 -0
- package/skills/community-ff-mcp/SKILL.md +201 -0
- package/skills/ff-widget-patterns.md +141 -0
- package/skills/ff-yaml-dev.md +70 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Widget YAML Reference
|
|
2
|
+
|
|
3
|
+
This directory documents every FlutterFlow widget type's YAML schema, extracted from real cached project files.
|
|
4
|
+
|
|
5
|
+
## Widget Type Index
|
|
6
|
+
|
|
7
|
+
| Type | File | Description |
|
|
8
|
+
|------|------|-------------|
|
|
9
|
+
| Text, RichTextSpan | [text.md](text.md) | Static text display and rich text spans |
|
|
10
|
+
| Button, IconButton | [button.md](button.md) | Tappable buttons with text/icon |
|
|
11
|
+
| TextField | [text-field.md](text-field.md) | Text input fields with decoration |
|
|
12
|
+
| Container | [container.md](container.md) | Box decoration, backgrounds, sizing |
|
|
13
|
+
| Column, Row, Stack, Wrap | [layout.md](layout.md) | Layout containers |
|
|
14
|
+
| Image | [image.md](image.md) | Asset and network images |
|
|
15
|
+
| Form | [form.md](form.md) | Form validation wrapper |
|
|
16
|
+
| DropDown, ChoiceChips | [dropdown.md](dropdown.md) | Selection widgets |
|
|
17
|
+
| Icon, ProgressBar, AppBar, ConditionalBuilder | [misc.md](misc.md) | Other widget types |
|
|
18
|
+
|
|
19
|
+
## Common Props
|
|
20
|
+
|
|
21
|
+
Every widget node has a top-level structure with these fields:
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
key: WidgetType_xxxxxxxx # Unique widget ID
|
|
25
|
+
type: WidgetType # Widget type enum (Text, Button, Container, etc.)
|
|
26
|
+
props:
|
|
27
|
+
# Widget-specific props wrapper (text:, button:, container:, etc.)
|
|
28
|
+
# Plus common props listed below
|
|
29
|
+
name: OptionalHumanName # Optional human-readable name
|
|
30
|
+
isDummyRoot: true # Only on component root containers
|
|
31
|
+
parameterValues: {} # Parameter pass-through bindings
|
|
32
|
+
valueKey: {} # Key for state preservation
|
|
33
|
+
aiGeneratedNodeInfo: # Present if AI-generated
|
|
34
|
+
isAiGenerated: true
|
|
35
|
+
requestPath: ai_component_gen_requests/xxxxx
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Common Props (under `props:`)
|
|
39
|
+
|
|
40
|
+
These props can appear on **any** widget type:
|
|
41
|
+
|
|
42
|
+
| Prop | Type | Description |
|
|
43
|
+
|------|------|-------------|
|
|
44
|
+
| `padding` | object | Padding around the widget. See padding format below. |
|
|
45
|
+
| `expanded` | object | `expandedType: EXPANDED`, `FLEXIBLE`, or `UNEXPANDED` |
|
|
46
|
+
| `responsiveVisibility` | object | Hide on breakpoints: `phoneHidden`, `tabletHidden`, `tabletLandscapeHidden`, `desktopHidden` |
|
|
47
|
+
| `opacity` | object | `opacityValue.inputValue: 0..1` and optional `animatedOpacity: {}` |
|
|
48
|
+
| `alignment` | object | Position within parent: `xValue.inputValue` (-1 to 1), `yValue.inputValue` (-1 to 1) |
|
|
49
|
+
| `visibility` | object | Conditional visibility via `visibleValue` (literal bool or variable binding) |
|
|
50
|
+
|
|
51
|
+
### Padding Format
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
# All sides equal
|
|
55
|
+
padding:
|
|
56
|
+
type: FF_PADDING_ALL
|
|
57
|
+
allValue:
|
|
58
|
+
inputValue: 16
|
|
59
|
+
|
|
60
|
+
# Individual sides
|
|
61
|
+
padding:
|
|
62
|
+
type: FF_PADDING_ONLY
|
|
63
|
+
leftValue:
|
|
64
|
+
inputValue: 16
|
|
65
|
+
topValue:
|
|
66
|
+
inputValue: 8
|
|
67
|
+
rightValue:
|
|
68
|
+
inputValue: 16
|
|
69
|
+
bottomValue:
|
|
70
|
+
inputValue: 8
|
|
71
|
+
|
|
72
|
+
# Empty (no padding)
|
|
73
|
+
padding: {}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Color Patterns
|
|
77
|
+
|
|
78
|
+
Colors appear throughout widget props in two forms:
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
# Theme color reference
|
|
82
|
+
colorValue:
|
|
83
|
+
inputValue:
|
|
84
|
+
themeColor: PRIMARY_TEXT
|
|
85
|
+
|
|
86
|
+
# ARGB integer value (as string)
|
|
87
|
+
colorValue:
|
|
88
|
+
inputValue:
|
|
89
|
+
value: "4287097512"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Theme color enum values: `PRIMARY`, `SECONDARY`, `TERTIARY`, `ALTERNATE`, `PRIMARY_TEXT`, `SECONDARY_TEXT`, `PRIMARY_BACKGROUND`, `SECONDARY_BACKGROUND`, `SUCCESS`, `WARNING`, `ERROR`, `INFO`.
|
|
93
|
+
|
|
94
|
+
### Value Patterns
|
|
95
|
+
|
|
96
|
+
All values follow the `inputValue` / `mostRecentInputValue` pattern:
|
|
97
|
+
|
|
98
|
+
```yaml
|
|
99
|
+
# Literal value
|
|
100
|
+
someValue:
|
|
101
|
+
inputValue: 42
|
|
102
|
+
|
|
103
|
+
# With sync tracking (both must match when editing)
|
|
104
|
+
someValue:
|
|
105
|
+
inputValue: 42
|
|
106
|
+
mostRecentInputValue: 42
|
|
107
|
+
|
|
108
|
+
# Variable binding
|
|
109
|
+
someValue:
|
|
110
|
+
variable:
|
|
111
|
+
source: WIDGET_CLASS_PARAMETER
|
|
112
|
+
baseVariable:
|
|
113
|
+
widgetClass:
|
|
114
|
+
paramIdentifier:
|
|
115
|
+
name: paramName
|
|
116
|
+
key: abc123
|
|
117
|
+
nodeKeyRef:
|
|
118
|
+
key: Scaffold_xxxxxxxx
|
|
119
|
+
mostRecentInputValue: fallback_value
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Variable sources: `WIDGET_CLASS_PARAMETER`, `LOCAL_STATE`, `ACTION_OUTPUTS`, `GLOBAL_PROPERTIES`, `FIRESTORE_REQUEST`, `POSTGRES_QUERY`, `CONSTANTS`, `FUNCTION_CALL`, `ENUMS`.
|
|
@@ -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
|
+
```
|