| <script lang="ts"> | |
| import { createEventDispatcher } from "svelte"; | |
| export let value: boolean; | |
| export let disabled: boolean; | |
| const dispatch = createEventDispatcher<{ change: boolean }>(); | |
| </script> | |
| <input | |
| bind:checked={value} | |
| on:input={() => dispatch("change", !value)} | |
| type="checkbox" | |
| {disabled} | |
| class:disabled={disabled && !value} | |
| /> | |
| <style> | |
| input { | |
| --ring-color: transparent; | |
| position: relative; | |
| box-shadow: var(--input-shadow); | |
| border: 1px solid var(--checkbox-border-color); | |
| border-radius: var(--radius-xs); | |
| background-color: var(--checkbox-background-color); | |
| line-height: var(--line-sm); | |
| width: 18px ; | |
| height: 18px ; | |
| } | |
| input:checked, | |
| input:checked:hover, | |
| input:checked:focus { | |
| border-color: var(--checkbox-border-color-selected); | |
| background-image: var(--checkbox-check); | |
| background-color: var(--checkbox-background-color-selected); | |
| } | |
| input:hover { | |
| border-color: var(--checkbox-border-color-hover); | |
| background-color: var(--checkbox-background-color-hover); | |
| } | |
| input:focus { | |
| border-color: var(--checkbox-border-color-focus); | |
| background-color: var(--checkbox-background-color-focus); | |
| } | |
| .disabled { | |
| opacity: 0.8 ; | |
| cursor: not-allowed; | |
| } | |
| </style> | |