schon/storefront/pages/index.vue
Alexandr SaVBaD Waltz 40ae24a04c Features: 1) Add SEO-related fragments to GraphQL queries including SEOMETA_FRAGMENT usage in brands, categories, and products queries; 2) Enable localized and dynamic SEO metadata handling in category pages with Vue composables and useSeoMeta; 3) Replace obsolete client-only wrapper with native Nuxt components like nuxt-marquee for enhanced rendering;
Fixes: 1) Correct file path imports by removing `.js` extensions in GraphQL fragments; 2) Resolve typo in `usePromocodeStore` composables to ensure consistent store usage; 3) Add missing `:type="submit"` to login form button for proper form submission handling;

Extra: 1) Remove unused `.idea` and `README.md` files for repository cleanup; 2) Delete extraneous dependencies from `package-lock.json` for streamlined package management; 3) Refactor category slug handling with improved composable logic for cleaner route parameters and SEO alignment.
2025-09-13 12:53:06 +03:00

68 lines
No EOL
1.7 KiB
Vue

<template>
<div class="home">
<home-hero />
<home-brands :brands="brands" />
<home-collection
:tags="tags"
:newProducts="newProducts"
:priceProducts="priceProducts"
/>
<home-category-tags />
</div>
</template>
<script setup lang="ts">
import {useUserActivation} from "~/composables/user";
import { useRouteQuery } from '@vueuse/router';
import {useBrands} from "~/composables/brands";
import {useProducts, useProductTags} from "~/composables/products";
import type {IProduct} from "~/types";
const {t} = useI18n();
const appStore = useAppStore();
const route = useRoute();
useHead({
title: t('breadcrumbs.home'),
})
const token = useRouteQuery('token', '');
const uid = useRouteQuery('uid', '');
const referrer = useRouteQuery('referrer', '');
const { activateUser } = useUserActivation();
const newProducts = ref<{ cursor: string; node: IProduct }[]>([]);
const priceProducts = ref<{ cursor: string; node: IProduct }[]>([]);
const { brands } = useBrands();
const { tags } = useProductTags();
const { products, getProducts } = useProducts();
await getProducts({ orderBy: '-modified' });
newProducts.value = products.value;
await getProducts({ orderBy: '-price' });
priceProducts.value = products.value;
onMounted( async () => {
if (route.path.includes('activate-user') && token.value && uid.value) {
await activateUser(token.value, uid.value);
}
if (route.path.includes('reset-password') && token.value && uid.value) {
appStore.setActiveState('new-password');
}
if (referrer.value) {
appStore.setActiveState('register');
}
});
</script>
<style lang="scss" scoped>
.home {
display: flex;
flex-direction: column;
gap: 125px;
}
</style>