2024-04-25 08:56:01 +02:00
|
|
|
<template>
|
2024-05-01 10:40:33 +02:00
|
|
|
<HeadlessMenu v-slot="{ close }" v-bind="$props">
|
2024-04-25 08:56:01 +02:00
|
|
|
<slot name="button"></slot>
|
|
|
|
|
|
2024-04-28 08:35:26 +02:00
|
|
|
<HeadlessMenuItems @click="close" class="fixed z-20 inset-0 z-5 bg-black/50">
|
2024-04-25 08:56:01 +02:00
|
|
|
|
|
|
|
|
</HeadlessMenuItems>
|
|
|
|
|
|
|
|
|
|
<transition enter-active-class="transition ease-in duration-100"
|
|
|
|
|
enter-from-class="transform opacity-0 translate-y-full sm:translate-y-0 scale-95"
|
|
|
|
|
enter-to-class="transform translate-y-0 opacity-100 scale-100"
|
|
|
|
|
leave-active-class="transition ease-out duration-75" leave-from-class="transform opacity-100 scale-100"
|
|
|
|
|
leave-to-class="transform opacity-0 scale-95">
|
|
|
|
|
<HeadlessMenuItems
|
2024-04-28 08:35:26 +02:00
|
|
|
:class="['z-20 mt-2 rounded overflow-hidden bg-dark-900 shadow-lg ring-1 ring-white/10 focus:outline-none',
|
2024-04-25 08:56:01 +02:00
|
|
|
isSmallScreen ? 'bottom-0 fixed inset-x-0 w-full origin-bottom' : 'absolute right-0 origin-top-right top-full min-w-56']">
|
|
|
|
|
<div v-if="isSmallScreen" class="w-full bg-white/10 py-2">
|
|
|
|
|
<div class="rounded-full h-1 bg-gray-400 w-12 mx-auto"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<slot name="items"></slot>
|
|
|
|
|
</HeadlessMenuItems>
|
|
|
|
|
</transition>
|
|
|
|
|
</HeadlessMenu>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
2024-04-25 08:58:17 +02:00
|
|
|
const { width } = useWindowSize();
|
2024-05-01 10:40:33 +02:00
|
|
|
const isSmallScreen = computed(() => width.value < 768);
|
2024-04-25 08:56:01 +02:00
|
|
|
</script>
|