diff --git a/bo/components.d.ts b/bo/components.d.ts index e98adc0..7dc3630 100644 --- a/bo/components.d.ts +++ b/bo/components.d.ts @@ -15,7 +15,7 @@ declare module 'vue' { CartDetails: typeof import('./src/components/customer/CartDetails.vue')['default'] CategoryMenu: typeof import('./src/components/inner/categoryMenu.vue')['default'] CategoryMenuListing: typeof import('./src/components/inner/categoryMenuListing.vue')['default'] - copy: typeof import('./src/components/inner/categoryMenu copy.vue')['default'] + copy: typeof import('./src/components/customer/PageOrders copy.vue')['default'] Cs_PrivacyPolicyView: typeof import('./src/components/terms/cs_PrivacyPolicyView.vue')['default'] Cs_TermsAndConditionsView: typeof import('./src/components/terms/cs_TermsAndConditionsView.vue')['default'] En_PrivacyPolicyView: typeof import('./src/components/terms/en_PrivacyPolicyView.vue')['default'] @@ -27,12 +27,14 @@ declare module 'vue' { PageCarts: typeof import('./src/components/customer/PageCarts.vue')['default'] PageCreateAccount: typeof import('./src/components/customer/PageCreateAccount.vue')['default'] PageCustomerData: typeof import('./src/components/customer/PageCustomerData.vue')['default'] + PageOrders: typeof import('./src/components/customer/PageOrders.vue')['default'] PageProduct: typeof import('./src/components/customer/PageProduct.vue')['default'] PageProductCardFull: typeof import('./src/components/customer/PageProductCardFull.vue')['default'] PageProducts: typeof import('./src/components/admin/PageProducts.vue')['default'] PageProductsList: typeof import('./src/components/admin/PageProductsList.vue')['default'] PageProfileDetails: typeof import('./src/components/customer/PageProfileDetails.vue')['default'] PageProfileDetailsAddInfo: typeof import('./src/components/customer/PageProfileDetailsAddInfo.vue')['default'] + PageStatistic: typeof import('./src/components/customer/PageStatistic.vue')['default'] Pl_PrivacyPolicyView: typeof import('./src/components/terms/pl_PrivacyPolicyView.vue')['default'] Pl_TermsAndConditionsView: typeof import('./src/components/terms/pl_TermsAndConditionsView.vue')['default'] ProductCustomization: typeof import('./src/components/customer/components/ProductCustomization.vue')['default'] diff --git a/bo/src/app.config.ts b/bo/src/app.config.ts index 0089c78..97fa064 100644 --- a/bo/src/app.config.ts +++ b/bo/src/app.config.ts @@ -1,63 +1,63 @@ -import type { NuxtUIOptions } from '@nuxt/ui/unplugin' +// import type { NuxtUIOptions } from '@nuxt/ui/unplugin' -export const uiOptions: NuxtUIOptions = { - ui: { - pagination: { - slots: { - root: '', - } - }, - button: { - slots: { - base: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', - }, - }, - input: { - slots: { - base: 'text-(--black) dark:text-white border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', - error: 'text-red-600!' - }, - }, - inputNumber: { - slots: { - base: 'text-(--black) dark:text-white border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! pt-2 px-1! w-auto!', - increment: 'border-0! pe-0! ps-0!', - decrement: 'border-0! pe-0! ps-0!' - }, - }, - select: { - slots: { - base: 'w-full! cursor-pointer border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', - itemLabel: 'text-black! dark:text-white!', - itemTrailingIcon: 'text-black! dark:text-white!' - }, - }, - formField: { - slots: { - error: 'mt-1! text-[14px] text-error text-red-600! dark:text-red-400!', - label: 'text-[16px]' - }, - }, - selectMenu: { - slots: { - base: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', - content: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! z-80 text-(--black)! dark:text-white!', - itemLeadingIcon: 'text-(--black)! dark:text-white!' - } +// export const uiOptions: NuxtUIOptions = { +// ui: { +// pagination: { +// slots: { +// root: '', +// } +// }, +// button: { +// slots: { +// base: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', +// }, +// }, +// input: { +// slots: { +// base: 'text-(--black) dark:text-white border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', +// error: 'text-red-600!' +// }, +// }, +// inputNumber: { +// slots: { +// base: 'text-(--black) dark:text-white border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! pt-2 px-1! w-auto!', +// increment: 'border-0! pe-0! ps-0!', +// decrement: 'border-0! pe-0! ps-0!' +// }, +// }, +// select: { +// slots: { +// base: 'w-full! cursor-pointer border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', +// itemLabel: 'text-black! dark:text-white!', +// itemTrailingIcon: 'text-black! dark:text-white!' +// }, +// }, +// formField: { +// slots: { +// error: 'mt-1! text-[14px] text-error text-red-600! dark:text-red-400!', +// label: 'text-[16px]' +// }, +// }, +// selectMenu: { +// slots: { +// base: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', +// content: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! z-80 text-(--black)! dark:text-white!', +// itemLeadingIcon: 'text-(--black)! dark:text-white!' +// } - }, - table: { - slots: { - base: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! bg-(--second-light) dark:bg-(--main-dark)', - tr: 'border-b! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! text-(--black)! dark:text-white!', - } +// }, +// table: { +// slots: { +// base: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! bg-(--second-light) dark:bg-(--main-dark)', +// tr: 'border-b! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! text-(--black)! dark:text-white!', +// } - }, - modal: { - slots: { - content: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! bg-(--second-light) dark:bg-(--main-dark)', - } +// }, +// modal: { +// slots: { +// content: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0! bg-(--second-light) dark:bg-(--main-dark)', +// } - } - } -} \ No newline at end of file +// } +// } +// } \ No newline at end of file diff --git a/bo/src/components/TopBar.vue b/bo/src/components/TopBar.vue index 2c9d8ca..38571bd 100644 --- a/bo/src/components/TopBar.vue +++ b/bo/src/components/TopBar.vue @@ -3,10 +3,11 @@ import { useFetchJson } from '@/composable/useFetchJson' import LangSwitch from './inner/langSwitch.vue' import ThemeSwitch from './inner/themeSwitch.vue' import { useAuthStore } from '@/stores/auth' -import { computed, ref } from 'vue' +import { computed, onMounted, ref } from 'vue' import { currentLang } from '@/router/langs' import type { LabelTrans, TopMenuItem } from '@/types' import type { NavigationMenuItem } from '@nuxt/ui' +import { useRoute, useRouter } from 'vue-router' const authStore = useAuthStore() let menu = ref() @@ -19,30 +20,43 @@ async function getTopMenu() { } } +const router = useRouter() +const route = useRoute() const menuItems = computed(() => transformMenu(menu.value[0].children, currentLang.value?.iso_code)) function transformMenu(items: TopMenuItem[], locale: string | undefined): NavigationMenuItem[] { + return items.map((item) => { - let route = { - icon: 'i-lucide-house', + const route: NavigationMenuItem = { + icon: item.label.icon ? item.label.icon : 'i-lucide-house', label: item.label.trans[locale as keyof LabelTrans].label, - children: item.children ? transformMenu(item.children, locale) : undefined, + children: item.children + ? transformMenu(item.children, locale) + : undefined, + } + + route.onSelect = () => { + const query = { + name: item.params.route.name, + params: { + ...(item.params.route.params || {}), + locale: currentLang.value?.iso_code + } + } + + router.push(query) } - if (item.params?.route) { - route = { ...route, ...{ to: { name: item.params.route.name, params: { locale: locale } } } } - } return route }) } - await getTopMenu()