91 lines
3.2 KiB
TypeScript
91 lines
3.2 KiB
TypeScript
import type { SectionId } from "@shared/types";
|
|
import {
|
|
BookOpen,
|
|
Briefcase,
|
|
CalendarBlank,
|
|
ChartLine,
|
|
ChatCircle,
|
|
ClockCounterClockwise,
|
|
CurrencyCircleDollar,
|
|
FileText,
|
|
FolderOpen,
|
|
Gear,
|
|
Kanban,
|
|
ListChecks,
|
|
Megaphone,
|
|
MonitorPlay,
|
|
Plugs,
|
|
PuzzlePiece,
|
|
ShieldCheck,
|
|
SquaresFour,
|
|
Target,
|
|
Timer,
|
|
Tray,
|
|
UserPlus,
|
|
UsersThree,
|
|
} from "./components/ui/icons";
|
|
|
|
export type NavItemDef = { id: SectionId; labelKey: string; icon: typeof SquaresFour };
|
|
export type NavGroupDef = { id: string; items: NavItemDef[] };
|
|
type SectionNavItemMap = { [K in SectionId]: NavItemDef & { id: K } };
|
|
|
|
export const SECTION_NAV_ITEM_DEFS = {
|
|
overview: { id: "overview", labelKey: "nav.overview", icon: SquaresFour },
|
|
inbox: { id: "inbox", labelKey: "nav.inbox", icon: Tray },
|
|
standup: { id: "standup", labelKey: "nav.standup", icon: Timer },
|
|
performance: { id: "performance", labelKey: "nav.performance", icon: ChartLine },
|
|
runs: { id: "runs", labelKey: "nav.runs", icon: MonitorPlay },
|
|
connectors: { id: "connectors", labelKey: "nav.connectors", icon: Plugs },
|
|
agents: { id: "agents", labelKey: "nav.agents", icon: UsersThree },
|
|
hiring: { id: "hiring", labelKey: "nav.hiring", icon: UserPlus },
|
|
goals: { id: "goals", labelKey: "nav.goals", icon: Target },
|
|
projects: { id: "projects", labelKey: "nav.projects", icon: Kanban },
|
|
tasks: { id: "tasks", labelKey: "nav.work", icon: ListChecks },
|
|
approvals: { id: "approvals", labelKey: "nav.approvals", icon: ShieldCheck },
|
|
costs: { id: "costs", labelKey: "nav.costs", icon: CurrencyCircleDollar },
|
|
activity: { id: "activity", labelKey: "nav.activity", icon: ClockCounterClockwise },
|
|
workspaces: { id: "workspaces", labelKey: "nav.workspaces", icon: FolderOpen },
|
|
social: { id: "social", labelKey: "nav.social", icon: Megaphone },
|
|
skills: { id: "skills", labelKey: "nav.skills", icon: PuzzlePiece },
|
|
automation: { id: "automation", labelKey: "nav.automation", icon: Briefcase },
|
|
communication: { id: "communication", labelKey: "nav.communication", icon: ChatCircle },
|
|
documents: { id: "documents", labelKey: "nav.documents", icon: FileText },
|
|
knowledge: { id: "knowledge", labelKey: "nav.knowledge", icon: BookOpen },
|
|
meetings: { id: "meetings", labelKey: "nav.meetings", icon: CalendarBlank },
|
|
sprints: { id: "sprints", labelKey: "nav.sprints", icon: Kanban },
|
|
settings: { id: "settings", labelKey: "nav.settings", icon: Gear },
|
|
} as const satisfies SectionNavItemMap;
|
|
|
|
export const SECTION_NAV_IDS = Object.keys(SECTION_NAV_ITEM_DEFS) as SectionId[];
|
|
|
|
export const SIDEBAR_NAV_GROUP_DEFS = [
|
|
{
|
|
id: "primary",
|
|
items: [
|
|
SECTION_NAV_ITEM_DEFS.overview,
|
|
SECTION_NAV_ITEM_DEFS.inbox,
|
|
SECTION_NAV_ITEM_DEFS.tasks,
|
|
SECTION_NAV_ITEM_DEFS.approvals,
|
|
],
|
|
},
|
|
{
|
|
id: "company",
|
|
items: [
|
|
SECTION_NAV_ITEM_DEFS.agents,
|
|
SECTION_NAV_ITEM_DEFS.communication,
|
|
SECTION_NAV_ITEM_DEFS.documents,
|
|
],
|
|
},
|
|
] as const satisfies readonly NavGroupDef[];
|
|
|
|
export const COMMAND_PALETTE_NAV_ITEM_DEFS = SECTION_NAV_IDS.map((id) => SECTION_NAV_ITEM_DEFS[id]);
|
|
|
|
export const SETTINGS_NAV_ITEM_DEF = SECTION_NAV_ITEM_DEFS.settings;
|
|
|
|
export const DASHBOARD_NAV_TARGETS = [
|
|
"approvals",
|
|
"runs",
|
|
"communication",
|
|
"costs",
|
|
] as const satisfies readonly SectionId[];
|