Signal Toggle
A circular signal switch with a tactile dark surface and soft active state.
Customize
Props
accentcolor#d5abffControls the primary accent used by the preview and generated code token.speednumber1Adjusts the animation timing multiplier for hover and looped motion.motionnumber1Scales movement distance and emphasis across the interactive preview.classNamestring''Optional class hook when dropping the component into a page or app.Implementation Notes
Source Code
import "./signal-toggle.css";
export function SignalToggle() {
return (
<label className="sk-signal-toggle">
<input type="checkbox" aria-label="Toggle signal mode" />
<span><i /></span>
</label>
);
}.sk-signal-toggle {
--size: 84px;
display: inline-grid;
place-items: center;
}
.sk-signal-toggle input {
position: absolute;
opacity: 0;
}
.sk-signal-toggle span {
width: var(--size);
aspect-ratio: 1;
display: grid;
place-items: center;
border-radius: 50%;
color: #d5abff;
background: linear-gradient(145deg, #252b35, #0c0f15);
border: 1px solid rgba(255,255,255,.14);
box-shadow: inset 0 1px 0 rgba(255,255,255,.14);
}
.sk-signal-toggle i {
width: 26px;
height: 18px;
border: 3px solid currentColor;
border-left-color: transparent;
border-right-color: transparent;
border-bottom: 0;
border-radius: 26px 26px 0 0;
}
.sk-signal-toggle input:checked + span {
color: #d5abff;
background: linear-gradient(145deg, #1d2734, #090d13);
}<label class="sk-signal-toggle">
<input type="checkbox" aria-label="Toggle signal mode" />
<span>
<i></i>
</span>
</label>---
// Signal Toggle
---
<label class="sk-signal-toggle">
<input type="checkbox" aria-label="Toggle signal mode" />
<span>
<i></i>
</span>
</label>
<style>
.sk-signal-toggle {
--size: 84px;
display: inline-grid;
place-items: center;
}
.sk-signal-toggle input {
position: absolute;
opacity: 0;
}
.sk-signal-toggle span {
width: var(--size);
aspect-ratio: 1;
display: grid;
place-items: center;
border-radius: 50%;
color: #d5abff;
background: linear-gradient(145deg, #252b35, #0c0f15);
border: 1px solid rgba(255,255,255,.14);
box-shadow: inset 0 1px 0 rgba(255,255,255,.14);
}
.sk-signal-toggle i {
width: 26px;
height: 18px;
border: 3px solid currentColor;
border-left-color: transparent;
border-right-color: transparent;
border-bottom: 0;
border-radius: 26px 26px 0 0;
}
.sk-signal-toggle input:checked + span {
color: #d5abff;
background: linear-gradient(145deg, #1d2734, #090d13);
}
</style>