@m3e/fab 1.0.0-rc.1

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 (45) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +181 -0
  3. package/cem.config.mjs +16 -0
  4. package/demo/index.html +80 -0
  5. package/dist/css-custom-data.json +1247 -0
  6. package/dist/custom-elements.json +1363 -0
  7. package/dist/html-custom-data.json +78 -0
  8. package/dist/index.js +1393 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/index.min.js +310 -0
  11. package/dist/index.min.js.map +1 -0
  12. package/dist/src/FabElement.d.ts +355 -0
  13. package/dist/src/FabElement.d.ts.map +1 -0
  14. package/dist/src/FabSize.d.ts +3 -0
  15. package/dist/src/FabSize.d.ts.map +1 -0
  16. package/dist/src/FabVariant.d.ts +3 -0
  17. package/dist/src/FabVariant.d.ts.map +1 -0
  18. package/dist/src/index.d.ts +4 -0
  19. package/dist/src/index.d.ts.map +1 -0
  20. package/dist/src/styles/FabSizeStyle.d.ts +7 -0
  21. package/dist/src/styles/FabSizeStyle.d.ts.map +1 -0
  22. package/dist/src/styles/FabSizeToken.d.ts +25 -0
  23. package/dist/src/styles/FabSizeToken.d.ts.map +1 -0
  24. package/dist/src/styles/FabStyle.d.ts +7 -0
  25. package/dist/src/styles/FabStyle.d.ts.map +1 -0
  26. package/dist/src/styles/FabVariantStyle.d.ts +7 -0
  27. package/dist/src/styles/FabVariantStyle.d.ts.map +1 -0
  28. package/dist/src/styles/FabVariantToken.d.ts +52 -0
  29. package/dist/src/styles/FabVariantToken.d.ts.map +1 -0
  30. package/dist/src/styles/index.d.ts +4 -0
  31. package/dist/src/styles/index.d.ts.map +1 -0
  32. package/eslint.config.mjs +13 -0
  33. package/package.json +49 -0
  34. package/rollup.config.js +32 -0
  35. package/src/FabElement.ts +448 -0
  36. package/src/FabSize.ts +2 -0
  37. package/src/FabVariant.ts +9 -0
  38. package/src/index.ts +3 -0
  39. package/src/styles/FabSizeStyle.ts +45 -0
  40. package/src/styles/FabSizeToken.ts +102 -0
  41. package/src/styles/FabStyle.ts +155 -0
  42. package/src/styles/FabVariantStyle.ts +95 -0
  43. package/src/styles/FabVariantToken.ts +1068 -0
  44. package/src/styles/index.ts +3 -0
  45. package/tsconfig.json +9 -0
