174 lines
4.2 KiB
Vue
174 lines
4.2 KiB
Vue
<script setup>
|
|
definePageMeta({
|
|
layout: false,
|
|
name: "hadithSearch",
|
|
});
|
|
useHead({
|
|
name: "hadithSearch",
|
|
title: `${import.meta.env.VITE_HADITH_PAGE_TITLE} | جستجو`,
|
|
meta: [
|
|
{ name: "description", content: "کاوش با هوش مصنوعی در احادیث اسلامی" },
|
|
],
|
|
bodyAttrs: {
|
|
class: import.meta.env.VITE_HADITH_SYSTEM,
|
|
},
|
|
});
|
|
|
|
const img = useImage();
|
|
|
|
const HadithLayout = defineAsyncComponent(() =>
|
|
import("@hadith/layouts/HadithLayout.vue")
|
|
);
|
|
const NavigationMenu = defineAsyncComponent(() =>
|
|
import("@hadith/components/hadith/NavigationMenu.vue")
|
|
);
|
|
const AutoComplation = defineAsyncComponent(() =>
|
|
import("@hadith/components/hadith/AutoComplation.vue")
|
|
);
|
|
const SearchList = defineAsyncComponent(() =>
|
|
import("@hadith/components/hadith/search-page/SearchList.vue")
|
|
);
|
|
|
|
const searchQuery = ref("");
|
|
const state = reactive({
|
|
searchList: [],
|
|
});
|
|
|
|
const backgroundImageStyle = computed(() => {
|
|
// Use $img to generate an optimized image URL
|
|
let optimizedImageUrl = img("/img/background.png", {
|
|
quality: 80,
|
|
});
|
|
|
|
if (searchQuery.value?.length) {
|
|
optimizedImageUrl = img("/img/sub-header-bgi.png", {
|
|
quality: 80,
|
|
});
|
|
|
|
return {
|
|
backgroundImage: `url(${optimizedImageUrl}), linear-gradient(199.05deg, #ffffff 9.99%, #e4fff7 42.07%, #ffffff 97.12%)`,
|
|
};
|
|
}
|
|
|
|
return {
|
|
backgroundImage: `url(${optimizedImageUrl}), linear-gradient(199.05deg, #ffffff 9.99%, #e4fff7 42.07%, #ffffff 97.12%)`,
|
|
};
|
|
});
|
|
|
|
const renderContent = (payload) => {
|
|
console.info(payload);
|
|
|
|
state.searchList = payload.searchList;
|
|
searchQuery.value = payload.searchQuery;
|
|
};
|
|
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<HadithLayout>
|
|
<div class="h-full flex flex-col justify-center">
|
|
<div class="bg-container h-full" :style="backgroundImageStyle">
|
|
<navigation-menu></navigation-menu>
|
|
|
|
<div class="text-logo">
|
|
<div
|
|
class="search-box-container flex justify-center"
|
|
:class="{ 'pb-0': state.searchList.length }"
|
|
>
|
|
<auto-complation
|
|
:showFilter="true"
|
|
class="search-page"
|
|
@responseReady="renderContent"
|
|
></auto-complation>
|
|
</div>
|
|
<div
|
|
v-if="searchQuery?.length == 0"
|
|
class="flex justify-center flex-col items-center"
|
|
>
|
|
<NuxtImg fit="auto" quality="80" placeholder src="/img/logo.png" />
|
|
<div class="title">
|
|
کاوش با
|
|
<span class="badge-style"> هوش مصنوعی </span>
|
|
در احادیث اسلامی
|
|
</div>
|
|
</div>
|
|
|
|
<no-data
|
|
class="h-full"
|
|
v-if="searchQuery?.length && state.searchList?.length == 0"
|
|
>
|
|
<NuxtImg
|
|
fit="auto"
|
|
quality="80"
|
|
placeholder
|
|
src="/img/no-data.png"
|
|
/>
|
|
<p class="no-data-text">نتیجهای یافت نشد!</p>
|
|
</no-data>
|
|
<div
|
|
v-if="searchQuery?.length && state.searchList?.length"
|
|
class="search-box-container pb-0 bg-white flex justify-center"
|
|
>
|
|
<search-list :list="state.searchList"></search-list>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</HadithLayout>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.bg-container {
|
|
min-height: 100%;
|
|
/* height: 100dvh; */
|
|
background-size: cover;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.text-logo {
|
|
padding-top: 4.5em;
|
|
position: relative;
|
|
|
|
.title {
|
|
margin-top: 3.5em;
|
|
font-family: IRANSansX;
|
|
font-size: 14px;
|
|
line-height: 21px;
|
|
letter-spacing: 0%;
|
|
text-align: center;
|
|
color: #1b2132;
|
|
}
|
|
.badge-style {
|
|
width: 100;
|
|
height: 23;
|
|
border-radius: 40px;
|
|
padding-right: 8px;
|
|
padding-bottom: 2px;
|
|
padding-left: 8px;
|
|
gap: 10px;
|
|
color: #fff;
|
|
|
|
background: linear-gradient(270.29deg, #d284ff 8.12%, #4d00ff 109.58%);
|
|
}
|
|
}
|
|
|
|
.search-box-container {
|
|
padding-top: 0.7em;
|
|
padding-bottom: 4em; /*64px */
|
|
|
|
&.pb-0 {
|
|
padding-bottom: 0 !important;
|
|
}
|
|
}
|
|
|
|
.no-data-text {
|
|
font-family: IRANSansX;
|
|
font-weight: 300;
|
|
font-size: 16px;
|
|
line-height: 24px;
|
|
letter-spacing: 0%;
|
|
text-align: center;
|
|
}
|
|
</style>
|