feat(workspaces): expand detail page member list
This commit is contained in:
@@ -151,30 +151,31 @@ export const en = {
|
||||
emptyState: "You are not a member of any workspace.",
|
||||
createTitle: "Create Workspace",
|
||||
editTitle: "Edit Workspace",
|
||||
detailTitle: "Workspace Details",
|
||||
save: "Save",
|
||||
create: "Create",
|
||||
noWorkspaceTitle: "Welcome!",
|
||||
noWorkspaceDesc: "Please create your first workspace.",
|
||||
back: "Back to Workspaces",
|
||||
roleLabel: "Your Role",
|
||||
openReports: "Open reports",
|
||||
statsMembers: "Members",
|
||||
statsRates: "Rates set",
|
||||
statsOwnersAdmins: "Owners & admins",
|
||||
statsGuests: "Guests",
|
||||
membersSectionTitle: "Members",
|
||||
detailTitle: "Workspace Details",
|
||||
save: "Save",
|
||||
create: "Create",
|
||||
noWorkspaceTitle: "Welcome!",
|
||||
noWorkspaceDesc: "Please create your first workspace.",
|
||||
back: "Back to Workspaces",
|
||||
roleLabel: "Your Role",
|
||||
openReports: "Open reports",
|
||||
statsMembers: "Members",
|
||||
statsRates: "Rates set",
|
||||
statsOwnersAdmins: "Owners & admins",
|
||||
statsGuests: "Guests",
|
||||
membersSectionTitle: "Members",
|
||||
membersSectionSubtitle: "People in this workspace and their current roles.",
|
||||
membersLocked: "Only owners and admins can view the full member list.",
|
||||
manageMembers: "Manage members",
|
||||
joinedLabel: "Joined",
|
||||
mobileNumber: "Mobile Number",
|
||||
youLabel: "You",
|
||||
resourcesTitle: "Resources",
|
||||
resourceOpen: "Open",
|
||||
roleDistributionTitle: "Role distribution",
|
||||
unknownMember: "Unknown member",
|
||||
roles: {
|
||||
owner: "Owner",
|
||||
admin: "Admin",
|
||||
resourceOpen: "Open",
|
||||
roleDistributionTitle: "Role distribution",
|
||||
unknownMember: "Unknown member",
|
||||
roles: {
|
||||
owner: "Owner",
|
||||
admin: "Admin",
|
||||
member: "Member",
|
||||
guest: "Guest",
|
||||
},
|
||||
@@ -258,16 +259,16 @@ export const en = {
|
||||
next: "Next",
|
||||
},
|
||||
|
||||
sidebar: {
|
||||
timesheet: "Timesheet",
|
||||
reports: "Reports",
|
||||
workspaces: 'Workspaces',
|
||||
clients: 'Clients',
|
||||
projects: "Projects",
|
||||
tags: "Tags",
|
||||
expand: 'Expand',
|
||||
collapse: 'Collapse',
|
||||
},
|
||||
sidebar: {
|
||||
timesheet: "Timesheet",
|
||||
reports: "Reports",
|
||||
workspaces: 'Workspaces',
|
||||
clients: 'Clients',
|
||||
projects: "Projects",
|
||||
tags: "Tags",
|
||||
expand: 'Expand',
|
||||
collapse: 'Collapse',
|
||||
},
|
||||
|
||||
ordering: {
|
||||
createdAtDesc: "Newest First",
|
||||
@@ -277,7 +278,7 @@ export const en = {
|
||||
nameDesc: "Name (Z-A)",
|
||||
},
|
||||
|
||||
projects: {
|
||||
projects: {
|
||||
title: "Projects",
|
||||
description: (workspaceName: string) => `Manage projects for ${workspaceName}`,
|
||||
active: "Active Projects",
|
||||
@@ -314,12 +315,12 @@ export const en = {
|
||||
addAllWorkspaceMembers: "Add all workspace members",
|
||||
confirmDeleteTitle: "Remove Member",
|
||||
confirmDeleteDesc: "Are you sure you want to remove this member from the project?",
|
||||
createSuccess: "Project created successfully.",
|
||||
createError: "Failed to create project.",
|
||||
updateSuccess: "Project updated successfully.",
|
||||
updateError: "Failed to update project.",
|
||||
edit: "Edit Project",
|
||||
memberAlreadyAdded: "This user is already on the project team.",
|
||||
createSuccess: "Project created successfully.",
|
||||
createError: "Failed to create project.",
|
||||
updateSuccess: "Project updated successfully.",
|
||||
updateError: "Failed to update project.",
|
||||
edit: "Edit Project",
|
||||
memberAlreadyAdded: "This user is already on the project team.",
|
||||
roles: {
|
||||
member: "Member",
|
||||
manager: "Manager"
|
||||
@@ -330,173 +331,173 @@ export const en = {
|
||||
userNotFound: "No user found with this mobile number.",
|
||||
alreadyInProject: "Already Added",
|
||||
addToProject: "Add to Project",
|
||||
noWorkspaceMembers: "No members found.",
|
||||
},
|
||||
|
||||
tags: {
|
||||
title: "Tags",
|
||||
description: (workspaceName: string) => `Manage tags for ${workspaceName}`,
|
||||
create: "Create Tag",
|
||||
createTitle: "Create Tag",
|
||||
editTitle: "Edit Tag",
|
||||
deleteTitle: "Delete Tag",
|
||||
deleteConfirmMessage: (name: string) => `Are you sure you want to delete ${name}?`,
|
||||
searchPlaceholder: "Search tags...",
|
||||
nameLabel: "Tag Name",
|
||||
namePlaceholder: "e.g. Design",
|
||||
colorLabel: "Color",
|
||||
emptyState: "No tags found",
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
fetchError: "Failed to load tags",
|
||||
createSuccess: "Tag created successfully.",
|
||||
updateSuccess: "Tag updated successfully.",
|
||||
saveError: "Failed to save tag.",
|
||||
deleteSuccess: "Tag deleted successfully.",
|
||||
deleteError: "Failed to delete tag.",
|
||||
},
|
||||
|
||||
rates: {
|
||||
workspaceSectionTitle: "Workspace User Rates",
|
||||
projectSectionTitle: "Project User Rates",
|
||||
workspaceRate: "Workspace rate",
|
||||
projectOverride: "Project override",
|
||||
inheritsWorkspaceRate: "Inherits workspace rate",
|
||||
noRate: "No rate",
|
||||
hourlyRatePlaceholder: "0.00",
|
||||
currencyPlaceholder: "USD",
|
||||
searchUnitPlaceholder: "Search unit...",
|
||||
removeRate: "Remove rate",
|
||||
workspaceSaveSuccess: "Workspace user rate saved.",
|
||||
workspaceSaveError: "Failed to save workspace user rate.",
|
||||
workspaceRemoveSuccess: "Workspace user rate removed.",
|
||||
workspaceRemoveError: "Failed to remove workspace user rate.",
|
||||
projectSaveSuccess: "Project user rate saved.",
|
||||
projectSaveError: "Failed to save project user rate.",
|
||||
projectRemoveSuccess: "Project user rate removed.",
|
||||
projectRemoveError: "Failed to remove project user rate.",
|
||||
},
|
||||
|
||||
timesheet: {
|
||||
title: "Timesheet",
|
||||
description: (workspaceName: string) => `Track time inside ${workspaceName}`,
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
addEntry: "Add Entry",
|
||||
startTimer: "Start Timer",
|
||||
stopTimer: "Stop Timer",
|
||||
timerRunning: "Timer Running",
|
||||
runningLabel: "Current timer",
|
||||
runningBadge: "Running",
|
||||
noRunningEntry: "No running entry",
|
||||
searchPlaceholder: "Search time entries...",
|
||||
orderingNewest: "Newest first",
|
||||
orderingOldest: "Oldest first",
|
||||
emptyState: "No time entries found",
|
||||
emptyDescription: "No description",
|
||||
createTitle: "Add Time Entry",
|
||||
startTitle: "Start Timer",
|
||||
editTitle: "Edit Time Entry",
|
||||
createSuccess: "Time entry created successfully.",
|
||||
startSuccess: "Timer started successfully.",
|
||||
updateSuccess: "Time entry updated successfully.",
|
||||
saveError: "Failed to save time entry.",
|
||||
stopSuccess: "Timer stopped successfully.",
|
||||
stopError: "Failed to stop timer.",
|
||||
deleteSuccess: "Time entry deleted successfully.",
|
||||
deleteError: "Failed to delete time entry.",
|
||||
fetchError: "Failed to load time entries.",
|
||||
optionsError: "Failed to load projects and tags.",
|
||||
descriptionLabel: "Description",
|
||||
descriptionPlaceholder: "What are you working on?",
|
||||
projectLabel: "Project",
|
||||
noProject: "No project",
|
||||
startLabel: "Start",
|
||||
endLabel: "End",
|
||||
billable: "Billable",
|
||||
noTagsHint: "Create tags first from the Tags page.",
|
||||
clearFilters: "Clear filters",
|
||||
customFromLabel: "From date",
|
||||
customToLabel: "To date",
|
||||
allClientsLabel: "All clients",
|
||||
allProjectsLabel: "All projects",
|
||||
allTagsLabel: "All tags",
|
||||
showFiltersLabel: "Show filters",
|
||||
hideFiltersLabel: "Hide filters",
|
||||
applyFiltersLabel: "Apply",
|
||||
clientFilterPrefix: "Client",
|
||||
projectFilterPrefix: "Project",
|
||||
tagFilterPrefix: "Tag",
|
||||
fromFilterPrefix: "From",
|
||||
toFilterPrefix: "To",
|
||||
deletedProjectLabel: "Deleted project",
|
||||
deletedTagLabel: "Deleted tag",
|
||||
},
|
||||
|
||||
reports: {
|
||||
title: "Reports",
|
||||
description: (workspaceName: string) => `Review activity reports for ${workspaceName}`,
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
chartTab: "Chart",
|
||||
tableTab: "Table",
|
||||
period: "Period",
|
||||
periodThisWeek: "This week",
|
||||
periodThisMonth: "This month",
|
||||
periodThisYear: "This year",
|
||||
periodFirstHalf: "First half of year",
|
||||
periodSecondHalf: "Second half of year",
|
||||
periodCustom: "Custom period",
|
||||
fromDate: "From date",
|
||||
toDate: "To date",
|
||||
user: "User",
|
||||
allUsers: "All users",
|
||||
searchUsers: "Search users...",
|
||||
client: "Client",
|
||||
allClients: "All clients",
|
||||
searchClients: "Search clients...",
|
||||
project: "Project",
|
||||
allProjects: "All projects",
|
||||
searchProjects: "Search projects...",
|
||||
tags: "Tags",
|
||||
allTags: "All tags",
|
||||
searchTags: "Search tags...",
|
||||
name: "Name",
|
||||
clear: "Clear",
|
||||
apply: "Apply",
|
||||
totalHours: "Total hours",
|
||||
billableHours: "Billable hours",
|
||||
nonBillableHours: "Non-billable hours",
|
||||
totalIncome: "Total income",
|
||||
chartTitle: "Activity chart",
|
||||
totalSeconds: "Total seconds",
|
||||
exportExcel: "Export Excel",
|
||||
exportPdf: "Export PDF",
|
||||
date: "Date",
|
||||
details: "Details",
|
||||
total: "Total",
|
||||
clientsTable: "Clients",
|
||||
projectsTable: "Projects",
|
||||
tagsTable: "Tags",
|
||||
loadError: "Failed to load reports.",
|
||||
loadDayDetailsError: "Failed to load day details.",
|
||||
loadFiltersError: "Failed to load report filters.",
|
||||
exportQueued: "Export queued. You will receive a notification with the download link.",
|
||||
exportError: "Failed to queue report export.",
|
||||
},
|
||||
|
||||
notifications: {
|
||||
title: "Notifications",
|
||||
open: "Open notifications",
|
||||
empty: "No notifications yet.",
|
||||
loading: "Loading notifications...",
|
||||
loadingMore: "Loading more...",
|
||||
loadMore: "Load more",
|
||||
markAllRead: "Mark all as read",
|
||||
markSeenError: "Failed to update notification",
|
||||
markAllError: "Failed to update notifications",
|
||||
deleteError: "Failed to delete notification",
|
||||
loadError: "Failed to load notifications",
|
||||
openError: "Failed to open notification",
|
||||
newTitle: "New notification",
|
||||
openAction: "Open",
|
||||
summary: (total: number, unread: number) => `${total} total, ${unread} unread`,
|
||||
},
|
||||
}
|
||||
noWorkspaceMembers: "No members found.",
|
||||
},
|
||||
|
||||
tags: {
|
||||
title: "Tags",
|
||||
description: (workspaceName: string) => `Manage tags for ${workspaceName}`,
|
||||
create: "Create Tag",
|
||||
createTitle: "Create Tag",
|
||||
editTitle: "Edit Tag",
|
||||
deleteTitle: "Delete Tag",
|
||||
deleteConfirmMessage: (name: string) => `Are you sure you want to delete ${name}?`,
|
||||
searchPlaceholder: "Search tags...",
|
||||
nameLabel: "Tag Name",
|
||||
namePlaceholder: "e.g. Design",
|
||||
colorLabel: "Color",
|
||||
emptyState: "No tags found",
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
fetchError: "Failed to load tags",
|
||||
createSuccess: "Tag created successfully.",
|
||||
updateSuccess: "Tag updated successfully.",
|
||||
saveError: "Failed to save tag.",
|
||||
deleteSuccess: "Tag deleted successfully.",
|
||||
deleteError: "Failed to delete tag.",
|
||||
},
|
||||
|
||||
rates: {
|
||||
workspaceSectionTitle: "Workspace User Rates",
|
||||
projectSectionTitle: "Project User Rates",
|
||||
workspaceRate: "Workspace rate",
|
||||
projectOverride: "Project override",
|
||||
inheritsWorkspaceRate: "Inherits workspace rate",
|
||||
noRate: "No rate",
|
||||
hourlyRatePlaceholder: "0.00",
|
||||
currencyPlaceholder: "USD",
|
||||
searchUnitPlaceholder: "Search unit...",
|
||||
removeRate: "Remove rate",
|
||||
workspaceSaveSuccess: "Workspace user rate saved.",
|
||||
workspaceSaveError: "Failed to save workspace user rate.",
|
||||
workspaceRemoveSuccess: "Workspace user rate removed.",
|
||||
workspaceRemoveError: "Failed to remove workspace user rate.",
|
||||
projectSaveSuccess: "Project user rate saved.",
|
||||
projectSaveError: "Failed to save project user rate.",
|
||||
projectRemoveSuccess: "Project user rate removed.",
|
||||
projectRemoveError: "Failed to remove project user rate.",
|
||||
},
|
||||
|
||||
timesheet: {
|
||||
title: "Timesheet",
|
||||
description: (workspaceName: string) => `Track time inside ${workspaceName}`,
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
addEntry: "Add Entry",
|
||||
startTimer: "Start Timer",
|
||||
stopTimer: "Stop Timer",
|
||||
timerRunning: "Timer Running",
|
||||
runningLabel: "Current timer",
|
||||
runningBadge: "Running",
|
||||
noRunningEntry: "No running entry",
|
||||
searchPlaceholder: "Search time entries...",
|
||||
orderingNewest: "Newest first",
|
||||
orderingOldest: "Oldest first",
|
||||
emptyState: "No time entries found",
|
||||
emptyDescription: "No description",
|
||||
createTitle: "Add Time Entry",
|
||||
startTitle: "Start Timer",
|
||||
editTitle: "Edit Time Entry",
|
||||
createSuccess: "Time entry created successfully.",
|
||||
startSuccess: "Timer started successfully.",
|
||||
updateSuccess: "Time entry updated successfully.",
|
||||
saveError: "Failed to save time entry.",
|
||||
stopSuccess: "Timer stopped successfully.",
|
||||
stopError: "Failed to stop timer.",
|
||||
deleteSuccess: "Time entry deleted successfully.",
|
||||
deleteError: "Failed to delete time entry.",
|
||||
fetchError: "Failed to load time entries.",
|
||||
optionsError: "Failed to load projects and tags.",
|
||||
descriptionLabel: "Description",
|
||||
descriptionPlaceholder: "What are you working on?",
|
||||
projectLabel: "Project",
|
||||
noProject: "No project",
|
||||
startLabel: "Start",
|
||||
endLabel: "End",
|
||||
billable: "Billable",
|
||||
noTagsHint: "Create tags first from the Tags page.",
|
||||
clearFilters: "Clear filters",
|
||||
customFromLabel: "From date",
|
||||
customToLabel: "To date",
|
||||
allClientsLabel: "All clients",
|
||||
allProjectsLabel: "All projects",
|
||||
allTagsLabel: "All tags",
|
||||
showFiltersLabel: "Show filters",
|
||||
hideFiltersLabel: "Hide filters",
|
||||
applyFiltersLabel: "Apply",
|
||||
clientFilterPrefix: "Client",
|
||||
projectFilterPrefix: "Project",
|
||||
tagFilterPrefix: "Tag",
|
||||
fromFilterPrefix: "From",
|
||||
toFilterPrefix: "To",
|
||||
deletedProjectLabel: "Deleted project",
|
||||
deletedTagLabel: "Deleted tag",
|
||||
},
|
||||
|
||||
reports: {
|
||||
title: "Reports",
|
||||
description: (workspaceName: string) => `Review activity reports for ${workspaceName}`,
|
||||
selectWorkspace: "Please select a workspace first.",
|
||||
chartTab: "Chart",
|
||||
tableTab: "Table",
|
||||
period: "Period",
|
||||
periodThisWeek: "This week",
|
||||
periodThisMonth: "This month",
|
||||
periodThisYear: "This year",
|
||||
periodFirstHalf: "First half of year",
|
||||
periodSecondHalf: "Second half of year",
|
||||
periodCustom: "Custom period",
|
||||
fromDate: "From date",
|
||||
toDate: "To date",
|
||||
user: "User",
|
||||
allUsers: "All users",
|
||||
searchUsers: "Search users...",
|
||||
client: "Client",
|
||||
allClients: "All clients",
|
||||
searchClients: "Search clients...",
|
||||
project: "Project",
|
||||
allProjects: "All projects",
|
||||
searchProjects: "Search projects...",
|
||||
tags: "Tags",
|
||||
allTags: "All tags",
|
||||
searchTags: "Search tags...",
|
||||
name: "Name",
|
||||
clear: "Clear",
|
||||
apply: "Apply",
|
||||
totalHours: "Total hours",
|
||||
billableHours: "Billable hours",
|
||||
nonBillableHours: "Non-billable hours",
|
||||
totalIncome: "Total income",
|
||||
chartTitle: "Activity chart",
|
||||
totalSeconds: "Total seconds",
|
||||
exportExcel: "Export Excel",
|
||||
exportPdf: "Export PDF",
|
||||
date: "Date",
|
||||
details: "Details",
|
||||
total: "Total",
|
||||
clientsTable: "Clients",
|
||||
projectsTable: "Projects",
|
||||
tagsTable: "Tags",
|
||||
loadError: "Failed to load reports.",
|
||||
loadDayDetailsError: "Failed to load day details.",
|
||||
loadFiltersError: "Failed to load report filters.",
|
||||
exportQueued: "Export queued. You will receive a notification with the download link.",
|
||||
exportError: "Failed to queue report export.",
|
||||
},
|
||||
|
||||
notifications: {
|
||||
title: "Notifications",
|
||||
open: "Open notifications",
|
||||
empty: "No notifications yet.",
|
||||
loading: "Loading notifications...",
|
||||
loadingMore: "Loading more...",
|
||||
loadMore: "Load more",
|
||||
markAllRead: "Mark all as read",
|
||||
markSeenError: "Failed to update notification",
|
||||
markAllError: "Failed to update notifications",
|
||||
deleteError: "Failed to delete notification",
|
||||
loadError: "Failed to load notifications",
|
||||
openError: "Failed to open notification",
|
||||
newTitle: "New notification",
|
||||
openAction: "Open",
|
||||
summary: (total: number, unread: number) => `${total} total, ${unread} unread`,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user