@@ -16,21 +19,27 @@
-
-
diff --git a/src/components/SupportContactBar.vue b/src/components/SupportContactBar.vue
index d03ef8c..31b0536 100644
--- a/src/components/SupportContactBar.vue
+++ b/src/components/SupportContactBar.vue
@@ -66,7 +66,7 @@ async function onSupportClick() {
padding: 0.65rem 1rem;
border: 0;
border-radius: 0.75rem;
- background: var(--App-primary, var(--ant-color-primary, #7f1d1d));
+ background: var(--App-primary, @App-primary-color);
color: #fff;
font-size: 0.9375rem;
font-weight: 600;
diff --git a/src/components/TradeFeeConfirmSummary.vue b/src/components/TradeFeeConfirmSummary.vue
new file mode 100644
index 0000000..da43f9e
--- /dev/null
+++ b/src/components/TradeFeeConfirmSummary.vue
@@ -0,0 +1,102 @@
+
+
+
+
مظنه هر {{ weightUnit }}
+
+ {{ formattedUnitPrice }}
+ ریال
+
+
+
+
+
{{ section.heading }}
+
+
+
+ +
+ −
+ {{ row.label }}
+
+
+
+ {{ formatTradeGramDisplay(row.gram) }}
+ {{ weightUnit }}
+
+
+ −
+ {{ formatRial(row.rial) }}
+ ریال
+
+
+
+
+
+ {{ section.footnote }}
+
+
+
+
+
+
diff --git a/src/composables/useTrackingSystemsFeature.ts b/src/composables/useTrackingSystemsFeature.ts
new file mode 100644
index 0000000..76d2783
--- /dev/null
+++ b/src/composables/useTrackingSystemsFeature.ts
@@ -0,0 +1,21 @@
+import { onMounted, ref } from 'vue'
+import { fetchTrackingSettings, isTrackingSystemsEnabled } from '@/utils/trackingSystemsSettings'
+
+export function useTrackingSystemsFeature() {
+ const trackingSystemsEnabled = ref(false)
+ const trackingSystemsReady = ref(false)
+
+ onMounted(async () => {
+ try {
+ const settings = await fetchTrackingSettings()
+ trackingSystemsEnabled.value = isTrackingSystemsEnabled(settings)
+ } finally {
+ trackingSystemsReady.value = true
+ }
+ })
+
+ return {
+ trackingSystemsEnabled,
+ trackingSystemsReady,
+ }
+}
diff --git a/src/layouts/config/navigation.ts b/src/layouts/config/navigation.ts
index 51bc417..136e04d 100644
--- a/src/layouts/config/navigation.ts
+++ b/src/layouts/config/navigation.ts
@@ -16,6 +16,13 @@ export const GUEST_PRIMARY_NAV: AppNavItem[] = [
{ id: 'login', routeName: 'login', label: 'ورود', icon: 'vuesax-linear:login' },
]
+export const RECOVERY_SITES_NAV_ITEM: AppNavItem = {
+ id: 'recoverySites',
+ routeName: 'recoverySites',
+ label: 'سایتهای ریگیری',
+ icon: 'vuesax-linear:global',
+}
+
/** منوی FAB موبایل + بخش فرعی سایدبار دسکتاپ — کاربر لاگینشده */
export const AUTH_SECONDARY_NAV: AppNavItem[] = [
{ id: 'notifyTrigger', routeName: 'notifyTrigger', label: 'هشدار قیمت', icon: 'vuesax-linear:bill' },
@@ -34,6 +41,13 @@ export function getPrimaryNavItems(isAuthenticated: boolean): AppNavItem[] {
return isAuthenticated ? AUTH_PRIMARY_NAV : GUEST_PRIMARY_NAV
}
-export function getSecondaryNavItems(isAuthenticated: boolean): AppNavItem[] {
- return isAuthenticated ? AUTH_SECONDARY_NAV : []
+export function getSecondaryNavItems(
+ isAuthenticated: boolean,
+ options?: { includeRecoverySites?: boolean },
+): AppNavItem[] {
+ if (!isAuthenticated) return []
+ if (options?.includeRecoverySites) {
+ return [...AUTH_SECONDARY_NAV, RECOVERY_SITES_NAV_ITEM]
+ }
+ return AUTH_SECONDARY_NAV
}
diff --git a/src/layouts/desktop/DesktopSidebar.vue b/src/layouts/desktop/DesktopSidebar.vue
index 5ab1232..ec77a14 100644
--- a/src/layouts/desktop/DesktopSidebar.vue
+++ b/src/layouts/desktop/DesktopSidebar.vue
@@ -42,6 +42,7 @@ import { computed } from 'vue'
import logoFull from '@/assets/img/logo_full_.png'
import { isToken } from '@/utils'
import { useCartStore } from '@/store/cartStore'
+import { useTrackingSystemsFeature } from '@/composables/useTrackingSystemsFeature'
import { getPrimaryNavItems, getSecondaryNavItems } from '../config/navigation'
import { useAppNavigation } from '../composables/useAppNavigation'
import DesktopNavItem from './DesktopNavItem.vue'
@@ -49,8 +50,15 @@ import DesktopNavItem from './DesktopNavItem.vue'
const cartStore = useCartStore()
const authenticated = computed(() => isToken())
const navLogo = logoFull
+const { trackingSystemsEnabled } = useTrackingSystemsFeature()
const primaryItems = computed(() => getPrimaryNavItems(authenticated.value))
-const secondaryItems = computed(() => getSecondaryNavItems(authenticated.value))
+/** «لیست دریافتیها» فقط در موبایل نمایش داده میشود */
+const DESKTOP_HIDDEN_NAV_IDS = ['list']
+const secondaryItems = computed(() =>
+ getSecondaryNavItems(authenticated.value, {
+ includeRecoverySites: trackingSystemsEnabled.value,
+ }).filter((item) => !DESKTOP_HIDDEN_NAV_IDS.includes(item.id)),
+)
const cartCount = computed(() => cartStore.itemCount || 0)
const { isNavActive, navigateTo } = useAppNavigation()
diff --git a/src/layouts/mobile/MobileOverflowMenu.vue b/src/layouts/mobile/MobileOverflowMenu.vue
index c0951a0..894751b 100644
--- a/src/layouts/mobile/MobileOverflowMenu.vue
+++ b/src/layouts/mobile/MobileOverflowMenu.vue
@@ -87,6 +87,17 @@
درباره ما
+