export interface PagedResult { items: T[] totalCount: number page: number pageSize: number } export interface User { id: string username: string displayName: string roleId: string roleName: string } export interface UserListItem { id: string username: string displayName: string roleId: string roleName: string isActive: boolean createdAt: string } export interface LoginResponse { token: string user: User } export interface MenuItem { key: string label: string path: string canView: boolean canCreate: boolean canEdit: boolean canDelete: boolean } export interface PermissionEntry { screen: string canView: boolean canCreate: boolean canEdit: boolean canDelete: boolean } export interface Role { id: string name: string isSystem: boolean permissions: PermissionEntry[] } export interface SaveRoleRequest { name: string permissions: PermissionEntry[] } export interface MasterDataItem { id: string group: string label: string value: string sortOrder: number isActive: boolean } export interface SaveMasterDataRequest { group: string label: string value: string sortOrder: number isActive: boolean } export type ProjectStatus = 'Active' | 'Archived' export type MemberRole = 'Owner' | 'Member' export type DocumentType = 'Folder' | 'Document' export type TaskStatus = 'Todo' | 'InProgress' | 'Done' | 'Cancelled' export type TaskPriority = 'Low' | 'Medium' | 'High' export interface Project { id: string name: string description: string | null status: ProjectStatus createdBy: string createdByName: string createdAt: string updatedBy: string | null updatedByName: string | null updatedAt: string } export interface ProjectMember { userId: string username: string displayName: string role: MemberRole canViewDocuments: boolean canCreateDocuments: boolean canEditDocuments: boolean canDeleteDocuments: boolean } export interface DocumentNode { id: string parentId: string | null title: string type: DocumentType createdAt: string createdBy: string updatedAt: string updatedBy: string | null children: DocumentNode[] } export interface DocumentItem { id: string projectId: string parentId: string | null title: string content: string | null type: DocumentType createdBy: string createdAt: string updatedBy: string | null updatedAt: string } export interface Task { id: string projectId: string title: string description: string | null status: TaskStatus priority: TaskPriority assigneeId: string | null assigneeName: string | null dueDate: string | null createdAt: string updatedAt: string } export interface UserRoleDetail { userId: string username: string displayName: string assignedRoles: Role[] unassignedRoles: Role[] } export interface TaskCounts { [status: string]: number }