Move business logic out of App Router into module packages, add boundary validation scripts, and keep all routes as thin re-exports without changing URLs or API behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
122 lines
3.1 KiB
TypeScript
122 lines
3.1 KiB
TypeScript
import type { LucideIcon } from "lucide-react";
|
|
import {
|
|
LayoutDashboard,
|
|
Building2,
|
|
Calendar,
|
|
Sparkles,
|
|
Package,
|
|
Users,
|
|
UserCog,
|
|
Megaphone,
|
|
Settings,
|
|
Scissors,
|
|
Gift,
|
|
} from "lucide-react";
|
|
|
|
export type BeautyNavItem = {
|
|
href: string;
|
|
label: string;
|
|
blocked?: boolean;
|
|
};
|
|
|
|
export type BeautyNavGroup = {
|
|
id: string;
|
|
label: string;
|
|
icon: LucideIcon;
|
|
href?: string;
|
|
items?: BeautyNavItem[];
|
|
blocked?: boolean;
|
|
};
|
|
|
|
export const BEAUTY_NAV: BeautyNavGroup[] = [
|
|
{
|
|
id: "dashboard",
|
|
label: "داشبورد",
|
|
icon: LayoutDashboard,
|
|
href: "/beauty",
|
|
},
|
|
{
|
|
id: "foundation",
|
|
label: "زیرساخت سالن",
|
|
icon: Building2,
|
|
items: [
|
|
{ href: "/beauty/organizations", label: "سازمانها" },
|
|
{ href: "/beauty/branches", label: "شعب" },
|
|
{ href: "/beauty/settings", label: "تنظیمات" },
|
|
],
|
|
},
|
|
{
|
|
id: "booking",
|
|
label: "نوبتدهی",
|
|
icon: Calendar,
|
|
items: [
|
|
{ href: "/beauty/appointments", label: "نوبتها" },
|
|
{ href: "/beauty/booking/schedules", label: "برنامه کاری" },
|
|
{ href: "/beauty/booking/waiting-list", label: "لیست انتظار" },
|
|
],
|
|
},
|
|
{
|
|
id: "salon",
|
|
label: "سالن",
|
|
icon: Sparkles,
|
|
items: [
|
|
{ href: "/beauty/salon/rooms", label: "اتاقها" },
|
|
{ href: "/beauty/salon/stations", label: "ایستگاهها" },
|
|
{ href: "/beauty/salon/policies", label: "سیاستهای شعبه" },
|
|
],
|
|
},
|
|
{
|
|
id: "catalog",
|
|
label: "کاتالوگ خدمات",
|
|
icon: Scissors,
|
|
items: [
|
|
{ href: "/beauty/catalog/categories", label: "دستهبندیها" },
|
|
{ href: "/beauty/catalog/services", label: "خدمات" },
|
|
],
|
|
},
|
|
{
|
|
id: "customers",
|
|
label: "مشتریان",
|
|
icon: Users,
|
|
href: "/beauty/customers",
|
|
},
|
|
{
|
|
id: "packages",
|
|
label: "بستهها",
|
|
icon: Gift,
|
|
items: [
|
|
{ href: "/beauty/packages", label: "پکیجها" },
|
|
{ href: "/beauty/packages/memberships", label: "عضویتها" },
|
|
],
|
|
},
|
|
{
|
|
id: "staff",
|
|
label: "پرسنل",
|
|
icon: UserCog,
|
|
items: [
|
|
{ href: "/beauty/staff", label: "کارکنان" },
|
|
{ href: "/beauty/staff/commissions", label: "کمیسیونها" },
|
|
],
|
|
},
|
|
{
|
|
id: "marketing",
|
|
label: "بازاریابی",
|
|
icon: Megaphone,
|
|
items: [
|
|
{ href: "/beauty/marketing/campaigns", label: "کمپینها" },
|
|
{ href: "/beauty/marketing/integrations", label: "یکپارچهسازیها" },
|
|
],
|
|
},
|
|
];
|
|
|
|
export const BEAUTY_QUICK_BAR: BeautyNavItem[] = [
|
|
{ href: "/beauty/organizations", label: "سازمان" },
|
|
{ href: "/beauty/appointments", label: "نوبت" },
|
|
{ href: "/beauty/catalog/services", label: "خدمت" },
|
|
{ href: "/beauty/customers", label: "مشتری" },
|
|
{ href: "/beauty/staff", label: "پرسنل" },
|
|
{ href: "/beauty", label: "داشبورد" },
|
|
];
|
|
|
|
export { Package, Settings };
|