<template> <button class="VPSwitch" type="button" role="switch"> <span class="check"> <span class="icon" v-if="$slots.default"> <slot /> </span> </span> </button> </template> <style scoped> .VPSwitch { position: relative; border-radius: 11px; display: block; width: 40px; height: 22px; flex-shrink: 0; border: 1px solid var(--vp-input-border-color); background-color: var(--vp-input-switch-bg-color); transition: border-color 0.25s; } .VPSwitch:hover { border-color: var(--vp-input-hover-border-color); } .check { position: absolute; top: 1px; /*rtl:ignore*/ left: 1px; width: 18px; height: 18px; border-radius: 50%; background-color: var(--vp-c-neutral-inverse); box-shadow: var(--vp-shadow-1); transition: transform 0.25s; } .icon { position: relative; display: block; width: 18px; height: 18px; border-radius: 50%; overflow: hidden; } .icon :deep(svg) { position: absolute; top: 3px; left: 3px; width: 12px; height: 12px; fill: var(--vp-c-text-2); } .dark .icon :deep(svg) { fill: var(--vp-c-text-1); transition: opacity 0.25s; } </style>