35 lines
676 B
Vue
35 lines
676 B
Vue
|
<script setup lang="ts">
|
||
|
interface Preview {
|
||
|
x: number;
|
||
|
y: number;
|
||
|
width: number;
|
||
|
height: number;
|
||
|
}
|
||
|
|
||
|
defineProps<{ preview: Preview }>();
|
||
|
</script>
|
||
|
|
||
|
<template>
|
||
|
<div
|
||
|
class="snap-preview"
|
||
|
:style="{
|
||
|
left: `${preview.x}px`,
|
||
|
top: `${preview.y}px`,
|
||
|
width: `${preview.width}px`,
|
||
|
height: `${preview.height}px`,
|
||
|
}"
|
||
|
></div>
|
||
|
</template>
|
||
|
|
||
|
<style scoped>
|
||
|
.snap-preview {
|
||
|
position: fixed;
|
||
|
background-color: rgba(255, 255, 255, 0.2);
|
||
|
border: 2px dashed rgba(255, 255, 255, 0.5);
|
||
|
border-radius: 8px;
|
||
|
z-index: 9998; /* Below the dragged window, above others */
|
||
|
transition: all 0.1s ease-out;
|
||
|
backdrop-filter: blur(5px);
|
||
|
}
|
||
|
</style>
|