TorbatYar/frontend/modules/crm/constants/portals.ts
Mortezakoohjani e140908034 Ship enterprise CRM frontend with real API wiring and thin app routes.
Connect all CRM pages to the BFF and CRM service, add module docs, and mark CRM available in the SuperApp catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 20:58:17 +03:30

174 lines
5.7 KiB
TypeScript

import type { LucideIcon } from "lucide-react";
import {
Activity,
BarChart3,
Building2,
Calendar,
FileText,
Handshake,
HeartPulse,
Kanban,
LayoutDashboard,
Mail,
Phone,
Settings,
Shield,
Tag,
Target,
TrendingUp,
UserCircle,
Users,
Zap,
} from "lucide-react";
export type CrmPortalId = "sales";
export type PortalNavItem = {
id: string;
label: string;
href: string;
shortcut?: string;
};
export type PortalNavGroup = {
id: string;
label: string;
icon: LucideIcon;
href?: string;
items?: PortalNavItem[];
};
export const CRM_PORTALS: {
id: CrmPortalId;
label: string;
description: string;
basePath: string;
icon: LucideIcon;
}[] = [
{
id: "sales",
label: "فروش و CRM",
description: "مدیریت سرنخ، مخاطب، پipeline و فعالیت‌های فروش",
basePath: "/crm/sales",
icon: Handshake,
},
];
export const SALES_NAV: PortalNavGroup[] = [
{
id: "dashboards",
label: "داشبوردها",
icon: LayoutDashboard,
items: [
{ id: "overview", label: "نمای کلی", href: "/crm/sales/dashboard/overview" },
{ id: "sales-dash", label: "فروش", href: "/crm/sales/dashboard/sales" },
{ id: "pipeline-dash", label: "قیف فروش", href: "/crm/sales/dashboard/pipeline" },
{ id: "lead-dash", label: "سرنخ‌ها", href: "/crm/sales/dashboard/leads" },
{ id: "activity-dash", label: "فعالیت‌ها", href: "/crm/sales/dashboard/activities" },
{ id: "calendar-dash", label: "تقویم", href: "/crm/sales/dashboard/calendar" },
],
},
{
id: "entities",
label: "مشتریان",
icon: Users,
items: [
{ id: "customers", label: "مشتریان", href: "/crm/sales/customers" },
{ id: "companies", label: "شرکت‌ها", href: "/crm/sales/companies" },
{ id: "contacts", label: "مخاطبین", href: "/crm/sales/contacts" },
{ id: "leads", label: "سرنخ‌ها", href: "/crm/sales/leads" },
],
},
{
id: "deals",
label: "فروش",
icon: TrendingUp,
items: [
{ id: "deals", label: "معاملات", href: "/crm/sales/deals" },
{ id: "kanban", label: "کانبان", href: "/crm/sales/kanban" },
{ id: "pipelines", label: "قیف‌ها", href: "/crm/sales/pipelines" },
{ id: "quotes", label: "پیش‌فاکتورها", href: "/crm/sales/quotes" },
],
},
{
id: "collaboration",
label: "همکاری",
icon: Activity,
items: [
{ id: "activities", label: "فعالیت‌ها", href: "/crm/sales/activities" },
{ id: "tasks", label: "وظایف", href: "/crm/sales/tasks" },
{ id: "meetings", label: "جلسات", href: "/crm/sales/meetings" },
{ id: "calls", label: "تماس‌ها", href: "/crm/sales/calls" },
{ id: "emails", label: "ایمیل‌ها", href: "/crm/sales/emails" },
{ id: "notes", label: "یادداشت‌ها", href: "/crm/sales/notes" },
{ id: "timeline", label: "خط زمانی", href: "/crm/sales/timeline" },
{ id: "documents", label: "اسناد", href: "/crm/sales/documents" },
],
},
{
id: "marketing",
label: "بازاریابی",
icon: Target,
items: [
{ id: "campaigns", label: "کمپین‌ها", href: "/crm/sales/campaigns" },
{ id: "segments", label: "سگمنت‌ها", href: "/crm/sales/segments" },
{ id: "tags", label: "برچسب‌ها", href: "/crm/sales/tags" },
],
},
{
id: "data",
label: "داده",
icon: FileText,
items: [
{ id: "custom-fields", label: "فیلدهای سفارشی", href: "/crm/sales/custom-fields" },
{ id: "import", label: "ورود داده", href: "/crm/sales/import" },
{ id: "export", label: "خروجی", href: "/crm/sales/export" },
],
},
{
id: "insights",
label: "گزارش‌ها",
icon: BarChart3,
items: [
{ id: "reports", label: "گزارش‌ها", href: "/crm/sales/reports" },
{ id: "analytics", label: "تحلیل‌ها", href: "/crm/sales/analytics" },
{ id: "automation", label: "اتوماسیون", href: "/crm/sales/automation" },
],
},
{
id: "admin",
label: "مدیریت",
icon: Shield,
items: [
{ id: "notifications", label: "اعلان‌ها", href: "/crm/sales/notifications" },
{ id: "roles", label: "نقش‌ها", href: "/crm/sales/roles" },
{ id: "permissions", label: "دسترسی‌ها", href: "/crm/sales/permissions" },
{ id: "integrations", label: "یکپارچه‌سازی", href: "/crm/sales/integrations" },
{ id: "api-keys", label: "کلید API", href: "/crm/sales/api-keys" },
{ id: "audit-logs", label: "لاگ ممیزی", href: "/crm/sales/audit-logs" },
{ id: "settings", label: "تنظیمات", href: "/crm/sales/settings" },
{ id: "health", label: "سلامت سرویس", href: "/crm/sales/health" },
{ id: "capabilities", label: "قابلیت‌ها", href: "/crm/sales/capabilities" },
],
},
];
export function navForPortal(portalId: CrmPortalId): PortalNavGroup[] {
if (portalId === "sales") return SALES_NAV;
return [];
}
export function detectPortal(pathname: string): CrmPortalId | null {
if (pathname.startsWith("/crm/sales")) return "sales";
return null;
}
/** Keyboard shortcuts map */
export const CRM_SHORTCUTS: Record<string, string> = {
"g o": "/crm/sales/dashboard/overview",
"g l": "/crm/sales/leads",
"g c": "/crm/sales/contacts",
"g d": "/crm/sales/deals",
"g k": "/crm/sales/kanban",
};