Files
hossein-por-shop/frontend/layouts/Profile.vue
marzban-dev 4fde6357d1 Updated
2025-11-01 20:35:55 +03:30

67 lines
1.3 KiB
Vue

<script setup lang="ts">
// imports
import useGetAccount from "~/composables/api/account/useGetAccount";
import { useRatio } from "~/composables/global/useRatio";
// queries
const { suspense } = useGetAccount();
await suspense();
// state
const { isMobile } = useRatio();
const isSidebarShow = ref(isMobile.value);
const isScrollLocked = useScrollLock(window);
// methods
const toggleSidebar = () => {
if (isMobile.value) {
isSidebarShow.value = !isSidebarShow.value;
}
};
// provide
provide("toggleSidebar", toggleSidebar);
// watch
watch(
() => isSidebarShow.value,
(nv) => {
if (isMobile.value) {
isScrollLocked.value = nv ? true : false;
}
},
{
immediate: true,
}
);
</script>
<template>
<div
class="w-full flex flex-col-center persian-number font-iran-yekan-x"
dir="rtl"
>
<Header />
<main class="w-full overflow-x-hidden container flex items-start gap-8 lg:gap-6 min-h-svh relative">
<ProfileSidebar v-model:isShow="isSidebarShow" />
<div class="w-full lg:w-9/12">
<NuxtPage />
</div>
</main>
<div class="w-full flex-col flex mt-20">
<Footer />
</div>
</div>
</template>
<style scoped></style>