FMHYedit/.vitepress/theme/components/Switch.vue

53 lines
964 B
Vue
Raw Normal View History

2023-11-12 16:42:57 +00:00
<script setup>
2024-01-25 16:32:45 +00:00
import { ref } from 'vue'
import { Switch } from '@headlessui/vue'
2023-11-12 16:42:57 +00:00
2024-01-25 16:32:45 +00:00
const enabled = ref(false)
2023-11-12 16:42:57 +00:00
</script>
<template>
<Switch v-model="enabled" class="switch" :class="{ enabled }">
<span class="thumb" />
</Switch>
</template>
<style>
.switch {
display: inline-flex;
position: relative;
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,
background-color 0.4s ease;
border-radius: 11px;
}
.switch.enabled {
background-color: var(--vp-c-brand);
}
</style>
<style scoped>
.switch:hover {
border-color: var(--vp-input-hover-border-color);
}
.thumb {
display: inline-block;
background-color: #fff;
transition: transform 0.25s;
width: 20px;
height: 20px;
border-radius: 50%;
box-shadow: var(--vp-shadow-1);
}
.switch.enabled .thumb {
transform: translateX(18px);
}
</style>