223 lines
6.3 KiB
TypeScript
223 lines
6.3 KiB
TypeScript
// Path: Frontend/src/components/app-shell/data/shell.scaffold.ts
|
|
|
|
import {
|
|
Bell,
|
|
CircleHelp,
|
|
FileText,
|
|
Folder,
|
|
Home,
|
|
Keyboard,
|
|
LayoutGrid,
|
|
ListCollapse,
|
|
LogOut,
|
|
Repeat,
|
|
Search,
|
|
Settings,
|
|
Shield,
|
|
User,
|
|
} from "../../../lib/icons";
|
|
import type {
|
|
ActiveDepartment,
|
|
ActiveProject,
|
|
ActiveServer,
|
|
ActiveUserProfile,
|
|
DepartmentItem,
|
|
MobileBottomNavItem,
|
|
NotificationItem,
|
|
ProfileMenuSection,
|
|
ProjectItem,
|
|
RailItem,
|
|
ServerDockAction,
|
|
SidebarHeaderAction,
|
|
TopBarAction,
|
|
WorkspaceStaticItem,
|
|
WorkspaceTreeNode,
|
|
} from "./shell.types";
|
|
|
|
export const personalDockActions: readonly ServerDockAction[] = [
|
|
{ id: "account", label: "Account", icon: User },
|
|
{ id: "settings", label: "Settings", icon: Settings },
|
|
] as const;
|
|
|
|
export const organizationAdminDockActions: readonly ServerDockAction[] = [
|
|
{ id: "members", label: "Members", icon: User },
|
|
{ id: "server", label: "Server", icon: Settings },
|
|
] as const;
|
|
|
|
export const railItems: readonly RailItem[] = [
|
|
{ id: "personal-server", label: "Personal Server Name", abbreviation: "P", kind: "personal" },
|
|
{ id: "organization-server", label: "Organization Name", abbreviation: "O", kind: "organization", active: true },
|
|
{ id: "design-review", label: "Design Review", abbreviation: "D", kind: "organization" },
|
|
] as const;
|
|
|
|
export const activeServer: ActiveServer = {
|
|
id: "organization-server",
|
|
name: "Organization Name",
|
|
abbreviation: "O",
|
|
kind: "organization",
|
|
connectedLabel: "12 connected",
|
|
dockActions: organizationAdminDockActions,
|
|
};
|
|
|
|
export const activeProject: ActiveProject = {
|
|
id: "general",
|
|
name: "General",
|
|
};
|
|
|
|
export const activeDepartment: ActiveDepartment = {
|
|
id: "product",
|
|
name: "Product",
|
|
teamName: "Design Systems",
|
|
};
|
|
|
|
export const projectItems: readonly ProjectItem[] = [
|
|
{
|
|
id: "general",
|
|
name: "General",
|
|
description: "Default shared project",
|
|
groupLabel: "Shared space",
|
|
parentLabel: "Workspace home",
|
|
meta: "1 workspace",
|
|
active: true,
|
|
},
|
|
{
|
|
id: "operations",
|
|
name: "Operations",
|
|
description: "Cross-team planning and delivery",
|
|
groupLabel: "Team folders",
|
|
parentLabel: "Shared Services",
|
|
meta: "2 workspaces",
|
|
},
|
|
{
|
|
id: "hiring",
|
|
name: "Hiring",
|
|
description: "Candidate pipeline and interview loops",
|
|
groupLabel: "Team folders",
|
|
parentLabel: "People Ops",
|
|
meta: "1 workspace",
|
|
},
|
|
] as const;
|
|
|
|
export const departmentItems: readonly DepartmentItem[] = [
|
|
{ id: "product", name: "Product", teams: ["Design Systems", "Research Ops"], active: true },
|
|
{ id: "engineering", name: "Engineering", teams: ["Platform", "Realtime Collaboration"] },
|
|
{ id: "operations", name: "Operations", teams: ["Shared Services", "People Ops"] },
|
|
] as const;
|
|
|
|
export const workspaceStaticItems: readonly WorkspaceStaticItem[] = [
|
|
{ id: "home", label: "Home", icon: Home, active: true, contextKind: "home" },
|
|
{ id: "workspace-settings", label: "Settings", icon: Settings, contextKind: "settings" },
|
|
] as const;
|
|
|
|
export const workspaceTree: readonly WorkspaceTreeNode[] = [
|
|
{
|
|
id: "product-workspace",
|
|
label: "Product",
|
|
kind: "folder",
|
|
icon: Folder,
|
|
children: [
|
|
{ id: "roadmap-board", label: "Roadmap", kind: "item", itemType: "core.board.kanban", active: true },
|
|
{ id: "launch-brief", label: "Launch Brief", kind: "item", itemType: "core.doc" },
|
|
{
|
|
id: "research-folder",
|
|
label: "Research",
|
|
kind: "folder",
|
|
icon: Folder,
|
|
children: [
|
|
{ id: "interviews-doc", label: "Interviews", kind: "item", itemType: "core.doc" },
|
|
{ id: "signals-board", label: "Signals", kind: "item", itemType: "core.board.kanban", meta: "2" },
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: "design-folder",
|
|
label: "Design",
|
|
kind: "folder",
|
|
icon: Folder,
|
|
children: [
|
|
{ id: "system-doc", label: "Design System", kind: "item", itemType: "core.doc" },
|
|
{ id: "review-board", label: "Review Queue", kind: "item", itemType: "core.board.kanban" },
|
|
],
|
|
},
|
|
{ id: "general-notes", label: "General Notes", kind: "item", itemType: "core.doc" },
|
|
] as const;
|
|
|
|
export const workspaceSidebarHeaderActions: readonly SidebarHeaderAction[] = [
|
|
{ id: "search-workspace", label: "Search workspace", icon: Search },
|
|
{ id: "toggle-workspace-folders", label: "Collapse all folders", icon: ListCollapse },
|
|
] as const;
|
|
|
|
export const mobileBottomNavItems: readonly MobileBottomNavItem[] = [
|
|
{ id: "home", label: "Home", icon: Home, active: true },
|
|
{ id: "search", label: "Search", icon: Search },
|
|
{ id: "browse", label: "Browse", icon: Folder },
|
|
] as const;
|
|
|
|
export const topBarActions: readonly TopBarAction[] = [{ id: "search", label: "Search", icon: Search }] as const;
|
|
|
|
export const notificationItems: readonly NotificationItem[] = [
|
|
{
|
|
id: "comment-design-systems",
|
|
title: "New comment on Design Systems",
|
|
contextLabel: "Product • Review thread updated",
|
|
timeLabel: "2m ago",
|
|
unread: true,
|
|
},
|
|
{
|
|
id: "sprint-platform",
|
|
title: "Sprint updated in Platform",
|
|
contextLabel: "Engineering • Scope changed",
|
|
timeLabel: "15m ago",
|
|
unread: true,
|
|
},
|
|
{
|
|
id: "member-joined",
|
|
title: "New member joined Operations",
|
|
contextLabel: "Organization Name • Access granted",
|
|
timeLabel: "1h ago",
|
|
},
|
|
{
|
|
id: "daily-summary",
|
|
title: "Daily summary is ready",
|
|
contextLabel: "General • 8 updates across boards",
|
|
timeLabel: "Today, 8:00 AM",
|
|
},
|
|
] as const;
|
|
|
|
export const unreadNotificationCount = notificationItems.filter((item) => item.unread).length;
|
|
|
|
export const activeUserProfile: ActiveUserProfile = {
|
|
name: "Demo Account",
|
|
email: "demo@moku.work",
|
|
roleLabel: "Founder · Product",
|
|
contextLabel: "Organization Name • Design Systems",
|
|
};
|
|
|
|
export const profileMenuSections: readonly ProfileMenuSection[] = [
|
|
{
|
|
id: "account",
|
|
items: [
|
|
{ id: "profile", label: "Profile", icon: User },
|
|
{ id: "account-settings", label: "Account Settings", icon: Settings },
|
|
{ id: "notifications", label: "Notifications", icon: Bell },
|
|
{ id: "security", label: "Security", icon: Shield },
|
|
],
|
|
},
|
|
{
|
|
id: "preferences",
|
|
items: [
|
|
{ id: "keyboard-shortcuts", label: "Keyboard Shortcuts", icon: Keyboard },
|
|
{ id: "theme-preferences", label: "Theme Preferences", icon: Settings },
|
|
{ id: "help-support", label: "Help & Support", icon: CircleHelp },
|
|
],
|
|
},
|
|
{
|
|
id: "session",
|
|
items: [
|
|
{ id: "switch-account", label: "Switch Account", icon: Repeat },
|
|
{ id: "sign-out", label: "Sign Out", icon: LogOut, tone: "danger" },
|
|
],
|
|
},
|
|
] as const;
|