2024-06-29 22:51:24 +06:00
|
|
|
<script lang="ts">
|
2024-11-20 15:33:09 +06:00
|
|
|
export let enabled: boolean;
|
2024-06-29 22:51:24 +06:00
|
|
|
</script>
|
|
|
|
|
2024-11-20 15:33:09 +06:00
|
|
|
<div class="toggle" class:enabled>
|
2024-06-29 22:51:24 +06:00
|
|
|
<div class="toggle-switcher"></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
.toggle {
|
2024-06-29 23:31:40 +06:00
|
|
|
--base-size: 22px;
|
2024-06-29 22:51:24 +06:00
|
|
|
--ratio-factor: 0.9;
|
2024-11-20 15:33:09 +06:00
|
|
|
--enabled-pos: calc(100% * var(--ratio-factor));
|
2024-06-29 22:51:24 +06:00
|
|
|
|
|
|
|
display: flex;
|
|
|
|
justify-content: start;
|
|
|
|
align-items: center;
|
|
|
|
min-width: calc(var(--base-size) * (1 + var(--ratio-factor)));
|
|
|
|
padding: 2px;
|
|
|
|
aspect-ratio: 2/1;
|
|
|
|
border-radius: 5px;
|
|
|
|
border-radius: 100px;
|
|
|
|
background: var(--toggle-bg);
|
|
|
|
transition: background 0.2s;
|
|
|
|
}
|
|
|
|
|
2024-11-20 15:33:09 +06:00
|
|
|
.toggle:dir(rtl) {
|
|
|
|
--enabled-pos: calc(-100% * var(--ratio-factor));
|
|
|
|
}
|
|
|
|
|
2024-06-29 22:51:24 +06:00
|
|
|
.toggle-switcher {
|
|
|
|
height: var(--base-size);
|
|
|
|
width: var(--base-size);
|
|
|
|
background: var(--white);
|
|
|
|
border-radius: 100px;
|
|
|
|
transform: translateX(0%);
|
|
|
|
transition: transform 0.2s;
|
|
|
|
}
|
|
|
|
|
|
|
|
.toggle.enabled {
|
|
|
|
background: var(--toggle-bg-enabled);
|
|
|
|
}
|
|
|
|
|
|
|
|
.toggle.enabled .toggle-switcher {
|
2024-11-20 15:33:09 +06:00
|
|
|
transform: translateX(var(--enabled-pos));
|
|
|
|
}
|
2024-06-29 22:51:24 +06:00
|
|
|
</style>
|