diff --git a/client/src/components/Input/SetKeyDialog/SetKeyDialog.tsx b/client/src/components/Input/SetKeyDialog/SetKeyDialog.tsx index 7fec25e4a5..9a5a10ecc4 100644 --- a/client/src/components/Input/SetKeyDialog/SetKeyDialog.tsx +++ b/client/src/components/Input/SetKeyDialog/SetKeyDialog.tsx @@ -11,6 +11,7 @@ import { Spinner, OGDialog, Dropdown, + OGDialogClose, OGDialogTitle, OGDialogHeader, OGDialogFooter, @@ -104,43 +105,41 @@ const RevokeKeysButton = ({ const isLoading = revokeKeyMutation.isLoading || revokeKeysMutation.isLoading; return ( -
- - + + + + + + + {localize('com_ui_revoke_key_endpoint', { 0: endpoint })} + +
+ +
+ + -
- - - {localize('com_ui_revoke_key_endpoint', { 0: endpoint })} - -
- -
- - - - -
-
-
+ + + ); }; @@ -276,7 +275,7 @@ const SetKeyDialog = ({ return ( - + {`${localize('com_endpoint_config_key_for')} ${alternateName[endpoint] ?? endpoint}`} @@ -310,11 +309,16 @@ const SetKeyDialog = ({ - + + + + {expiryTime && ( + + )} diff --git a/client/src/components/MCP/ServerInitializationSection.tsx b/client/src/components/MCP/ServerInitializationSection.tsx index b5f71335d7..08dd2cbc57 100644 --- a/client/src/components/MCP/ServerInitializationSection.tsx +++ b/client/src/components/MCP/ServerInitializationSection.tsx @@ -4,7 +4,6 @@ import { Button, Spinner } from '@librechat/client'; import { useLocalize, useMCPServerManager, useMCPConnectionStatus } from '~/hooks'; interface ServerInitializationSectionProps { - sidePanel?: boolean; serverName: string; requiresOAuth: boolean; hasCustomUserVars?: boolean; @@ -15,7 +14,6 @@ export default function ServerInitializationSection({ serverName, requiresOAuth, conversationId, - sidePanel = false, hasCustomUserVars = false, }: ServerInitializationSectionProps) { const localize = useLocalize(); @@ -106,10 +104,10 @@ export default function ServerInitializationSection({ )} - )} - -
- - - - + + {resourceId && resourceUrl && ( -
- + )} + + +
diff --git a/client/src/components/Sharing/PeoplePicker/SearchPicker.tsx b/client/src/components/Sharing/PeoplePicker/SearchPicker.tsx index 9c5f08b433..5eea967fb4 100644 --- a/client/src/components/Sharing/PeoplePicker/SearchPicker.tsx +++ b/client/src/components/Sharing/PeoplePicker/SearchPicker.tsx @@ -180,9 +180,11 @@ export function SearchPicker({ )} >
- -
{localize('com_ui_no_results_found')}
-
+ +
+ {localize('com_ui_no_results_found')} +
+
{localize('com_ui_try_adjusting_search')}
diff --git a/client/src/components/SidePanel/Agents/MCPIcon.tsx b/client/src/components/SidePanel/Agents/MCPIcon.tsx index c6ca84f806..19fb2944c4 100644 --- a/client/src/components/SidePanel/Agents/MCPIcon.tsx +++ b/client/src/components/SidePanel/Agents/MCPIcon.tsx @@ -42,12 +42,12 @@ export default function MCPIcon({ icon, onIconChange }: MCPIconProps) { onClick={handleClick} onKeyDown={handleKeyDown} aria-label={localize('com_ui_upload_icon')} - className="bg-token-surface-secondary dark:bg-token-surface-tertiary border-token-border-medium flex h-16 w-16 shrink-0 cursor-pointer items-center justify-center rounded-xl border-2 border-dashed focus:outline-none focus-visible:ring-2 focus-visible:ring-border-heavy" + className="flex h-16 w-16 shrink-0 cursor-pointer items-center justify-center rounded-full border-2 border-dashed border-border-heavy focus:outline-none focus-visible:ring-2 focus-visible:ring-border-heavy" > {previewUrl ? ( MCP Icon(null); @@ -99,6 +105,8 @@ export default function MCPServerDialog({ ? `${window.location.origin}/api/mcp/${createdServerId}/oauth/callback` : ''; + const copyLink = useCopyToClipboard({ text: redirectUri }); + return ( <> {/* Delete confirmation dialog */} @@ -127,48 +135,50 @@ export default function MCPServerDialog({ } }} > - - + + {localize('com_ui_mcp_server_created')} -
-

- {localize('com_ui_redirect_uri_instructions')} -

-
- +
+ + +
+
-
-
+ -
+
@@ -187,6 +197,7 @@ export default function MCPServerDialog({ }) : undefined } + showCloseButton={false} className="w-11/12 md:max-w-3xl" main={} footerClassName="sm:justify-between" @@ -218,10 +229,9 @@ export default function MCPServerDialog({ buttons={
- {/* Description - always visible, full width */} + {/* Description */}
-
diff --git a/client/src/locales/en/translation.json b/client/src/locales/en/translation.json index cd3f3151c7..ccfbb232a7 100644 --- a/client/src/locales/en/translation.json +++ b/client/src/locales/en/translation.json @@ -918,7 +918,7 @@ "com_ui_edit": "Edit", "com_ui_edit_editing_image": "Editing image", "com_ui_edit_mcp_server": "Edit MCP Server", - "com_ui_edit_mcp_server_dialog_description": "Unique Server Identifier: {{serverName}}", + "com_ui_edit_mcp_server_dialog_description": "Server ID: {{serverName}}", "com_ui_edit_memory": "Edit Memory", "com_ui_edit_preset_title": "Edit Preset - {{title}}", "com_ui_edit_prompt_page": "Edit Prompt Page", diff --git a/client/src/style.css b/client/src/style.css index c41d3679f7..fa28b19f1b 100644 --- a/client/src/style.css +++ b/client/src/style.css @@ -70,6 +70,7 @@ html { --text-secondary-alt: var(--gray-500); --text-tertiary: var(--gray-500); --text-warning: var(--amber-500); + --text-destructive: var(--red-600); --ring-primary: var(--gray-500); --header-primary: var(--white); --header-hover: var(--gray-50); @@ -131,6 +132,7 @@ html { --text-secondary-alt: var(--gray-400); --text-tertiary: var(--gray-500); --text-warning: var(--amber-500); + --text-destructive: var(--red-600); --header-primary: var(--gray-700); --header-hover: var(--gray-600); --header-button-hover: var(--gray-700); diff --git a/client/tailwind.config.cjs b/client/tailwind.config.cjs index c30d2ca703..1d3f962521 100644 --- a/client/tailwind.config.cjs +++ b/client/tailwind.config.cjs @@ -92,6 +92,7 @@ module.exports = { 'text-secondary-alt': 'var(--text-secondary-alt)', 'text-tertiary': 'var(--text-tertiary)', 'text-warning': 'var(--text-warning)', + 'text-destructive': 'var(--text-destructive)', 'ring-primary': 'var(--ring-primary)', 'header-primary': 'var(--header-primary)', 'header-hover': 'var(--header-hover)', diff --git a/packages/client/src/components/Label.tsx b/packages/client/src/components/Label.tsx index d250e47e3f..b29236c12f 100644 --- a/packages/client/src/components/Label.tsx +++ b/packages/client/src/components/Label.tsx @@ -13,7 +13,7 @@ const Label = React.forwardRef< {...props} {...{ className: cn( - 'block w-full break-all text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-200', + 'block w-full text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-text-primary', className, ), }} diff --git a/packages/client/src/components/OGDialogTemplate.tsx b/packages/client/src/components/OGDialogTemplate.tsx index 8bf2cea090..b2f12a31ad 100644 --- a/packages/client/src/components/OGDialogTemplate.tsx +++ b/packages/client/src/components/OGDialogTemplate.tsx @@ -75,38 +75,32 @@ const OGDialogTemplate = forwardRef((props: DialogTemplateProps, ref: Ref
{main != null ? main : null}
-
- {leftButtons != null ? ( -
- {leftButtons} -
- ) : null} -
-
- {showCancelButton && ( - - - - )} - {buttons != null ? buttons : null} - {selection ? ( - - {isLoading === true ? ( - - ) : ( - (selectText as React.JSX.Element) - )} - - ) : null} -
+ {leftButtons != null ? ( +
{leftButtons}
+ ) : null} + {showCancelButton && ( + + + + )} + {buttons != null ? buttons : null} + {selection ? ( + + {isLoading === true ? ( + + ) : ( + (selectText as React.JSX.Element) + )} + + ) : null}
); diff --git a/packages/client/src/components/OriginalDialog.tsx b/packages/client/src/components/OriginalDialog.tsx index 5d5fe8397b..356baf571d 100644 --- a/packages/client/src/components/OriginalDialog.tsx +++ b/packages/client/src/components/OriginalDialog.tsx @@ -168,7 +168,7 @@ DialogHeader.displayName = 'DialogHeader'; const DialogFooter = ({ className, ...props }: React.HTMLAttributes) => (
); diff --git a/packages/client/src/components/Textarea.tsx b/packages/client/src/components/Textarea.tsx index f9167e91c1..68dcb84c0e 100644 --- a/packages/client/src/components/Textarea.tsx +++ b/packages/client/src/components/Textarea.tsx @@ -10,7 +10,7 @@ const Textarea = React.forwardRef( return (