chromium/ash/webui/common/resources/cr_elements/cr_toggle/cr_toggle.html

<style>
  :host {
    --cr-toggle-checked-bar-color: var(--google-blue-600);
    --cr-toggle-checked-button-color: var(--google-blue-600);
    --cr-toggle-checked-ripple-color:
        rgba(var(--google-blue-600-rgb), .2);
    --cr-toggle-ripple-diameter: 40px;
    --cr-toggle-unchecked-bar-color: var(--google-grey-400);
    --cr-toggle-unchecked-button-color: white;
    --cr-toggle-unchecked-ripple-color:
        rgba(var(--google-grey-600-rgb), .15);
    -webkit-tap-highlight-color: transparent;
    cursor: pointer;
    display: block;
    min-width: 34px;
    outline: none;
    position: relative;
    width: 34px;
  }

  :host-context([chrome-refresh-2023]):host {
    --cr-toggle-checked-bar-color:
        var(--color-toggle-button-track-on,
            var(--cr-fallback-color-primary));
    --cr-toggle-checked-button-color:
        var(--color-toggle-button-thumb-on,
            var(--cr-fallback-color-on-primary));
    --cr-toggle-unchecked-bar-color:
        var(--color-toggle-button-track-off,
            var(--cr-fallback-color-surface-variant));
    --cr-toggle-unchecked-button-color:
        var(--color-toggle-button-thumb-off,
            var(--cr-fallback-color-outline));
    --cr-toggle-disabled-opacity: 1;

    --cr-toggle-checked-ripple-color: var(--cr-active-background-color);
    --cr-toggle-unchecked-ripple-color: var(--cr-active-background-color);

    --cr-toggle-ripple-diameter: 20px;

    --cr-toggle-bar-border-color: var(--cr-toggle-unchecked-button-color);
    --cr-toggle-bar-border: 1px solid var(--cr-toggle-bar-border-color);
    --cr-toggle-bar-width: 26px;

    --cr-toggle-knob-diameter: 8px;

    height: fit-content;
    isolation: isolate;
    min-width: initial;
    width: fit-content;
  }

  @media (forced-colors: active) {
    :host {
      /* TODO(crbug.com/40168415): cr-toggle heavily relies on
         background-color to convey various states (on/off,
         enabled/disabled). Until proper specs for HCM exist, turn off
         forced-colors automatic adjustments so that the cr-toggle is at
         least visible. Replace with a HCM compliant implementation once
         specs exist.*/
      forced-color-adjust: none;
    }
  }

  @media (prefers-color-scheme: dark) {
    :host {
      --cr-toggle-checked-bar-color: var(--google-blue-300);
      --cr-toggle-checked-button-color: var(--google-blue-300);
      --cr-toggle-checked-ripple-color:
          rgba(var(--google-blue-300-rgb), .4);
      --cr-toggle-unchecked-bar-color: var(--google-grey-500);
      --cr-toggle-unchecked-button-color: var(--google-grey-300);
      --cr-toggle-unchecked-ripple-color:
          rgba(var(--google-grey-300-rgb), .4);
    }
  }
  /* Keep the prefers-color-scheme and [dark] rules the same. */
  :host([dark]) {
    --cr-toggle-checked-bar-color: var(--google-blue-300);
    --cr-toggle-checked-button-color: var(--google-blue-300);
    --cr-toggle-checked-ripple-color:
        rgba(var(--google-blue-300-rgb), .4);
    --cr-toggle-unchecked-bar-color: var(--google-grey-500);
    --cr-toggle-unchecked-button-color: var(--google-grey-300);
    --cr-toggle-unchecked-ripple-color:
        rgba(var(--google-grey-300-rgb), .4);
  }

  :host-context([chrome-refresh-2023]):host(:active) {
    --cr-toggle-knob-diameter: 10px;
  }

  :host-context([chrome-refresh-2023]):host([checked]) {
    --cr-toggle-bar-border-color: var(--cr-toggle-checked-bar-color);
    --cr-toggle-knob-diameter: 12px;
  }

  :host-context([chrome-refresh-2023]):host([checked]:active) {
    --cr-toggle-knob-diameter: 14px;
  }

  :host([disabled]) {
    cursor: initial;
    opacity: var(--cr-disabled-opacity);
    pointer-events: none;
  }

  :host-context([chrome-refresh-2023]):host([disabled]) {
    --cr-toggle-checked-bar-color:
        var(--color-toggle-button-track-on-disabled,
            var(--cr-fallback-color-disabled-background));
    --cr-toggle-checked-button-color:
        var(--color-toggle-button-thumb-on-disabled, var(--cr-fallback-color-surface));
    --cr-toggle-unchecked-bar-color: transparent;
    --cr-toggle-unchecked-button-color:
        var(--color-toggle-button-thumb-off-disabled,
            var(--cr-fallback-color-disabled-foreground));
    --cr-toggle-bar-border-color: var(--cr-toggle-unchecked-button-color);
    opacity: var(--cr-toggle-disabled-opacity);
  }

  :host-context([chrome-refresh-2023]):host([checked][disabled]) {
    --cr-toggle-bar-border: none;
  }

  #bar {
    background-color: var(--cr-toggle-unchecked-bar-color);
    border-radius: 8px;
    height: 12px;
    left: 3px;
    position: absolute;
    top: 2px;
    transition: background-color linear 80ms;
    width: 28px;
    z-index: 0;
  }

  :host([checked]) #bar {
    background-color: var(--cr-toggle-checked-bar-color);
    opacity: var(--cr-toggle-checked-bar-opacity, 0.5);
  }

  :host-context([chrome-refresh-2023]) #bar {
    border: var(--cr-toggle-bar-border);
    border-radius: 50px;
    box-sizing: border-box;
    display: block;
    height: 16px;
    opacity: 1;
    position: initial;
    width: var(--cr-toggle-bar-width);
  }


  :host-context([chrome-refresh-2023]):host(:focus-visible) #bar {
    outline: 2px solid var(--cr-toggle-checked-bar-color);
    outline-offset: 2px;
  }

  #knob {
    background-color: var(--cr-toggle-unchecked-button-color);
    border-radius: 50%;
    box-shadow: var(--cr-toggle-box-shadow, 0 1px 3px 0 rgba(0, 0, 0, .4));
    display: block;
    height: 16px;
    position: relative;
    transition: transform linear 80ms, background-color linear 80ms;
    width: 16px;
    z-index: 1;
  }

  :host([checked]) #knob {
    background-color: var(--cr-toggle-checked-button-color);
    transform: translate3d(18px, 0, 0);
  }

  :host-context([dir=rtl]):host([checked]) #knob {
    transform: translate3d(-18px, 0, 0);
  }

  :host-context([chrome-refresh-2023]) #knob {
    /* Distance between knob center to the edge of the control is the same
       for both checked and unchecked. */
    --cr-toggle-knob-center-edge-distance_: 8px;

    /* Direction for on/off states
        - +1 means 'off' to the left, 'on' to the right, used in LTR.
        - -1 means 'off' to the right, 'on' to the left, used in RTL. */
    --cr-toggle-knob-direction_: 1;

    /* Absolute distance from the center position to either left or
       right. */
    --cr-toggle-knob-travel-distance_: calc(
        0.5 * var(--cr-toggle-bar-width) -
        var(--cr-toggle-knob-center-edge-distance_));

    /* Positions in the horizontal (x-axis) dimension that the knob can be
      in. The center position is only used for calculations, and is never
      presented to the user. */
    --cr-toggle-knob-position-center_: calc(
        0.5 * var(--cr-toggle-bar-width) + -50%);
    --cr-toggle-knob-position-start_: calc(
        var(--cr-toggle-knob-position-center_) -
        var(--cr-toggle-knob-direction_) *
        var(--cr-toggle-knob-travel-distance_));
    --cr-toggle-knob-position-end_: calc(
        var(--cr-toggle-knob-position-center_) +
        var(--cr-toggle-knob-direction_) *
        var(--cr-toggle-knob-travel-distance_));

    box-shadow: none;
    height: var(--cr-toggle-knob-diameter);
    position: absolute;
    top: 50%;
    transform: translate(var(--cr-toggle-knob-position-start_), -50%);
    transition: transform linear 80ms, background-color linear 80ms,
        width linear 80ms, height linear 80ms;
    width: var(--cr-toggle-knob-diameter);
  }

  :host-context([dir=rtl][chrome-refresh-2023]) #knob {
    left: 0;
    /* Flip the knob's on/off direction for RTL */
    --cr-toggle-knob-direction_: -1;
  }


  :host-context([chrome-refresh-2023]):host([checked]) #knob {
    transform: translate(var(--cr-toggle-knob-position-end_), -50%);
  }


  :host-context([chrome-refresh-2023]):host([checked]:active) #knob,
  :host-context([chrome-refresh-2023]):host([checked]:hover) #knob {
    --cr-toggle-checked-button-color:
        var(--color-toggle-button-thumb-on-hover,
            var(--cr-fallback-color-primary-container));
  }

  :host-context([chrome-refresh-2023]):host(:hover) #knob::before {
    background-color: var(--cr-hover-background-color);
    border-radius: 50%;
    content: '';
    height: var(--cr-toggle-ripple-diameter);
    left: calc(var(--cr-toggle-knob-diameter) / 2);
    position: absolute;
    top: calc(var(--cr-toggle-knob-diameter) / 2);
    transform: translate(-50%, -50%);
    width: var(--cr-toggle-ripple-diameter);
  }

  paper-ripple {
    --paper-ripple-opacity: 1;
    color: var(--cr-toggle-unchecked-ripple-color);
    height: var(--cr-toggle-ripple-diameter);
    left: 50%;
    outline: var(--cr-toggle-ripple-ring, none);
    pointer-events: none;
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
    transition: color linear 80ms;
    width: var(--cr-toggle-ripple-diameter);
  }

  :host([checked]) paper-ripple {
    color: var(--cr-toggle-checked-ripple-color);
  }

  :host-context([dir=rtl]) paper-ripple {
    left: auto;
    right: 50%;
    transform: translate(50%, -50%);
  }
</style>
<span id="bar"></span>
<span id="knob"></span>