Files
hossein-por-shop/frontend/pages/index.vue
T
2025-02-26 21:00:16 +03:30

58 lines
1.0 KiB
Vue

<script lang="ts" setup>
// import
import useHomeData from "~/composables/api/home/useHomeData";
// type
export type LoadingOverlayProvideType = {
showLoadingOverlay: Ref<boolean>,
changeLoadingOverlay: (value: boolean) => void,
}
// state
const { suspense } = useHomeData();
const showLoadingOverlay = ref(true);
// method
const changeLoadingOverlay = (value: boolean) => {
showLoadingOverlay.value = value;
};
// provide / inject
provide("loadingOverlay", {
showLoadingOverlay,
changeLoadingOverlay
});
// ssr
const response = await suspense();
if (response.isError) {
throw createError({
statusCode: 500,
statusMessage: `Landing error : ${response.error.message}`
});
}
</script>
<template>
<div class="w-full">
<LoadingOverlay />
<Hero />
<Preview />
<ProductsShowcase />
<ProductsSlider title="محصولات پرفروش" />
<Categories />
<Brands />
<MostRecentComments />
<LatestStories />
</div>
</template>