LibreChat/client/src/utils/resources.ts
Marco Beretta d6b6f191f7
style(MCP): Enhance dialog accessibility and styling consistency (#11585)
* style: update input IDs in BasicInfoSection for consistency and improve accessibility

* style: add border-destructive variable for improved design consistency

* style: update error border color for title input in BasicInfoSection

* style: update delete confirmation dialog title and description for MCP Server

* style: add text-destructive variable for improved design consistency

* style: update error message and border color for URL and trust fields for consistency

* style: reorder imports and update error message styling for consistency across sections

* style: enhance MCPServerDialog with copy link functionality and UI improvements

* style: enhance MCPServerDialog with improved accessibility and loading indicators

* style: bump @librechat/client to 0.4.51 and enhance OGDialogTemplate for improved selection handling

* a11y: enhance accessibility and error handling in MCPServerDialog sections

* style: enhance MCPServerDialog accessibility and improve resource name handling

* style: improve accessibility in MCPServerDialog and AuthSection, update translation for delete confirmation

* style: update aria-invalid attributes to use string values for improved accessibility in form sections

* style: enhance accessibility in AuthSection by updating aria attributes and adding error messages

* style: remove unnecessary aria-hidden attributes from Spinner components in MCPServerDialog

* style: simplify legacy selection check in OGDialogTemplate
2026-02-11 22:08:40 -05:00

67 lines
3.2 KiB
TypeScript

import { AccessRoleIds, ResourceType } from 'librechat-data-provider';
export interface ResourceConfig {
resourceType: ResourceType;
defaultViewerRoleId: AccessRoleIds;
defaultEditorRoleId: AccessRoleIds;
defaultOwnerRoleId: AccessRoleIds;
getResourceUrl?: (resourceId: string) => string;
getResourceName: (resourceName?: string) => string;
getShareMessage: (resourceName?: string) => string;
getManageMessage: (resourceName?: string) => string;
getCopyUrlMessage: () => string;
}
export const RESOURCE_CONFIGS: Record<ResourceType, ResourceConfig> = {
[ResourceType.AGENT]: {
resourceType: ResourceType.AGENT,
defaultViewerRoleId: AccessRoleIds.AGENT_VIEWER,
defaultEditorRoleId: AccessRoleIds.AGENT_EDITOR,
defaultOwnerRoleId: AccessRoleIds.AGENT_OWNER,
getResourceUrl: (agentId: string) => `${window.location.origin}/c/new?agent_id=${agentId}`,
getResourceName: (name?: string) => (name && name !== '' ? name : 'agent'),
getShareMessage: (name?: string) => (name && name !== '' ? name : 'agent'),
getManageMessage: (name?: string) =>
`Manage permissions for ${name && name !== '' ? name : 'agent'}`,
getCopyUrlMessage: () => 'Agent URL copied',
},
[ResourceType.PROMPTGROUP]: {
resourceType: ResourceType.PROMPTGROUP,
defaultViewerRoleId: AccessRoleIds.PROMPTGROUP_VIEWER,
defaultEditorRoleId: AccessRoleIds.PROMPTGROUP_EDITOR,
defaultOwnerRoleId: AccessRoleIds.PROMPTGROUP_OWNER,
getResourceName: (name?: string) => (name && name !== '' ? name : 'prompt'),
getShareMessage: (name?: string) => (name && name !== '' ? name : 'prompt'),
getManageMessage: (name?: string) =>
`Manage permissions for ${name && name !== '' ? name : 'prompt'}`,
getCopyUrlMessage: () => 'Prompt URL copied',
},
[ResourceType.MCPSERVER]: {
resourceType: ResourceType.MCPSERVER,
defaultViewerRoleId: AccessRoleIds.MCPSERVER_VIEWER,
defaultEditorRoleId: AccessRoleIds.MCPSERVER_EDITOR,
defaultOwnerRoleId: AccessRoleIds.MCPSERVER_OWNER,
getResourceName: (name?: string) => (name && name !== '' ? name : 'MCP server'),
getShareMessage: (name?: string) => (name && name !== '' ? name : 'MCP server'),
getManageMessage: (name?: string) =>
`Manage permissions for ${name && name !== '' ? name : 'MCP server'}`,
getCopyUrlMessage: () => 'MCP Server URL copied',
},
[ResourceType.REMOTE_AGENT]: {
resourceType: ResourceType.REMOTE_AGENT,
defaultViewerRoleId: AccessRoleIds.REMOTE_AGENT_VIEWER,
defaultEditorRoleId: AccessRoleIds.REMOTE_AGENT_EDITOR,
defaultOwnerRoleId: AccessRoleIds.REMOTE_AGENT_OWNER,
getResourceUrl: () => `${window.location.origin}/api/v1/responses`,
getResourceName: (name?: string) => (name && name !== '' ? `"${name}"` : 'remote agent'),
getShareMessage: (name?: string) =>
name && name !== '' ? `"${name}" (API Access)` : 'remote agent access',
getManageMessage: (name?: string) =>
`Manage API access for ${name && name !== '' ? `"${name}"` : 'agent'}`,
getCopyUrlMessage: () => 'API endpoint copied',
},
};
export const getResourceConfig = (resourceType: ResourceType): ResourceConfig | undefined => {
return RESOURCE_CONFIGS[resourceType];
};