{localize('com_auth_email_verification_resend_prompt')}
-
diff --git a/client/src/components/Chat/Messages/HoverButtons.tsx b/client/src/components/Chat/Messages/HoverButtons.tsx
index 13672dbb47..119156049e 100644
--- a/client/src/components/Chat/Messages/HoverButtons.tsx
+++ b/client/src/components/Chat/Messages/HoverButtons.tsx
@@ -1,6 +1,14 @@
import React, { useState, useMemo, memo } from 'react';
import { useRecoilState } from 'recoil';
-import { EditIcon, Clipboard, CheckMark, ContinueIcon, RegenerateIcon } from '@librechat/client';
+import {
+ Button,
+ EditIcon,
+ CheckMark,
+ Clipboard,
+ ContinueIcon,
+ TooltipAnchor,
+ RegenerateIcon,
+} from '@librechat/client';
import type { TConversation, TMessage, TFeedback } from 'librechat-data-provider';
import { useGenerationsByLatest, useLocalize } from '~/hooks';
import { Fork } from '~/components/Conversations';
@@ -84,7 +92,7 @@ const HoverButton = memo(
dataTestId,
}: HoverButtonProps) => {
const buttonStyle = cn(
- 'hover-button rounded-lg p-1.5 text-text-secondary-alt',
+ 'hover-button size-auto rounded-lg p-1.5 text-text-secondary-alt',
'hover:text-text-primary hover:bg-surface-hover',
'group-hover:visible group-focus-within:visible group-[.final-completion]:visible',
!isLast &&
@@ -96,17 +104,23 @@ const HoverButton = memo(
);
return (
-
- {icon}
-
+
+ {icon}
+
+ }
+ />
);
},
);
diff --git a/client/src/components/Chat/Messages/MinimalHoverButtons.tsx b/client/src/components/Chat/Messages/MinimalHoverButtons.tsx
index b3cd461f17..5c45919842 100644
--- a/client/src/components/Chat/Messages/MinimalHoverButtons.tsx
+++ b/client/src/components/Chat/Messages/MinimalHoverButtons.tsx
@@ -1,5 +1,5 @@
import { useState } from 'react';
-import { Clipboard, CheckMark } from '@librechat/client';
+import { Button, Clipboard, CheckMark, TooltipAnchor } from '@librechat/client';
import type { TMessage, SearchResultData } from 'librechat-data-provider';
import { useLocalize, useCopyToClipboard } from '~/hooks';
@@ -19,20 +19,30 @@ export default function MinimalHoverButtons({ message, searchResults }: THoverBu
return (
- copyToClipboard(setIsCopied)}
- type="button"
- title={
+
- {isCopied ? (
-
- ) : (
-
- )}
-
+ render={
+ copyToClipboard(setIsCopied)}
+ >
+ {isCopied ? (
+
+ ) : (
+
+ )}
+
+ }
+ />
);
}
diff --git a/client/src/components/Chat/Messages/SiblingSwitch.tsx b/client/src/components/Chat/Messages/SiblingSwitch.tsx
index 239fcedddc..bdc9a6489c 100644
--- a/client/src/components/Chat/Messages/SiblingSwitch.tsx
+++ b/client/src/components/Chat/Messages/SiblingSwitch.tsx
@@ -1,5 +1,7 @@
+import { Button } from '@librechat/client';
import { ChevronLeft, ChevronRight } from 'lucide-react';
import type { TMessageProps } from '~/common';
+import { useLocalize } from '~/hooks';
import { cn } from '~/utils';
type TSiblingSwitchProps = Pick;
@@ -9,6 +11,8 @@ export default function SiblingSwitch({
siblingCount,
setSiblingIdx,
}: TSiblingSwitchProps) {
+ const localize = useLocalize();
+
if (siblingIdx === undefined) {
return null;
} else if (siblingCount === undefined) {
@@ -24,7 +28,7 @@ export default function SiblingSwitch({
};
const buttonStyle = cn(
- 'hover-button rounded-lg p-1.5 text-text-secondary-alt',
+ 'hover-button h-auto rounded-lg p-1.5 text-text-secondary-alt',
'hover:text-text-primary hover:bg-surface-hover',
'group-hover:visible group-focus-within:visible group-[.final-completion]:visible',
'focus-visible:ring-2 focus-visible:ring-text-primary focus-visible:outline-none',
@@ -33,18 +37,18 @@ export default function SiblingSwitch({
return siblingCount > 1 ? (
) : null;
}
diff --git a/client/src/components/Conversations/Convo.tsx b/client/src/components/Conversations/Convo.tsx
index 0df84696e9..94105647ed 100644
--- a/client/src/components/Conversations/Convo.tsx
+++ b/client/src/components/Conversations/Convo.tsx
@@ -3,7 +3,7 @@ import { Pin } from 'lucide-react';
import { useRecoilValue } from 'recoil';
import { useParams } from 'react-router-dom';
import { Constants } from 'librechat-data-provider';
-import { useToastContext, useMediaQuery } from '@librechat/client';
+import { Spinner, useToastContext, useMediaQuery } from '@librechat/client';
import type { TConversation } from 'librechat-data-provider';
import { useNavigateToConvo, useLocalize, useShiftKey } from '~/hooks';
import ConversationEndpointIcon from './ConversationEndpointIcon';
@@ -179,19 +179,9 @@ function Conversation({
};
const generatingSpinner = (
-
+
+
+
);
let actionVisibilityClassName =
diff --git a/client/src/components/Conversations/Pages.tsx b/client/src/components/Conversations/Pages.tsx
index 463f381bad..329f16e9f3 100644
--- a/client/src/components/Conversations/Pages.tsx
+++ b/client/src/components/Conversations/Pages.tsx
@@ -1,4 +1,6 @@
import React from 'react';
+import { Button } from '@librechat/client';
+import { useLocalize } from '~/hooks';
type TPagesProps = {
pages: number;
@@ -15,6 +17,7 @@ export default function Pages({
previousPage,
setPageNumber,
}: TPagesProps) {
+ const localize = useLocalize();
const clickHandler =
(func: () => Promise) => async (e: React.MouseEvent) => {
e.preventDefault();
@@ -27,29 +30,35 @@ export default function Pages({
return pageNumber == 1 && pages == 1 ? null : (
-
<
-
+
{pageNumber} / {pages}
- = pages ? ' hidden-visibility' : '')
}
disabled={pageNumber >= pages}
>
>
-
+
);
}
diff --git a/client/src/components/Conversations/ProjectsSection.tsx b/client/src/components/Conversations/ProjectsSection.tsx
index 36aa6d64ea..c44df0a509 100644
--- a/client/src/components/Conversations/ProjectsSection.tsx
+++ b/client/src/components/Conversations/ProjectsSection.tsx
@@ -247,13 +247,15 @@ const ProjectChatsInline = memo(function ProjectChatsInline({
/>
))}
{hasMore && (
-
{localize('com_ui_show_all')}
-
+
)}
{error.message}
{showCode && (
diff --git a/client/src/components/Nav/Settings/Dialog.tsx b/client/src/components/Nav/Settings/Dialog.tsx
index cccf355847..358314f3e9 100644
--- a/client/src/components/Nav/Settings/Dialog.tsx
+++ b/client/src/components/Nav/Settings/Dialog.tsx
@@ -1,7 +1,7 @@
import { useState } from 'react';
import * as Tabs from '@radix-ui/react-tabs';
import { X, ChevronLeft } from 'lucide-react';
-import { useMediaQuery } from '@librechat/client';
+import { Button, useMediaQuery } from '@librechat/client';
import { SettingsTabValues } from 'librechat-data-provider';
import { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from '@headlessui/react';
import type { TDialogProps } from '~/common';
@@ -88,14 +88,15 @@ export default function SettingsDialog({ open, onOpenChange }: TDialogProps) {
{localize('com_nav_settings')}
)}
- {getErrorMessage(error)}
-