@@ -0,0 +1,1068 @@
1
+ import { CSSResult, unsafeCSS } from "lit";
2
+
3
+ import { DesignToken } from "@m3e/core";
4
+
5
+ import { FabVariant } from "../FabVariant";
6
+
7
+ /** @private */
8
+ type _FabVariantToken = {
9
+ labelTextColor: CSSResult;
10
+ iconColor: CSSResult;
11
+ containerColor: CSSResult;
12
+ containerElevation: CSSResult;
13
+ loweredContainerElevation: CSSResult;
14
+ loweredContainerColor?: CSSResult;
15
+ disabled: {
16
+ containerColor: CSSResult;
17
+ containerOpacity: CSSResult;
18
+ iconColor: CSSResult;
19
+ iconOpacity: CSSResult;
20
+ labelTextColor: CSSResult;
21
+ labelTextOpacity: CSSResult;
22
+ containerElevation: CSSResult;
23
+ loweredContainerElevation: CSSResult;
24
+ };
25
+ hover: {
26
+ iconColor: CSSResult;
27
+ labelTextColor: CSSResult;
28
+ stateLayerColor: CSSResult;
29
+ stateLayerOpacity: CSSResult;
30
+ containerElevation: CSSResult;
31
+ loweredContainerElevation: CSSResult;
32
+ };
33
+ focus: {
34
+ iconColor: CSSResult;
35
+ labelTextColor: CSSResult;
36
+ stateLayerColor: CSSResult;
37
+ stateLayerOpacity: CSSResult;
38
+ containerElevation: CSSResult;
39
+ loweredContainerElevation: CSSResult;
40
+ };
41
+ pressed: {
42
+ iconColor: CSSResult;
43
+ labelTextColor: CSSResult;
44
+ stateLayerColor: CSSResult;
45
+ stateLayerOpacity: CSSResult;
46
+ containerElevation: CSSResult;
47
+ loweredContainerElevation: CSSResult;
48
+ };
49
+ };
50
+
51
+ /**
52
+ * Component design tokens that control the appearance variants of `M3FabElement`.
53
+ * @internal
54
+ */
55
+ export const FabVariantToken: Record<FabVariant, _FabVariantToken> = {
56
+ /** Design tokens that control the `primary` variant. */
57
+ primary: {
58
+ /** Default label color. */
59
+ labelTextColor: unsafeCSS(`var(--m3e-primary-fab-label-text-color, ${DesignToken.color.onPrimary})`),
60
+
61
+ /** Default icon color. */
62
+ iconColor: unsafeCSS(`var(--m3e-primary-fab-icon-color, ${DesignToken.color.onPrimary})`),
63
+
64
+ /** Default container background color. */
65
+ containerColor: unsafeCSS(`var(--m3e-primary-fab-container-color, ${DesignToken.color.primary})`),
66
+
67
+ /** Resting elevation. */
68
+ containerElevation: unsafeCSS(`var(--m3e-primary-fab-container-elevation, ${DesignToken.elevation.level3})`),
69
+
70
+ /** Lowered resting elevation. */
71
+ loweredContainerElevation: unsafeCSS(
72
+ `var(--m3e-primary-fab-lowered-container-elevation, ${DesignToken.elevation.level2})`
73
+ ),
74
+
75
+ /** Design tokens that control disabled state. */
76
+ disabled: {
77
+ /** Container background color when disabled. */
78
+ containerColor: unsafeCSS(`var(--m3e-primary-fab-disabled-container-color, ${DesignToken.color.onSurface})`),
79
+
80
+ /** Opacity of container when disabled. */
81
+ containerOpacity: unsafeCSS(`var(--m3e-primary-fab-disabled-container-opacity, 10%)`),
82
+
83
+ /** Icon color when disabled. */
84
+ iconColor: unsafeCSS(`var(--m3e-primary-fab-disabled-icon-color, ${DesignToken.color.onSurface})`),
85
+
86
+ /** Icon opacity when disabled. */
87
+ iconOpacity: unsafeCSS(`var(--m3e-primary-fab-disabled-icon-opacity, 38%)`),
88
+
89
+ /** Label color when disabled. */
90
+ labelTextColor: unsafeCSS(`var(--m3e-primary-fab-disabled-label-text-color, ${DesignToken.color.onSurface})`),
91
+
92
+ /** Label opacity when disabled. */
93
+ labelTextOpacity: unsafeCSS(`var(--m3e-primary-fab-disabled-label-text-opacity, 38%)`),
94
+
95
+ /** Elevation when disabled. */
96
+ containerElevation: unsafeCSS(
97
+ `var(--m3e-primary-fab-disabled-container-elevation, ${DesignToken.elevation.level0})`
98
+ ),
99
+
100
+ /** Lowered elevation when disabled. */
101
+ loweredContainerElevation: unsafeCSS(
102
+ `var(--m3e-primary-fab-lowered-disabled-container-elevation, ${DesignToken.elevation.level0})`
103
+ ),
104
+ },
105
+
106
+ /** Design tokens that control hover state. */
107
+ hover: {
108
+ /** Icon color on hover. */
109
+ iconColor: unsafeCSS(`var(--m3e-primary-fab-hover-icon-color, ${DesignToken.color.onPrimary})`),
110
+
111
+ /** Label color on hover. */
112
+ labelTextColor: unsafeCSS(`var(--m3e-primary-fab-hover-label-text-color, ${DesignToken.color.onPrimary})`),
113
+
114
+ /** State layer color on hover. */
115
+ stateLayerColor: unsafeCSS(`var(--m3e-primary-fab-hover-state-layer-color, ${DesignToken.color.onPrimary})`),
116
+
117
+ /** State layer opacity on hover. */
118
+ stateLayerOpacity: unsafeCSS(
119
+ `var(--m3e-primary-fab-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity})`
120
+ ),
121
+
122
+ /** Elevation on hover. */
123
+ containerElevation: unsafeCSS(
124
+ `var(--m3e-primary-fab-hover-container-elevation, ${DesignToken.elevation.level4})`
125
+ ),
126
+
127
+ /** Lowered elevation on hover. */
128
+ loweredContainerElevation: unsafeCSS(
129
+ `var(--m3e-primary-fab-lowered-hover-container-elevation, ${DesignToken.elevation.level3})`
130
+ ),
131
+ },
132
+
133
+ /** Design tokens that control focus state. */
134
+ focus: {
135
+ /** Icon color on focus. */
136
+ iconColor: unsafeCSS(`var(--m3e-primary-fab-focus-icon-color, ${DesignToken.color.onPrimary})`),
137
+
138
+ /** Label color on focus. */
139
+ labelTextColor: unsafeCSS(`var(--m3e-primary-fab-focus-label-text-color, ${DesignToken.color.onPrimary})`),
140
+
141
+ /** State layer color on focus. */
142
+ stateLayerColor: unsafeCSS(`var(--m3e-primary-fab-focus-state-layer-color, ${DesignToken.color.onPrimary})`),
143
+
144
+ /**State layer opacity on focus. */
145
+ stateLayerOpacity: unsafeCSS(
146
+ `var(--m3e-primary-fab-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity})`
147
+ ),
148
+
149
+ /** Elevation on focus. */
150
+ containerElevation: unsafeCSS(
151
+ `var(--m3e-primary-fab-focus-container-elevation, ${DesignToken.elevation.level3})`
152
+ ),
153
+
154
+ /** Lowered elevation on focus. */
155
+ loweredContainerElevation: unsafeCSS(
156
+ `var(--m3e-primary-fab-lowered-focus-container-elevation, ${DesignToken.elevation.level2})`
157
+ ),
158
+ },
159
+
160
+ /** Design tokens that control pressed state. */
161
+ pressed: {
162
+ /** Icon color on pressed. */
163
+ iconColor: unsafeCSS(`var(--m3e-primary-fab-pressed-icon-color, ${DesignToken.color.onPrimary})`),
164
+
165
+ /** Label color on pressed. */
166
+ labelTextColor: unsafeCSS(`var(--m3e-primary-fab-pressed-label-text-color, ${DesignToken.color.onPrimary})`),
167
+
168
+ /** State layer color on pressed. */
169
+ stateLayerColor: unsafeCSS(`var(--m3e-primary-fab-pressed-state-layer-color, ${DesignToken.color.onPrimary})`),
170
+
171
+ /** State layer opacity on pressed. */
172
+ stateLayerOpacity: unsafeCSS(
173
+ `var(--m3e-primary-fab-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity})`
174
+ ),
175
+
176
+ /** Elevation on pressed. */
177
+ containerElevation: unsafeCSS(
178
+ `var(--m3e-primary-fab-pressed-container-elevation, ${DesignToken.elevation.level3})`
179
+ ),
180
+
181
+ /** Lowered elevation on pressed. */
182
+ loweredContainerElevation: unsafeCSS(
183
+ `var(--m3e-primary-fab-lowered-pressed-container-elevation, ${DesignToken.elevation.level2})`
184
+ ),
185
+ },
186
+ },
187
+
188
+ /** Design tokens that control the `secondary` variant. */
189
+ secondary: {
190
+ /** Default label color. */
191
+ labelTextColor: unsafeCSS(`var(--m3e-secondary-fab-label-text-color, ${DesignToken.color.onSecondary})`),
192
+
193
+ /** Default icon color. */
194
+ iconColor: unsafeCSS(`var(--m3e-secondary-fab-icon-color, ${DesignToken.color.onSecondary})`),
195
+
196
+ /** Default container background color. */
197
+ containerColor: unsafeCSS(`var(--m3e-secondary-fab-container-color, ${DesignToken.color.secondary})`),
198
+
199
+ /** Resting elevation. */
200
+ containerElevation: unsafeCSS(`var(--m3e-secondary-fab-container-elevation, ${DesignToken.elevation.level3})`),
201
+
202
+ /** Lowered resting elevation. */
203
+ loweredContainerElevation: unsafeCSS(
204
+ `var(--m3e-secondary-fab-lowered-container-elevation, ${DesignToken.elevation.level2})`
205
+ ),
206
+
207
+ /** Design tokens that control disabled state. */
208
+ disabled: {
209
+ /** Container background color when disabled. */
210
+ containerColor: unsafeCSS(`var(--m3e-secondary-fab-disabled-container-color, ${DesignToken.color.onSurface})`),
211
+
212
+ /** Opacity of container when disabled. */
213
+ containerOpacity: unsafeCSS(`var(--m3e-secondary-fab-disabled-container-opacity, 10%)`),
214
+
215
+ /** Icon color when disabled. */
216
+ iconColor: unsafeCSS(`var(--m3e-secondary-fab-disabled-icon-color, ${DesignToken.color.onSurface})`),
217
+
218
+ /** Icon opacity when disabled. */
219
+ iconOpacity: unsafeCSS(`var(--m3e-secondary-fab-disabled-icon-opacity, 38%)`),
220
+
221
+ /** Label color when disabled. */
222
+ labelTextColor: unsafeCSS(`var(--m3e-secondary-fab-disabled-label-text-color, ${DesignToken.color.onSurface})`),
223
+
224
+ /** Label opacity when disabled. */
225
+ labelTextOpacity: unsafeCSS(`var(--m3e-secondary-fab-disabled-label-text-opacity, 38%)`),
226
+
227
+ /** Elevation when disabled. */
228
+ containerElevation: unsafeCSS(
229
+ `var(--m3e-secondary-fab-disabled-container-elevation, ${DesignToken.elevation.level0})`
230
+ ),
231
+
232
+ /** Lowered elevation when disabled. */
233
+ loweredContainerElevation: unsafeCSS(
234
+ `var(--m3e-secondary-fab-lowered-disabled-container-elevation, ${DesignToken.elevation.level0})`
235
+ ),
236
+ },
237
+
238
+ /** Design tokens that control hover state. */
239
+ hover: {
240
+ /** Icon color on hover. */
241
+ iconColor: unsafeCSS(`var(--m3e-secondary-fab-hover-icon-color, ${DesignToken.color.onSecondary})`),
242
+
243
+ /** Label color on hover. */
244
+ labelTextColor: unsafeCSS(`var(--m3e-secondary-fab-hover-label-text-color, ${DesignToken.color.onSecondary})`),
245
+
246
+ /** State layer color on hover. */
247
+ stateLayerColor: unsafeCSS(`var(--m3e-secondary-fab-hover-state-layer-color, ${DesignToken.color.onSecondary})`),
248
+
249
+ /** State layer opacity on hover. */
250
+ stateLayerOpacity: unsafeCSS(
251
+ `var(--m3e-secondary-fab-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity})`
252
+ ),
253
+
254
+ /** Elevation on hover. */
255
+ containerElevation: unsafeCSS(
256
+ `var(--m3e-secondary-fab-hover-container-elevation, ${DesignToken.elevation.level4})`
257
+ ),
258
+
259
+ /** Lowered elevation on hover. */
260
+ loweredContainerElevation: unsafeCSS(
261
+ `var(--m3e-secondary-fab-lowered-hover-container-elevation, ${DesignToken.elevation.level3})`
262
+ ),
263
+ },
264
+
265
+ /** Design tokens that control focus state. */
266
+ focus: {
267
+ /** Icon color on focus. */
268
+ iconColor: unsafeCSS(`var(--m3e-secondary-fab-focus-icon-color, ${DesignToken.color.onSecondary})`),
269
+
270
+ /** Label color on focus. */
271
+ labelTextColor: unsafeCSS(`var(--m3e-secondary-fab-focus-label-text-color, ${DesignToken.color.onSecondary})`),
272
+
273
+ /** State layer color on focus. */
274
+ stateLayerColor: unsafeCSS(`var(--m3e-secondary-fab-focus-state-layer-color, ${DesignToken.color.onSecondary})`),
275
+
276
+ /**State layer opacity on focus. */
277
+ stateLayerOpacity: unsafeCSS(
278
+ `var(--m3e-secondary-fab-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity})`
279
+ ),
280
+
281
+ /** Elevation on focus. */
282
+ containerElevation: unsafeCSS(
283
+ `var(--m3e-secondary-fab-focus-container-elevation, ${DesignToken.elevation.level3})`
284
+ ),
285
+
286
+ /** Lowered elevation on focus. */
287
+ loweredContainerElevation: unsafeCSS(
288
+ `var(--m3e-secondary-fab-lowered-focus-container-elevation, ${DesignToken.elevation.level2})`
289
+ ),
290
+ },
291
+
292
+ /** Design tokens that control pressed state. */
293
+ pressed: {
294
+ /** Icon color on pressed. */
295
+ iconColor: unsafeCSS(`var(--m3e-secondary-fab-pressed-icon-color, ${DesignToken.color.onSecondary})`),
296
+
297
+ /** Label color on pressed. */
298
+ labelTextColor: unsafeCSS(`var(--m3e-secondary-fab-pressed-label-text-color, ${DesignToken.color.onSecondary})`),
299
+
300
+ /** State layer color on pressed. */
301
+ stateLayerColor: unsafeCSS(
302
+ `var(--m3e-secondary-fab-pressed-state-layer-color, ${DesignToken.color.onSecondary})`
303
+ ),
304
+
305
+ /** State layer opacity on pressed. */
306
+ stateLayerOpacity: unsafeCSS(
307
+ `var(--m3e-secondary-fab-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity})`
308
+ ),
309
+
310
+ /** Elevation on pressed. */
311
+ containerElevation: unsafeCSS(
312
+ `var(--m3e-secondary-fab-pressed-container-elevation, ${DesignToken.elevation.level3})`
313
+ ),
314
+
315
+ /** Lowered elevation on pressed. */
316
+ loweredContainerElevation: unsafeCSS(
317
+ `var(--m3e-secondary-fab-lowered-pressed-container-elevation, ${DesignToken.elevation.level2})`
318
+ ),
319
+ },
320
+ },
321
+
322
+ /** Design tokens that control the `tertiary` variant. */
323
+ tertiary: {
324
+ /** Default label color. */
325
+ labelTextColor: unsafeCSS(`var(--m3e-tertiary-fab-label-text-color, ${DesignToken.color.onTertiary})`),
326
+
327
+ /** Default icon color. */
328
+ iconColor: unsafeCSS(`var(--m3e-tertiary-fab-icon-color, ${DesignToken.color.onTertiary})`),
329
+
330
+ /** Default container background color. */
331
+ containerColor: unsafeCSS(`var(--m3e-tertiary-fab-container-color, ${DesignToken.color.tertiary})`),
332
+
333
+ /** Resting elevation. */
334
+ containerElevation: unsafeCSS(`var(--m3e-tertiary-fab-container-elevation, ${DesignToken.elevation.level3})`),
335
+
336
+ /** Lowered resting elevation. */
337
+ loweredContainerElevation: unsafeCSS(
338
+ `var(--m3e-tertiary-fab-lowered-container-elevation, ${DesignToken.elevation.level2})`
339
+ ),
340
+
341
+ /** Design tokens that control disabled state. */
342
+ disabled: {
343
+ /** Container background color when disabled. */
344
+ containerColor: unsafeCSS(`var(--m3e-tertiary-fab-disabled-container-color, ${DesignToken.color.onSurface})`),
345
+
346
+ /** Opacity of container when disabled. */
347
+ containerOpacity: unsafeCSS(`var(--m3e-tertiary-fab-disabled-container-opacity, 10%)`),
348
+
349
+ /** Icon color when disabled. */
350
+ iconColor: unsafeCSS(`var(--m3e-tertiary-fab-disabled-icon-color, ${DesignToken.color.onSurface})`),
351
+
352
+ /** Icon opacity when disabled. */
353
+ iconOpacity: unsafeCSS(`var(--m3e-tertiary-fab-disabled-icon-opacity, 38%)`),
354
+
355
+ /** Label color when disabled. */
356
+ labelTextColor: unsafeCSS(`var(--m3e-tertiary-fab-disabled-label-text-color, ${DesignToken.color.onSurface})`),
357
+
358
+ /** Label opacity when disabled. */
359
+ labelTextOpacity: unsafeCSS(`var(--m3e-tertiary-fab-disabled-label-text-opacity, 38%)`),
360
+
361
+ /** Elevation when disabled. */
362
+ containerElevation: unsafeCSS(
363
+ `var(--m3e-tertiary-fab-disabled-container-elevation, ${DesignToken.elevation.level0})`
364
+ ),
365
+
366
+ /** Lowered elevation when disabled. */
367
+ loweredContainerElevation: unsafeCSS(
368
+ `var(--m3e-tertiary-fab-lowered-disabled-container-elevation, ${DesignToken.elevation.level0})`
369
+ ),
370
+ },
371
+
372
+ /** Design tokens that control hover state. */
373
+ hover: {
374
+ /** Icon color on hover. */
375
+ iconColor: unsafeCSS(`var(--m3e-tertiary-fab-hover-icon-color, ${DesignToken.color.onTertiary})`),
376
+
377
+ /** Label color on hover. */
378
+ labelTextColor: unsafeCSS(`var(--m3e-tertiary-fab-hover-label-text-color, ${DesignToken.color.onTertiary})`),
379
+
380
+ /** State layer color on hover. */
381
+ stateLayerColor: unsafeCSS(`var(--m3e-tertiary-fab-hover-state-layer-color, ${DesignToken.color.onTertiary})`),
382
+
383
+ /** State layer opacity on hover. */
384
+ stateLayerOpacity: unsafeCSS(
385
+ `var(--m3e-tertiary-fab-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity})`
386
+ ),
387
+
388
+ /** Elevation on hover. */
389
+ containerElevation: unsafeCSS(
390
+ `var(--m3e-tertiary-fab-hover-container-elevation, ${DesignToken.elevation.level4})`
391
+ ),
392
+
393
+ /** Lowered elevation on hover. */
394
+ loweredContainerElevation: unsafeCSS(
395
+ `var(--m3e-tertiary-fab-lowered-hover-container-elevation, ${DesignToken.elevation.level3})`
396
+ ),
397
+ },
398
+
399
+ /** Design tokens that control focus state. */
400
+ focus: {
401
+ /** Icon color on focus. */
402
+ iconColor: unsafeCSS(`var(--m3e-tertiary-fab-focus-icon-color, ${DesignToken.color.onTertiary})`),
403
+
404
+ /** Label color on focus. */
405
+ labelTextColor: unsafeCSS(`var(--m3e-tertiary-fab-focus-label-text-color, ${DesignToken.color.onTertiary})`),
406
+
407
+ /** State layer color on focus. */
408
+ stateLayerColor: unsafeCSS(`var(--m3e-tertiary-fab-focus-state-layer-color, ${DesignToken.color.onTertiary})`),
409
+
410
+ /**State layer opacity on focus. */
411
+ stateLayerOpacity: unsafeCSS(
412
+ `var(--m3e-tertiary-fab-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity})`
413
+ ),
414
+
415
+ /** Elevation on focus. */
416
+ containerElevation: unsafeCSS(
417
+ `var(--m3e-tertiary-fab-focus-container-elevation, ${DesignToken.elevation.level3})`
418
+ ),
419
+
420
+ /** Lowered elevation on focus. */
421
+ loweredContainerElevation: unsafeCSS(
422
+ `var(--m3e-tertiary-fab-lowered-focus-container-elevation, ${DesignToken.elevation.level2})`
423
+ ),
424
+ },
425
+
426
+ /** Design tokens that control pressed state. */
427
+ pressed: {
428
+ /** Icon color on pressed. */
429
+ iconColor: unsafeCSS(`var(--m3e-tertiary-fab-pressed-icon-color, ${DesignToken.color.onTertiary})`),
430
+
431
+ /** Label color on pressed. */
432
+ labelTextColor: unsafeCSS(`var(--m3e-tertiary-fab-pressed-label-text-color, ${DesignToken.color.onTertiary})`),
433
+
434
+ /** State layer color on pressed. */
435
+ stateLayerColor: unsafeCSS(`var(--m3e-tertiary-fab-pressed-state-layer-color, ${DesignToken.color.onTertiary})`),
436
+
437
+ /** State layer opacity on pressed. */
438
+ stateLayerOpacity: unsafeCSS(
439
+ `var(--m3e-tertiary-fab-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity})`
440
+ ),
441
+
442
+ /** Elevation on pressed. */
443
+ containerElevation: unsafeCSS(
444
+ `var(--m3e-tertiary-fab-pressed-container-elevation, ${DesignToken.elevation.level3})`
445
+ ),
446
+
447
+ /** Lowered elevation on pressed. */
448
+ loweredContainerElevation: unsafeCSS(
449
+ `var(--m3e-tertiary-fab-lowered-pressed-container-elevation, ${DesignToken.elevation.level2})`
450
+ ),
451
+ },
452
+ },
453
+ /** Design tokens that control the `primary-container` variant. */
454
+ "primary-container": {
455
+ /** Default label color. */
456
+ labelTextColor: unsafeCSS(
457
+ `var(--m3e-primary-container-fab-label-text-color, ${DesignToken.color.onPrimaryContainer})`
458
+ ),
459
+
460
+ /** Default icon color. */
461
+ iconColor: unsafeCSS(`var(--m3e-primary-container-fab-icon-color, ${DesignToken.color.onPrimaryContainer})`),
462
+
463
+ /** Default container background color. */
464
+ containerColor: unsafeCSS(
465
+ `var(--m3e-primary-container-fab-container-color, ${DesignToken.color.primaryContainer})`
466
+ ),
467
+
468
+ /** Resting elevation. */
469
+ containerElevation: unsafeCSS(
470
+ `var(--m3e-primary-container-fab-container-elevation, ${DesignToken.elevation.level3})`
471
+ ),
472
+
473
+ /** Lowered resting elevation. */
474
+ loweredContainerElevation: unsafeCSS(
475
+ `var(--m3e-primary-container-fab-lowered-container-elevation, ${DesignToken.elevation.level2})`
476
+ ),
477
+
478
+ /** Design tokens that control disabled state. */
479
+ disabled: {
480
+ /** Container background color when disabled. */
481
+ containerColor: unsafeCSS(
482
+ `var(--m3e-primary-container-fab-disabled-container-color, ${DesignToken.color.onSurface})`
483
+ ),
484
+
485
+ /** Opacity of container when disabled. */
486
+ containerOpacity: unsafeCSS(`var(--m3e-primary-container-fab-disabled-container-opacity, 10%)`),
487
+
488
+ /** Icon color when disabled. */
489
+ iconColor: unsafeCSS(`var(--m3e-primary-container-fab-disabled-icon-color, ${DesignToken.color.onSurface})`),
490
+
491
+ /** Icon opacity when disabled. */
492
+ iconOpacity: unsafeCSS(`var(--m3e-primary-container-fab-disabled-icon-opacity, 38%)`),
493
+
494
+ /** Label color when disabled. */
495
+ labelTextColor: unsafeCSS(
496
+ `var(--m3e-primary-container-fab-disabled-label-text-color, ${DesignToken.color.onSurface})`
497
+ ),
498
+
499
+ /** Label opacity when disabled. */
500
+ labelTextOpacity: unsafeCSS(`var(--m3e-primary-container-fab-disabled-label-text-opacity, 38%)`),
501
+
502
+ /** Elevation when disabled. */
503
+ containerElevation: unsafeCSS(
504
+ `var(--m3e-primary-container-fab-disabled-container-elevation, ${DesignToken.elevation.level0})`
505
+ ),
506
+
507
+ /** Lowered elevation when disabled. */
508
+ loweredContainerElevation: unsafeCSS(
509
+ `var(--m3e-primary-container-fab-lowered-disabled-container-elevation, ${DesignToken.elevation.level0})`
510
+ ),
511
+ },
512
+
513
+ /** Design tokens that control hover state. */
514
+ hover: {
515
+ /** Icon color on hover. */
516
+ iconColor: unsafeCSS(
517
+ `var(--m3e-primary-container-fab-hover-icon-color, ${DesignToken.color.onPrimaryContainer})`
518
+ ),
519
+
520
+ /** Label color on hover. */
521
+ labelTextColor: unsafeCSS(
522
+ `var(--m3e-primary-container-fab-hover-label-text-color, ${DesignToken.color.onPrimaryContainer})`
523
+ ),
524
+
525
+ /** State layer color on hover. */
526
+ stateLayerColor: unsafeCSS(
527
+ `var(--m3e-primary-container-fab-hover-state-layer-color, ${DesignToken.color.onPrimaryContainer})`
528
+ ),
529
+
530
+ /** State layer opacity on hover. */
531
+ stateLayerOpacity: unsafeCSS(
532
+ `var(--m3e-primary-container-fab-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity})`
533
+ ),
534
+
535
+ /** Elevation on hover. */
536
+ containerElevation: unsafeCSS(
537
+ `var(--m3e-primary-container-fab-hover-container-elevation, ${DesignToken.elevation.level4})`
538
+ ),
539
+
540
+ /** Lowered elevation on hover. */
541
+ loweredContainerElevation: unsafeCSS(
542
+ `var(--m3e-primary-container-fab-lowered-hover-container-elevation, ${DesignToken.elevation.level3})`
543
+ ),
544
+ },
545
+
546
+ /** Design tokens that control focus state. */
547
+ focus: {
548
+ /** Icon color on focus. */
549
+ iconColor: unsafeCSS(
550
+ `var(--m3e-primary-container-fab-focus-icon-color, ${DesignToken.color.onPrimaryContainer})`
551
+ ),
552
+
553
+ /** Label color on focus. */
554
+ labelTextColor: unsafeCSS(
555
+ `var(--m3e-primary-container-fab-focus-label-text-color, ${DesignToken.color.onPrimaryContainer})`
556
+ ),
557
+
558
+ /** State layer color on focus. */
559
+ stateLayerColor: unsafeCSS(
560
+ `var(--m3e-primary-container-fab-focus-state-layer-color, ${DesignToken.color.onPrimaryContainer})`
561
+ ),
562
+
563
+ /**State layer opacity on focus. */
564
+ stateLayerOpacity: unsafeCSS(
565
+ `var(--m3e-primary-container-fab-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity})`
566
+ ),
567
+
568
+ /** Elevation on focus. */
569
+ containerElevation: unsafeCSS(
570
+ `var(--m3e-primary-container-fab-focus-container-elevation, ${DesignToken.elevation.level3})`
571
+ ),
572
+
573
+ /** Lowered elevation on focus. */
574
+ loweredContainerElevation: unsafeCSS(
575
+ `var(--m3e-primary-container-fab-lowered-focus-container-elevation, ${DesignToken.elevation.level2})`
576
+ ),
577
+ },
578
+
579
+ /** Design tokens that control pressed state. */
580
+ pressed: {
581
+ /** Icon color on pressed. */
582
+ iconColor: unsafeCSS(
583
+ `var(--m3e-primary-container-fab-pressed-icon-color, ${DesignToken.color.onPrimaryContainer})`
584
+ ),
585
+
586
+ /** Label color on pressed. */
587
+ labelTextColor: unsafeCSS(
588
+ `var(--m3e-primary-container-fab-pressed-label-text-color, ${DesignToken.color.onPrimaryContainer})`
589
+ ),
590
+
591
+ /** State layer color on pressed. */
592
+ stateLayerColor: unsafeCSS(
593
+ `var(--m3e-primary-container-fab-pressed-state-layer-color, ${DesignToken.color.onPrimaryContainer})`
594
+ ),
595
+
596
+ /** State layer opacity on pressed. */
597
+ stateLayerOpacity: unsafeCSS(
598
+ `var(--m3e-primary-container-fab-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity})`
599
+ ),
600
+
601
+ /** Elevation on pressed. */
602
+ containerElevation: unsafeCSS(
603
+ `var(--m3e-primary-container-fab-pressed-container-elevation, ${DesignToken.elevation.level3})`
604
+ ),
605
+
606
+ /** Lowered elevation on pressed. */
607
+ loweredContainerElevation: unsafeCSS(
608
+ `var(--m3e-primary-container-fab-lowered-pressed-container-elevation, ${DesignToken.elevation.level2})`
609
+ ),
610
+ },
611
+ },
612
+
613
+ /** Design tokens that control the `secondary-container` variant. */
614
+ "secondary-container": {
615
+ /** Default label color. */
616
+ labelTextColor: unsafeCSS(
617
+ `var(--m3e-secondary-container-fab-label-text-color, ${DesignToken.color.onSecondaryContainer})`
618
+ ),
619
+
620
+ /** Default icon color. */
621
+ iconColor: unsafeCSS(`var(--m3e-secondary-container-fab-icon-color, ${DesignToken.color.onSecondaryContainer})`),
622
+
623
+ /** Default container background color. */
624
+ containerColor: unsafeCSS(
625
+ `var(--m3e-secondary-container-fab-container-color, ${DesignToken.color.secondaryContainer})`
626
+ ),
627
+
628
+ /** Resting elevation. */
629
+ containerElevation: unsafeCSS(
630
+ `var(--m3e-secondary-container-fab-container-elevation, ${DesignToken.elevation.level3})`
631
+ ),
632
+
633
+ /** Lowered resting elevation. */
634
+ loweredContainerElevation: unsafeCSS(
635
+ `var(--m3e-secondary-container-fab-lowered-container-elevation, ${DesignToken.elevation.level2})`
636
+ ),
637
+
638
+ /** Design tokens that control disabled state. */
639
+ disabled: {
640
+ /** Container background color when disabled. */
641
+ containerColor: unsafeCSS(
642
+ `var(--m3e-secondary-container-fab-disabled-container-color, ${DesignToken.color.onSurface})`
643
+ ),
644
+
645
+ /** Opacity of container when disabled. */
646
+ containerOpacity: unsafeCSS(`var(--m3e-secondary-container-fab-disabled-container-opacity, 10%)`),
647
+
648
+ /** Icon color when disabled. */
649
+ iconColor: unsafeCSS(`var(--m3e-secondary-container-fab-disabled-icon-color, ${DesignToken.color.onSurface})`),
650
+
651
+ /** Icon opacity when disabled. */
652
+ iconOpacity: unsafeCSS(`var(--m3e-secondary-container-fab-disabled-icon-opacity, 38%)`),
653
+
654
+ /** Label color when disabled. */
655
+ labelTextColor: unsafeCSS(
656
+ `var(--m3e-secondary-container-fab-disabled-label-text-color, ${DesignToken.color.onSurface})`
657
+ ),
658
+
659
+ /** Label opacity when disabled. */
660
+ labelTextOpacity: unsafeCSS(`var(--m3e-secondary-container-fab-disabled-label-text-opacity, 38%)`),
661
+
662
+ /** Elevation when disabled. */
663
+ containerElevation: unsafeCSS(
664
+ `var(--m3e-secondary-container-fab-disabled-container-elevation, ${DesignToken.elevation.level0})`
665
+ ),
666
+
667
+ /** Lowered elevation when disabled. */
668
+ loweredContainerElevation: unsafeCSS(
669
+ `var(--m3e-secondary-container-fab-lowered-disabled-container-elevation, ${DesignToken.elevation.level0})`
670
+ ),
671
+ },
672
+
673
+ /** Design tokens that control hover state. */
674
+ hover: {
675
+ /** Icon color on hover. */
676
+ iconColor: unsafeCSS(
677
+ `var(--m3e-secondary-container-fab-hover-icon-color, ${DesignToken.color.onSecondaryContainer})`
678
+ ),
679
+
680
+ /** Label color on hover. */
681
+ labelTextColor: unsafeCSS(
682
+ `var(--m3e-secondary-container-fab-hover-label-text-color, ${DesignToken.color.onSecondaryContainer})`
683
+ ),
684
+
685
+ /** State layer color on hover. */
686
+ stateLayerColor: unsafeCSS(
687
+ `var(--m3e-secondary-container-fab-hover-state-layer-color, ${DesignToken.color.onSecondaryContainer})`
688
+ ),
689
+
690
+ /** State layer opacity on hover. */
691
+ stateLayerOpacity: unsafeCSS(
692
+ `var(--m3e-secondary-container-fab-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity})`
693
+ ),
694
+
695
+ /** Elevation on hover. */
696
+ containerElevation: unsafeCSS(
697
+ `var(--m3e-secondary-container-fab-hover-container-elevation, ${DesignToken.elevation.level4})`
698
+ ),
699
+
700
+ /** Lowered elevation on hover. */
701
+ loweredContainerElevation: unsafeCSS(
702
+ `var(--m3e-secondary-container-fab-lowered-hover-container-elevation, ${DesignToken.elevation.level3})`
703
+ ),
704
+ },
705
+
706
+ /** Design tokens that control focus state. */
707
+ focus: {
708
+ /** Icon color on focus. */
709
+ iconColor: unsafeCSS(
710
+ `var(--m3e-secondary-container-fab-focus-icon-color, ${DesignToken.color.onSecondaryContainer})`
711
+ ),
712
+
713
+ /** Label color on focus. */
714
+ labelTextColor: unsafeCSS(
715
+ `var(--m3e-secondary-container-fab-focus-label-text-color, ${DesignToken.color.onSecondaryContainer})`
716
+ ),
717
+
718
+ /** State layer color on focus. */
719
+ stateLayerColor: unsafeCSS(
720
+ `var(--m3e-secondary-container-fab-focus-state-layer-color, ${DesignToken.color.onSecondaryContainer})`
721
+ ),
722
+
723
+ /**State layer opacity on focus. */
724
+ stateLayerOpacity: unsafeCSS(
725
+ `var(--m3e-secondary-container-fab-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity})`
726
+ ),
727
+
728
+ /** Elevation on focus. */
729
+ containerElevation: unsafeCSS(
730
+ `var(--m3e-secondary-container-fab-focus-container-elevation, ${DesignToken.elevation.level3})`
731
+ ),
732
+
733
+ /** Lowered elevation on focus. */
734
+ loweredContainerElevation: unsafeCSS(
735
+ `var(--m3e-secondary-container-fab-lowered-focus-container-elevation, ${DesignToken.elevation.level2})`
736
+ ),
737
+ },
738
+
739
+ /** Design tokens that control pressed state. */
740
+ pressed: {
741
+ /** Icon color on pressed. */
742
+ iconColor: unsafeCSS(
743
+ `var(--m3e-secondary-container-fab-pressed-icon-color, ${DesignToken.color.onSecondaryContainer})`
744
+ ),
745
+
746
+ /** Label color on pressed. */
747
+ labelTextColor: unsafeCSS(
748
+ `var(--m3e-secondary-container-fab-pressed-label-text-color, ${DesignToken.color.onSecondaryContainer})`
749
+ ),
750
+
751
+ /** State layer color on pressed. */
752
+ stateLayerColor: unsafeCSS(
753
+ `var(--m3e-secondary-container-fab-pressed-state-layer-color, ${DesignToken.color.onSecondaryContainer})`
754
+ ),
755
+
756
+ /** State layer opacity on pressed. */
757
+ stateLayerOpacity: unsafeCSS(
758
+ `var(--m3e-secondary-container-fab-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity})`
759
+ ),
760
+
761
+ /** Elevation on pressed. */
762
+ containerElevation: unsafeCSS(
763
+ `var(--m3e-secondary-container-fab-pressed-container-elevation, ${DesignToken.elevation.level3})`
764
+ ),
765
+
766
+ /** Lowered elevation on pressed. */
767
+ loweredContainerElevation: unsafeCSS(
768
+ `var(--m3e-secondary-container-fab-lowered-pressed-container-elevation, ${DesignToken.elevation.level2})`
769
+ ),
770
+ },
771
+ },
772
+
773
+ /** Design tokens that control the `tertiary-container` variant. */
774
+ "tertiary-container": {
775
+ /** Default label color. */
776
+ labelTextColor: unsafeCSS(
777
+ `var(--m3e-tertiary-container-fab-label-text-color, ${DesignToken.color.onTertiaryContainer})`
778
+ ),
779
+
780
+ /** Default icon color. */
781
+ iconColor: unsafeCSS(`var(--m3e-tertiary-container-fab-icon-color, ${DesignToken.color.onTertiaryContainer})`),
782
+
783
+ /** Default container background color. */
784
+ containerColor: unsafeCSS(
785
+ `var(--m3e-tertiary-container-fab-container-color, ${DesignToken.color.tertiaryContainer})`
786
+ ),
787
+
788
+ /** Resting elevation. */
789
+ containerElevation: unsafeCSS(
790
+ `var(--m3e-tertiary-container-fab-container-elevation, ${DesignToken.elevation.level3})`
791
+ ),
792
+
793
+ /** Lowered resting elevation. */
794
+ loweredContainerElevation: unsafeCSS(
795
+ `var(--m3e-tertiary-container-fab-lowered-container-elevation, ${DesignToken.elevation.level2})`
796
+ ),
797
+
798
+ /** Design tokens that control disabled state. */
799
+ disabled: {
800
+ /** Container background color when disabled. */
801
+ containerColor: unsafeCSS(
802
+ `var(--m3e-tertiary-container-fab-disabled-container-color, ${DesignToken.color.onSurface})`
803
+ ),
804
+
805
+ /** Opacity of container when disabled. */
806
+ containerOpacity: unsafeCSS(`var(--m3e-tertiary-container-fab-disabled-container-opacity, 10%)`),
807
+
808
+ /** Icon color when disabled. */
809
+ iconColor: unsafeCSS(`var(--m3e-tertiary-container-fab-disabled-icon-color, ${DesignToken.color.onSurface})`),
810
+
811
+ /** Icon opacity when disabled. */
812
+ iconOpacity: unsafeCSS(`var(--m3e-tertiary-container-fab-disabled-icon-opacity, 38%)`),
813
+
814
+ /** Label color when disabled. */
815
+ labelTextColor: unsafeCSS(
816
+ `var(--m3e-tertiary-container-fab-disabled-label-text-color, ${DesignToken.color.onSurface})`
817
+ ),
818
+
819
+ /** Label opacity when disabled. */
820
+ labelTextOpacity: unsafeCSS(`var(--m3e-tertiary-container-fab-disabled-label-text-opacity, 38%)`),
821
+
822
+ /** Elevation when disabled. */
823
+ containerElevation: unsafeCSS(
824
+ `var(--m3e-tertiary-container-fab-disabled-container-elevation, ${DesignToken.elevation.level0})`
825
+ ),
826
+
827
+ /** Lowered elevation when disabled. */
828
+ loweredContainerElevation: unsafeCSS(
829
+ `var(--m3e-tertiary-container-fab-lowered-disabled-container-elevation, ${DesignToken.elevation.level0})`
830
+ ),
831
+ },
832
+
833
+ /** Design tokens that control hover state. */
834
+ hover: {
835
+ /** Icon color on hover. */
836
+ iconColor: unsafeCSS(
837
+ `var(--m3e-tertiary-container-fab-hover-icon-color, ${DesignToken.color.onTertiaryContainer})`
838
+ ),
839
+
840
+ /** Label color on hover. */
841
+ labelTextColor: unsafeCSS(
842
+ `var(--m3e-tertiary-container-fab-hover-label-text-color, ${DesignToken.color.onTertiaryContainer})`
843
+ ),
844
+
845
+ /** State layer color on hover. */
846
+ stateLayerColor: unsafeCSS(
847
+ `var(--m3e-tertiary-container-fab-hover-state-layer-color, ${DesignToken.color.onTertiaryContainer})`
848
+ ),
849
+
850
+ /** State layer opacity on hover. */
851
+ stateLayerOpacity: unsafeCSS(
852
+ `var(--m3e-tertiary-container-fab-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity})`
853
+ ),
854
+
855
+ /** Elevation on hover. */
856
+ containerElevation: unsafeCSS(
857
+ `var(--m3e-tertiary-container-fab-hover-container-elevation, ${DesignToken.elevation.level4})`
858
+ ),
859
+
860
+ /** Lowered elevation on hover. */
861
+ loweredContainerElevation: unsafeCSS(
862
+ `var(--m3e-tertiary-container-fab-lowered-hover-container-elevation, ${DesignToken.elevation.level3})`
863
+ ),
864
+ },
865
+
866
+ /** Design tokens that control focus state. */
867
+ focus: {
868
+ /** Icon color on focus. */
869
+ iconColor: unsafeCSS(
870
+ `var(--m3e-tertiary-container-fab-focus-icon-color, ${DesignToken.color.onTertiaryContainer})`
871
+ ),
872
+
873
+ /** Label color on focus. */
874
+ labelTextColor: unsafeCSS(
875
+ `var(--m3e-tertiary-container-fab-focus-label-text-color, ${DesignToken.color.onTertiaryContainer})`
876
+ ),
877
+
878
+ /** State layer color on focus. */
879
+ stateLayerColor: unsafeCSS(
880
+ `var(--m3e-tertiary-container-fab-focus-state-layer-color, ${DesignToken.color.onTertiaryContainer})`
881
+ ),
882
+
883
+ /**State layer opacity on focus. */
884
+ stateLayerOpacity: unsafeCSS(
885
+ `var(--m3e-tertiary-container-fab-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity})`
886
+ ),
887
+
888
+ /** Elevation on focus. */
889
+ containerElevation: unsafeCSS(
890
+ `var(--m3e-tertiary-container-fab-focus-container-elevation, ${DesignToken.elevation.level3})`
891
+ ),
892
+
893
+ /** Lowered elevation on focus. */
894
+ loweredContainerElevation: unsafeCSS(
895
+ `var(--m3e-tertiary-container-fab-lowered-focus-container-elevation, ${DesignToken.elevation.level2})`
896
+ ),
897
+ },
898
+
899
+ /** Design tokens that control pressed state. */
900
+ pressed: {
901
+ /** Icon color on pressed. */
902
+ iconColor: unsafeCSS(
903
+ `var(--m3e-tertiary-container-fab-pressed-icon-color, ${DesignToken.color.onTertiaryContainer})`
904
+ ),
905
+
906
+ /** Label color on pressed. */
907
+ labelTextColor: unsafeCSS(
908
+ `var(--m3e-tertiary-container-fab-pressed-label-text-color, ${DesignToken.color.onTertiaryContainer})`
909
+ ),
910
+
911
+ /** State layer color on pressed. */
912
+ stateLayerColor: unsafeCSS(
913
+ `var(--m3e-tertiary-container-fab-pressed-state-layer-color, ${DesignToken.color.onTertiaryContainer})`
914
+ ),
915
+
916
+ /** State layer opacity on pressed. */
917
+ stateLayerOpacity: unsafeCSS(
918
+ `var(--m3e-tertiary-container-fab-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity})`
919
+ ),
920
+
921
+ /** Elevation on pressed. */
922
+ containerElevation: unsafeCSS(
923
+ `var(--m3e-tertiary-container-fab-pressed-container-elevation, ${DesignToken.elevation.level3})`
924
+ ),
925
+
926
+ /** Lowered elevation on pressed. */
927
+ loweredContainerElevation: unsafeCSS(
928
+ `var(--m3e-tertiary-container-fab-lowered-pressed-container-elevation, ${DesignToken.elevation.level2})`
929
+ ),
930
+ },
931
+ },
932
+ /** Design tokens that control the `surface` variant. */
933
+ surface: {
934
+ /** Default label color. */
935
+ labelTextColor: unsafeCSS(`var(--m3e-surface-fab-label-text-color, ${DesignToken.color.primary})`),
936
+
937
+ /** Default icon color. */
938
+ iconColor: unsafeCSS(`var(--m3e-surface-fab-icon-color, ${DesignToken.color.primary})`),
939
+
940
+ /** Default container background color. */
941
+ containerColor: unsafeCSS(`var(--m3e-surface-fab-container-color, ${DesignToken.color.surfaceContainerHigh})`),
942
+
943
+ /** Resting elevation. */
944
+ containerElevation: unsafeCSS(`var(--m3e-surface-fab-container-elevation, ${DesignToken.elevation.level3})`),
945
+
946
+ /** Lowered resting elevation. */
947
+ loweredContainerElevation: unsafeCSS(
948
+ `var(--m3e-surface-fab-lowered-container-elevation, ${DesignToken.elevation.level2})`
949
+ ),
950
+
951
+ /** Lowered container background color. */
952
+ loweredContainerColor: unsafeCSS(
953
+ `var(--m3e-surface-fab-lowered-container-color, ${DesignToken.color.surfaceContainerLow})`
954
+ ),
955
+
956
+ /** Design tokens that control disabled state. */
957
+ disabled: {
958
+ /** Container background color when disabled. */
959
+ containerColor: unsafeCSS(`var(--m3e-surface-fab-disabled-container-color, ${DesignToken.color.onSurface})`),
960
+
961
+ /** Opacity of container when disabled. */
962
+ containerOpacity: unsafeCSS(`var(--m3e-surface-fab-disabled-container-opacity, 10%)`),
963
+
964
+ /** Icon color when disabled. */
965
+ iconColor: unsafeCSS(`var(--m3e-surface-fab-disabled-icon-color, ${DesignToken.color.onSurface})`),
966
+
967
+ /** Icon opacity when disabled. */
968
+ iconOpacity: unsafeCSS(`var(--m3e-surface-fab-disabled-icon-opacity, 38%)`),
969
+
970
+ /** Label color when disabled. */
971
+ labelTextColor: unsafeCSS(`var(--m3e-surface-fab-disabled-label-text-color, ${DesignToken.color.onSurface})`),
972
+
973
+ /** Label opacity when disabled. */
974
+ labelTextOpacity: unsafeCSS(`var(--m3e-surface-fab-disabled-label-text-opacity, 38%)`),
975
+
976
+ /** Elevation when disabled. */
977
+ containerElevation: unsafeCSS(
978
+ `var(--m3e-surface-fab-disabled-container-elevation, ${DesignToken.elevation.level0})`
979
+ ),
980
+
981
+ /** Lowered elevation when disabled. */
982
+ loweredContainerElevation: unsafeCSS(
983
+ `var(--m3e-surface-fab-lowered-disabled-container-elevation, ${DesignToken.elevation.level0})`
984
+ ),
985
+ },
986
+
987
+ /** Design tokens that control hover state. */
988
+ hover: {
989
+ /** Icon color on hover. */
990
+ iconColor: unsafeCSS(`var(--m3e-surface-fab-hover-icon-color, ${DesignToken.color.primary})`),
991
+
992
+ /** Label color on hover. */
993
+ labelTextColor: unsafeCSS(`var(--m3e-surface-fab-hover-label-text-color, ${DesignToken.color.primary})`),
994
+
995
+ /** State layer color on hover. */
996
+ stateLayerColor: unsafeCSS(`var(--m3e-surface-fab-hover-state-layer-color, ${DesignToken.color.primary})`),
997
+
998
+ /** State layer opacity on hover. */
999
+ stateLayerOpacity: unsafeCSS(
1000
+ `var(--m3e-surface-fab-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity})`
1001
+ ),
1002
+
1003
+ /** Elevation on hover. */
1004
+ containerElevation: unsafeCSS(
1005
+ `var(--m3e-surface-fab-hover-container-elevation, ${DesignToken.elevation.level4})`
1006
+ ),
1007
+
1008
+ /** Lowered elevation on hover. */
1009
+ loweredContainerElevation: unsafeCSS(
1010
+ `var(--m3e-surface-fab-lowered-hover-container-elevation, ${DesignToken.elevation.level3})`
1011
+ ),
1012
+ },
1013
+
1014
+ /** Design tokens that control focus state. */
1015
+ focus: {
1016
+ /** Icon color on focus. */
1017
+ iconColor: unsafeCSS(`var(--m3e-surface-fab-focus-icon-color, ${DesignToken.color.primary})`),
1018
+
1019
+ /** Label color on focus. */
1020
+ labelTextColor: unsafeCSS(`var(--m3e-surface-fab-focus-label-text-color, ${DesignToken.color.primary})`),
1021
+
1022
+ /** State layer color on focus. */
1023
+ stateLayerColor: unsafeCSS(`var(--m3e-surface-fab-focus-state-layer-color, ${DesignToken.color.primary})`),
1024
+
1025
+ /**State layer opacity on focus. */
1026
+ stateLayerOpacity: unsafeCSS(
1027
+ `var(--m3e-surface-fab-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity})`
1028
+ ),
1029
+
1030
+ /** Elevation on focus. */
1031
+ containerElevation: unsafeCSS(
1032
+ `var(--m3e-surface-fab-focus-container-elevation, ${DesignToken.elevation.level3})`
1033
+ ),
1034
+
1035
+ /** Lowered elevation on focus. */
1036
+ loweredContainerElevation: unsafeCSS(
1037
+ `var(--m3e-surface-fab-lowered-focus-container-elevation, ${DesignToken.elevation.level2})`
1038
+ ),
1039
+ },
1040
+
1041
+ /** Design tokens that control pressed state. */
1042
+ pressed: {
1043
+ /** Icon color on pressed. */
1044
+ iconColor: unsafeCSS(`var(--m3e-surface-fab-pressed-icon-color, ${DesignToken.color.primary})`),
1045
+
1046
+ /** Label color on pressed. */
1047
+ labelTextColor: unsafeCSS(`var(--m3e-surface-fab-pressed-label-text-color, ${DesignToken.color.primary})`),
1048
+
1049
+ /** State layer color on pressed. */
1050
+ stateLayerColor: unsafeCSS(`var(--m3e-surface-fab-pressed-state-layer-color, ${DesignToken.color.primary})`),
1051
+
1052
+ /** State layer opacity on pressed. */
1053
+ stateLayerOpacity: unsafeCSS(
1054
+ `var(--m3e-surface-fab-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity})`
1055
+ ),
1056
+
1057
+ /** Elevation on pressed. */
1058
+ containerElevation: unsafeCSS(
1059
+ `var(--m3e-surface-fab-pressed-container-elevation, ${DesignToken.elevation.level3})`
1060
+ ),
1061
+
1062
+ /** Lowered elevation on pressed. */
1063
+ loweredContainerElevation: unsafeCSS(
1064
+ `var(--m3e-surface-fab-lowered-pressed-container-elevation, ${DesignToken.elevation.level2})`
1065
+ ),
1066
+ },
1067
+ },
1068
+ } as const;