This commit is contained in:
phaichayon
2026-06-25 16:53:11 +07:00
parent 5a83040077
commit e72bdfd170
4 changed files with 4352 additions and 46 deletions

View File

@@ -0,0 +1,5 @@
ALTER TABLE "crm_opportunities" ADD COLUMN "outcome_status" text DEFAULT 'open' NOT NULL;--> statement-breakpoint
ALTER TABLE "crm_opportunities" ADD COLUMN "closed_at" timestamp with time zone;--> statement-breakpoint
ALTER TABLE "crm_opportunities" ADD COLUMN "lost_detail" text;--> statement-breakpoint
ALTER TABLE "crm_opportunities" ADD COLUMN "cancel_reason" text;--> statement-breakpoint
ALTER TABLE "crm_opportunities" ADD COLUMN "no_quotation_reason" text;

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,13 @@
"when": 1782359607850, "when": 1782359607850,
"tag": "0000_hard_butterfly", "tag": "0000_hard_butterfly",
"breakpoints": true "breakpoints": true
},
{
"idx": 1,
"version": "7",
"when": 1782381033930,
"tag": "0001_lazy_otto_octavius",
"breakpoints": true
} }
] ]
} }

View File

@@ -1,52 +1,52 @@
import { NavGroup } from "@/types"; 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[] = /** * 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", // label: "Overview",
items: [ // items: [
{ // {
title: "Dashboard Overview", // title: "Dashboard Overview",
url: "/dashboard", // url: "/dashboard",
icon: "dashboard", // icon: "dashboard",
isActive: false, // isActive: false,
shortcut: ["d", "d"], // shortcut: ["d", "d"],
items: [], // items: [],
}, // },
{ // {
title: "Workspaces", // title: "Workspaces",
url: "/dashboard/workspaces", // url: "/dashboard/workspaces",
icon: "workspace", // icon: "workspace",
isActive: false, // isActive: false,
items: [], // items: [],
access: { systemRole: "super_admin" }, // access: { systemRole: "super_admin" },
}, // },
{ // {
title: "Teams", // title: "Teams",
url: "/dashboard/workspaces/team", // url: "/dashboard/workspaces/team",
icon: "teams", // icon: "teams",
isActive: false, // isActive: false,
items: [], // items: [],
access: { requireOrg: true, permission: "crm.quotation.read" }, // access: { requireOrg: true, permission: "crm.quotation.read" },
}, // },
{ // {
title: "Users", // title: "Users",
url: "/dashboard/users", // url: "/dashboard/users",
icon: "teams", // icon: "teams",
shortcut: ["u", "u"], // shortcut: ["u", "u"],
isActive: false, // isActive: false,
items: [], // items: [],
access: { requireOrg: true, permission: "users:manage" }, // access: { requireOrg: true, permission: "users:manage" },
}, // },
{ // {
title: "Kanban", // title: "Kanban",
url: "/dashboard/kanban", // url: "/dashboard/kanban",
icon: "kanban", // icon: "kanban",
shortcut: ["k", "k"], // shortcut: ["k", "k"],
isActive: false, // isActive: false,
items: [], // items: [],
}, // },
], // ],
}, // },
{ {
label: "CRM", label: "CRM",
items: [ items: [