Promote Leads to a top-level nav hub and expire login OTP after 90s.

Leads items sit under their own hub after Customers; login OTP shows a countdown and returns to the mobile step when time runs out.
This commit is contained in:
2026-09-27 18:00:59 +03:30
parent c079295ff4
commit ac3ffb8ab2
5 changed files with 4019 additions and 3915 deletions
+28 -3
View File
@@ -45,10 +45,12 @@ const dashboardActive = computed(() => route.path === '/');
const loyaltyActive = computed(() => pathIn(['/loyalty']));
const reportsActive = computed(() => pathIn(['/reports']));
const customersActive = computed(() => pathIn(['/contacts']));
const leadsActive = computed(() =>
pathIn(['/leads', '/settings/lead-stages', '/settings/lead-forms']),
);
const salesActive = computed(() =>
pathIn([
'/pipeline',
'/leads',
'/deals',
'/quotes',
'/invoices',
@@ -68,7 +70,6 @@ const automationsActive = computed(
);
const toolsActive = computed(() =>
pathIn([
'/settings/lead-forms',
'/projects',
'/project-cards',
'/inventory',
@@ -82,7 +83,6 @@ const settingsActive = computed(() =>
'/settings/team',
'/settings/audit-logs',
'/settings/public-api',
'/settings/lead-stages',
'/settings/custom-fields',
'/settings/currencies',
'/settings/tahesab',
@@ -432,6 +432,21 @@ onUnmounted(() => {
</button>
</div>
<div class="nav-fold" v-if="hubVisible.leads" :class="{ active: leadsActive || openHubKey === 'leads' }">
<button
class="nav-item nav-fold-btn"
type="button"
title="لیدها"
:class="{ 'router-link-active': leadsActive || openHubKey === 'leads', 'hub-on': openHubKey === 'leads' }"
:aria-expanded="openHubKey === 'leads'"
@click="onHubClick('leads')"
>
<UiIcon name="user-plus" :size="collapsed ? 20 : 18" />
<span>لیدها</span>
<i class="chev" aria-hidden="true" />
</button>
</div>
<div class="nav-fold" v-if="hubVisible.sales" :class="{ active: salesActive || openHubKey === 'sales' }">
<button
class="nav-item nav-fold-btn"
@@ -725,6 +740,16 @@ onUnmounted(() => {
<UiIcon name="users" :size="20" />
<span>مشتریان</span>
</button>
<button
class="tab"
type="button"
:class="{ on: !moreOpen && (leadsActive || openHubKey === 'leads') }"
:aria-expanded="openHubKey === 'leads'"
@click="openTabHub('leads')"
>
<UiIcon name="user-plus" :size="20" />
<span>لیدها</span>
</button>
<button
class="tab"
type="button"