UNPKG

chrome-devtools-frontend

Version:
111 lines (96 loc) 2.34 kB
/* * Copyright 2024 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ :host { position: relative; display: inline-block; width: 26px; height: var(--sys-size-8); } input { opacity: 0%; width: 0; height: 0; } .slider { box-sizing: border-box; position: absolute; cursor: pointer; left: 0; top: 0; width: 100%; height: 100%; background-color: var(--sys-color-surface-variant); border: 1px solid var(--sys-color-outline); border-radius: var(--sys-shape-corner-full); transition: background-color 80ms linear; } .slider::before { position: absolute; content: ""; height: var(--sys-size-5); width: var(--sys-size-5); border-radius: var(--sys-shape-corner-full); top: calc(50% - 4px); left: 3px; background-color: var(--sys-color-outline); transition: transform 80ms linear, background-color 80ms linear, width 80ms linear, height 80ms linear, top 80ms linear, left 80ms linear; } input:focus-visible + .slider { outline: 2px solid var(--sys-color-state-focus-ring); outline-offset: 2px; } input:checked { & + .slider { background-color: var(--sys-color-primary); border: 1px solid var(--sys-color-primary); } & + .slider::before { left: 11px; height: var(--sys-size-6); width: var(--sys-size-6); top: calc(50% - 6px); background-color: var(--sys-color-on-primary); } } input:disabled:not(:checked) { & + .slider { background-color: transparent; border-color: var(--sys-color-state-disabled); } & + .slider::before { background-color: var(--sys-color-state-disabled); } } input:disabled:checked { & + .slider { background-color: var(--sys-color-state-disabled-container); border-color: transparent; } & + .slider::before { background-color: var(--sys-color-surface); } } @media (forced-colors: active) { .slider::before, input:checked + .slider::before { background-color: ButtonText; } input:disabled:not(:checked) + .slider, input:disabled:checked + .slider { background-color: transparent; border-color: GrayText; } input:disabled:not(:checked) + .slider::before, input:disabled:checked + .slider::before { background-color: GrayText; } }