This commit is contained in:
phaichayon
2026-06-26 11:03:25 +07:00
parent 42c8c59947
commit 052677fa2c
16 changed files with 1604 additions and 68 deletions

View File

@@ -1,52 +1,6 @@
import { NavGroup } from "@/types";
/** * Navigation configuration with RBAC support * * This configuration is used for both the sidebar navigation and Cmd+K bar. * Items are organized into groups, each rendered with a SidebarGroupLabel. * * RBAC Access Control: * Each navigation item can have an `access` property that controls visibility * based on permissions, plans, features, roles, and organization context. * * Examples: * * 1. Require organization: * access: { requireOrg: true } * * 2. Require specific permission: * access: { requireOrg: true, permission: 'org:teams:manage' } * * 3. Require specific plan: * access: { plan: 'pro' } * * 4. Require specific feature: * access: { feature: 'premium_access' } * * 5. Require specific role: * access: { role: 'admin' } * * 6. Multiple conditions (all must be true): * access: { requireOrg: true, permission: 'org:teams:manage', plan: 'pro' } * * Note: The `visible` function is deprecated but still supported for backward compatibility. * Use the `access` property for new items. */ export const navGroups: NavGroup[] =
[
// {
// label: "Overview",
// items: [
// {
// title: "Dashboard Overview",
// url: "/dashboard",
// icon: "dashboard",
// isActive: false,
// shortcut: ["d", "d"],
// items: [],
// },
// {
// title: "Workspaces",
// url: "/dashboard/workspaces",
// icon: "workspace",
// isActive: false,
// items: [],
// access: { systemRole: "super_admin" },
// },
// {
// title: "Teams",
// url: "/dashboard/workspaces/team",
// icon: "teams",
// isActive: false,
// items: [],
// access: { requireOrg: true, permission: "crm.quotation.read" },
// },
// {
// title: "Users",
// url: "/dashboard/users",
// icon: "teams",
// shortcut: ["u", "u"],
// isActive: false,
// items: [],
// access: { requireOrg: true, permission: "users:manage" },
// },
// {
// title: "Kanban",
// url: "/dashboard/kanban",
// icon: "kanban",
// shortcut: ["k", "k"],
// isActive: false,
// items: [],
// },
// ],
// },
{
label: "CRM",
items: [
@@ -181,4 +135,50 @@ import { NavGroup } from "@/types";
},
],
},
{
label: "Admin",
items: [
// {
// title: "Dashboard Overview",
// url: "/dashboard",
// icon: "dashboard",
// isActive: false,
// shortcut: ["d", "d"],
// items: [],
// },
{
title: "Workspaces",
url: "/dashboard/workspaces",
icon: "workspace",
isActive: false,
items: [],
access: { systemRole: "super_admin" },
},
{
title: "Teams",
url: "/dashboard/workspaces/team",
icon: "teams",
isActive: false,
items: [],
access: { requireOrg: true, permission: "crm.quotation.read" },
},
{
title: "Users",
url: "/dashboard/users",
icon: "teams",
shortcut: ["u", "u"],
isActive: false,
items: [],
access: { requireOrg: true, permission: "users:manage" },
},
// {
// title: "Kanban",
// url: "/dashboard/kanban",
// icon: "kanban",
// shortcut: ["k", "k"],
// isActive: false,
// items: [],
// },
],
},
];