1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/* Switch component — toggle control with sliding thumb */
.mui-switch-wrap {
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
.mui-switch {
width: 2.75rem;
height: 1.5rem;
border: none;
border-radius: var(--mui-radius-full);
background: var(--mui-bg-input);
position: relative;
cursor: pointer;
padding: 0;
transition: background-color var(--mui-transition);
}
.mui-switch[aria-checked="true"] {
background: var(--mui-accent);
}
.mui-switch__thumb {
position: absolute;
top: 0.125rem;
inset-inline-start: 0.125rem;
width: 1.25rem;
height: 1.25rem;
background: white;
border-radius: var(--mui-radius-full);
transition: transform var(--mui-transition);
display: block;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.mui-switch[aria-checked="true"] .mui-switch__thumb {
transform: translateX(1.25rem);
}
/* Flip thumb travel in RTL — the "on" state should slide toward the
inline-end (reading-direction end), which is physical right in LTR
and physical left in RTL. */
:dir(rtl) .mui-switch[aria-checked="true"] .mui-switch__thumb {
transform: translateX(-1.25rem);
}
.mui-switch:disabled,
.mui-switch[disabled] {
opacity: 0.5;
cursor: not-allowed;
pointer-events: none;
}
.mui-switch:focus-visible {
outline: none;
box-shadow: 0 0 0 2px var(--mui-bg), 0 0 0 4px var(--mui-border-focus);
}
.mui-switch[aria-checked="true"]:focus-visible {
box-shadow: 0 0 0 2px var(--mui-bg), 0 0 0 4px var(--mui-border-focus);
}
.mui-switch__label {
color: var(--mui-text);
font-size: 0.875rem;
cursor: pointer;
user-select: none;
}
.mui-switch__value {
position: absolute;
opacity: 0;
pointer-events: none;
width: 0;
height: 0;
}