Fluid 1.3.0
Material Design for QtQuick and Qml
Loading...
Searching...
No Matches
button.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
2// SPDX-License-Identifier: MPL-2.0
3
4#pragma once
5
6#include <QtCore/qobject.h>
7#include <QtQml/qqmlregistration.h>
8
9#include "elevationtokens.h"
10#include "shapetokens.h"
11#include "statetokens.h"
12
13// Component values map to the AndroidX Material 3 generated tokens:
14// https://android.googlesource.com/platform/frameworks/support/+/5ba2cdd61be7b6945db999b238d14f3c626136fb/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/tokens/
15// Button*Tokens.kt and ButtonSmallTokens.kt through ButtonXlargeTokens.kt.
16
17namespace Fluid {
18
20struct Button
21{
22 Q_GADGET
23 QML_ANONYMOUS
24
25 Q_PROPERTY(qreal minimumInteractiveSize READ minimumInteractiveSize CONSTANT FINAL)
26 Q_PROPERTY(qreal containerHeightExtraSmall READ containerHeightExtraSmall CONSTANT FINAL)
27 Q_PROPERTY(qreal containerHeightSmall READ containerHeightSmall CONSTANT FINAL)
28 Q_PROPERTY(qreal containerHeightMedium READ containerHeightMedium CONSTANT FINAL)
29 Q_PROPERTY(qreal containerHeightLarge READ containerHeightLarge CONSTANT FINAL)
30 Q_PROPERTY(qreal containerHeightExtraLarge READ containerHeightExtraLarge CONSTANT FINAL)
31 Q_PROPERTY(qreal iconSizeExtraSmall READ iconSizeExtraSmall CONSTANT FINAL)
32 Q_PROPERTY(qreal iconSizeSmall READ iconSizeSmall CONSTANT FINAL)
33 Q_PROPERTY(qreal iconSizeMedium READ iconSizeMedium CONSTANT FINAL)
34 Q_PROPERTY(qreal iconSizeLarge READ iconSizeLarge CONSTANT FINAL)
35 Q_PROPERTY(qreal iconSizeExtraLarge READ iconSizeExtraLarge CONSTANT FINAL)
36 Q_PROPERTY(qreal leadingSpaceExtraSmall READ leadingSpaceExtraSmall CONSTANT FINAL)
37 Q_PROPERTY(qreal leadingSpaceSmall READ leadingSpaceSmall CONSTANT FINAL)
38 Q_PROPERTY(qreal leadingSpaceMedium READ leadingSpaceMedium CONSTANT FINAL)
39 Q_PROPERTY(qreal leadingSpaceLarge READ leadingSpaceLarge CONSTANT FINAL)
40 Q_PROPERTY(qreal leadingSpaceExtraLarge READ leadingSpaceExtraLarge CONSTANT FINAL)
41 Q_PROPERTY(qreal trailingSpaceExtraSmall READ trailingSpaceExtraSmall CONSTANT FINAL)
42 Q_PROPERTY(qreal trailingSpaceSmall READ trailingSpaceSmall CONSTANT FINAL)
43 Q_PROPERTY(qreal trailingSpaceMedium READ trailingSpaceMedium CONSTANT FINAL)
44 Q_PROPERTY(qreal trailingSpaceLarge READ trailingSpaceLarge CONSTANT FINAL)
45 Q_PROPERTY(qreal trailingSpaceExtraLarge READ trailingSpaceExtraLarge CONSTANT FINAL)
46 Q_PROPERTY(qreal iconLabelSpaceExtraSmall READ iconLabelSpaceExtraSmall CONSTANT FINAL)
47 Q_PROPERTY(qreal iconLabelSpaceSmall READ iconLabelSpaceSmall CONSTANT FINAL)
48 Q_PROPERTY(qreal iconLabelSpaceMedium READ iconLabelSpaceMedium CONSTANT FINAL)
49 Q_PROPERTY(qreal iconLabelSpaceLarge READ iconLabelSpaceLarge CONSTANT FINAL)
50 Q_PROPERTY(qreal iconLabelSpaceExtraLarge READ iconLabelSpaceExtraLarge CONSTANT FINAL)
51 Q_PROPERTY(
53 Q_PROPERTY(qreal outlinedOutlineWidthSmall READ outlinedOutlineWidthSmall CONSTANT FINAL)
54 Q_PROPERTY(qreal outlinedOutlineWidthMedium READ outlinedOutlineWidthMedium CONSTANT FINAL)
55 Q_PROPERTY(qreal outlinedOutlineWidthLarge READ outlinedOutlineWidthLarge CONSTANT FINAL)
56 Q_PROPERTY(
59 Q_PROPERTY(
61 FINAL)
65 Q_PROPERTY(
67 FINAL)
69 FINAL)
74 FINAL)
78 FINAL)
80 CONSTANT FINAL)
82 FINAL)
88 CONSTANT FINAL)
90 CONSTANT FINAL)
92 CONSTANT FINAL)
95 Q_PROPERTY(qreal disabledContainerOpacity READ disabledContainerOpacity CONSTANT FINAL)
96 Q_PROPERTY(qreal disabledIconOpacity READ disabledIconOpacity CONSTANT FINAL)
97 Q_PROPERTY(qreal disabledLabelTextOpacity READ disabledLabelTextOpacity CONSTANT FINAL)
98 Q_PROPERTY(qreal hoverStateLayerOpacity READ hoverStateLayerOpacity CONSTANT FINAL)
99 Q_PROPERTY(qreal focusStateLayerOpacity READ focusStateLayerOpacity CONSTANT FINAL)
100 Q_PROPERTY(qreal pressedStateLayerOpacity READ pressedStateLayerOpacity CONSTANT FINAL)
101 Q_PROPERTY(qreal elevatedContainerElevation READ elevatedContainerElevation CONSTANT FINAL)
102 Q_PROPERTY(qreal flatContainerElevation READ flatContainerElevation CONSTANT FINAL)
103
104public:
105 constexpr qreal minimumInteractiveSize() const
106 {
107 return 48.0;
108 }
109 constexpr qreal containerHeightExtraSmall() const
110 {
111 return 32.0;
112 }
113 constexpr qreal containerHeightSmall() const
114 {
115 return 40.0;
116 }
117 constexpr qreal containerHeightMedium() const
118 {
119 return 56.0;
120 }
121 constexpr qreal containerHeightLarge() const
122 {
123 return 96.0;
124 }
125 constexpr qreal containerHeightExtraLarge() const
126 {
127 return 136.0;
128 }
129 constexpr qreal iconSizeExtraSmall() const
130 {
131 return 20.0;
132 }
133 constexpr qreal iconSizeSmall() const
134 {
135 return 20.0;
136 }
137 constexpr qreal iconSizeMedium() const
138 {
139 return 24.0;
140 }
141 constexpr qreal iconSizeLarge() const
142 {
143 return 32.0;
144 }
145 constexpr qreal iconSizeExtraLarge() const
146 {
147 return 40.0;
148 }
149 constexpr qreal leadingSpaceExtraSmall() const
150 {
151 return 16.0;
152 }
153 constexpr qreal leadingSpaceSmall() const
154 {
155 return 16.0;
156 }
157 constexpr qreal leadingSpaceMedium() const
158 {
159 return 24.0;
160 }
161 constexpr qreal leadingSpaceLarge() const
162 {
163 return 48.0;
164 }
165 constexpr qreal leadingSpaceExtraLarge() const
166 {
167 return 64.0;
168 }
169 constexpr qreal trailingSpaceExtraSmall() const
170 {
171 return 16.0;
172 }
173 constexpr qreal trailingSpaceSmall() const
174 {
175 return 16.0;
176 }
177 constexpr qreal trailingSpaceMedium() const
178 {
179 return 24.0;
180 }
181 constexpr qreal trailingSpaceLarge() const
182 {
183 return 48.0;
184 }
185 constexpr qreal trailingSpaceExtraLarge() const
186 {
187 return 64.0;
188 }
189 constexpr qreal iconLabelSpaceExtraSmall() const
190 {
191 return 8.0;
192 }
193 constexpr qreal iconLabelSpaceSmall() const
194 {
195 return 8.0;
196 }
197 constexpr qreal iconLabelSpaceMedium() const
198 {
199 return 8.0;
200 }
201 constexpr qreal iconLabelSpaceLarge() const
202 {
203 return 12.0;
204 }
205 constexpr qreal iconLabelSpaceExtraLarge() const
206 {
207 return 16.0;
208 }
209 constexpr qreal outlinedOutlineWidthExtraSmall() const
210 {
211 return 1.0;
212 }
213 constexpr qreal outlinedOutlineWidthSmall() const
214 {
215 return 1.0;
216 }
217 constexpr qreal outlinedOutlineWidthMedium() const
218 {
219 return 1.0;
220 }
221 constexpr qreal outlinedOutlineWidthLarge() const
222 {
223 return 2.0;
224 }
225 constexpr qreal outlinedOutlineWidthExtraLarge() const
226 {
227 return 3.0;
228 }
230 {
231 return ShapeTokens{ }.cornerFull();
232 }
234 {
235 return ShapeTokens{ }.cornerMedium();
236 }
238 {
239 return ShapeTokens{ }.cornerMedium();
240 }
242 {
243 return ShapeTokens{ }.cornerLarge();
244 }
246 {
247 return ShapeTokens{ }.cornerExtraLarge();
248 }
250 {
251 return ShapeTokens{ }.cornerExtraLarge();
252 }
254 {
255 return ShapeTokens{ }.cornerSmall();
256 }
258 {
259 return ShapeTokens{ }.cornerSmall();
260 }
262 {
263 return ShapeTokens{ }.cornerMedium();
264 }
266 {
267 return ShapeTokens{ }.cornerLarge();
268 }
270 {
271 return ShapeTokens{ }.cornerLarge();
272 }
274 {
275 return ShapeTokens{ }.cornerFull();
276 }
278 {
279 return ShapeTokens{ }.cornerFull();
280 }
282 {
283 return ShapeTokens{ }.cornerFull();
284 }
286 {
287 return ShapeTokens{ }.cornerFull();
288 }
290 {
291 return ShapeTokens{ }.cornerFull();
292 }
294 {
295 return ShapeTokens{ }.cornerMedium();
296 }
298 {
299 return ShapeTokens{ }.cornerMedium();
300 }
302 {
303 return ShapeTokens{ }.cornerLarge();
304 }
306 {
307 return ShapeTokens{ }.cornerExtraLarge();
308 }
313 constexpr qreal disabledContainerOpacity() const
314 {
315 return 0.1;
316 }
317 constexpr qreal disabledIconOpacity() const
318 {
319 return 0.38;
320 }
321 constexpr qreal disabledLabelTextOpacity() const
322 {
323 return 0.38;
324 }
325 constexpr qreal hoverStateLayerOpacity() const
326 {
328 }
329 constexpr qreal focusStateLayerOpacity() const
330 {
332 }
333 constexpr qreal pressedStateLayerOpacity() const
334 {
336 }
337 constexpr qreal elevatedContainerElevation() const
338 {
339 return ElevationTokens{ }.level1();
340 }
341 constexpr qreal flatContainerElevation() const
342 {
343 return ElevationTokens{ }.level0();
344 }
345};
346
347} // namespace Fluid
Material Design 3 Expressive button tokens.
Definition button.h:21
constexpr qreal iconLabelSpaceLarge() const
Definition button.h:201
qreal iconSizeExtraLarge
Definition button.h:35
qreal leadingSpaceExtraSmall
Definition button.h:36
qreal containerHeightExtraSmall
Definition button.h:26
qreal containerHeightExtraLarge
Definition button.h:30
constexpr qreal trailingSpaceExtraSmall() const
Definition button.h:169
constexpr qreal containerHeightSmall() const
Definition button.h:113
constexpr ShapeValue containerShapeSquareLarge() const
Definition button.h:245
constexpr qreal pressedStateLayerOpacity() const
Definition button.h:333
qreal trailingSpaceExtraLarge
Definition button.h:45
Fluid::ShapeValue containerShapeSquareExtraSmall
Definition button.h:61
constexpr ShapeValue selectedContainerShapeSquareSmall() const
Definition button.h:297
constexpr qreal trailingSpaceSmall() const
Definition button.h:173
constexpr qreal focusStateLayerOpacity() const
Definition button.h:329
constexpr ShapeValue containerShapeSquareMedium() const
Definition button.h:241
Fluid::ShapeValue pressedContainerShapeSmall
Definition button.h:70
constexpr ShapeValue pressedContainerShapeExtraLarge() const
Definition button.h:269
qreal leadingSpaceMedium
Definition button.h:38
Fluid::ShapeValue selectedContainerShapeSquareExtraLarge READ selectedContainerShapeSquareExtraLarge
Definition button.h:94
qreal iconLabelSpaceLarge
Definition button.h:49
qreal outlinedOutlineWidthSmall
Definition button.h:53
constexpr qreal leadingSpaceExtraLarge() const
Definition button.h:165
constexpr qreal flatContainerElevation() const
Definition button.h:341
constexpr qreal iconSizeExtraLarge() const
Definition button.h:145
Fluid::ShapeValue selectedContainerShapeSquareMedium
Definition button.h:90
constexpr qreal outlinedOutlineWidthMedium() const
Definition button.h:217
constexpr qreal leadingSpaceExtraSmall() const
Definition button.h:149
qreal iconLabelSpaceSmall
Definition button.h:47
Fluid::ShapeValue pressedContainerShapeLarge
Definition button.h:72
qreal outlinedOutlineWidthMedium
Definition button.h:54
constexpr qreal iconLabelSpaceMedium() const
Definition button.h:197
constexpr ShapeValue containerShapeSquareSmall() const
Definition button.h:237
Fluid::ShapeValue selectedContainerShapeRoundExtraSmall READ selectedContainerShapeRoundExtraSmall
Definition button.h:76
constexpr qreal iconSizeMedium() const
Definition button.h:137
Fluid::ShapeValue containerShapeSquareExtraLarge
Definition button.h:67
constexpr ShapeValue containerShapeSquareExtraSmall() const
Definition button.h:233
qreal iconSizeMedium
Definition button.h:33
constexpr qreal outlinedOutlineWidthLarge() const
Definition button.h:221
constexpr qreal leadingSpaceMedium() const
Definition button.h:157
qreal iconLabelSpaceMedium
Definition button.h:48
constexpr ShapeValue selectedContainerShapeRoundMedium() const
Definition button.h:281
constexpr ShapeValue pressedContainerShapeSmall() const
Definition button.h:257
constexpr ShapeValue selectedContainerShapeRoundExtraLarge() const
Definition button.h:289
Fluid::ShapeValue pressedContainerShapeExtraSmall
Definition button.h:69
qreal outlinedOutlineWidthLarge
Definition button.h:55
qreal elevatedContainerElevation
Definition button.h:101
qreal disabledLabelTextOpacity
Definition button.h:97
constexpr qreal containerHeightExtraLarge() const
Definition button.h:125
Fluid::ShapeValue pressedContainerShapeMedium
Definition button.h:71
qreal outlinedOutlineWidthExtraSmall
Definition button.h:52
Fluid::ShapeValue containerShapeSquareLarge
Definition button.h:64
Fluid::ShapeValue selectedContainerShapeSquareLarge
Definition button.h:92
constexpr qreal iconSizeSmall() const
Definition button.h:133
qreal focusStateLayerOpacity
Definition button.h:99
qreal trailingSpaceLarge
Definition button.h:44
constexpr qreal disabledContainerOpacity() const
Definition button.h:313
constexpr qreal iconLabelSpaceExtraLarge() const
Definition button.h:205
constexpr ShapeValue selectedContainerShapeRoundExtraSmall() const
Definition button.h:273
constexpr qreal disabledLabelTextOpacity() const
Definition button.h:321
constexpr ShapeValue selectedContainerShapeSquareExtraSmall() const
Definition button.h:293
qreal containerHeightMedium
Definition button.h:28
constexpr qreal outlinedOutlineWidthExtraSmall() const
Definition button.h:209
constexpr ShapeValue selectedContainerShapeSquareLarge() const
Definition button.h:305
Fluid::ShapeValue selectedContainerShapeRoundExtraLarge READ selectedContainerShapeRoundExtraLarge
Definition button.h:84
constexpr qreal iconSizeLarge() const
Definition button.h:141
constexpr ShapeValue pressedContainerShapeExtraSmall() const
Definition button.h:253
qreal trailingSpaceExtraSmall
Definition button.h:41
constexpr qreal hoverStateLayerOpacity() const
Definition button.h:325
qreal containerHeightLarge
Definition button.h:29
Fluid::ShapeValue selectedContainerShapeRoundSmall
Definition button.h:78
constexpr qreal iconLabelSpaceSmall() const
Definition button.h:193
Fluid::ShapeValue selectedContainerShapeSquareSmall
Definition button.h:88
constexpr qreal trailingSpaceMedium() const
Definition button.h:177
qreal leadingSpaceExtraLarge
Definition button.h:40
constexpr qreal containerHeightExtraSmall() const
Definition button.h:109
constexpr qreal leadingSpaceSmall() const
Definition button.h:153
qreal trailingSpaceMedium
Definition button.h:43
constexpr qreal containerHeightMedium() const
Definition button.h:117
constexpr ShapeValue selectedContainerShapeRoundLarge() const
Definition button.h:285
constexpr ShapeValue pressedContainerShapeMedium() const
Definition button.h:261
qreal iconLabelSpaceExtraSmall
Definition button.h:46
qreal outlinedOutlineWidthExtraLarge
Definition button.h:57
qreal iconSizeSmall
Definition button.h:32
constexpr qreal outlinedOutlineWidthExtraLarge() const
Definition button.h:225
constexpr qreal elevatedContainerElevation() const
Definition button.h:337
Fluid::ShapeValue selectedContainerShapeRoundMedium
Definition button.h:80
QML_ANONYMOUSqreal minimumInteractiveSize
Definition button.h:25
Fluid::ShapeValue containerShapeRound
Definition button.h:58
qreal iconSizeLarge
Definition button.h:34
constexpr ShapeValue selectedContainerShapeRoundSmall() const
Definition button.h:277
constexpr ShapeValue containerShapeRound() const
Definition button.h:229
constexpr ShapeValue pressedContainerShapeLarge() const
Definition button.h:265
Fluid::ShapeValue selectedContainerShapeRoundLarge
Definition button.h:82
qreal trailingSpaceSmall
Definition button.h:42
Fluid::ShapeValue containerShapeSquareSmall
Definition button.h:62
qreal pressedStateLayerOpacity
Definition button.h:100
constexpr ShapeValue selectedContainerShapeSquareMedium() const
Definition button.h:301
qreal hoverStateLayerOpacity
Definition button.h:98
constexpr ShapeValue containerShapeSquareExtraLarge() const
Definition button.h:249
qreal leadingSpaceSmall
Definition button.h:37
Fluid::ShapeValue containerShapeSquareMedium
Definition button.h:63
qreal iconSizeExtraSmall
Definition button.h:31
constexpr qreal disabledIconOpacity() const
Definition button.h:317
constexpr qreal trailingSpaceExtraLarge() const
Definition button.h:185
constexpr ShapeValue selectedContainerShapeSquareExtraLarge() const
Definition button.h:309
qreal leadingSpaceLarge
Definition button.h:39
qreal disabledIconOpacity
Definition button.h:96
constexpr qreal containerHeightLarge() const
Definition button.h:121
constexpr qreal iconSizeExtraSmall() const
Definition button.h:129
constexpr qreal outlinedOutlineWidthSmall() const
Definition button.h:213
constexpr qreal leadingSpaceLarge() const
Definition button.h:161
qreal disabledContainerOpacity
Definition button.h:95
constexpr qreal trailingSpaceLarge() const
Definition button.h:181
Fluid::ShapeValue selectedContainerShapeSquareExtraSmall READ selectedContainerShapeSquareExtraSmall
Definition button.h:86
Fluid::ShapeValue pressedContainerShapeExtraLarge
Definition button.h:74
qreal containerHeightSmall
Definition button.h:27
qreal flatContainerElevation
Definition button.h:102
constexpr qreal iconLabelSpaceExtraSmall() const
Definition button.h:189
qreal iconLabelSpaceExtraLarge
Definition button.h:50
Material Design 3 system elevation tokens.
QML_ANONYMOUSqreal level0
Material Design 3 system shape tokens.
Definition shapetokens.h:48
Fluid::ShapeValue cornerFull
Definition shapetokens.h:59
Fluid::ShapeValue cornerLarge
Definition shapetokens.h:60
Fluid::ShapeValue cornerSmall
Definition shapetokens.h:67
Fluid::ShapeValue cornerMedium
Definition shapetokens.h:65
Fluid::ShapeValue cornerExtraLarge
Definition shapetokens.h:53
Material Design 3 system state tokens.
Definition statetokens.h:18
qreal focusStateLayerOpacity
Definition statetokens.h:23
qreal hoverStateLayerOpacity
Definition statetokens.h:24
qreal pressedStateLayerOpacity
Definition statetokens.h:25