|
2 | 2 | .toggle { |
3 | 3 | display: inline-flex; |
4 | 4 | align-items: center; |
5 | | - cursor: pointer; |
6 | 5 | gap: var(--space-2); |
7 | 6 | } |
8 | 7 |
|
| 8 | +/* Label */ |
9 | 9 | .toggle-label { |
10 | 10 | font-size: clamp(0.875rem, 1vw + 0.25rem, 1rem); |
11 | 11 | color: var(--neutral-700); |
|
14 | 14 | /* Base Checkbox Styling */ |
15 | 15 | .toggle input[type="checkbox"] { |
16 | 16 | position: relative; |
17 | | - width: clamp(2.5rem, 5vw, 4rem); |
18 | | - height: clamp(1.25rem, 3vw, 2rem); |
| 17 | + width: clamp(var(--space-10), 5vw, var(--space-16)); |
| 18 | + height: clamp(var(--space-5), 3vw, var(--space-8)); |
19 | 19 | -webkit-appearance: none; |
20 | 20 | appearance: none; |
21 | 21 | background: var(--neutral-300); |
22 | 22 | outline: none; |
23 | 23 | border-radius: var(--radius-full); |
24 | 24 | cursor: pointer; |
25 | | - transition: background-color var(--transition-all), box-shadow var(--transition-all); |
| 25 | + transition: background-color var(--transition-colors), box-shadow var(--transition-all); |
26 | 26 | box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.3); |
27 | 27 | } |
28 | 28 |
|
29 | 29 | /* Toggle Knob */ |
30 | 30 | .toggle input[type="checkbox"]::before { |
31 | 31 | content: ""; |
32 | | - width: clamp(1.25rem, 2vw, 2rem); |
33 | | - height: clamp(1.25rem, 2vw, 2rem); |
| 32 | + width: clamp(var(--space-5), 2vw, var(--space-8)); |
| 33 | + height: clamp(var(--space-5), 2vw, var(--space-8)); |
34 | 34 | border-radius: 50%; |
35 | | - background: #fff; |
| 35 | + background: var(--neutral-50); |
36 | 36 | position: absolute; |
37 | 37 | top: 50%; |
38 | | - left: 0.25rem; |
| 38 | + left: var(--space-1); |
39 | 39 | transform: translateY(-50%); |
40 | | - transition: transform var(--transition-all), background-color var(--transition-all), box-shadow var(--transition-all); |
| 40 | + transition: transform var(--transition-transform), background-color var(--transition-colors), box-shadow var(--transition-all); |
41 | 41 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); |
42 | 42 | z-index: 1; |
43 | 43 | } |
|
49 | 49 | } |
50 | 50 |
|
51 | 51 | .toggle input[type="checkbox"]:checked::before { |
52 | | - transform: translate(calc(100% - 0.25rem), -50%); |
| 52 | + transform: translate(calc(100% - var(--space-1)), -50%); |
53 | 53 | background-color: var(--primary); |
54 | 54 | } |
55 | 55 |
|
56 | 56 | /* Variant Colors */ |
57 | 57 | [data-variant="success"] input[type="checkbox"]:checked { |
58 | | - background-color: rgba(16, 185, 129, 0.2); |
| 58 | + background-color: var(--success-light); |
59 | 59 | } |
60 | 60 | [data-variant="success"] input[type="checkbox"]:checked::before { |
61 | 61 | background-color: var(--success); |
62 | 62 | } |
63 | 63 |
|
64 | 64 | [data-variant="danger"] input[type="checkbox"]:checked { |
65 | | - background-color: rgba(239, 68, 68, 0.2); |
| 65 | + background-color: var(--danger-light); |
66 | 66 | } |
67 | 67 | [data-variant="danger"] input[type="checkbox"]:checked::before { |
68 | 68 | background-color: var(--danger); |
69 | 69 | } |
70 | 70 |
|
71 | 71 | [data-variant="warning"] input[type="checkbox"]:checked { |
72 | | - background-color: rgba(245, 158, 11, 0.2); |
| 72 | + background-color: var(--warning-light); |
73 | 73 | } |
74 | 74 | [data-variant="warning"] input[type="checkbox"]:checked::before { |
75 | 75 | background-color: var(--warning); |
76 | 76 | } |
77 | 77 |
|
78 | 78 | [data-variant="info"] input[type="checkbox"]:checked { |
79 | | - background-color: rgba(59, 130, 246, 0.2); |
| 79 | + background-color: var(--info-light); |
80 | 80 | } |
81 | 81 | [data-variant="info"] input[type="checkbox"]:checked::before { |
82 | 82 | background-color: var(--info); |
|
114 | 114 | } |
115 | 115 |
|
116 | 116 | /* Readonly State */ |
117 | | -[data-state="readonly"] .toggle { |
| 117 | +[data-state="readonly"] input[type="checkbox"] { |
118 | 118 | pointer-events: none; |
| 119 | + cursor: not-allowed; |
| 120 | + background-color: var(--neutral-200); |
| 121 | +} |
| 122 | +[data-state="readonly"] input[type="checkbox"]::before { |
| 123 | + background-color: var(--neutral-400); |
| 124 | +} |
| 125 | +[data-state="readonly"] input[type="checkbox"]:checked { |
| 126 | + background-color: var(--neutral-300); |
| 127 | +} |
| 128 | +[data-state="readonly"] input[type="checkbox"]:checked::before { |
| 129 | + background-color: var(--neutral-400); |
119 | 130 | } |
120 | 131 |
|
121 | 132 | /* Responsive Adjustments */ |
|
125 | 136 | } |
126 | 137 |
|
127 | 138 | .toggle input[type="checkbox"] { |
128 | | - width: clamp(2rem, 4vw, 3rem); |
129 | | - height: clamp(1rem, 2vw, 1.5rem); |
| 139 | + width: clamp(var(--space-8), 4vw, var(--space-12)); |
| 140 | + height: clamp(var(--space-4), 2vw, var(--space-6)); |
130 | 141 | } |
131 | 142 |
|
132 | 143 | .toggle input[type="checkbox"]::before { |
133 | | - width: clamp(1rem, 1.5vw, 1.25rem); |
134 | | - height: clamp(1rem, 1.5vw, 1.25rem); |
| 144 | + width: clamp(var(--space-4), 1.5vw, var(--space-5)); |
| 145 | + height: clamp(var(--space-4), 1.5vw, var(--space-5)); |
135 | 146 | } |
136 | 147 | } |
0 commit comments