Spaces:
Sleeping
Sleeping
| <template> | |
| <label class="inline-flex items-center gap-2"> | |
| <input | |
| type="checkbox" | |
| class="sr-only peer" | |
| :checked="modelValue" | |
| :disabled="disabled" | |
| @change="onChange" | |
| /> | |
| <span | |
| class="flex h-4 w-4 items-center justify-center rounded border border-border bg-background text-transparent transition-colors | |
| peer-checked:border-foreground peer-checked:bg-foreground peer-checked:text-white peer-disabled:opacity-50" | |
| aria-hidden="true" | |
| > | |
| <svg | |
| viewBox="0 0 20 20" | |
| class="h-3.5 w-3.5" | |
| fill="currentColor" | |
| > | |
| <path d="M7.6 13.2 4.4 10l1.2-1.2 2 2 6-6 1.2 1.2-7.2 7.2z" /> | |
| </svg> | |
| </span> | |
| <span v-if="$slots.default" class="text-xs text-muted-foreground"> | |
| <slot /> | |
| </span> | |
| </label> | |
| </template> | |
| <script setup lang="ts"> | |
| const props = defineProps<{ | |
| modelValue: boolean | |
| disabled?: boolean | |
| }>() | |
| const emit = defineEmits<{ | |
| (e: 'update:modelValue', value: boolean): void | |
| }>() | |
| const onChange = (event: Event) => { | |
| const target = event.target as HTMLInputElement | |
| emit('update:modelValue', target.checked) | |
| } | |
| </script> | |